diff --git a/assets/AboutDialog-BtWvWEUL.js b/assets/AboutDialog-DOfNArp4.js similarity index 87% rename from assets/AboutDialog-BtWvWEUL.js rename to assets/AboutDialog-DOfNArp4.js index 3ff1af4d..96e7664c 100644 --- a/assets/AboutDialog-BtWvWEUL.js +++ b/assets/AboutDialog-DOfNArp4.js @@ -1,2 +1,2 @@ -import{R as e,u as o,D as n,a as l,L as t}from"./index-D3BxRj96.js";const i="3.1.3";function c({onClose:r}){return e.createElement(o.Dialog,{onClose:()=>r(),open:!0,title:"About this plugin"},e.createElement(n,null,e.createElement(l,null,"MSAView ",i," (",e.createElement(t,{href:"https://github.com/gmod/jbrowse-plugin-msaview"},"Github"),")"),e.createElement("ul",null,e.createElement("li",null,e.createElement(l,null,"We use some color schemes from the"," ",e.createElement(t,{href:"https://github.com/biotite-dev/biotite"},"biotite")," ","project, and their license is reproduced"," ",e.createElement(t,{href:"https://github.com/biotite-dev/biotite/blob/master/LICENSE.rst"},"here"))),e.createElement("li",null,e.createElement(l,null,"See this page for some information on jalview colorings"," ",e.createElement(t,{href:"https://www.jalview.org/help/html/colourSchemes/"},"here"))),e.createElement("li",null,e.createElement(l,null,"See this page for some info on the clustal, cinema, maeditor, and lesk color schemes"," ",e.createElement(t,{href:"http://www.bioinformatics.nl/~berndb/aacolour.html"},"here"))),e.createElement("li",null,e.createElement(l,null,"See this paper about the flower color scheme"," ",e.createElement(t,{href:"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7245768/"},"here"))))))}export{c as default}; -//# sourceMappingURL=AboutDialog-BtWvWEUL.js.map +import{R as e,k as o,D as n,f as l,L as t}from"./index-yx-9MxwX.js";const i="3.1.7";function c({onClose:r}){return e.createElement(o.Dialog,{onClose:()=>r(),open:!0,title:"About this plugin"},e.createElement(n,null,e.createElement(l,null,"MSAView ",i," (",e.createElement(t,{href:"https://github.com/gmod/jbrowse-plugin-msaview"},"Github"),")"),e.createElement("ul",null,e.createElement("li",null,e.createElement(l,null,"We use some color schemes from the"," ",e.createElement(t,{href:"https://github.com/biotite-dev/biotite"},"biotite")," ","project, and their license is reproduced"," ",e.createElement(t,{href:"https://github.com/biotite-dev/biotite/blob/master/LICENSE.rst"},"here"))),e.createElement("li",null,e.createElement(l,null,"See this page for some information on jalview colorings"," ",e.createElement(t,{href:"https://www.jalview.org/help/html/colourSchemes/"},"here"))),e.createElement("li",null,e.createElement(l,null,"See this page for some info on the clustal, cinema, maeditor, and lesk color schemes"," ",e.createElement(t,{href:"http://www.bioinformatics.nl/~berndb/aacolour.html"},"here"))),e.createElement("li",null,e.createElement(l,null,"See this paper about the flower color scheme"," ",e.createElement(t,{href:"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7245768/"},"here"))))))}export{c as default}; +//# sourceMappingURL=AboutDialog-DOfNArp4.js.map diff --git a/assets/AboutDialog-BtWvWEUL.js.map b/assets/AboutDialog-DOfNArp4.js.map similarity index 96% rename from assets/AboutDialog-BtWvWEUL.js.map rename to assets/AboutDialog-DOfNArp4.js.map index c879b10d..fe92c826 100644 --- a/assets/AboutDialog-BtWvWEUL.js.map +++ b/assets/AboutDialog-DOfNArp4.js.map @@ -1 +1 @@ -{"version":3,"file":"AboutDialog-BtWvWEUL.js","sources":["../../../lib/dist/version.js","../../../lib/dist/components/dialogs/AboutDialog.js"],"sourcesContent":["export const version = '3.1.3';\n//# sourceMappingURL=version.js.map","import React from 'react';\nimport { Dialog } from '@jbrowse/core/ui';\nimport { DialogContent, Typography, Link } from '@mui/material';\nimport { version } from '../../version';\nexport default function AboutDialog({ onClose }) {\n return (React.createElement(Dialog, { onClose: () => onClose(), open: true, title: \"About this plugin\" },\n React.createElement(DialogContent, null,\n React.createElement(Typography, null,\n \"MSAView \",\n version,\n \" (\",\n React.createElement(Link, { href: \"https://github.com/gmod/jbrowse-plugin-msaview\" }, \"Github\"),\n \")\"),\n React.createElement(\"ul\", null,\n React.createElement(\"li\", null,\n React.createElement(Typography, null,\n \"We use some color schemes from the\",\n ' ',\n React.createElement(Link, { href: \"https://github.com/biotite-dev/biotite\" }, \"biotite\"),\n ' ',\n \"project, and their license is reproduced\",\n ' ',\n React.createElement(Link, { href: \"https://github.com/biotite-dev/biotite/blob/master/LICENSE.rst\" }, \"here\"))),\n React.createElement(\"li\", null,\n React.createElement(Typography, null,\n \"See this page for some information on jalview colorings\",\n ' ',\n React.createElement(Link, { href: \"https://www.jalview.org/help/html/colourSchemes/\" }, \"here\"))),\n React.createElement(\"li\", null,\n React.createElement(Typography, null,\n \"See this page for some info on the clustal, cinema, maeditor, and lesk color schemes\",\n ' ',\n React.createElement(Link, { href: \"http://www.bioinformatics.nl/~berndb/aacolour.html\" }, \"here\"))),\n React.createElement(\"li\", null,\n React.createElement(Typography, null,\n \"See this paper about the flower color scheme\",\n ' ',\n React.createElement(Link, { href: \"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7245768/\" }, \"here\")))))));\n}\n//# sourceMappingURL=AboutDialog.js.map"],"names":["version","AboutDialog","onClose","React","Dialog","DialogContent","Typography","Link"],"mappings":"oEAAO,MAAMA,EAAU,QCIR,SAASC,EAAY,CAAE,QAAAC,GAAW,CAC7C,OAAQC,EAAM,cAAcC,EAAM,OAAE,CAAE,QAAS,IAAMF,EAAO,EAAI,KAAM,GAAM,MAAO,mBAAqB,EACpGC,EAAM,cAAcE,EAAe,KAC/BF,EAAM,cAAcG,EAAY,KAC5B,WACAN,EACA,KACAG,EAAM,cAAcI,EAAM,CAAE,KAAM,gDAAkD,EAAE,QAAQ,EAC9F,GAAG,EACPJ,EAAM,cAAc,KAAM,KACtBA,EAAM,cAAc,KAAM,KACtBA,EAAM,cAAcG,EAAY,KAC5B,qCACA,IACAH,EAAM,cAAcI,EAAM,CAAE,KAAM,wCAA0C,EAAE,SAAS,EACvF,IACA,2CACA,IACAJ,EAAM,cAAcI,EAAM,CAAE,KAAM,gEAAkE,EAAE,MAAM,CAAC,CAAC,EACtHJ,EAAM,cAAc,KAAM,KACtBA,EAAM,cAAcG,EAAY,KAC5B,0DACA,IACAH,EAAM,cAAcI,EAAM,CAAE,KAAM,kDAAoD,EAAE,MAAM,CAAC,CAAC,EACxGJ,EAAM,cAAc,KAAM,KACtBA,EAAM,cAAcG,EAAY,KAC5B,uFACA,IACAH,EAAM,cAAcI,EAAM,CAAE,KAAM,oDAAsD,EAAE,MAAM,CAAC,CAAC,EAC1GJ,EAAM,cAAc,KAAM,KACtBA,EAAM,cAAcG,EAAY,KAC5B,+CACA,IACAH,EAAM,cAAcI,EAAM,CAAE,KAAM,uDAAyD,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAChI"} \ No newline at end of file +{"version":3,"file":"AboutDialog-DOfNArp4.js","sources":["../../../lib/dist/version.js","../../../lib/dist/components/dialogs/AboutDialog.js"],"sourcesContent":["export const version = '3.1.7';\n//# sourceMappingURL=version.js.map","import React from 'react';\nimport { Dialog } from '@jbrowse/core/ui';\nimport { DialogContent, Typography, Link } from '@mui/material';\nimport { version } from '../../version';\nexport default function AboutDialog({ onClose }) {\n return (React.createElement(Dialog, { onClose: () => onClose(), open: true, title: \"About this plugin\" },\n React.createElement(DialogContent, null,\n React.createElement(Typography, null,\n \"MSAView \",\n version,\n \" (\",\n React.createElement(Link, { href: \"https://github.com/gmod/jbrowse-plugin-msaview\" }, \"Github\"),\n \")\"),\n React.createElement(\"ul\", null,\n React.createElement(\"li\", null,\n React.createElement(Typography, null,\n \"We use some color schemes from the\",\n ' ',\n React.createElement(Link, { href: \"https://github.com/biotite-dev/biotite\" }, \"biotite\"),\n ' ',\n \"project, and their license is reproduced\",\n ' ',\n React.createElement(Link, { href: \"https://github.com/biotite-dev/biotite/blob/master/LICENSE.rst\" }, \"here\"))),\n React.createElement(\"li\", null,\n React.createElement(Typography, null,\n \"See this page for some information on jalview colorings\",\n ' ',\n React.createElement(Link, { href: \"https://www.jalview.org/help/html/colourSchemes/\" }, \"here\"))),\n React.createElement(\"li\", null,\n React.createElement(Typography, null,\n \"See this page for some info on the clustal, cinema, maeditor, and lesk color schemes\",\n ' ',\n React.createElement(Link, { href: \"http://www.bioinformatics.nl/~berndb/aacolour.html\" }, \"here\"))),\n React.createElement(\"li\", null,\n React.createElement(Typography, null,\n \"See this paper about the flower color scheme\",\n ' ',\n React.createElement(Link, { href: \"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7245768/\" }, \"here\")))))));\n}\n//# sourceMappingURL=AboutDialog.js.map"],"names":["version","AboutDialog","onClose","React","Dialog","DialogContent","Typography","Link"],"mappings":"oEAAO,MAAMA,EAAU,QCIR,SAASC,EAAY,CAAE,QAAAC,GAAW,CAC7C,OAAQC,EAAM,cAAcC,EAAM,OAAE,CAAE,QAAS,IAAMF,EAAO,EAAI,KAAM,GAAM,MAAO,mBAAqB,EACpGC,EAAM,cAAcE,EAAe,KAC/BF,EAAM,cAAcG,EAAY,KAC5B,WACAN,EACA,KACAG,EAAM,cAAcI,EAAM,CAAE,KAAM,gDAAkD,EAAE,QAAQ,EAC9F,GAAG,EACPJ,EAAM,cAAc,KAAM,KACtBA,EAAM,cAAc,KAAM,KACtBA,EAAM,cAAcG,EAAY,KAC5B,qCACA,IACAH,EAAM,cAAcI,EAAM,CAAE,KAAM,wCAA0C,EAAE,SAAS,EACvF,IACA,2CACA,IACAJ,EAAM,cAAcI,EAAM,CAAE,KAAM,gEAAkE,EAAE,MAAM,CAAC,CAAC,EACtHJ,EAAM,cAAc,KAAM,KACtBA,EAAM,cAAcG,EAAY,KAC5B,0DACA,IACAH,EAAM,cAAcI,EAAM,CAAE,KAAM,kDAAoD,EAAE,MAAM,CAAC,CAAC,EACxGJ,EAAM,cAAc,KAAM,KACtBA,EAAM,cAAcG,EAAY,KAC5B,uFACA,IACAH,EAAM,cAAcI,EAAM,CAAE,KAAM,oDAAsD,EAAE,MAAM,CAAC,CAAC,EAC1GJ,EAAM,cAAc,KAAM,KACtBA,EAAM,cAAcG,EAAY,KAC5B,+CACA,IACAH,EAAM,cAAcI,EAAM,CAAE,KAAM,uDAAyD,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAChI"} \ No newline at end of file diff --git a/assets/ExportSVGDialog-0D7ADSyd.js b/assets/ExportSVGDialog-0D7ADSyd.js deleted file mode 100644 index d06f3f2b..00000000 --- a/assets/ExportSVGDialog-0D7ADSyd.js +++ /dev/null @@ -1,2 +0,0 @@ -import{r as n,i as y,R as e,u as i,D as C,a as h,k as s,F as l,C as x,l as S,n as b,p as u,e as k,B as m}from"./index-D3BxRj96.js";function D({model:E,onClose:r}){const[o,p]=n.useState(!0),[a,d]=n.useState("viewport"),[c,g]=n.useState(),v=y();return e.createElement(i.Dialog,{onClose:()=>r(),open:!0,title:"Export SVG"},e.createElement(C,null,c?e.createElement(i.ErrorMessage,{error:c}):null,e.createElement(h,null,"Settings:"),e.createElement("div",null,e.createElement(s,null,e.createElement(l,{control:e.createElement(x,{checked:o,onChange:t=>p(t.target.checked)}),disabled:a==="entire",label:"Include minimap?"}))),e.createElement("div",null,e.createElement(s,null,e.createElement(S,null,"Export type"),e.createElement(b,{value:a,onChange:t=>d(t.target.value)},e.createElement(l,{value:"entire",control:e.createElement(u,null),label:"Entire MSA"}),e.createElement(l,{value:"viewport",control:e.createElement(u,null),label:"Current viewport only"}))))),e.createElement(k,null,e.createElement(m,{variant:"contained",color:"primary",onClick:async()=>{try{await E.exportSVG({theme:v,includeMinimap:a==="entire"?!1:o,exportType:a})}catch(t){console.error(t),g(t)}r()}},"Submit"),e.createElement(m,{variant:"contained",color:"secondary",onClick:()=>r()},"Cancel")))}export{D as default}; -//# sourceMappingURL=ExportSVGDialog-0D7ADSyd.js.map diff --git a/assets/ExportSVGDialog-Csuhzun8.js b/assets/ExportSVGDialog-Csuhzun8.js new file mode 100644 index 00000000..0d53b800 --- /dev/null +++ b/assets/ExportSVGDialog-Csuhzun8.js @@ -0,0 +1,2 @@ +import{r as l,s as y,R as e,k as i,D as x,f as C,t as s,F as n,C as h,v as S,x as b,y as m,l as k,B as u}from"./index-yx-9MxwX.js";function f({model:E,onClose:r}){const[o,p]=l.useState(!0),[a,d]=l.useState("viewport"),[c,v]=l.useState(),g=y();return e.createElement(i.Dialog,{onClose:()=>r(),open:!0,title:"Export SVG"},e.createElement(x,null,c?e.createElement(i.ErrorMessage,{error:c}):null,e.createElement(C,null,"Settings:"),e.createElement("div",null,e.createElement(s,null,e.createElement(n,{control:e.createElement(h,{checked:o,onChange:t=>p(t.target.checked)}),disabled:a==="entire",label:"Include minimap?"}))),e.createElement("div",null,e.createElement(s,null,e.createElement(S,null,"Export type"),e.createElement(b,{value:a,onChange:t=>d(t.target.value)},e.createElement(n,{value:"entire",control:e.createElement(m,null),label:"Entire MSA"}),e.createElement(n,{value:"viewport",control:e.createElement(m,null),label:"Current viewport only"}))))),e.createElement(k,null,e.createElement(u,{variant:"contained",color:"primary",onClick:async()=>{try{await E.exportSVG({theme:g,includeMinimap:a==="entire"?!1:o,exportType:a})}catch(t){console.error(t),v(t)}r()}},"Submit"),e.createElement(u,{variant:"contained",color:"secondary",onClick:()=>r()},"Cancel")))}export{f as default}; +//# sourceMappingURL=ExportSVGDialog-Csuhzun8.js.map diff --git a/assets/ExportSVGDialog-0D7ADSyd.js.map b/assets/ExportSVGDialog-Csuhzun8.js.map similarity index 98% rename from assets/ExportSVGDialog-0D7ADSyd.js.map rename to assets/ExportSVGDialog-Csuhzun8.js.map index f665b577..ea269b01 100644 --- a/assets/ExportSVGDialog-0D7ADSyd.js.map +++ b/assets/ExportSVGDialog-Csuhzun8.js.map @@ -1 +1 @@ -{"version":3,"file":"ExportSVGDialog-0D7ADSyd.js","sources":["../../../lib/dist/components/ExportSVGDialog.js"],"sourcesContent":["import React, { useState } from 'react';\nimport { Dialog, ErrorMessage } from '@jbrowse/core/ui';\nimport { Button, Checkbox, DialogContent, DialogActions, FormControlLabel, FormControl, FormLabel, RadioGroup, Radio, Typography, useTheme, } from '@mui/material';\nexport default function ExportSVGDialog({ model, onClose, }) {\n const [includeMinimap, setIncludeMinimap] = useState(true);\n const [exportType, setExportType] = useState('viewport');\n const [error, setError] = useState();\n const theme = useTheme();\n return (React.createElement(Dialog, { onClose: () => onClose(), open: true, title: \"Export SVG\" },\n React.createElement(DialogContent, null,\n error ? React.createElement(ErrorMessage, { error: error }) : null,\n React.createElement(Typography, null, \"Settings:\"),\n React.createElement(\"div\", null,\n React.createElement(FormControl, null,\n React.createElement(FormControlLabel, { control: React.createElement(Checkbox, { checked: includeMinimap, onChange: event => setIncludeMinimap(event.target.checked) }), disabled: exportType === 'entire', label: \"Include minimap?\" }))),\n React.createElement(\"div\", null,\n React.createElement(FormControl, null,\n React.createElement(FormLabel, null, \"Export type\"),\n React.createElement(RadioGroup, { value: exportType, onChange: event => setExportType(event.target.value) },\n React.createElement(FormControlLabel, { value: \"entire\", control: React.createElement(Radio, null), label: \"Entire MSA\" }),\n React.createElement(FormControlLabel, { value: \"viewport\", control: React.createElement(Radio, null), label: \"Current viewport only\" }))))),\n React.createElement(DialogActions, null,\n React.createElement(Button, { variant: \"contained\", color: \"primary\", onClick: async () => {\n try {\n await model.exportSVG({\n theme,\n includeMinimap: exportType === 'entire' ? false : includeMinimap,\n exportType,\n });\n }\n catch (e) {\n console.error(e);\n setError(e);\n }\n onClose();\n } }, \"Submit\"),\n React.createElement(Button, { variant: \"contained\", color: \"secondary\", onClick: () => onClose() }, \"Cancel\"))));\n}\n//# sourceMappingURL=ExportSVGDialog.js.map"],"names":["ExportSVGDialog","model","onClose","includeMinimap","setIncludeMinimap","useState","exportType","setExportType","error","setError","theme","useTheme","React","Dialog","DialogContent","ErrorMessage","Typography","FormControl","FormControlLabel","Checkbox","event","FormLabel","RadioGroup","Radio","DialogActions","Button","e"],"mappings":"mIAGe,SAASA,EAAgB,CAAE,MAAAC,EAAO,QAAAC,GAAY,CACzD,KAAM,CAACC,EAAgBC,CAAiB,EAAIC,EAAQ,SAAC,EAAI,EACnD,CAACC,EAAYC,CAAa,EAAIF,EAAQ,SAAC,UAAU,EACjD,CAACG,EAAOC,CAAQ,EAAIJ,EAAQ,SAAA,EAC5BK,EAAQC,IACd,OAAQC,EAAM,cAAcC,EAAM,OAAE,CAAE,QAAS,IAAMX,EAAO,EAAI,KAAM,GAAM,MAAO,YAAc,EAC7FU,EAAM,cAAcE,EAAe,KAC/BN,EAAQI,EAAM,cAAcG,EAAAA,aAAc,CAAE,MAAOP,CAAO,CAAA,EAAI,KAC9DI,EAAM,cAAcI,EAAY,KAAM,WAAW,EACjDJ,EAAM,cAAc,MAAO,KACvBA,EAAM,cAAcK,EAAa,KAC7BL,EAAM,cAAcM,EAAkB,CAAE,QAASN,EAAM,cAAcO,EAAU,CAAE,QAAShB,EAAgB,SAAUiB,GAAShB,EAAkBgB,EAAM,OAAO,OAAO,CAAG,CAAA,EAAG,SAAUd,IAAe,SAAU,MAAO,kBAAkB,CAAE,CAAC,CAAC,EACjPM,EAAM,cAAc,MAAO,KACvBA,EAAM,cAAcK,EAAa,KAC7BL,EAAM,cAAcS,EAAW,KAAM,aAAa,EAClDT,EAAM,cAAcU,EAAY,CAAE,MAAOhB,EAAY,SAAUc,GAASb,EAAca,EAAM,OAAO,KAAK,CAAG,EACvGR,EAAM,cAAcM,EAAkB,CAAE,MAAO,SAAU,QAASN,EAAM,cAAcW,EAAO,IAAI,EAAG,MAAO,YAAY,CAAE,EACzHX,EAAM,cAAcM,EAAkB,CAAE,MAAO,WAAY,QAASN,EAAM,cAAcW,EAAO,IAAI,EAAG,MAAO,uBAAyB,CAAA,CAAC,CAAC,CAAC,CAAC,EAC1JX,EAAM,cAAcY,EAAe,KAC/BZ,EAAM,cAAca,EAAQ,CAAE,QAAS,YAAa,MAAO,UAAW,QAAS,SAAY,CACnF,GAAI,CACA,MAAMxB,EAAM,UAAU,CAClB,MAAAS,EACA,eAAgBJ,IAAe,SAAW,GAAQH,EAClD,WAAAG,CAC5B,CAAyB,CACJ,OACMoB,EAAG,CACN,QAAQ,MAAMA,CAAC,EACfjB,EAASiB,CAAC,CACb,CACDxB,GACH,CAAA,EAAI,QAAQ,EACjBU,EAAM,cAAca,EAAQ,CAAE,QAAS,YAAa,MAAO,YAAa,QAAS,IAAMvB,EAAO,CAAI,EAAE,QAAQ,CAAC,CAAC,CAC1H"} \ No newline at end of file +{"version":3,"file":"ExportSVGDialog-Csuhzun8.js","sources":["../../../lib/dist/components/ExportSVGDialog.js"],"sourcesContent":["import React, { useState } from 'react';\nimport { Dialog, ErrorMessage } from '@jbrowse/core/ui';\nimport { Button, Checkbox, DialogContent, DialogActions, FormControlLabel, FormControl, FormLabel, RadioGroup, Radio, Typography, useTheme, } from '@mui/material';\nexport default function ExportSVGDialog({ model, onClose, }) {\n const [includeMinimap, setIncludeMinimap] = useState(true);\n const [exportType, setExportType] = useState('viewport');\n const [error, setError] = useState();\n const theme = useTheme();\n return (React.createElement(Dialog, { onClose: () => onClose(), open: true, title: \"Export SVG\" },\n React.createElement(DialogContent, null,\n error ? React.createElement(ErrorMessage, { error: error }) : null,\n React.createElement(Typography, null, \"Settings:\"),\n React.createElement(\"div\", null,\n React.createElement(FormControl, null,\n React.createElement(FormControlLabel, { control: React.createElement(Checkbox, { checked: includeMinimap, onChange: event => setIncludeMinimap(event.target.checked) }), disabled: exportType === 'entire', label: \"Include minimap?\" }))),\n React.createElement(\"div\", null,\n React.createElement(FormControl, null,\n React.createElement(FormLabel, null, \"Export type\"),\n React.createElement(RadioGroup, { value: exportType, onChange: event => setExportType(event.target.value) },\n React.createElement(FormControlLabel, { value: \"entire\", control: React.createElement(Radio, null), label: \"Entire MSA\" }),\n React.createElement(FormControlLabel, { value: \"viewport\", control: React.createElement(Radio, null), label: \"Current viewport only\" }))))),\n React.createElement(DialogActions, null,\n React.createElement(Button, { variant: \"contained\", color: \"primary\", onClick: async () => {\n try {\n await model.exportSVG({\n theme,\n includeMinimap: exportType === 'entire' ? false : includeMinimap,\n exportType,\n });\n }\n catch (e) {\n console.error(e);\n setError(e);\n }\n onClose();\n } }, \"Submit\"),\n React.createElement(Button, { variant: \"contained\", color: \"secondary\", onClick: () => onClose() }, \"Cancel\"))));\n}\n//# sourceMappingURL=ExportSVGDialog.js.map"],"names":["ExportSVGDialog","model","onClose","includeMinimap","setIncludeMinimap","useState","exportType","setExportType","error","setError","theme","useTheme","React","Dialog","DialogContent","ErrorMessage","Typography","FormControl","FormControlLabel","Checkbox","event","FormLabel","RadioGroup","Radio","DialogActions","Button","e"],"mappings":"mIAGe,SAASA,EAAgB,CAAE,MAAAC,EAAO,QAAAC,GAAY,CACzD,KAAM,CAACC,EAAgBC,CAAiB,EAAIC,EAAQ,SAAC,EAAI,EACnD,CAACC,EAAYC,CAAa,EAAIF,EAAQ,SAAC,UAAU,EACjD,CAACG,EAAOC,CAAQ,EAAIJ,EAAQ,SAAA,EAC5BK,EAAQC,IACd,OAAQC,EAAM,cAAcC,EAAM,OAAE,CAAE,QAAS,IAAMX,EAAO,EAAI,KAAM,GAAM,MAAO,YAAc,EAC7FU,EAAM,cAAcE,EAAe,KAC/BN,EAAQI,EAAM,cAAcG,EAAAA,aAAc,CAAE,MAAOP,CAAO,CAAA,EAAI,KAC9DI,EAAM,cAAcI,EAAY,KAAM,WAAW,EACjDJ,EAAM,cAAc,MAAO,KACvBA,EAAM,cAAcK,EAAa,KAC7BL,EAAM,cAAcM,EAAkB,CAAE,QAASN,EAAM,cAAcO,EAAU,CAAE,QAAShB,EAAgB,SAAUiB,GAAShB,EAAkBgB,EAAM,OAAO,OAAO,CAAG,CAAA,EAAG,SAAUd,IAAe,SAAU,MAAO,kBAAkB,CAAE,CAAC,CAAC,EACjPM,EAAM,cAAc,MAAO,KACvBA,EAAM,cAAcK,EAAa,KAC7BL,EAAM,cAAcS,EAAW,KAAM,aAAa,EAClDT,EAAM,cAAcU,EAAY,CAAE,MAAOhB,EAAY,SAAUc,GAASb,EAAca,EAAM,OAAO,KAAK,CAAG,EACvGR,EAAM,cAAcM,EAAkB,CAAE,MAAO,SAAU,QAASN,EAAM,cAAcW,EAAO,IAAI,EAAG,MAAO,YAAY,CAAE,EACzHX,EAAM,cAAcM,EAAkB,CAAE,MAAO,WAAY,QAASN,EAAM,cAAcW,EAAO,IAAI,EAAG,MAAO,uBAAyB,CAAA,CAAC,CAAC,CAAC,CAAC,EAC1JX,EAAM,cAAcY,EAAe,KAC/BZ,EAAM,cAAca,EAAQ,CAAE,QAAS,YAAa,MAAO,UAAW,QAAS,SAAY,CACnF,GAAI,CACA,MAAMxB,EAAM,UAAU,CAClB,MAAAS,EACA,eAAgBJ,IAAe,SAAW,GAAQH,EAClD,WAAAG,CAC5B,CAAyB,CACJ,OACMoB,EAAG,CACN,QAAQ,MAAMA,CAAC,EACfjB,EAASiB,CAAC,CACb,CACDxB,GACH,CAAA,EAAI,QAAQ,EACjBU,EAAM,cAAca,EAAQ,CAAE,QAAS,YAAa,MAAO,YAAa,QAAS,IAAMvB,EAAO,CAAI,EAAE,QAAQ,CAAC,CAAC,CAC1H"} \ No newline at end of file diff --git a/assets/MetadataDialog-t8S_uks3.js b/assets/MetadataDialog-CG0IU1O_.js similarity index 52% rename from assets/MetadataDialog-t8S_uks3.js rename to assets/MetadataDialog-CG0IU1O_.js index b3d36be9..c8149535 100644 --- a/assets/MetadataDialog-t8S_uks3.js +++ b/assets/MetadataDialog-CG0IU1O_.js @@ -1,2 +1,2 @@ -import{o as r,R as e,u as n,D as s}from"./index-D3BxRj96.js";import{B as l}from"./index-DrQDdWjW.js";const c=r(function({model:t,onClose:a}){const{header:o}=t;return e.createElement(n.Dialog,{onClose:()=>a(),open:!0,title:"Metadata"},e.createElement(s,null,e.createElement(l.Attributes,{attributes:o})))});export{c as default}; -//# sourceMappingURL=MetadataDialog-t8S_uks3.js.map +import{o as r,R as e,k as n,D as s}from"./index-yx-9MxwX.js";import{B as l}from"./index-BAq0vo4N.js";const c=r(function({model:t,onClose:a}){const{header:o}=t;return e.createElement(n.Dialog,{onClose:()=>a(),open:!0,title:"Metadata"},e.createElement(s,null,e.createElement(l.Attributes,{attributes:o})))});export{c as default}; +//# sourceMappingURL=MetadataDialog-CG0IU1O_.js.map diff --git a/assets/MetadataDialog-t8S_uks3.js.map b/assets/MetadataDialog-CG0IU1O_.js.map similarity index 94% rename from assets/MetadataDialog-t8S_uks3.js.map rename to assets/MetadataDialog-CG0IU1O_.js.map index b2a5811c..d7607f87 100644 --- a/assets/MetadataDialog-t8S_uks3.js.map +++ b/assets/MetadataDialog-CG0IU1O_.js.map @@ -1 +1 @@ -{"version":3,"file":"MetadataDialog-t8S_uks3.js","sources":["../../../lib/dist/components/dialogs/MetadataDialog.js"],"sourcesContent":["import React from 'react';\nimport { DialogContent } from '@mui/material';\nimport { observer } from 'mobx-react';\nimport { Dialog } from '@jbrowse/core/ui';\nimport { Attributes } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail';\nconst MetadataDialog = observer(function ({ model, onClose, }) {\n const { header } = model;\n return (React.createElement(Dialog, { onClose: () => onClose(), open: true, title: \"Metadata\" },\n React.createElement(DialogContent, null,\n React.createElement(Attributes, { attributes: header }))));\n});\nexport default MetadataDialog;\n//# sourceMappingURL=MetadataDialog.js.map"],"names":["MetadataDialog","observer","model","onClose","header","React","Dialog","DialogContent","Attributes"],"mappings":"qGAKK,MAACA,EAAiBC,EAAS,SAAU,CAAE,MAAAC,EAAO,QAAAC,CAAO,EAAK,CAC3D,KAAM,CAAE,OAAAC,CAAQ,EAAGF,EACnB,OAAQG,EAAM,cAAcC,EAAM,OAAE,CAAE,QAAS,IAAMH,EAAO,EAAI,KAAM,GAAM,MAAO,UAAY,EAC3FE,EAAM,cAAcE,EAAe,KAC/BF,EAAM,cAAcG,aAAY,CAAE,WAAYJ,CAAM,CAAE,CAAC,CAAC,CACpE,CAAC"} \ No newline at end of file +{"version":3,"file":"MetadataDialog-CG0IU1O_.js","sources":["../../../lib/dist/components/dialogs/MetadataDialog.js"],"sourcesContent":["import React from 'react';\nimport { DialogContent } from '@mui/material';\nimport { observer } from 'mobx-react';\nimport { Dialog } from '@jbrowse/core/ui';\nimport { Attributes } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail';\nconst MetadataDialog = observer(function ({ model, onClose, }) {\n const { header } = model;\n return (React.createElement(Dialog, { onClose: () => onClose(), open: true, title: \"Metadata\" },\n React.createElement(DialogContent, null,\n React.createElement(Attributes, { attributes: header }))));\n});\nexport default MetadataDialog;\n//# sourceMappingURL=MetadataDialog.js.map"],"names":["MetadataDialog","observer","model","onClose","header","React","Dialog","DialogContent","Attributes"],"mappings":"qGAKK,MAACA,EAAiBC,EAAS,SAAU,CAAE,MAAAC,EAAO,QAAAC,CAAO,EAAK,CAC3D,KAAM,CAAE,OAAAC,CAAQ,EAAGF,EACnB,OAAQG,EAAM,cAAcC,EAAM,OAAE,CAAE,QAAS,IAAMH,EAAO,EAAI,KAAM,GAAM,MAAO,UAAY,EAC3FE,EAAM,cAAcE,EAAe,KAC/BF,EAAM,cAAcG,aAAY,CAAE,WAAYJ,CAAM,CAAE,CAAC,CAAC,CACpE,CAAC"} \ No newline at end of file diff --git a/assets/ProteinPanel-GOXt-lAH.js b/assets/ProteinPanel-CR1YkZo1.js similarity index 99% rename from assets/ProteinPanel-GOXt-lAH.js rename to assets/ProteinPanel-CR1YkZo1.js index 611714c7..cb64c507 100644 --- a/assets/ProteinPanel-GOXt-lAH.js +++ b/assets/ProteinPanel-CR1YkZo1.js @@ -1,4 +1,4 @@ -import{c as Ty,o as Zb,r as Ai,g as Kb,j as Ci,B as Jb,S as Qb,M as Dm,T as ev}from"./index-D3BxRj96.js";Number.EPSILON===void 0&&(Number.EPSILON=Math.pow(2,-52));Number.isInteger===void 0&&(Number.isInteger=function(t){return typeof t=="number"&&isFinite(t)&&Math.floor(t)===t});Math.sign===void 0&&(Math.sign=function(t){return t<0?-1:t>0?1:+t});"name"in Function.prototype||Object.defineProperty(Function.prototype,"name",{get:function(){return this.toString().match(/^\s*function\s*([^\(\s]*)/)[1]}});Object.assign===void 0&&(Object.assign=function(t){if(t==null)throw new TypeError("Cannot convert undefined or null to object");const e=Object(t);for(let n=1;n>8&255]+Sn[t>>16&255]+Sn[t>>24&255]+"-"+Sn[e&255]+Sn[e>>8&255]+"-"+Sn[e>>16&15|64]+Sn[e>>24&255]+"-"+Sn[n&63|128]+Sn[n>>8&255]+"-"+Sn[n>>16&255]+Sn[n>>24&255]+Sn[i&255]+Sn[i>>8&255]+Sn[i>>16&255]+Sn[i>>24&255]).toUpperCase()},clamp:function(t,e,n){return Math.max(e,Math.min(n,t))},euclideanModulo:function(t,e){return(t%e+e)%e},mapLinear:function(t,e,n,i,r){return i+(t-e)*(r-i)/(n-e)},lerp:function(t,e,n){return(1-n)*t+n*e},smoothstep:function(t,e,n){return t<=e?0:t>=n?1:(t=(t-e)/(n-e),t*t*(3-2*t))},smootherstep:function(t,e,n){return t<=e?0:t>=n?1:(t=(t-e)/(n-e),t*t*t*(t*(t*6-15)+10))},randInt:function(t,e){return t+Math.floor(Math.random()*(e-t+1))},randFloat:function(t,e){return t+Math.random()*(e-t)},randFloatSpread:function(t){return t*(.5-Math.random())},degToRad:function(t){return t*ut.DEG2RAD},radToDeg:function(t){return t*ut.RAD2DEG},isPowerOfTwo:function(t){return(t&t-1)===0&&t!==0},ceilPowerOfTwo:function(t){return Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))},floorPowerOfTwo:function(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))},setQuaternionFromProperEuler:function(t,e,n,i,r){const s=Math.cos,o=Math.sin,a=s(n/2),c=o(n/2),l=s((e+i)/2),h=o((e+i)/2),u=s((e-i)/2),f=o((e-i)/2),d=s((i-e)/2),p=o((i-e)/2);switch(r){case"XYX":t.set(a*h,c*u,c*f,a*l);break;case"YZY":t.set(c*f,a*h,c*u,a*l);break;case"ZXZ":t.set(c*u,c*f,a*h,a*l);break;case"XZX":t.set(a*h,c*p,c*d,a*l);break;case"YXY":t.set(c*d,a*h,c*p,a*l);break;case"ZYZ":t.set(c*p,c*d,a*h,a*l);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}}};function Te(t=0,e=0){this.x=t,this.y=e}Object.defineProperties(Te.prototype,{width:{get:function(){return this.x},set:function(t){this.x=t}},height:{get:function(){return this.y},set:function(t){this.y=t}}});Object.assign(Te.prototype,{isVector2:!0,set:function(t,e){return this.x=t,this.y=e,this},setScalar:function(t){return this.x=t,this.y=t,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setComponent:function(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this},getComponent:function(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}},clone:function(){return new this.constructor(this.x,this.y)},copy:function(t){return this.x=t.x,this.y=t.y,this},add:function(t,e){return e!==void 0?(console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this)},addScalar:function(t){return this.x+=t,this.y+=t,this},addVectors:function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this},addScaledVector:function(t,e){return this.x+=t.x*e,this.y+=t.y*e,this},sub:function(t,e){return e!==void 0?(console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this)},subScalar:function(t){return this.x-=t,this.y-=t,this},subVectors:function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this},multiply:function(t){return this.x*=t.x,this.y*=t.y,this},multiplyScalar:function(t){return this.x*=t,this.y*=t,this},divide:function(t){return this.x/=t.x,this.y/=t.y,this},divideScalar:function(t){return this.multiplyScalar(1/t)},applyMatrix3:function(t){const e=this.x,n=this.y,i=t.elements;return this.x=i[0]*e+i[3]*n+i[6],this.y=i[1]*e+i[4]*n+i[7],this},min:function(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this},max:function(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this},clamp:function(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this},clampScalar:function(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this},clampLength:function(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},roundToZero:function(){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},negate:function(){return this.x=-this.x,this.y=-this.y,this},dot:function(t){return this.x*t.x+this.y*t.y},cross:function(t){return this.x*t.y-this.y*t.x},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)},normalize:function(){return this.divideScalar(this.length()||1)},angle:function(){return Math.atan2(-this.y,-this.x)+Math.PI},distanceTo:function(t){return Math.sqrt(this.distanceToSquared(t))},distanceToSquared:function(t){const e=this.x-t.x,n=this.y-t.y;return e*e+n*n},manhattanDistanceTo:function(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)},setLength:function(t){return this.normalize().multiplyScalar(t)},lerp:function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this},lerpVectors:function(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this},equals:function(t){return t.x===this.x&&t.y===this.y},fromArray:function(t,e){return e===void 0&&(e=0),this.x=t[e],this.y=t[e+1],this},toArray:function(t,e){return t===void 0&&(t=[]),e===void 0&&(e=0),t[e]=this.x,t[e+1]=this.y,t},fromBufferAttribute:function(t,e,n){return n!==void 0&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute()."),this.x=t.getX(e),this.y=t.getY(e),this},rotateAround:function(t,e){const n=Math.cos(e),i=Math.sin(e),r=this.x-t.x,s=this.y-t.y;return this.x=r*n-s*i+t.x,this.y=r*i+s*n+t.y,this},random:function(){return this.x=Math.random(),this.y=Math.random(),this}});function An(){this.elements=[1,0,0,0,1,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}Object.assign(An.prototype,{isMatrix3:!0,set:function(t,e,n,i,r,s,o,a,c){const l=this.elements;return l[0]=t,l[1]=i,l[2]=o,l[3]=e,l[4]=r,l[5]=a,l[6]=n,l[7]=s,l[8]=c,this},identity:function(){return this.set(1,0,0,0,1,0,0,0,1),this},clone:function(){return new this.constructor().fromArray(this.elements)},copy:function(t){const e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],this},extractBasis:function(t,e,n){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this},setFromMatrix4:function(t){const e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this},multiply:function(t){return this.multiplyMatrices(this,t)},premultiply:function(t){return this.multiplyMatrices(t,this)},multiplyMatrices:function(t,e){const n=t.elements,i=e.elements,r=this.elements,s=n[0],o=n[3],a=n[6],c=n[1],l=n[4],h=n[7],u=n[2],f=n[5],d=n[8],p=i[0],y=i[3],g=i[6],m=i[1],x=i[4],v=i[7],b=i[2],_=i[5],C=i[8];return r[0]=s*p+o*m+a*b,r[3]=s*y+o*x+a*_,r[6]=s*g+o*v+a*C,r[1]=c*p+l*m+h*b,r[4]=c*y+l*x+h*_,r[7]=c*g+l*v+h*C,r[2]=u*p+f*m+d*b,r[5]=u*y+f*x+d*_,r[8]=u*g+f*v+d*C,this},multiplyScalar:function(t){const e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this},determinant:function(){const t=this.elements,e=t[0],n=t[1],i=t[2],r=t[3],s=t[4],o=t[5],a=t[6],c=t[7],l=t[8];return e*s*l-e*o*c-n*r*l+n*o*a+i*r*c-i*s*a},getInverse:function(t,e){e!==void 0&&console.warn("THREE.Matrix3: .getInverse() can no longer be configured to throw on degenerate.");const n=t.elements,i=this.elements,r=n[0],s=n[1],o=n[2],a=n[3],c=n[4],l=n[5],h=n[6],u=n[7],f=n[8],d=f*c-l*u,p=l*h-f*a,y=u*a-c*h,g=r*d+s*p+o*y;if(g===0)return this.set(0,0,0,0,0,0,0,0,0);const m=1/g;return i[0]=d*m,i[1]=(o*u-f*s)*m,i[2]=(l*s-o*c)*m,i[3]=p*m,i[4]=(f*r-o*h)*m,i[5]=(o*a-l*r)*m,i[6]=y*m,i[7]=(s*h-u*r)*m,i[8]=(c*r-s*a)*m,this},transpose:function(){let t;const e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this},getNormalMatrix:function(t){return this.setFromMatrix4(t).getInverse(this).transpose()},transposeIntoArray:function(t){const e=this.elements;return t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],this},setUvTransform:function(t,e,n,i,r,s,o){const a=Math.cos(r),c=Math.sin(r);this.set(n*a,n*c,-n*(a*s+c*o)+s+t,-i*c,i*a,-i*(-c*s+a*o)+o+e,0,0,1)},scale:function(t,e){const n=this.elements;return n[0]*=t,n[3]*=t,n[6]*=t,n[1]*=e,n[4]*=e,n[7]*=e,this},rotate:function(t){const e=Math.cos(t),n=Math.sin(t),i=this.elements,r=i[0],s=i[3],o=i[6],a=i[1],c=i[4],l=i[7];return i[0]=e*r+n*a,i[3]=e*s+n*c,i[6]=e*o+n*l,i[1]=-n*r+e*a,i[4]=-n*s+e*c,i[7]=-n*o+e*l,this},translate:function(t,e){const n=this.elements;return n[0]+=t*n[2],n[3]+=t*n[5],n[6]+=t*n[8],n[1]+=e*n[2],n[4]+=e*n[5],n[7]+=e*n[8],this},equals:function(t){const e=this.elements,n=t.elements;for(let i=0;i<9;i++)if(e[i]!==n[i])return!1;return!0},fromArray:function(t,e){e===void 0&&(e=0);for(let n=0;n<9;n++)this.elements[n]=t[n+e];return this},toArray:function(t,e){t===void 0&&(t=[]),e===void 0&&(e=0);const n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t}});let Os;const ys={getDataURL:function(t){if(/^data:/i.test(t.src)||typeof HTMLCanvasElement>"u")return t.src;let e;if(t instanceof HTMLCanvasElement)e=t;else{Os===void 0&&(Os=document.createElementNS("http://www.w3.org/1999/xhtml","canvas")),Os.width=t.width,Os.height=t.height;const n=Os.getContext("2d");t instanceof ImageData?n.putImageData(t,0,0):n.drawImage(t,0,0,t.width,t.height),e=Os}return e.width>2048||e.height>2048?e.toDataURL("image/jpeg",.6):e.toDataURL("image/png")}};let R_=0;function $t(t,e,n,i,r,s,o,a,c,l){Object.defineProperty(this,"id",{value:R_++}),this.uuid=ut.generateUUID(),this.name="",this.image=t!==void 0?t:$t.DEFAULT_IMAGE,this.mipmaps=[],this.mapping=e!==void 0?e:$t.DEFAULT_MAPPING,this.wrapS=n!==void 0?n:zn,this.wrapT=i!==void 0?i:zn,this.magFilter=r!==void 0?r:gn,this.minFilter=s!==void 0?s:Cu,this.anisotropy=c!==void 0?c:1,this.format=o!==void 0?o:Gn,this.internalFormat=null,this.type=a!==void 0?a:gs,this.offset=new Te(0,0),this.repeat=new Te(1,1),this.center=new Te(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new An,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.encoding=l!==void 0?l:Pn,this.version=0,this.onUpdate=null}$t.DEFAULT_IMAGE=void 0;$t.DEFAULT_MAPPING=jp;$t.prototype=Object.assign(Object.create(xr.prototype),{constructor:$t,isTexture:!0,updateMatrix:function(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)},clone:function(){return new this.constructor().copy(this)},copy:function(t){return this.name=t.name,this.image=t.image,this.mipmaps=t.mipmaps.slice(0),this.mapping=t.mapping,this.wrapS=t.wrapS,this.wrapT=t.wrapT,this.magFilter=t.magFilter,this.minFilter=t.minFilter,this.anisotropy=t.anisotropy,this.format=t.format,this.internalFormat=t.internalFormat,this.type=t.type,this.offset.copy(t.offset),this.repeat.copy(t.repeat),this.center.copy(t.center),this.rotation=t.rotation,this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrix.copy(t.matrix),this.generateMipmaps=t.generateMipmaps,this.premultiplyAlpha=t.premultiplyAlpha,this.flipY=t.flipY,this.unpackAlignment=t.unpackAlignment,this.encoding=t.encoding,this},toJSON:function(t){const e=t===void 0||typeof t=="string";if(!e&&t.textures[this.uuid]!==void 0)return t.textures[this.uuid];const n={metadata:{version:4.5,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,mapping:this.mapping,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,type:this.type,encoding:this.encoding,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};if(this.image!==void 0){const i=this.image;if(i.uuid===void 0&&(i.uuid=ut.generateUUID()),!e&&t.images[i.uuid]===void 0){let r;if(Array.isArray(i)){r=[];for(let s=0,o=i.length;s1)switch(this.wrapS){case Th:t.x=t.x-Math.floor(t.x);break;case zn:t.x=t.x<0?0:1;break;case Ph:Math.abs(Math.floor(t.x)%2)===1?t.x=Math.ceil(t.x)-t.x:t.x=t.x-Math.floor(t.x);break}if(t.y<0||t.y>1)switch(this.wrapT){case Th:t.y=t.y-Math.floor(t.y);break;case zn:t.y=t.y<0?0:1;break;case Ph:Math.abs(Math.floor(t.y)%2)===1?t.y=Math.ceil(t.y)-t.y:t.y=t.y-Math.floor(t.y);break}return this.flipY&&(t.y=1-t.y),t}});Object.defineProperty($t.prototype,"needsUpdate",{set:function(t){t===!0&&this.version++}});function kt(t=0,e=0,n=0,i=1){this.x=t,this.y=e,this.z=n,this.w=i}Object.defineProperties(kt.prototype,{width:{get:function(){return this.z},set:function(t){this.z=t}},height:{get:function(){return this.w},set:function(t){this.w=t}}});Object.assign(kt.prototype,{isVector4:!0,set:function(t,e,n,i){return this.x=t,this.y=e,this.z=n,this.w=i,this},setScalar:function(t){return this.x=t,this.y=t,this.z=t,this.w=t,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setZ:function(t){return this.z=t,this},setW:function(t){return this.w=t,this},setComponent:function(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+t)}return this},getComponent:function(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+t)}},clone:function(){return new this.constructor(this.x,this.y,this.z,this.w)},copy:function(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=t.w!==void 0?t.w:1,this},add:function(t,e){return e!==void 0?(console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this)},addScalar:function(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this},addVectors:function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this.w=t.w+e.w,this},addScaledVector:function(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this.w+=t.w*e,this},sub:function(t,e){return e!==void 0?(console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this)},subScalar:function(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this},subVectors:function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this.w=t.w-e.w,this},multiplyScalar:function(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this},applyMatrix4:function(t){const e=this.x,n=this.y,i=this.z,r=this.w,s=t.elements;return this.x=s[0]*e+s[4]*n+s[8]*i+s[12]*r,this.y=s[1]*e+s[5]*n+s[9]*i+s[13]*r,this.z=s[2]*e+s[6]*n+s[10]*i+s[14]*r,this.w=s[3]*e+s[7]*n+s[11]*i+s[15]*r,this},divideScalar:function(t){return this.multiplyScalar(1/t)},setAxisAngleFromQuaternion:function(t){this.w=2*Math.acos(t.w);const e=Math.sqrt(1-t.w*t.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/e,this.y=t.y/e,this.z=t.z/e),this},setAxisAngleFromRotationMatrix:function(t){let e,n,i,r;const a=t.elements,c=a[0],l=a[4],h=a[8],u=a[1],f=a[5],d=a[9],p=a[2],y=a[6],g=a[10];if(Math.abs(l-u)<.01&&Math.abs(h-p)<.01&&Math.abs(d-y)<.01){if(Math.abs(l+u)<.1&&Math.abs(h+p)<.1&&Math.abs(d+y)<.1&&Math.abs(c+f+g-3)<.1)return this.set(1,0,0,0),this;e=Math.PI;const x=(c+1)/2,v=(f+1)/2,b=(g+1)/2,_=(l+u)/4,C=(h+p)/4,w=(d+y)/4;return x>v&&x>b?x<.01?(n=0,i=.707106781,r=.707106781):(n=Math.sqrt(x),i=_/n,r=C/n):v>b?v<.01?(n=.707106781,i=0,r=.707106781):(i=Math.sqrt(v),n=_/i,r=w/i):b<.01?(n=.707106781,i=.707106781,r=0):(r=Math.sqrt(b),n=C/r,i=w/r),this.set(n,i,r,e),this}let m=Math.sqrt((y-d)*(y-d)+(h-p)*(h-p)+(u-l)*(u-l));return Math.abs(m)<.001&&(m=1),this.x=(y-d)/m,this.y=(h-p)/m,this.z=(u-l)/m,this.w=Math.acos((c+f+g-1)/2),this},min:function(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this.w=Math.min(this.w,t.w),this},max:function(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this.w=Math.max(this.w,t.w),this},clamp:function(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this.w=Math.max(t.w,Math.min(e.w,this.w)),this},clampScalar:function(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this.w=Math.max(t,Math.min(e,this.w)),this},clampLength:function(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))},floor:function(){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:function(){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:function(){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:function(){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:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this},dot:function(t){return this.x*t.x+this.y*t.y+this.z*t.z+this.w*t.w},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(t){return this.normalize().multiplyScalar(t)},lerp:function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this.w+=(t.w-this.w)*e,this},lerpVectors:function(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this.w=t.w+(e.w-t.w)*n,this},equals:function(t){return t.x===this.x&&t.y===this.y&&t.z===this.z&&t.w===this.w},fromArray:function(t,e){return e===void 0&&(e=0),this.x=t[e],this.y=t[e+1],this.z=t[e+2],this.w=t[e+3],this},toArray:function(t,e){return t===void 0&&(t=[]),e===void 0&&(e=0),t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t[e+3]=this.w,t},fromBufferAttribute:function(t,e,n){return n!==void 0&&console.warn("THREE.Vector4: offset has been removed from .fromBufferAttribute()."),this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this.w=t.getW(e),this},random:function(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}});function Rn(t,e,n){this.width=t,this.height=e,this.scissor=new kt(0,0,t,e),this.scissorTest=!1,this.viewport=new kt(0,0,t,e),n=n||{},this.texture=new $t(void 0,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.encoding),this.texture.image={},this.texture.image.width=t,this.texture.image.height=e,this.texture.generateMipmaps=n.generateMipmaps!==void 0?n.generateMipmaps:!1,this.texture.minFilter=n.minFilter!==void 0?n.minFilter:gn,this.depthBuffer=n.depthBuffer!==void 0?n.depthBuffer:!0,this.stencilBuffer=n.stencilBuffer!==void 0?n.stencilBuffer:!0,this.depthTexture=n.depthTexture!==void 0?n.depthTexture:null}Rn.prototype=Object.assign(Object.create(xr.prototype),{constructor:Rn,isWebGLRenderTarget:!0,setSize:function(t,e){(this.width!==t||this.height!==e)&&(this.width=t,this.height=e,this.texture.image.width=t,this.texture.image.height=e,this.dispose()),this.viewport.set(0,0,t,e),this.scissor.set(0,0,t,e)},clone:function(){return new this.constructor().copy(this)},copy:function(t){return this.width=t.width,this.height=t.height,this.viewport.copy(t.viewport),this.texture=t.texture.clone(),this.depthBuffer=t.depthBuffer,this.stencilBuffer=t.stencilBuffer,this.depthTexture=t.depthTexture,this},dispose:function(){this.dispatchEvent({type:"dispose"})}});function Ym(t,e,n){Rn.call(this,t,e,n),this.samples=4}Ym.prototype=Object.assign(Object.create(Rn.prototype),{constructor:Ym,isWebGLMultisampleRenderTarget:!0,copy:function(t){return Rn.prototype.copy.call(this,t),this.samples=t.samples,this}});function Gt(t=0,e=0,n=0,i=1){this._x=t,this._y=e,this._z=n,this._w=i}Object.assign(Gt,{slerp:function(t,e,n,i){return n.copy(t).slerp(e,i)},slerpFlat:function(t,e,n,i,r,s,o){let a=n[i+0],c=n[i+1],l=n[i+2],h=n[i+3];const u=r[s+0],f=r[s+1],d=r[s+2],p=r[s+3];if(h!==p||a!==u||c!==f||l!==d){let y=1-o,g=a*u+c*f+l*d+h*p,m=g>=0?1:-1,x=1-g*g;if(x>Number.EPSILON){const b=Math.sqrt(x),_=Math.atan2(b,g*m);y=Math.sin(y*_)/b,o=Math.sin(o*_)/b}const v=o*m;if(a=a*y+u*v,c=c*y+f*v,l=l*y+d*v,h=h*y+p*v,y===1-o){const b=1/Math.sqrt(a*a+c*c+l*l+h*h);a*=b,c*=b,l*=b,h*=b}}t[e]=a,t[e+1]=c,t[e+2]=l,t[e+3]=h},multiplyQuaternionsFlat:function(t,e,n,i,r,s){const o=n[i],a=n[i+1],c=n[i+2],l=n[i+3],h=r[s],u=r[s+1],f=r[s+2],d=r[s+3];return t[e]=o*d+l*h+a*f-c*u,t[e+1]=a*d+l*u+c*h-o*f,t[e+2]=c*d+l*f+o*u-a*h,t[e+3]=l*d-o*h-a*u-c*f,t}});Object.defineProperties(Gt.prototype,{x:{get:function(){return this._x},set:function(t){this._x=t,this._onChangeCallback()}},y:{get:function(){return this._y},set:function(t){this._y=t,this._onChangeCallback()}},z:{get:function(){return this._z},set:function(t){this._z=t,this._onChangeCallback()}},w:{get:function(){return this._w},set:function(t){this._w=t,this._onChangeCallback()}}});Object.assign(Gt.prototype,{isQuaternion:!0,set:function(t,e,n,i){return this._x=t,this._y=e,this._z=n,this._w=i,this._onChangeCallback(),this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._w)},copy:function(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this},setFromEuler:function(t,e){if(!(t&&t.isEuler))throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");const n=t._x,i=t._y,r=t._z,s=t.order,o=Math.cos,a=Math.sin,c=o(n/2),l=o(i/2),h=o(r/2),u=a(n/2),f=a(i/2),d=a(r/2);switch(s){case"XYZ":this._x=u*l*h+c*f*d,this._y=c*f*h-u*l*d,this._z=c*l*d+u*f*h,this._w=c*l*h-u*f*d;break;case"YXZ":this._x=u*l*h+c*f*d,this._y=c*f*h-u*l*d,this._z=c*l*d-u*f*h,this._w=c*l*h+u*f*d;break;case"ZXY":this._x=u*l*h-c*f*d,this._y=c*f*h+u*l*d,this._z=c*l*d+u*f*h,this._w=c*l*h-u*f*d;break;case"ZYX":this._x=u*l*h-c*f*d,this._y=c*f*h+u*l*d,this._z=c*l*d-u*f*h,this._w=c*l*h+u*f*d;break;case"YZX":this._x=u*l*h+c*f*d,this._y=c*f*h+u*l*d,this._z=c*l*d-u*f*h,this._w=c*l*h-u*f*d;break;case"XZY":this._x=u*l*h-c*f*d,this._y=c*f*h-u*l*d,this._z=c*l*d+u*f*h,this._w=c*l*h+u*f*d;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+s)}return e!==!1&&this._onChangeCallback(),this},setFromAxisAngle:function(t,e){const n=e/2,i=Math.sin(n);return this._x=t.x*i,this._y=t.y*i,this._z=t.z*i,this._w=Math.cos(n),this._onChangeCallback(),this},setFromRotationMatrix:function(t){const e=t.elements,n=e[0],i=e[4],r=e[8],s=e[1],o=e[5],a=e[9],c=e[2],l=e[6],h=e[10],u=n+o+h;if(u>0){const f=.5/Math.sqrt(u+1);this._w=.25/f,this._x=(l-a)*f,this._y=(r-c)*f,this._z=(s-i)*f}else if(n>o&&n>h){const f=2*Math.sqrt(1+n-o-h);this._w=(l-a)/f,this._x=.25*f,this._y=(i+s)/f,this._z=(r+c)/f}else if(o>h){const f=2*Math.sqrt(1+o-n-h);this._w=(r-c)/f,this._x=(i+s)/f,this._y=.25*f,this._z=(a+l)/f}else{const f=2*Math.sqrt(1+h-n-o);this._w=(s-i)/f,this._x=(r+c)/f,this._y=(a+l)/f,this._z=.25*f}return this._onChangeCallback(),this},setFromUnitVectors:function(t,e){let i=t.dot(e)+1;return i<1e-6?(i=0,Math.abs(t.x)>Math.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=i):(this._x=0,this._y=-t.z,this._z=t.y,this._w=i)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=i),this.normalize()},angleTo:function(t){return 2*Math.acos(Math.abs(ut.clamp(this.dot(t),-1,1)))},rotateTowards:function(t,e){const n=this.angleTo(t);if(n===0)return this;const i=Math.min(1,e/n);return this.slerp(t,i),this},inverse:function(){return this.conjugate()},conjugate:function(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this},dot:function(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w},lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){let t=this.length();return t===0?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this},multiply:function(t,e){return e!==void 0?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(t,e)):this.multiplyQuaternions(this,t)},premultiply:function(t){return this.multiplyQuaternions(t,this)},multiplyQuaternions:function(t,e){const n=t._x,i=t._y,r=t._z,s=t._w,o=e._x,a=e._y,c=e._z,l=e._w;return this._x=n*l+s*o+i*c-r*a,this._y=i*l+s*a+r*o-n*c,this._z=r*l+s*c+n*a-i*o,this._w=s*l-n*o-i*a-r*c,this._onChangeCallback(),this},slerp:function(t,e){if(e===0)return this;if(e===1)return this.copy(t);const n=this._x,i=this._y,r=this._z,s=this._w;let o=s*t._w+n*t._x+i*t._y+r*t._z;if(o<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,o=-o):this.copy(t),o>=1)return this._w=s,this._x=n,this._y=i,this._z=r,this;const a=1-o*o;if(a<=Number.EPSILON){const f=1-e;return this._w=f*s+e*this._w,this._x=f*n+e*this._x,this._y=f*i+e*this._y,this._z=f*r+e*this._z,this.normalize(),this._onChangeCallback(),this}const c=Math.sqrt(a),l=Math.atan2(c,o),h=Math.sin((1-e)*l)/c,u=Math.sin(e*l)/c;return this._w=s*h+this._w*u,this._x=n*h+this._x*u,this._y=i*h+this._y*u,this._z=r*h+this._z*u,this._onChangeCallback(),this},equals:function(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w},fromArray:function(t,e){return e===void 0&&(e=0),this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this},toArray:function(t,e){return t===void 0&&(t=[]),e===void 0&&(e=0),t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t},fromBufferAttribute:function(t,e){return this._x=t.getX(e),this._y=t.getY(e),this._z=t.getZ(e),this._w=t.getW(e),this},_onChange:function(t){return this._onChangeCallback=t,this},_onChangeCallback:function(){}});const Ku=new T,Zm=new Gt;function T(t=0,e=0,n=0){this.x=t,this.y=e,this.z=n}Object.assign(T.prototype,{isVector3:!0,set:function(t,e,n){return this.x=t,this.y=e,this.z=n,this},setScalar:function(t){return this.x=t,this.y=t,this.z=t,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setZ:function(t){return this.z=t,this},setComponent:function(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}return this},getComponent:function(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}},clone:function(){return new this.constructor(this.x,this.y,this.z)},copy:function(t){return this.x=t.x,this.y=t.y,this.z=t.z,this},add:function(t,e){return e!==void 0?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this.z+=t.z,this)},addScalar:function(t){return this.x+=t,this.y+=t,this.z+=t,this},addVectors:function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this},addScaledVector:function(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this},sub:function(t,e){return e!==void 0?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this.z-=t.z,this)},subScalar:function(t){return this.x-=t,this.y-=t,this.z-=t,this},subVectors:function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this},multiply:function(t,e){return e!==void 0?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(t,e)):(this.x*=t.x,this.y*=t.y,this.z*=t.z,this)},multiplyScalar:function(t){return this.x*=t,this.y*=t,this.z*=t,this},multiplyVectors:function(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this},applyEuler:function(t){return t&&t.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order."),this.applyQuaternion(Zm.setFromEuler(t))},applyAxisAngle:function(t,e){return this.applyQuaternion(Zm.setFromAxisAngle(t,e))},applyMatrix3:function(t){const e=this.x,n=this.y,i=this.z,r=t.elements;return this.x=r[0]*e+r[3]*n+r[6]*i,this.y=r[1]*e+r[4]*n+r[7]*i,this.z=r[2]*e+r[5]*n+r[8]*i,this},applyNormalMatrix:function(t){return this.applyMatrix3(t).normalize()},applyMatrix4:function(t){const e=this.x,n=this.y,i=this.z,r=t.elements,s=1/(r[3]*e+r[7]*n+r[11]*i+r[15]);return this.x=(r[0]*e+r[4]*n+r[8]*i+r[12])*s,this.y=(r[1]*e+r[5]*n+r[9]*i+r[13])*s,this.z=(r[2]*e+r[6]*n+r[10]*i+r[14])*s,this},applyQuaternion:function(t){const e=this.x,n=this.y,i=this.z,r=t.x,s=t.y,o=t.z,a=t.w,c=a*e+s*i-o*n,l=a*n+o*e-r*i,h=a*i+r*n-s*e,u=-r*e-s*n-o*i;return this.x=c*a+u*-r+l*-o-h*-s,this.y=l*a+u*-s+h*-r-c*-o,this.z=h*a+u*-o+c*-s-l*-r,this},project:function(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)},unproject:function(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)},transformDirection:function(t){const e=this.x,n=this.y,i=this.z,r=t.elements;return this.x=r[0]*e+r[4]*n+r[8]*i,this.y=r[1]*e+r[5]*n+r[9]*i,this.z=r[2]*e+r[6]*n+r[10]*i,this.normalize()},divide:function(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this},divideScalar:function(t){return this.multiplyScalar(1/t)},min:function(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this},max:function(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this},clamp:function(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this},clampScalar:function(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this},clampLength:function(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){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:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},dot:function(t){return this.x*t.x+this.y*t.y+this.z*t.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(t){return this.normalize().multiplyScalar(t)},lerp:function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this},lerpVectors:function(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this},cross:function(t,e){return e!==void 0?(console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(t,e)):this.crossVectors(this,t)},crossVectors:function(t,e){const n=t.x,i=t.y,r=t.z,s=e.x,o=e.y,a=e.z;return this.x=i*a-r*o,this.y=r*s-n*a,this.z=n*o-i*s,this},projectOnVector:function(t){const e=t.lengthSq();if(e===0)return this.set(0,0,0);const n=t.dot(this)/e;return this.copy(t).multiplyScalar(n)},projectOnPlane:function(t){return Ku.copy(this).projectOnVector(t),this.sub(Ku)},reflect:function(t){return this.sub(Ku.copy(t).multiplyScalar(2*this.dot(t)))},angleTo:function(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;const n=this.dot(t)/e;return Math.acos(ut.clamp(n,-1,1))},distanceTo:function(t){return Math.sqrt(this.distanceToSquared(t))},distanceToSquared:function(t){const e=this.x-t.x,n=this.y-t.y,i=this.z-t.z;return e*e+n*n+i*i},manhattanDistanceTo:function(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)},setFromSpherical:function(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)},setFromSphericalCoords:function(t,e,n){const i=Math.sin(e)*t;return this.x=i*Math.sin(n),this.y=Math.cos(e)*t,this.z=i*Math.cos(n),this},setFromCylindrical:function(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)},setFromCylindricalCoords:function(t,e,n){return this.x=t*Math.sin(e),this.y=n,this.z=t*Math.cos(e),this},setFromMatrixPosition:function(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this},setFromMatrixScale:function(t){const e=this.setFromMatrixColumn(t,0).length(),n=this.setFromMatrixColumn(t,1).length(),i=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=n,this.z=i,this},setFromMatrixColumn:function(t,e){return this.fromArray(t.elements,e*4)},setFromMatrix3Column:function(t,e){return this.fromArray(t.elements,e*3)},equals:function(t){return t.x===this.x&&t.y===this.y&&t.z===this.z},fromArray:function(t,e){return e===void 0&&(e=0),this.x=t[e],this.y=t[e+1],this.z=t[e+2],this},toArray:function(t,e){return t===void 0&&(t=[]),e===void 0&&(e=0),t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t},fromBufferAttribute:function(t,e,n){return n!==void 0&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."),this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this},random:function(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}});const ks=new T,hi=new Ie,D_=new T(0,0,0),B_=new T(1,1,1),Sr=new T,al=new T,Hn=new T;function Ie(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}Object.assign(Ie.prototype,{isMatrix4:!0,set:function(t,e,n,i,r,s,o,a,c,l,h,u,f,d,p,y){const g=this.elements;return g[0]=t,g[4]=e,g[8]=n,g[12]=i,g[1]=r,g[5]=s,g[9]=o,g[13]=a,g[2]=c,g[6]=l,g[10]=h,g[14]=u,g[3]=f,g[7]=d,g[11]=p,g[15]=y,this},identity:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},clone:function(){return new Ie().fromArray(this.elements)},copy:function(t){const e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e[9]=n[9],e[10]=n[10],e[11]=n[11],e[12]=n[12],e[13]=n[13],e[14]=n[14],e[15]=n[15],this},copyPosition:function(t){const e=this.elements,n=t.elements;return e[12]=n[12],e[13]=n[13],e[14]=n[14],this},extractBasis:function(t,e,n){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this},makeBasis:function(t,e,n){return this.set(t.x,e.x,n.x,0,t.y,e.y,n.y,0,t.z,e.z,n.z,0,0,0,0,1),this},extractRotation:function(t){const e=this.elements,n=t.elements,i=1/ks.setFromMatrixColumn(t,0).length(),r=1/ks.setFromMatrixColumn(t,1).length(),s=1/ks.setFromMatrixColumn(t,2).length();return e[0]=n[0]*i,e[1]=n[1]*i,e[2]=n[2]*i,e[3]=0,e[4]=n[4]*r,e[5]=n[5]*r,e[6]=n[6]*r,e[7]=0,e[8]=n[8]*s,e[9]=n[9]*s,e[10]=n[10]*s,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this},makeRotationFromEuler:function(t){t&&t.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");const e=this.elements,n=t.x,i=t.y,r=t.z,s=Math.cos(n),o=Math.sin(n),a=Math.cos(i),c=Math.sin(i),l=Math.cos(r),h=Math.sin(r);if(t.order==="XYZ"){const u=s*l,f=s*h,d=o*l,p=o*h;e[0]=a*l,e[4]=-a*h,e[8]=c,e[1]=f+d*c,e[5]=u-p*c,e[9]=-o*a,e[2]=p-u*c,e[6]=d+f*c,e[10]=s*a}else if(t.order==="YXZ"){const u=a*l,f=a*h,d=c*l,p=c*h;e[0]=u+p*o,e[4]=d*o-f,e[8]=s*c,e[1]=s*h,e[5]=s*l,e[9]=-o,e[2]=f*o-d,e[6]=p+u*o,e[10]=s*a}else if(t.order==="ZXY"){const u=a*l,f=a*h,d=c*l,p=c*h;e[0]=u-p*o,e[4]=-s*h,e[8]=d+f*o,e[1]=f+d*o,e[5]=s*l,e[9]=p-u*o,e[2]=-s*c,e[6]=o,e[10]=s*a}else if(t.order==="ZYX"){const u=s*l,f=s*h,d=o*l,p=o*h;e[0]=a*l,e[4]=d*c-f,e[8]=u*c+p,e[1]=a*h,e[5]=p*c+u,e[9]=f*c-d,e[2]=-c,e[6]=o*a,e[10]=s*a}else if(t.order==="YZX"){const u=s*a,f=s*c,d=o*a,p=o*c;e[0]=a*l,e[4]=p-u*h,e[8]=d*h+f,e[1]=h,e[5]=s*l,e[9]=-o*l,e[2]=-c*l,e[6]=f*h+d,e[10]=u-p*h}else if(t.order==="XZY"){const u=s*a,f=s*c,d=o*a,p=o*c;e[0]=a*l,e[4]=-h,e[8]=c*l,e[1]=u*h+p,e[5]=s*l,e[9]=f*h-d,e[2]=d*h-f,e[6]=o*l,e[10]=p*h+u}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this},makeRotationFromQuaternion:function(t){return this.compose(D_,t,B_)},lookAt:function(t,e,n){const i=this.elements;return Hn.subVectors(t,e),Hn.lengthSq()===0&&(Hn.z=1),Hn.normalize(),Sr.crossVectors(n,Hn),Sr.lengthSq()===0&&(Math.abs(n.z)===1?Hn.x+=1e-4:Hn.z+=1e-4,Hn.normalize(),Sr.crossVectors(n,Hn)),Sr.normalize(),al.crossVectors(Hn,Sr),i[0]=Sr.x,i[4]=al.x,i[8]=Hn.x,i[1]=Sr.y,i[5]=al.y,i[9]=Hn.y,i[2]=Sr.z,i[6]=al.z,i[10]=Hn.z,this},multiply:function(t,e){return e!==void 0?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(t,e)):this.multiplyMatrices(this,t)},premultiply:function(t){return this.multiplyMatrices(t,this)},multiplyMatrices:function(t,e){const n=t.elements,i=e.elements,r=this.elements,s=n[0],o=n[4],a=n[8],c=n[12],l=n[1],h=n[5],u=n[9],f=n[13],d=n[2],p=n[6],y=n[10],g=n[14],m=n[3],x=n[7],v=n[11],b=n[15],_=i[0],C=i[4],w=i[8],S=i[12],M=i[1],B=i[5],L=i[9],U=i[13],E=i[2],O=i[6],k=i[10],ne=i[14],Y=i[3],F=i[7],te=i[11],ee=i[15];return r[0]=s*_+o*M+a*E+c*Y,r[4]=s*C+o*B+a*O+c*F,r[8]=s*w+o*L+a*k+c*te,r[12]=s*S+o*U+a*ne+c*ee,r[1]=l*_+h*M+u*E+f*Y,r[5]=l*C+h*B+u*O+f*F,r[9]=l*w+h*L+u*k+f*te,r[13]=l*S+h*U+u*ne+f*ee,r[2]=d*_+p*M+y*E+g*Y,r[6]=d*C+p*B+y*O+g*F,r[10]=d*w+p*L+y*k+g*te,r[14]=d*S+p*U+y*ne+g*ee,r[3]=m*_+x*M+v*E+b*Y,r[7]=m*C+x*B+v*O+b*F,r[11]=m*w+x*L+v*k+b*te,r[15]=m*S+x*U+v*ne+b*ee,this},multiplyScalar:function(t){const e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this},determinant:function(){const t=this.elements,e=t[0],n=t[4],i=t[8],r=t[12],s=t[1],o=t[5],a=t[9],c=t[13],l=t[2],h=t[6],u=t[10],f=t[14],d=t[3],p=t[7],y=t[11],g=t[15];return d*(+r*a*h-i*c*h-r*o*u+n*c*u+i*o*f-n*a*f)+p*(+e*a*f-e*c*u+r*s*u-i*s*f+i*c*l-r*a*l)+y*(+e*c*h-e*o*f-r*s*h+n*s*f+r*o*l-n*c*l)+g*(-i*o*l-e*a*h+e*o*u+i*s*h-n*s*u+n*a*l)},transpose:function(){const t=this.elements;let e;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this},setPosition:function(t,e,n){const i=this.elements;return t.isVector3?(i[12]=t.x,i[13]=t.y,i[14]=t.z):(i[12]=t,i[13]=e,i[14]=n),this},getInverse:function(t,e){e!==void 0&&console.warn("THREE.Matrix4: .getInverse() can no longer be configured to throw on degenerate.");const n=this.elements,i=t.elements,r=i[0],s=i[1],o=i[2],a=i[3],c=i[4],l=i[5],h=i[6],u=i[7],f=i[8],d=i[9],p=i[10],y=i[11],g=i[12],m=i[13],x=i[14],v=i[15],b=d*x*u-m*p*u+m*h*y-l*x*y-d*h*v+l*p*v,_=g*p*u-f*x*u-g*h*y+c*x*y+f*h*v-c*p*v,C=f*m*u-g*d*u+g*l*y-c*m*y-f*l*v+c*d*v,w=g*d*h-f*m*h-g*l*p+c*m*p+f*l*x-c*d*x,S=r*b+s*_+o*C+a*w;if(S===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const M=1/S;return n[0]=b*M,n[1]=(m*p*a-d*x*a-m*o*y+s*x*y+d*o*v-s*p*v)*M,n[2]=(l*x*a-m*h*a+m*o*u-s*x*u-l*o*v+s*h*v)*M,n[3]=(d*h*a-l*p*a-d*o*u+s*p*u+l*o*y-s*h*y)*M,n[4]=_*M,n[5]=(f*x*a-g*p*a+g*o*y-r*x*y-f*o*v+r*p*v)*M,n[6]=(g*h*a-c*x*a-g*o*u+r*x*u+c*o*v-r*h*v)*M,n[7]=(c*p*a-f*h*a+f*o*u-r*p*u-c*o*y+r*h*y)*M,n[8]=C*M,n[9]=(g*d*a-f*m*a-g*s*y+r*m*y+f*s*v-r*d*v)*M,n[10]=(c*m*a-g*l*a+g*s*u-r*m*u-c*s*v+r*l*v)*M,n[11]=(f*l*a-c*d*a-f*s*u+r*d*u+c*s*y-r*l*y)*M,n[12]=w*M,n[13]=(f*m*o-g*d*o+g*s*p-r*m*p-f*s*x+r*d*x)*M,n[14]=(g*l*o-c*m*o-g*s*h+r*m*h+c*s*x-r*l*x)*M,n[15]=(c*d*o-f*l*o+f*s*h-r*d*h-c*s*p+r*l*p)*M,this},scale:function(t){const e=this.elements,n=t.x,i=t.y,r=t.z;return e[0]*=n,e[4]*=i,e[8]*=r,e[1]*=n,e[5]*=i,e[9]*=r,e[2]*=n,e[6]*=i,e[10]*=r,e[3]*=n,e[7]*=i,e[11]*=r,this},getMaxScaleOnAxis:function(){const t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],n=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],i=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,n,i))},makeTranslation:function(t,e,n){return this.set(1,0,0,t,0,1,0,e,0,0,1,n,0,0,0,1),this},makeRotationX:function(t){const e=Math.cos(t),n=Math.sin(t);return this.set(1,0,0,0,0,e,-n,0,0,n,e,0,0,0,0,1),this},makeRotationY:function(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,0,n,0,0,1,0,0,-n,0,e,0,0,0,0,1),this},makeRotationZ:function(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,0,n,e,0,0,0,0,1,0,0,0,0,1),this},makeRotationAxis:function(t,e){const n=Math.cos(e),i=Math.sin(e),r=1-n,s=t.x,o=t.y,a=t.z,c=r*s,l=r*o;return this.set(c*s+n,c*o-i*a,c*a+i*o,0,c*o+i*a,l*o+n,l*a-i*s,0,c*a-i*o,l*a+i*s,r*a*a+n,0,0,0,0,1),this},makeScale:function(t,e,n){return this.set(t,0,0,0,0,e,0,0,0,0,n,0,0,0,0,1),this},makeShear:function(t,e,n){return this.set(1,e,n,0,t,1,n,0,t,e,1,0,0,0,0,1),this},compose:function(t,e,n){const i=this.elements,r=e._x,s=e._y,o=e._z,a=e._w,c=r+r,l=s+s,h=o+o,u=r*c,f=r*l,d=r*h,p=s*l,y=s*h,g=o*h,m=a*c,x=a*l,v=a*h,b=n.x,_=n.y,C=n.z;return i[0]=(1-(p+g))*b,i[1]=(f+v)*b,i[2]=(d-x)*b,i[3]=0,i[4]=(f-v)*_,i[5]=(1-(u+g))*_,i[6]=(y+m)*_,i[7]=0,i[8]=(d+x)*C,i[9]=(y-m)*C,i[10]=(1-(u+p))*C,i[11]=0,i[12]=t.x,i[13]=t.y,i[14]=t.z,i[15]=1,this},decompose:function(t,e,n){const i=this.elements;let r=ks.set(i[0],i[1],i[2]).length(),s=ks.set(i[4],i[5],i[6]).length(),o=ks.set(i[8],i[9],i[10]).length();this.determinant()<0&&(r=-r),t.x=i[12],t.y=i[13],t.z=i[14],hi.copy(this);const c=1/r,l=1/s,h=1/o;return hi.elements[0]*=c,hi.elements[1]*=c,hi.elements[2]*=c,hi.elements[4]*=l,hi.elements[5]*=l,hi.elements[6]*=l,hi.elements[8]*=h,hi.elements[9]*=h,hi.elements[10]*=h,e.setFromRotationMatrix(hi),n.x=r,n.y=s,n.z=o,this},makePerspective:function(t,e,n,i,r,s){s===void 0&&console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.");const o=this.elements,a=2*r/(e-t),c=2*r/(n-i),l=(e+t)/(e-t),h=(n+i)/(n-i),u=-(s+r)/(s-r),f=-2*s*r/(s-r);return o[0]=a,o[4]=0,o[8]=l,o[12]=0,o[1]=0,o[5]=c,o[9]=h,o[13]=0,o[2]=0,o[6]=0,o[10]=u,o[14]=f,o[3]=0,o[7]=0,o[11]=-1,o[15]=0,this},makeOrthographic:function(t,e,n,i,r,s){const o=this.elements,a=1/(e-t),c=1/(n-i),l=1/(s-r),h=(e+t)*a,u=(n+i)*c,f=(s+r)*l;return o[0]=2*a,o[4]=0,o[8]=0,o[12]=-h,o[1]=0,o[5]=2*c,o[9]=0,o[13]=-u,o[2]=0,o[6]=0,o[10]=-2*l,o[14]=-f,o[3]=0,o[7]=0,o[11]=0,o[15]=1,this},equals:function(t){const e=this.elements,n=t.elements;for(let i=0;i<16;i++)if(e[i]!==n[i])return!1;return!0},fromArray:function(t,e){e===void 0&&(e=0);for(let n=0;n<16;n++)this.elements[n]=t[n+e];return this},toArray:function(t,e){t===void 0&&(t=[]),e===void 0&&(e=0);const n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t[e+9]=n[9],t[e+10]=n[10],t[e+11]=n[11],t[e+12]=n[12],t[e+13]=n[13],t[e+14]=n[14],t[e+15]=n[15],t}});const Km=new Ie,Jm=new Gt;function Ur(t=0,e=0,n=0,i=Ur.DefaultOrder){this._x=t,this._y=e,this._z=n,this._order=i}Ur.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"];Ur.DefaultOrder="XYZ";Object.defineProperties(Ur.prototype,{x:{get:function(){return this._x},set:function(t){this._x=t,this._onChangeCallback()}},y:{get:function(){return this._y},set:function(t){this._y=t,this._onChangeCallback()}},z:{get:function(){return this._z},set:function(t){this._z=t,this._onChangeCallback()}},order:{get:function(){return this._order},set:function(t){this._order=t,this._onChangeCallback()}}});Object.assign(Ur.prototype,{isEuler:!0,set:function(t,e,n,i){return this._x=t,this._y=e,this._z=n,this._order=i||this._order,this._onChangeCallback(),this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._order)},copy:function(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this},setFromRotationMatrix:function(t,e,n){const i=ut.clamp,r=t.elements,s=r[0],o=r[4],a=r[8],c=r[1],l=r[5],h=r[9],u=r[2],f=r[6],d=r[10];switch(e=e||this._order,e){case"XYZ":this._y=Math.asin(i(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-h,d),this._z=Math.atan2(-o,s)):(this._x=Math.atan2(f,l),this._z=0);break;case"YXZ":this._x=Math.asin(-i(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(a,d),this._z=Math.atan2(c,l)):(this._y=Math.atan2(-u,s),this._z=0);break;case"ZXY":this._x=Math.asin(i(f,-1,1)),Math.abs(f)<.9999999?(this._y=Math.atan2(-u,d),this._z=Math.atan2(-o,l)):(this._y=0,this._z=Math.atan2(c,s));break;case"ZYX":this._y=Math.asin(-i(u,-1,1)),Math.abs(u)<.9999999?(this._x=Math.atan2(f,d),this._z=Math.atan2(c,s)):(this._x=0,this._z=Math.atan2(-o,l));break;case"YZX":this._z=Math.asin(i(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(-h,l),this._y=Math.atan2(-u,s)):(this._x=0,this._y=Math.atan2(a,d));break;case"XZY":this._z=Math.asin(-i(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(f,l),this._y=Math.atan2(a,s)):(this._x=Math.atan2(-h,d),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,n!==!1&&this._onChangeCallback(),this},setFromQuaternion:function(t,e,n){return Km.makeRotationFromQuaternion(t),this.setFromRotationMatrix(Km,e,n)},setFromVector3:function(t,e){return this.set(t.x,t.y,t.z,e||this._order)},reorder:function(t){return Jm.setFromEuler(this),this.setFromQuaternion(Jm,t)},equals:function(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order},fromArray:function(t){return this._x=t[0],this._y=t[1],this._z=t[2],t[3]!==void 0&&(this._order=t[3]),this._onChangeCallback(),this},toArray:function(t,e){return t===void 0&&(t=[]),e===void 0&&(e=0),t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t},toVector3:function(t){return t?t.set(this._x,this._y,this._z):new T(this._x,this._y,this._z)},_onChange:function(t){return this._onChangeCallback=t,this},_onChangeCallback:function(){}});function em(){this.mask=1}Object.assign(em.prototype,{set:function(t){this.mask=1<1){for(let e=0;e1){for(let n=0;n0){i.children=[];for(let o=0;o0&&(n.geometries=o),a.length>0&&(n.materials=a),c.length>0&&(n.textures=c),l.length>0&&(n.images=l),h.length>0&&(n.shapes=h)}return n.object=i,n;function s(o){const a=[];for(const c in o){const l=o[c];delete l.metadata,a.push(l)}return a}},clone:function(t){return new this.constructor().copy(this,t)},copy:function(t,e){if(e===void 0&&(e=!0),this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.userData=JSON.parse(JSON.stringify(t.userData)),e===!0)for(let n=0;nr&&(r=l),h>s&&(s=h),u>o&&(o=u)}return this.min.set(e,n,i),this.max.set(r,s,o),this},setFromBufferAttribute:function(t){let e=1/0,n=1/0,i=1/0,r=-1/0,s=-1/0,o=-1/0;for(let a=0,c=t.count;ar&&(r=l),h>s&&(s=h),u>o&&(o=u)}return this.min.set(e,n,i),this.max.set(r,s,o),this},setFromPoints:function(t){this.makeEmpty();for(let e=0,n=t.length;ethis.max.x||t.ythis.max.y||t.zthis.max.z)},containsBox:function(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y&&this.min.z<=t.min.z&&t.max.z<=this.max.z},getParameter:function(t,e){return e===void 0&&(console.warn("THREE.Box3: .getParameter() target is now required"),e=new T),e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))},intersectsBox:function(t){return!(t.max.xthis.max.x||t.max.ythis.max.y||t.max.zthis.max.z)},intersectsSphere:function(t){return this.clampPoint(t.center,wa),wa.distanceToSquared(t.center)<=t.radius*t.radius},intersectsPlane:function(t){let e,n;return t.normal.x>0?(e=t.normal.x*this.min.x,n=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,n=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,n+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,n+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,n+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,n+=t.normal.z*this.min.z),e<=-t.constant&&n>=-t.constant},intersectsTriangle:function(t){if(this.isEmpty())return!1;this.getCenter(Sa),ll.subVectors(this.max,Sa),Ns.subVectors(t.a,Sa),zs.subVectors(t.b,Sa),Gs.subVectors(t.c,Sa),Mr.subVectors(zs,Ns),Ar.subVectors(Gs,zs),Qr.subVectors(Ns,Gs);let e=[0,-Mr.z,Mr.y,0,-Ar.z,Ar.y,0,-Qr.z,Qr.y,Mr.z,0,-Mr.x,Ar.z,0,-Ar.x,Qr.z,0,-Qr.x,-Mr.y,Mr.x,0,-Ar.y,Ar.x,0,-Qr.y,Qr.x,0];return!Qu(e,Ns,zs,Gs,ll)||(e=[1,0,0,0,1,0,0,0,1],!Qu(e,Ns,zs,Gs,ll))?!1:(hl.crossVectors(Mr,Ar),e=[hl.x,hl.y,hl.z],Qu(e,Ns,zs,Gs,ll))},clampPoint:function(t,e){return e===void 0&&(console.warn("THREE.Box3: .clampPoint() target is now required"),e=new T),e.copy(t).clamp(this.min,this.max)},distanceToPoint:function(t){return wa.copy(t).clamp(this.min,this.max).sub(t).length()},getBoundingSphere:function(t){return t===void 0&&console.error("THREE.Box3: .getBoundingSphere() target is now required"),this.getCenter(t.center),t.radius=this.getSize(wa).length()*.5,t},intersect:function(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this},union:function(t){return this.min.min(t.min),this.max.max(t.max),this},applyMatrix4:function(t){return this.isEmpty()?this:(Xi[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),Xi[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),Xi[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),Xi[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),Xi[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),Xi[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),Xi[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),Xi[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(Xi),this)},translate:function(t){return this.min.add(t),this.max.add(t),this},equals:function(t){return t.min.equals(this.min)&&t.max.equals(this.max)}});function Qu(t,e,n,i,r){for(let s=0,o=t.length-3;s<=o;s+=3){es.fromArray(t,s);const a=r.x*Math.abs(es.x)+r.y*Math.abs(es.y)+r.z*Math.abs(es.z),c=e.dot(es),l=n.dot(es),h=i.dot(es);if(Math.max(-Math.max(c,l,h),Math.min(c,l,h))>a)return!1}return!0}const G_=new Ut;function br(t,e){this.center=t!==void 0?t:new T,this.radius=e!==void 0?e:-1}Object.assign(br.prototype,{set:function(t,e){return this.center.copy(t),this.radius=e,this},setFromPoints:function(t,e){const n=this.center;e!==void 0?n.copy(e):G_.setFromPoints(t).getCenter(n);let i=0;for(let r=0,s=t.length;rthis.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e},getBoundingBox:function(t){return t===void 0&&(console.warn("THREE.Sphere: .getBoundingBox() target is now required"),t=new Ut),this.isEmpty()?(t.makeEmpty(),t):(t.set(this.center,this.center),t.expandByScalar(this.radius),t)},applyMatrix4:function(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScaleOnAxis(),this},translate:function(t){return this.center.add(t),this},equals:function(t){return t.center.equals(this.center)&&t.radius===this.radius}});const Yi=new T,ed=new T,ul=new T,Cr=new T,td=new T,dl=new T,nd=new T;function Ko(t,e){this.origin=t!==void 0?t:new T,this.direction=e!==void 0?e:new T(0,0,-1)}Object.assign(Ko.prototype,{set:function(t,e){return this.origin.copy(t),this.direction.copy(e),this},clone:function(){return new this.constructor().copy(this)},copy:function(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this},at:function(t,e){return e===void 0&&(console.warn("THREE.Ray: .at() target is now required"),e=new T),e.copy(this.direction).multiplyScalar(t).add(this.origin)},lookAt:function(t){return this.direction.copy(t).sub(this.origin).normalize(),this},recast:function(t){return this.origin.copy(this.at(t,Yi)),this},closestPointToPoint:function(t,e){e===void 0&&(console.warn("THREE.Ray: .closestPointToPoint() target is now required"),e=new T),e.subVectors(t,this.origin);const n=e.dot(this.direction);return n<0?e.copy(this.origin):e.copy(this.direction).multiplyScalar(n).add(this.origin)},distanceToPoint:function(t){return Math.sqrt(this.distanceSqToPoint(t))},distanceSqToPoint:function(t){const e=Yi.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(Yi.copy(this.direction).multiplyScalar(e).add(this.origin),Yi.distanceToSquared(t))},distanceSqToSegment:function(t,e,n,i){ed.copy(t).add(e).multiplyScalar(.5),ul.copy(e).sub(t).normalize(),Cr.copy(this.origin).sub(ed);const r=t.distanceTo(e)*.5,s=-this.direction.dot(ul),o=Cr.dot(this.direction),a=-Cr.dot(ul),c=Cr.lengthSq(),l=Math.abs(1-s*s);let h,u,f,d;if(l>0)if(h=s*a-o,u=s*o-a,d=r*l,h>=0)if(u>=-d)if(u<=d){const p=1/l;h*=p,u*=p,f=h*(h+s*u+2*o)+u*(s*h+u+2*a)+c}else u=r,h=Math.max(0,-(s*u+o)),f=-h*h+u*(u+2*a)+c;else u=-r,h=Math.max(0,-(s*u+o)),f=-h*h+u*(u+2*a)+c;else u<=-d?(h=Math.max(0,-(-s*r+o)),u=h>0?-r:Math.min(Math.max(-r,-a),r),f=-h*h+u*(u+2*a)+c):u<=d?(h=0,u=Math.min(Math.max(-r,-a),r),f=u*(u+2*a)+c):(h=Math.max(0,-(s*r+o)),u=h>0?r:Math.min(Math.max(-r,-a),r),f=-h*h+u*(u+2*a)+c);else u=s>0?-r:r,h=Math.max(0,-(s*u+o)),f=-h*h+u*(u+2*a)+c;return n&&n.copy(this.direction).multiplyScalar(h).add(this.origin),i&&i.copy(ul).multiplyScalar(u).add(ed),f},intersectSphere:function(t,e){Yi.subVectors(t.center,this.origin);const n=Yi.dot(this.direction),i=Yi.dot(Yi)-n*n,r=t.radius*t.radius;if(i>r)return null;const s=Math.sqrt(r-i),o=n-s,a=n+s;return o<0&&a<0?null:o<0?this.at(a,e):this.at(o,e)},intersectsSphere:function(t){return this.distanceSqToPoint(t.center)<=t.radius*t.radius},distanceToPlane:function(t){const e=t.normal.dot(this.direction);if(e===0)return t.distanceToPoint(this.origin)===0?0:null;const n=-(this.origin.dot(t.normal)+t.constant)/e;return n>=0?n:null},intersectPlane:function(t,e){const n=this.distanceToPlane(t);return n===null?null:this.at(n,e)},intersectsPlane:function(t){const e=t.distanceToPoint(this.origin);return e===0||t.normal.dot(this.direction)*e<0},intersectBox:function(t,e){let n,i,r,s,o,a;const c=1/this.direction.x,l=1/this.direction.y,h=1/this.direction.z,u=this.origin;return c>=0?(n=(t.min.x-u.x)*c,i=(t.max.x-u.x)*c):(n=(t.max.x-u.x)*c,i=(t.min.x-u.x)*c),l>=0?(r=(t.min.y-u.y)*l,s=(t.max.y-u.y)*l):(r=(t.max.y-u.y)*l,s=(t.min.y-u.y)*l),n>s||r>i||((r>n||n!==n)&&(n=r),(s=0?(o=(t.min.z-u.z)*h,a=(t.max.z-u.z)*h):(o=(t.max.z-u.z)*h,a=(t.min.z-u.z)*h),n>a||o>i)||((o>n||n!==n)&&(n=o),(a=0?n:i,e)},intersectsBox:function(t){return this.intersectBox(t,Yi)!==null},intersectTriangle:function(t,e,n,i,r){td.subVectors(e,t),dl.subVectors(n,t),nd.crossVectors(td,dl);let s=this.direction.dot(nd),o;if(s>0){if(i)return null;o=1}else if(s<0)o=-1,s=-s;else return null;Cr.subVectors(this.origin,t);const a=o*this.direction.dot(dl.crossVectors(Cr,dl));if(a<0)return null;const c=o*this.direction.dot(td.cross(Cr));if(c<0||a+c>s)return null;const l=-o*Cr.dot(nd);return l<0?null:this.at(l/s,r)},applyMatrix4:function(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this},equals:function(t){return t.origin.equals(this.origin)&&t.direction.equals(this.direction)}});const id=new T,U_=new T,V_=new An;function Ri(t,e){this.normal=t!==void 0?t:new T(1,0,0),this.constant=e!==void 0?e:0}Object.assign(Ri.prototype,{isPlane:!0,set:function(t,e){return this.normal.copy(t),this.constant=e,this},setComponents:function(t,e,n,i){return this.normal.set(t,e,n),this.constant=i,this},setFromNormalAndCoplanarPoint:function(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this},setFromCoplanarPoints:function(t,e,n){const i=id.subVectors(n,e).cross(U_.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(i,t),this},clone:function(){return new this.constructor().copy(this)},copy:function(t){return this.normal.copy(t.normal),this.constant=t.constant,this},normalize:function(){const t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this},negate:function(){return this.constant*=-1,this.normal.negate(),this},distanceToPoint:function(t){return this.normal.dot(t)+this.constant},distanceToSphere:function(t){return this.distanceToPoint(t.center)-t.radius},projectPoint:function(t,e){return e===void 0&&(console.warn("THREE.Plane: .projectPoint() target is now required"),e=new T),e.copy(this.normal).multiplyScalar(-this.distanceToPoint(t)).add(t)},intersectLine:function(t,e){e===void 0&&(console.warn("THREE.Plane: .intersectLine() target is now required"),e=new T);const n=t.delta(id),i=this.normal.dot(n);if(i===0)return this.distanceToPoint(t.start)===0?e.copy(t.start):void 0;const r=-(t.start.dot(this.normal)+this.constant)/i;if(!(r<0||r>1))return e.copy(n).multiplyScalar(r).add(t.start)},intersectsLine:function(t){const e=this.distanceToPoint(t.start),n=this.distanceToPoint(t.end);return e<0&&n>0||n<0&&e>0},intersectsBox:function(t){return t.intersectsPlane(this)},intersectsSphere:function(t){return t.intersectsPlane(this)},coplanarPoint:function(t){return t===void 0&&(console.warn("THREE.Plane: .coplanarPoint() target is now required"),t=new T),t.copy(this.normal).multiplyScalar(-this.constant)},applyMatrix4:function(t,e){const n=e||V_.getNormalMatrix(t),i=this.coplanarPoint(id).applyMatrix4(t),r=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(r),this},translate:function(t){return this.constant-=t.dot(this.normal),this},equals:function(t){return t.normal.equals(this.normal)&&t.constant===this.constant}});const mi=new T,tr=new T,rd=new T,Zi=new T,Us=new T,Vs=new T,ig=new T,sd=new T,od=new T,ad=new T;function Mn(t,e,n){this.a=t!==void 0?t:new T,this.b=e!==void 0?e:new T,this.c=n!==void 0?n:new T}Object.assign(Mn,{getNormal:function(t,e,n,i){i===void 0&&(console.warn("THREE.Triangle: .getNormal() target is now required"),i=new T),i.subVectors(n,e),mi.subVectors(t,e),i.cross(mi);const r=i.lengthSq();return r>0?i.multiplyScalar(1/Math.sqrt(r)):i.set(0,0,0)},getBarycoord:function(t,e,n,i,r){mi.subVectors(i,e),tr.subVectors(n,e),rd.subVectors(t,e);const s=mi.dot(mi),o=mi.dot(tr),a=mi.dot(rd),c=tr.dot(tr),l=tr.dot(rd),h=s*c-o*o;if(r===void 0&&(console.warn("THREE.Triangle: .getBarycoord() target is now required"),r=new T),h===0)return r.set(-2,-1,-1);const u=1/h,f=(c*a-o*l)*u,d=(s*l-o*a)*u;return r.set(1-f-d,d,f)},containsPoint:function(t,e,n,i){return Mn.getBarycoord(t,e,n,i,Zi),Zi.x>=0&&Zi.y>=0&&Zi.x+Zi.y<=1},getUV:function(t,e,n,i,r,s,o,a){return this.getBarycoord(t,e,n,i,Zi),a.set(0,0),a.addScaledVector(r,Zi.x),a.addScaledVector(s,Zi.y),a.addScaledVector(o,Zi.z),a},isFrontFacing:function(t,e,n,i){return mi.subVectors(n,e),tr.subVectors(t,e),mi.cross(tr).dot(i)<0}});Object.assign(Mn.prototype,{set:function(t,e,n){return this.a.copy(t),this.b.copy(e),this.c.copy(n),this},setFromPointsAndIndices:function(t,e,n,i){return this.a.copy(t[e]),this.b.copy(t[n]),this.c.copy(t[i]),this},clone:function(){return new this.constructor().copy(this)},copy:function(t){return this.a.copy(t.a),this.b.copy(t.b),this.c.copy(t.c),this},getArea:function(){return mi.subVectors(this.c,this.b),tr.subVectors(this.a,this.b),mi.cross(tr).length()*.5},getMidpoint:function(t){return t===void 0&&(console.warn("THREE.Triangle: .getMidpoint() target is now required"),t=new T),t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},getNormal:function(t){return Mn.getNormal(this.a,this.b,this.c,t)},getPlane:function(t){return t===void 0&&(console.warn("THREE.Triangle: .getPlane() target is now required"),t=new Ri),t.setFromCoplanarPoints(this.a,this.b,this.c)},getBarycoord:function(t,e){return Mn.getBarycoord(t,this.a,this.b,this.c,e)},getUV:function(t,e,n,i,r){return Mn.getUV(t,this.a,this.b,this.c,e,n,i,r)},containsPoint:function(t){return Mn.containsPoint(t,this.a,this.b,this.c)},isFrontFacing:function(t){return Mn.isFrontFacing(this.a,this.b,this.c,t)},intersectsBox:function(t){return t.intersectsTriangle(this)},closestPointToPoint:function(t,e){e===void 0&&(console.warn("THREE.Triangle: .closestPointToPoint() target is now required"),e=new T);const n=this.a,i=this.b,r=this.c;let s,o;Us.subVectors(i,n),Vs.subVectors(r,n),sd.subVectors(t,n);const a=Us.dot(sd),c=Vs.dot(sd);if(a<=0&&c<=0)return e.copy(n);od.subVectors(t,i);const l=Us.dot(od),h=Vs.dot(od);if(l>=0&&h<=l)return e.copy(i);const u=a*h-l*c;if(u<=0&&a>=0&&l<=0)return s=a/(a-l),e.copy(n).addScaledVector(Us,s);ad.subVectors(t,r);const f=Us.dot(ad),d=Vs.dot(ad);if(d>=0&&f<=d)return e.copy(r);const p=f*c-a*d;if(p<=0&&c>=0&&d<=0)return o=c/(c-d),e.copy(n).addScaledVector(Vs,o);const y=l*d-f*h;if(y<=0&&h-l>=0&&f-d>=0)return ig.subVectors(r,i),o=(h-l)/(h-l+(f-d)),e.copy(i).addScaledVector(ig,o);const g=1/(y+p+u);return s=p*g,o=u*g,e.copy(n).addScaledVector(Us,s).addScaledVector(Vs,o)},equals:function(t){return t.a.equals(this.a)&&t.b.equals(this.b)&&t.c.equals(this.c)}});const Ny={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},ui={h:0,s:0,l:0},fl={h:0,s:0,l:0};function ke(t,e,n){return e===void 0&&n===void 0?this.set(t):this.setRGB(t,e,n)}function cd(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+(e-t)*6*n:n<1/2?e:n<2/3?t+(e-t)*6*(2/3-n):t}function ld(t){return t<.04045?t*.0773993808:Math.pow(t*.9478672986+.0521327014,2.4)}function hd(t){return t<.0031308?t*12.92:1.055*Math.pow(t,.41666)-.055}Object.assign(ke.prototype,{isColor:!0,r:1,g:1,b:1,set:function(t){return t&&t.isColor?this.copy(t):typeof t=="number"?this.setHex(t):typeof t=="string"&&this.setStyle(t),this},setScalar:function(t){return this.r=t,this.g=t,this.b=t,this},setHex:function(t){return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(t&255)/255,this},setRGB:function(t,e,n){return this.r=t,this.g=e,this.b=n,this},setHSL:function(t,e,n){if(t=ut.euclideanModulo(t,1),e=ut.clamp(e,0,1),n=ut.clamp(n,0,1),e===0)this.r=this.g=this.b=n;else{const i=n<=.5?n*(1+e):n+e-n*e,r=2*n-i;this.r=cd(r,i,t+1/3),this.g=cd(r,i,t),this.b=cd(r,i,t-1/3)}return this},setStyle:function(t){function e(i){i!==void 0&&parseFloat(i)<1&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}let n;if(n=/^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec(t)){let i;const r=n[1],s=n[2];switch(r){case"rgb":case"rgba":if(i=/^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\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,e(i[5]),this;if(i=/^(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\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,e(i[5]),this;break;case"hsl":case"hsla":if(i=/^([0-9]*\.?[0-9]+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(s)){const o=parseFloat(i[1])/360,a=parseInt(i[2],10)/100,c=parseInt(i[3],10)/100;return e(i[5]),this.setHSL(o,a,c)}break}}else if(n=/^\#([A-Fa-f0-9]+)$/.exec(t)){const i=n[1],r=i.length;if(r===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,this;if(r===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,this}return t&&t.length>0?this.setColorName(t):this},setColorName:function(t){const e=Ny[t];return e!==void 0?this.setHex(e):console.warn("THREE.Color: Unknown color "+t),this},clone:function(){return new this.constructor(this.r,this.g,this.b)},copy:function(t){return this.r=t.r,this.g=t.g,this.b=t.b,this},copyGammaToLinear:function(t,e){return e===void 0&&(e=2),this.r=Math.pow(t.r,e),this.g=Math.pow(t.g,e),this.b=Math.pow(t.b,e),this},copyLinearToGamma:function(t,e){e===void 0&&(e=2);const n=e>0?1/e:1;return this.r=Math.pow(t.r,n),this.g=Math.pow(t.g,n),this.b=Math.pow(t.b,n),this},convertGammaToLinear:function(t){return this.copyGammaToLinear(this,t),this},convertLinearToGamma:function(t){return this.copyLinearToGamma(this,t),this},copySRGBToLinear:function(t){return this.r=ld(t.r),this.g=ld(t.g),this.b=ld(t.b),this},copyLinearToSRGB:function(t){return this.r=hd(t.r),this.g=hd(t.g),this.b=hd(t.b),this},convertSRGBToLinear:function(){return this.copySRGBToLinear(this),this},convertLinearToSRGB:function(){return this.copyLinearToSRGB(this),this},getHex:function(){return this.r*255<<16^this.g*255<<8^this.b*255<<0},getHexString:function(){return("000000"+this.getHex().toString(16)).slice(-6)},getHSL:function(t){t===void 0&&(console.warn("THREE.Color: .getHSL() target is now required"),t={h:0,s:0,l:0});const e=this.r,n=this.g,i=this.b,r=Math.max(e,n,i),s=Math.min(e,n,i);let o,a;const c=(s+r)/2;if(s===r)o=0,a=0;else{const l=r-s;switch(a=c<=.5?l/(r+s):l/(2-r-s),r){case e:o=(n-i)/l+(n0&&(n.alphaTest=this.alphaTest),this.premultipliedAlpha===!0&&(n.premultipliedAlpha=this.premultipliedAlpha),this.wireframe===!0&&(n.wireframe=this.wireframe),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(n.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(n.wireframeLinejoin=this.wireframeLinejoin),this.morphTargets===!0&&(n.morphTargets=!0),this.morphNormals===!0&&(n.morphNormals=!0),this.skinning===!0&&(n.skinning=!0),this.visible===!1&&(n.visible=!1),this.toneMapped===!1&&(n.toneMapped=!1),JSON.stringify(this.userData)!=="{}"&&(n.userData=this.userData);function i(r){const s=[];for(const o in r){const a=r[o];delete a.metadata,s.push(a)}return s}if(e){const r=i(t.textures),s=i(t.images);r.length>0&&(n.textures=r),s.length>0&&(n.images=s)}return n},clone:function(){return new this.constructor().copy(this)},copy:function(t){this.name=t.name,this.fog=t.fog,this.blending=t.blending,this.side=t.side,this.flatShading=t.flatShading,this.vertexColors=t.vertexColors,this.opacity=t.opacity,this.transparent=t.transparent,this.blendSrc=t.blendSrc,this.blendDst=t.blendDst,this.blendEquation=t.blendEquation,this.blendSrcAlpha=t.blendSrcAlpha,this.blendDstAlpha=t.blendDstAlpha,this.blendEquationAlpha=t.blendEquationAlpha,this.depthFunc=t.depthFunc,this.depthTest=t.depthTest,this.depthWrite=t.depthWrite,this.stencilWriteMask=t.stencilWriteMask,this.stencilFunc=t.stencilFunc,this.stencilRef=t.stencilRef,this.stencilFuncMask=t.stencilFuncMask,this.stencilFail=t.stencilFail,this.stencilZFail=t.stencilZFail,this.stencilZPass=t.stencilZPass,this.stencilWrite=t.stencilWrite;const e=t.clippingPlanes;let n=null;if(e!==null){const i=e.length;n=new Array(i);for(let r=0;r!==i;++r)n[r]=e[r].clone()}return this.clippingPlanes=n,this.clipIntersection=t.clipIntersection,this.clipShadows=t.clipShadows,this.shadowSide=t.shadowSide,this.colorWrite=t.colorWrite,this.precision=t.precision,this.polygonOffset=t.polygonOffset,this.polygonOffsetFactor=t.polygonOffsetFactor,this.polygonOffsetUnits=t.polygonOffsetUnits,this.dithering=t.dithering,this.alphaTest=t.alphaTest,this.premultipliedAlpha=t.premultipliedAlpha,this.visible=t.visible,this.toneMapped=t.toneMapped,this.userData=JSON.parse(JSON.stringify(t.userData)),this},dispose:function(){this.dispatchEvent({type:"dispose"})}});Object.defineProperty(at.prototype,"needsUpdate",{set:function(t){t===!0&&this.version++}});function _i(t){at.call(this),this.type="MeshBasicMaterial",this.color=new ke(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=Au,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.setValues(t)}_i.prototype=Object.create(at.prototype);_i.prototype.constructor=_i;_i.prototype.isMeshBasicMaterial=!0;_i.prototype.copy=function(t){return at.prototype.copy.call(this,t),this.color.copy(t.color),this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.skinning=t.skinning,this.morphTargets=t.morphTargets,this};const jt=new T,pl=new Te;function Qe(t,e,n){if(Array.isArray(t))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.name="",this.array=t,this.itemSize=e,this.count=t!==void 0?t.length/e:0,this.normalized=n===!0,this.usage=Tu,this.updateRange={offset:0,count:-1},this.version=0}Object.defineProperty(Qe.prototype,"needsUpdate",{set:function(t){t===!0&&this.version++}});Object.assign(Qe.prototype,{isBufferAttribute:!0,onUploadCallback:function(){},setUsage:function(t){return this.usage=t,this},copy:function(t){return this.name=t.name,this.array=new t.array.constructor(t.array),this.itemSize=t.itemSize,this.count=t.count,this.normalized=t.normalized,this.usage=t.usage,this},copyAt:function(t,e,n){t*=this.itemSize,n*=e.itemSize;for(let i=0,r=this.itemSize;i0,s=i[1]&&i[1].length>0,o=t.morphTargets,a=o.length;let c;if(a>0){c=[];for(let g=0;g0){u=[];for(let g=0;g0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let g=0;ge&&(e=t[n]);return e}let $_=1;const Ti=new Ie,ud=new $e,Hs=new T,$n=new Ut,Ma=new Ut,vn=new T;function We(){Object.defineProperty(this,"id",{value:$_+=2}),this.uuid=ut.generateUUID(),this.name="",this.type="BufferGeometry",this.index=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}We.prototype=Object.assign(Object.create(xr.prototype),{constructor:We,isBufferGeometry:!0,getIndex:function(){return this.index},setIndex:function(t){Array.isArray(t)?this.index=new(Gy(t)>65535?cc:ac)(t,1):this.index=t},getAttribute:function(t){return this.attributes[t]},setAttribute:function(t,e){return this.attributes[t]=e,this},deleteAttribute:function(t){return delete this.attributes[t],this},addGroup:function(t,e,n){this.groups.push({start:t,count:e,materialIndex:n!==void 0?n:0})},clearGroups:function(){this.groups=[]},setDrawRange:function(t,e){this.drawRange.start=t,this.drawRange.count=e},applyMatrix4:function(t){const e=this.attributes.position;e!==void 0&&(e.applyMatrix4(t),e.needsUpdate=!0);const n=this.attributes.normal;if(n!==void 0){const r=new An().getNormalMatrix(t);n.applyNormalMatrix(r),n.needsUpdate=!0}const i=this.attributes.tangent;return i!==void 0&&(i.transformDirection(t),i.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this},rotateX:function(t){return Ti.makeRotationX(t),this.applyMatrix4(Ti),this},rotateY:function(t){return Ti.makeRotationY(t),this.applyMatrix4(Ti),this},rotateZ:function(t){return Ti.makeRotationZ(t),this.applyMatrix4(Ti),this},translate:function(t,e,n){return Ti.makeTranslation(t,e,n),this.applyMatrix4(Ti),this},scale:function(t,e,n){return Ti.makeScale(t,e,n),this.applyMatrix4(Ti),this},lookAt:function(t){return ud.lookAt(t),ud.updateMatrix(),this.applyMatrix4(ud.matrix),this},center:function(){return this.computeBoundingBox(),this.boundingBox.getCenter(Hs).negate(),this.translate(Hs.x,Hs.y,Hs.z),this},setFromObject:function(t){const e=t.geometry;if(t.isPoints||t.isLine){const n=new qe(e.vertices.length*3,3),i=new qe(e.colors.length*3,3);if(this.setAttribute("position",n.copyVector3sArray(e.vertices)),this.setAttribute("color",i.copyColorsArray(e.colors)),e.lineDistances&&e.lineDistances.length===e.vertices.length){const r=new qe(e.lineDistances.length,1);this.setAttribute("lineDistance",r.copyArray(e.lineDistances))}e.boundingSphere!==null&&(this.boundingSphere=e.boundingSphere.clone()),e.boundingBox!==null&&(this.boundingBox=e.boundingBox.clone())}else t.isMesh&&e&&e.isGeometry&&this.fromGeometry(e);return this},setFromPoints:function(t){const e=[];for(let n=0,i=t.length;n0){const n=new Float32Array(t.normals.length*3);this.setAttribute("normal",new Qe(n,3).copyVector3sArray(t.normals))}if(t.colors.length>0){const n=new Float32Array(t.colors.length*3);this.setAttribute("color",new Qe(n,3).copyColorsArray(t.colors))}if(t.uvs.length>0){const n=new Float32Array(t.uvs.length*2);this.setAttribute("uv",new Qe(n,2).copyVector2sArray(t.uvs))}if(t.uvs2.length>0){const n=new Float32Array(t.uvs2.length*2);this.setAttribute("uv2",new Qe(n,2).copyVector2sArray(t.uvs2))}this.groups=t.groups;for(const n in t.morphTargets){const i=[],r=t.morphTargets[n];for(let s=0,o=r.length;s0){const n=new qe(t.skinIndices.length*4,4);this.setAttribute("skinIndex",n.copyVector4sArray(t.skinIndices))}if(t.skinWeights.length>0){const n=new qe(t.skinWeights.length*4,4);this.setAttribute("skinWeight",n.copyVector4sArray(t.skinWeights))}return t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),this},computeBoundingBox:function(){this.boundingBox===null&&(this.boundingBox=new Ut);const t=this.attributes.position,e=this.morphAttributes.position;if(t!==void 0){if(this.boundingBox.setFromBufferAttribute(t),e)for(let n=0,i=e.length;n0&&(t.userData=this.userData),this.parameters!==void 0){const a=this.parameters;for(const c in a)a[c]!==void 0&&(t[c]=a[c]);return t}t.data={attributes:{}};const e=this.index;e!==null&&(t.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});const n=this.attributes;for(const a in n){const c=n[a],l=c.toJSON(t.data);c.name!==""&&(l.name=c.name),t.data.attributes[a]=l}const i={};let r=!1;for(const a in this.morphAttributes){const c=this.morphAttributes[a],l=[];for(let h=0,u=c.length;h0&&(i[a]=l,r=!0)}r&&(t.data.morphAttributes=i,t.data.morphTargetsRelative=this.morphTargetsRelative);const s=this.groups;s.length>0&&(t.data.groups=JSON.parse(JSON.stringify(s)));const o=this.boundingSphere;return o!==null&&(t.data.boundingSphere={center:o.center.toArray(),radius:o.radius}),t},clone:function(){return new We().copy(this)},copy:function(t){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const e={};this.name=t.name;const n=t.index;n!==null&&this.setIndex(n.clone(e));const i=t.attributes;for(const c in i){const l=i[c];this.setAttribute(c,l.clone(e))}const r=t.morphAttributes;for(const c in r){const l=[],h=r[c];for(let u=0,f=h.length;u0){const i=e[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,s=i.length;r0&&console.error("THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}},raycast:function(t,e){const n=this.geometry,i=this.material,r=this.matrixWorld;if(i===void 0||(n.boundingSphere===null&&n.computeBoundingSphere(),dd.copy(n.boundingSphere),dd.applyMatrix4(r),t.ray.intersectsSphere(dd)===!1)||(rg.getInverse(r),ts.copy(t.ray).applyMatrix4(rg),n.boundingBox!==null&&ts.intersectsBox(n.boundingBox)===!1))return;let s;if(n.isBufferGeometry){const o=n.index,a=n.attributes.position,c=n.morphAttributes.position,l=n.morphTargetsRelative,h=n.attributes.uv,u=n.attributes.uv2,f=n.groups,d=n.drawRange;if(o!==null)if(Array.isArray(i))for(let p=0,y=f.length;p0&&(l=h);for(let u=0,f=c.length;un.far?null:{distance:l,point:xl.clone(),object:t}}function bl(t,e,n,i,r,s,o,a,c,l,h,u){Tr.fromBufferAttribute(r,l),Pr.fromBufferAttribute(r,h),Er.fromBufferAttribute(r,u);const f=t.morphTargetInfluences;if(e.morphTargets&&s&&f){ml.set(0,0,0),gl.set(0,0,0),yl.set(0,0,0);for(let p=0,y=s.length;p0)for(let u=0;u0&&(this.normalsNeedUpdate=!0)},computeFlatVertexNormals:function(){this.computeFaceNormals();for(let t=0,e=this.faces.length;t0&&(this.normalsNeedUpdate=!0)},computeMorphNormals:function(){for(let e=0,n=this.faces.length;e=0;a--){const c=s[a];this.faces.splice(c,1);for(let l=0,h=this.faceVertexUvs.length;l0,v=p.vertexNormals.length>0,b=p.color.r!==1||p.color.g!==1||p.color.b!==1,_=p.vertexColors.length>0;let C=0;if(C=l(C,0,0),C=l(C,1,y),C=l(C,2,g),C=l(C,3,m),C=l(C,4,x),C=l(C,5,v),C=l(C,6,b),C=l(C,7,_),n.push(C),n.push(p.a,p.b,p.c),n.push(p.materialIndex),m){const w=this.faceVertexUvs[0][d];n.push(f(w[0]),f(w[1]),f(w[2]))}if(x&&n.push(h(p.normal)),v){const w=p.vertexNormals;n.push(h(w[0]),h(w[1]),h(w[2]))}if(b&&n.push(u(p.color)),_){const w=p.vertexColors;n.push(u(w[0]),u(w[1]),u(w[2]))}}function l(d,p,y){return y?d|1<0&&(t.data.colors=s),a.length>0&&(t.data.uvs=[a]),t.data.faces=n,t},clone:function(){return new rt().copy(this)},copy:function(t){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=t.name;const e=t.vertices;for(let u=0,f=e.length;u0?1:-1,h.push(te.x,te.y,te.z),u.push(Z/w),u.push(1-ee/S),Y+=1}}for(let ee=0;ee0?1:+t});"name"in Function.prototype||Object.defineProperty(Function.prototype,"name",{get:function(){return this.toString().match(/^\s*function\s*([^\(\s]*)/)[1]}});Object.assign===void 0&&(Object.assign=function(t){if(t==null)throw new TypeError("Cannot convert undefined or null to object");const e=Object(t);for(let n=1;n>8&255]+Sn[t>>16&255]+Sn[t>>24&255]+"-"+Sn[e&255]+Sn[e>>8&255]+"-"+Sn[e>>16&15|64]+Sn[e>>24&255]+"-"+Sn[n&63|128]+Sn[n>>8&255]+"-"+Sn[n>>16&255]+Sn[n>>24&255]+Sn[i&255]+Sn[i>>8&255]+Sn[i>>16&255]+Sn[i>>24&255]).toUpperCase()},clamp:function(t,e,n){return Math.max(e,Math.min(n,t))},euclideanModulo:function(t,e){return(t%e+e)%e},mapLinear:function(t,e,n,i,r){return i+(t-e)*(r-i)/(n-e)},lerp:function(t,e,n){return(1-n)*t+n*e},smoothstep:function(t,e,n){return t<=e?0:t>=n?1:(t=(t-e)/(n-e),t*t*(3-2*t))},smootherstep:function(t,e,n){return t<=e?0:t>=n?1:(t=(t-e)/(n-e),t*t*t*(t*(t*6-15)+10))},randInt:function(t,e){return t+Math.floor(Math.random()*(e-t+1))},randFloat:function(t,e){return t+Math.random()*(e-t)},randFloatSpread:function(t){return t*(.5-Math.random())},degToRad:function(t){return t*ut.DEG2RAD},radToDeg:function(t){return t*ut.RAD2DEG},isPowerOfTwo:function(t){return(t&t-1)===0&&t!==0},ceilPowerOfTwo:function(t){return Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))},floorPowerOfTwo:function(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))},setQuaternionFromProperEuler:function(t,e,n,i,r){const s=Math.cos,o=Math.sin,a=s(n/2),c=o(n/2),l=s((e+i)/2),h=o((e+i)/2),u=s((e-i)/2),f=o((e-i)/2),d=s((i-e)/2),p=o((i-e)/2);switch(r){case"XYX":t.set(a*h,c*u,c*f,a*l);break;case"YZY":t.set(c*f,a*h,c*u,a*l);break;case"ZXZ":t.set(c*u,c*f,a*h,a*l);break;case"XZX":t.set(a*h,c*p,c*d,a*l);break;case"YXY":t.set(c*d,a*h,c*p,a*l);break;case"ZYZ":t.set(c*p,c*d,a*h,a*l);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}}};function Te(t=0,e=0){this.x=t,this.y=e}Object.defineProperties(Te.prototype,{width:{get:function(){return this.x},set:function(t){this.x=t}},height:{get:function(){return this.y},set:function(t){this.y=t}}});Object.assign(Te.prototype,{isVector2:!0,set:function(t,e){return this.x=t,this.y=e,this},setScalar:function(t){return this.x=t,this.y=t,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setComponent:function(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this},getComponent:function(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}},clone:function(){return new this.constructor(this.x,this.y)},copy:function(t){return this.x=t.x,this.y=t.y,this},add:function(t,e){return e!==void 0?(console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this)},addScalar:function(t){return this.x+=t,this.y+=t,this},addVectors:function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this},addScaledVector:function(t,e){return this.x+=t.x*e,this.y+=t.y*e,this},sub:function(t,e){return e!==void 0?(console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this)},subScalar:function(t){return this.x-=t,this.y-=t,this},subVectors:function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this},multiply:function(t){return this.x*=t.x,this.y*=t.y,this},multiplyScalar:function(t){return this.x*=t,this.y*=t,this},divide:function(t){return this.x/=t.x,this.y/=t.y,this},divideScalar:function(t){return this.multiplyScalar(1/t)},applyMatrix3:function(t){const e=this.x,n=this.y,i=t.elements;return this.x=i[0]*e+i[3]*n+i[6],this.y=i[1]*e+i[4]*n+i[7],this},min:function(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this},max:function(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this},clamp:function(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this},clampScalar:function(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this},clampLength:function(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},roundToZero:function(){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},negate:function(){return this.x=-this.x,this.y=-this.y,this},dot:function(t){return this.x*t.x+this.y*t.y},cross:function(t){return this.x*t.y-this.y*t.x},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)},normalize:function(){return this.divideScalar(this.length()||1)},angle:function(){return Math.atan2(-this.y,-this.x)+Math.PI},distanceTo:function(t){return Math.sqrt(this.distanceToSquared(t))},distanceToSquared:function(t){const e=this.x-t.x,n=this.y-t.y;return e*e+n*n},manhattanDistanceTo:function(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)},setLength:function(t){return this.normalize().multiplyScalar(t)},lerp:function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this},lerpVectors:function(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this},equals:function(t){return t.x===this.x&&t.y===this.y},fromArray:function(t,e){return e===void 0&&(e=0),this.x=t[e],this.y=t[e+1],this},toArray:function(t,e){return t===void 0&&(t=[]),e===void 0&&(e=0),t[e]=this.x,t[e+1]=this.y,t},fromBufferAttribute:function(t,e,n){return n!==void 0&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute()."),this.x=t.getX(e),this.y=t.getY(e),this},rotateAround:function(t,e){const n=Math.cos(e),i=Math.sin(e),r=this.x-t.x,s=this.y-t.y;return this.x=r*n-s*i+t.x,this.y=r*i+s*n+t.y,this},random:function(){return this.x=Math.random(),this.y=Math.random(),this}});function An(){this.elements=[1,0,0,0,1,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}Object.assign(An.prototype,{isMatrix3:!0,set:function(t,e,n,i,r,s,o,a,c){const l=this.elements;return l[0]=t,l[1]=i,l[2]=o,l[3]=e,l[4]=r,l[5]=a,l[6]=n,l[7]=s,l[8]=c,this},identity:function(){return this.set(1,0,0,0,1,0,0,0,1),this},clone:function(){return new this.constructor().fromArray(this.elements)},copy:function(t){const e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],this},extractBasis:function(t,e,n){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this},setFromMatrix4:function(t){const e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this},multiply:function(t){return this.multiplyMatrices(this,t)},premultiply:function(t){return this.multiplyMatrices(t,this)},multiplyMatrices:function(t,e){const n=t.elements,i=e.elements,r=this.elements,s=n[0],o=n[3],a=n[6],c=n[1],l=n[4],h=n[7],u=n[2],f=n[5],d=n[8],p=i[0],y=i[3],g=i[6],m=i[1],x=i[4],v=i[7],b=i[2],_=i[5],C=i[8];return r[0]=s*p+o*m+a*b,r[3]=s*y+o*x+a*_,r[6]=s*g+o*v+a*C,r[1]=c*p+l*m+h*b,r[4]=c*y+l*x+h*_,r[7]=c*g+l*v+h*C,r[2]=u*p+f*m+d*b,r[5]=u*y+f*x+d*_,r[8]=u*g+f*v+d*C,this},multiplyScalar:function(t){const e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this},determinant:function(){const t=this.elements,e=t[0],n=t[1],i=t[2],r=t[3],s=t[4],o=t[5],a=t[6],c=t[7],l=t[8];return e*s*l-e*o*c-n*r*l+n*o*a+i*r*c-i*s*a},getInverse:function(t,e){e!==void 0&&console.warn("THREE.Matrix3: .getInverse() can no longer be configured to throw on degenerate.");const n=t.elements,i=this.elements,r=n[0],s=n[1],o=n[2],a=n[3],c=n[4],l=n[5],h=n[6],u=n[7],f=n[8],d=f*c-l*u,p=l*h-f*a,y=u*a-c*h,g=r*d+s*p+o*y;if(g===0)return this.set(0,0,0,0,0,0,0,0,0);const m=1/g;return i[0]=d*m,i[1]=(o*u-f*s)*m,i[2]=(l*s-o*c)*m,i[3]=p*m,i[4]=(f*r-o*h)*m,i[5]=(o*a-l*r)*m,i[6]=y*m,i[7]=(s*h-u*r)*m,i[8]=(c*r-s*a)*m,this},transpose:function(){let t;const e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this},getNormalMatrix:function(t){return this.setFromMatrix4(t).getInverse(this).transpose()},transposeIntoArray:function(t){const e=this.elements;return t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],this},setUvTransform:function(t,e,n,i,r,s,o){const a=Math.cos(r),c=Math.sin(r);this.set(n*a,n*c,-n*(a*s+c*o)+s+t,-i*c,i*a,-i*(-c*s+a*o)+o+e,0,0,1)},scale:function(t,e){const n=this.elements;return n[0]*=t,n[3]*=t,n[6]*=t,n[1]*=e,n[4]*=e,n[7]*=e,this},rotate:function(t){const e=Math.cos(t),n=Math.sin(t),i=this.elements,r=i[0],s=i[3],o=i[6],a=i[1],c=i[4],l=i[7];return i[0]=e*r+n*a,i[3]=e*s+n*c,i[6]=e*o+n*l,i[1]=-n*r+e*a,i[4]=-n*s+e*c,i[7]=-n*o+e*l,this},translate:function(t,e){const n=this.elements;return n[0]+=t*n[2],n[3]+=t*n[5],n[6]+=t*n[8],n[1]+=e*n[2],n[4]+=e*n[5],n[7]+=e*n[8],this},equals:function(t){const e=this.elements,n=t.elements;for(let i=0;i<9;i++)if(e[i]!==n[i])return!1;return!0},fromArray:function(t,e){e===void 0&&(e=0);for(let n=0;n<9;n++)this.elements[n]=t[n+e];return this},toArray:function(t,e){t===void 0&&(t=[]),e===void 0&&(e=0);const n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t}});let Os;const ys={getDataURL:function(t){if(/^data:/i.test(t.src)||typeof HTMLCanvasElement>"u")return t.src;let e;if(t instanceof HTMLCanvasElement)e=t;else{Os===void 0&&(Os=document.createElementNS("http://www.w3.org/1999/xhtml","canvas")),Os.width=t.width,Os.height=t.height;const n=Os.getContext("2d");t instanceof ImageData?n.putImageData(t,0,0):n.drawImage(t,0,0,t.width,t.height),e=Os}return e.width>2048||e.height>2048?e.toDataURL("image/jpeg",.6):e.toDataURL("image/png")}};let R_=0;function $t(t,e,n,i,r,s,o,a,c,l){Object.defineProperty(this,"id",{value:R_++}),this.uuid=ut.generateUUID(),this.name="",this.image=t!==void 0?t:$t.DEFAULT_IMAGE,this.mipmaps=[],this.mapping=e!==void 0?e:$t.DEFAULT_MAPPING,this.wrapS=n!==void 0?n:zn,this.wrapT=i!==void 0?i:zn,this.magFilter=r!==void 0?r:gn,this.minFilter=s!==void 0?s:Cu,this.anisotropy=c!==void 0?c:1,this.format=o!==void 0?o:Gn,this.internalFormat=null,this.type=a!==void 0?a:gs,this.offset=new Te(0,0),this.repeat=new Te(1,1),this.center=new Te(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new An,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.encoding=l!==void 0?l:Pn,this.version=0,this.onUpdate=null}$t.DEFAULT_IMAGE=void 0;$t.DEFAULT_MAPPING=jp;$t.prototype=Object.assign(Object.create(xr.prototype),{constructor:$t,isTexture:!0,updateMatrix:function(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)},clone:function(){return new this.constructor().copy(this)},copy:function(t){return this.name=t.name,this.image=t.image,this.mipmaps=t.mipmaps.slice(0),this.mapping=t.mapping,this.wrapS=t.wrapS,this.wrapT=t.wrapT,this.magFilter=t.magFilter,this.minFilter=t.minFilter,this.anisotropy=t.anisotropy,this.format=t.format,this.internalFormat=t.internalFormat,this.type=t.type,this.offset.copy(t.offset),this.repeat.copy(t.repeat),this.center.copy(t.center),this.rotation=t.rotation,this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrix.copy(t.matrix),this.generateMipmaps=t.generateMipmaps,this.premultiplyAlpha=t.premultiplyAlpha,this.flipY=t.flipY,this.unpackAlignment=t.unpackAlignment,this.encoding=t.encoding,this},toJSON:function(t){const e=t===void 0||typeof t=="string";if(!e&&t.textures[this.uuid]!==void 0)return t.textures[this.uuid];const n={metadata:{version:4.5,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,mapping:this.mapping,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,type:this.type,encoding:this.encoding,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};if(this.image!==void 0){const i=this.image;if(i.uuid===void 0&&(i.uuid=ut.generateUUID()),!e&&t.images[i.uuid]===void 0){let r;if(Array.isArray(i)){r=[];for(let s=0,o=i.length;s1)switch(this.wrapS){case Th:t.x=t.x-Math.floor(t.x);break;case zn:t.x=t.x<0?0:1;break;case Ph:Math.abs(Math.floor(t.x)%2)===1?t.x=Math.ceil(t.x)-t.x:t.x=t.x-Math.floor(t.x);break}if(t.y<0||t.y>1)switch(this.wrapT){case Th:t.y=t.y-Math.floor(t.y);break;case zn:t.y=t.y<0?0:1;break;case Ph:Math.abs(Math.floor(t.y)%2)===1?t.y=Math.ceil(t.y)-t.y:t.y=t.y-Math.floor(t.y);break}return this.flipY&&(t.y=1-t.y),t}});Object.defineProperty($t.prototype,"needsUpdate",{set:function(t){t===!0&&this.version++}});function kt(t=0,e=0,n=0,i=1){this.x=t,this.y=e,this.z=n,this.w=i}Object.defineProperties(kt.prototype,{width:{get:function(){return this.z},set:function(t){this.z=t}},height:{get:function(){return this.w},set:function(t){this.w=t}}});Object.assign(kt.prototype,{isVector4:!0,set:function(t,e,n,i){return this.x=t,this.y=e,this.z=n,this.w=i,this},setScalar:function(t){return this.x=t,this.y=t,this.z=t,this.w=t,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setZ:function(t){return this.z=t,this},setW:function(t){return this.w=t,this},setComponent:function(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+t)}return this},getComponent:function(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+t)}},clone:function(){return new this.constructor(this.x,this.y,this.z,this.w)},copy:function(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=t.w!==void 0?t.w:1,this},add:function(t,e){return e!==void 0?(console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this)},addScalar:function(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this},addVectors:function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this.w=t.w+e.w,this},addScaledVector:function(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this.w+=t.w*e,this},sub:function(t,e){return e!==void 0?(console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this)},subScalar:function(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this},subVectors:function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this.w=t.w-e.w,this},multiplyScalar:function(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this},applyMatrix4:function(t){const e=this.x,n=this.y,i=this.z,r=this.w,s=t.elements;return this.x=s[0]*e+s[4]*n+s[8]*i+s[12]*r,this.y=s[1]*e+s[5]*n+s[9]*i+s[13]*r,this.z=s[2]*e+s[6]*n+s[10]*i+s[14]*r,this.w=s[3]*e+s[7]*n+s[11]*i+s[15]*r,this},divideScalar:function(t){return this.multiplyScalar(1/t)},setAxisAngleFromQuaternion:function(t){this.w=2*Math.acos(t.w);const e=Math.sqrt(1-t.w*t.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/e,this.y=t.y/e,this.z=t.z/e),this},setAxisAngleFromRotationMatrix:function(t){let e,n,i,r;const a=t.elements,c=a[0],l=a[4],h=a[8],u=a[1],f=a[5],d=a[9],p=a[2],y=a[6],g=a[10];if(Math.abs(l-u)<.01&&Math.abs(h-p)<.01&&Math.abs(d-y)<.01){if(Math.abs(l+u)<.1&&Math.abs(h+p)<.1&&Math.abs(d+y)<.1&&Math.abs(c+f+g-3)<.1)return this.set(1,0,0,0),this;e=Math.PI;const x=(c+1)/2,v=(f+1)/2,b=(g+1)/2,_=(l+u)/4,C=(h+p)/4,w=(d+y)/4;return x>v&&x>b?x<.01?(n=0,i=.707106781,r=.707106781):(n=Math.sqrt(x),i=_/n,r=C/n):v>b?v<.01?(n=.707106781,i=0,r=.707106781):(i=Math.sqrt(v),n=_/i,r=w/i):b<.01?(n=.707106781,i=.707106781,r=0):(r=Math.sqrt(b),n=C/r,i=w/r),this.set(n,i,r,e),this}let m=Math.sqrt((y-d)*(y-d)+(h-p)*(h-p)+(u-l)*(u-l));return Math.abs(m)<.001&&(m=1),this.x=(y-d)/m,this.y=(h-p)/m,this.z=(u-l)/m,this.w=Math.acos((c+f+g-1)/2),this},min:function(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this.w=Math.min(this.w,t.w),this},max:function(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this.w=Math.max(this.w,t.w),this},clamp:function(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this.w=Math.max(t.w,Math.min(e.w,this.w)),this},clampScalar:function(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this.w=Math.max(t,Math.min(e,this.w)),this},clampLength:function(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))},floor:function(){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:function(){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:function(){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:function(){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:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this},dot:function(t){return this.x*t.x+this.y*t.y+this.z*t.z+this.w*t.w},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(t){return this.normalize().multiplyScalar(t)},lerp:function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this.w+=(t.w-this.w)*e,this},lerpVectors:function(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this.w=t.w+(e.w-t.w)*n,this},equals:function(t){return t.x===this.x&&t.y===this.y&&t.z===this.z&&t.w===this.w},fromArray:function(t,e){return e===void 0&&(e=0),this.x=t[e],this.y=t[e+1],this.z=t[e+2],this.w=t[e+3],this},toArray:function(t,e){return t===void 0&&(t=[]),e===void 0&&(e=0),t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t[e+3]=this.w,t},fromBufferAttribute:function(t,e,n){return n!==void 0&&console.warn("THREE.Vector4: offset has been removed from .fromBufferAttribute()."),this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this.w=t.getW(e),this},random:function(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}});function Rn(t,e,n){this.width=t,this.height=e,this.scissor=new kt(0,0,t,e),this.scissorTest=!1,this.viewport=new kt(0,0,t,e),n=n||{},this.texture=new $t(void 0,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.encoding),this.texture.image={},this.texture.image.width=t,this.texture.image.height=e,this.texture.generateMipmaps=n.generateMipmaps!==void 0?n.generateMipmaps:!1,this.texture.minFilter=n.minFilter!==void 0?n.minFilter:gn,this.depthBuffer=n.depthBuffer!==void 0?n.depthBuffer:!0,this.stencilBuffer=n.stencilBuffer!==void 0?n.stencilBuffer:!0,this.depthTexture=n.depthTexture!==void 0?n.depthTexture:null}Rn.prototype=Object.assign(Object.create(xr.prototype),{constructor:Rn,isWebGLRenderTarget:!0,setSize:function(t,e){(this.width!==t||this.height!==e)&&(this.width=t,this.height=e,this.texture.image.width=t,this.texture.image.height=e,this.dispose()),this.viewport.set(0,0,t,e),this.scissor.set(0,0,t,e)},clone:function(){return new this.constructor().copy(this)},copy:function(t){return this.width=t.width,this.height=t.height,this.viewport.copy(t.viewport),this.texture=t.texture.clone(),this.depthBuffer=t.depthBuffer,this.stencilBuffer=t.stencilBuffer,this.depthTexture=t.depthTexture,this},dispose:function(){this.dispatchEvent({type:"dispose"})}});function Ym(t,e,n){Rn.call(this,t,e,n),this.samples=4}Ym.prototype=Object.assign(Object.create(Rn.prototype),{constructor:Ym,isWebGLMultisampleRenderTarget:!0,copy:function(t){return Rn.prototype.copy.call(this,t),this.samples=t.samples,this}});function Gt(t=0,e=0,n=0,i=1){this._x=t,this._y=e,this._z=n,this._w=i}Object.assign(Gt,{slerp:function(t,e,n,i){return n.copy(t).slerp(e,i)},slerpFlat:function(t,e,n,i,r,s,o){let a=n[i+0],c=n[i+1],l=n[i+2],h=n[i+3];const u=r[s+0],f=r[s+1],d=r[s+2],p=r[s+3];if(h!==p||a!==u||c!==f||l!==d){let y=1-o,g=a*u+c*f+l*d+h*p,m=g>=0?1:-1,x=1-g*g;if(x>Number.EPSILON){const b=Math.sqrt(x),_=Math.atan2(b,g*m);y=Math.sin(y*_)/b,o=Math.sin(o*_)/b}const v=o*m;if(a=a*y+u*v,c=c*y+f*v,l=l*y+d*v,h=h*y+p*v,y===1-o){const b=1/Math.sqrt(a*a+c*c+l*l+h*h);a*=b,c*=b,l*=b,h*=b}}t[e]=a,t[e+1]=c,t[e+2]=l,t[e+3]=h},multiplyQuaternionsFlat:function(t,e,n,i,r,s){const o=n[i],a=n[i+1],c=n[i+2],l=n[i+3],h=r[s],u=r[s+1],f=r[s+2],d=r[s+3];return t[e]=o*d+l*h+a*f-c*u,t[e+1]=a*d+l*u+c*h-o*f,t[e+2]=c*d+l*f+o*u-a*h,t[e+3]=l*d-o*h-a*u-c*f,t}});Object.defineProperties(Gt.prototype,{x:{get:function(){return this._x},set:function(t){this._x=t,this._onChangeCallback()}},y:{get:function(){return this._y},set:function(t){this._y=t,this._onChangeCallback()}},z:{get:function(){return this._z},set:function(t){this._z=t,this._onChangeCallback()}},w:{get:function(){return this._w},set:function(t){this._w=t,this._onChangeCallback()}}});Object.assign(Gt.prototype,{isQuaternion:!0,set:function(t,e,n,i){return this._x=t,this._y=e,this._z=n,this._w=i,this._onChangeCallback(),this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._w)},copy:function(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this},setFromEuler:function(t,e){if(!(t&&t.isEuler))throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");const n=t._x,i=t._y,r=t._z,s=t.order,o=Math.cos,a=Math.sin,c=o(n/2),l=o(i/2),h=o(r/2),u=a(n/2),f=a(i/2),d=a(r/2);switch(s){case"XYZ":this._x=u*l*h+c*f*d,this._y=c*f*h-u*l*d,this._z=c*l*d+u*f*h,this._w=c*l*h-u*f*d;break;case"YXZ":this._x=u*l*h+c*f*d,this._y=c*f*h-u*l*d,this._z=c*l*d-u*f*h,this._w=c*l*h+u*f*d;break;case"ZXY":this._x=u*l*h-c*f*d,this._y=c*f*h+u*l*d,this._z=c*l*d+u*f*h,this._w=c*l*h-u*f*d;break;case"ZYX":this._x=u*l*h-c*f*d,this._y=c*f*h+u*l*d,this._z=c*l*d-u*f*h,this._w=c*l*h+u*f*d;break;case"YZX":this._x=u*l*h+c*f*d,this._y=c*f*h+u*l*d,this._z=c*l*d-u*f*h,this._w=c*l*h-u*f*d;break;case"XZY":this._x=u*l*h-c*f*d,this._y=c*f*h-u*l*d,this._z=c*l*d+u*f*h,this._w=c*l*h+u*f*d;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+s)}return e!==!1&&this._onChangeCallback(),this},setFromAxisAngle:function(t,e){const n=e/2,i=Math.sin(n);return this._x=t.x*i,this._y=t.y*i,this._z=t.z*i,this._w=Math.cos(n),this._onChangeCallback(),this},setFromRotationMatrix:function(t){const e=t.elements,n=e[0],i=e[4],r=e[8],s=e[1],o=e[5],a=e[9],c=e[2],l=e[6],h=e[10],u=n+o+h;if(u>0){const f=.5/Math.sqrt(u+1);this._w=.25/f,this._x=(l-a)*f,this._y=(r-c)*f,this._z=(s-i)*f}else if(n>o&&n>h){const f=2*Math.sqrt(1+n-o-h);this._w=(l-a)/f,this._x=.25*f,this._y=(i+s)/f,this._z=(r+c)/f}else if(o>h){const f=2*Math.sqrt(1+o-n-h);this._w=(r-c)/f,this._x=(i+s)/f,this._y=.25*f,this._z=(a+l)/f}else{const f=2*Math.sqrt(1+h-n-o);this._w=(s-i)/f,this._x=(r+c)/f,this._y=(a+l)/f,this._z=.25*f}return this._onChangeCallback(),this},setFromUnitVectors:function(t,e){let i=t.dot(e)+1;return i<1e-6?(i=0,Math.abs(t.x)>Math.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=i):(this._x=0,this._y=-t.z,this._z=t.y,this._w=i)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=i),this.normalize()},angleTo:function(t){return 2*Math.acos(Math.abs(ut.clamp(this.dot(t),-1,1)))},rotateTowards:function(t,e){const n=this.angleTo(t);if(n===0)return this;const i=Math.min(1,e/n);return this.slerp(t,i),this},inverse:function(){return this.conjugate()},conjugate:function(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this},dot:function(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w},lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){let t=this.length();return t===0?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this},multiply:function(t,e){return e!==void 0?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(t,e)):this.multiplyQuaternions(this,t)},premultiply:function(t){return this.multiplyQuaternions(t,this)},multiplyQuaternions:function(t,e){const n=t._x,i=t._y,r=t._z,s=t._w,o=e._x,a=e._y,c=e._z,l=e._w;return this._x=n*l+s*o+i*c-r*a,this._y=i*l+s*a+r*o-n*c,this._z=r*l+s*c+n*a-i*o,this._w=s*l-n*o-i*a-r*c,this._onChangeCallback(),this},slerp:function(t,e){if(e===0)return this;if(e===1)return this.copy(t);const n=this._x,i=this._y,r=this._z,s=this._w;let o=s*t._w+n*t._x+i*t._y+r*t._z;if(o<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,o=-o):this.copy(t),o>=1)return this._w=s,this._x=n,this._y=i,this._z=r,this;const a=1-o*o;if(a<=Number.EPSILON){const f=1-e;return this._w=f*s+e*this._w,this._x=f*n+e*this._x,this._y=f*i+e*this._y,this._z=f*r+e*this._z,this.normalize(),this._onChangeCallback(),this}const c=Math.sqrt(a),l=Math.atan2(c,o),h=Math.sin((1-e)*l)/c,u=Math.sin(e*l)/c;return this._w=s*h+this._w*u,this._x=n*h+this._x*u,this._y=i*h+this._y*u,this._z=r*h+this._z*u,this._onChangeCallback(),this},equals:function(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w},fromArray:function(t,e){return e===void 0&&(e=0),this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this},toArray:function(t,e){return t===void 0&&(t=[]),e===void 0&&(e=0),t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t},fromBufferAttribute:function(t,e){return this._x=t.getX(e),this._y=t.getY(e),this._z=t.getZ(e),this._w=t.getW(e),this},_onChange:function(t){return this._onChangeCallback=t,this},_onChangeCallback:function(){}});const Ku=new T,Zm=new Gt;function T(t=0,e=0,n=0){this.x=t,this.y=e,this.z=n}Object.assign(T.prototype,{isVector3:!0,set:function(t,e,n){return this.x=t,this.y=e,this.z=n,this},setScalar:function(t){return this.x=t,this.y=t,this.z=t,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setZ:function(t){return this.z=t,this},setComponent:function(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}return this},getComponent:function(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}},clone:function(){return new this.constructor(this.x,this.y,this.z)},copy:function(t){return this.x=t.x,this.y=t.y,this.z=t.z,this},add:function(t,e){return e!==void 0?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this.z+=t.z,this)},addScalar:function(t){return this.x+=t,this.y+=t,this.z+=t,this},addVectors:function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this},addScaledVector:function(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this},sub:function(t,e){return e!==void 0?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this.z-=t.z,this)},subScalar:function(t){return this.x-=t,this.y-=t,this.z-=t,this},subVectors:function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this},multiply:function(t,e){return e!==void 0?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(t,e)):(this.x*=t.x,this.y*=t.y,this.z*=t.z,this)},multiplyScalar:function(t){return this.x*=t,this.y*=t,this.z*=t,this},multiplyVectors:function(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this},applyEuler:function(t){return t&&t.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order."),this.applyQuaternion(Zm.setFromEuler(t))},applyAxisAngle:function(t,e){return this.applyQuaternion(Zm.setFromAxisAngle(t,e))},applyMatrix3:function(t){const e=this.x,n=this.y,i=this.z,r=t.elements;return this.x=r[0]*e+r[3]*n+r[6]*i,this.y=r[1]*e+r[4]*n+r[7]*i,this.z=r[2]*e+r[5]*n+r[8]*i,this},applyNormalMatrix:function(t){return this.applyMatrix3(t).normalize()},applyMatrix4:function(t){const e=this.x,n=this.y,i=this.z,r=t.elements,s=1/(r[3]*e+r[7]*n+r[11]*i+r[15]);return this.x=(r[0]*e+r[4]*n+r[8]*i+r[12])*s,this.y=(r[1]*e+r[5]*n+r[9]*i+r[13])*s,this.z=(r[2]*e+r[6]*n+r[10]*i+r[14])*s,this},applyQuaternion:function(t){const e=this.x,n=this.y,i=this.z,r=t.x,s=t.y,o=t.z,a=t.w,c=a*e+s*i-o*n,l=a*n+o*e-r*i,h=a*i+r*n-s*e,u=-r*e-s*n-o*i;return this.x=c*a+u*-r+l*-o-h*-s,this.y=l*a+u*-s+h*-r-c*-o,this.z=h*a+u*-o+c*-s-l*-r,this},project:function(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)},unproject:function(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)},transformDirection:function(t){const e=this.x,n=this.y,i=this.z,r=t.elements;return this.x=r[0]*e+r[4]*n+r[8]*i,this.y=r[1]*e+r[5]*n+r[9]*i,this.z=r[2]*e+r[6]*n+r[10]*i,this.normalize()},divide:function(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this},divideScalar:function(t){return this.multiplyScalar(1/t)},min:function(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this},max:function(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this},clamp:function(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this},clampScalar:function(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this},clampLength:function(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){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:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},dot:function(t){return this.x*t.x+this.y*t.y+this.z*t.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(t){return this.normalize().multiplyScalar(t)},lerp:function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this},lerpVectors:function(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this},cross:function(t,e){return e!==void 0?(console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(t,e)):this.crossVectors(this,t)},crossVectors:function(t,e){const n=t.x,i=t.y,r=t.z,s=e.x,o=e.y,a=e.z;return this.x=i*a-r*o,this.y=r*s-n*a,this.z=n*o-i*s,this},projectOnVector:function(t){const e=t.lengthSq();if(e===0)return this.set(0,0,0);const n=t.dot(this)/e;return this.copy(t).multiplyScalar(n)},projectOnPlane:function(t){return Ku.copy(this).projectOnVector(t),this.sub(Ku)},reflect:function(t){return this.sub(Ku.copy(t).multiplyScalar(2*this.dot(t)))},angleTo:function(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;const n=this.dot(t)/e;return Math.acos(ut.clamp(n,-1,1))},distanceTo:function(t){return Math.sqrt(this.distanceToSquared(t))},distanceToSquared:function(t){const e=this.x-t.x,n=this.y-t.y,i=this.z-t.z;return e*e+n*n+i*i},manhattanDistanceTo:function(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)},setFromSpherical:function(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)},setFromSphericalCoords:function(t,e,n){const i=Math.sin(e)*t;return this.x=i*Math.sin(n),this.y=Math.cos(e)*t,this.z=i*Math.cos(n),this},setFromCylindrical:function(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)},setFromCylindricalCoords:function(t,e,n){return this.x=t*Math.sin(e),this.y=n,this.z=t*Math.cos(e),this},setFromMatrixPosition:function(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this},setFromMatrixScale:function(t){const e=this.setFromMatrixColumn(t,0).length(),n=this.setFromMatrixColumn(t,1).length(),i=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=n,this.z=i,this},setFromMatrixColumn:function(t,e){return this.fromArray(t.elements,e*4)},setFromMatrix3Column:function(t,e){return this.fromArray(t.elements,e*3)},equals:function(t){return t.x===this.x&&t.y===this.y&&t.z===this.z},fromArray:function(t,e){return e===void 0&&(e=0),this.x=t[e],this.y=t[e+1],this.z=t[e+2],this},toArray:function(t,e){return t===void 0&&(t=[]),e===void 0&&(e=0),t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t},fromBufferAttribute:function(t,e,n){return n!==void 0&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."),this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this},random:function(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}});const ks=new T,hi=new Ie,D_=new T(0,0,0),B_=new T(1,1,1),Sr=new T,al=new T,Hn=new T;function Ie(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}Object.assign(Ie.prototype,{isMatrix4:!0,set:function(t,e,n,i,r,s,o,a,c,l,h,u,f,d,p,y){const g=this.elements;return g[0]=t,g[4]=e,g[8]=n,g[12]=i,g[1]=r,g[5]=s,g[9]=o,g[13]=a,g[2]=c,g[6]=l,g[10]=h,g[14]=u,g[3]=f,g[7]=d,g[11]=p,g[15]=y,this},identity:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},clone:function(){return new Ie().fromArray(this.elements)},copy:function(t){const e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e[9]=n[9],e[10]=n[10],e[11]=n[11],e[12]=n[12],e[13]=n[13],e[14]=n[14],e[15]=n[15],this},copyPosition:function(t){const e=this.elements,n=t.elements;return e[12]=n[12],e[13]=n[13],e[14]=n[14],this},extractBasis:function(t,e,n){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this},makeBasis:function(t,e,n){return this.set(t.x,e.x,n.x,0,t.y,e.y,n.y,0,t.z,e.z,n.z,0,0,0,0,1),this},extractRotation:function(t){const e=this.elements,n=t.elements,i=1/ks.setFromMatrixColumn(t,0).length(),r=1/ks.setFromMatrixColumn(t,1).length(),s=1/ks.setFromMatrixColumn(t,2).length();return e[0]=n[0]*i,e[1]=n[1]*i,e[2]=n[2]*i,e[3]=0,e[4]=n[4]*r,e[5]=n[5]*r,e[6]=n[6]*r,e[7]=0,e[8]=n[8]*s,e[9]=n[9]*s,e[10]=n[10]*s,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this},makeRotationFromEuler:function(t){t&&t.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");const e=this.elements,n=t.x,i=t.y,r=t.z,s=Math.cos(n),o=Math.sin(n),a=Math.cos(i),c=Math.sin(i),l=Math.cos(r),h=Math.sin(r);if(t.order==="XYZ"){const u=s*l,f=s*h,d=o*l,p=o*h;e[0]=a*l,e[4]=-a*h,e[8]=c,e[1]=f+d*c,e[5]=u-p*c,e[9]=-o*a,e[2]=p-u*c,e[6]=d+f*c,e[10]=s*a}else if(t.order==="YXZ"){const u=a*l,f=a*h,d=c*l,p=c*h;e[0]=u+p*o,e[4]=d*o-f,e[8]=s*c,e[1]=s*h,e[5]=s*l,e[9]=-o,e[2]=f*o-d,e[6]=p+u*o,e[10]=s*a}else if(t.order==="ZXY"){const u=a*l,f=a*h,d=c*l,p=c*h;e[0]=u-p*o,e[4]=-s*h,e[8]=d+f*o,e[1]=f+d*o,e[5]=s*l,e[9]=p-u*o,e[2]=-s*c,e[6]=o,e[10]=s*a}else if(t.order==="ZYX"){const u=s*l,f=s*h,d=o*l,p=o*h;e[0]=a*l,e[4]=d*c-f,e[8]=u*c+p,e[1]=a*h,e[5]=p*c+u,e[9]=f*c-d,e[2]=-c,e[6]=o*a,e[10]=s*a}else if(t.order==="YZX"){const u=s*a,f=s*c,d=o*a,p=o*c;e[0]=a*l,e[4]=p-u*h,e[8]=d*h+f,e[1]=h,e[5]=s*l,e[9]=-o*l,e[2]=-c*l,e[6]=f*h+d,e[10]=u-p*h}else if(t.order==="XZY"){const u=s*a,f=s*c,d=o*a,p=o*c;e[0]=a*l,e[4]=-h,e[8]=c*l,e[1]=u*h+p,e[5]=s*l,e[9]=f*h-d,e[2]=d*h-f,e[6]=o*l,e[10]=p*h+u}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this},makeRotationFromQuaternion:function(t){return this.compose(D_,t,B_)},lookAt:function(t,e,n){const i=this.elements;return Hn.subVectors(t,e),Hn.lengthSq()===0&&(Hn.z=1),Hn.normalize(),Sr.crossVectors(n,Hn),Sr.lengthSq()===0&&(Math.abs(n.z)===1?Hn.x+=1e-4:Hn.z+=1e-4,Hn.normalize(),Sr.crossVectors(n,Hn)),Sr.normalize(),al.crossVectors(Hn,Sr),i[0]=Sr.x,i[4]=al.x,i[8]=Hn.x,i[1]=Sr.y,i[5]=al.y,i[9]=Hn.y,i[2]=Sr.z,i[6]=al.z,i[10]=Hn.z,this},multiply:function(t,e){return e!==void 0?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(t,e)):this.multiplyMatrices(this,t)},premultiply:function(t){return this.multiplyMatrices(t,this)},multiplyMatrices:function(t,e){const n=t.elements,i=e.elements,r=this.elements,s=n[0],o=n[4],a=n[8],c=n[12],l=n[1],h=n[5],u=n[9],f=n[13],d=n[2],p=n[6],y=n[10],g=n[14],m=n[3],x=n[7],v=n[11],b=n[15],_=i[0],C=i[4],w=i[8],S=i[12],M=i[1],B=i[5],L=i[9],U=i[13],E=i[2],O=i[6],k=i[10],ne=i[14],Y=i[3],F=i[7],te=i[11],ee=i[15];return r[0]=s*_+o*M+a*E+c*Y,r[4]=s*C+o*B+a*O+c*F,r[8]=s*w+o*L+a*k+c*te,r[12]=s*S+o*U+a*ne+c*ee,r[1]=l*_+h*M+u*E+f*Y,r[5]=l*C+h*B+u*O+f*F,r[9]=l*w+h*L+u*k+f*te,r[13]=l*S+h*U+u*ne+f*ee,r[2]=d*_+p*M+y*E+g*Y,r[6]=d*C+p*B+y*O+g*F,r[10]=d*w+p*L+y*k+g*te,r[14]=d*S+p*U+y*ne+g*ee,r[3]=m*_+x*M+v*E+b*Y,r[7]=m*C+x*B+v*O+b*F,r[11]=m*w+x*L+v*k+b*te,r[15]=m*S+x*U+v*ne+b*ee,this},multiplyScalar:function(t){const e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this},determinant:function(){const t=this.elements,e=t[0],n=t[4],i=t[8],r=t[12],s=t[1],o=t[5],a=t[9],c=t[13],l=t[2],h=t[6],u=t[10],f=t[14],d=t[3],p=t[7],y=t[11],g=t[15];return d*(+r*a*h-i*c*h-r*o*u+n*c*u+i*o*f-n*a*f)+p*(+e*a*f-e*c*u+r*s*u-i*s*f+i*c*l-r*a*l)+y*(+e*c*h-e*o*f-r*s*h+n*s*f+r*o*l-n*c*l)+g*(-i*o*l-e*a*h+e*o*u+i*s*h-n*s*u+n*a*l)},transpose:function(){const t=this.elements;let e;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this},setPosition:function(t,e,n){const i=this.elements;return t.isVector3?(i[12]=t.x,i[13]=t.y,i[14]=t.z):(i[12]=t,i[13]=e,i[14]=n),this},getInverse:function(t,e){e!==void 0&&console.warn("THREE.Matrix4: .getInverse() can no longer be configured to throw on degenerate.");const n=this.elements,i=t.elements,r=i[0],s=i[1],o=i[2],a=i[3],c=i[4],l=i[5],h=i[6],u=i[7],f=i[8],d=i[9],p=i[10],y=i[11],g=i[12],m=i[13],x=i[14],v=i[15],b=d*x*u-m*p*u+m*h*y-l*x*y-d*h*v+l*p*v,_=g*p*u-f*x*u-g*h*y+c*x*y+f*h*v-c*p*v,C=f*m*u-g*d*u+g*l*y-c*m*y-f*l*v+c*d*v,w=g*d*h-f*m*h-g*l*p+c*m*p+f*l*x-c*d*x,S=r*b+s*_+o*C+a*w;if(S===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const M=1/S;return n[0]=b*M,n[1]=(m*p*a-d*x*a-m*o*y+s*x*y+d*o*v-s*p*v)*M,n[2]=(l*x*a-m*h*a+m*o*u-s*x*u-l*o*v+s*h*v)*M,n[3]=(d*h*a-l*p*a-d*o*u+s*p*u+l*o*y-s*h*y)*M,n[4]=_*M,n[5]=(f*x*a-g*p*a+g*o*y-r*x*y-f*o*v+r*p*v)*M,n[6]=(g*h*a-c*x*a-g*o*u+r*x*u+c*o*v-r*h*v)*M,n[7]=(c*p*a-f*h*a+f*o*u-r*p*u-c*o*y+r*h*y)*M,n[8]=C*M,n[9]=(g*d*a-f*m*a-g*s*y+r*m*y+f*s*v-r*d*v)*M,n[10]=(c*m*a-g*l*a+g*s*u-r*m*u-c*s*v+r*l*v)*M,n[11]=(f*l*a-c*d*a-f*s*u+r*d*u+c*s*y-r*l*y)*M,n[12]=w*M,n[13]=(f*m*o-g*d*o+g*s*p-r*m*p-f*s*x+r*d*x)*M,n[14]=(g*l*o-c*m*o-g*s*h+r*m*h+c*s*x-r*l*x)*M,n[15]=(c*d*o-f*l*o+f*s*h-r*d*h-c*s*p+r*l*p)*M,this},scale:function(t){const e=this.elements,n=t.x,i=t.y,r=t.z;return e[0]*=n,e[4]*=i,e[8]*=r,e[1]*=n,e[5]*=i,e[9]*=r,e[2]*=n,e[6]*=i,e[10]*=r,e[3]*=n,e[7]*=i,e[11]*=r,this},getMaxScaleOnAxis:function(){const t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],n=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],i=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,n,i))},makeTranslation:function(t,e,n){return this.set(1,0,0,t,0,1,0,e,0,0,1,n,0,0,0,1),this},makeRotationX:function(t){const e=Math.cos(t),n=Math.sin(t);return this.set(1,0,0,0,0,e,-n,0,0,n,e,0,0,0,0,1),this},makeRotationY:function(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,0,n,0,0,1,0,0,-n,0,e,0,0,0,0,1),this},makeRotationZ:function(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,0,n,e,0,0,0,0,1,0,0,0,0,1),this},makeRotationAxis:function(t,e){const n=Math.cos(e),i=Math.sin(e),r=1-n,s=t.x,o=t.y,a=t.z,c=r*s,l=r*o;return this.set(c*s+n,c*o-i*a,c*a+i*o,0,c*o+i*a,l*o+n,l*a-i*s,0,c*a-i*o,l*a+i*s,r*a*a+n,0,0,0,0,1),this},makeScale:function(t,e,n){return this.set(t,0,0,0,0,e,0,0,0,0,n,0,0,0,0,1),this},makeShear:function(t,e,n){return this.set(1,e,n,0,t,1,n,0,t,e,1,0,0,0,0,1),this},compose:function(t,e,n){const i=this.elements,r=e._x,s=e._y,o=e._z,a=e._w,c=r+r,l=s+s,h=o+o,u=r*c,f=r*l,d=r*h,p=s*l,y=s*h,g=o*h,m=a*c,x=a*l,v=a*h,b=n.x,_=n.y,C=n.z;return i[0]=(1-(p+g))*b,i[1]=(f+v)*b,i[2]=(d-x)*b,i[3]=0,i[4]=(f-v)*_,i[5]=(1-(u+g))*_,i[6]=(y+m)*_,i[7]=0,i[8]=(d+x)*C,i[9]=(y-m)*C,i[10]=(1-(u+p))*C,i[11]=0,i[12]=t.x,i[13]=t.y,i[14]=t.z,i[15]=1,this},decompose:function(t,e,n){const i=this.elements;let r=ks.set(i[0],i[1],i[2]).length(),s=ks.set(i[4],i[5],i[6]).length(),o=ks.set(i[8],i[9],i[10]).length();this.determinant()<0&&(r=-r),t.x=i[12],t.y=i[13],t.z=i[14],hi.copy(this);const c=1/r,l=1/s,h=1/o;return hi.elements[0]*=c,hi.elements[1]*=c,hi.elements[2]*=c,hi.elements[4]*=l,hi.elements[5]*=l,hi.elements[6]*=l,hi.elements[8]*=h,hi.elements[9]*=h,hi.elements[10]*=h,e.setFromRotationMatrix(hi),n.x=r,n.y=s,n.z=o,this},makePerspective:function(t,e,n,i,r,s){s===void 0&&console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.");const o=this.elements,a=2*r/(e-t),c=2*r/(n-i),l=(e+t)/(e-t),h=(n+i)/(n-i),u=-(s+r)/(s-r),f=-2*s*r/(s-r);return o[0]=a,o[4]=0,o[8]=l,o[12]=0,o[1]=0,o[5]=c,o[9]=h,o[13]=0,o[2]=0,o[6]=0,o[10]=u,o[14]=f,o[3]=0,o[7]=0,o[11]=-1,o[15]=0,this},makeOrthographic:function(t,e,n,i,r,s){const o=this.elements,a=1/(e-t),c=1/(n-i),l=1/(s-r),h=(e+t)*a,u=(n+i)*c,f=(s+r)*l;return o[0]=2*a,o[4]=0,o[8]=0,o[12]=-h,o[1]=0,o[5]=2*c,o[9]=0,o[13]=-u,o[2]=0,o[6]=0,o[10]=-2*l,o[14]=-f,o[3]=0,o[7]=0,o[11]=0,o[15]=1,this},equals:function(t){const e=this.elements,n=t.elements;for(let i=0;i<16;i++)if(e[i]!==n[i])return!1;return!0},fromArray:function(t,e){e===void 0&&(e=0);for(let n=0;n<16;n++)this.elements[n]=t[n+e];return this},toArray:function(t,e){t===void 0&&(t=[]),e===void 0&&(e=0);const n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t[e+9]=n[9],t[e+10]=n[10],t[e+11]=n[11],t[e+12]=n[12],t[e+13]=n[13],t[e+14]=n[14],t[e+15]=n[15],t}});const Km=new Ie,Jm=new Gt;function Ur(t=0,e=0,n=0,i=Ur.DefaultOrder){this._x=t,this._y=e,this._z=n,this._order=i}Ur.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"];Ur.DefaultOrder="XYZ";Object.defineProperties(Ur.prototype,{x:{get:function(){return this._x},set:function(t){this._x=t,this._onChangeCallback()}},y:{get:function(){return this._y},set:function(t){this._y=t,this._onChangeCallback()}},z:{get:function(){return this._z},set:function(t){this._z=t,this._onChangeCallback()}},order:{get:function(){return this._order},set:function(t){this._order=t,this._onChangeCallback()}}});Object.assign(Ur.prototype,{isEuler:!0,set:function(t,e,n,i){return this._x=t,this._y=e,this._z=n,this._order=i||this._order,this._onChangeCallback(),this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._order)},copy:function(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this},setFromRotationMatrix:function(t,e,n){const i=ut.clamp,r=t.elements,s=r[0],o=r[4],a=r[8],c=r[1],l=r[5],h=r[9],u=r[2],f=r[6],d=r[10];switch(e=e||this._order,e){case"XYZ":this._y=Math.asin(i(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-h,d),this._z=Math.atan2(-o,s)):(this._x=Math.atan2(f,l),this._z=0);break;case"YXZ":this._x=Math.asin(-i(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(a,d),this._z=Math.atan2(c,l)):(this._y=Math.atan2(-u,s),this._z=0);break;case"ZXY":this._x=Math.asin(i(f,-1,1)),Math.abs(f)<.9999999?(this._y=Math.atan2(-u,d),this._z=Math.atan2(-o,l)):(this._y=0,this._z=Math.atan2(c,s));break;case"ZYX":this._y=Math.asin(-i(u,-1,1)),Math.abs(u)<.9999999?(this._x=Math.atan2(f,d),this._z=Math.atan2(c,s)):(this._x=0,this._z=Math.atan2(-o,l));break;case"YZX":this._z=Math.asin(i(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(-h,l),this._y=Math.atan2(-u,s)):(this._x=0,this._y=Math.atan2(a,d));break;case"XZY":this._z=Math.asin(-i(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(f,l),this._y=Math.atan2(a,s)):(this._x=Math.atan2(-h,d),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,n!==!1&&this._onChangeCallback(),this},setFromQuaternion:function(t,e,n){return Km.makeRotationFromQuaternion(t),this.setFromRotationMatrix(Km,e,n)},setFromVector3:function(t,e){return this.set(t.x,t.y,t.z,e||this._order)},reorder:function(t){return Jm.setFromEuler(this),this.setFromQuaternion(Jm,t)},equals:function(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order},fromArray:function(t){return this._x=t[0],this._y=t[1],this._z=t[2],t[3]!==void 0&&(this._order=t[3]),this._onChangeCallback(),this},toArray:function(t,e){return t===void 0&&(t=[]),e===void 0&&(e=0),t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t},toVector3:function(t){return t?t.set(this._x,this._y,this._z):new T(this._x,this._y,this._z)},_onChange:function(t){return this._onChangeCallback=t,this},_onChangeCallback:function(){}});function em(){this.mask=1}Object.assign(em.prototype,{set:function(t){this.mask=1<1){for(let e=0;e1){for(let n=0;n0){i.children=[];for(let o=0;o0&&(n.geometries=o),a.length>0&&(n.materials=a),c.length>0&&(n.textures=c),l.length>0&&(n.images=l),h.length>0&&(n.shapes=h)}return n.object=i,n;function s(o){const a=[];for(const c in o){const l=o[c];delete l.metadata,a.push(l)}return a}},clone:function(t){return new this.constructor().copy(this,t)},copy:function(t,e){if(e===void 0&&(e=!0),this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.userData=JSON.parse(JSON.stringify(t.userData)),e===!0)for(let n=0;nr&&(r=l),h>s&&(s=h),u>o&&(o=u)}return this.min.set(e,n,i),this.max.set(r,s,o),this},setFromBufferAttribute:function(t){let e=1/0,n=1/0,i=1/0,r=-1/0,s=-1/0,o=-1/0;for(let a=0,c=t.count;ar&&(r=l),h>s&&(s=h),u>o&&(o=u)}return this.min.set(e,n,i),this.max.set(r,s,o),this},setFromPoints:function(t){this.makeEmpty();for(let e=0,n=t.length;ethis.max.x||t.ythis.max.y||t.zthis.max.z)},containsBox:function(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y&&this.min.z<=t.min.z&&t.max.z<=this.max.z},getParameter:function(t,e){return e===void 0&&(console.warn("THREE.Box3: .getParameter() target is now required"),e=new T),e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))},intersectsBox:function(t){return!(t.max.xthis.max.x||t.max.ythis.max.y||t.max.zthis.max.z)},intersectsSphere:function(t){return this.clampPoint(t.center,wa),wa.distanceToSquared(t.center)<=t.radius*t.radius},intersectsPlane:function(t){let e,n;return t.normal.x>0?(e=t.normal.x*this.min.x,n=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,n=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,n+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,n+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,n+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,n+=t.normal.z*this.min.z),e<=-t.constant&&n>=-t.constant},intersectsTriangle:function(t){if(this.isEmpty())return!1;this.getCenter(Sa),ll.subVectors(this.max,Sa),Ns.subVectors(t.a,Sa),zs.subVectors(t.b,Sa),Gs.subVectors(t.c,Sa),Mr.subVectors(zs,Ns),Ar.subVectors(Gs,zs),Qr.subVectors(Ns,Gs);let e=[0,-Mr.z,Mr.y,0,-Ar.z,Ar.y,0,-Qr.z,Qr.y,Mr.z,0,-Mr.x,Ar.z,0,-Ar.x,Qr.z,0,-Qr.x,-Mr.y,Mr.x,0,-Ar.y,Ar.x,0,-Qr.y,Qr.x,0];return!Qu(e,Ns,zs,Gs,ll)||(e=[1,0,0,0,1,0,0,0,1],!Qu(e,Ns,zs,Gs,ll))?!1:(hl.crossVectors(Mr,Ar),e=[hl.x,hl.y,hl.z],Qu(e,Ns,zs,Gs,ll))},clampPoint:function(t,e){return e===void 0&&(console.warn("THREE.Box3: .clampPoint() target is now required"),e=new T),e.copy(t).clamp(this.min,this.max)},distanceToPoint:function(t){return wa.copy(t).clamp(this.min,this.max).sub(t).length()},getBoundingSphere:function(t){return t===void 0&&console.error("THREE.Box3: .getBoundingSphere() target is now required"),this.getCenter(t.center),t.radius=this.getSize(wa).length()*.5,t},intersect:function(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this},union:function(t){return this.min.min(t.min),this.max.max(t.max),this},applyMatrix4:function(t){return this.isEmpty()?this:(Xi[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),Xi[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),Xi[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),Xi[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),Xi[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),Xi[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),Xi[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),Xi[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(Xi),this)},translate:function(t){return this.min.add(t),this.max.add(t),this},equals:function(t){return t.min.equals(this.min)&&t.max.equals(this.max)}});function Qu(t,e,n,i,r){for(let s=0,o=t.length-3;s<=o;s+=3){es.fromArray(t,s);const a=r.x*Math.abs(es.x)+r.y*Math.abs(es.y)+r.z*Math.abs(es.z),c=e.dot(es),l=n.dot(es),h=i.dot(es);if(Math.max(-Math.max(c,l,h),Math.min(c,l,h))>a)return!1}return!0}const G_=new Ut;function br(t,e){this.center=t!==void 0?t:new T,this.radius=e!==void 0?e:-1}Object.assign(br.prototype,{set:function(t,e){return this.center.copy(t),this.radius=e,this},setFromPoints:function(t,e){const n=this.center;e!==void 0?n.copy(e):G_.setFromPoints(t).getCenter(n);let i=0;for(let r=0,s=t.length;rthis.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e},getBoundingBox:function(t){return t===void 0&&(console.warn("THREE.Sphere: .getBoundingBox() target is now required"),t=new Ut),this.isEmpty()?(t.makeEmpty(),t):(t.set(this.center,this.center),t.expandByScalar(this.radius),t)},applyMatrix4:function(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScaleOnAxis(),this},translate:function(t){return this.center.add(t),this},equals:function(t){return t.center.equals(this.center)&&t.radius===this.radius}});const Yi=new T,ed=new T,ul=new T,Cr=new T,td=new T,dl=new T,nd=new T;function Ko(t,e){this.origin=t!==void 0?t:new T,this.direction=e!==void 0?e:new T(0,0,-1)}Object.assign(Ko.prototype,{set:function(t,e){return this.origin.copy(t),this.direction.copy(e),this},clone:function(){return new this.constructor().copy(this)},copy:function(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this},at:function(t,e){return e===void 0&&(console.warn("THREE.Ray: .at() target is now required"),e=new T),e.copy(this.direction).multiplyScalar(t).add(this.origin)},lookAt:function(t){return this.direction.copy(t).sub(this.origin).normalize(),this},recast:function(t){return this.origin.copy(this.at(t,Yi)),this},closestPointToPoint:function(t,e){e===void 0&&(console.warn("THREE.Ray: .closestPointToPoint() target is now required"),e=new T),e.subVectors(t,this.origin);const n=e.dot(this.direction);return n<0?e.copy(this.origin):e.copy(this.direction).multiplyScalar(n).add(this.origin)},distanceToPoint:function(t){return Math.sqrt(this.distanceSqToPoint(t))},distanceSqToPoint:function(t){const e=Yi.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(Yi.copy(this.direction).multiplyScalar(e).add(this.origin),Yi.distanceToSquared(t))},distanceSqToSegment:function(t,e,n,i){ed.copy(t).add(e).multiplyScalar(.5),ul.copy(e).sub(t).normalize(),Cr.copy(this.origin).sub(ed);const r=t.distanceTo(e)*.5,s=-this.direction.dot(ul),o=Cr.dot(this.direction),a=-Cr.dot(ul),c=Cr.lengthSq(),l=Math.abs(1-s*s);let h,u,f,d;if(l>0)if(h=s*a-o,u=s*o-a,d=r*l,h>=0)if(u>=-d)if(u<=d){const p=1/l;h*=p,u*=p,f=h*(h+s*u+2*o)+u*(s*h+u+2*a)+c}else u=r,h=Math.max(0,-(s*u+o)),f=-h*h+u*(u+2*a)+c;else u=-r,h=Math.max(0,-(s*u+o)),f=-h*h+u*(u+2*a)+c;else u<=-d?(h=Math.max(0,-(-s*r+o)),u=h>0?-r:Math.min(Math.max(-r,-a),r),f=-h*h+u*(u+2*a)+c):u<=d?(h=0,u=Math.min(Math.max(-r,-a),r),f=u*(u+2*a)+c):(h=Math.max(0,-(s*r+o)),u=h>0?r:Math.min(Math.max(-r,-a),r),f=-h*h+u*(u+2*a)+c);else u=s>0?-r:r,h=Math.max(0,-(s*u+o)),f=-h*h+u*(u+2*a)+c;return n&&n.copy(this.direction).multiplyScalar(h).add(this.origin),i&&i.copy(ul).multiplyScalar(u).add(ed),f},intersectSphere:function(t,e){Yi.subVectors(t.center,this.origin);const n=Yi.dot(this.direction),i=Yi.dot(Yi)-n*n,r=t.radius*t.radius;if(i>r)return null;const s=Math.sqrt(r-i),o=n-s,a=n+s;return o<0&&a<0?null:o<0?this.at(a,e):this.at(o,e)},intersectsSphere:function(t){return this.distanceSqToPoint(t.center)<=t.radius*t.radius},distanceToPlane:function(t){const e=t.normal.dot(this.direction);if(e===0)return t.distanceToPoint(this.origin)===0?0:null;const n=-(this.origin.dot(t.normal)+t.constant)/e;return n>=0?n:null},intersectPlane:function(t,e){const n=this.distanceToPlane(t);return n===null?null:this.at(n,e)},intersectsPlane:function(t){const e=t.distanceToPoint(this.origin);return e===0||t.normal.dot(this.direction)*e<0},intersectBox:function(t,e){let n,i,r,s,o,a;const c=1/this.direction.x,l=1/this.direction.y,h=1/this.direction.z,u=this.origin;return c>=0?(n=(t.min.x-u.x)*c,i=(t.max.x-u.x)*c):(n=(t.max.x-u.x)*c,i=(t.min.x-u.x)*c),l>=0?(r=(t.min.y-u.y)*l,s=(t.max.y-u.y)*l):(r=(t.max.y-u.y)*l,s=(t.min.y-u.y)*l),n>s||r>i||((r>n||n!==n)&&(n=r),(s=0?(o=(t.min.z-u.z)*h,a=(t.max.z-u.z)*h):(o=(t.max.z-u.z)*h,a=(t.min.z-u.z)*h),n>a||o>i)||((o>n||n!==n)&&(n=o),(a=0?n:i,e)},intersectsBox:function(t){return this.intersectBox(t,Yi)!==null},intersectTriangle:function(t,e,n,i,r){td.subVectors(e,t),dl.subVectors(n,t),nd.crossVectors(td,dl);let s=this.direction.dot(nd),o;if(s>0){if(i)return null;o=1}else if(s<0)o=-1,s=-s;else return null;Cr.subVectors(this.origin,t);const a=o*this.direction.dot(dl.crossVectors(Cr,dl));if(a<0)return null;const c=o*this.direction.dot(td.cross(Cr));if(c<0||a+c>s)return null;const l=-o*Cr.dot(nd);return l<0?null:this.at(l/s,r)},applyMatrix4:function(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this},equals:function(t){return t.origin.equals(this.origin)&&t.direction.equals(this.direction)}});const id=new T,U_=new T,V_=new An;function Ri(t,e){this.normal=t!==void 0?t:new T(1,0,0),this.constant=e!==void 0?e:0}Object.assign(Ri.prototype,{isPlane:!0,set:function(t,e){return this.normal.copy(t),this.constant=e,this},setComponents:function(t,e,n,i){return this.normal.set(t,e,n),this.constant=i,this},setFromNormalAndCoplanarPoint:function(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this},setFromCoplanarPoints:function(t,e,n){const i=id.subVectors(n,e).cross(U_.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(i,t),this},clone:function(){return new this.constructor().copy(this)},copy:function(t){return this.normal.copy(t.normal),this.constant=t.constant,this},normalize:function(){const t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this},negate:function(){return this.constant*=-1,this.normal.negate(),this},distanceToPoint:function(t){return this.normal.dot(t)+this.constant},distanceToSphere:function(t){return this.distanceToPoint(t.center)-t.radius},projectPoint:function(t,e){return e===void 0&&(console.warn("THREE.Plane: .projectPoint() target is now required"),e=new T),e.copy(this.normal).multiplyScalar(-this.distanceToPoint(t)).add(t)},intersectLine:function(t,e){e===void 0&&(console.warn("THREE.Plane: .intersectLine() target is now required"),e=new T);const n=t.delta(id),i=this.normal.dot(n);if(i===0)return this.distanceToPoint(t.start)===0?e.copy(t.start):void 0;const r=-(t.start.dot(this.normal)+this.constant)/i;if(!(r<0||r>1))return e.copy(n).multiplyScalar(r).add(t.start)},intersectsLine:function(t){const e=this.distanceToPoint(t.start),n=this.distanceToPoint(t.end);return e<0&&n>0||n<0&&e>0},intersectsBox:function(t){return t.intersectsPlane(this)},intersectsSphere:function(t){return t.intersectsPlane(this)},coplanarPoint:function(t){return t===void 0&&(console.warn("THREE.Plane: .coplanarPoint() target is now required"),t=new T),t.copy(this.normal).multiplyScalar(-this.constant)},applyMatrix4:function(t,e){const n=e||V_.getNormalMatrix(t),i=this.coplanarPoint(id).applyMatrix4(t),r=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(r),this},translate:function(t){return this.constant-=t.dot(this.normal),this},equals:function(t){return t.normal.equals(this.normal)&&t.constant===this.constant}});const mi=new T,tr=new T,rd=new T,Zi=new T,Us=new T,Vs=new T,ig=new T,sd=new T,od=new T,ad=new T;function Mn(t,e,n){this.a=t!==void 0?t:new T,this.b=e!==void 0?e:new T,this.c=n!==void 0?n:new T}Object.assign(Mn,{getNormal:function(t,e,n,i){i===void 0&&(console.warn("THREE.Triangle: .getNormal() target is now required"),i=new T),i.subVectors(n,e),mi.subVectors(t,e),i.cross(mi);const r=i.lengthSq();return r>0?i.multiplyScalar(1/Math.sqrt(r)):i.set(0,0,0)},getBarycoord:function(t,e,n,i,r){mi.subVectors(i,e),tr.subVectors(n,e),rd.subVectors(t,e);const s=mi.dot(mi),o=mi.dot(tr),a=mi.dot(rd),c=tr.dot(tr),l=tr.dot(rd),h=s*c-o*o;if(r===void 0&&(console.warn("THREE.Triangle: .getBarycoord() target is now required"),r=new T),h===0)return r.set(-2,-1,-1);const u=1/h,f=(c*a-o*l)*u,d=(s*l-o*a)*u;return r.set(1-f-d,d,f)},containsPoint:function(t,e,n,i){return Mn.getBarycoord(t,e,n,i,Zi),Zi.x>=0&&Zi.y>=0&&Zi.x+Zi.y<=1},getUV:function(t,e,n,i,r,s,o,a){return this.getBarycoord(t,e,n,i,Zi),a.set(0,0),a.addScaledVector(r,Zi.x),a.addScaledVector(s,Zi.y),a.addScaledVector(o,Zi.z),a},isFrontFacing:function(t,e,n,i){return mi.subVectors(n,e),tr.subVectors(t,e),mi.cross(tr).dot(i)<0}});Object.assign(Mn.prototype,{set:function(t,e,n){return this.a.copy(t),this.b.copy(e),this.c.copy(n),this},setFromPointsAndIndices:function(t,e,n,i){return this.a.copy(t[e]),this.b.copy(t[n]),this.c.copy(t[i]),this},clone:function(){return new this.constructor().copy(this)},copy:function(t){return this.a.copy(t.a),this.b.copy(t.b),this.c.copy(t.c),this},getArea:function(){return mi.subVectors(this.c,this.b),tr.subVectors(this.a,this.b),mi.cross(tr).length()*.5},getMidpoint:function(t){return t===void 0&&(console.warn("THREE.Triangle: .getMidpoint() target is now required"),t=new T),t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},getNormal:function(t){return Mn.getNormal(this.a,this.b,this.c,t)},getPlane:function(t){return t===void 0&&(console.warn("THREE.Triangle: .getPlane() target is now required"),t=new Ri),t.setFromCoplanarPoints(this.a,this.b,this.c)},getBarycoord:function(t,e){return Mn.getBarycoord(t,this.a,this.b,this.c,e)},getUV:function(t,e,n,i,r){return Mn.getUV(t,this.a,this.b,this.c,e,n,i,r)},containsPoint:function(t){return Mn.containsPoint(t,this.a,this.b,this.c)},isFrontFacing:function(t){return Mn.isFrontFacing(this.a,this.b,this.c,t)},intersectsBox:function(t){return t.intersectsTriangle(this)},closestPointToPoint:function(t,e){e===void 0&&(console.warn("THREE.Triangle: .closestPointToPoint() target is now required"),e=new T);const n=this.a,i=this.b,r=this.c;let s,o;Us.subVectors(i,n),Vs.subVectors(r,n),sd.subVectors(t,n);const a=Us.dot(sd),c=Vs.dot(sd);if(a<=0&&c<=0)return e.copy(n);od.subVectors(t,i);const l=Us.dot(od),h=Vs.dot(od);if(l>=0&&h<=l)return e.copy(i);const u=a*h-l*c;if(u<=0&&a>=0&&l<=0)return s=a/(a-l),e.copy(n).addScaledVector(Us,s);ad.subVectors(t,r);const f=Us.dot(ad),d=Vs.dot(ad);if(d>=0&&f<=d)return e.copy(r);const p=f*c-a*d;if(p<=0&&c>=0&&d<=0)return o=c/(c-d),e.copy(n).addScaledVector(Vs,o);const y=l*d-f*h;if(y<=0&&h-l>=0&&f-d>=0)return ig.subVectors(r,i),o=(h-l)/(h-l+(f-d)),e.copy(i).addScaledVector(ig,o);const g=1/(y+p+u);return s=p*g,o=u*g,e.copy(n).addScaledVector(Us,s).addScaledVector(Vs,o)},equals:function(t){return t.a.equals(this.a)&&t.b.equals(this.b)&&t.c.equals(this.c)}});const Ny={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},ui={h:0,s:0,l:0},fl={h:0,s:0,l:0};function ke(t,e,n){return e===void 0&&n===void 0?this.set(t):this.setRGB(t,e,n)}function cd(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+(e-t)*6*n:n<1/2?e:n<2/3?t+(e-t)*6*(2/3-n):t}function ld(t){return t<.04045?t*.0773993808:Math.pow(t*.9478672986+.0521327014,2.4)}function hd(t){return t<.0031308?t*12.92:1.055*Math.pow(t,.41666)-.055}Object.assign(ke.prototype,{isColor:!0,r:1,g:1,b:1,set:function(t){return t&&t.isColor?this.copy(t):typeof t=="number"?this.setHex(t):typeof t=="string"&&this.setStyle(t),this},setScalar:function(t){return this.r=t,this.g=t,this.b=t,this},setHex:function(t){return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(t&255)/255,this},setRGB:function(t,e,n){return this.r=t,this.g=e,this.b=n,this},setHSL:function(t,e,n){if(t=ut.euclideanModulo(t,1),e=ut.clamp(e,0,1),n=ut.clamp(n,0,1),e===0)this.r=this.g=this.b=n;else{const i=n<=.5?n*(1+e):n+e-n*e,r=2*n-i;this.r=cd(r,i,t+1/3),this.g=cd(r,i,t),this.b=cd(r,i,t-1/3)}return this},setStyle:function(t){function e(i){i!==void 0&&parseFloat(i)<1&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}let n;if(n=/^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec(t)){let i;const r=n[1],s=n[2];switch(r){case"rgb":case"rgba":if(i=/^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\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,e(i[5]),this;if(i=/^(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\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,e(i[5]),this;break;case"hsl":case"hsla":if(i=/^([0-9]*\.?[0-9]+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(s)){const o=parseFloat(i[1])/360,a=parseInt(i[2],10)/100,c=parseInt(i[3],10)/100;return e(i[5]),this.setHSL(o,a,c)}break}}else if(n=/^\#([A-Fa-f0-9]+)$/.exec(t)){const i=n[1],r=i.length;if(r===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,this;if(r===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,this}return t&&t.length>0?this.setColorName(t):this},setColorName:function(t){const e=Ny[t];return e!==void 0?this.setHex(e):console.warn("THREE.Color: Unknown color "+t),this},clone:function(){return new this.constructor(this.r,this.g,this.b)},copy:function(t){return this.r=t.r,this.g=t.g,this.b=t.b,this},copyGammaToLinear:function(t,e){return e===void 0&&(e=2),this.r=Math.pow(t.r,e),this.g=Math.pow(t.g,e),this.b=Math.pow(t.b,e),this},copyLinearToGamma:function(t,e){e===void 0&&(e=2);const n=e>0?1/e:1;return this.r=Math.pow(t.r,n),this.g=Math.pow(t.g,n),this.b=Math.pow(t.b,n),this},convertGammaToLinear:function(t){return this.copyGammaToLinear(this,t),this},convertLinearToGamma:function(t){return this.copyLinearToGamma(this,t),this},copySRGBToLinear:function(t){return this.r=ld(t.r),this.g=ld(t.g),this.b=ld(t.b),this},copyLinearToSRGB:function(t){return this.r=hd(t.r),this.g=hd(t.g),this.b=hd(t.b),this},convertSRGBToLinear:function(){return this.copySRGBToLinear(this),this},convertLinearToSRGB:function(){return this.copyLinearToSRGB(this),this},getHex:function(){return this.r*255<<16^this.g*255<<8^this.b*255<<0},getHexString:function(){return("000000"+this.getHex().toString(16)).slice(-6)},getHSL:function(t){t===void 0&&(console.warn("THREE.Color: .getHSL() target is now required"),t={h:0,s:0,l:0});const e=this.r,n=this.g,i=this.b,r=Math.max(e,n,i),s=Math.min(e,n,i);let o,a;const c=(s+r)/2;if(s===r)o=0,a=0;else{const l=r-s;switch(a=c<=.5?l/(r+s):l/(2-r-s),r){case e:o=(n-i)/l+(n0&&(n.alphaTest=this.alphaTest),this.premultipliedAlpha===!0&&(n.premultipliedAlpha=this.premultipliedAlpha),this.wireframe===!0&&(n.wireframe=this.wireframe),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(n.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(n.wireframeLinejoin=this.wireframeLinejoin),this.morphTargets===!0&&(n.morphTargets=!0),this.morphNormals===!0&&(n.morphNormals=!0),this.skinning===!0&&(n.skinning=!0),this.visible===!1&&(n.visible=!1),this.toneMapped===!1&&(n.toneMapped=!1),JSON.stringify(this.userData)!=="{}"&&(n.userData=this.userData);function i(r){const s=[];for(const o in r){const a=r[o];delete a.metadata,s.push(a)}return s}if(e){const r=i(t.textures),s=i(t.images);r.length>0&&(n.textures=r),s.length>0&&(n.images=s)}return n},clone:function(){return new this.constructor().copy(this)},copy:function(t){this.name=t.name,this.fog=t.fog,this.blending=t.blending,this.side=t.side,this.flatShading=t.flatShading,this.vertexColors=t.vertexColors,this.opacity=t.opacity,this.transparent=t.transparent,this.blendSrc=t.blendSrc,this.blendDst=t.blendDst,this.blendEquation=t.blendEquation,this.blendSrcAlpha=t.blendSrcAlpha,this.blendDstAlpha=t.blendDstAlpha,this.blendEquationAlpha=t.blendEquationAlpha,this.depthFunc=t.depthFunc,this.depthTest=t.depthTest,this.depthWrite=t.depthWrite,this.stencilWriteMask=t.stencilWriteMask,this.stencilFunc=t.stencilFunc,this.stencilRef=t.stencilRef,this.stencilFuncMask=t.stencilFuncMask,this.stencilFail=t.stencilFail,this.stencilZFail=t.stencilZFail,this.stencilZPass=t.stencilZPass,this.stencilWrite=t.stencilWrite;const e=t.clippingPlanes;let n=null;if(e!==null){const i=e.length;n=new Array(i);for(let r=0;r!==i;++r)n[r]=e[r].clone()}return this.clippingPlanes=n,this.clipIntersection=t.clipIntersection,this.clipShadows=t.clipShadows,this.shadowSide=t.shadowSide,this.colorWrite=t.colorWrite,this.precision=t.precision,this.polygonOffset=t.polygonOffset,this.polygonOffsetFactor=t.polygonOffsetFactor,this.polygonOffsetUnits=t.polygonOffsetUnits,this.dithering=t.dithering,this.alphaTest=t.alphaTest,this.premultipliedAlpha=t.premultipliedAlpha,this.visible=t.visible,this.toneMapped=t.toneMapped,this.userData=JSON.parse(JSON.stringify(t.userData)),this},dispose:function(){this.dispatchEvent({type:"dispose"})}});Object.defineProperty(at.prototype,"needsUpdate",{set:function(t){t===!0&&this.version++}});function _i(t){at.call(this),this.type="MeshBasicMaterial",this.color=new ke(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=Au,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.setValues(t)}_i.prototype=Object.create(at.prototype);_i.prototype.constructor=_i;_i.prototype.isMeshBasicMaterial=!0;_i.prototype.copy=function(t){return at.prototype.copy.call(this,t),this.color.copy(t.color),this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.skinning=t.skinning,this.morphTargets=t.morphTargets,this};const jt=new T,pl=new Te;function Qe(t,e,n){if(Array.isArray(t))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.name="",this.array=t,this.itemSize=e,this.count=t!==void 0?t.length/e:0,this.normalized=n===!0,this.usage=Tu,this.updateRange={offset:0,count:-1},this.version=0}Object.defineProperty(Qe.prototype,"needsUpdate",{set:function(t){t===!0&&this.version++}});Object.assign(Qe.prototype,{isBufferAttribute:!0,onUploadCallback:function(){},setUsage:function(t){return this.usage=t,this},copy:function(t){return this.name=t.name,this.array=new t.array.constructor(t.array),this.itemSize=t.itemSize,this.count=t.count,this.normalized=t.normalized,this.usage=t.usage,this},copyAt:function(t,e,n){t*=this.itemSize,n*=e.itemSize;for(let i=0,r=this.itemSize;i0,s=i[1]&&i[1].length>0,o=t.morphTargets,a=o.length;let c;if(a>0){c=[];for(let g=0;g0){u=[];for(let g=0;g0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let g=0;ge&&(e=t[n]);return e}let $_=1;const Ti=new Ie,ud=new $e,Hs=new T,$n=new Ut,Ma=new Ut,vn=new T;function We(){Object.defineProperty(this,"id",{value:$_+=2}),this.uuid=ut.generateUUID(),this.name="",this.type="BufferGeometry",this.index=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}We.prototype=Object.assign(Object.create(xr.prototype),{constructor:We,isBufferGeometry:!0,getIndex:function(){return this.index},setIndex:function(t){Array.isArray(t)?this.index=new(Gy(t)>65535?cc:ac)(t,1):this.index=t},getAttribute:function(t){return this.attributes[t]},setAttribute:function(t,e){return this.attributes[t]=e,this},deleteAttribute:function(t){return delete this.attributes[t],this},addGroup:function(t,e,n){this.groups.push({start:t,count:e,materialIndex:n!==void 0?n:0})},clearGroups:function(){this.groups=[]},setDrawRange:function(t,e){this.drawRange.start=t,this.drawRange.count=e},applyMatrix4:function(t){const e=this.attributes.position;e!==void 0&&(e.applyMatrix4(t),e.needsUpdate=!0);const n=this.attributes.normal;if(n!==void 0){const r=new An().getNormalMatrix(t);n.applyNormalMatrix(r),n.needsUpdate=!0}const i=this.attributes.tangent;return i!==void 0&&(i.transformDirection(t),i.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this},rotateX:function(t){return Ti.makeRotationX(t),this.applyMatrix4(Ti),this},rotateY:function(t){return Ti.makeRotationY(t),this.applyMatrix4(Ti),this},rotateZ:function(t){return Ti.makeRotationZ(t),this.applyMatrix4(Ti),this},translate:function(t,e,n){return Ti.makeTranslation(t,e,n),this.applyMatrix4(Ti),this},scale:function(t,e,n){return Ti.makeScale(t,e,n),this.applyMatrix4(Ti),this},lookAt:function(t){return ud.lookAt(t),ud.updateMatrix(),this.applyMatrix4(ud.matrix),this},center:function(){return this.computeBoundingBox(),this.boundingBox.getCenter(Hs).negate(),this.translate(Hs.x,Hs.y,Hs.z),this},setFromObject:function(t){const e=t.geometry;if(t.isPoints||t.isLine){const n=new qe(e.vertices.length*3,3),i=new qe(e.colors.length*3,3);if(this.setAttribute("position",n.copyVector3sArray(e.vertices)),this.setAttribute("color",i.copyColorsArray(e.colors)),e.lineDistances&&e.lineDistances.length===e.vertices.length){const r=new qe(e.lineDistances.length,1);this.setAttribute("lineDistance",r.copyArray(e.lineDistances))}e.boundingSphere!==null&&(this.boundingSphere=e.boundingSphere.clone()),e.boundingBox!==null&&(this.boundingBox=e.boundingBox.clone())}else t.isMesh&&e&&e.isGeometry&&this.fromGeometry(e);return this},setFromPoints:function(t){const e=[];for(let n=0,i=t.length;n0){const n=new Float32Array(t.normals.length*3);this.setAttribute("normal",new Qe(n,3).copyVector3sArray(t.normals))}if(t.colors.length>0){const n=new Float32Array(t.colors.length*3);this.setAttribute("color",new Qe(n,3).copyColorsArray(t.colors))}if(t.uvs.length>0){const n=new Float32Array(t.uvs.length*2);this.setAttribute("uv",new Qe(n,2).copyVector2sArray(t.uvs))}if(t.uvs2.length>0){const n=new Float32Array(t.uvs2.length*2);this.setAttribute("uv2",new Qe(n,2).copyVector2sArray(t.uvs2))}this.groups=t.groups;for(const n in t.morphTargets){const i=[],r=t.morphTargets[n];for(let s=0,o=r.length;s0){const n=new qe(t.skinIndices.length*4,4);this.setAttribute("skinIndex",n.copyVector4sArray(t.skinIndices))}if(t.skinWeights.length>0){const n=new qe(t.skinWeights.length*4,4);this.setAttribute("skinWeight",n.copyVector4sArray(t.skinWeights))}return t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),this},computeBoundingBox:function(){this.boundingBox===null&&(this.boundingBox=new Ut);const t=this.attributes.position,e=this.morphAttributes.position;if(t!==void 0){if(this.boundingBox.setFromBufferAttribute(t),e)for(let n=0,i=e.length;n0&&(t.userData=this.userData),this.parameters!==void 0){const a=this.parameters;for(const c in a)a[c]!==void 0&&(t[c]=a[c]);return t}t.data={attributes:{}};const e=this.index;e!==null&&(t.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});const n=this.attributes;for(const a in n){const c=n[a],l=c.toJSON(t.data);c.name!==""&&(l.name=c.name),t.data.attributes[a]=l}const i={};let r=!1;for(const a in this.morphAttributes){const c=this.morphAttributes[a],l=[];for(let h=0,u=c.length;h0&&(i[a]=l,r=!0)}r&&(t.data.morphAttributes=i,t.data.morphTargetsRelative=this.morphTargetsRelative);const s=this.groups;s.length>0&&(t.data.groups=JSON.parse(JSON.stringify(s)));const o=this.boundingSphere;return o!==null&&(t.data.boundingSphere={center:o.center.toArray(),radius:o.radius}),t},clone:function(){return new We().copy(this)},copy:function(t){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const e={};this.name=t.name;const n=t.index;n!==null&&this.setIndex(n.clone(e));const i=t.attributes;for(const c in i){const l=i[c];this.setAttribute(c,l.clone(e))}const r=t.morphAttributes;for(const c in r){const l=[],h=r[c];for(let u=0,f=h.length;u0){const i=e[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,s=i.length;r0&&console.error("THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}},raycast:function(t,e){const n=this.geometry,i=this.material,r=this.matrixWorld;if(i===void 0||(n.boundingSphere===null&&n.computeBoundingSphere(),dd.copy(n.boundingSphere),dd.applyMatrix4(r),t.ray.intersectsSphere(dd)===!1)||(rg.getInverse(r),ts.copy(t.ray).applyMatrix4(rg),n.boundingBox!==null&&ts.intersectsBox(n.boundingBox)===!1))return;let s;if(n.isBufferGeometry){const o=n.index,a=n.attributes.position,c=n.morphAttributes.position,l=n.morphTargetsRelative,h=n.attributes.uv,u=n.attributes.uv2,f=n.groups,d=n.drawRange;if(o!==null)if(Array.isArray(i))for(let p=0,y=f.length;p0&&(l=h);for(let u=0,f=c.length;un.far?null:{distance:l,point:xl.clone(),object:t}}function bl(t,e,n,i,r,s,o,a,c,l,h,u){Tr.fromBufferAttribute(r,l),Pr.fromBufferAttribute(r,h),Er.fromBufferAttribute(r,u);const f=t.morphTargetInfluences;if(e.morphTargets&&s&&f){ml.set(0,0,0),gl.set(0,0,0),yl.set(0,0,0);for(let p=0,y=s.length;p0)for(let u=0;u0&&(this.normalsNeedUpdate=!0)},computeFlatVertexNormals:function(){this.computeFaceNormals();for(let t=0,e=this.faces.length;t0&&(this.normalsNeedUpdate=!0)},computeMorphNormals:function(){for(let e=0,n=this.faces.length;e=0;a--){const c=s[a];this.faces.splice(c,1);for(let l=0,h=this.faceVertexUvs.length;l0,v=p.vertexNormals.length>0,b=p.color.r!==1||p.color.g!==1||p.color.b!==1,_=p.vertexColors.length>0;let C=0;if(C=l(C,0,0),C=l(C,1,y),C=l(C,2,g),C=l(C,3,m),C=l(C,4,x),C=l(C,5,v),C=l(C,6,b),C=l(C,7,_),n.push(C),n.push(p.a,p.b,p.c),n.push(p.materialIndex),m){const w=this.faceVertexUvs[0][d];n.push(f(w[0]),f(w[1]),f(w[2]))}if(x&&n.push(h(p.normal)),v){const w=p.vertexNormals;n.push(h(w[0]),h(w[1]),h(w[2]))}if(b&&n.push(u(p.color)),_){const w=p.vertexColors;n.push(u(w[0]),u(w[1]),u(w[2]))}}function l(d,p,y){return y?d|1<0&&(t.data.colors=s),a.length>0&&(t.data.uvs=[a]),t.data.faces=n,t},clone:function(){return new rt().copy(this)},copy:function(t){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=t.name;const e=t.vertices;for(let u=0,f=e.length;u0?1:-1,h.push(te.x,te.y,te.z),u.push(Z/w),u.push(1-ee/S),Y+=1}}for(let ee=0;ee0?v.setAttribute("normal",new Qe(new Float32Array(x.normals),3)):v.computeVertexNormals(),m.push(v)}}return m}};it.add("obj",class extends Gb{get type(){return"obj"}getLoader(){return new Hp}});const $p=function(){this.propertyNameMapping={}};$p.prototype={constructor:$p,setPropertyNameMapping:function(t){this.propertyNameMapping=t},bin2str:function(t){for(var e=new Uint8Array(t),n="",i=0;i=i.elements[o].count&&(o++,a=0);var h=this.parseASCIIElement(i.elements[o].properties,l);this.handleElement(n,i.elements[o].name,h),a++}}return this.postProcess(n)},postProcess:function(t){if(t.useColor){for(var e=0;e{const r=i.length;for(let s=0;s/g,""),{declaration:e(),root:n()};function e(){if(!r(/^<\?xml\s*/))return;const a={attributes:{}};for(;!s()&&!o("?>");){const c=i();if(!c)return a;a.attributes[c.name]=c.value}return r(/\?>\s*/),a}function n(){const a=r(nI);if(!a)return;const c={name:a[1],attributes:{},children:[]};for(;!(s()||o(">")||o("?>")||o("/>"));){const h=i();if(!h)return c;c.attributes[h.name]=h.value}if(r(/^\s*\/>\s*/))return c;let l;for(r(/\??>\s*/),c.content=function(){const h=r(iI);return h?h[1]:""}();l=n();)c.children.push(l);return r(/^<\/[\w-:.]+>\s*/),c}function i(){const a=r(rI);var c;if(a)return{name:a[1],value:(c=a[2],c.replace(tI,""))}}function r(a){const c=t.match(a);if(c)return t=t.slice(c[0].length),c}function s(){return t.length===0}function o(a){return t.indexOf(a)===0}}class Ub extends wi{constructor(e,n){const i=n||{};super(e,i),this.useDomParser=I(i.useDomParser,!1),this.xml={name:this.name,path:this.path,data:{}}}get type(){return"xml"}get __objName(){return"xml"}get isXml(){return!0}__xmlParser(e){return sI(e)}__domParser(e){return new window.DOMParser().parseFromString(e,"text/xml")}_parse(){Ce&&fe.time("XmlParser._parse "+this.name),this.useDomParser?this.streamer.data instanceof Document?this.xml.data=this.streamer.data:this.xml.data=this.__domParser(this.streamer.asText()):this.xml.data=this.__xmlParser(this.streamer.asText()),Ce&&fe.timeEnd("XmlParser._parse "+this.name)}}function fn(t,e){const n=t.getNamedItem(e);return n!==null?n.value:""}function py(t,e,n=!1){const i=fn(t,"icode").trim(),r=fn(t,"chain").trim(),s=fn(t,"altcode");let o=fn(t,"resnum");return i&&(o+="^"+i),r&&(o+=":"+r),e&&(o+="."+e),n&&s.trim()&&(o+="%"+s),o+="/"+(parseInt(fn(t,"model"))-1),o}function oI(t){const e=fn(t,"chain").trim();let n=`[${fn(t,"rescode")}]${fn(t,"resnum")}`;return e&&(n+=`:${e}`),n}function Mf(t,e,n){t[e]===void 0?t[e]=n:t[e]|=n}function Af(t,e){return t!==null&&t.value===e}function aI(t,e,n){let i=0;const r=e.getElementsByTagName("clash");for(let s=0,o=r.length;s0&&(i+=1),e.getElementsByTagName("bond-outlier").length>0&&(i+=1),e.getElementsByTagName("plane-outlier").length>0&&(i+=1),Af(n.getNamedItem("rota"),"OUTLIER")&&(i+=1),Af(n.getNamedItem("rama"),"OUTLIER")&&(i+=1),Af(n.getNamedItem("RNApucker"),"outlier")&&(i+=1),i}it.add("xml",Ub);class cI{constructor(e,n){this.name=e,this.path=n,this.rsrzDict={},this.rsccDict={},this.rciDict={},this.clashDict={},this.clashArray=[],this.geoDict={},this.geoAtomDict={},this.atomDict={},this.clashSele="NONE"}get type(){return"validation"}fromXml(e){Ce&&fe.time("Validation.fromXml");const n=this.rsrzDict,i=this.rsccDict,r=this.rciDict,s=this.clashDict,o=this.clashArray,a=this.geoDict,c=this.geoAtomDict,l=this.atomDict,h=e.getElementsByTagName("Entry");if(h.length===1){const p=h[0].getElementsByTagName("chemical_shift_list");if(p.length===1){const y=p[0].getElementsByTagName("random_coil_index");for(let g=0,m=y.length;g0&&(a[x]=v)}else{const v=g.getElementsByTagName("clash"),b=g.getElementsByTagName("mog-bond-outlier"),_=g.getElementsByTagName("mog-angle-outlier");if(b.length>0||_.length>0||v.length>0){const C={};c[x]=C;for(let w=0,S=v.length;w>>16&65535|0,o=0;n!==0;){n-=o=n>2e3?2e3:n;do s=s+(r=r+e[i++]|0)|0;while(--o);r%=65521,s%=65521}return r|s<<16|0}it.add("validation",class extends Ub{constructor(t,e){super(t,e||{}),this.useDomParser=!0,this.validation=new cI(this.name,this.path)}get __objName(){return"validation"}get isXml(){return!0}_parse(){super._parse(),Ce&&fe.time("ValidationParser._parse "+this.name),this.validation.fromXml(this.xml.data),Ce&&fe.timeEnd("ValidationParser._parse "+this.name)}});var lI=function(){for(var t,e=[],n=0;n<256;n++){t=n;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[n]=t}return e}();function Ii(t,e,n,i){var r=lI,s=i+n;t^=-1;for(var o=i;o>>8^r[255&(t^e[o])];return-1^t}var fh=30,hI=12;function uI(t,e){var n,i,r,s,o,a,c,l,h,u,f,d,p,y,g,m,x,v,b,_,C,w,S,M,B;n=t.state,i=t.next_in,M=t.input,r=i+(t.avail_in-5),s=t.next_out,B=t.output,o=s-(e-t.avail_out),a=s+(t.avail_out-257),c=n.dmax,l=n.wsize,h=n.whave,u=n.wnext,f=n.window,d=n.hold,p=n.bits,y=n.lencode,g=n.distcode,m=(1<>>=b=v>>>24,p-=b,(b=v>>>16&255)===0)B[s++]=65535&v;else{if(!(16&b)){if(!(64&b)){v=y[(65535&v)+(d&(1<>>=b,p-=b),p<15&&(d+=M[i++]<>>=b=v>>>24,p-=b,!(16&(b=v>>>16&255))){if(!(64&b)){v=g[(65535&v)+(d&(1<c){t.msg="invalid distance too far back",n.mode=fh;break e}if(d>>>=b,p-=b,C>(b=s-o)){if((b=C-b)>h&&n.sane){t.msg="invalid distance too far back",n.mode=fh;break e}if(w=0,S=f,u===0){if(w+=l-b,b<_){_-=b;do B[s++]=f[w++];while(--b);w=s-C,S=B}}else if(u2;)B[s++]=S[w++],B[s++]=S[w++],B[s++]=S[w++],_-=3;_&&(B[s++]=S[w++],_>1&&(B[s++]=S[w++]))}else{w=s-C;do B[s++]=B[w++],B[s++]=B[w++],B[s++]=B[w++],_-=3;while(_>2);_&&(B[s++]=B[w++],_>1&&(B[s++]=B[w++]))}break}}break}}while(i>3,d&=(1<<(p-=_<<3))-1,t.next_in=i,t.next_out=s,t.avail_in=i=1&&O[_]===0;_--);if(C>_&&(C=_),_===0)return r[s++]=20971520,r[s++]=20971520,a.bits=1,0;for(b=1;b<_&&O[b]===0;b++);for(C0&&(t===yy||_!==1))return-1;for(k[1]=0,x=1;xmy||t===xy&&B>gy)return 1;for(;;){p=x-S,o[v]d?(y=ne[Y+o[v]],g=U[E+o[v]]):(y=96,g=0),c=1<>S)+(l-=c)]=p<<24|y<<16|g|0;while(l!==0);for(c=1<>=1;if(c!==0?(L&=c-1,L+=c):L=0,v++,--O[x]==0){if(x===_)break;x=e[n+o[v]]}if(x>C&&(L&u)!==h){for(S===0&&(S=C),f+=b,M=1<<(w=x-S);w+S<_&&!((M-=O[w+S])<=0);)w++,M<<=1;if(B+=1<my||t===xy&&B>gy)return 1;r[h=L&u]=C<<24|w<<16|f-s|0}}return L!==0&&(r[f+L]=x-S<<24|64<<16|0),a.bits=C,0}var Hb=1,$b=2,Xo=0,Ni=-2,Wb=1,er=12,Jt=30,gI=852,yI=592;function by(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function xI(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function bI(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,function(n){var i;return n&&n.state?(i=n.state,n.total_in=n.total_out=i.total=0,n.msg="",i.wrap&&(n.adler=1&i.wrap),i.mode=Wb,i.last=0,i.havedict=0,i.dmax=32768,i.head=null,i.hold=0,i.bits=0,i.lencode=i.lendyn=new Int32Array(gI),i.distcode=i.distdyn=new Int32Array(yI),i.sane=1,i.back=-1,Xo):Ni}(t)):Ni}function vI(t,e){var n,i;return t?(i=new xI,t.state=i,i.window=null,n=function(r,s){var o,a;return r&&r.state?(a=r.state,s<0?(o=0,s=-s):(o=1+(s>>4),s<48&&(s&=15)),s&&(s<8||s>15)?Ni:(a.window!==null&&a.wbits!==s&&(a.window=null),a.wrap=o,a.wbits=s,bI(r))):Ni}(t,e),n!==Xo&&(t.state=null),n):Ni}var Tf,Pf,vy=!0;function _I(t){if(vy){var e;for(Tf=new Int32Array(512),Pf=new Int32Array(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(rc(Hb,t.lens,0,288,Tf,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;rc($b,t.lens,0,32,Pf,0,t.work,{bits:5}),vy=!1}t.lencode=Tf,t.lenbits=9,t.distcode=Pf,t.distbits=5}function jb(t,e,n,i){var r,s=t.state;return s.window===null&&(s.wsize=1<=s.wsize?(wo(s.window,e,n-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):((r=s.wsize-s.wnext)>i&&(r=i),wo(s.window,e,n-i,r,s.wnext),(i-=r)?(wo(s.window,e,n-i,i,0),s.wnext=i,s.whave=s.wsize):(s.wnext+=r,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,n.check=Ii(n.check,L,2,0),l=0,h=0,n.mode=2;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&l)<<8)+(l>>8))%31){t.msg="incorrect header check",n.mode=Jt;break}if((15&l)!=8){t.msg="unknown compression method",n.mode=Jt;break}if(h-=4,C=8+(15&(l>>>=4)),n.wbits===0)n.wbits=C;else if(C>n.wbits){t.msg="invalid window size",n.mode=Jt;break}n.dmax=1<>8&1),512&n.flags&&(L[0]=255&l,L[1]=l>>>8&255,n.check=Ii(n.check,L,2,0)),l=0,h=0,n.mode=3;case 3:for(;h<32;){if(a===0)break e;a--,l+=i[s++]<>>8&255,L[2]=l>>>16&255,L[3]=l>>>24&255,n.check=Ii(n.check,L,4,0)),l=0,h=0,n.mode=4;case 4:for(;h<16;){if(a===0)break e;a--,l+=i[s++]<>8),512&n.flags&&(L[0]=255&l,L[1]=l>>>8&255,n.check=Ii(n.check,L,2,0)),l=0,h=0,n.mode=5;case 5:if(1024&n.flags){for(;h<16;){if(a===0)break e;a--,l+=i[s++]<>>8&255,n.check=Ii(n.check,L,2,0)),l=0,h=0}else n.head&&(n.head.extra=null);n.mode=6;case 6:if(1024&n.flags&&((d=n.length)>a&&(d=a),d&&(n.head&&(C=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),wo(n.head.extra,i,s,d,C)),512&n.flags&&(n.check=Ii(n.check,i,d,s)),a-=d,s+=d,n.length-=d),n.length))break e;n.length=0,n.mode=7;case 7:if(2048&n.flags){if(a===0)break e;d=0;do C=i[s+d++],n.head&&C&&n.length<65536&&(n.head.name+=String.fromCharCode(C));while(C&&d>9&1,n.head.done=!0),t.adler=n.check=0,n.mode=er;break;case 10:for(;h<32;){if(a===0)break e;a--,l+=i[s++]<>>=7&h,h-=7&h,n.mode=27;break}for(;h<3;){if(a===0)break e;a--,l+=i[s++]<>>=1)){case 0:n.mode=14;break;case 1:if(_I(n),n.mode=20,e===6){l>>>=2,h-=2;break e}break;case 2:n.mode=17;break;case 3:t.msg="invalid block type",n.mode=Jt}l>>>=2,h-=2;break;case 14:for(l>>>=7&h,h-=7&h;h<32;){if(a===0)break e;a--,l+=i[s++]<>>16^65535)){t.msg="invalid stored block lengths",n.mode=Jt;break}if(n.length=65535&l,l=0,h=0,n.mode=15,e===6)break e;case 15:n.mode=16;case 16:if(d=n.length){if(d>a&&(d=a),d>c&&(d=c),d===0)break e;wo(r,i,s,d,o),a-=d,s+=d,c-=d,o+=d,n.length-=d;break}n.mode=er;break;case 17:for(;h<14;){if(a===0)break e;a--,l+=i[s++]<>>=5,h-=5,n.ndist=1+(31&l),l>>>=5,h-=5,n.ncode=4+(15&l),l>>>=4,h-=4,n.nlen>286||n.ndist>30){t.msg="too many length or distance symbols",n.mode=Jt;break}n.have=0,n.mode=18;case 18:for(;n.have>>=3,h-=3}for(;n.have<19;)n.lens[U[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,S={bits:n.lenbits},w=rc(0,n.lens,0,19,n.lencode,0,n.work,S),n.lenbits=S.bits,w){t.msg="invalid code lengths set",n.mode=Jt;break}n.have=0,n.mode=19;case 19:for(;n.have>>16&255,x=65535&B,!((g=B>>>24)<=h);){if(a===0)break e;a--,l+=i[s++]<>>=g,h-=g,n.lens[n.have++]=x;else{if(x===16){for(M=g+2;h>>=g,h-=g,n.have===0){t.msg="invalid bit length repeat",n.mode=Jt;break}C=n.lens[n.have-1],d=3+(3&l),l>>>=2,h-=2}else if(x===17){for(M=g+3;h>>=g)),l>>>=3,h-=3}else{for(M=g+7;h>>=g)),l>>>=7,h-=7}if(n.have+d>n.nlen+n.ndist){t.msg="invalid bit length repeat",n.mode=Jt;break}for(;d--;)n.lens[n.have++]=C}}if(n.mode===Jt)break;if(n.lens[256]===0){t.msg="invalid code -- missing end-of-block",n.mode=Jt;break}if(n.lenbits=9,S={bits:n.lenbits},w=rc(Hb,n.lens,0,n.nlen,n.lencode,0,n.work,S),n.lenbits=S.bits,w){t.msg="invalid literal/lengths set",n.mode=Jt;break}if(n.distbits=6,n.distcode=n.distdyn,S={bits:n.distbits},w=rc($b,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,S),n.distbits=S.bits,w){t.msg="invalid distances set",n.mode=Jt;break}if(n.mode=20,e===6)break e;case 20:n.mode=21;case 21:if(a>=6&&c>=258){t.next_out=o,t.avail_out=c,t.next_in=s,t.avail_in=a,n.hold=l,n.bits=h,uI(t,f),o=t.next_out,r=t.output,c=t.avail_out,s=t.next_in,i=t.input,a=t.avail_in,l=n.hold,h=n.bits,n.mode===er&&(n.back=-1);break}for(n.back=0;m=(B=n.lencode[l&(1<>>16&255,x=65535&B,!((g=B>>>24)<=h);){if(a===0)break e;a--,l+=i[s++]<>v)])>>>16&255,x=65535&B,!(v+(g=B>>>24)<=h);){if(a===0)break e;a--,l+=i[s++]<>>=v,h-=v,n.back+=v}if(l>>>=g,h-=g,n.back+=g,n.length=x,m===0){n.mode=26;break}if(32&m){n.back=-1,n.mode=er;break}if(64&m){t.msg="invalid literal/length code",n.mode=Jt;break}n.extra=15&m,n.mode=22;case 22:if(n.extra){for(M=n.extra;h>>=n.extra,h-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=23;case 23:for(;m=(B=n.distcode[l&(1<>>16&255,x=65535&B,!((g=B>>>24)<=h);){if(a===0)break e;a--,l+=i[s++]<>v)])>>>16&255,x=65535&B,!(v+(g=B>>>24)<=h);){if(a===0)break e;a--,l+=i[s++]<>>=v,h-=v,n.back+=v}if(l>>>=g,h-=g,n.back+=g,64&m){t.msg="invalid distance code",n.mode=Jt;break}n.offset=x,n.extra=15&m,n.mode=24;case 24:if(n.extra){for(M=n.extra;h>>=n.extra,h-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){t.msg="invalid distance too far back",n.mode=Jt;break}n.mode=25;case 25:if(c===0)break e;if(d=f-c,n.offset>d){if((d=n.offset-d)>n.whave&&n.sane){t.msg="invalid distance too far back",n.mode=Jt;break}d>n.wnext?(d-=n.wnext,p=n.wsize-d):p=n.wnext-d,d>n.length&&(d=n.length),y=n.window}else y=r,p=o-n.offset,d=n.length;d>c&&(d=c),c-=d,n.length-=d;do r[o++]=y[p++];while(--d);n.length===0&&(n.mode=21);break;case 26:if(c===0)break e;r[o++]=n.length,c--,n.mode=21;break;case 27:if(n.wrap){for(;h<32;){if(a===0)break e;a--,l|=i[s++]<=252?6:Lr>=248?5:Lr>=240?4:Lr>=224?3:Lr>=192?2:1;function MI(t){var e,n,i,r,s,o=t.length,a=0;for(r=0;r>>6,e[s++]=128|63&n):n<65536?(e[s++]=224|n>>>12,e[s++]=128|n>>>6&63,e[s++]=128|63&n):(e[s++]=240|n>>>18,e[s++]=128|n>>>12&63,e[s++]=128|n>>>6&63,e[s++]=128|63&n);return e}function AI(t,e){var n,i,r,s,o=e||t.length,a=new Array(2*o);for(i=0,n=0;n4)a[i++]=65533,n+=s-1;else{for(r&=s===2?31:s===3?15:7;s>1&&n1?a[i++]=65533:r<65536?a[i++]=r:(r-=65536,a[i++]=55296|r>>10&1023,a[i++]=56320|1023&r)}return function(c,l){if(l<65537&&(c.subarray&&Xb||!c.subarray&&qb))return String.fromCharCode.apply(null,Vb(c,l));for(var h="",u=0;ut.length&&(e=t.length),n=e-1;n>=0&&(192&t[n])==128;)n--;return n<0||n===0?e:n+Wc[t[n]]>e?n:e}Wc[254]=Wc[254]=1;var ao=0,TI={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"};function PI(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}function EI(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var _y=Object.prototype.toString;function go(t){if(!(this instanceof go))return new go(t);this.options=function(o){for(var a=Array.prototype.slice.call(arguments,1);a.length;){var c=a.shift();if(c){if(typeof c!="object")throw new TypeError(c+"must be non-object");for(var l in c)c.hasOwnProperty(l)&&(o[l]=c[l])}}return o}({chunkSize:16384,windowBits:0,to:""},t||{});var e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,e.windowBits===0&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&!(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new PI,this.strm.avail_out=0;var n,i,r,s=vI(this.strm,e.windowBits);if(s!==ao)throw new Error(TI[s]);this.header=new EI,n=this.strm,i=this.header,n&&n.state&&(!(2&(r=n.state).wrap)||(r.head=i,i.done=!1))}go.prototype.push=function(t,e){var n,i,r,s,o,a,c=this.strm,l=this.options.chunkSize,h=this.options.dictionary,u=!1;if(this.ended)return!1;i=e===~~e?e:e===!0?4:0,typeof t=="string"?c.input=function(f){for(var d=new Uint8Array(f.length),p=0,y=d.length;p0||c.avail_out===0)&&n!==1);return n===1&&(i=4),i===4?(n=function(f){if(!f||!f.state)return Ni;var d=f.state;return d.window&&(d.window=null),f.state=null,Xo}(this.strm),this.onEnd(n),this.ended=!0,n===ao):i!==2||(this.onEnd(ao),c.avail_out=0,!0)},go.prototype.onData=function(t){this.chunks.push(t)},go.prototype.onEnd=function(t){t===ao&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=function(e){var n,i,r,s,o,a;for(r=0,n=0,i=e.length;nObject.assign(Object.assign({},e),{[n]:n}),{})}}Va("auto","low","medium","high"),io(1,5,-1),no(1,10,0),no(1,10,0),no(1,10,0),io(1,100,0),io(1,100,0),Cy(200,0),Va("scene","camera"),Va("relative","absolute"),io(1,100,0),io(1,100,0),Va("perspective","orthographic","stereo"),no(3,1,.01),io(1,120,15),no(2,10,0),no(2,10,0),Cy(1e4,-1),Va(...Object.keys(cb));function DI(t,e,n,i,r){const s=n.residueStore.count,o=n.getResidueProxy(),a=t.msaview.relativePxToBp(e,i);for(let c=0;c{if(g){const m=new oP(g);a(m)}},[]);return Ai.useEffect(()=>()=>o==null?void 0:o.dispose(),[o]),Ai.useEffect(()=>{!p.length||!o||(async()=>{window.addEventListener("resize",()=>{o.handleResize()});const g=await Promise.all(p.map(m=>o.loadFile(`data://${m.structure.pdb}.pdb`)));s(g),o.signals.hovered.add(m=>{var x;if(m&&(m.atom||m.bond)){const v=m.atom||m.closestBondAtom;h.setMouseoveredColumn(v.resno-((x=p[0])==null?void 0:x.structure.startPos),v.chainname,m.picker.structure.name)}})})()},[h,p,o]),Ai.useEffect(()=>{if(o){for(const g of r)g.removeAllRepresentations(),g.addRepresentation(n,{sele:u});o.autoView()}},[n,r,o,u]),Ai.useEffect(()=>{p.length&&!c&&r.forEach((g,m)=>{if(e.current.length&&g.removeAnnotation(e.current[m]),e.current=[],d!==void 0){const x=g.structure,v=DI(t,p[m].id,x,d,p[0].structure.startPos);if(v){const b=x.getAtomProxy();b.index=v.atomOffset,e.current.push(g.addAnnotation(b.positionToVector3(),v.qualifiedName()))}}o==null||o.viewer.requestRender()})},[t,d,p,o==null?void 0:o.viewer,r,c]),f.length?Ci.jsxs("div",{style:{padding:20},children:[Ci.jsxs("div",{style:{display:"flex",alignItems:"center"},children:[Ci.jsx(Jb,{onClick:()=>h.clearSelectedStructures(),variant:"contained",children:"Clear"}),Ci.jsx("div",{style:{width:20}}),Ci.jsxs(Qb,{value:n,onChange:g=>i(g.target.value),children:[Ci.jsx(Dm,{value:"cartoon",children:"cartoon"}),Ci.jsx(Dm,{value:"ball+stick",children:"ball+stick"})]}),Ci.jsx("div",{style:{width:20}}),Ci.jsx(ev,{variant:"outlined",label:"Selection",value:u,onChange:g=>t.setNGLSelection(g.target.value)})]}),Ci.jsx("div",{ref:y,style:{width:600,height:400},onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1)})]}):null});export{OI as default}; -//# sourceMappingURL=ProteinPanel-GOXt-lAH.js.map +//# sourceMappingURL=ProteinPanel-CR1YkZo1.js.map diff --git a/assets/ProteinPanel-GOXt-lAH.js.map b/assets/ProteinPanel-CR1YkZo1.js.map similarity index 99% rename from assets/ProteinPanel-GOXt-lAH.js.map rename to assets/ProteinPanel-CR1YkZo1.js.map index 47ebf129..0128928d 100644 --- a/assets/ProteinPanel-GOXt-lAH.js.map +++ b/assets/ProteinPanel-CR1YkZo1.js.map @@ -1 +1 @@ -{"version":3,"file":"ProteinPanel-GOXt-lAH.js","sources":["../../../node_modules/three/build/three.module.js","../../../node_modules/chroma-js/chroma.js","../../../node_modules/signals/dist/signals.js","../../../node_modules/sprintf-js/src/sprintf.js","../../../node_modules/ngl/dist/ngl.esm.js","../../src/util.ts","../../src/ProteinPanel.tsx"],"sourcesContent":["// Polyfills\n\nif ( Number.EPSILON === undefined ) {\n\n\tNumber.EPSILON = Math.pow( 2, - 52 );\n\n}\n\nif ( Number.isInteger === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger\n\n\tNumber.isInteger = function ( value ) {\n\n\t\treturn typeof value === 'number' && isFinite( value ) && Math.floor( value ) === value;\n\n\t};\n\n}\n\n//\n\nif ( Math.sign === undefined ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign\n\n\tMath.sign = function ( x ) {\n\n\t\treturn ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x;\n\n\t};\n\n}\n\nif ( 'name' in Function.prototype === false ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name\n\n\tObject.defineProperty( Function.prototype, 'name', {\n\n\t\tget: function () {\n\n\t\t\treturn this.toString().match( /^\\s*function\\s*([^\\(\\s]*)/ )[ 1 ];\n\n\t\t}\n\n\t} );\n\n}\n\nif ( Object.assign === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n\n\tObject.assign = function ( target ) {\n\n\t\tif ( target === undefined || target === null ) {\n\n\t\t\tthrow new TypeError( 'Cannot convert undefined or null to object' );\n\n\t\t}\n\n\t\tconst output = Object( target );\n\n\t\tfor ( let index = 1; index < arguments.length; index ++ ) {\n\n\t\t\tconst source = arguments[ index ];\n\n\t\t\tif ( source !== undefined && source !== null ) {\n\n\t\t\t\tfor ( const nextKey in source ) {\n\n\t\t\t\t\tif ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) {\n\n\t\t\t\t\t\toutput[ nextKey ] = source[ nextKey ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn output;\n\n\t};\n\n}\n\nconst REVISION = '118';\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst FrontFaceDirectionCW = 0;\nconst FrontFaceDirectionCCW = 1;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst FlatShading = 1;\nconst SmoothShading = 2;\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst CineonToneMapping = 3;\nconst ACESFilmicToneMapping = 4;\nconst CustomToneMapping = 5;\n\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst CubeUVRefractionMapping = 307;\nconst RepeatWrapping = 1000;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedShort565Type = 1019;\nconst UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBFormat = 1022;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst RGBEFormat = RGBAFormat;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBIntegerFormat = 1032;\nconst RGBAIntegerFormat = 1033;\n\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst SRGB8_ALPHA8_ASTC_4x4_Format = 37840;\nconst SRGB8_ALPHA8_ASTC_5x4_Format = 37841;\nconst SRGB8_ALPHA8_ASTC_5x5_Format = 37842;\nconst SRGB8_ALPHA8_ASTC_6x5_Format = 37843;\nconst SRGB8_ALPHA8_ASTC_6x6_Format = 37844;\nconst SRGB8_ALPHA8_ASTC_8x5_Format = 37845;\nconst SRGB8_ALPHA8_ASTC_8x6_Format = 37846;\nconst SRGB8_ALPHA8_ASTC_8x8_Format = 37847;\nconst SRGB8_ALPHA8_ASTC_10x5_Format = 37848;\nconst SRGB8_ALPHA8_ASTC_10x6_Format = 37849;\nconst SRGB8_ALPHA8_ASTC_10x8_Format = 37850;\nconst SRGB8_ALPHA8_ASTC_10x10_Format = 37851;\nconst SRGB8_ALPHA8_ASTC_12x10_Format = 37852;\nconst SRGB8_ALPHA8_ASTC_12x12_Format = 37853;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\nconst LinearEncoding = 3000;\nconst sRGBEncoding = 3001;\nconst GammaEncoding = 3007;\nconst RGBEEncoding = 3002;\nconst LogLuvEncoding = 3003;\nconst RGBM7Encoding = 3004;\nconst RGBM16Encoding = 3005;\nconst RGBDEncoding = 3006;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\n\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\n\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\n\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nfunction EventDispatcher() {}\n\nObject.assign( EventDispatcher.prototype, {\n\n\taddEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t},\n\n\thasEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tconst listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t},\n\n\tremoveEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tconst index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\t// Make a copy, in case listeners are removed while iterating.\n\t\t\tconst array = listenerArray.slice( 0 );\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author thezwap\n */\n\nconst _lut = [];\n\nfor ( let i = 0; i < 256; i ++ ) {\n\n\t_lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );\n\n}\n\nconst MathUtils = {\n\n\tDEG2RAD: Math.PI / 180,\n\tRAD2DEG: 180 / Math.PI,\n\n\tgenerateUUID: function () {\n\n\t\t// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n\n\t\tconst d0 = Math.random() * 0xffffffff | 0;\n\t\tconst d1 = Math.random() * 0xffffffff | 0;\n\t\tconst d2 = Math.random() * 0xffffffff | 0;\n\t\tconst d3 = Math.random() * 0xffffffff | 0;\n\t\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t\t// .toUpperCase() here flattens concatenated strings to save heap memory space.\n\t\treturn uuid.toUpperCase();\n\n\t},\n\n\tclamp: function ( value, min, max ) {\n\n\t\treturn Math.max( min, Math.min( max, value ) );\n\n\t},\n\n\t// compute euclidian modulo of m % n\n\t// https://en.wikipedia.org/wiki/Modulo_operation\n\n\teuclideanModulo: function ( n, m ) {\n\n\t\treturn ( ( n % m ) + m ) % m;\n\n\t},\n\n\t// Linear mapping from range to range \n\n\tmapLinear: function ( x, a1, a2, b1, b2 ) {\n\n\t\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n\t},\n\n\t// https://en.wikipedia.org/wiki/Linear_interpolation\n\n\tlerp: function ( x, y, t ) {\n\n\t\treturn ( 1 - t ) * x + t * y;\n\n\t},\n\n\t// http://en.wikipedia.org/wiki/Smoothstep\n\n\tsmoothstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * ( 3 - 2 * x );\n\n\t},\n\n\tsmootherstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n\t},\n\n\t// Random integer from interval\n\n\trandInt: function ( low, high ) {\n\n\t\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n\t},\n\n\t// Random float from interval\n\n\trandFloat: function ( low, high ) {\n\n\t\treturn low + Math.random() * ( high - low );\n\n\t},\n\n\t// Random float from <-range/2, range/2> interval\n\n\trandFloatSpread: function ( range ) {\n\n\t\treturn range * ( 0.5 - Math.random() );\n\n\t},\n\n\tdegToRad: function ( degrees ) {\n\n\t\treturn degrees * MathUtils.DEG2RAD;\n\n\t},\n\n\tradToDeg: function ( radians ) {\n\n\t\treturn radians * MathUtils.RAD2DEG;\n\n\t},\n\n\tisPowerOfTwo: function ( value ) {\n\n\t\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n\t},\n\n\tceilPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tfloorPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tsetQuaternionFromProperEuler: function ( q, a, b, c, order ) {\n\n\t\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t\t// rotations are applied to the axes in the order specified by 'order'\n\t\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t\t// angles are in radians\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c2 = cos( b / 2 );\n\t\tconst s2 = sin( b / 2 );\n\n\t\tconst c13 = cos( ( a + c ) / 2 );\n\t\tconst s13 = sin( ( a + c ) / 2 );\n\n\t\tconst c1_3 = cos( ( a - c ) / 2 );\n\t\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\t\tconst c3_1 = cos( ( c - a ) / 2 );\n\t\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYX':\n\t\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZY':\n\t\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXZ':\n\t\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZX':\n\t\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXY':\n\t\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYZ':\n\t\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author philogb / http://blog.thejit.org/\n * @author egraether / http://egraether.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nfunction Vector2( x = 0, y = 0 ) {\n\n\tthis.x = x;\n\tthis.y = y;\n\n}\n\nObject.defineProperties( Vector2.prototype, {\n\n\t\"width\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.x = value;\n\n\t\t}\n\n\t},\n\n\t\"height\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.y = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tisVector2: true,\n\n\tset: function ( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t},\n\n\tcross: function ( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tangle: function () {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t},\n\n\trotateAround: function ( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t},\n\n\trandom: function () {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n * @author tschw\n */\n\nfunction Matrix3() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0,\n\t\t0, 1, 0,\n\t\t0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix3.prototype, {\n\n\tisMatrix3: true,\n\n\tset: function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrix4: function ( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tdeterminant: function () {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t},\n\n\tgetInverse: function ( matrix, throwOnDegenerate ) {\n\n\t\tif ( throwOnDegenerate !== undefined ) {\n\n\t\t\tconsole.warn( \"THREE.Matrix3: .getInverse() can no longer be configured to throw on degenerate.\" );\n\n\t\t}\n\n\t\tconst me = matrix.elements,\n\t\t\tte = this.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ],\n\t\t\tn12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ],\n\t\t\tn13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\ttranspose: function () {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tgetNormalMatrix: function ( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).getInverse( this ).transpose();\n\n\t},\n\n\ttransposeIntoArray: function ( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetUvTransform: function ( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t},\n\n\tscale: function ( sx, sy ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx;\n\t\tte[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy;\n\n\t\treturn this;\n\n\t},\n\n\trotate: function ( theta ) {\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tconst te = this.elements;\n\n\t\tconst a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ];\n\t\tconst a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ];\n\n\t\tte[ 0 ] = c * a11 + s * a21;\n\t\tte[ 3 ] = c * a12 + s * a22;\n\t\tte[ 6 ] = c * a13 + s * a23;\n\n\t\tte[ 1 ] = - s * a11 + c * a21;\n\t\tte[ 4 ] = - s * a12 + c * a22;\n\t\tte[ 7 ] = - s * a13 + c * a23;\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( tx, ty ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ];\n\t\tte[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n */\n\nlet _canvas;\n\nconst ImageUtils = {\n\n\tgetDataURL: function ( image ) {\n\n\t\tif ( /^data:/i.test( image.src ) ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tif ( typeof HTMLCanvasElement == 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tlet canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tconst context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n */\n\nlet textureId = 0;\n\nfunction Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\n\tthis.image = image !== undefined ? image : Texture.DEFAULT_IMAGE;\n\tthis.mipmaps = [];\n\n\tthis.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING;\n\n\tthis.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping;\n\tthis.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping;\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearMipmapLinearFilter;\n\n\tthis.anisotropy = anisotropy !== undefined ? anisotropy : 1;\n\n\tthis.format = format !== undefined ? format : RGBAFormat;\n\tthis.internalFormat = null;\n\tthis.type = type !== undefined ? type : UnsignedByteType;\n\n\tthis.offset = new Vector2( 0, 0 );\n\tthis.repeat = new Vector2( 1, 1 );\n\tthis.center = new Vector2( 0, 0 );\n\tthis.rotation = 0;\n\n\tthis.matrixAutoUpdate = true;\n\tthis.matrix = new Matrix3();\n\n\tthis.generateMipmaps = true;\n\tthis.premultiplyAlpha = false;\n\tthis.flipY = true;\n\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t//\n\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\tthis.encoding = encoding !== undefined ? encoding : LinearEncoding;\n\n\tthis.version = 0;\n\tthis.onUpdate = null;\n\n}\n\nTexture.DEFAULT_IMAGE = undefined;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nTexture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Texture,\n\n\tisTexture: true,\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.image = source.image;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.internalFormat = source.internalFormat;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.encoding = source.encoding;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\tmapping: this.mapping,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\ttype: this.type,\n\t\t\tencoding: this.encoding,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( this.image !== undefined ) {\n\n\t\t\t// TODO: Move to THREE.Image\n\n\t\t\tconst image = this.image;\n\n\t\t\tif ( image.uuid === undefined ) {\n\n\t\t\t\timage.uuid = MathUtils.generateUUID(); // UGH\n\n\t\t\t}\n\n\t\t\tif ( ! isRootObject && meta.images[ image.uuid ] === undefined ) {\n\n\t\t\t\tlet url;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\t// process array of images e.g. CubeTexture\n\n\t\t\t\t\turl = [];\n\n\t\t\t\t\tfor ( let i = 0, l = image.length; i < l; i ++ ) {\n\n\t\t\t\t\t\turl.push( ImageUtils.getDataURL( image[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// process single image\n\n\t\t\t\t\turl = ImageUtils.getDataURL( image );\n\n\t\t\t\t}\n\n\t\t\t\tmeta.images[ image.uuid ] = {\n\t\t\t\t\tuuid: image.uuid,\n\t\t\t\t\turl: url\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\toutput.image = image.uuid;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t},\n\n\ttransformUv: function ( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n} );\n\nObject.defineProperty( Texture.prototype, \"needsUpdate\", {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Vector4( x = 0, y = 0, z = 0, w = 1 ) {\n\n\tthis.x = x;\n\tthis.y = y;\n\tthis.z = z;\n\tthis.w = w;\n\n}\n\nObject.defineProperties( Vector4.prototype, {\n\n\t\"width\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.z = value;\n\n\t\t}\n\n\t},\n\n\t\"height\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.w;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.w = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tisVector4: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tsetAxisAngleFromQuaternion: function ( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetAxisAngleFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t},\n\n\trandom: function () {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author szimek / https://github.com/szimek/\n * @author alteredq / http://alteredqualia.com/\n * @author Marius Kintel / https://github.com/kintel\n */\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nfunction WebGLRenderTarget( width, height, options ) {\n\n\tthis.width = width;\n\tthis.height = height;\n\n\tthis.scissor = new Vector4( 0, 0, width, height );\n\tthis.scissorTest = false;\n\n\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\toptions = options || {};\n\n\tthis.texture = new Texture( undefined, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\tthis.texture.image = {};\n\tthis.texture.image.width = width;\n\tthis.texture.image.height = height;\n\n\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true;\n\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n}\n\nWebGLRenderTarget.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: WebGLRenderTarget,\n\n\tisWebGLRenderTarget: true,\n\n\tsetSize: function ( width, height ) {\n\n\t\tif ( this.width !== width || this.height !== height ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n * @author Matt DesLauriers / @mattdesl\n */\n\nfunction WebGLMultisampleRenderTarget( width, height, options ) {\n\n\tWebGLRenderTarget.call( this, width, height, options );\n\n\tthis.samples = 4;\n\n}\n\nWebGLMultisampleRenderTarget.prototype = Object.assign( Object.create( WebGLRenderTarget.prototype ), {\n\n\tconstructor: WebGLMultisampleRenderTarget,\n\n\tisWebGLMultisampleRenderTarget: true,\n\n\tcopy: function ( source ) {\n\n\t\tWebGLRenderTarget.prototype.copy.call( this, source );\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nfunction Quaternion( x = 0, y = 0, z = 0, w = 1 ) {\n\n\tthis._x = x;\n\tthis._y = y;\n\tthis._z = z;\n\tthis._w = w;\n\n}\n\nObject.assign( Quaternion, {\n\n\tslerp: function ( qa, qb, qm, t ) {\n\n\t\treturn qm.copy( qa ).slerp( qb, t );\n\n\t},\n\n\tslerpFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t,\n\n\t\t\t\tcos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t},\n\n\tmultiplyQuaternionsFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n} );\n\nObject.defineProperties( Quaternion.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tw: {\n\n\t\tget: function () {\n\n\t\t\treturn this._w;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._w = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Quaternion.prototype, {\n\n\tisQuaternion: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t},\n\n\tcopy: function ( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromEuler: function ( euler, update ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler.order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromAxisAngle: function ( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromUnitVectors: function ( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tconst EPS = 0.000001;\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < EPS ) {\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t},\n\n\tangleTo: function ( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( MathUtils.clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t},\n\n\trotateTowards: function ( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t},\n\n\tinverse: function () {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t},\n\n\tconjugate: function () {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( q, p ) {\n\n\t\tif ( p !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t}\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t},\n\n\tpremultiply: function ( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t},\n\n\tmultiplyQuaternions: function ( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tslerp: function ( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize();\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\treturn this;\n\n\t},\n\n\t_onChange: function ( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\t_onChangeCallback: function () {}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nconst _vector = new Vector3();\nconst _quaternion = new Quaternion();\n\nfunction Vector3( x = 0, y = 0, z = 0 ) {\n\n\tthis.x = x;\n\tthis.y = y;\n\tthis.z = z;\n\n}\n\nObject.assign( Vector3.prototype, {\n\n\tisVector3: true,\n\n\tset: function ( x, y, z ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t}\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyVectors: function ( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyEuler: function ( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\treturn this.applyQuaternion( _quaternion.setFromEuler( euler ) );\n\n\t},\n\n\tapplyAxisAngle: function ( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion.setFromAxisAngle( axis, angle ) );\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyNormalMatrix: function ( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tconst ix = qw * x + qy * z - qz * y;\n\t\tconst iy = qw * y + qz * x - qx * z;\n\t\tconst iz = qw * z + qx * y - qy * x;\n\t\tconst iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t},\n\n\tproject: function ( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t},\n\n\tunproject: function ( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t},\n\n\ttransformDirection: function ( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t},\n\n\t// TODO lengthSquared?\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tcross: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\treturn this.crossVectors( this, v );\n\n\t},\n\n\tcrossVectors: function ( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t},\n\n\tprojectOnVector: function ( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t},\n\n\tprojectOnPlane: function ( planeNormal ) {\n\n\t\t_vector.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector );\n\n\t},\n\n\treflect: function ( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t},\n\n\tangleTo: function ( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( MathUtils.clamp( theta, - 1, 1 ) );\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t},\n\n\tsetFromSpherical: function ( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t},\n\n\tsetFromSphericalCoords: function ( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCylindrical: function ( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t},\n\n\tsetFromCylindricalCoords: function ( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixPosition: function ( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixScale: function ( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixColumn: function ( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t},\n\n\tsetFromMatrix3Column: function ( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t},\n\n\trandom: function () {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nconst _v1 = new Vector3();\nconst _m1 = new Matrix4();\nconst _zero = new Vector3( 0, 0, 0 );\nconst _one = new Vector3( 1, 1, 1 );\nconst _x = new Vector3();\nconst _y = new Vector3();\nconst _z = new Vector3();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author jordi_ros / http://plattsoft.com\n * @author D1plo1d / http://github.com/D1plo1d\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author timknip / http://www.floorplanner.com/\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Matrix4() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0, 0,\n\t\t0, 1, 0, 0,\n\t\t0, 0, 1, 0,\n\t\t0, 0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix4.prototype, {\n\n\tisMatrix4: true,\n\n\tset: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t},\n\n\tcopyPosition: function ( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmakeBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\textractRotation: function ( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationFromEuler: function ( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationFromQuaternion: function ( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t},\n\n\tlookAt: function ( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( m, n ) {\n\n\t\tif ( n !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t}\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tdeterminant: function () {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t},\n\n\ttranspose: function () {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tsetPosition: function ( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetInverse: function ( m, throwOnDegenerate ) {\n\n\t\tif ( throwOnDegenerate !== undefined ) {\n\n\t\t\tconsole.warn( \"THREE.Matrix4: .getInverse() can no longer be configured to throw on degenerate.\" );\n\n\t\t}\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\t\t\tme = m.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ],\n\t\t\tn12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ],\n\t\t\tn13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ],\n\t\t\tn14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxScaleOnAxis: function () {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t},\n\n\tmakeTranslation: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationX: function ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationY: function ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationZ: function ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationAxis: function ( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\t return this;\n\n\t},\n\n\tmakeScale: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeShear: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, y, z, 0,\n\t\t\tx, 1, z, 0,\n\t\t\tx, y, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tcompose: function ( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tdecompose: function ( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tlet sy = _v1.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tlet sz = _v1.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1.elements[ 0 ] *= invSX;\n\t\t_m1.elements[ 1 ] *= invSX;\n\t\t_m1.elements[ 2 ] *= invSX;\n\n\t\t_m1.elements[ 4 ] *= invSY;\n\t\t_m1.elements[ 5 ] *= invSY;\n\t\t_m1.elements[ 6 ] *= invSY;\n\n\t\t_m1.elements[ 8 ] *= invSZ;\n\t\t_m1.elements[ 9 ] *= invSZ;\n\t\t_m1.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t},\n\n\tmakePerspective: function ( left, right, top, bottom, near, far ) {\n\n\t\tif ( far === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' );\n\n\t\t}\n\n\t\tconst te = this.elements;\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\t\tconst c = - ( far + near ) / ( far - near );\n\t\tconst d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t},\n\n\tmakeOrthographic: function ( left, right, top, bottom, near, far ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\t\tconst z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nconst _matrix = new Matrix4();\nconst _quaternion$1 = new Quaternion();\n\nfunction Euler( x = 0, y = 0, z = 0, order = Euler.DefaultOrder ) {\n\n\tthis._x = x;\n\tthis._y = y;\n\tthis._z = z;\n\tthis._order = order;\n\n}\n\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nEuler.DefaultOrder = 'XYZ';\n\nObject.defineProperties( Euler.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\torder: {\n\n\t\tget: function () {\n\n\t\t\treturn this._order;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._order = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Euler.prototype, {\n\n\tisEuler: true,\n\n\tset: function ( x, y, z, order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order || this._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t},\n\n\tcopy: function ( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m, order, update ) {\n\n\t\tconst clamp = MathUtils.clamp;\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\torder = order || this._order;\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromQuaternion: function ( q, order, update ) {\n\n\t\t_matrix.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix, order, update );\n\n\t},\n\n\tsetFromVector3: function ( v, order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order || this._order );\n\n\t},\n\n\treorder: function ( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$1.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$1, newOrder );\n\n\t},\n\n\tequals: function ( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t},\n\n\tfromArray: function ( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t},\n\n\ttoVector3: function ( optionalResult ) {\n\n\t\tif ( optionalResult ) {\n\n\t\t\treturn optionalResult.set( this._x, this._y, this._z );\n\n\t\t} else {\n\n\t\t\treturn new Vector3( this._x, this._y, this._z );\n\n\t\t}\n\n\t},\n\n\t_onChange: function ( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\t_onChangeCallback: function () {}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Layers() {\n\n\tthis.mask = 1 | 0;\n\n}\n\nObject.assign( Layers.prototype, {\n\n\tset: function ( channel ) {\n\n\t\tthis.mask = 1 << channel | 0;\n\n\t},\n\n\tenable: function ( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t},\n\n\tenableAll: function () {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t},\n\n\ttoggle: function ( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t},\n\n\tdisable: function ( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t},\n\n\tdisableAll: function () {\n\n\t\tthis.mask = 0;\n\n\t},\n\n\ttest: function ( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n} );\n\nlet _object3DId = 0;\n\nconst _v1$1 = new Vector3();\nconst _q1 = new Quaternion();\nconst _m1$1 = new Matrix4();\nconst _target = new Vector3();\n\nconst _position = new Vector3();\nconst _scale = new Vector3();\nconst _quaternion$2 = new Quaternion();\n\nconst _xAxis = new Vector3( 1, 0, 0 );\nconst _yAxis = new Vector3( 0, 1, 0 );\nconst _zAxis = new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author elephantatwork / www.elephantatwork.ch\n */\n\nfunction Object3D() {\n\n\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Object3D';\n\n\tthis.parent = null;\n\tthis.children = [];\n\n\tthis.up = Object3D.DefaultUp.clone();\n\n\tconst position = new Vector3();\n\tconst rotation = new Euler();\n\tconst quaternion = new Quaternion();\n\tconst scale = new Vector3( 1, 1, 1 );\n\n\tfunction onRotationChange() {\n\n\t\tquaternion.setFromEuler( rotation, false );\n\n\t}\n\n\tfunction onQuaternionChange() {\n\n\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t}\n\n\trotation._onChange( onRotationChange );\n\tquaternion._onChange( onQuaternionChange );\n\n\tObject.defineProperties( this, {\n\t\tposition: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: position\n\t\t},\n\t\trotation: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: rotation\n\t\t},\n\t\tquaternion: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: quaternion\n\t\t},\n\t\tscale: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: scale\n\t\t},\n\t\tmodelViewMatrix: {\n\t\t\tvalue: new Matrix4()\n\t\t},\n\t\tnormalMatrix: {\n\t\t\tvalue: new Matrix3()\n\t\t}\n\t} );\n\n\tthis.matrix = new Matrix4();\n\tthis.matrixWorld = new Matrix4();\n\n\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\tthis.matrixWorldNeedsUpdate = false;\n\n\tthis.layers = new Layers();\n\tthis.visible = true;\n\n\tthis.castShadow = false;\n\tthis.receiveShadow = false;\n\n\tthis.frustumCulled = true;\n\tthis.renderOrder = 0;\n\n\tthis.userData = {};\n\n}\n\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nObject3D.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Object3D,\n\n\tisObject3D: true,\n\n\tonBeforeRender: function () {},\n\tonAfterRender: function () {},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t},\n\n\tsetRotationFromAxisAngle: function ( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t},\n\n\tsetRotationFromEuler: function ( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t},\n\n\tsetRotationFromMatrix: function ( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t},\n\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t},\n\n\trotateOnAxis: function ( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t},\n\n\trotateOnWorldAxis: function ( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t},\n\n\ttranslateOnAxis: function ( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$1.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$1.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t},\n\n\ttranslateX: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t},\n\n\ttranslateY: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t},\n\n\ttranslateZ: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t},\n\n\tlocalToWorld: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t},\n\n\tworldToLocal: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( _m1$1.getInverse( this.matrixWorld ) );\n\n\t},\n\n\tlookAt: function ( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$1 );\n\t\t\tthis.quaternion.premultiply( _q1.inverse() );\n\n\t\t}\n\n\t},\n\n\tadd: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object can't be added as a child of itself.\", object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( ( object && object.isObject3D ) ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t} else {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object not an instance of THREE.Object3D.\", object );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tremove: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tattach: function ( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.getInverse( this.matrixWorld );\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$1 );\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t},\n\n\tgetObjectById: function ( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t},\n\n\tgetObjectByName: function ( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t},\n\n\tgetObjectByProperty: function ( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tgetWorldPosition: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldPosition() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t},\n\n\tgetWorldQuaternion: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldQuaternion() target is now required' );\n\t\t\ttarget = new Quaternion();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tthis.matrixWorld.decompose( _position, target, _scale );\n\n\t\treturn target;\n\n\t},\n\n\tgetWorldScale: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldScale() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion$2, target );\n\n\t\treturn target;\n\n\t},\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t},\n\n\traycast: function () {},\n\n\ttraverse: function ( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseVisible: function ( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseAncestors: function ( callback ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t},\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( force );\n\n\t\t}\n\n\t},\n\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.parent === null ) {\n\n\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t} else {\n\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t}\n\n\t\t// update children\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateWorldMatrix( false, true );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tconst object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t},\n\n\tclone: function ( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t},\n\n\tcopy: function ( source, recursive ) {\n\n\t\tif ( recursive === undefined ) recursive = true;\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Scene() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Scene';\n\n\tthis.background = null;\n\tthis.environment = null;\n\tthis.fog = null;\n\n\tthis.overrideMaterial = null;\n\n\tthis.autoUpdate = true; // checked by the renderer\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\nScene.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Scene,\n\n\tisScene: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tif ( this.background !== null ) data.object.background = this.background.toJSON( meta );\n\t\tif ( this.environment !== null ) data.object.environment = this.environment.toJSON( meta );\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\treturn data;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nconst _points = [\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3()\n];\n\nconst _vector$1 = new Vector3();\n\nconst _box = new Box3();\n\n// triangle centered vertices\n\nconst _v0 = new Vector3();\nconst _v1$2 = new Vector3();\nconst _v2 = new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = new Vector3();\nconst _f1 = new Vector3();\nconst _f2 = new Vector3();\n\nconst _center = new Vector3();\nconst _extents = new Vector3();\nconst _triangleNormal = new Vector3();\nconst _testAxis = new Vector3();\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity );\n\n}\n\n\nObject.assign( Box3.prototype, {\n\n\tisBox3: true,\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromArray: function ( array ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tconst x = array[ i ];\n\t\t\tconst y = array[ i + 1 ];\n\t\t\tconst z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromBufferAttribute: function ( attribute ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\tconst x = attribute.getX( i );\n\t\t\tconst y = attribute.getY( i );\n\t\t\tconst z = attribute.getZ( i );\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function ( center, size ) {\n\n\t\tconst halfSize = _vector$1.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromObject: function ( object ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getSize() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\texpandByObject: function ( object ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t}\n\n\t\t\t_box.copy( geometry.boundingBox );\n\t\t\t_box.applyMatrix4( object.matrixWorld );\n\n\t\t\tthis.union( _box );\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getParameter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$1 );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$1.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t},\n\n\tintersectsTriangle: function ( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0.subVectors( triangle.a, _center );\n\t\t_v1$2.subVectors( triangle.b, _center );\n\t\t_v2.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$2, _v0 );\n\t\t_f1.subVectors( _v2, _v1$2 );\n\t\t_f2.subVectors( _v0, _v2 );\n\n\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0, _v1$2, _v2, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0, _v1$2, _v2, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0, _v1$2, _v2, _extents );\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\tconst clampedPoint = _vector$1.copy( point ).clamp( this.min, this.max );\n\n\t\treturn clampedPoint.sub( point ).length();\n\n\t},\n\n\tgetBoundingSphere: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.error( 'THREE.Box3: .getBoundingSphere() target is now required' );\n\t\t\t//target = new Sphere(); // removed to avoid cyclic dependency\n\n\t\t}\n\n\t\tthis.getCenter( target.center );\n\n\t\ttarget.radius = this.getSize( _vector$1 ).length() * 0.5;\n\n\t\treturn target;\n\n\t},\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the seperating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the seperating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is seperating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nconst _box$1 = new Box3();\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Sphere( center, radius ) {\n\n\tthis.center = ( center !== undefined ) ? center : new Vector3();\n\tthis.radius = ( radius !== undefined ) ? radius : - 1;\n\n}\n\nObject.assign( Sphere.prototype, {\n\n\tset: function ( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$1.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\treturn ( this.radius < 0 );\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = - 1;\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t},\n\n\tgetBoundingBox: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .getBoundingBox() target is now required' );\n\t\t\ttarget = new Box3();\n\n\t\t}\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n} );\n\nconst _vector$2 = new Vector3();\nconst _segCenter = new Vector3();\nconst _segDir = new Vector3();\nconst _diff = new Vector3();\n\nconst _edge1 = new Vector3();\nconst _edge2 = new Vector3();\nconst _normal = new Vector3();\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Ray( origin, direction ) {\n\n\tthis.origin = ( origin !== undefined ) ? origin : new Vector3();\n\tthis.direction = ( direction !== undefined ) ? direction : new Vector3( 0, 0, - 1 );\n\n}\n\nObject.assign( Ray.prototype, {\n\n\tset: function ( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t},\n\n\tlookAt: function ( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\trecast: function ( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$2 ) );\n\n\t\treturn this;\n\n\t},\n\n\tclosestPointToPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t},\n\n\tdistanceSqToPoint: function ( point ) {\n\n\t\tconst directionDistance = _vector$2.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$2.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\treturn _vector$2.distanceToSquared( point );\n\n\t},\n\n\tdistanceSqToSegment: function ( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segDir ).multiplyScalar( s1 ).add( _segCenter );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t},\n\n\tintersectSphere: function ( sphere, target ) {\n\n\t\t_vector$2.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$2.dot( this.direction );\n\t\tconst d2 = _vector$2.dot( _vector$2 ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t},\n\n\tdistanceToPlane: function ( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t},\n\n\tintersectPlane: function ( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t},\n\n\tintersectBox: function ( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn this.intersectBox( box, _vector$2 ) !== null;\n\n\t},\n\n\tintersectTriangle: function ( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = - 1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t},\n\n\tapplyMatrix4: function ( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nconst _vector1 = new Vector3();\nconst _vector2 = new Vector3();\nconst _normalMatrix = new Matrix3();\n\nfunction Plane( normal, constant ) {\n\n\t// normal is assumed to be normalized\n\n\tthis.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 );\n\tthis.constant = ( constant !== undefined ) ? constant : 0;\n\n}\n\nObject.assign( Plane.prototype, {\n\n\tisPlane: true,\n\n\tset: function ( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponents: function ( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromNormalAndCoplanarPoint: function ( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCoplanarPoints: function ( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t},\n\n\tdistanceToSphere: function ( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t},\n\n\tprojectPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .projectPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\n\n\t},\n\n\tintersectLine: function ( line, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .intersectLine() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn undefined;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn undefined;\n\n\t\t}\n\n\t\treturn target.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t},\n\n\tintersectsLine: function ( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t},\n\n\tcoplanarPoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .coplanarPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t},\n\n\tapplyMatrix4: function ( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _v0$1 = new Vector3();\nconst _v1$3 = new Vector3();\nconst _v2$1 = new Vector3();\nconst _v3 = new Vector3();\n\nconst _vab = new Vector3();\nconst _vac = new Vector3();\nconst _vbc = new Vector3();\nconst _vap = new Vector3();\nconst _vbp = new Vector3();\nconst _vcp = new Vector3();\n\nfunction Triangle( a, b, c ) {\n\n\tthis.a = ( a !== undefined ) ? a : new Vector3();\n\tthis.b = ( b !== undefined ) ? b : new Vector3();\n\tthis.c = ( c !== undefined ) ? c : new Vector3();\n\n}\n\nObject.assign( Triangle, {\n\n\tgetNormal: function ( a, b, c, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getNormal() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tconst targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t},\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tgetBarycoord: function ( point, a, b, c, target ) {\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$1.subVectors( point, a );\n\n\t\tconst dot00 = _v0$1.dot( _v0$1 );\n\t\tconst dot01 = _v0$1.dot( _v1$3 );\n\t\tconst dot02 = _v0$1.dot( _v2$1 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$1 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getBarycoord() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\t// arbitrary location outside of triangle?\n\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\treturn target.set( - 2, - 1, - 1 );\n\n\t\t}\n\n\t\tconst invDenom = 1 / denom;\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t},\n\n\tcontainsPoint: function ( point, a, b, c ) {\n\n\t\tTriangle.getBarycoord( point, a, b, c, _v3 );\n\n\t\treturn ( _v3.x >= 0 ) && ( _v3.y >= 0 ) && ( ( _v3.x + _v3.y ) <= 1 );\n\n\t},\n\n\tgetUV: function ( point, p1, p2, p3, uv1, uv2, uv3, target ) {\n\n\t\tthis.getBarycoord( point, p1, p2, p3, _v3 );\n\n\t\ttarget.set( 0, 0 );\n\t\ttarget.addScaledVector( uv1, _v3.x );\n\t\ttarget.addScaledVector( uv2, _v3.y );\n\t\ttarget.addScaledVector( uv3, _v3.z );\n\n\t\treturn target;\n\n\t},\n\n\tisFrontFacing: function ( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tset: function ( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPointsAndIndices: function ( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t},\n\n\tgetArea: function () {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t},\n\n\tgetMidpoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getMidpoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t},\n\n\tgetNormal: function ( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t},\n\n\tgetPlane: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getPlane() target is now required' );\n\t\t\ttarget = new Plane();\n\n\t\t}\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t},\n\n\tgetBarycoord: function ( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t},\n\n\tgetUV: function ( point, uv1, uv2, uv3, target ) {\n\n\t\treturn Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t},\n\n\tisFrontFacing: function ( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t},\n\n\tclosestPointToPoint: function ( p, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tconst a = this.a, b = this.b, c = this.c;\n\t\tlet v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tconst d1 = _vab.dot( _vap );\n\t\tconst d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tconst d3 = _vab.dot( _vbp );\n\t\tconst d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tconst vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tconst d5 = _vab.dot( _vcp );\n\t\tconst d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tconst vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tconst va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tconst denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t},\n\n\tequals: function ( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction Color( r, g, b ) {\n\n\tif ( g === undefined && b === undefined ) {\n\n\t\t// r is THREE.Color, hex or string\n\t\treturn this.set( r );\n\n\t}\n\n\treturn this.setRGB( r, g, b );\n\n}\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\nObject.assign( Color.prototype, {\n\n\tisColor: true,\n\n\tr: 1, g: 1, b: 1,\n\n\tset: function ( value ) {\n\n\t\tif ( value && value.isColor ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetHex: function ( hex ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\treturn this;\n\n\t},\n\n\tsetRGB: function ( r, g, b ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\treturn this;\n\n\t},\n\n\tsetHSL: function ( h, s, l ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = MathUtils.euclideanModulo( h, 1 );\n\t\ts = MathUtils.clamp( s, 0, 1 );\n\t\tl = MathUtils.clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetStyle: function ( style ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(\\s*([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^([0-9]*\\.?[0-9]+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tconst h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tconst s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\tconst l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f0-9]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetColorName: function ( style ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t},\n\n\tcopy: function ( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t},\n\n\tcopyGammaToLinear: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tthis.r = Math.pow( color.r, gammaFactor );\n\t\tthis.g = Math.pow( color.g, gammaFactor );\n\t\tthis.b = Math.pow( color.b, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToGamma: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tconst safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;\n\n\t\tthis.r = Math.pow( color.r, safeInverse );\n\t\tthis.g = Math.pow( color.g, safeInverse );\n\t\tthis.b = Math.pow( color.b, safeInverse );\n\n\t\treturn this;\n\n\t},\n\n\tconvertGammaToLinear: function ( gammaFactor ) {\n\n\t\tthis.copyGammaToLinear( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToGamma: function ( gammaFactor ) {\n\n\t\tthis.copyLinearToGamma( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopySRGBToLinear: function ( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToSRGB: function ( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t},\n\n\tconvertSRGBToLinear: function () {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToSRGB: function () {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t},\n\n\tgetHex: function () {\n\n\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\n\n\t},\n\n\tgetHexString: function () {\n\n\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\n\n\t},\n\n\tgetHSL: function ( target ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Color: .getHSL() target is now required' );\n\t\t\ttarget = { h: 0, s: 0, l: 0 };\n\n\t\t}\n\n\t\tconst r = this.r, g = this.g, b = this.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t},\n\n\tgetStyle: function () {\n\n\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\n\n\t},\n\n\toffsetHSL: function ( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\t_hslA.h += h; _hslA.s += s; _hslA.l += l;\n\n\t\tthis.setHSL( _hslA.h, _hslA.s, _hslA.l );\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t},\n\n\taddColors: function ( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpHSL: function ( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = MathUtils.lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = MathUtils.lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = MathUtils.lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\tif ( attribute.normalized === true ) {\n\n\t\t\t// assuming Uint8Array\n\n\t\t\tthis.r /= 255;\n\t\t\tthis.g /= 255;\n\t\t\tthis.b /= 255;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn this.getHex();\n\n\t}\n\n} );\n\nColor.NAMES = _colorKeywords;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Face3( a, b, c, normal, color, materialIndex ) {\n\n\tthis.a = a;\n\tthis.b = b;\n\tthis.c = c;\n\n\tthis.normal = ( normal && normal.isVector3 ) ? normal : new Vector3();\n\tthis.vertexNormals = Array.isArray( normal ) ? normal : [];\n\n\tthis.color = ( color && color.isColor ) ? color : new Color();\n\tthis.vertexColors = Array.isArray( color ) ? color : [];\n\n\tthis.materialIndex = materialIndex !== undefined ? materialIndex : 0;\n\n}\n\nObject.assign( Face3.prototype, {\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.a = source.a;\n\t\tthis.b = source.b;\n\t\tthis.c = source.c;\n\n\t\tthis.normal.copy( source.normal );\n\t\tthis.color.copy( source.color );\n\n\t\tthis.materialIndex = source.materialIndex;\n\n\t\tfor ( let i = 0, il = source.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexNormals[ i ] = source.vertexNormals[ i ].clone();\n\n\t\t}\n\n\t\tfor ( let i = 0, il = source.vertexColors.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexColors[ i ] = source.vertexColors[ i ].clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nlet materialId = 0;\n\nfunction Material() {\n\n\tObject.defineProperty( this, 'id', { value: materialId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Material';\n\n\tthis.fog = true;\n\n\tthis.blending = NormalBlending;\n\tthis.side = FrontSide;\n\tthis.flatShading = false;\n\tthis.vertexColors = false;\n\n\tthis.opacity = 1;\n\tthis.transparent = false;\n\n\tthis.blendSrc = SrcAlphaFactor;\n\tthis.blendDst = OneMinusSrcAlphaFactor;\n\tthis.blendEquation = AddEquation;\n\tthis.blendSrcAlpha = null;\n\tthis.blendDstAlpha = null;\n\tthis.blendEquationAlpha = null;\n\n\tthis.depthFunc = LessEqualDepth;\n\tthis.depthTest = true;\n\tthis.depthWrite = true;\n\n\tthis.stencilWriteMask = 0xff;\n\tthis.stencilFunc = AlwaysStencilFunc;\n\tthis.stencilRef = 0;\n\tthis.stencilFuncMask = 0xff;\n\tthis.stencilFail = KeepStencilOp;\n\tthis.stencilZFail = KeepStencilOp;\n\tthis.stencilZPass = KeepStencilOp;\n\tthis.stencilWrite = false;\n\n\tthis.clippingPlanes = null;\n\tthis.clipIntersection = false;\n\tthis.clipShadows = false;\n\n\tthis.shadowSide = null;\n\n\tthis.colorWrite = true;\n\n\tthis.precision = null; // override the renderer's default precision for this material\n\n\tthis.polygonOffset = false;\n\tthis.polygonOffsetFactor = 0;\n\tthis.polygonOffsetUnits = 0;\n\n\tthis.dithering = false;\n\n\tthis.alphaTest = 0;\n\tthis.premultipliedAlpha = false;\n\n\tthis.visible = true;\n\n\tthis.toneMapped = true;\n\n\tthis.userData = {};\n\n\tthis.version = 0;\n\n}\n\nMaterial.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Material,\n\n\tisMaterial: true,\n\n\tonBeforeCompile: function ( /* shaderobject, renderer */ ) {},\n\n\tcustomProgramCacheKey: function () {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t},\n\n\tsetValues: function ( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.Material: '\" + key + \"' parameter is undefined.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// for backward compatability if shading is set in the constructor\n\t\t\tif ( key === 'shading' ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\t\tthis.flatShading = ( newValue === FlatShading ) ? true : false;\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.\" + this.type + \": '\" + key + \"' is not a property of this material.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst isRoot = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRoot ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen && this.sheen.isColor ) data.sheen = this.sheen.getHex();\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\t\tif ( this.lightMap && this.lightMap.isTexture ) data.lightMap = this.lightMap.toJSON( meta ).uuid;\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\t\t\tdata.reflectivity = this.reflectivity; // Scale behind envMap\n\t\t\tdata.refractionRatio = this.refractionRatio;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\t\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\n\t\t}\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.flatShading === true ) data.flatShading = this.flatShading;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\tdata.depthFunc = this.depthFunc;\n\t\tdata.depthTest = this.depthTest;\n\t\tdata.depthWrite = this.depthWrite;\n\n\t\tdata.stencilWrite = this.stencilWrite;\n\t\tdata.stencilWriteMask = this.stencilWriteMask;\n\t\tdata.stencilFunc = this.stencilFunc;\n\t\tdata.stencilRef = this.stencilRef;\n\t\tdata.stencilFuncMask = this.stencilFuncMask;\n\t\tdata.stencilFail = this.stencilFail;\n\t\tdata.stencilZFail = this.stencilZFail;\n\t\tdata.stencilZPass = this.stencilZPass;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.morphTargets === true ) data.morphTargets = true;\n\t\tif ( this.morphNormals === true ) data.morphNormals = true;\n\t\tif ( this.skinning === true ) data.skinning = true;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRoot ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.fog = source.fog;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.flatShading = source.flatShading;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nObject.defineProperty( Material.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * depthTest: ,\n * depthWrite: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: \n * }\n */\n\nfunction MeshBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshBasicMaterial';\n\n\tthis.color = new Color( 0xffffff ); // emissive\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshBasicMaterial.prototype = Object.create( Material.prototype );\nMeshBasicMaterial.prototype.constructor = MeshBasicMaterial;\n\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\nMeshBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _vector$3 = new Vector3();\nconst _vector2$1 = new Vector2();\n\nfunction BufferAttribute( array, itemSize, normalized ) {\n\n\tif ( Array.isArray( array ) ) {\n\n\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t}\n\n\tthis.name = '';\n\n\tthis.array = array;\n\tthis.itemSize = itemSize;\n\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\tthis.normalized = normalized === true;\n\n\tthis.usage = StaticDrawUsage;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nObject.defineProperty( BufferAttribute.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( BufferAttribute.prototype, {\n\n\tisBufferAttribute: true,\n\n\tonUploadCallback: function () {},\n\n\tsetUsage: function ( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyArray: function ( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t},\n\n\tcopyColorsArray: function ( colors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\tlet color = colors[ i ];\n\n\t\t\tif ( color === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\tcolor = new Color();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = color.r;\n\t\t\tarray[ offset ++ ] = color.g;\n\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector2sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector2();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector3sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector3();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector4sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector4();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\n\t\t\t\t_vector2$1.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y, );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector$3.fromBufferAttribute( this, i );\n\t\t\t\t_vector$3.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyNormalMatrix: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttransformDirection: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.prototype.slice.call( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t}\n\n} );\n\n//\n\nfunction Int8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int8Array( array ), itemSize, normalized );\n\n}\n\nInt8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt8BufferAttribute.prototype.constructor = Int8BufferAttribute;\n\n\nfunction Uint8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8Array( array ), itemSize, normalized );\n\n}\n\nUint8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8BufferAttribute.prototype.constructor = Uint8BufferAttribute;\n\n\nfunction Uint8ClampedBufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8ClampedArray( array ), itemSize, normalized );\n\n}\n\nUint8ClampedBufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute;\n\n\nfunction Int16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int16Array( array ), itemSize, normalized );\n\n}\n\nInt16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt16BufferAttribute.prototype.constructor = Int16BufferAttribute;\n\n\nfunction Uint16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized );\n\n}\n\nUint16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint16BufferAttribute.prototype.constructor = Uint16BufferAttribute;\n\n\nfunction Int32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int32Array( array ), itemSize, normalized );\n\n}\n\nInt32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt32BufferAttribute.prototype.constructor = Int32BufferAttribute;\n\n\nfunction Uint32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint32Array( array ), itemSize, normalized );\n\n}\n\nUint32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint32BufferAttribute.prototype.constructor = Uint32BufferAttribute;\n\n\nfunction Float32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float32Array( array ), itemSize, normalized );\n\n}\n\nFloat32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat32BufferAttribute.prototype.constructor = Float32BufferAttribute;\n\n\nfunction Float64BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float64Array( array ), itemSize, normalized );\n\n}\n\nFloat64BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat64BufferAttribute.prototype.constructor = Float64BufferAttribute;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectGeometry() {\n\n\tthis.vertices = [];\n\tthis.normals = [];\n\tthis.colors = [];\n\tthis.uvs = [];\n\tthis.uvs2 = [];\n\n\tthis.groups = [];\n\n\tthis.morphTargets = {};\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\t// this.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.verticesNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nObject.assign( DirectGeometry.prototype, {\n\n\tcomputeGroups: function ( geometry ) {\n\n\t\tconst groups = [];\n\n\t\tlet group, i;\n\t\tlet materialIndex = undefined;\n\n\t\tconst faces = geometry.faces;\n\n\t\tfor ( i = 0; i < faces.length; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\t// materials\n\n\t\t\tif ( face.materialIndex !== materialIndex ) {\n\n\t\t\t\tmaterialIndex = face.materialIndex;\n\n\t\t\t\tif ( group !== undefined ) {\n\n\t\t\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\t\t\tgroups.push( group );\n\n\t\t\t\t}\n\n\t\t\t\tgroup = {\n\t\t\t\t\tstart: i * 3,\n\t\t\t\t\tmaterialIndex: materialIndex\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( group !== undefined ) {\n\n\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\tgroups.push( group );\n\n\t\t}\n\n\t\tthis.groups = groups;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tconst faces = geometry.faces;\n\t\tconst vertices = geometry.vertices;\n\t\tconst faceVertexUvs = geometry.faceVertexUvs;\n\n\t\tconst hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0;\n\t\tconst hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0;\n\n\t\t// morphs\n\n\t\tconst morphTargets = geometry.morphTargets;\n\t\tconst morphTargetsLength = morphTargets.length;\n\n\t\tlet morphTargetsPosition;\n\n\t\tif ( morphTargetsLength > 0 ) {\n\n\t\t\tmorphTargetsPosition = [];\n\n\t\t\tfor ( let i = 0; i < morphTargetsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsPosition[ i ] = {\n\t\t\t\t\tname: morphTargets[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.position = morphTargetsPosition;\n\n\t\t}\n\n\t\tconst morphNormals = geometry.morphNormals;\n\t\tconst morphNormalsLength = morphNormals.length;\n\n\t\tlet morphTargetsNormal;\n\n\t\tif ( morphNormalsLength > 0 ) {\n\n\t\t\tmorphTargetsNormal = [];\n\n\t\t\tfor ( let i = 0; i < morphNormalsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsNormal[ i ] = {\n\t\t\t\t\tname: morphNormals[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.normal = morphTargetsNormal;\n\n\t\t}\n\n\t\t// skins\n\n\t\tconst skinIndices = geometry.skinIndices;\n\t\tconst skinWeights = geometry.skinWeights;\n\n\t\tconst hasSkinIndices = skinIndices.length === vertices.length;\n\t\tconst hasSkinWeights = skinWeights.length === vertices.length;\n\n\t\t//\n\n\t\tif ( vertices.length > 0 && faces.length === 0 ) {\n\n\t\t\tconsole.error( 'THREE.DirectGeometry: Faceless geometries are not supported.' );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < faces.length; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\tthis.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] );\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tthis.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tconst normal = face.normal;\n\n\t\t\t\tthis.normals.push( normal, normal, normal );\n\n\t\t\t}\n\n\t\t\tconst vertexColors = face.vertexColors;\n\n\t\t\tif ( vertexColors.length === 3 ) {\n\n\t\t\t\tthis.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tconst color = face.color;\n\n\t\t\t\tthis.colors.push( color, color, color );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv === true ) {\n\n\t\t\t\tconst vertexUvs = faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i );\n\n\t\t\t\t\tthis.uvs.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv2 === true ) {\n\n\t\t\t\tconst vertexUvs = faceVertexUvs[ 1 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i );\n\n\t\t\t\t\tthis.uvs2.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// morphs\n\n\t\t\tfor ( let j = 0; j < morphTargetsLength; j ++ ) {\n\n\t\t\t\tconst morphTarget = morphTargets[ j ].vertices;\n\n\t\t\t\tmorphTargetsPosition[ j ].data.push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] );\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0; j < morphNormalsLength; j ++ ) {\n\n\t\t\t\tconst morphNormal = morphNormals[ j ].vertexNormals[ i ];\n\n\t\t\t\tmorphTargetsNormal[ j ].data.push( morphNormal.a, morphNormal.b, morphNormal.c );\n\n\t\t\t}\n\n\t\t\t// skins\n\n\t\t\tif ( hasSkinIndices ) {\n\n\t\t\t\tthis.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] );\n\n\t\t\t}\n\n\t\t\tif ( hasSkinWeights ) {\n\n\t\t\t\tthis.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeGroups( geometry );\n\n\t\tthis.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\tthis.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\tthis.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\tthis.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction arrayMax( array ) {\n\n\tif ( array.length === 0 ) return - Infinity;\n\n\tlet max = array[ 0 ];\n\n\tfor ( let i = 1, l = array.length; i < l; ++ i ) {\n\n\t\tif ( array[ i ] > max ) max = array[ i ];\n\n\t}\n\n\treturn max;\n\n}\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nlet _bufferGeometryId = 1; // BufferGeometry uses odd numbers as Id\n\nconst _m1$2 = new Matrix4();\nconst _obj = new Object3D();\nconst _offset = new Vector3();\nconst _box$2 = new Box3();\nconst _boxMorphTargets = new Box3();\nconst _vector$4 = new Vector3();\n\nfunction BufferGeometry() {\n\n\tObject.defineProperty( this, 'id', { value: _bufferGeometryId += 2 } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'BufferGeometry';\n\n\tthis.index = null;\n\tthis.attributes = {};\n\n\tthis.morphAttributes = {};\n\tthis.morphTargetsRelative = false;\n\n\tthis.groups = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\tthis.drawRange = { start: 0, count: Infinity };\n\n\tthis.userData = {};\n\n}\n\nBufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: BufferGeometry,\n\n\tisBufferGeometry: true,\n\n\tgetIndex: function () {\n\n\t\treturn this.index;\n\n\t},\n\n\tsetIndex: function ( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t},\n\n\tgetAttribute: function ( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t},\n\n\tsetAttribute: function ( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t},\n\n\tdeleteAttribute: function ( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t},\n\n\taddGroup: function ( start, count, materialIndex ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex !== undefined ? materialIndex : 0\n\n\t\t} );\n\n\t},\n\n\tclearGroups: function () {\n\n\t\tthis.groups = [];\n\n\t},\n\n\tsetDrawRange: function ( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1$2.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1$2.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1$2.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1$2.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1$2.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\tlookAt: function ( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromObject: function ( object ) {\n\n\t\t// console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( object.isPoints || object.isLine ) {\n\n\t\t\tconst positions = new Float32BufferAttribute( geometry.vertices.length * 3, 3 );\n\t\t\tconst colors = new Float32BufferAttribute( geometry.colors.length * 3, 3 );\n\n\t\t\tthis.setAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) );\n\t\t\tthis.setAttribute( 'color', colors.copyColorsArray( geometry.colors ) );\n\n\t\t\tif ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) {\n\n\t\t\t\tconst lineDistances = new Float32BufferAttribute( geometry.lineDistances.length, 1 );\n\n\t\t\t\tthis.setAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t\t}\n\n\t\t} else if ( object.isMesh ) {\n\n\t\t\tif ( geometry && geometry.isGeometry ) {\n\n\t\t\t\tthis.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tconst position = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t},\n\n\tupdateFromObject: function ( object ) {\n\n\t\tlet geometry = object.geometry;\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tlet direct = geometry.__directGeometry;\n\n\t\t\tif ( geometry.elementsNeedUpdate === true ) {\n\n\t\t\t\tdirect = undefined;\n\t\t\t\tgeometry.elementsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( direct === undefined ) {\n\n\t\t\t\treturn this.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t\tdirect.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\t\tdirect.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\t\tdirect.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\t\tdirect.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\t\tdirect.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\t\t\tgeometry.normalsNeedUpdate = false;\n\t\t\tgeometry.colorsNeedUpdate = false;\n\t\t\tgeometry.uvsNeedUpdate = false;\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t\tgeometry = direct;\n\n\t\t}\n\n\t\tif ( geometry.verticesNeedUpdate === true ) {\n\n\t\t\tconst attribute = this.attributes.position;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.vertices );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.normalsNeedUpdate === true ) {\n\n\t\t\tconst attribute = this.attributes.normal;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.normals );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.normalsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.colorsNeedUpdate === true ) {\n\n\t\t\tconst attribute = this.attributes.color;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyColorsArray( geometry.colors );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.colorsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.uvsNeedUpdate ) {\n\n\t\t\tconst attribute = this.attributes.uv;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector2sArray( geometry.uvs );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.uvsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.lineDistancesNeedUpdate ) {\n\n\t\t\tconst attribute = this.attributes.lineDistance;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyArray( geometry.lineDistances );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.lineDistancesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.groupsNeedUpdate ) {\n\n\t\t\tgeometry.computeGroups( object.geometry );\n\t\t\tthis.groups = geometry.groups;\n\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tgeometry.__directGeometry = new DirectGeometry().fromGeometry( geometry );\n\n\t\treturn this.fromDirectGeometry( geometry.__directGeometry );\n\n\t},\n\n\tfromDirectGeometry: function ( geometry ) {\n\n\t\tconst positions = new Float32Array( geometry.vertices.length * 3 );\n\t\tthis.setAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) );\n\n\t\tif ( geometry.normals.length > 0 ) {\n\n\t\t\tconst normals = new Float32Array( geometry.normals.length * 3 );\n\t\t\tthis.setAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) );\n\n\t\t}\n\n\t\tif ( geometry.colors.length > 0 ) {\n\n\t\t\tconst colors = new Float32Array( geometry.colors.length * 3 );\n\t\t\tthis.setAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs.length > 0 ) {\n\n\t\t\tconst uvs = new Float32Array( geometry.uvs.length * 2 );\n\t\t\tthis.setAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs2.length > 0 ) {\n\n\t\t\tconst uvs2 = new Float32Array( geometry.uvs2.length * 2 );\n\t\t\tthis.setAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) );\n\n\t\t}\n\n\t\t// groups\n\n\t\tthis.groups = geometry.groups;\n\n\t\t// morphs\n\n\t\tfor ( const name in geometry.morphTargets ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphTargets = geometry.morphTargets[ name ];\n\n\t\t\tfor ( let i = 0, l = morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\tconst morphTarget = morphTargets[ i ];\n\n\t\t\t\tconst attribute = new Float32BufferAttribute( morphTarget.data.length * 3, 3 );\n\t\t\t\tattribute.name = morphTarget.name;\n\n\t\t\t\tarray.push( attribute.copyVector3sArray( morphTarget.data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\t// skinning\n\n\t\tif ( geometry.skinIndices.length > 0 ) {\n\n\t\t\tconst skinIndices = new Float32BufferAttribute( geometry.skinIndices.length * 4, 4 );\n\t\t\tthis.setAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) );\n\n\t\t}\n\n\t\tif ( geometry.skinWeights.length > 0 ) {\n\n\t\t\tconst skinWeights = new Float32BufferAttribute( geometry.skinWeights.length * 4, 4 );\n\t\t\tthis.setAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$2.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$4.addVectors( this.boundingBox.min, _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$4 );\n\n\t\t\t\t\t\t_vector$4.addVectors( this.boundingBox.max, _box$2.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$4 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$2.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$4.addVectors( _box$2.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$4 );\n\n\t\t\t\t\t\t_vector$4.addVectors( _box$2.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$4 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$2.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$4.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$4 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$4.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$4.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$4 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\t// backwards compatibility\n\n\t},\n\n\tcomputeVertexNormals: function () {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tmerge: function ( geometry, offset ) {\n\n\t\tif ( ! ( geometry && geometry.isBufferGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( offset === undefined ) {\n\n\t\t\toffset = 0;\n\n\t\t\tconsole.warn(\n\t\t\t\t'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. '\n\t\t\t\t+ 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.'\n\t\t\t);\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\tconst attribute1 = attributes[ key ];\n\t\t\tconst attributeArray1 = attribute1.array;\n\n\t\t\tconst attribute2 = geometry.attributes[ key ];\n\t\t\tconst attributeArray2 = attribute2.array;\n\n\t\t\tconst attributeOffset = attribute2.itemSize * offset;\n\t\t\tconst length = Math.min( attributeArray2.length, attributeArray1.length - attributeOffset );\n\n\t\t\tfor ( let i = 0, j = attributeOffset; i < length; i ++, j ++ ) {\n\n\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tnormalizeNormals: function () {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$4.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$4.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$4.x, _vector$4.y, _vector$4.z );\n\n\t\t}\n\n\t},\n\n\ttoNonIndexed: function () {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tconst attributeData = attribute.toJSON( data.data );\n\n\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\n\n\t\t\tdata.data.attributes[ key ] = attributeData;\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tconst attributeData = attribute.toJSON( data.data );\n\n\t\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\n\n\t\t\t\tarray.push( attributeData );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t const parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t const values = [];\n\n\t\t for ( const key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t const geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new BufferGeometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone( data ) );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author jonobr1 / http://jonobr1.com/\n */\n\nconst _inverseMatrix = new Matrix4();\nconst _ray = new Ray();\nconst _sphere = new Sphere();\n\nconst _vA = new Vector3();\nconst _vB = new Vector3();\nconst _vC = new Vector3();\n\nconst _tempA = new Vector3();\nconst _tempB = new Vector3();\nconst _tempC = new Vector3();\n\nconst _morphA = new Vector3();\nconst _morphB = new Vector3();\nconst _morphC = new Vector3();\n\nconst _uvA = new Vector2();\nconst _uvB = new Vector2();\nconst _uvC = new Vector2();\n\nconst _intersectionPoint = new Vector3();\nconst _intersectionPointWorld = new Vector3();\n\nfunction Mesh( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Mesh';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new MeshBasicMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nMesh.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Mesh,\n\n\tisMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.getInverse( matrixWorld );\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\t// Check boundingBox before continuing\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\tlet intersection;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\t\t\tconst uv = geometry.attributes.uv;\n\t\t\tconst uv2 = geometry.attributes.uv2;\n\t\t\tconst groups = geometry.groups;\n\t\t\tconst drawRange = geometry.drawRange;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\t// indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tconst end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( position !== undefined ) {\n\n\t\t\t\t// non-indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tconst end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = i;\n\t\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst isMultiMaterial = Array.isArray( material );\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst faces = geometry.faces;\n\t\t\tlet uvs;\n\n\t\t\tconst faceVertexUvs = geometry.faceVertexUvs[ 0 ];\n\t\t\tif ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs;\n\n\t\t\tfor ( let f = 0, fl = faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = faces[ f ];\n\t\t\t\tconst faceMaterial = isMultiMaterial ? material[ face.materialIndex ] : material;\n\n\t\t\t\tif ( faceMaterial === undefined ) continue;\n\n\t\t\t\tconst fvA = vertices[ face.a ];\n\t\t\t\tconst fvB = vertices[ face.b ];\n\t\t\t\tconst fvC = vertices[ face.c ];\n\n\t\t\t\tintersection = checkIntersection( this, faceMaterial, raycaster, _ray, fvA, fvB, fvC, _intersectionPoint );\n\n\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\tif ( uvs && uvs[ f ] ) {\n\n\t\t\t\t\t\tconst uvs_f = uvs[ f ];\n\t\t\t\t\t\t_uvA.copy( uvs_f[ 0 ] );\n\t\t\t\t\t\t_uvB.copy( uvs_f[ 1 ] );\n\t\t\t\t\t\t_uvC.copy( uvs_f[ 2 ] );\n\n\t\t\t\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, fvA, fvB, fvC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tintersection.face = face;\n\t\t\t\t\tintersection.faceIndex = f;\n\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tlet intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkBufferGeometryIntersection( object, material, raycaster, ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c ) {\n\n\t_vA.fromBufferAttribute( position, a );\n\t_vB.fromBufferAttribute( position, b );\n\t_vC.fromBufferAttribute( position, c );\n\n\tconst morphInfluences = object.morphTargetInfluences;\n\n\tif ( material.morphTargets && morphPosition && morphInfluences ) {\n\n\t\t_morphA.set( 0, 0, 0 );\n\t\t_morphB.set( 0, 0, 0 );\n\t\t_morphC.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\tconst influence = morphInfluences[ i ];\n\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t_tempA.fromBufferAttribute( morphAttribute, a );\n\t\t\t_tempB.fromBufferAttribute( morphAttribute, b );\n\t\t\t_tempC.fromBufferAttribute( morphAttribute, c );\n\n\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\t\t\t\t_morphB.addScaledVector( _tempB, influence );\n\t\t\t\t_morphC.addScaledVector( _tempC, influence );\n\n\t\t\t} else {\n\n\t\t\t\t_morphA.addScaledVector( _tempA.sub( _vA ), influence );\n\t\t\t\t_morphB.addScaledVector( _tempB.sub( _vB ), influence );\n\t\t\t\t_morphC.addScaledVector( _tempC.sub( _vC ), influence );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_vA.add( _morphA );\n\t\t_vB.add( _morphB );\n\t\t_vC.add( _morphC );\n\n\t}\n\n\tif ( object.isSkinnedMesh ) {\n\n\t\tobject.boneTransform( a, _vA );\n\t\tobject.boneTransform( b, _vB );\n\t\tobject.boneTransform( c, _vC );\n\n\t}\n\n\tconst intersection = checkIntersection( object, material, raycaster, ray, _vA, _vB, _vC, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\t_uvA.fromBufferAttribute( uv, a );\n\t\t\t_uvB.fromBufferAttribute( uv, b );\n\t\t\t_uvC.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv2 ) {\n\n\t\t\t_uvA.fromBufferAttribute( uv2, a );\n\t\t\t_uvB.fromBufferAttribute( uv2, b );\n\t\t\t_uvC.fromBufferAttribute( uv2, c );\n\n\t\t\tintersection.uv2 = Triangle.getUV( _intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t}\n\n\t\tconst face = new Face3( a, b, c );\n\t\tTriangle.getNormal( _vA, _vB, _vC, face.normal );\n\n\t\tintersection.face = face;\n\n\t}\n\n\treturn intersection;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author bhouston / http://clara.io\n */\n\nlet _geometryId = 0; // Geometry uses even numbers as Id\nconst _m1$3 = new Matrix4();\nconst _obj$1 = new Object3D();\nconst _offset$1 = new Vector3();\n\nfunction Geometry() {\n\n\tObject.defineProperty( this, 'id', { value: _geometryId += 2 } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Geometry';\n\n\tthis.vertices = [];\n\tthis.colors = [];\n\tthis.faces = [];\n\tthis.faceVertexUvs = [[]];\n\n\tthis.morphTargets = [];\n\tthis.morphNormals = [];\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\tthis.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.elementsNeedUpdate = false;\n\tthis.verticesNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.lineDistancesNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Geometry,\n\n\tisGeometry: true,\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\tfor ( let i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tconst vertex = this.vertices[ i ];\n\t\t\tvertex.applyMatrix4( matrix );\n\n\t\t}\n\n\t\tfor ( let i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\t\t\tface.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\tfor ( let j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tface.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.verticesNeedUpdate = true;\n\t\tthis.normalsNeedUpdate = true;\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1$3.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1$3.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1$3.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1$3.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1$3.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\tlookAt: function ( vector ) {\n\n\t\t_obj$1.lookAt( vector );\n\n\t\t_obj$1.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj$1.matrix );\n\n\t\treturn this;\n\n\t},\n\n\tfromBufferGeometry: function ( geometry ) {\n\n\t\tconst scope = this;\n\n\t\tconst index = geometry.index !== null ? geometry.index : undefined;\n\t\tconst attributes = geometry.attributes;\n\n\t\tif ( attributes.position === undefined ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst position = attributes.position;\n\t\tconst normal = attributes.normal;\n\t\tconst color = attributes.color;\n\t\tconst uv = attributes.uv;\n\t\tconst uv2 = attributes.uv2;\n\n\t\tif ( uv2 !== undefined ) this.faceVertexUvs[ 1 ] = [];\n\n\t\tfor ( let i = 0; i < position.count; i ++ ) {\n\n\t\t\tscope.vertices.push( new Vector3().fromBufferAttribute( position, i ) );\n\n\t\t\tif ( color !== undefined ) {\n\n\t\t\t\tscope.colors.push( new Color().fromBufferAttribute( color, i ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction addFace( a, b, c, materialIndex ) {\n\n\t\t\tconst vertexColors = ( color === undefined ) ? [] : [\n\t\t\t\tscope.colors[ a ].clone(),\n\t\t\t\tscope.colors[ b ].clone(),\n\t\t\t\tscope.colors[ c ].clone()\n\t\t\t];\n\n\t\t\tconst vertexNormals = ( normal === undefined ) ? [] : [\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, a ),\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, b ),\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, c )\n\t\t\t];\n\n\t\t\tconst face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex );\n\n\t\t\tscope.faces.push( face );\n\n\t\t\tif ( uv !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 0 ].push( [\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, a ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, b ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, c )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t\tif ( uv2 !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 1 ].push( [\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, a ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, b ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, c )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst groups = geometry.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tfor ( let i = 0; i < groups.length; i ++ ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tconst start = group.start;\n\t\t\t\tconst count = group.count;\n\n\t\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\t\tif ( index !== undefined ) {\n\n\t\t\t\t\t\taddFace( index.getX( j ), index.getX( j + 1 ), index.getX( j + 2 ), group.materialIndex );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\taddFace( j, j + 1, j + 2, group.materialIndex );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tfor ( let i = 0; i < index.count; i += 3 ) {\n\n\t\t\t\t\taddFace( index.getX( i ), index.getX( i + 1 ), index.getX( i + 2 ) );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0; i < position.count; i += 3 ) {\n\n\t\t\t\t\taddFace( i, i + 1, i + 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeFaceNormals();\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset$1 ).negate();\n\n\t\tthis.translate( _offset$1.x, _offset$1.y, _offset$1.z );\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\tthis.computeBoundingSphere();\n\n\t\tconst center = this.boundingSphere.center;\n\t\tconst radius = this.boundingSphere.radius;\n\n\t\tconst s = radius === 0 ? 1 : 1.0 / radius;\n\n\t\tconst matrix = new Matrix4();\n\t\tmatrix.set(\n\t\t\ts, 0, 0, - s * center.x,\n\t\t\t0, s, 0, - s * center.y,\n\t\t\t0, 0, s, - s * center.z,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\tthis.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vA = this.vertices[ face.a ];\n\t\t\tconst vB = this.vertices[ face.b ];\n\t\t\tconst vC = this.vertices[ face.c ];\n\n\t\t\tcb.subVectors( vC, vB );\n\t\t\tab.subVectors( vA, vB );\n\t\t\tcb.cross( ab );\n\n\t\t\tcb.normalize();\n\n\t\t\tface.normal.copy( cb );\n\n\t\t}\n\n\t},\n\n\tcomputeVertexNormals: function ( areaWeighted ) {\n\n\t\tif ( areaWeighted === undefined ) areaWeighted = true;\n\n\t\tconst vertices = new Array( this.vertices.length );\n\n\t\tfor ( let v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ] = new Vector3();\n\n\t\t}\n\n\t\tif ( areaWeighted ) {\n\n\t\t\t// vertex normals weighted by triangle areas\n\t\t\t// http://www.iquilezles.org/www/articles/normals/normals.htm\n\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tconst vA = this.vertices[ face.a ];\n\t\t\t\tconst vB = this.vertices[ face.b ];\n\t\t\t\tconst vC = this.vertices[ face.c ];\n\n\t\t\t\tcb.subVectors( vC, vB );\n\t\t\t\tab.subVectors( vA, vB );\n\t\t\t\tcb.cross( ab );\n\n\t\t\t\tvertices[ face.a ].add( cb );\n\t\t\t\tvertices[ face.b ].add( cb );\n\t\t\t\tvertices[ face.c ].add( cb );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.computeFaceNormals();\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tvertices[ face.a ].add( face.normal );\n\t\t\t\tvertices[ face.b ].add( face.normal );\n\t\t\t\tvertices[ face.c ].add( face.normal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ].normalize();\n\n\t\t}\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( vertices[ face.a ] );\n\t\t\t\tvertexNormals[ 1 ].copy( vertices[ face.b ] );\n\t\t\t\tvertexNormals[ 2 ].copy( vertices[ face.c ] );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = vertices[ face.a ].clone();\n\t\t\t\tvertexNormals[ 1 ] = vertices[ face.b ].clone();\n\t\t\t\tvertexNormals[ 2 ] = vertices[ face.c ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeFlatVertexNormals: function () {\n\n\t\tthis.computeFaceNormals();\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 1 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 2 ].copy( face.normal );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 1 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 2 ] = face.normal.clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeMorphNormals: function () {\n\n\t\t// save original normals\n\t\t// - create temp variables on first access\n\t\t// otherwise just copy (for faster repeated calls)\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tif ( ! face.__originalFaceNormal ) {\n\n\t\t\t\tface.__originalFaceNormal = face.normal.clone();\n\n\t\t\t} else {\n\n\t\t\t\tface.__originalFaceNormal.copy( face.normal );\n\n\t\t\t}\n\n\t\t\tif ( ! face.__originalVertexNormals ) face.__originalVertexNormals = [];\n\n\t\t\tfor ( let i = 0, il = face.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\t\tif ( ! face.__originalVertexNormals[ i ] ) {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// use temp geometry to compute face and vertex normals for each morph\n\n\t\tconst tmpGeo = new Geometry();\n\t\ttmpGeo.faces = this.faces;\n\n\t\tfor ( let i = 0, il = this.morphTargets.length; i < il; i ++ ) {\n\n\t\t\t// create on first access\n\n\t\t\tif ( ! this.morphNormals[ i ] ) {\n\n\t\t\t\tthis.morphNormals[ i ] = {};\n\t\t\t\tthis.morphNormals[ i ].faceNormals = [];\n\t\t\t\tthis.morphNormals[ i ].vertexNormals = [];\n\n\t\t\t\tconst dstNormalsFace = this.morphNormals[ i ].faceNormals;\n\t\t\t\tconst dstNormalsVertex = this.morphNormals[ i ].vertexNormals;\n\n\t\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tconst faceNormal = new Vector3();\n\t\t\t\t\tconst vertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() };\n\n\t\t\t\t\tdstNormalsFace.push( faceNormal );\n\t\t\t\t\tdstNormalsVertex.push( vertexNormals );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst morphNormals = this.morphNormals[ i ];\n\n\t\t\t// set vertices to morph target\n\n\t\t\ttmpGeo.vertices = this.morphTargets[ i ].vertices;\n\n\t\t\t// compute morph normals\n\n\t\t\ttmpGeo.computeFaceNormals();\n\t\t\ttmpGeo.computeVertexNormals();\n\n\t\t\t// store morph normals\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tconst faceNormal = morphNormals.faceNormals[ f ];\n\t\t\t\tconst vertexNormals = morphNormals.vertexNormals[ f ];\n\n\t\t\t\tfaceNormal.copy( face.normal );\n\n\t\t\t\tvertexNormals.a.copy( face.vertexNormals[ 0 ] );\n\t\t\t\tvertexNormals.b.copy( face.vertexNormals[ 1 ] );\n\t\t\t\tvertexNormals.c.copy( face.vertexNormals[ 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// restore original normals\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tface.normal = face.__originalFaceNormal;\n\t\t\tface.vertexNormals = face.__originalVertexNormals;\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.setFromPoints( this.vertices );\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.setFromPoints( this.vertices );\n\n\t},\n\n\tmerge: function ( geometry, matrix, materialIndexOffset ) {\n\n\t\tif ( ! ( geometry && geometry.isGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tlet normalMatrix,\n\t\t\tvertexOffset = this.vertices.length,\n\t\t\tvertices1 = this.vertices,\n\t\t\tvertices2 = geometry.vertices,\n\t\t\tfaces1 = this.faces,\n\t\t\tfaces2 = geometry.faces,\n\t\t\tcolors1 = this.colors,\n\t\t\tcolors2 = geometry.colors;\n\n\t\tif ( materialIndexOffset === undefined ) materialIndexOffset = 0;\n\n\t\tif ( matrix !== undefined ) {\n\n\t\t\tnormalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t}\n\n\t\t// vertices\n\n\t\tfor ( let i = 0, il = vertices2.length; i < il; i ++ ) {\n\n\t\t\tconst vertex = vertices2[ i ];\n\n\t\t\tconst vertexCopy = vertex.clone();\n\n\t\t\tif ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix );\n\n\t\t\tvertices1.push( vertexCopy );\n\n\t\t}\n\n\t\t// colors\n\n\t\tfor ( let i = 0, il = colors2.length; i < il; i ++ ) {\n\n\t\t\tcolors1.push( colors2[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tfor ( let i = 0, il = faces2.length; i < il; i ++ ) {\n\n\t\t\tlet face = faces2[ i ], faceCopy, normal, color,\n\t\t\t\tfaceVertexNormals = face.vertexNormals,\n\t\t\t\tfaceVertexColors = face.vertexColors;\n\n\t\t\tfaceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset );\n\t\t\tfaceCopy.normal.copy( face.normal );\n\n\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\tfaceCopy.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tnormal = faceVertexNormals[ j ].clone();\n\n\t\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\t\tnormal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t}\n\n\t\t\t\tfaceCopy.vertexNormals.push( normal );\n\n\t\t\t}\n\n\t\t\tfaceCopy.color.copy( face.color );\n\n\t\t\tfor ( let j = 0, jl = faceVertexColors.length; j < jl; j ++ ) {\n\n\t\t\t\tcolor = faceVertexColors[ j ];\n\t\t\t\tfaceCopy.vertexColors.push( color.clone() );\n\n\t\t\t}\n\n\t\t\tfaceCopy.materialIndex = face.materialIndex + materialIndexOffset;\n\n\t\t\tfaces1.push( faceCopy );\n\n\t\t}\n\n\t\t// uvs\n\n\t\tfor ( let i = 0, il = geometry.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tconst faceVertexUvs2 = geometry.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) this.faceVertexUvs[ i ] = [];\n\n\t\t\tfor ( let j = 0, jl = faceVertexUvs2.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uvs2 = faceVertexUvs2[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( let k = 0, kl = uvs2.length; k < kl; k ++ ) {\n\n\t\t\t\t\tuvsCopy.push( uvs2[ k ].clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tmergeMesh: function ( mesh ) {\n\n\t\tif ( ! ( mesh && mesh.isMesh ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( mesh.matrixAutoUpdate ) mesh.updateMatrix();\n\n\t\tthis.merge( mesh.geometry, mesh.matrix );\n\n\t},\n\n\t/*\n\t * Checks for duplicate vertices with hashmap.\n\t * Duplicated vertices are removed\n\t * and faces' vertices are updated.\n\t */\n\n\tmergeVertices: function () {\n\n\t\tconst verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n\t\tconst unique = [], changes = [];\n\n\t\tconst precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n\t\tconst precision = Math.pow( 10, precisionPoints );\n\n\t\tfor ( let i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tconst v = this.vertices[ i ];\n\t\t\tconst key = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision );\n\n\t\t\tif ( verticesMap[ key ] === undefined ) {\n\n\t\t\t\tverticesMap[ key ] = i;\n\t\t\t\tunique.push( this.vertices[ i ] );\n\t\t\t\tchanges[ i ] = unique.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\t//console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);\n\t\t\t\tchanges[ i ] = changes[ verticesMap[ key ] ];\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// if faces are completely degenerate after merging vertices, we\n\t\t// have to remove them from the geometry.\n\t\tconst faceIndicesToRemove = [];\n\n\t\tfor ( let i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\n\t\t\tface.a = changes[ face.a ];\n\t\t\tface.b = changes[ face.b ];\n\t\t\tface.c = changes[ face.c ];\n\n\t\t\tconst indices = [ face.a, face.b, face.c ];\n\n\t\t\t// if any duplicate vertices are found in a Face3\n\t\t\t// we have to remove the face as nothing can be saved\n\t\t\tfor ( let n = 0; n < 3; n ++ ) {\n\n\t\t\t\tif ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) {\n\n\t\t\t\t\tfaceIndicesToRemove.push( i );\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = faceIndicesToRemove.length - 1; i >= 0; i -- ) {\n\n\t\t\tconst idx = faceIndicesToRemove[ i ];\n\n\t\t\tthis.faces.splice( idx, 1 );\n\n\t\t\tfor ( let j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tthis.faceVertexUvs[ j ].splice( idx, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Use unique set of vertices\n\n\t\tconst diff = this.vertices.length - unique.length;\n\t\tthis.vertices = unique;\n\t\treturn diff;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.vertices = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tthis.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsortFacesByMaterialIndex: function () {\n\n\t\tconst faces = this.faces;\n\t\tconst length = faces.length;\n\n\t\t// tag faces\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tfaces[ i ]._id = i;\n\n\t\t}\n\n\t\t// sort faces\n\n\t\tfunction materialIndexSort( a, b ) {\n\n\t\t\treturn a.materialIndex - b.materialIndex;\n\n\t\t}\n\n\t\tfaces.sort( materialIndexSort );\n\n\t\t// sort uvs\n\n\t\tconst uvs1 = this.faceVertexUvs[ 0 ];\n\t\tconst uvs2 = this.faceVertexUvs[ 1 ];\n\n\t\tlet newUvs1, newUvs2;\n\n\t\tif ( uvs1 && uvs1.length === length ) newUvs1 = [];\n\t\tif ( uvs2 && uvs2.length === length ) newUvs2 = [];\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tconst id = faces[ i ]._id;\n\n\t\t\tif ( newUvs1 ) newUvs1.push( uvs1[ id ] );\n\t\t\tif ( newUvs2 ) newUvs2.push( uvs2[ id ] );\n\n\t\t}\n\n\t\tif ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1;\n\t\tif ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Geometry',\n\t\t\t\tgenerator: 'Geometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Geometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tconst vertices = [];\n\n\t\tfor ( let i = 0; i < this.vertices.length; i ++ ) {\n\n\t\t\tconst vertex = this.vertices[ i ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tconst faces = [];\n\t\tconst normals = [];\n\t\tconst normalsHash = {};\n\t\tconst colors = [];\n\t\tconst colorsHash = {};\n\t\tconst uvs = [];\n\t\tconst uvsHash = {};\n\n\t\tfor ( let i = 0; i < this.faces.length; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\n\t\t\tconst hasMaterial = true;\n\t\t\tconst hasFaceUv = false; // deprecated\n\t\t\tconst hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined;\n\t\t\tconst hasFaceNormal = face.normal.length() > 0;\n\t\t\tconst hasFaceVertexNormal = face.vertexNormals.length > 0;\n\t\t\tconst hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1;\n\t\t\tconst hasFaceVertexColor = face.vertexColors.length > 0;\n\n\t\t\tlet faceType = 0;\n\n\t\t\tfaceType = setBit( faceType, 0, 0 ); // isQuad\n\t\t\tfaceType = setBit( faceType, 1, hasMaterial );\n\t\t\tfaceType = setBit( faceType, 2, hasFaceUv );\n\t\t\tfaceType = setBit( faceType, 3, hasFaceVertexUv );\n\t\t\tfaceType = setBit( faceType, 4, hasFaceNormal );\n\t\t\tfaceType = setBit( faceType, 5, hasFaceVertexNormal );\n\t\t\tfaceType = setBit( faceType, 6, hasFaceColor );\n\t\t\tfaceType = setBit( faceType, 7, hasFaceVertexColor );\n\n\t\t\tfaces.push( faceType );\n\t\t\tfaces.push( face.a, face.b, face.c );\n\t\t\tfaces.push( face.materialIndex );\n\n\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\tconst faceVertexUvs = this.faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 0 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 1 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\tfaces.push( getNormalIndex( face.normal ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 0 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 1 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\tfaces.push( getColorIndex( face.color ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\tconst vertexColors = face.vertexColors;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetColorIndex( vertexColors[ 0 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 1 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction setBit( value, position, enabled ) {\n\n\t\t\treturn enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) );\n\n\t\t}\n\n\t\tfunction getNormalIndex( normal ) {\n\n\t\t\tconst hash = normal.x.toString() + normal.y.toString() + normal.z.toString();\n\n\t\t\tif ( normalsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn normalsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tnormalsHash[ hash ] = normals.length / 3;\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\treturn normalsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getColorIndex( color ) {\n\n\t\t\tconst hash = color.r.toString() + color.g.toString() + color.b.toString();\n\n\t\t\tif ( colorsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn colorsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tcolorsHash[ hash ] = colors.length;\n\t\t\tcolors.push( color.getHex() );\n\n\t\t\treturn colorsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getUvIndex( uv ) {\n\n\t\t\tconst hash = uv.x.toString() + uv.y.toString();\n\n\t\t\tif ( uvsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn uvsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tuvsHash[ hash ] = uvs.length / 2;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\treturn uvsHash[ hash ];\n\n\t\t}\n\n\t\tdata.data = {};\n\n\t\tdata.data.vertices = vertices;\n\t\tdata.data.normals = normals;\n\t\tif ( colors.length > 0 ) data.data.colors = colors;\n\t\tif ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility\n\t\tdata.data.faces = faces;\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t const parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t const values = [];\n\n\t\t for ( const key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t const geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new Geometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\t// reset\n\n\t\tthis.vertices = [];\n\t\tthis.colors = [];\n\t\tthis.faces = [];\n\t\tthis.faceVertexUvs = [[]];\n\t\tthis.morphTargets = [];\n\t\tthis.morphNormals = [];\n\t\tthis.skinWeights = [];\n\t\tthis.skinIndices = [];\n\t\tthis.lineDistances = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// vertices\n\n\t\tconst vertices = source.vertices;\n\n\t\tfor ( let i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\tthis.vertices.push( vertices[ i ].clone() );\n\n\t\t}\n\n\t\t// colors\n\n\t\tconst colors = source.colors;\n\n\t\tfor ( let i = 0, il = colors.length; i < il; i ++ ) {\n\n\t\t\tthis.colors.push( colors[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tconst faces = source.faces;\n\n\t\tfor ( let i = 0, il = faces.length; i < il; i ++ ) {\n\n\t\t\tthis.faces.push( faces[ i ].clone() );\n\n\t\t}\n\n\t\t// face vertex uvs\n\n\t\tfor ( let i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tconst faceVertexUvs = source.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) {\n\n\t\t\t\tthis.faceVertexUvs[ i ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uvs = faceVertexUvs[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( let k = 0, kl = uvs.length; k < kl; k ++ ) {\n\n\t\t\t\t\tconst uv = uvs[ k ];\n\n\t\t\t\t\tuvsCopy.push( uv.clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphTargets = source.morphTargets;\n\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = {};\n\t\t\tmorphTarget.name = morphTargets[ i ].name;\n\n\t\t\t// vertices\n\n\t\t\tif ( morphTargets[ i ].vertices !== undefined ) {\n\n\t\t\t\tmorphTarget.vertices = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphTargets[ i ].vertices.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.vertices.push( morphTargets[ i ].vertices[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// normals\n\n\t\t\tif ( morphTargets[ i ].normals !== undefined ) {\n\n\t\t\t\tmorphTarget.normals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphTargets[ i ].normals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.normals.push( morphTargets[ i ].normals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.push( morphTarget );\n\n\t\t}\n\n\t\t// morph normals\n\n\t\tconst morphNormals = source.morphNormals;\n\n\t\tfor ( let i = 0, il = morphNormals.length; i < il; i ++ ) {\n\n\t\t\tconst morphNormal = {};\n\n\t\t\t// vertex normals\n\n\t\t\tif ( morphNormals[ i ].vertexNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.vertexNormals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphNormals[ i ].vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tconst srcVertexNormal = morphNormals[ i ].vertexNormals[ j ];\n\t\t\t\t\tconst destVertexNormal = {};\n\n\t\t\t\t\tdestVertexNormal.a = srcVertexNormal.a.clone();\n\t\t\t\t\tdestVertexNormal.b = srcVertexNormal.b.clone();\n\t\t\t\t\tdestVertexNormal.c = srcVertexNormal.c.clone();\n\n\t\t\t\t\tmorphNormal.vertexNormals.push( destVertexNormal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// face normals\n\n\t\t\tif ( morphNormals[ i ].faceNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.faceNormals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphNormals[ i ].faceNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphNormal.faceNormals.push( morphNormals[ i ].faceNormals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphNormals.push( morphNormal );\n\n\t\t}\n\n\t\t// skin weights\n\n\t\tconst skinWeights = source.skinWeights;\n\n\t\tfor ( let i = 0, il = skinWeights.length; i < il; i ++ ) {\n\n\t\t\tthis.skinWeights.push( skinWeights[ i ].clone() );\n\n\t\t}\n\n\t\t// skin indices\n\n\t\tconst skinIndices = source.skinIndices;\n\n\t\tfor ( let i = 0, il = skinIndices.length; i < il; i ++ ) {\n\n\t\t\tthis.skinIndices.push( skinIndices[ i ].clone() );\n\n\t\t}\n\n\t\t// line distances\n\n\t\tconst lineDistances = source.lineDistances;\n\n\t\tfor ( let i = 0, il = lineDistances.length; i < il; i ++ ) {\n\n\t\t\tthis.lineDistances.push( lineDistances[ i ] );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// update flags\n\n\t\tthis.elementsNeedUpdate = source.elementsNeedUpdate;\n\t\tthis.verticesNeedUpdate = source.verticesNeedUpdate;\n\t\tthis.uvsNeedUpdate = source.uvsNeedUpdate;\n\t\tthis.normalsNeedUpdate = source.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = source.colorsNeedUpdate;\n\t\tthis.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate;\n\t\tthis.groupsNeedUpdate = source.groupsNeedUpdate;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// BoxGeometry\n\nclass BoxGeometry extends Geometry {\n\n\tconstructor( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tthis.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n}\n\n// BoxBufferGeometry\n\nclass BoxBufferGeometry extends BufferGeometry {\n\n\tconstructor( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\twidth = width || 1;\n\t\theight = height || 1;\n\t\tdepth = depth || 1;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments ) || 1;\n\t\theightSegments = Math.floor( heightSegments ) || 1;\n\t\tdepthSegments = Math.floor( depthSegments ) || 1;\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tconst dst = {};\n\n\tfor ( const u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( const p in src[ u ] ) {\n\n\t\t\tconst property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tconst merged = {};\n\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\n\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( const p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\n// Legacy\n\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * defines: { \"label\" : \"value\" },\n * uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n *\n * fragmentShader: ,\n * vertexShader: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * lights: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction ShaderMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShaderMaterial';\n\n\tthis.defines = {};\n\tthis.uniforms = {};\n\n\tthis.vertexShader = default_vertex;\n\tthis.fragmentShader = default_fragment;\n\n\tthis.linewidth = 1;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false; // set to use scene fog\n\tthis.lights = false; // set to use scene lights\n\tthis.clipping = false; // set to use user-defined clipping planes\n\n\tthis.skinning = false; // set to use skinning attribute streams\n\tthis.morphTargets = false; // set to use morph targets\n\tthis.morphNormals = false; // set to use morph normals\n\n\tthis.extensions = {\n\t\tderivatives: false, // set to use derivatives\n\t\tfragDepth: false, // set to use fragment depth values\n\t\tdrawBuffers: false, // set to use draw buffers\n\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t};\n\n\t// When rendered geometry doesn't include these attributes but the material does,\n\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\tthis.defaultAttributeValues = {\n\t\t'color': [ 1, 1, 1 ],\n\t\t'uv': [ 0, 0 ],\n\t\t'uv2': [ 0, 0 ]\n\t};\n\n\tthis.index0AttributeName = undefined;\n\tthis.uniformsNeedUpdate = false;\n\n\tif ( parameters !== undefined ) {\n\n\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n}\n\nShaderMaterial.prototype = Object.create( Material.prototype );\nShaderMaterial.prototype.constructor = ShaderMaterial;\n\nShaderMaterial.prototype.isShaderMaterial = true;\n\nShaderMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.fragmentShader = source.fragmentShader;\n\tthis.vertexShader = source.vertexShader;\n\n\tthis.uniforms = cloneUniforms( source.uniforms );\n\n\tthis.defines = Object.assign( {}, source.defines );\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.lights = source.lights;\n\tthis.clipping = source.clipping;\n\n\tthis.skinning = source.skinning;\n\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.extensions = Object.assign( {}, source.extensions );\n\n\treturn this;\n\n};\n\nShaderMaterial.prototype.toJSON = function ( meta ) {\n\n\tconst data = Material.prototype.toJSON.call( this, meta );\n\n\tdata.uniforms = {};\n\n\tfor ( const name in this.uniforms ) {\n\n\t\tconst uniform = this.uniforms[ name ];\n\t\tconst value = uniform.value;\n\n\t\tif ( value && value.isTexture ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 't',\n\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t};\n\n\t\t} else if ( value && value.isColor ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'c',\n\t\t\t\tvalue: value.getHex()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v2',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v3',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v4',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'm3',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'm4',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\tvalue: value\n\t\t\t};\n\n\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t}\n\n\t}\n\n\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\tdata.vertexShader = this.vertexShader;\n\tdata.fragmentShader = this.fragmentShader;\n\n\tconst extensions = {};\n\n\tfor ( const key in this.extensions ) {\n\n\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t}\n\n\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\treturn data;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction Camera() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Camera';\n\n\tthis.matrixWorldInverse = new Matrix4();\n\n\tthis.projectionMatrix = new Matrix4();\n\tthis.projectionMatrixInverse = new Matrix4();\n\n}\n\nCamera.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Camera,\n\n\tisCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\treturn this;\n\n\t},\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Camera: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize();\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\n\n\t},\n\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\n\n\t\tObject3D.prototype.updateWorldMatrix.call( this, updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author greggman / http://games.greggman.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author tschw\n */\n\nfunction PerspectiveCamera( fov, aspect, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'PerspectiveCamera';\n\n\tthis.fov = fov !== undefined ? fov : 50;\n\tthis.zoom = 1;\n\n\tthis.near = near !== undefined ? near : 0.1;\n\tthis.far = far !== undefined ? far : 2000;\n\tthis.focus = 10;\n\n\tthis.aspect = aspect !== undefined ? aspect : 1;\n\tthis.view = null;\n\n\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\tthis.updateProjectionMatrix();\n\n}\n\nPerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: PerspectiveCamera,\n\n\tisPerspectiveCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t},\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength: function ( focalLength ) {\n\n\t\t// see http://www.bobatkins.com/photography/technical/field_of_view.html\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = MathUtils.RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength: function () {\n\n\t\tconst vExtentSlope = Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t},\n\n\tgetEffectiveFOV: function () {\n\n\t\treturn MathUtils.RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( MathUtils.DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t},\n\n\tgetFilmWidth: function () {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t},\n\n\tgetFilmHeight: function () {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t},\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * const w = 1920;\n\t * const h = 1080;\n\t * const fullWidth = w * 3;\n\t * const fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tlet near = this.near,\n\t\t\ttop = near * Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov ) / this.zoom,\n\t\t\theight = 2 * top,\n\t\t\twidth = this.aspect * height,\n\t\t\tleft = - 0.5 * width,\n\t\t\tview = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );\n\n\t\tthis.projectionMatrixInverse.getInverse( this.projectionMatrix );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * Camera for rendering cube maps\n *\t- renders scene into axis-aligned cube\n *\n * @author alteredq / http://alteredqualia.com/\n */\n\nconst fov = 90, aspect = 1;\n\nfunction CubeCamera( near, far, renderTarget ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'CubeCamera';\n\n\tif ( renderTarget.isWebGLCubeRenderTarget !== true ) {\n\n\t\tconsole.error( 'THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.' );\n\t\treturn;\n\n\t}\n\n\tthis.renderTarget = renderTarget;\n\n\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPX.layers = this.layers;\n\tcameraPX.up.set( 0, - 1, 0 );\n\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\tthis.add( cameraPX );\n\n\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNX.layers = this.layers;\n\tcameraNX.up.set( 0, - 1, 0 );\n\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\tthis.add( cameraNX );\n\n\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPY.layers = this.layers;\n\tcameraPY.up.set( 0, 0, 1 );\n\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\tthis.add( cameraPY );\n\n\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNY.layers = this.layers;\n\tcameraNY.up.set( 0, 0, - 1 );\n\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\tthis.add( cameraNY );\n\n\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPZ.layers = this.layers;\n\tcameraPZ.up.set( 0, - 1, 0 );\n\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\tthis.add( cameraPZ );\n\n\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNZ.layers = this.layers;\n\tcameraNZ.up.set( 0, - 1, 0 );\n\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\tthis.add( cameraNZ );\n\n\tthis.update = function ( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\trenderer.xr.enabled = false;\n\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0 );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1 );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2 );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3 );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4 );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5 );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t};\n\n\tthis.clear = function ( renderer, color, depth, stencil ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( renderTarget, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t};\n\n}\n\nCubeCamera.prototype = Object.create( Object3D.prototype );\nCubeCamera.prototype.constructor = CubeCamera;\n\n/**\n * @author alteredq / http://alteredqualia.com\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction WebGLCubeRenderTarget( size, options, dummy ) {\n\n\tif ( Number.isInteger( options ) ) {\n\n\t\tconsole.warn( 'THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )' );\n\n\t\toptions = dummy;\n\n\t}\n\n\tWebGLRenderTarget.call( this, size, size, options );\n\n}\n\nWebGLCubeRenderTarget.prototype = Object.create( WebGLRenderTarget.prototype );\nWebGLCubeRenderTarget.prototype.constructor = WebGLCubeRenderTarget;\n\nWebGLCubeRenderTarget.prototype.isWebGLCubeRenderTarget = true;\n\nWebGLCubeRenderTarget.prototype.fromEquirectangularTexture = function ( renderer, texture ) {\n\n\tthis.texture.type = texture.type;\n\tthis.texture.format = texture.format;\n\tthis.texture.encoding = texture.encoding;\n\n\tconst scene = new Scene();\n\n\tconst shader = {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: [\n\n\t\t\t\"varying vec3 vWorldDirection;\",\n\n\t\t\t\"vec3 transformDirection( in vec3 dir, in mat4 matrix ) {\",\n\n\t\t\t\"\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\",\n\n\t\t\t\"}\",\n\n\t\t\t\"void main() {\",\n\n\t\t\t\"\tvWorldDirection = transformDirection( position, modelMatrix );\",\n\n\t\t\t\"\t#include \",\n\t\t\t\"\t#include \",\n\n\t\t\t\"}\"\n\n\t\t].join( '\\n' ),\n\n\t\tfragmentShader: [\n\n\t\t\t\"uniform sampler2D tEquirect;\",\n\n\t\t\t\"varying vec3 vWorldDirection;\",\n\n\t\t\t\"#include \",\n\n\t\t\t\"void main() {\",\n\n\t\t\t\"\tvec3 direction = normalize( vWorldDirection );\",\n\n\t\t\t\"\tvec2 sampleUV = equirectUv( direction );\",\n\n\t\t\t\"\tgl_FragColor = texture2D( tEquirect, sampleUV );\",\n\n\t\t\t\"}\"\n\n\t\t].join( '\\n' ),\n\t};\n\n\tconst material = new ShaderMaterial( {\n\n\t\tname: 'CubemapFromEquirect',\n\n\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\tvertexShader: shader.vertexShader,\n\t\tfragmentShader: shader.fragmentShader,\n\t\tside: BackSide,\n\t\tblending: NoBlending\n\n\t} );\n\n\tmaterial.uniforms.tEquirect.value = texture;\n\n\tconst mesh = new Mesh( new BoxBufferGeometry( 5, 5, 5 ), material );\n\n\tscene.add( mesh );\n\n\tconst camera = new CubeCamera( 1, 10, this );\n\tcamera.update( renderer, scene );\n\n\tmesh.geometry.dispose();\n\tmesh.material.dispose();\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1 };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\tthis.unpackAlignment = 1;\n\n\tthis.needsUpdate = true;\n\n}\n\nDataTexture.prototype = Object.create( Texture.prototype );\nDataTexture.prototype.constructor = DataTexture;\n\nDataTexture.prototype.isDataTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / http://clara.io\n */\n\nconst _sphere$1 = new Sphere();\nconst _vector$5 = new Vector3();\n\nfunction Frustum( p0, p1, p2, p3, p4, p5 ) {\n\n\tthis.planes = [\n\n\t\t( p0 !== undefined ) ? p0 : new Plane(),\n\t\t( p1 !== undefined ) ? p1 : new Plane(),\n\t\t( p2 !== undefined ) ? p2 : new Plane(),\n\t\t( p3 !== undefined ) ? p3 : new Plane(),\n\t\t( p4 !== undefined ) ? p4 : new Plane(),\n\t\t( p5 !== undefined ) ? p5 : new Plane()\n\n\t];\n\n}\n\nObject.assign( Frustum.prototype, {\n\n\tset: function ( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromProjectionMatrix: function ( m ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\tintersectsObject: function ( object ) {\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$1 );\n\n\t},\n\n\tintersectsSprite: function ( sprite ) {\n\n\t\t_sphere$1.center.set( 0, 0, 0 );\n\t\t_sphere$1.radius = 0.7071067811865476;\n\t\t_sphere$1.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$1 );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$5.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$5.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$5.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$5 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n} );\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nconst UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() },\n\t\tuv2Transform: { value: new Matrix3() },\n\n\t\talphaMap: { value: null },\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 },\n\t\trefractionRatio: { value: 0.98 },\n\t\tmaxMipLevel: { value: 0 }\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalScale: { value: new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {}\n\t\t} },\n\n\t\tdirectionalLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {}\n\t\t} },\n\n\t\tspotLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotShadowMap: { value: [] },\n\t\tspotShadowMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {}\n\t\t} },\n\n\t\tpointLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLAnimation() {\n\n\tlet context = null;\n\tlet isAnimating = false;\n\tlet animationLoop = null;\n\tlet requestId = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tanimationLoop( time, frame );\n\n\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tcontext.cancelAnimationFrame( requestId );\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLAttributes( gl, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tconst buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst usage = attribute.usage;\n\n\t\tconst buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tlet type = 5126;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = 5126;\n\n\t\t} else if ( array instanceof Float64Array ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' );\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\ttype = 5123;\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = 5122;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = 5125;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = 5124;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = 5120;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = 5121;\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst updateRange = attribute.updateRange;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t} else {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, updateRange.offset, updateRange.count );\n\n\t\t\t} else {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\t}\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// PlaneGeometry\n\nfunction PlaneGeometry( width, height, widthSegments, heightSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PlaneGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\tthis.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) );\n\tthis.mergeVertices();\n\n}\n\nPlaneGeometry.prototype = Object.create( Geometry.prototype );\nPlaneGeometry.prototype.constructor = PlaneGeometry;\n\n// PlaneBufferGeometry\n\nfunction PlaneBufferGeometry( width, height, widthSegments, heightSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PlaneBufferGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\twidth = width || 1;\n\theight = height || 1;\n\n\tconst width_half = width / 2;\n\tconst height_half = height / 2;\n\n\tconst gridX = Math.floor( widthSegments ) || 1;\n\tconst gridY = Math.floor( heightSegments ) || 1;\n\n\tconst gridX1 = gridX + 1;\n\tconst gridY1 = gridY + 1;\n\n\tconst segment_width = width / gridX;\n\tconst segment_height = height / gridY;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\tconst y = iy * segment_height - height_half;\n\n\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\tuvs.push( ix / gridX );\n\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\tconst a = ix + gridX1 * iy;\n\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nPlaneBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry;\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef ALPHATEST\\n\\tif ( diffuseColor.a < ALPHATEST ) discard;\\n#endif\";\n\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\\n\\t#endif\\n#endif\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\nvar bsdfs = \"vec2 integrateSpecularBRDF( const in float dotNV, const in float roughness ) {\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\treturn vec2( -1.04, 1.04 ) * a004 + r.zw;\\n}\\nfloat punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\tif( cutoffDistance > 0.0 ) {\\n\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t}\\n\\treturn distanceFalloff;\\n#else\\n\\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t}\\n\\treturn 1.0;\\n#endif\\n}\\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\\n\\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\\n\\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\\n}\\nvec3 F_Schlick_RoughnessDependent( const in vec3 F0, const in float dotNV, const in float roughness ) {\\n\\tfloat fresnel = exp2( ( -5.55473 * dotNV - 6.98316 ) * dotNV );\\n\\tvec3 Fr = max( vec3( 1.0 - roughness ), F0 ) - F0;\\n\\treturn Fr * fresnel + F0;\\n}\\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\treturn 1.0 / ( gl * gv );\\n}\\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( incidentLight.direction + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, incidentLight.direction ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, dotLH );\\n\\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\tfloat D = D_GGX( alpha, dotNH );\\n\\treturn F * ( G * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\nvec3 BRDF_Specular_GGX_Environment( const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\\n\\treturn specularColor * brdf.x + brdf.y;\\n}\\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\tvec3 F = F_Schlick_RoughnessDependent( specularColor, dotNV, roughness );\\n\\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\\n\\tvec3 FssEss = F * brdf.x + brdf.y;\\n\\tfloat Ess = brdf.x + brdf.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\n}\\nfloat G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\\n\\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\\n\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, dotLH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n}\\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\\n\\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\\n}\\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\\n\\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie(float roughness, float NoH) {\\n\\tfloat invAlpha = 1.0 / roughness;\\n\\tfloat cos2h = NoH * NoH;\\n\\tfloat sin2h = max(1.0 - cos2h, 0.0078125);\\treturn (2.0 + invAlpha) * pow(sin2h, invAlpha * 0.5) / (2.0 * PI);\\n}\\nfloat V_Neubelt(float NoV, float NoL) {\\n\\treturn saturate(1.0 / (4.0 * (NoL + NoV - NoL * NoV)));\\n}\\nvec3 BRDF_Specular_Sheen( const in float roughness, const in vec3 L, const in GeometricContext geometry, vec3 specularColor ) {\\n\\tvec3 N = geometry.normal;\\n\\tvec3 V = geometry.viewDir;\\n\\tvec3 H = normalize( V + L );\\n\\tfloat dotNH = saturate( dot( N, H ) );\\n\\treturn specularColor * D_Charlie( roughness, dotNH ) * V_Neubelt( dot(N, V), dot(N, L) );\\n}\\n#endif\";\n\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vUv );\\n\\t\\tvec2 dSTdy = dFdy( vUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\\n\\t\\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\\n\\t\\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\\n\\t\\tvec3 vN = surf_norm;\\n\\t\\tvec3 R1 = cross( vSigmaY, vN );\\n\\t\\tvec3 R2 = cross( vN, vSigmaX );\\n\\t\\tfloat fDet = dot( vSigmaX, R1 );\\n\\t\\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#ifdef USE_COLOR\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#ifdef USE_COLOR\\n\\tvColor.xyz = color.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate(a) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement(a) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract(sin(sn) * c);\\n}\\n#ifdef HIGH_PRECISION\\n\\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\\tfloat max3( vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\n\\tfloat precisionSafeLength( vec3 v ) {\\n\\t\\tfloat maxComponent = max3( abs( v ) );\\n\\t\\treturn length( v / maxComponent ) * maxComponent;\\n\\t}\\n#endif\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\nstruct GeometricContext {\\n\\tvec3 position;\\n\\tvec3 normal;\\n\\tvec3 viewDir;\\n#ifdef CLEARCOAT\\n\\tvec3 clearcoatNormal;\\n#endif\\n};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\tfloat distance = dot( planeNormal, point - pointOnPlane );\\n\\treturn - distance * planeNormal + point;\\n}\\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn sign( dot( point - pointOnPlane, planeNormal ) );\\n}\\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat linearToRelativeLuminance( const in vec3 color ) {\\n\\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\\n\\treturn dot( weights, color.rgb );\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n return m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\treturn vec2( u, v );\\n}\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n#define cubeUV_maxMipLevel 8.0\\n#define cubeUV_minMipLevel 4.0\\n#define cubeUV_maxTileSize 256.0\\n#define cubeUV_minTileSize 16.0\\nfloat getFace(vec3 direction) {\\n vec3 absDirection = abs(direction);\\n float face = -1.0;\\n if (absDirection.x > absDirection.z) {\\n if (absDirection.x > absDirection.y)\\n face = direction.x > 0.0 ? 0.0 : 3.0;\\n else\\n face = direction.y > 0.0 ? 1.0 : 4.0;\\n } else {\\n if (absDirection.z > absDirection.y)\\n face = direction.z > 0.0 ? 2.0 : 5.0;\\n else\\n face = direction.y > 0.0 ? 1.0 : 4.0;\\n }\\n return face;\\n}\\nvec2 getUV(vec3 direction, float face) {\\n vec2 uv;\\n if (face == 0.0) {\\n uv = vec2(direction.z, direction.y) / abs(direction.x); } else if (face == 1.0) {\\n uv = vec2(-direction.x, -direction.z) / abs(direction.y); } else if (face == 2.0) {\\n uv = vec2(-direction.x, direction.y) / abs(direction.z); } else if (face == 3.0) {\\n uv = vec2(-direction.z, direction.y) / abs(direction.x); } else if (face == 4.0) {\\n uv = vec2(-direction.x, direction.z) / abs(direction.y); } else {\\n uv = vec2(direction.x, direction.y) / abs(direction.z); }\\n return 0.5 * (uv + 1.0);\\n}\\nvec3 bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {\\n float face = getFace(direction);\\n float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);\\n mipInt = max(mipInt, cubeUV_minMipLevel);\\n float faceSize = exp2(mipInt);\\n float texelSize = 1.0 / (3.0 * cubeUV_maxTileSize);\\n vec2 uv = getUV(direction, face) * (faceSize - 1.0);\\n vec2 f = fract(uv);\\n uv += 0.5 - f;\\n if (face > 2.0) {\\n uv.y += faceSize;\\n face -= 3.0;\\n }\\n uv.x += face * faceSize;\\n if(mipInt < cubeUV_maxMipLevel){\\n uv.y += 2.0 * cubeUV_maxTileSize;\\n }\\n uv.y += filterInt * 2.0 * cubeUV_minTileSize;\\n uv.x += 3.0 * max(0.0, cubeUV_maxTileSize - 2.0 * faceSize);\\n uv *= texelSize;\\n vec3 tl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.x += texelSize;\\n vec3 tr = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.y += texelSize;\\n vec3 br = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.x -= texelSize;\\n vec3 bl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n vec3 tm = mix(tl, tr, f.x);\\n vec3 bm = mix(bl, br, f.x);\\n return mix(tm, bm, f.y);\\n}\\n#define r0 1.0\\n#define v0 0.339\\n#define m0 -2.0\\n#define r1 0.8\\n#define v1 0.276\\n#define m1 -1.0\\n#define r4 0.4\\n#define v4 0.046\\n#define m4 2.0\\n#define r5 0.305\\n#define v5 0.016\\n#define m5 3.0\\n#define r6 0.21\\n#define v6 0.0038\\n#define m6 4.0\\nfloat roughnessToMip(float roughness) {\\n float mip = 0.0;\\n if (roughness >= r1) {\\n mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;\\n } else if (roughness >= r4) {\\n mip = (r1 - roughness) * (m4 - m1) / (r1 - r4) + m1;\\n } else if (roughness >= r5) {\\n mip = (r4 - roughness) * (m5 - m4) / (r4 - r5) + m4;\\n } else if (roughness >= r6) {\\n mip = (r5 - roughness) * (m6 - m5) / (r5 - r6) + m5;\\n } else {\\n mip = -2.0 * log2(1.16 * roughness); }\\n return mip;\\n}\\nvec4 textureCubeUV(sampler2D envMap, vec3 sampleDir, float roughness) {\\n float mip = clamp(roughnessToMip(roughness), m0, cubeUV_maxMipLevel);\\n float mipF = fract(mip);\\n float mipInt = floor(mip);\\n vec3 color0 = bilinearCubeUV(envMap, sampleDir, mipInt);\\n if (mipF == 0.0) {\\n return vec4(color0, 1.0);\\n } else {\\n vec3 color1 = bilinearCubeUV(envMap, sampleDir, mipInt + 1.0);\\n return vec4(mix(color0, color1, mipF), 1.0);\\n }\\n}\\n#endif\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_INSTANCING\\n\\tmat3 m = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\\n\\ttransformedNormal = m * transformedNormal;\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar encodings_pars_fragment = \"\\nvec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\\n}\\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\\n}\\nvec4 sRGBToLinear( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\\treturn 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 );\\n}\\nvec4 RGBEToLinear( in vec4 value ) {\\n\\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\\n}\\nvec4 LinearToRGBE( in vec4 value ) {\\n\\tfloat maxComponent = max( max( value.r, value.g ), value.b );\\n\\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\\n\\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\\n}\\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\\n}\\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\\n\\tM = ceil( M * 255.0 ) / 255.0;\\n\\treturn vec4( value.rgb / ( M * maxRange ), M );\\n}\\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\\n}\\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat D = max( maxRange / maxRGB, 1.0 );\\n\\tD = clamp( floor( D ) / 255.0, 0.0, 1.0 );\\n\\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\\n}\\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\\nvec4 LinearToLogLuv( in vec4 value ) {\\n\\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\\n\\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\\n\\tvec4 vResult;\\n\\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\\n\\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\\n\\tvResult.w = fract( Le );\\n\\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\\n\\treturn vResult;\\n}\\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\\nvec4 LogLuvToLinear( in vec4 value ) {\\n\\tfloat Le = value.z * 255.0 + value.w;\\n\\tvec3 Xp_Y_XYZp;\\n\\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\\n\\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\\n\\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\\n\\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\\n\\treturn vec4( max( vRGB, 0.0 ), 1.0 );\\n}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\t\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\\n\\t#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\treflectVec = normalize( reflectVec );\\n\\t\\tvec2 sampleUV = equirectUv( reflectVec );\\n\\t\\tvec4 envColor = texture2D( envMap, sampleUV );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\t#ifndef ENVMAP_TYPE_CUBE_UV\\n\\t\\tenvColor = envMapTexelToLinear( envColor );\\n\\t#endif\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\";\n\nvar envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float envMapIntensity;\\n\\tuniform float flipEnvMap;\\n\\tuniform int maxMipLevel;\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\t\\n#endif\";\n\nvar envmap_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float reflectivity;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\";\n\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\t\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n#endif\";\n\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvWorldPosition = worldPosition.xyz;\\n\\t#else\\n\\t\\tvec3 cameraToVertex;\\n\\t\\tif ( isOrthographic ) { \\n\\t\\t\\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvReflect = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tfogDepth = -mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float fogDepth;\\n#endif\";\n\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\n\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float fogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\";\n\nvar gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\tfloat dotNL = dot( normal, lightDirection );\\n\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t#ifdef USE_GRADIENTMAP\\n\\t\\treturn texture2D( gradientMap, coord ).rgb;\\n\\t#else\\n\\t\\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\\n\\t#endif\\n}\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\treflectedLight.indirectDiffuse += PI * lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_vertex = \"vec3 diffuse = vec3( 1.0 );\\nGeometricContext geometry;\\ngeometry.position = mvPosition.xyz;\\ngeometry.normal = normalize( transformedNormal );\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );\\nGeometricContext backGeometry;\\nbackGeometry.position = geometry.position;\\nbackGeometry.normal = -geometry.normal;\\nbackGeometry.viewDir = geometry.viewDir;\\nvLightFront = vec3( 0.0 );\\nvIndirectFront = vec3( 0.0 );\\n#ifdef DOUBLE_SIDED\\n\\tvLightBack = vec3( 0.0 );\\n\\tvIndirectBack = vec3( 0.0 );\\n#endif\\nIncidentLight directLight;\\nfloat dotNL;\\nvec3 directLightColor_Diffuse;\\nvIndirectFront += getAmbientLightIrradiance( ambientLightColor );\\nvIndirectFront += getLightProbeIrradiance( lightProbe, geometry );\\n#ifdef DOUBLE_SIDED\\n\\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\\n\\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry );\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_DIR_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\";\n\nvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\nuniform vec3 lightProbe[ 9 ];\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) {\\n\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treturn irradiance;\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tdirectLight.color = directionalLight.color;\\n\\t\\tdirectLight.direction = directionalLight.direction;\\n\\t\\tdirectLight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tvec3 lVector = pointLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tdirectLight.color = pointLight.color;\\n\\t\\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tvec3 lVector = spotLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tfloat angleCos = dot( directLight.direction, spotLight.direction );\\n\\t\\tif ( angleCos > spotLight.coneCos ) {\\n\\t\\t\\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\t\\tdirectLight.color = spotLight.color;\\n\\t\\t\\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tdirectLight.visible = true;\\n\\t\\t} else {\\n\\t\\t\\tdirectLight.color = vec3( 0.0 );\\n\\t\\t\\tdirectLight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\\n\\t\\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tirradiance *= PI;\\n\\t\\t#endif\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\nvar envmap_physical_pars_fragment = \"#if defined( USE_ENVMAP )\\n\\t#ifdef ENVMAP_MODE_REFRACTION\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n\\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\\n\\t\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\\t\\t#else\\n\\t\\t\\tvec4 envMapColor = vec4( 0.0 );\\n\\t\\t#endif\\n\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t}\\n\\tfloat getSpecularMIPLevel( const in float roughness, const in int maxMIPLevel ) {\\n\\t\\tfloat maxMIPLevelScalar = float( maxMIPLevel );\\n\\t\\tfloat sigma = PI * roughness * roughness / ( 1.0 + roughness );\\n\\t\\tfloat desiredMIPLevel = maxMIPLevelScalar + log2( sigma );\\n\\t\\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\\n\\t}\\n\\tvec3 getLightProbeIndirectRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in int maxMIPLevel ) {\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t vec3 reflectVec = reflect( -viewDir, normal );\\n\\t\\t reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t#else\\n\\t\\t vec3 reflectVec = refract( -viewDir, normal, refractionRatio );\\n\\t\\t#endif\\n\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\tfloat specularMIPLevel = getSpecularMIPLevel( roughness, maxMIPLevel );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\\t\\t#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\t\\tvec2 sampleUV = equirectUv( reflectVec );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#endif\\n\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t}\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\nstruct ToonMaterial {\\n\\tvec3\\tdiffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Toon\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\nstruct BlinnPhongMaterial {\\n\\tvec3\\tdiffuseColor;\\n\\tvec3\\tspecularColor;\\n\\tfloat\\tspecularShininess;\\n\\tfloat\\tspecularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.specularRoughness = max( roughnessFactor, 0.0525 );material.specularRoughness += geometryRoughness;\\nmaterial.specularRoughness = min( material.specularRoughness, 1.0 );\\n#ifdef REFLECTIVITY\\n\\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\\n#endif\\n#ifdef CLEARCOAT\\n\\tmaterial.clearcoat = clearcoat;\\n\\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\\t#ifdef USE_CLEARCOATMAP\\n\\t\\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\t\\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\\n\\t#endif\\n\\tmaterial.clearcoat = saturate( material.clearcoat );\\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\\tmaterial.clearcoatRoughness += geometryRoughness;\\n\\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_SHEEN\\n\\tmaterial.sheenColor = sheen;\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3\\tdiffuseColor;\\n\\tfloat\\tspecularRoughness;\\n\\tvec3\\tspecularColor;\\n#ifdef CLEARCOAT\\n\\tfloat clearcoat;\\n\\tfloat clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\n\\tvec3 sheenColor;\\n#endif\\n};\\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\\nfloat clearcoatDHRApprox( const in float roughness, const in float dotNL ) {\\n\\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometry.normal;\\n\\t\\tvec3 viewDir = geometry.viewDir;\\n\\t\\tvec3 position = geometry.position;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.specularRoughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3( 0, 1, 0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\t#ifdef CLEARCOAT\\n\\t\\tfloat ccDotNL = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = ccDotNL * directLight.color;\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tccIrradiance *= PI;\\n\\t\\t#endif\\n\\t\\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\\n\\t\\treflectedLight.directSpecular += ccIrradiance * material.clearcoat * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\\n\\t#else\\n\\t\\tfloat clearcoatDHR = 0.0;\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_Sheen(\\n\\t\\t\\tmaterial.specularRoughness,\\n\\t\\t\\tdirectLight.direction,\\n\\t\\t\\tgeometry,\\n\\t\\t\\tmaterial.sheenColor\\n\\t\\t);\\n\\t#else\\n\\t\\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.normal, material.specularColor, material.specularRoughness);\\n\\t#endif\\n\\treflectedLight.directDiffuse += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\nvoid 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) {\\n\\t#ifdef CLEARCOAT\\n\\t\\tfloat ccDotNV = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular += clearcoatRadiance * material.clearcoat * BRDF_Specular_GGX_Environment( geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\\n\\t\\tfloat ccDotNL = ccDotNV;\\n\\t\\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\\n\\t#else\\n\\t\\tfloat clearcoatDHR = 0.0;\\n\\t#endif\\n\\tfloat clearcoatInv = 1.0 - clearcoatDHR;\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\\n\\treflectedLight.indirectSpecular += clearcoatInv * radiance * singleScattering;\\n\\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\n\nvar lights_fragment_begin = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\n#ifdef CLEARCOAT\\n\\tgeometry.clearcoatNormal = clearcoatNormal;\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\\t\\tpointLightShadow = pointLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\tspotLightShadow = spotLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\\t\\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 iblIrradiance = vec3( 0.0 );\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\tirradiance += getLightProbeIrradiance( lightProbe, geometry );\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\t\\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tlightMapIrradiance *= PI;\\n\\t\\t#endif\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tiblIrradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\tradiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.normal, material.specularRoughness, maxMipLevel );\\n\\t#ifdef CLEARCOAT\\n\\t\\tclearcoatRadiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness, maxMipLevel );\\n\\t#endif\\n#endif\";\n\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\\n#endif\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t\\tvarying float vIsPerspective;\\n\\t#else\\n\\t\\tuniform float logDepthBufFC;\\n\\t#endif\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t\\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n\\t#else\\n\\t\\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\\n\\t\\t\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\\t\\t\\tgl_Position.z *= gl_Position.w;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 texelColor = texture2D( map, vUv );\\n\\ttexelColor = mapTexelToLinear( texelColor );\\n\\tdiffuseColor *= texelColor;\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\nvar map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n#endif\\n#ifdef USE_MAP\\n\\tvec4 mapTexel = texture2D( map, uv );\\n\\tdiffuseColor *= mapTexelToLinear( mapTexel );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\";\n\nvar map_particle_pars_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tuniform mat3 uvTransform;\\n#endif\\n#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal *= morphTargetBaseInfluence;\\n\\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\tuniform float morphTargetBaseInfluence;\\n\\t#ifndef USE_MORPHNORMALS\\n\\tuniform float morphTargetInfluences[ 8 ];\\n\\t#else\\n\\tuniform float morphTargetInfluences[ 4 ];\\n\\t#endif\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\\t#ifndef USE_MORPHNORMALS\\n\\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\\t#endif\\n#endif\";\n\nvar normal_fragment_begin = \"#ifdef FLAT_SHADED\\n\\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\\n\\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t#endif\\n\\t#ifdef USE_TANGENT\\n\\t\\tvec3 tangent = normalize( vTangent );\\n\\t\\tvec3 bitangent = normalize( vBitangent );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\ttangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t\\tbitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t#endif\\n\\t\\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\\n\\t\\t\\tmat3 vTBN = mat3( tangent, bitangent, normal );\\n\\t\\t#endif\\n\\t#endif\\n#endif\\nvec3 geometryNormal = normal;\";\n\nvar normal_fragment_maps = \"#ifdef OBJECTSPACE_NORMALMAP\\n\\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t#ifdef FLIP_SIDED\\n\\t\\tnormal = - normal;\\n\\t#endif\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t#endif\\n\\tnormal = normalize( normalMatrix * normal );\\n#elif defined( TANGENTSPACE_NORMALMAP )\\n\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tnormal = normalize( vTBN * mapN );\\n\\t#else\\n\\t\\tnormal = perturbNormal2Arb( -vViewPosition, normal, mapN );\\n\\t#endif\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\\n#endif\";\n\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n#endif\\n#ifdef OBJECTSPACE_NORMALMAP\\n\\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\\n\\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN ) {\\n\\t\\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\\n\\t\\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\\n\\t\\tvec2 st0 = dFdx( vUv.st );\\n\\t\\tvec2 st1 = dFdy( vUv.st );\\n\\t\\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\\n\\t\\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\\n\\t\\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\\n\\t\\tvec3 N = normalize( surf_norm );\\n\\t\\tmat3 tsn = mat3( S, T, N );\\n\\t\\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\treturn normalize( tsn * mapN );\\n\\t}\\n#endif\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef CLEARCOAT\\n\\tvec3 clearcoatNormal = geometryNormal;\\n#endif\";\n\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\\n\\t#else\\n\\t\\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN );\\n\\t#endif\\n#endif\";\n\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\";\n\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\\tr.yzw -= r.xyz * ShiftRight8;\\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors );\\n}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ));\\n\\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w);\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\\n\\treturn linearClipZ * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\\n}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\nvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_INSTANCING\\n\\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\n\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\nvar dithering_pars_fragment = \"#ifdef DITHERING\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\nvar shadowmap_pars_fragment = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\\t\\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\\t}\\n\\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\\t\\tfloat occlusion = 1.0;\\n\\t\\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\\t\\tfloat hard_shadow = step( compare , distribution.x );\\n\\t\\tif (hard_shadow != 1.0 ) {\\n\\t\\t\\tfloat distance = compare - distribution.x ;\\n\\t\\t\\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\\t\\t\\tfloat softness_probability = variance / (variance + distance * distance );\\t\\t\\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\\t\\t\\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\\t\\t}\\n\\t\\treturn occlusion;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\\n\\t\\tbool inFrustum = all( inFrustumVec );\\n\\t\\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\\n\\t\\tbool frustumTest = all( frustumTestVec );\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx2 = dx0 / 2.0;\\n\\t\\t\\tfloat dy2 = dy0 / 2.0;\\n\\t\\t\\tfloat dx3 = dx1 / 2.0;\\n\\t\\t\\tfloat dy3 = dy1 / 2.0;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 17.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx = texelSize.x;\\n\\t\\t\\tfloat dy = texelSize.y;\\n\\t\\t\\tvec2 uv = shadowCoord.xy;\\n\\t\\t\\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\\t\\t\\tuv -= f * texelSize;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t f.y )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\tdp += shadowBias;\\n\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\treturn (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar shadowmap_pars_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n#endif\";\n\nvar shadowmap_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\tvec4 shadowWorldPosition;\\n\\t#endif\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\";\n\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tspotLight = spotLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tpointLight = pointLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\";\n\nvar skinbase_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\n\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\t#ifdef BONE_TEXTURE\\n\\t\\tuniform highp sampler2D boneTexture;\\n\\t\\tuniform int boneTextureSize;\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tfloat j = i * 4.0;\\n\\t\\t\\tfloat x = mod( j, float( boneTextureSize ) );\\n\\t\\t\\tfloat y = floor( j / float( boneTextureSize ) );\\n\\t\\t\\tfloat dx = 1.0 / float( boneTextureSize );\\n\\t\\t\\tfloat dy = 1.0 / float( boneTextureSize );\\n\\t\\t\\ty = dy * ( y + 0.5 );\\n\\t\\t\\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\n\\t\\t\\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\n\\t\\t\\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\n\\t\\t\\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\n\\t\\t\\tmat4 bone = mat4( v1, v2, v3, v4 );\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#else\\n\\t\\tuniform mat4 boneMatrices[ MAX_BONES ];\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tmat4 bone = boneMatrices[ int(i) ];\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar skinning_vertex = \"#ifdef USE_SKINNING\\n\\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\\tvec4 skinned = vec4( 0.0 );\\n\\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\";\n\nvar skinnormal_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 skinMatrix = mat4( 0.0 );\\n\\tskinMatrix += skinWeight.x * boneMatX;\\n\\tskinMatrix += skinWeight.y * boneMatY;\\n\\tskinMatrix += skinWeight.z * boneMatZ;\\n\\tskinMatrix += skinWeight.w * boneMatW;\\n\\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\\t#ifdef USE_TANGENT\\n\\t\\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#endif\\n#endif\";\n\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\\tvec4 texelSpecular = texture2D( specularMap, vUv );\\n\\tspecularStrength = texelSpecular.r;\\n#else\\n\\tspecularStrength = 1.0;\\n#endif\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n#define saturate(a) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn toneMappingExposure * color;\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 RRTAndODTFit( vec3 v ) {\\n\\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tconst mat3 ACESInputMat = mat3(\\n\\t\\tvec3( 0.59719, 0.07600, 0.02840 ),\\t\\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\\t\\tvec3( 0.04823, 0.01566, 0.83777 )\\n\\t);\\n\\tconst mat3 ACESOutputMat = mat3(\\n\\t\\tvec3( 1.60475, -0.10208, -0.00327 ),\\t\\tvec3( -0.53108, 1.10813, -0.07276 ),\\n\\t\\tvec3( -0.07367, -0.00605, 1.07602 )\\n\\t);\\n\\tcolor *= toneMappingExposure / 0.6;\\n\\tcolor = ACESInputMat * color;\\n\\tcolor = RRTAndODTFit( color );\\n\\tcolor = ACESOutputMat * color;\\n\\treturn saturate( color );\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\n\nvar uv_pars_fragment = \"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\\n\\tvarying vec2 vUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#ifdef USE_UV\\n\\t#ifdef UVS_VERTEX_ONLY\\n\\t\\tvec2 vUv;\\n\\t#else\\n\\t\\tvarying vec2 vUv;\\n\\t#endif\\n\\tuniform mat3 uvTransform;\\n#endif\";\n\nvar uv_vertex = \"#ifdef USE_UV\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\n\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\n\nvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tattribute vec2 uv2;\\n\\tvarying vec2 vUv2;\\n\\tuniform mat3 uv2Transform;\\n#endif\";\n\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\\n\\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\\t#ifdef USE_INSTANCING\\n\\t\\tworldPosition = instanceMatrix * worldPosition;\\n\\t#endif\\n\\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\n\nvar background_frag = \"uniform sampler2D t2D;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tvec4 texColor = texture2D( t2D, vUv );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include \\n\\t#include \\n}\";\n\nvar background_vert = \"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\";\n\nvar cube_frag = \"#include \\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 vReflect = vWorldDirection;\\n\\t#include \\n\\tgl_FragColor = envColor;\\n\\tgl_FragColor.a *= opacity;\\n\\t#include \\n\\t#include \\n}\";\n\nvar cube_vert = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nvar depth_frag = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\\t#endif\\n}\";\n\nvar depth_vert = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvHighPrecisionZW = gl_Position.zw;\\n}\";\n\nvar distanceRGBA_frag = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main () {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\n\nvar distanceRGBA_vert = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvWorldPosition = worldPosition.xyz;\\n}\";\n\nvar equirect_frag = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV = equirectUv( direction );\\n\\tvec4 texColor = texture2D( tEquirect, sampleUV );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include \\n\\t#include \\n}\";\n\nvar equirect_vert = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\n\nvar linedashed_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar linedashed_vert = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvLineDistance = scale * lineDistance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshbasic_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\n\\t\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\t\\treflectedLight.indirectDiffuse += lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include \\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshbasic_vert = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef USE_ENVMAP\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshlambert_frag = \"uniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vIndirectFront;\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\\n\\t#else\\n\\t\\treflectedLight.directDiffuse = vLightFront;\\n\\t#endif\\n\\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshlambert_vert = \"#define LAMBERT\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshmatcap_frag = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 viewDir = normalize( vViewPosition );\\n\\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\\tvec3 y = cross( viewDir, x );\\n\\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\\t#ifdef USE_MATCAP\\n\\t\\tvec4 matcapColor = texture2D( matcap, uv );\\n\\t\\tmatcapColor = matcapTexelToLinear( matcapColor );\\n\\t#else\\n\\t\\tvec4 matcapColor = vec4( 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshmatcap_vert = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifndef FLAT_SHADED\\n\\t\\tvNormal = normalize( transformedNormal );\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n}\";\n\nvar meshtoon_frag = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshtoon_vert = \"#define TOON\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshphong_frag = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include \\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshphong_vert = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshphysical_frag = \"#define STANDARD\\n#ifdef PHYSICAL\\n\\t#define REFLECTIVITY\\n\\t#define CLEARCOAT\\n\\t#define TRANSPARENCY\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef TRANSPARENCY\\n\\tuniform float transparency;\\n#endif\\n#ifdef REFLECTIVITY\\n\\tuniform float reflectivity;\\n#endif\\n#ifdef CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\n\\tuniform vec3 sheen;\\n#endif\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#ifdef TRANSPARENCY\\n\\t\\tdiffuseColor.a *= saturate( 1. - transparency + linearToRelativeLuminance( reflectedLight.directSpecular + reflectedLight.indirectSpecular ) );\\n\\t#endif\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshphysical_vert = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar normal_frag = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n}\";\n\nvar normal_vert = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n\nvar points_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar points_vert = \"uniform float size;\\nuniform float scale;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_PointSize = size;\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar shadow_frag = \"uniform vec3 color;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar shadow_vert = \"#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar sprite_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar sprite_vert = \"uniform float rotation;\\nuniform vec2 center;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\tvec2 scale;\\n\\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\\t#ifndef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) scale *= - mvPosition.z;\\n\\t#endif\\n\\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\\tvec2 rotatedPosition;\\n\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tencodings_fragment: encodings_fragment,\n\tencodings_pars_fragment: encodings_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_common_pars_fragment: envmap_common_pars_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_vertex: lights_lambert_vertex,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_toon_fragment: lights_toon_fragment,\n\tlights_toon_pars_fragment: lights_toon_pars_fragment,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tclearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin,\n\tclearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,\n\tclearcoat_pars_fragment: clearcoat_pars_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tuv2_pars_fragment: uv2_pars_fragment,\n\tuv2_pars_vertex: uv2_pars_vertex,\n\tuv2_vertex: uv2_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_frag: background_frag,\n\tbackground_vert: background_vert,\n\tcube_frag: cube_frag,\n\tcube_vert: cube_vert,\n\tdepth_frag: depth_frag,\n\tdepth_vert: depth_vert,\n\tdistanceRGBA_frag: distanceRGBA_frag,\n\tdistanceRGBA_vert: distanceRGBA_vert,\n\tequirect_frag: equirect_frag,\n\tequirect_vert: equirect_vert,\n\tlinedashed_frag: linedashed_frag,\n\tlinedashed_vert: linedashed_vert,\n\tmeshbasic_frag: meshbasic_frag,\n\tmeshbasic_vert: meshbasic_vert,\n\tmeshlambert_frag: meshlambert_frag,\n\tmeshlambert_vert: meshlambert_vert,\n\tmeshmatcap_frag: meshmatcap_frag,\n\tmeshmatcap_vert: meshmatcap_vert,\n\tmeshtoon_frag: meshtoon_frag,\n\tmeshtoon_vert: meshtoon_vert,\n\tmeshphong_frag: meshphong_frag,\n\tmeshphong_vert: meshphong_vert,\n\tmeshphysical_frag: meshphysical_frag,\n\tmeshphysical_vert: meshphysical_vert,\n\tnormal_frag: normal_frag,\n\tnormal_vert: normal_vert,\n\tpoints_frag: points_frag,\n\tpoints_vert: points_vert,\n\tshadow_frag: shadow_frag,\n\tshadow_vert: shadow_vert,\n\tsprite_frag: sprite_frag,\n\tsprite_vert: sprite_vert\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n */\n\nconst ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 1.0 },\n\t\t\t\tmetalness: { value: 0.0 },\n\t\t\t\tenvMapIntensity: { value: 1 } // temporary\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\ttoon: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.normal_vert,\n\t\tfragmentShader: ShaderChunk.normal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\tbackground: {\n\n\t\tuniforms: {\n\t\t\tuvTransform: { value: new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tcube: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.envmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearcoat: { value: 0 },\n\t\t\tclearcoatMap: { value: null },\n\t\t\tclearcoatRoughness: { value: 0 },\n\t\t\tclearcoatRoughnessMap: { value: null },\n\t\t\tclearcoatNormalScale: { value: new Vector2( 1, 1 ) },\n\t\t\tclearcoatNormalMap: { value: null },\n\t\t\tsheen: { value: new Color( 0x000000 ) },\n\t\t\ttransparency: { value: 0 },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLBackground( renderer, state, objects, premultipliedAlpha ) {\n\n\tconst clearColor = new Color( 0x000000 );\n\tlet clearAlpha = 0;\n\n\tlet planeMesh;\n\tlet boxMesh;\n\n\tlet currentBackground = null;\n\tlet currentBackgroundVersion = 0;\n\tlet currentTonemapping = null;\n\n\tfunction render( renderList, scene, camera, forceClear ) {\n\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\t// Ignore background in AR\n\t\t// TODO: Reconsider this.\n\n\t\tconst xr = renderer.xr;\n\t\tconst session = xr.getSession && xr.getSession();\n\n\t\tif ( session && session.environmentBlendMode === 'additive' ) {\n\n\t\t\tbackground = null;\n\n\t\t}\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && ( background.isCubeTexture || background.isWebGLCubeRenderTarget || background.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxBufferGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.cube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.cube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.cube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( boxMesh.material, 'envMap', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.envMap.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\tconst texture = background.isWebGLCubeRenderTarget ? background.texture : background;\n\n\t\t\tboxMesh.material.uniforms.envMap.value = texture;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = texture.isCubeTexture ? - 1 : 1;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== texture.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = texture.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneBufferGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.deleteAttribute( 'normal' );\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tstate.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha !== undefined ? alpha : 1;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n * @author Takahiro / https://github.com/takahirox\n */\n\nfunction WebGLBindingStates( gl, extensions, attributes, capabilities ) {\n\n\tconst maxVertexAttributes = gl.getParameter( 34921 );\n\n\tconst extension = capabilities.isWebGL2 ? null : extensions.get( 'OES_vertex_array_object' );\n\tconst vaoAvailable = capabilities.isWebGL2 || extension !== null;\n\n\tconst bindingStates = {};\n\n\tconst defaultState = createBindingState( null );\n\tlet currentState = defaultState;\n\n\tfunction setup( object, material, program, geometry, index ) {\n\n\t\tlet updateBuffers = false;\n\n\t\tif ( vaoAvailable ) {\n\n\t\t\tconst state = getBindingState( geometry, program, material );\n\n\t\t\tif ( currentState !== state ) {\n\n\t\t\t\tcurrentState = state;\n\t\t\t\tbindVertexArrayObject( currentState.object );\n\n\t\t\t}\n\n\t\t\tupdateBuffers = needsUpdate( geometry );\n\n\t\t\tif ( updateBuffers ) saveCache( geometry );\n\n\t\t} else {\n\n\t\t\tconst wireframe = ( material.wireframe === true );\n\n\t\t\tif ( currentState.geometry !== geometry.id ||\n\t\t\t\tcurrentState.program !== program.id ||\n\t\t\t\tcurrentState.wireframe !== wireframe ) {\n\n\t\t\t\tcurrentState.geometry = geometry.id;\n\t\t\t\tcurrentState.program = program.id;\n\t\t\t\tcurrentState.wireframe = wireframe;\n\n\t\t\t\tupdateBuffers = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh === true ) {\n\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, 34963 );\n\n\t\t}\n\n\t\tif ( updateBuffers ) {\n\n\t\t\tsetupVertexAttributes( object, material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tgl.bindBuffer( 34963, attributes.get( index ).buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createVertexArrayObject() {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.createVertexArray();\n\n\t\treturn extension.createVertexArrayOES();\n\n\t}\n\n\tfunction bindVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.bindVertexArray( vao );\n\n\t\treturn extension.bindVertexArrayOES( vao );\n\n\t}\n\n\tfunction deleteVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.deleteVertexArray( vao );\n\n\t\treturn extension.deleteVertexArrayOES( vao );\n\n\t}\n\n\tfunction getBindingState( geometry, program, material ) {\n\n\t\tconst wireframe = ( material.wireframe === true );\n\n\t\tlet programMap = bindingStates[ geometry.id ];\n\n\t\tif ( programMap === undefined ) {\n\n\t\t\tprogramMap = {};\n\t\t\tbindingStates[ geometry.id ] = programMap;\n\n\t\t}\n\n\t\tlet stateMap = programMap[ program.id ];\n\n\t\tif ( stateMap === undefined ) {\n\n\t\t\tstateMap = {};\n\t\t\tprogramMap[ program.id ] = stateMap;\n\n\t\t}\n\n\t\tlet state = stateMap[ wireframe ];\n\n\t\tif ( state === undefined ) {\n\n\t\t\tstate = createBindingState( createVertexArrayObject() );\n\t\t\tstateMap[ wireframe ] = state;\n\n\t\t}\n\n\t\treturn state;\n\n\t}\n\n\tfunction createBindingState( vao ) {\n\n\t\tconst newAttributes = [];\n\t\tconst enabledAttributes = [];\n\t\tconst attributeDivisors = [];\n\n\t\tfor ( let i = 0; i < maxVertexAttributes; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\t\t\tenabledAttributes[ i ] = 0;\n\t\t\tattributeDivisors[ i ] = 0;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\t// for backward compatibility on non-VAO support browser\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false,\n\n\t\t\tnewAttributes: newAttributes,\n\t\t\tenabledAttributes: enabledAttributes,\n\t\t\tattributeDivisors: attributeDivisors,\n\t\t\tobject: vao,\n\t\t\tattributes: {}\n\n\t\t};\n\n\t}\n\n\tfunction needsUpdate( geometry ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tif ( Object.keys( cachedAttributes ).length !== Object.keys( geometryAttributes ).length ) return true;\n\n\t\tfor ( const key in geometryAttributes ) {\n\n\t\t\tconst cachedAttribute = cachedAttributes[ key ];\n\t\t\tconst geometryAttribute = geometryAttributes[ key ];\n\n\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\n\n\t\t\tif ( cachedAttribute.data !== geometryAttribute.data ) return true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction saveCache( geometry ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tconst data = {};\n\t\t\tdata.attribute = attribute;\n\n\t\t\tif ( attribute.data ) {\n\n\t\t\t\tdata.data = attribute.data;\n\n\t\t\t}\n\n\t\t\tcache[ key ] = data;\n\n\t\t}\n\n\t\tcurrentState.attributes = cache;\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\n\t\tfor ( let i = 0, il = newAttributes.length; i < il; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\t\tconst attributeDivisors = currentState.attributeDivisors;\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tconst extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\n\t\tfor ( let i = 0, il = enabledAttributes.length; i < il; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction vertexAttribPointer( index, size, type, normalized, stride, offset ) {\n\n\t\tif ( capabilities.isWebGL2 === true && ( type === 5124 || type === 5125 ) ) {\n\n\t\t\tgl.vertexAttribIPointer( index, size, type, normalized, stride, offset );\n\n\t\t} else {\n\n\t\t\tgl.vertexAttribPointer( index, size, type, normalized, stride, offset );\n\n\t\t}\n\n\t}\n\n\tfunction setupVertexAttributes( object, material, program, geometry ) {\n\n\t\tif ( capabilities.isWebGL2 === false && ( object.isInstancedMesh || geometry.isInstancedBufferGeometry ) ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) return;\n\n\t\t}\n\n\t\tinitAttributes();\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tconst materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute >= 0 ) {\n\n\t\t\t\tconst geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tconst normalized = geometryAttribute.normalized;\n\t\t\t\t\tconst size = geometryAttribute.itemSize;\n\n\t\t\t\t\tconst attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\t\t\t\t\tconst bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst data = geometryAttribute.data;\n\t\t\t\t\t\tconst stride = data.stride;\n\t\t\t\t\t\tconst offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data && data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute, data.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tenableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\tvertexAttribPointer( programAttribute, size, type, normalized, stride * bytesPerElement, offset * bytesPerElement );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tenableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\tvertexAttribPointer( programAttribute, size, type, normalized, 0, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( name === 'instanceMatrix' ) {\n\n\t\t\t\t\tconst attribute = attributes.get( object.instanceMatrix );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 0, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 1, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 2, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 3, 1 );\n\n\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 0, 4, type, false, 64, 0 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 1, 4, type, false, 64, 16 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 2, 4, type, false, 64, 32 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 3, 4, type, false, 64, 48 );\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tconst value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tgl.vertexAttrib2fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tgl.vertexAttrib3fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tgl.vertexAttrib4fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tgl.vertexAttrib1fv( programAttribute, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tdisableUnusedAttributes();\n\n\t}\n\n\tfunction dispose() {\n\n\t\treset();\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tfor ( const programId in programMap ) {\n\n\t\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t\t}\n\n\t\t\t\tdelete programMap[ programId ];\n\n\t\t\t}\n\n\t\t\tdelete bindingStates[ geometryId ];\n\n\t\t}\n\n\t}\n\n\tfunction releaseStatesOfGeometry( geometry ) {\n\n\t\tif ( bindingStates[ geometry.id ] === undefined ) return;\n\n\t\tconst programMap = bindingStates[ geometry.id ];\n\n\t\tfor ( const programId in programMap ) {\n\n\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ programId ];\n\n\t\t}\n\n\t\tdelete bindingStates[ geometry.id ];\n\n\t}\n\n\tfunction releaseStatesOfProgram( program ) {\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tif ( programMap[ program.id ] === undefined ) continue;\n\n\t\t\tconst stateMap = programMap[ program.id ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ program.id ];\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\tresetDefaultState();\n\n\t\tif ( currentState === defaultState ) return;\n\n\t\tcurrentState = defaultState;\n\t\tbindVertexArrayObject( currentState.object );\n\n\t}\n\n\t// for backward-compatilibity\n\n\tfunction resetDefaultState() {\n\n\t\tdefaultState.geometry = null;\n\t\tdefaultState.program = null;\n\t\tdefaultState.wireframe = false;\n\n\t}\n\n\treturn {\n\n\t\tsetup: setup,\n\t\treset: reset,\n\t\tresetDefaultState: resetDefaultState,\n\t\tdispose: dispose,\n\t\treleaseStatesOfGeometry: releaseStatesOfGeometry,\n\t\treleaseStatesOfProgram: releaseStatesOfProgram,\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tdisableUnusedAttributes: disableUnusedAttributes\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode );\n\n\t}\n\n\tfunction renderInstances( geometry, start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawArraysInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawArraysInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tlet maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36338 ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36337 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36337 ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\t/* eslint-disable no-undef */\n\tconst isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext ) ||\n\t\t( typeof WebGL2ComputeRenderingContext !== 'undefined' && gl instanceof WebGL2ComputeRenderingContext );\n\t/* eslint-enable no-undef */\n\n\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tconst maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tconst maxTextures = gl.getParameter( 34930 );\n\tconst maxVertexTextures = gl.getParameter( 35660 );\n\tconst maxTextureSize = gl.getParameter( 3379 );\n\tconst maxCubemapSize = gl.getParameter( 34076 );\n\n\tconst maxAttributes = gl.getParameter( 34921 );\n\tconst maxVertexUniforms = gl.getParameter( 36347 );\n\tconst maxVaryings = gl.getParameter( 36348 );\n\tconst maxFragmentUniforms = gl.getParameter( 36349 );\n\n\tconst vertexTextures = maxVertexTextures > 0;\n\tconst floatFragmentTextures = isWebGL2 || !! extensions.get( 'OES_texture_float' );\n\tconst floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\tconst maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\n/**\n * @author tschw\n */\n\nfunction WebGLClipping() {\n\n\tconst scope = this;\n\n\tlet globalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false;\n\n\tconst plane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping, camera ) {\n\n\t\tconst enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\t\tresetGlobalState();\n\n\t};\n\n\tthis.setState = function ( planes, clipIntersection, clipShadows, camera, cache, fromCache ) {\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4;\n\n\t\t\tlet dstArray = cache.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, fromCache );\n\n\t\t\tfor ( let i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tcache.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tlet nPlanes = planes !== null ? planes.length : 0,\n\t\t\tdstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tconst flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\tscope.numIntersection = 0;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLExtensions( gl ) {\n\n\tconst extensions = {};\n\n\treturn {\n\n\t\tget: function ( name ) {\n\n\t\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\t\treturn extensions[ name ];\n\n\t\t\t}\n\n\t\t\tlet extension;\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\textension = gl.getExtension( name );\n\n\t\t\t}\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\textensions[ name ] = extension;\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\n\n\tconst geometries = new WeakMap();\n\tconst wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tconst geometry = event.target;\n\t\tconst buffergeometry = geometries.get( geometry );\n\n\t\tif ( buffergeometry.index !== null ) {\n\n\t\t\tattributes.remove( buffergeometry.index );\n\n\t\t}\n\n\t\tfor ( const name in buffergeometry.attributes ) {\n\n\t\t\tattributes.remove( buffergeometry.attributes[ name ] );\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries.delete( geometry );\n\n\t\tconst attribute = wireframeAttributes.get( buffergeometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( buffergeometry );\n\n\t\t}\n\n\t\tbindingStates.releaseStatesOfGeometry( geometry );\n\n\t\tif ( geometry.isInstancedBufferGeometry === true ) {\n\n\t\t\tdelete geometry._maxInstanceCount;\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tlet buffergeometry = geometries.get( geometry );\n\n\t\tif ( buffergeometry ) return buffergeometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tbuffergeometry = geometry;\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tif ( geometry._bufferGeometry === undefined ) {\n\n\t\t\t\tgeometry._bufferGeometry = new BufferGeometry().setFromObject( object );\n\n\t\t\t}\n\n\t\t\tbuffergeometry = geometry._bufferGeometry;\n\n\t\t}\n\n\t\tgeometries.set( geometry, buffergeometry );\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates.\n\n\t\tfor ( const name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], 34962 );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateWireframeAttribute( geometry ) {\n\n\t\tconst indices = [];\n\n\t\tconst geometryIndex = geometry.index;\n\t\tconst geometryPosition = geometry.attributes.position;\n\t\tlet version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tconst array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tconst a = array[ i + 0 ];\n\t\t\t\tconst b = array[ i + 1 ];\n\t\t\t\tconst c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tconst a = i + 0;\n\t\t\t\tconst b = i + 1;\n\t\t\t\tconst c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst attribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates\n\n\t\t//\n\n\t\tconst previousAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\n\n\t\t//\n\n\t\twireframeAttributes.set( geometry, attribute );\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tconst currentAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tconst geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes.get( geometry );\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tlet type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode );\n\n\t}\n\n\tfunction renderInstances( geometry, start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawElementsInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawElementsInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebGLInfo( gl ) {\n\n\tconst memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tconst render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\tinstanceCount = instanceCount || 1;\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase 4:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase 0:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.frame ++;\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction numericalSort( a, b ) {\n\n\treturn a[ 0 ] - b[ 0 ];\n\n}\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction WebGLMorphtargets( gl ) {\n\n\tconst influencesList = {};\n\tconst morphInfluences = new Float32Array( 8 );\n\n\tconst workInfluences = [];\n\n\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\tworkInfluences[ i ] = [ i, 0 ];\n\n\t}\n\n\tfunction update( object, geometry, material, program ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\t// When object doesn't have morph target influences defined, we treat it as a 0-length array\n\t\t// This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences\n\n\t\tconst length = objectInfluences === undefined ? 0 : objectInfluences.length;\n\n\t\tlet influences = influencesList[ geometry.id ];\n\n\t\tif ( influences === undefined ) {\n\n\t\t\t// initialise list\n\n\t\t\tinfluences = [];\n\n\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t}\n\n\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t}\n\n\t\t// Collect influences\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tconst influence = influences[ i ];\n\n\t\t\tinfluence[ 0 ] = i;\n\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t}\n\n\t\tinfluences.sort( absNumericalSort );\n\n\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\tif ( i < length && influences[ i ][ 1 ] ) {\n\n\t\t\t\tworkInfluences[ i ][ 0 ] = influences[ i ][ 0 ];\n\t\t\t\tworkInfluences[ i ][ 1 ] = influences[ i ][ 1 ];\n\n\t\t\t} else {\n\n\t\t\t\tworkInfluences[ i ][ 0 ] = Number.MAX_SAFE_INTEGER;\n\t\t\t\tworkInfluences[ i ][ 1 ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tworkInfluences.sort( numericalSort );\n\n\t\tconst morphTargets = material.morphTargets && geometry.morphAttributes.position;\n\t\tconst morphNormals = material.morphNormals && geometry.morphAttributes.normal;\n\n\t\tlet morphInfluencesSum = 0;\n\n\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\tconst influence = workInfluences[ i ];\n\t\t\tconst index = influence[ 0 ];\n\t\t\tconst value = influence[ 1 ];\n\n\t\t\tif ( index !== Number.MAX_SAFE_INTEGER && value ) {\n\n\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== morphTargets[ index ] ) {\n\n\t\t\t\t\tgeometry.setAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== morphNormals[ index ] ) {\n\n\t\t\t\t\tgeometry.setAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t}\n\n\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\tmorphInfluencesSum += value;\n\n\t\t\t} else {\n\n\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== undefined ) {\n\n\t\t\t\t\tgeometry.deleteAttribute( 'morphTarget' + i );\n\n\t\t\t\t}\n\n\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== undefined ) {\n\n\t\t\t\t\tgeometry.deleteAttribute( 'morphNormal' + i );\n\n\t\t\t\t}\n\n\t\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// GLSL shader uses formula baseinfluence * base + sum(target * influence)\n\t\t// This allows us to switch between absolute morphs and relative morphs without changing shader code\n\t\t// When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)\n\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLObjects( gl, geometries, attributes, info ) {\n\n\tlet updateMap = new WeakMap();\n\n\tfunction update( object ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\tconst geometry = object.geometry;\n\t\tconst buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateMap.get( buffergeometry ) !== frame ) {\n\n\t\t\tif ( geometry.isGeometry ) {\n\n\t\t\t\tbuffergeometry.updateFromObject( object );\n\n\t\t\t}\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateMap.set( buffergeometry, frame );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\tattributes.update( object.instanceMatrix, 34962 );\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateMap = new WeakMap();\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\timages = images !== undefined ? images : [];\n\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\tformat = format !== undefined ? format : RGBFormat;\n\n\tTexture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.flipY = false;\n\n}\n\nCubeTexture.prototype = Object.create( Texture.prototype );\nCubeTexture.prototype.constructor = CubeTexture;\n\nCubeTexture.prototype.isCubeTexture = true;\n\nObject.defineProperty( CubeTexture.prototype, 'images', {\n\n\tget: function () {\n\n\t\treturn this.image;\n\n\t},\n\n\tset: function ( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n} );\n\n/**\n * @author Takahiro https://github.com/takahirox\n */\n\nfunction DataTexture2DArray( data, width, height, depth ) {\n\n\tTexture.call( this, null );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1, depth: depth || 1 };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n\tthis.needsUpdate = true;\n\n}\n\nDataTexture2DArray.prototype = Object.create( Texture.prototype );\nDataTexture2DArray.prototype.constructor = DataTexture2DArray;\nDataTexture2DArray.prototype.isDataTexture2DArray = true;\n\n/**\n * @author Artur Trzesiok\n */\n\nfunction DataTexture3D( data, width, height, depth ) {\n\n\t// We're going to add .setXXX() methods for setting properties later.\n\t// Users can still set in DataTexture3D directly.\n\t//\n\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\n\t// \ttexture.anisotropy = 16;\n\t//\n\t// See #14839\n\n\tTexture.call( this, null );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1, depth: depth || 1 };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n\tthis.needsUpdate = true;\n\n\n}\n\nDataTexture3D.prototype = Object.create( Texture.prototype );\nDataTexture3D.prototype.constructor = DataTexture3D;\nDataTexture3D.prototype.isDataTexture3D = true;\n\n/**\n * @author tschw\n * @author Mugen87 / https://github.com/Mugen87\n * @author mrdoob / http://mrdoob.com/\n *\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nconst emptyTexture = new Texture();\nconst emptyTexture2dArray = new DataTexture2DArray();\nconst emptyTexture3d = new DataTexture3D();\nconst emptyCubeTexture = new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nconst mat4array = new Float32Array( 16 );\nconst mat3array = new Float32Array( 9 );\nconst mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tconst firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tlet n = nBlocks * blockSize,\n\t\tr = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( let i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( let i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( let i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tlet r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\t}\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTexture2D( v || emptyTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyTexture2dArray, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || emptyTexture3d, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTextureCube( v || emptyCubeTexture, unit );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\n\nfunction setValueV1i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\nfunction setValueV2i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n// uint\n\nfunction setValueV1ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1ui( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1f; // FLOAT\n\t\tcase 0x8b50: return setValueV2f; // _VEC2\n\t\tcase 0x8b51: return setValueV3f; // _VEC3\n\t\tcase 0x8b52: return setValueV4f; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2; // _MAT2\n\t\tcase 0x8b5b: return setValueM3; // _MAT3\n\t\tcase 0x8b5c: return setValueM4; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2i; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3i; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4i; // _VEC4\n\n\t\tcase 0x1405: return setValueV1ui; // UINT\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3D1;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArray1;\n\n\t}\n\n}\n\n// Array of scalars\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\nfunction setValueV2iArray( gl, v ) {\n\n\tgl.uniform2iv( this.addr, v );\n\n}\n\nfunction setValueV3iArray( gl, v ) {\n\n\tgl.uniform3iv( this.addr, v );\n\n}\n\nfunction setValueV4iArray( gl, v ) {\n\n\tgl.uniform4iv( this.addr, v );\n\n}\n\n\n// Array of vectors (flat or from THREE classes)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (flat or from THREE clases)\n\nfunction setValueM2Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of textures (2D / Cube)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1fArray; // FLOAT\n\t\tcase 0x8b50: return setValueV2fArray; // _VEC2\n\t\tcase 0x8b51: return setValueV3fArray; // _VEC3\n\t\tcase 0x8b52: return setValueV4fArray; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2Array; // _MAT2\n\t\tcase 0x8b5b: return setValueM3Array; // _MAT3\n\t\tcase 0x8b5c: return setValueM4Array; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1Array;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6Array;\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nfunction SingleUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction PureArrayUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.size = activeInfo.size;\n\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nPureArrayUniform.prototype.updateCache = function ( data ) {\n\n\tlet cache = this.cache;\n\n\tif ( data instanceof Float32Array && cache.length !== data.length ) {\n\n\t\tthis.cache = new Float32Array( data.length );\n\n\t}\n\n\tcopyArray( cache, data );\n\n};\n\nfunction StructuredUniform( id ) {\n\n\tthis.id = id;\n\n\tthis.seq = [];\n\tthis.map = {};\n\n}\n\nStructuredUniform.prototype.setValue = function ( gl, value, textures ) {\n\n\tconst seq = this.seq;\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t}\n\n};\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nconst RePathPart = /([\\w\\d_]+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tconst path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tconst match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex;\n\n\t\tlet id = match[ 1 ],\n\t\t\tidIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tconst map = container.map;\n\t\t\tlet next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nfunction WebGLUniforms( gl, program ) {\n\n\tthis.seq = [];\n\tthis.map = {};\n\n\tconst n = gl.getProgramParameter( program, 35718 );\n\n\tfor ( let i = 0; i < n; ++ i ) {\n\n\t\tconst info = gl.getActiveUniform( program, i ),\n\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\tparseUniform( info, addr, this );\n\n\t}\n\n}\n\nWebGLUniforms.prototype.setValue = function ( gl, name, value, textures ) {\n\n\tconst u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n};\n\nWebGLUniforms.prototype.setOptional = function ( gl, object, name ) {\n\n\tconst v = object[ name ];\n\n\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n};\n\n\n// Static interface\n\nWebGLUniforms.upload = function ( gl, seq, values, textures ) {\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ],\n\t\t\tv = values[ u.id ];\n\n\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t}\n\n\t}\n\n};\n\nWebGLUniforms.seqWithValue = function ( seq, values ) {\n\n\tconst r = [];\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tif ( u.id in values ) r.push( u );\n\n\t}\n\n\treturn r;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLShader( gl, type, string ) {\n\n\tconst shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nlet programIdCount = 0;\n\nfunction addLineNumbers( string ) {\n\n\tconst lines = string.split( '\\n' );\n\n\tfor ( let i = 0; i < lines.length; i ++ ) {\n\n\t\tlines[ i ] = ( i + 1 ) + ': ' + lines[ i ];\n\n\t}\n\n\treturn lines.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( encoding ) {\n\n\tswitch ( encoding ) {\n\n\t\tcase LinearEncoding:\n\t\t\treturn [ 'Linear', '( value )' ];\n\t\tcase sRGBEncoding:\n\t\t\treturn [ 'sRGB', '( value )' ];\n\t\tcase RGBEEncoding:\n\t\t\treturn [ 'RGBE', '( value )' ];\n\t\tcase RGBM7Encoding:\n\t\t\treturn [ 'RGBM', '( value, 7.0 )' ];\n\t\tcase RGBM16Encoding:\n\t\t\treturn [ 'RGBM', '( value, 16.0 )' ];\n\t\tcase RGBDEncoding:\n\t\t\treturn [ 'RGBD', '( value, 256.0 )' ];\n\t\tcase GammaEncoding:\n\t\t\treturn [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ];\n\t\tcase LogLuvEncoding:\n\t\t\treturn [ 'LogLuv', '( value )' ];\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported encoding:', encoding );\n\t\t\treturn [ 'Linear', '( value )' ];\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tconst status = gl.getShaderParameter( shader, 35713 );\n\tconst log = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && log === '' ) return '';\n\n\t// --enable-privileged-webgl-extension\n\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\tconst source = gl.getShaderSource( shader );\n\n\treturn 'THREE.WebGLShader: gl.getShaderInfoLog() ' + type + '\\n' + log + addLineNumbers( source );\n\n}\n\nfunction getTexelDecodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }';\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tlet toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tcase CustomToneMapping:\n\t\t\ttoneMappingName = 'Custom';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping );\n\t\t\ttoneMappingName = 'Linear';\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( parameters ) {\n\n\tconst chunks = [\n\t\t( parameters.extensionDerivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( parameters.extensionShaderTextureLOD || parameters.envMap ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tconst chunks = [];\n\n\tfor ( const name in defines ) {\n\n\t\tconst value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tconst attributes = {};\n\n\tconst n = gl.getProgramParameter( program, 35721 );\n\n\tfor ( let i = 0; i < n; i ++ ) {\n\n\t\tconst info = gl.getActiveAttrib( program, i );\n\t\tconst name = info.name;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = gl.getAttribLocation( program, name );\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights )\n\t\t.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )\n\t\t.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\n// Resolve Includes\n\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\nfunction resolveIncludes( string ) {\n\n\treturn string.replace( includePattern, includeReplacer );\n\n}\n\nfunction includeReplacer( match, include ) {\n\n\tconst string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\nconst deprecatedUnrollLoopPattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\nconst unrollLoopPattern = /#pragma unroll_loop_start[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}[\\s]+?#pragma unroll_loop_end/g;\n\nfunction unrollLoops( string ) {\n\n\treturn string\n\t\t.replace( unrollLoopPattern, loopReplacer )\n\t\t.replace( deprecatedUnrollLoopPattern, deprecatedLoopReplacer );\n\n}\n\nfunction deprecatedLoopReplacer( match, start, end, snippet ) {\n\n\tconsole.warn( 'WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead.' );\n\treturn loopReplacer( match, start, end, snippet );\n\n}\n\nfunction loopReplacer( match, start, end, snippet ) {\n\n\tlet string = '';\n\n\tfor ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\tstring += snippet\n\t\t\t.replace( /\\[ i \\]/g, '[ ' + i + ' ]' )\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\n\n\t}\n\n\treturn string;\n\n}\n\n//\n\nfunction generatePrecision( parameters ) {\n\n\tlet precisionstring = \"precision \" + parameters.precision + \" float;\\nprecision \" + parameters.precision + \" int;\";\n\n\tif ( parameters.precision === \"highp\" ) {\n\n\t\tprecisionstring += \"\\n#define HIGH_PRECISION\";\n\n\t} else if ( parameters.precision === \"mediump\" ) {\n\n\t\tprecisionstring += \"\\n#define MEDIUM_PRECISION\";\n\n\t} else if ( parameters.precision === \"lowp\" ) {\n\n\t\tprecisionstring += \"\\n#define LOW_PRECISION\";\n\n\t}\n\n\treturn precisionstring;\n\n}\n\nfunction generateShadowMapTypeDefine( parameters ) {\n\n\tlet shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t} else if ( parameters.shadowMapType === VSMShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\n\n\t}\n\n\treturn shadowMapTypeDefine;\n\n}\n\nfunction generateEnvMapTypeDefine( parameters ) {\n\n\tlet envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t\tcase EquirectangularReflectionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_EQUIREC';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapTypeDefine;\n\n}\n\nfunction generateEnvMapModeDefine( parameters ) {\n\n\tlet envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeRefractionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapModeDefine;\n\n}\n\nfunction generateEnvMapBlendingDefine( parameters ) {\n\n\tlet envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapBlendingDefine;\n\n}\n\nfunction WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {\n\n\tconst gl = renderer.getContext();\n\n\tconst defines = parameters.defines;\n\n\tlet vertexShader = parameters.vertexShader;\n\tlet fragmentShader = parameters.fragmentShader;\n\n\tconst shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\n\tconst envMapTypeDefine = generateEnvMapTypeDefine( parameters );\n\tconst envMapModeDefine = generateEnvMapModeDefine( parameters );\n\tconst envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\n\n\n\tconst gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;\n\n\tconst customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );\n\n\tconst customDefines = generateDefines( defines );\n\n\tconst program = gl.createProgram();\n\n\tlet prefixVertex, prefixFragment;\n\n\tif ( parameters.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t'#define MAX_BONES ' + parameters.maxBones,\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\t\t\tparameters.useVertexTexture ? '#define BONE_TEXTURE' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t'#ifdef USE_INSTANCING',\n\n\t\t\t' attribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_COLOR',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_MORPHTARGETS',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest + ( parameters.alphaTest % 1 ? '' : '.0' ) : '', // add '.0' if integer\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t( ( parameters.extensionShaderTextureLOD || parameters.envMap ) && parameters.rendererExtensionShaderTextureLod ) ? '#define TEXTURE_LOD_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\n\t\t\tShaderChunk[ 'encodings_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tparameters.map ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '',\n\t\t\tparameters.matcap ? getTexelDecodingFunction( 'matcapTexelToLinear', parameters.matcapEncoding ) : '',\n\t\t\tparameters.envMap ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',\n\t\t\tparameters.emissiveMap ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',\n\t\t\tparameters.lightMap ? getTexelDecodingFunction( 'lightMapTexelToLinear', parameters.lightMapEncoding ) : '',\n\t\t\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ),\n\n\t\t\tparameters.depthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = resolveIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = resolveIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( parameters.isWebGL2 && ! parameters.isRawShaderMaterial ) {\n\n\t\tlet isGLSL3ShaderMaterial = false;\n\n\t\tconst versionRegex = /^\\s*#version\\s+300\\s+es\\s*\\n/;\n\n\t\tif ( parameters.isShaderMaterial &&\n\t\t\tvertexShader.match( versionRegex ) !== null &&\n\t\t\tfragmentShader.match( versionRegex ) !== null ) {\n\n\t\t\tisGLSL3ShaderMaterial = true;\n\n\t\t\tvertexShader = vertexShader.replace( versionRegex, '' );\n\t\t\tfragmentShader = fragmentShader.replace( versionRegex, '' );\n\n\t\t}\n\n\t\t// GLSL 3.0 conversion\n\n\t\tprefixVertex = [\n\t\t\t'#version 300 es\\n',\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'#version 300 es\\n',\n\t\t\t'#define varying in',\n\t\t\tisGLSL3ShaderMaterial ? '' : 'out highp vec4 pc_fragColor;',\n\t\t\tisGLSL3ShaderMaterial ? '' : '#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tconst vertexGlsl = prefixVertex + vertexShader;\n\tconst fragmentGlsl = prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tconst glVertexShader = WebGLShader( gl, 35633, vertexGlsl );\n\tconst glFragmentShader = WebGLShader( gl, 35632, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( parameters.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, parameters.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\t// check for link errors\n\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\tconst programLog = gl.getProgramInfoLog( program ).trim();\n\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\tlet runnable = true;\n\t\tlet haveDiagnostics = true;\n\n\t\tif ( gl.getProgramParameter( program, 35714 ) === false ) {\n\n\t\t\trunnable = false;\n\n\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\tconsole.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), '35715', gl.getProgramParameter( program, 35715 ), 'gl.getProgramInfoLog', programLog, vertexErrors, fragmentErrors );\n\n\t\t} else if ( programLog !== '' ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog );\n\n\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\thaveDiagnostics = false;\n\n\t\t}\n\n\t\tif ( haveDiagnostics ) {\n\n\t\t\tthis.diagnostics = {\n\n\t\t\t\trunnable: runnable,\n\n\t\t\t\tprogramLog: programLog,\n\n\t\t\t\tvertexShader: {\n\n\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t},\n\n\t\t\t\tfragmentShader: {\n\n\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t}\n\n\t// Clean up\n\n\t// Crashes in iOS9 and iOS10. #18402\n\t// gl.detachShader( program, glVertexShader );\n\t// gl.detachShader( program, glFragmentShader );\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\n\n\t// set up caching for uniform locations\n\n\tlet cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tlet cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tbindingStates.releaseStatesOfProgram( this );\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.name = parameters.shaderName;\n\tthis.id = programIdCount ++;\n\tthis.cacheKey = cacheKey;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLPrograms( renderer, extensions, capabilities, bindingStates ) {\n\n\tconst programs = [];\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst floatVertexTextures = capabilities.floatVertexTextures;\n\tconst maxVertexUniforms = capabilities.maxVertexUniforms;\n\tconst vertexTextures = capabilities.vertexTextures;\n\n\tlet precision = capabilities.precision;\n\n\tconst shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'toon',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tconst parameterNames = [\n\t\t\"precision\", \"isWebGL2\", \"supportsVertexTextures\", \"outputEncoding\", \"instancing\",\n\t\t\"map\", \"mapEncoding\", \"matcap\", \"matcapEncoding\", \"envMap\", \"envMapMode\", \"envMapEncoding\", \"envMapCubeUV\",\n\t\t\"lightMap\", \"lightMapEncoding\", \"aoMap\", \"emissiveMap\", \"emissiveMapEncoding\", \"bumpMap\", \"normalMap\", \"objectSpaceNormalMap\", \"tangentSpaceNormalMap\", \"clearcoatMap\", \"clearcoatRoughnessMap\", \"clearcoatNormalMap\", \"displacementMap\", \"specularMap\",\n\t\t\"roughnessMap\", \"metalnessMap\", \"gradientMap\",\n\t\t\"alphaMap\", \"combine\", \"vertexColors\", \"vertexTangents\", \"vertexUvs\", \"uvsVertexOnly\", \"fog\", \"useFog\", \"fogExp2\",\n\t\t\"flatShading\", \"sizeAttenuation\", \"logarithmicDepthBuffer\", \"skinning\",\n\t\t\"maxBones\", \"useVertexTexture\", \"morphTargets\", \"morphNormals\",\n\t\t\"maxMorphTargets\", \"maxMorphNormals\", \"premultipliedAlpha\",\n\t\t\"numDirLights\", \"numPointLights\", \"numSpotLights\", \"numHemiLights\", \"numRectAreaLights\",\n\t\t\"numDirLightShadows\", \"numPointLightShadows\", \"numSpotLightShadows\",\n\t\t\"shadowMapEnabled\", \"shadowMapType\", \"toneMapping\", 'physicallyCorrectLights',\n\t\t\"alphaTest\", \"doubleSided\", \"flipSided\", \"numClippingPlanes\", \"numClipIntersection\", \"depthPacking\", \"dithering\",\n\t\t\"sheen\"\n\t];\n\n\tfunction getShaderObject( material, shaderID ) {\n\n\t\tlet shaderobject;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\n\t\t\tshaderobject = {\n\t\t\t\tname: material.name || material.type,\n\t\t\t\tuniforms: UniformsUtils.clone( shader.uniforms ),\n\t\t\t\tvertexShader: shader.vertexShader,\n\t\t\t\tfragmentShader: shader.fragmentShader\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tshaderobject = {\n\t\t\t\tname: material.name || material.type,\n\t\t\t\tuniforms: material.uniforms,\n\t\t\t\tvertexShader: material.vertexShader,\n\t\t\t\tfragmentShader: material.fragmentShader\n\t\t\t};\n\n\t\t}\n\n\t\treturn shaderobject;\n\n\t}\n\n\tfunction allocateBones( object ) {\n\n\t\tconst skeleton = object.skeleton;\n\t\tconst bones = skeleton.bones;\n\n\t\tif ( floatVertexTextures ) {\n\n\t\t\treturn 1024;\n\n\t\t} else {\n\n\t\t\t// default for when object is not specified\n\t\t\t// ( for example when prebuilding shader to be used with multiple objects )\n\t\t\t//\n\t\t\t// - leave some extra space for other uniforms\n\t\t\t// - limit here is ANGLE's 254 max uniform vectors\n\t\t\t// (up to 54 should be safe)\n\n\t\t\tconst nVertexUniforms = maxVertexUniforms;\n\t\t\tconst nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\n\n\t\t\tconst maxBones = Math.min( nVertexMatrices, bones.length );\n\n\t\t\tif ( maxBones < bones.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' );\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\treturn maxBones;\n\n\t\t}\n\n\t}\n\n\tfunction getTextureEncodingFromMap( map ) {\n\n\t\tlet encoding;\n\n\t\tif ( ! map ) {\n\n\t\t\tencoding = LinearEncoding;\n\n\t\t} else if ( map.isTexture ) {\n\n\t\t\tencoding = map.encoding;\n\n\t\t} else if ( map.isWebGLRenderTarget ) {\n\n\t\t\tconsole.warn( \"THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\tencoding = map.texture.encoding;\n\n\t\t}\n\n\t\treturn encoding;\n\n\t}\n\n\tfunction getParameters( material, lights, shadows, scene, nClipPlanes, nClipIntersection, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = material.envMap || environment;\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tconst maxBones = object.isSkinnedMesh ? allocateBones( object ) : 0;\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst shaderobject = getShaderObject( material, shaderID );\n\t\tmaterial.onBeforeCompile( shaderobject, renderer );\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst parameters = {\n\n\t\t\tisWebGL2: isWebGL2,\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderName: shaderobject.name,\n\n\t\t\tuniforms: shaderobject.uniforms,\n\t\t\tvertexShader: shaderobject.vertexShader,\n\t\t\tfragmentShader: shaderobject.fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial,\n\t\t\tisShaderMaterial: material.isShaderMaterial,\n\n\t\t\tprecision: precision,\n\n\t\t\tinstancing: object.isInstancedMesh === true,\n\n\t\t\tsupportsVertexTextures: vertexTextures,\n\t\t\toutputEncoding: ( currentRenderTarget !== null ) ? getTextureEncodingFromMap( currentRenderTarget.texture ) : renderer.outputEncoding,\n\t\t\tmap: !! material.map,\n\t\t\tmapEncoding: getTextureEncodingFromMap( material.map ),\n\t\t\tmatcap: !! material.matcap,\n\t\t\tmatcapEncoding: getTextureEncodingFromMap( material.matcap ),\n\t\t\tenvMap: !! envMap,\n\t\t\tenvMapMode: envMap && envMap.mapping,\n\t\t\tenvMapEncoding: getTextureEncodingFromMap( envMap ),\n\t\t\tenvMapCubeUV: ( !! envMap ) && ( ( envMap.mapping === CubeUVReflectionMapping ) || ( envMap.mapping === CubeUVRefractionMapping ) ),\n\t\t\tlightMap: !! material.lightMap,\n\t\t\tlightMapEncoding: getTextureEncodingFromMap( material.lightMap ),\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\temissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap ),\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tobjectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n\t\t\ttangentSpaceNormalMap: material.normalMapType === TangentSpaceNormalMap,\n\t\t\tclearcoatMap: !! material.clearcoatMap,\n\t\t\tclearcoatRoughnessMap: !! material.clearcoatRoughnessMap,\n\t\t\tclearcoatNormalMap: !! material.clearcoatNormalMap,\n\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\tspecularMap: !! material.specularMap,\n\t\t\talphaMap: !! material.alphaMap,\n\n\t\t\tgradientMap: !! material.gradientMap,\n\n\t\t\tsheen: !! material.sheen,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexTangents: ( material.normalMap && material.vertexTangents ),\n\t\t\tvertexColors: material.vertexColors,\n\t\t\tvertexUvs: !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatMap || !! material.clearcoatRoughnessMap || !! material.clearcoatNormalMap || !! material.displacementMap,\n\t\t\tuvsVertexOnly: ! ( !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatNormalMap ) && !! material.displacementMap,\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog,\n\t\t\tfogExp2: ( fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: material.flatShading,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\t\tskinning: material.skinning && maxBones > 0,\n\t\t\tmaxBones: maxBones,\n\t\t\tuseVertexTexture: floatVertexTextures,\n\n\t\t\tmorphTargets: material.morphTargets,\n\t\t\tmorphNormals: material.morphNormals,\n\t\t\tmaxMorphTargets: renderer.maxMorphTargets,\n\t\t\tmaxMorphNormals: renderer.maxMorphNormals,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\n\t\t\tnumClippingPlanes: nClipPlanes,\n\t\t\tnumClipIntersection: nClipIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping,\n\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\talphaTest: material.alphaTest,\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionDerivatives: material.extensions && material.extensions.derivatives,\n\t\t\textensionFragDepth: material.extensions && material.extensions.fragDepth,\n\t\t\textensionDrawBuffers: material.extensions && material.extensions.drawBuffers,\n\t\t\textensionShaderTextureLOD: material.extensions && material.extensions.shaderTextureLOD,\n\n\t\t\trendererExtensionFragDepth: isWebGL2 || extensions.get( 'EXT_frag_depth' ) !== null,\n\t\t\trendererExtensionDrawBuffers: isWebGL2 || extensions.get( 'WEBGL_draw_buffers' ) !== null,\n\t\t\trendererExtensionShaderTextureLod: isWebGL2 || extensions.get( 'EXT_shader_texture_lod' ) !== null,\n\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\n\t\t};\n\n\t\treturn parameters;\n\n\t}\n\n\tfunction getProgramCacheKey( parameters ) {\n\n\t\tconst array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( parameters.fragmentShader );\n\t\t\tarray.push( parameters.vertexShader );\n\n\t\t}\n\n\t\tif ( parameters.defines !== undefined ) {\n\n\t\t\tfor ( const name in parameters.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( parameters.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( parameters.isRawShaderMaterial === undefined ) {\n\n\t\t\tfor ( let i = 0; i < parameterNames.length; i ++ ) {\n\n\t\t\t\tarray.push( parameters[ parameterNames[ i ] ] );\n\n\t\t\t}\n\n\t\t\tarray.push( renderer.outputEncoding );\n\t\t\tarray.push( renderer.gammaFactor );\n\n\t\t}\n\n\t\tarray.push( parameters.customProgramCacheKey );\n\n\t\treturn array.join();\n\n\t}\n\n\tfunction acquireProgram( parameters, cacheKey ) {\n\n\t\tlet program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( let p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tconst preexistingProgram = programs[ p ];\n\n\t\t\tif ( preexistingProgram.cacheKey === cacheKey ) {\n\n\t\t\t\tprogram = preexistingProgram;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, cacheKey, parameters, bindingStates );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t}\n\n\tfunction releaseProgram( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tconst i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tgetParameters: getParameters,\n\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\tacquireProgram: acquireProgram,\n\t\treleaseProgram: releaseProgram,\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tprograms: programs\n\t};\n\n}\n\n/**\n * @author fordacious / fordacious.github.io\n */\n\nfunction WebGLProperties() {\n\n\tlet properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tlet map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.program !== b.program ) {\n\n\t\treturn a.program.id - b.program.id;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList() {\n\n\tconst renderItems = [];\n\tlet renderItemsIndex = 0;\n\n\tconst opaque = [];\n\tconst transparent = [];\n\n\tconst defaultProgram = { id: - 1 };\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tlet renderItem = renderItems[ renderItemsIndex ];\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tprogram: material.program || defaultProgram,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.program = material.program || defaultProgram;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\t( material.transparent === true ? transparent : opaque ).push( renderItem );\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\t( material.transparent === true ? transparent : opaque ).unshift( renderItem );\n\n\t}\n\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );\n\n\t}\n\n\tfunction finish() {\n\n\t\t// Clear references from inactive renderItems in the list\n\n\t\tfor ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {\n\n\t\t\tconst renderItem = renderItems[ i ];\n\n\t\t\tif ( renderItem.id === null ) break;\n\n\t\t\trenderItem.id = null;\n\t\t\trenderItem.object = null;\n\t\t\trenderItem.geometry = null;\n\t\t\trenderItem.material = null;\n\t\t\trenderItem.program = null;\n\t\t\trenderItem.group = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\topaque: opaque,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\t\tfinish: finish,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists() {\n\n\tlet lists = new WeakMap();\n\n\tfunction onSceneDispose( event ) {\n\n\t\tconst scene = event.target;\n\n\t\tscene.removeEventListener( 'dispose', onSceneDispose );\n\n\t\tlists.delete( scene );\n\n\t}\n\n\tfunction get( scene, camera ) {\n\n\t\tconst cameras = lists.get( scene );\n\t\tlet list;\n\n\t\tif ( cameras === undefined ) {\n\n\t\t\tlist = new WebGLRenderList();\n\t\t\tlists.set( scene, new WeakMap() );\n\t\t\tlists.get( scene ).set( camera, list );\n\n\t\t\tscene.addEventListener( 'dispose', onSceneDispose );\n\n\t\t} else {\n\n\t\t\tlist = cameras.get( camera );\n\t\t\tif ( list === undefined ) {\n\n\t\t\t\tlist = new WebGLRenderList();\n\t\t\t\tcameras.set( camera, list );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction UniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nfunction ShadowUniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\n\nlet nextVersion = 0;\n\nfunction shadowCastingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 1 : 0 ) - ( lightA.castShadow ? 1 : 0 );\n\n}\n\nfunction WebGLLights() {\n\n\tconst cache = new UniformsCache();\n\n\tconst shadowCache = ShadowUniformsCache();\n\n\tconst state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\n\t\t\tnumDirectionalShadows: - 1,\n\t\t\tnumPointShadows: - 1,\n\t\t\tnumSpotShadows: - 1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadow: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotShadowMatrix: [],\n\t\trectArea: [],\n\t\tpoint: [],\n\t\tpointShadow: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: []\n\n\t};\n\n\tfor ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tconst vector3 = new Vector3();\n\tconst matrix4 = new Matrix4();\n\tconst matrix42 = new Matrix4();\n\n\tfunction setup( lights, shadows, camera ) {\n\n\t\tlet r = 0, g = 0, b = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tlet numDirectionalShadows = 0;\n\t\tlet numPointShadows = 0;\n\t\tlet numSpotShadows = 0;\n\n\t\tconst viewMatrix = camera.matrixWorldInverse;\n\n\t\tlights.sort( shadowCastingLightsFirst );\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tconst color = light.color;\n\t\t\tconst intensity = light.intensity;\n\t\t\tconst distance = light.distance;\n\n\t\t\tconst shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity;\n\t\t\t\tg += color.g * intensity;\n\t\t\t\tb += color.b * intensity;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( let j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.directionalShadow[ directionalLength ] = shadowUniforms;\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumDirectionalShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.spotShadow[ spotLength ] = shadowUniforms;\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\t\t\t\t\tstate.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\t// (a) intensity is the total visible light emitted\n\t\t\t\t//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );\n\n\t\t\t\t// (b) intensity is the brightness of the light\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\t// TODO (abelnation): RectAreaLight distance?\n\t\t\t\t// uniforms.distance = distance;\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tshadowUniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tshadowUniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t\tstate.pointShadow[ pointLength ] = shadowUniforms;\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumPointShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\t\t\t\tuniforms.direction.normalize();\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tconst hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.numDirectionalShadows !== numDirectionalShadows ||\n\t\t\thash.numPointShadows !== numPointShadows ||\n\t\t\thash.numSpotShadows !== numSpotShadows ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\tstate.directionalShadow.length = numDirectionalShadows;\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\tstate.pointShadow.length = numPointShadows;\n\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\tstate.spotShadow.length = numSpotShadows;\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\tstate.spotShadowMatrix.length = numSpotShadows;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\thash.numPointShadows = numPointShadows;\n\t\t\thash.numSpotShadows = numSpotShadows;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tstate: state\n\t};\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebGLRenderState() {\n\n\tconst lights = new WebGLLights();\n\n\tconst lightsArray = [];\n\tconst shadowsArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights( camera ) {\n\n\t\tlights.setup( lightsArray, shadowsArray, camera );\n\n\t}\n\n\tconst state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tlights: lights\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates() {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction onSceneDispose( event ) {\n\n\t\tconst scene = event.target;\n\n\t\tscene.removeEventListener( 'dispose', onSceneDispose );\n\n\t\trenderStates.delete( scene );\n\n\t}\n\n\tfunction get( scene, camera ) {\n\n\t\tlet renderState;\n\n\t\tif ( renderStates.has( scene ) === false ) {\n\n\t\t\trenderState = new WebGLRenderState();\n\t\t\trenderStates.set( scene, new WeakMap() );\n\t\t\trenderStates.get( scene ).set( camera, renderState );\n\n\t\t\tscene.addEventListener( 'dispose', onSceneDispose );\n\n\t\t} else {\n\n\t\t\tif ( renderStates.get( scene ).has( camera ) === false ) {\n\n\t\t\t\trenderState = new WebGLRenderState();\n\t\t\t\trenderStates.get( scene ).set( camera, renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStates.get( scene ).get( camera );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / https://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n * }\n */\n\nfunction MeshDepthMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDepthMaterial';\n\n\tthis.depthPacking = BasicDepthPacking;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDepthMaterial.prototype = Object.create( Material.prototype );\nMeshDepthMaterial.prototype.constructor = MeshDepthMaterial;\n\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\nMeshDepthMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.depthPacking = source.depthPacking;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *\n * referencePosition: ,\n * nearDistance: ,\n * farDistance: ,\n *\n * skinning: ,\n * morphTargets: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: \n *\n * }\n */\n\nfunction MeshDistanceMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDistanceMaterial';\n\n\tthis.referencePosition = new Vector3();\n\tthis.nearDistance = 1;\n\tthis.farDistance = 1000;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.fog = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDistanceMaterial.prototype = Object.create( Material.prototype );\nMeshDistanceMaterial.prototype.constructor = MeshDistanceMaterial;\n\nMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\n\nMeshDistanceMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.referencePosition.copy( source.referencePosition );\n\tthis.nearDistance = source.nearDistance;\n\tthis.farDistance = source.farDistance;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\treturn this;\n\n};\n\nvar vsm_frag = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include \\nvoid main() {\\n float mean = 0.0;\\n float squared_mean = 0.0;\\n\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy ) / resolution ) );\\n for ( float i = -1.0; i < 1.0 ; i += SAMPLE_RATE) {\\n #ifdef HORIZONAL_PASS\\n vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( i, 0.0 ) * radius ) / resolution ) );\\n mean += distribution.x;\\n squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n #else\\n float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, i ) * radius ) / resolution ) );\\n mean += depth;\\n squared_mean += depth * depth;\\n #endif\\n }\\n mean = mean * HALF_SAMPLE_RATE;\\n squared_mean = squared_mean * HALF_SAMPLE_RATE;\\n float std_dev = sqrt( squared_mean - mean * mean );\\n gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nvar vsm_vert = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLShadowMap( _renderer, _objects, maxTextureSize ) {\n\n\tlet _frustum = new Frustum();\n\n\tconst _shadowMapSize = new Vector2(),\n\t\t_viewportSize = new Vector2(),\n\n\t\t_viewport = new Vector4(),\n\n\t\t_depthMaterials = [],\n\t\t_distanceMaterials = [],\n\n\t\t_materialCache = {};\n\n\tconst shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\n\n\tconst shadowMaterialVertical = new ShaderMaterial( {\n\n\t\tdefines: {\n\t\t\tSAMPLE_RATE: 2.0 / 8.0,\n\t\t\tHALF_SAMPLE_RATE: 1.0 / 8.0\n\t\t},\n\n\t\tuniforms: {\n\t\t\tshadow_pass: { value: null },\n\t\t\tresolution: { value: new Vector2() },\n\t\t\tradius: { value: 4.0 }\n\t\t},\n\n\t\tvertexShader: vsm_vert,\n\n\t\tfragmentShader: vsm_frag\n\n\t} );\n\n\tconst shadowMaterialHorizonal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizonal.defines.HORIZONAL_PASS = 1;\n\n\tconst fullScreenTri = new BufferGeometry();\n\tfullScreenTri.setAttribute(\n\t\t\"position\",\n\t\tnew BufferAttribute(\n\t\t\tnew Float32Array( [ - 1, - 1, 0.5, 3, - 1, 0.5, - 1, 3, 0.5 ] ),\n\t\t\t3\n\t\t)\n\t);\n\n\tconst fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\n\n\tconst scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tconst currentRenderTarget = _renderer.getRenderTarget();\n\t\tconst activeCubeFace = _renderer.getActiveCubeFace();\n\t\tconst activeMipmapLevel = _renderer.getActiveMipmapLevel();\n\n\t\tconst _state = _renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// render depth map\n\n\t\tfor ( let i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\t\t\tconst shadow = light.shadow;\n\n\t\t\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\tconst shadowFrameExtents = shadow.getFrameExtents();\n\n\t\t\t_shadowMapSize.multiply( shadowFrameExtents );\n\n\t\t\t_viewportSize.copy( shadow.mapSize );\n\n\t\t\tif ( _shadowMapSize.x > maxTextureSize || _shadowMapSize.y > maxTextureSize ) {\n\n\t\t\t\tif ( _shadowMapSize.x > maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.x = Math.floor( maxTextureSize / shadowFrameExtents.x );\n\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _shadowMapSize.y > maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.y = Math.floor( maxTextureSize / shadowFrameExtents.y );\n\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null && ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tconst pars = { minFilter: LinearFilter, magFilter: LinearFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + \".shadowMap\";\n\n\t\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\tconst pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + \".shadowMap\";\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadow.map );\n\t\t\t_renderer.clear();\n\n\t\t\tconst viewportCount = shadow.getViewportCount();\n\n\t\t\tfor ( let vp = 0; vp < viewportCount; vp ++ ) {\n\n\t\t\t\tconst viewport = shadow.getViewport( vp );\n\n\t\t\t\t_viewport.set(\n\t\t\t\t\t_viewportSize.x * viewport.x,\n\t\t\t\t\t_viewportSize.y * viewport.y,\n\t\t\t\t\t_viewportSize.x * viewport.z,\n\t\t\t\t\t_viewportSize.y * viewport.w\n\t\t\t\t);\n\n\t\t\t\t_state.viewport( _viewport );\n\n\t\t\t\tshadow.updateMatrices( light, vp );\n\n\t\t\t\t_frustum = shadow.getFrustum();\n\n\t\t\t\trenderObject( scene, camera, shadow.camera, light, this.type );\n\n\t\t\t}\n\n\t\t\t// do blur pass for VSM\n\n\t\t\tif ( ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tVSMPass( shadow, camera );\n\n\t\t\t}\n\n\t\t\tshadow.needsUpdate = false;\n\n\t\t}\n\n\t\tscope.needsUpdate = false;\n\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction VSMPass( shadow, camera ) {\n\n\t\tconst geometry = _objects.update( fullScreenMesh );\n\n\t\t// vertical pass\n\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.mapPass );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\n\n\t\t// horizonal pass\n\n\t\tshadowMaterialHorizonal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizonal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizonal.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.map );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizonal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterialVariant( useMorphing, useSkinning, useInstancing ) {\n\n\t\tconst index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;\n\n\t\tlet material = _depthMaterials[ index ];\n\n\t\tif ( material === undefined ) {\n\n\t\t\tmaterial = new MeshDepthMaterial( {\n\n\t\t\t\tdepthPacking: RGBADepthPacking,\n\n\t\t\t\tmorphTargets: useMorphing,\n\t\t\t\tskinning: useSkinning\n\n\t\t\t} );\n\n\t\t\t_depthMaterials[ index ] = material;\n\n\t\t}\n\n\t\treturn material;\n\n\t}\n\n\tfunction getDistanceMaterialVariant( useMorphing, useSkinning, useInstancing ) {\n\n\t\tconst index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;\n\n\t\tlet material = _distanceMaterials[ index ];\n\n\t\tif ( material === undefined ) {\n\n\t\t\tmaterial = new MeshDistanceMaterial( {\n\n\t\t\t\tmorphTargets: useMorphing,\n\t\t\t\tskinning: useSkinning\n\n\t\t\t} );\n\n\t\t\t_distanceMaterials[ index ] = material;\n\n\t\t}\n\n\t\treturn material;\n\n\t}\n\n\tfunction getDepthMaterial( object, geometry, material, light, shadowCameraNear, shadowCameraFar, type ) {\n\n\t\tlet result = null;\n\n\t\tlet getMaterialVariant = getDepthMaterialVariant;\n\t\tlet customMaterial = object.customDepthMaterial;\n\n\t\tif ( light.isPointLight === true ) {\n\n\t\t\tgetMaterialVariant = getDistanceMaterialVariant;\n\t\t\tcustomMaterial = object.customDistanceMaterial;\n\n\t\t}\n\n\t\tif ( customMaterial === undefined ) {\n\n\t\t\tlet useMorphing = false;\n\n\t\t\tif ( material.morphTargets === true ) {\n\n\t\t\t\tuseMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0;\n\n\t\t\t}\n\n\t\t\tlet useSkinning = false;\n\n\t\t\tif ( object.isSkinnedMesh === true ) {\n\n\t\t\t\tif ( material.skinning === true ) {\n\n\t\t\t\t\tuseSkinning = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst useInstancing = object.isInstancedMesh === true;\n\n\t\t\tresult = getMaterialVariant( useMorphing, useSkinning, useInstancing );\n\n\t\t} else {\n\n\t\t\tresult = customMaterial;\n\n\t\t}\n\n\t\tif ( _renderer.localClippingEnabled &&\n\t\t\t\tmaterial.clipShadows === true &&\n\t\t\t\tmaterial.clippingPlanes.length !== 0 ) {\n\n\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t// appropriate state\n\n\t\t\tconst keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tlet materialsForVariant = _materialCache[ keyA ];\n\n\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t}\n\n\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult = cachedMaterial;\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tif ( type === VSMShadowMap ) {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;\n\n\t\t} else {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\t}\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {\n\n\t\t\tresult.referencePosition.setFromMatrixPosition( light.matrixWorld );\n\t\t\tresult.nearDistance = shadowCameraNear;\n\t\t\tresult.farDistance = shadowCameraFar;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, light, type ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tconst geometry = _objects.update( object );\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\tfor ( let k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ k ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, geometry, groupMaterial, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, geometry, material, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, light, type );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLState( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction ColorBuffer() {\n\n\t\tlet locked = false;\n\n\t\tconst color = new Vector4();\n\t\tlet currentColorMask = null;\n\t\tconst currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentDepthMask = null;\n\t\tlet currentDepthFunc = null;\n\t\tlet currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( 2929 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( 2929 );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 512 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 519 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 513 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 514 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 518 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 516 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 517 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentStencilMask = null;\n\t\tlet currentStencilFunc = null;\n\t\tlet currentStencilRef = null;\n\t\tlet currentStencilFuncMask = null;\n\t\tlet currentStencilFail = null;\n\t\tlet currentStencilZFail = null;\n\t\tlet currentStencilZPass = null;\n\t\tlet currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( ! locked ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( 2960 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( 2960 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef \t!== stencilRef \t||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail\t !== stencilFail \t||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tconst colorBuffer = new ColorBuffer();\n\tconst depthBuffer = new DepthBuffer();\n\tconst stencilBuffer = new StencilBuffer();\n\n\tlet enabledCapabilities = {};\n\n\tlet currentProgram = null;\n\n\tlet currentBlendingEnabled = null;\n\tlet currentBlending = null;\n\tlet currentBlendEquation = null;\n\tlet currentBlendSrc = null;\n\tlet currentBlendDst = null;\n\tlet currentBlendEquationAlpha = null;\n\tlet currentBlendSrcAlpha = null;\n\tlet currentBlendDstAlpha = null;\n\tlet currentPremultipledAlpha = false;\n\n\tlet currentFlipSided = null;\n\tlet currentCullFace = null;\n\n\tlet currentLineWidth = null;\n\n\tlet currentPolygonOffsetFactor = null;\n\tlet currentPolygonOffsetUnits = null;\n\n\tconst maxTextures = gl.getParameter( 35661 );\n\n\tlet lineWidthAvailable = false;\n\tlet version = 0;\n\tconst glVersion = gl.getParameter( 7938 );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL\\ ES\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tlet currentTextureSlot = null;\n\tlet currentBoundTextures = {};\n\n\tconst currentScissor = new Vector4();\n\tconst currentViewport = new Vector4();\n\n\tfunction createTexture( type, target, count ) {\n\n\t\tconst data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tconst texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, 10241, 9728 );\n\t\tgl.texParameteri( type, 10240, 9728 );\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tgl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tconst emptyTextures = {};\n\temptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 );\n\temptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( 2929 );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( 2884 );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tconst equationToGL = {\n\t\t[ AddEquation ]: 32774,\n\t\t[ SubtractEquation ]: 32778,\n\t\t[ ReverseSubtractEquation ]: 32779\n\t};\n\n\tif ( isWebGL2 ) {\n\n\t\tequationToGL[ MinEquation ] = 32775;\n\t\tequationToGL[ MaxEquation ] = 32776;\n\n\t} else {\n\n\t\tconst extension = extensions.get( 'EXT_blend_minmax' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tequationToGL[ MinEquation ] = extension.MIN_EXT;\n\t\t\tequationToGL[ MaxEquation ] = extension.MAX_EXT;\n\n\t\t}\n\n\t}\n\n\tconst factorToGL = {\n\t\t[ ZeroFactor ]: 0,\n\t\t[ OneFactor ]: 1,\n\t\t[ SrcColorFactor ]: 768,\n\t\t[ SrcAlphaFactor ]: 770,\n\t\t[ SrcAlphaSaturateFactor ]: 776,\n\t\t[ DstColorFactor ]: 774,\n\t\t[ DstAlphaFactor ]: 772,\n\t\t[ OneMinusSrcColorFactor ]: 769,\n\t\t[ OneMinusSrcAlphaFactor ]: 771,\n\t\t[ OneMinusDstColorFactor ]: 775,\n\t\t[ OneMinusDstAlphaFactor ]: 773\n\t};\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled ) {\n\n\t\t\t\tdisable( 3042 );\n\t\t\t\tcurrentBlendingEnabled = false;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( ! currentBlendingEnabled ) {\n\n\t\t\tenable( 3042 );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( 32774 );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 1, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 1, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 0, 769, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 768, 0, 770 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 770, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 770, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 769 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 768 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( equationToGL[ blendEquation ], equationToGL[ blendEquationAlpha ] );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ blendDstAlpha ] );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = null;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( 2884 )\n\t\t\t: enable( 2884 );\n\n\t\tlet flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tconst stencilWrite = material.stencilWrite;\n\t\tstencilBuffer.setTest( stencilWrite );\n\t\tif ( stencilWrite ) {\n\n\t\t\tstencilBuffer.setMask( material.stencilWriteMask );\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask );\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\n\n\t\t}\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( 2304 );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( 2305 );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( 2884 );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( 1029 );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( 1028 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( 1032 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 2884 );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( 32823 );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 32823 );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( 3089 );\n\n\t\t} else {\n\n\t\t\tdisable( 3089 );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = 33984 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture ) {\n\n\t\tif ( currentTextureSlot === null ) {\n\n\t\t\tactiveTexture();\n\n\t\t}\n\n\t\tlet boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction unbindTexture() {\n\n\t\tconst boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture !== undefined && boundTexture.type !== undefined ) {\n\n\t\t\tgl.bindTexture( boundTexture.type, null );\n\n\t\t\tboundTexture.type = undefined;\n\t\t\tboundTexture.texture = undefined;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlending = null;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tenable: enable,\n\t\tdisable: disable,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tunbindTexture: unbindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst maxTextures = capabilities.maxTextures;\n\tconst maxCubemapSize = capabilities.maxCubemapSize;\n\tconst maxTextureSize = capabilities.maxTextureSize;\n\tconst maxSamples = capabilities.maxSamples;\n\n\tconst _videoTextures = new WeakMap();\n\tlet _canvas;\n\n\t// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\n\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\n\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\n\n\tlet useOffscreenCanvas = false;\n\n\ttry {\n\n\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n\t\t\t&& ( new OffscreenCanvas( 1, 1 ).getContext( \"2d\" ) ) !== null;\n\n\t} catch ( err ) {\n\n\t\t// Ignore any errors\n\n\t}\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\tnew OffscreenCanvas( width, height ) :\n\t\t\tdocument.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {\n\n\t\tlet scale = 1;\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( image.width, image.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 || needsPowerOfTwo === true ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\t\tconst floor = needsPowerOfTwo ? MathUtils.floorPowerOfTwo : Math.floor;\n\n\t\t\t\tconst width = floor( scale * image.width );\n\t\t\t\tconst height = floor( scale * image.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tconst canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo( image ) {\n\n\t\treturn MathUtils.isPowerOfTwo( image.width ) && MathUtils.isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( isWebGL2 ) return false;\n\n\t\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\n\t\t\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture, supportsMips ) {\n\n\t\treturn texture.generateMipmaps && supportsMips &&\n\t\t\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t}\n\n\tfunction generateMipmap( target, texture, width, height ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\t// Note: Math.log( x ) * Math.LOG2E used instead of Math.log2( x ) which is not supported by IE11\n\t\ttextureProperties.__maxMipLevel = Math.log( Math.max( width, height ) ) * Math.LOG2E;\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType ) {\n\n\t\tif ( isWebGL2 === false ) return glFormat;\n\n\t\tif ( internalFormatName !== null ) {\n\n\t\t\tif ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'' );\n\n\t\t}\n\n\t\tlet internalFormat = glFormat;\n\n\t\tif ( glFormat === 6403 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 33326;\n\t\t\tif ( glType === 5131 ) internalFormat = 33325;\n\t\t\tif ( glType === 5121 ) internalFormat = 33321;\n\n\t\t}\n\n\t\tif ( glFormat === 6407 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34837;\n\t\t\tif ( glType === 5131 ) internalFormat = 34843;\n\t\t\tif ( glType === 5121 ) internalFormat = 32849;\n\n\t\t}\n\n\t\tif ( glFormat === 6408 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34836;\n\t\t\tif ( glType === 5131 ) internalFormat = 34842;\n\t\t\tif ( glType === 5121 ) internalFormat = 32856;\n\n\t\t}\n\n\t\tif ( internalFormat === 33325 || internalFormat === 33326 ||\n\t\t\tinternalFormat === 34842 || internalFormat === 34836 ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter ) {\n\n\t\t\treturn 9728;\n\n\t\t}\n\n\t\treturn 9729;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\t_videoTextures.delete( texture );\n\n\t\t}\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tconst renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( renderTarget.texture );\n\n\t\tif ( ! renderTarget ) return;\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\n\n\t\t}\n\n\t\tproperties.remove( renderTarget.texture );\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tlet textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tconst textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tconst image = texture.image;\n\n\t\t\tif ( image === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 35866, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 32879, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tinitTexture( textureProperties, texture );\n\n\t\t\tstate.activeTexture( 33984 + slot );\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t\t_gl.pixelStorei( 37440, texture.flipY );\n\n\t\t\tconst isCompressed = ( texture && ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture ) );\n\t\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\tconst cubeImage = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, maxCubemapSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst image = cubeImage[ 0 ],\n\t\t\t\tsupportsMips = isPowerOfTwo( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format ),\n\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType );\n\n\t\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\t\tlet mipmaps;\n\n\t\t\tif ( isCompressed ) {\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tstate.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\t\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length;\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\tgenerateMipmap( 34067, texture, image.width, image.height );\n\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t} else {\n\n\t\t\tstate.activeTexture( 33984 + slot );\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t}\n\n\t}\n\n\tfunction setTextureCubeDynamic( texture, slot ) {\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, properties.get( texture ).__webglTexture );\n\n\t}\n\n\tconst wrappingToGL = {\n\t\t[ RepeatWrapping ]: 10497,\n\t\t[ ClampToEdgeWrapping ]: 33071,\n\t\t[ MirroredRepeatWrapping ]: 33648\n\t};\n\n\tconst filterToGL = {\n\t\t[ NearestFilter ]: 9728,\n\t\t[ NearestMipmapNearestFilter ]: 9984,\n\t\t[ NearestMipmapLinearFilter ]: 9986,\n\n\t\t[ LinearFilter ]: 9729,\n\t\t[ LinearMipmapNearestFilter ]: 9985,\n\t\t[ LinearMipmapLinearFilter ]: 9987\n\t};\n\n\tfunction setTextureParameters( textureType, texture, supportsMips ) {\n\n\t\tif ( supportsMips ) {\n\n\t\t\t_gl.texParameteri( textureType, 10242, wrappingToGL[ texture.wrapS ] );\n\t\t\t_gl.texParameteri( textureType, 10243, wrappingToGL[ texture.wrapT ] );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, wrappingToGL[ texture.wrapR ] );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterToGL[ texture.magFilter ] );\n\t\t\t_gl.texParameteri( textureType, 10241, filterToGL[ texture.minFilter ] );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, 10242, 33071 );\n\t\t\t_gl.texParameteri( textureType, 10243, 33071 );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, 33071 );\n\n\t\t\t}\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension ) {\n\n\t\t\tif ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return;\n\t\t\tif ( texture.type === HalfFloatType && ( isWebGL2 || extensions.get( 'OES_texture_half_float_linear' ) ) === null ) return;\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tlet textureType = 3553;\n\n\t\tif ( texture.isDataTexture2DArray ) textureType = 35866;\n\t\tif ( texture.isDataTexture3D ) textureType = 32879;\n\n\t\tinitTexture( textureProperties, texture );\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture );\n\n\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\n\t\tconst needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( texture.image ) === false;\n\t\tconst image = resizeImage( texture.image, needsPowerOfTwo, false, maxTextureSize );\n\n\t\tconst supportsMips = isPowerOfTwo( image ) || isWebGL2,\n\t\t\tglFormat = utils.convert( texture.format );\n\n\t\tlet glType = utils.convert( texture.type ),\n\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType );\n\n\t\tsetTextureParameters( textureType, texture, supportsMips );\n\n\t\tlet mipmap;\n\t\tconst mipmaps = texture.mipmaps;\n\n\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t// populate depth texture with dummy data\n\n\t\t\tglInternalFormat = 6402;\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t} else if ( texture.type === UnsignedIntType ) {\n\n\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t} else if ( texture.type === UnsignedInt248Type ) {\n\n\t\t\t\t\tglInternalFormat = 35056;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tglInternalFormat = 33189; // WebGL2 requires sized internalformat for glTexImage2D\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tconsole.error( 'WebGLRenderer: Floating point depth texture requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// validation checks for WebGL 1\n\n\t\t\tif ( texture.format === DepthFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedShortType;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( texture.format === DepthStencilFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tglInternalFormat = 34041;\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\tstate.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t} else if ( texture.isDataTexture2DArray ) {\n\n\t\t\tstate.texImage3D( 35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else if ( texture.isDataTexture3D ) {\n\n\t\t\tstate.texImage3D( 32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else {\n\n\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tgenerateMipmap( textureType, texture, image.width, image.height );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) {\n\n\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\t\tstate.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t_gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 );\n\t\t_gl.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( 36161, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tlet glInternalFormat = 33189;\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst depthTexture = renderTarget.depthTexture;\n\n\t\t\t\tif ( depthTexture && depthTexture.isDepthTexture ) {\n\n\t\t\t\t\tif ( depthTexture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t\t} else if ( depthTexture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 36096, 36161, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, 35056, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, 34041, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 33306, 36161, renderbuffer );\n\n\t\t} else {\n\n\t\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tconst isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tconst webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 );\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( renderTarget.texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\tinfo.memory.textures ++;\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultisample = ( renderTarget.isWebGLMultisampleRenderTarget === true );\n\t\tconst supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;\n\n\t\t// Handles WebGL2 RGBFormat fallback - #18858\n\n\t\tif ( isWebGL2 && renderTarget.texture.format === RGBFormat && ( renderTarget.texture.type === FloatType || renderTarget.texture.type === HalfFloatType ) ) {\n\n\t\t\trenderTarget.texture.format = RGBAFormat;\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Rendering to textures with RGB format is not supported. Using RGBA format instead.' );\n\n\t\t}\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer );\n\n\t\t\t\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\t\t\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\t\t\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\t\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( 36160, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer );\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, null );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 34067, renderTarget.texture, supportsMips );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, 36064, 34069 + i );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 34067, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( 34067, null );\n\n\t\t} else {\n\n\t\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 3553, renderTarget.texture, supportsMips );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, 36064, 3553 );\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 3553, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( 3553, null );\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\t\tconst supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? 34067 : 3553;\n\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\tgenerateMipmap( target, texture, renderTarget.width, renderTarget.height );\n\t\t\tstate.bindTexture( target, null );\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\t\t_gl.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t_gl.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer );\n\n\t\t\t\tconst width = renderTarget.width;\n\t\t\t\tconst height = renderTarget.height;\n\t\t\t\tlet mask = 16384;\n\n\t\t\t\tif ( renderTarget.depthBuffer ) mask |= 256;\n\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= 1024;\n\n\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 );\n\n\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer ); // see #18905\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn ( isWebGL2 && renderTarget.isWebGLMultisampleRenderTarget ) ?\n\t\t\tMath.min( maxSamples, renderTarget.samples ) : 0;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures.get( texture ) !== frame ) {\n\n\t\t\t_videoTextures.set( texture, frame );\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\t// backwards compatibility\n\n\tlet warnedTexture2D = false;\n\tlet warnedTextureCube = false;\n\n\tfunction safeSetTexture2D( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLRenderTarget ) {\n\n\t\t\tif ( warnedTexture2D === false ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\t\twarnedTexture2D = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\tsetTexture2D( texture, slot );\n\n\t}\n\n\tfunction safeSetTextureCube( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLCubeRenderTarget ) {\n\n\t\t\tif ( warnedTextureCube === false ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead.\" );\n\t\t\t\twarnedTextureCube = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\t// currently relying on the fact that WebGLCubeRenderTarget.texture is a Texture and NOT a CubeTexture\n\t\t// TODO: unify these code paths\n\t\tif ( ( texture && texture.isCubeTexture ) ||\n\t\t\t( Array.isArray( texture.image ) && texture.image.length === 6 ) ) {\n\n\t\t\t// CompressedTexture can have Array in image :/\n\n\t\t\t// this function alone should take care of cube textures\n\t\t\tsetTextureCube( texture, slot );\n\n\t\t} else {\n\n\t\t\t// assumed: texture property of THREE.WebGLCubeRenderTarget\n\t\t\tsetTextureCubeDynamic( texture, slot );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.setTextureCubeDynamic = setTextureCubeDynamic;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\n\tthis.safeSetTexture2D = safeSetTexture2D;\n\tthis.safeSetTextureCube = safeSetTextureCube;\n\n}\n\n/**\n * @author thespite / http://www.twitter.com/thespite\n */\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction convert( p ) {\n\n\t\tlet extension;\n\n\t\tif ( p === UnsignedByteType ) return 5121;\n\t\tif ( p === UnsignedShort4444Type ) return 32819;\n\t\tif ( p === UnsignedShort5551Type ) return 32820;\n\t\tif ( p === UnsignedShort565Type ) return 33635;\n\n\t\tif ( p === ByteType ) return 5120;\n\t\tif ( p === ShortType ) return 5122;\n\t\tif ( p === UnsignedShortType ) return 5123;\n\t\tif ( p === IntType ) return 5124;\n\t\tif ( p === UnsignedIntType ) return 5125;\n\t\tif ( p === FloatType ) return 5126;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( isWebGL2 ) return 5131;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.HALF_FLOAT_OES;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return 6406;\n\t\tif ( p === RGBFormat ) return 6407;\n\t\tif ( p === RGBAFormat ) return 6408;\n\t\tif ( p === LuminanceFormat ) return 6409;\n\t\tif ( p === LuminanceAlphaFormat ) return 6410;\n\t\tif ( p === DepthFormat ) return 6402;\n\t\tif ( p === DepthStencilFormat ) return 34041;\n\t\tif ( p === RedFormat ) return 6403;\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedIntegerFormat ) return 36244;\n\t\tif ( p === RGFormat ) return 33319;\n\t\tif ( p === RGIntegerFormat ) return 33320;\n\t\tif ( p === RGBIntegerFormat ) return 36248;\n\t\tif ( p === RGBAIntegerFormat ) return 36249;\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\n\t\t\tp === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format ||\n\t\t\tp === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_ETC2_Format ) return extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return extension.COMPRESSED_RGBA8_ETC2_EAC;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_4x4_Format || p === SRGB8_ALPHA8_ASTC_5x4_Format || p === SRGB8_ALPHA8_ASTC_5x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_6x5_Format || p === SRGB8_ALPHA8_ASTC_6x6_Format || p === SRGB8_ALPHA8_ASTC_8x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_8x6_Format || p === SRGB8_ALPHA8_ASTC_8x8_Format || p === SRGB8_ALPHA8_ASTC_10x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_10x6_Format || p === SRGB8_ALPHA8_ASTC_10x8_Format || p === SRGB8_ALPHA8_ASTC_10x10_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_12x10_Format || p === SRGB8_ALPHA8_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\t// TODO Complete?\n\n\t\t\t\treturn p;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGBA_BPTC_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\t// TODO Complete?\n\n\t\t\t\treturn p;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( isWebGL2 ) return 34042;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ArrayCamera( array ) {\n\n\tPerspectiveCamera.call( this );\n\n\tthis.cameras = array || [];\n\n}\n\nArrayCamera.prototype = Object.assign( Object.create( PerspectiveCamera.prototype ), {\n\n\tconstructor: ArrayCamera,\n\n\tisArrayCamera: true\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Group() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Group';\n\n}\n\nGroup.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Group,\n\n\tisGroup: true\n\n} );\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebXRController() {\n\n\tthis._targetRay = null;\n\tthis._grip = null;\n\n}\n\nObject.assign( WebXRController.prototype, {\n\n\tconstructor: WebXRController,\n\n\tgetTargetRaySpace: function () {\n\n\t\tif ( this._targetRay === null ) {\n\n\t\t\tthis._targetRay = new Group();\n\t\t\tthis._targetRay.matrixAutoUpdate = false;\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t},\n\n\tgetGripSpace: function () {\n\n\t\tif ( this._grip === null ) {\n\n\t\t\tthis._grip = new Group();\n\t\t\tthis._grip.matrixAutoUpdate = false;\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function ( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tupdate: function ( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\n\t\tif ( inputSource ) {\n\n\t\t\tif ( targetRay !== null ) {\n\n\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebXRManager( renderer, gl ) {\n\n\tconst scope = this;\n\n\tlet session = null;\n\n\tlet framebufferScaleFactor = 1.0;\n\n\tlet referenceSpace = null;\n\tlet referenceSpaceType = 'local-floor';\n\n\tlet pose = null;\n\n\tconst controllers = [];\n\tconst inputSourcesMap = new Map();\n\n\t//\n\n\tconst cameraL = new PerspectiveCamera();\n\tcameraL.layers.enable( 1 );\n\tcameraL.viewport = new Vector4();\n\n\tconst cameraR = new PerspectiveCamera();\n\tcameraR.layers.enable( 2 );\n\tcameraR.viewport = new Vector4();\n\n\tconst cameras = [ cameraL, cameraR ];\n\n\tconst cameraVR = new ArrayCamera();\n\tcameraVR.layers.enable( 1 );\n\tcameraVR.layers.enable( 2 );\n\n\tlet _currentDepthNear = null;\n\tlet _currentDepthFar = null;\n\n\t//\n\n\tthis.enabled = false;\n\n\tthis.isPresenting = false;\n\n\tthis.getController = function ( index ) {\n\n\t\tlet controller = controllers[ index ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new WebXRController();\n\t\t\tcontrollers[ index ] = controller;\n\n\t\t}\n\n\t\treturn controller.getTargetRaySpace();\n\n\t};\n\n\tthis.getControllerGrip = function ( index ) {\n\n\t\tlet controller = controllers[ index ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new WebXRController();\n\t\t\tcontrollers[ index ] = controller;\n\n\t\t}\n\n\t\treturn controller.getGripSpace();\n\n\t};\n\n\t//\n\n\tfunction onSessionEvent( event ) {\n\n\t\tconst controller = inputSourcesMap.get( event.inputSource );\n\n\t\tif ( controller ) {\n\n\t\t\tcontroller.dispatchEvent( { type: event.type } );\n\n\t\t}\n\n\t}\n\n\tfunction onSessionEnd() {\n\n\t\tinputSourcesMap.forEach( function ( controller, inputSource ) {\n\n\t\t\tcontroller.disconnect( inputSource );\n\n\t\t} );\n\n\t\tinputSourcesMap.clear();\n\n\t\t//\n\n\t\trenderer.setFramebuffer( null );\n\t\trenderer.setRenderTarget( renderer.getRenderTarget() ); // Hack #15830\n\t\tanimation.stop();\n\n\t\tscope.isPresenting = false;\n\n\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t}\n\n\tfunction onRequestReferenceSpace( value ) {\n\n\t\treferenceSpace = value;\n\n\t\tanimation.setContext( session );\n\t\tanimation.start();\n\n\t\tscope.isPresenting = true;\n\n\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t}\n\n\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\tframebufferScaleFactor = value;\n\n\t\tif ( scope.isPresenting === true ) {\n\n\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\n\n\t\t}\n\n\t};\n\n\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\treferenceSpaceType = value;\n\n\t\tif ( scope.isPresenting === true ) {\n\n\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\n\n\t\t}\n\n\t};\n\n\tthis.getReferenceSpace = function () {\n\n\t\treturn referenceSpace;\n\n\t};\n\n\tthis.getSession = function () {\n\n\t\treturn session;\n\n\t};\n\n\tthis.setSession = function ( value ) {\n\n\t\tsession = value;\n\n\t\tif ( session !== null ) {\n\n\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\n\t\t\tconst attributes = gl.getContextAttributes();\n\n\t\t\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\tgl.makeXRCompatible();\n\n\t\t\t}\n\n\t\t\tconst layerInit = {\n\t\t\t\tantialias: attributes.antialias,\n\t\t\t\talpha: attributes.alpha,\n\t\t\t\tdepth: attributes.depth,\n\t\t\t\tstencil: attributes.stencil,\n\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t};\n\n\t\t\t// eslint-disable-next-line no-undef\n\t\t\tconst baseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\tsession.updateRenderState( { baseLayer: baseLayer } );\n\n\t\t\tsession.requestReferenceSpace( referenceSpaceType ).then( onRequestReferenceSpace );\n\n\t\t\t//\n\n\t\t\tsession.addEventListener( 'inputsourceschange', updateInputSources );\n\n\t\t}\n\n\t};\n\n\tfunction updateInputSources( event ) {\n\n\t\tconst inputSources = session.inputSources;\n\n\t\t// Assign inputSources to available controllers\n\n\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tinputSourcesMap.set( inputSources[ i ], controllers[ i ] );\n\n\t\t}\n\n\t\t// Notify disconnected\n\n\t\tfor ( let i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\tconst inputSource = event.removed[ i ];\n\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\tif ( controller ) {\n\n\t\t\t\tcontroller.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\t\t\t\tinputSourcesMap.delete( inputSource );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Notify connected\n\n\t\tfor ( let i = 0; i < event.added.length; i ++ ) {\n\n\t\t\tconst inputSource = event.added[ i ];\n\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\tif ( controller ) {\n\n\t\t\t\tcontroller.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t//\n\n\tconst cameraLPos = new Vector3();\n\tconst cameraRPos = new Vector3();\n\n\t/**\n\t * @author jsantell / https://www.jsantell.com/\n\t *\n\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t * the cameras' projection and world matrices have already been set.\n\t * And that near and far planes are identical for both cameras.\n\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t */\n\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\tconst ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\tconst projL = cameraL.projectionMatrix.elements;\n\t\tconst projR = cameraR.projectionMatrix.elements;\n\n\t\t// VR systems will have identical far and near planes, and\n\t\t// most likely identical top and bottom frustum extents.\n\t\t// Use the left camera for these values.\n\t\tconst near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\tconst far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\tconst topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\tconst bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\tconst leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\tconst rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\tconst left = near * leftFov;\n\t\tconst right = near * rightFov;\n\n\t\t// Calculate the new camera's position offset from the\n\t\t// left camera. xOffset should be roughly half `ipd`.\n\t\tconst zOffset = ipd / ( - leftFov + rightFov );\n\t\tconst xOffset = zOffset * - leftFov;\n\n\t\t// TODO: Better way to apply this offset?\n\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\tcamera.translateX( xOffset );\n\t\tcamera.translateZ( zOffset );\n\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t\t// Find the union of the frustum values of the cameras and scale\n\t\t// the values so that the near plane's position does not change in world space,\n\t\t// although must now be relative to the new union camera.\n\t\tconst near2 = near + zOffset;\n\t\tconst far2 = far + zOffset;\n\t\tconst left2 = left - xOffset;\n\t\tconst right2 = right + ( ipd - xOffset );\n\t\tconst top2 = topFov * far / far2 * near2;\n\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\n\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\n\t}\n\n\tfunction updateCamera( camera, parent ) {\n\n\t\tif ( parent === null ) {\n\n\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t} else {\n\n\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t}\n\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t}\n\n\tthis.getCamera = function ( camera ) {\n\n\t\tcameraVR.near = cameraR.near = cameraL.near = camera.near;\n\t\tcameraVR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\tif ( _currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.far ) {\n\n\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\tsession.updateRenderState( {\n\t\t\t\tdepthNear: cameraVR.near,\n\t\t\t\tdepthFar: cameraVR.far\n\t\t\t} );\n\n\t\t\t_currentDepthNear = cameraVR.near;\n\t\t\t_currentDepthFar = cameraVR.far;\n\n\t\t}\n\n\t\tconst parent = camera.parent;\n\t\tconst cameras = cameraVR.cameras;\n\n\t\tupdateCamera( cameraVR, parent );\n\n\t\tfor ( let i = 0; i < cameras.length; i ++ ) {\n\n\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t}\n\n\t\t// update camera and its children\n\n\t\tcamera.matrixWorld.copy( cameraVR.matrixWorld );\n\n\t\tconst children = camera.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( true );\n\n\t\t}\n\n\t\t// update projection matrix for proper view frustum culling\n\n\t\tif ( cameras.length === 2 ) {\n\n\t\t\tsetProjectionFromUnion( cameraVR, cameraL, cameraR );\n\n\t\t} else {\n\n\t\t\t// assume single camera setup (AR)\n\n\t\t\tcameraVR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t}\n\n\t\treturn cameraVR;\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tpose = frame.getViewerPose( referenceSpace );\n\n\t\tif ( pose !== null ) {\n\n\t\t\tconst views = pose.views;\n\t\t\tconst baseLayer = session.renderState.baseLayer;\n\n\t\t\trenderer.setFramebuffer( baseLayer.framebuffer );\n\n\t\t\tlet cameraVRNeedsUpdate = false;\n\n\t\t\t// check if it's necessary to rebuild cameraVR's camera list\n\n\t\t\tif ( views.length !== cameraVR.cameras.length ) {\n\n\t\t\t\tcameraVR.cameras.length = 0;\n\t\t\t\tcameraVRNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0; i < views.length; i ++ ) {\n\n\t\t\t\tconst view = views[ i ];\n\t\t\t\tconst viewport = baseLayer.getViewport( view );\n\n\t\t\t\tconst camera = cameras[ i ];\n\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\tcameraVR.matrix.copy( camera.matrix );\n\n\t\t\t\t}\n\n\t\t\t\tif ( cameraVRNeedsUpdate === true ) {\n\n\t\t\t\t\tcameraVR.cameras.push( camera );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst inputSources = session.inputSources;\n\n\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tconst controller = controllers[ i ];\n\t\t\tconst inputSource = inputSources[ i ];\n\n\t\t\tcontroller.update( inputSource, frame, referenceSpace );\n\n\t\t}\n\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\n\t};\n\n\tthis.dispose = function () {};\n\n}\n\nObject.assign( WebXRManager.prototype, EventDispatcher.prototype );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLMaterials( properties ) {\n\n\tfunction refreshFogUniforms( uniforms, fog ) {\n\n\t\tuniforms.fogColor.value.copy( fog.color );\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshMaterialUniforms( uniforms, material, environment, pixelRatio, height ) {\n\n\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsLambert( uniforms, material );\n\n\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsToon( uniforms, material );\n\n\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsPhong( uniforms, material );\n\n\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material, environment );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material, environment );\n\n\t\t\t} else {\n\n\t\t\t\trefreshUniformsStandard( uniforms, material, environment );\n\n\t\t\t}\n\n\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsMatcap( uniforms, material );\n\n\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDepth( uniforms, material );\n\n\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDistance( uniforms, material );\n\n\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsNormal( uniforms, material );\n\n\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\trefreshUniformsLine( uniforms, material );\n\n\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsDash( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\trefreshUniformsPoints( uniforms, material, pixelRatio, height );\n\n\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\trefreshUniformsSprites( uniforms, material );\n\n\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\tuniforms.color.value.copy( material.color );\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t} else if ( material.isShaderMaterial ) {\n\n\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsCommon( uniforms, material, environment ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t}\n\n\t\tconst envMap = material.envMap || environment;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\tuniforms.flipEnvMap.value = envMap.isCubeTexture ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t\tuniforms.maxMipLevel.value = properties.get( envMap ).__maxMipLevel;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. normal map\n\t\t// 4. bump map\n\t\t// 5. alpha map\n\t\t// 6. emissive map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities for uv2\n\t\t// 1. ao map\n\t\t// 2. light map\n\n\t\tlet uv2ScaleMap;\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuv2ScaleMap = material.aoMap;\n\n\t\t} else if ( material.lightMap ) {\n\n\t\t\tuv2ScaleMap = material.lightMap;\n\n\t\t}\n\n\t\tif ( uv2ScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uv2ScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuv2ScaleMap = uv2ScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uv2ScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuv2ScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uv2Transform.value.copy( uv2ScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material, pixelRatio, height ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * pixelRatio;\n\t\tuniforms.scale.value = height * 0.5;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLambert( uniforms, material ) {\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material, environment ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.envMap || environment ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material, environment ) {\n\n\t\trefreshUniformsStandard( uniforms, material, environment );\n\n\t\tuniforms.reflectivity.value = material.reflectivity; // also part of uniforms common\n\n\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\t\tif ( material.sheen ) uniforms.sheen.value.copy( material.sheen );\n\n\t\tif ( material.clearcoatMap ) {\n\n\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\n\t\t}\n\n\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t}\n\n\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t}\n\n\t\t}\n\n\t\tuniforms.transparency.value = material.transparency;\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDepth( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tuniforms.referencePosition.value.copy( material.referencePosition );\n\t\tuniforms.nearDistance.value = material.nearDistance;\n\t\tuniforms.farDistance.value = material.farDistance;\n\n\t}\n\n\tfunction refreshUniformsNormal( uniforms, material ) {\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n * @author tschw\n */\n\nfunction WebGLRenderer( parameters ) {\n\n\tparameters = parameters || {};\n\n\tconst _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),\n\t\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,\n\t\t_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',\n\t\t_failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;\n\n\tlet currentRenderList = null;\n\tlet currentRenderState = null;\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\n\t// Debug configuration container\n\tthis.debug = {\n\n\t\t/**\n\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t * @type {boolean}\n\t\t */\n\t\tcheckShaderErrors: true\n\t};\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.gammaFactor = 2.0;\t// for backwards compatibility\n\tthis.outputEncoding = LinearEncoding;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = NoToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\n\t// morphs\n\n\tthis.maxMorphTargets = 8;\n\tthis.maxMorphNormals = 4;\n\n\t// internal properties\n\n\tconst _this = this;\n\n\tlet _isContextLost = false;\n\n\t// internal state cache\n\n\tlet _framebuffer = null;\n\n\tlet _currentActiveCubeFace = 0;\n\tlet _currentActiveMipmapLevel = 0;\n\tlet _currentRenderTarget = null;\n\tlet _currentFramebuffer = null;\n\tlet _currentMaterialId = - 1;\n\n\tlet _currentCamera = null;\n\tlet _currentArrayCamera = null;\n\n\tconst _currentViewport = new Vector4();\n\tconst _currentScissor = new Vector4();\n\tlet _currentScissorTest = null;\n\n\t//\n\n\tlet _width = _canvas.width;\n\tlet _height = _canvas.height;\n\n\tlet _pixelRatio = 1;\n\tlet _opaqueSort = null;\n\tlet _transparentSort = null;\n\n\tconst _viewport = new Vector4( 0, 0, _width, _height );\n\tconst _scissor = new Vector4( 0, 0, _width, _height );\n\tlet _scissorTest = false;\n\n\t// frustum\n\n\tconst _frustum = new Frustum();\n\n\t// clipping\n\n\tconst _clipping = new WebGLClipping();\n\tlet _clippingEnabled = false;\n\tlet _localClippingEnabled = false;\n\n\t// camera matrices cache\n\n\tconst _projScreenMatrix = new Matrix4();\n\n\tconst _vector3 = new Vector3();\n\n\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\t// initialize\n\n\tlet _gl = _context;\n\n\tfunction getContext( contextNames, contextAttributes ) {\n\n\t\tfor ( let i = 0; i < contextNames.length; i ++ ) {\n\n\t\t\tconst contextName = contextNames[ i ];\n\t\t\tconst context = _canvas.getContext( contextName, contextAttributes );\n\t\t\tif ( context !== null ) return context;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\ttry {\n\n\t\tconst contextAttributes = {\n\t\t\talpha: _alpha,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer,\n\t\t\tpowerPreference: _powerPreference,\n\t\t\tfailIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat\n\t\t};\n\n\t\t// event listeners must be registered before WebGL context is created, see #12753\n\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tconst contextNames = [ 'webgl2', 'webgl', 'experimental-webgl' ];\n\n\t\t\tif ( _this.isWebGL1Renderer === true ) {\n\n\t\t\t\tcontextNames.shift();\n\n\t\t\t}\n\n\t\t\t_gl = getContext( contextNames, contextAttributes );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tif ( getContext( contextNames ) ) {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t};\n\n\t\t}\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\tthrow error;\n\n\t}\n\n\tlet extensions, capabilities, state, info;\n\tlet properties, textures, attributes, geometries, objects;\n\tlet programCache, materials, renderLists, renderStates;\n\n\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\tlet utils, bindingStates;\n\n\tfunction initGLContext() {\n\n\t\textensions = new WebGLExtensions( _gl );\n\n\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\tif ( capabilities.isWebGL2 === false ) {\n\n\t\t\textensions.get( 'WEBGL_depth_texture' );\n\t\t\textensions.get( 'OES_texture_float' );\n\t\t\textensions.get( 'OES_texture_half_float' );\n\t\t\textensions.get( 'OES_texture_half_float_linear' );\n\t\t\textensions.get( 'OES_standard_derivatives' );\n\t\t\textensions.get( 'OES_element_index_uint' );\n\t\t\textensions.get( 'OES_vertex_array_object' );\n\t\t\textensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t}\n\n\t\textensions.get( 'OES_texture_float_linear' );\n\n\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\tstate = new WebGLState( _gl, extensions, capabilities );\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t\tinfo = new WebGLInfo( _gl );\n\t\tproperties = new WebGLProperties();\n\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\tattributes = new WebGLAttributes( _gl, capabilities );\n\t\tbindingStates = new WebGLBindingStates( _gl, extensions, attributes, capabilities );\n\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\n\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\tmorphtargets = new WebGLMorphtargets( _gl );\n\t\tprogramCache = new WebGLPrograms( _this, extensions, capabilities, bindingStates );\n\t\tmaterials = new WebGLMaterials( properties );\n\t\trenderLists = new WebGLRenderLists();\n\t\trenderStates = new WebGLRenderStates();\n\n\t\tbackground = new WebGLBackground( _this, state, objects, _premultipliedAlpha );\n\n\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\n\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\n\n\t\tinfo.programs = programCache.programs;\n\n\t\t_this.capabilities = capabilities;\n\t\t_this.extensions = extensions;\n\t\t_this.properties = properties;\n\t\t_this.renderLists = renderLists;\n\t\t_this.state = state;\n\t\t_this.info = info;\n\n\t}\n\n\tinitGLContext();\n\n\t// xr\n\n\tconst xr = new WebXRManager( _this, _gl );\n\n\tthis.xr = xr;\n\n\t// shadow map\n\n\tconst shadowMap = new WebGLShadowMap( _this, objects, capabilities.maxTextureSize );\n\n\tthis.shadowMap = shadowMap;\n\n\t// API\n\n\tthis.getContext = function () {\n\n\t\treturn _gl;\n\n\t};\n\n\tthis.getContextAttributes = function () {\n\n\t\treturn _gl.getContextAttributes();\n\n\t};\n\n\tthis.forceContextLoss = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.loseContext();\n\n\t};\n\n\tthis.forceContextRestore = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.restoreContext();\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _width, _height, false );\n\n\t};\n\n\tthis.getSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getsize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width, _height );\n\n\t};\n\n\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\tif ( xr.isPresenting ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = Math.floor( width * _pixelRatio );\n\t\t_canvas.height = Math.floor( height * _pixelRatio );\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getdrawingBufferSize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t};\n\n\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_pixelRatio = pixelRatio;\n\n\t\t_canvas.width = Math.floor( width * pixelRatio );\n\t\t_canvas.height = Math.floor( height * pixelRatio );\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getCurrentViewport = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getCurrentViewport() now requires a Vector4 as an argument' );\n\n\t\t\ttarget = new Vector4();\n\n\t\t}\n\n\t\treturn target.copy( _currentViewport );\n\n\t};\n\n\tthis.getViewport = function ( target ) {\n\n\t\treturn target.copy( _viewport );\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_viewport.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissor = function ( target ) {\n\n\t\treturn target.copy( _scissor );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_scissor.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissorTest = function () {\n\n\t\treturn _scissorTest;\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\tthis.setOpaqueSort = function ( method ) {\n\n\t\t_opaqueSort = method;\n\n\t};\n\n\tthis.setTransparentSort = function ( method ) {\n\n\t\t_transparentSort = method;\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function () {\n\n\t\treturn background.getClearColor();\n\n\t};\n\n\tthis.setClearColor = function () {\n\n\t\tbackground.setClearColor.apply( background, arguments );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn background.getClearAlpha();\n\n\t};\n\n\tthis.setClearAlpha = function () {\n\n\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t};\n\n\tthis.clear = function ( color, depth, stencil ) {\n\n\t\tlet bits = 0;\n\n\t\tif ( color === undefined || color ) bits |= 16384;\n\t\tif ( depth === undefined || depth ) bits |= 256;\n\t\tif ( stencil === undefined || stencil ) bits |= 1024;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\t//\n\n\tthis.dispose = function () {\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\trenderLists.dispose();\n\t\trenderStates.dispose();\n\t\tproperties.dispose();\n\t\tobjects.dispose();\n\t\tbindingStates.dispose();\n\n\t\txr.dispose();\n\n\t\tanimation.stop();\n\n\t};\n\n\t// Events\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t_isContextLost = true;\n\n\t}\n\n\tfunction onContextRestore( /* event */ ) {\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t_isContextLost = false;\n\n\t\tinitGLContext();\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tconst material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\tdeallocateMaterial( material );\n\n\t}\n\n\t// Buffer deallocation\n\n\tfunction deallocateMaterial( material ) {\n\n\t\treleaseMaterialProgramReference( material );\n\n\t\tproperties.remove( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReference( material ) {\n\n\t\tconst programInfo = properties.get( material ).program;\n\n\t\tmaterial.program = undefined;\n\n\t\tif ( programInfo !== undefined ) {\n\n\t\t\tprogramCache.releaseProgram( programInfo );\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tfunction renderObjectImmediate( object, program ) {\n\n\t\tobject.render( function ( object ) {\n\n\t\t\t_this.renderBufferImmediate( object, program );\n\n\t\t} );\n\n\t}\n\n\tthis.renderBufferImmediate = function ( object, program ) {\n\n\t\tbindingStates.initAttributes();\n\n\t\tconst buffers = properties.get( object );\n\n\t\tif ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();\n\t\tif ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();\n\t\tif ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();\n\t\tif ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tif ( object.hasPositions ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.position );\n\t\t\t_gl.bufferData( 34962, object.positionArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.position );\n\t\t\t_gl.vertexAttribPointer( programAttributes.position, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasNormals ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.normal );\n\t\t\t_gl.bufferData( 34962, object.normalArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.normal );\n\t\t\t_gl.vertexAttribPointer( programAttributes.normal, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasUvs ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.uv );\n\t\t\t_gl.bufferData( 34962, object.uvArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.uv );\n\t\t\t_gl.vertexAttribPointer( programAttributes.uv, 2, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasColors ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.color );\n\t\t\t_gl.bufferData( 34962, object.colorArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.color );\n\t\t\t_gl.vertexAttribPointer( programAttributes.color, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tbindingStates.disableUnusedAttributes();\n\n\t\t_gl.drawArrays( 4, 0, object.count );\n\n\t\tobject.count = 0;\n\n\t};\n\n\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\tconst program = setProgram( camera, scene, material, object );\n\n\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t//\n\n\t\tlet index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\n\t\t//\n\n\t\tif ( index === null ) {\n\n\t\t\tif ( position === undefined || position.count === 0 ) return;\n\n\t\t} else if ( index.count === 0 ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t//\n\n\t\tlet rangeFactor = 1;\n\n\t\tif ( material.wireframe === true ) {\n\n\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\t\t\trangeFactor = 2;\n\n\t\t}\n\n\t\tif ( material.morphTargets || material.morphNormals ) {\n\n\t\t\tmorphtargets.update( object, geometry, material, program );\n\n\t\t}\n\n\t\tbindingStates.setup( object, material, program, geometry, index );\n\n\t\tlet attribute;\n\t\tlet renderer = bufferRenderer;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattribute = attributes.get( index );\n\n\t\t\trenderer = indexedBufferRenderer;\n\t\t\trenderer.setIndex( attribute );\n\n\t\t}\n\n\t\t//\n\n\t\tconst dataCount = ( index !== null ) ? index.count : position.count;\n\n\t\tconst rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tconst rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tconst groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tconst groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tconst drawStart = Math.max( rangeStart, groupStart );\n\t\tconst drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tconst drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\t//\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 4 );\n\n\t\t\t}\n\n\t\t} else if ( object.isLine ) {\n\n\t\t\tlet lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\trenderer.setMode( 2 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 3 );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( 0 );\n\n\t\t} else if ( object.isSprite ) {\n\n\t\t\trenderer.setMode( 4 );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\trenderer.renderInstances( geometry, drawStart, drawCount, object.count );\n\n\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\tconst instanceCount = Math.min( geometry.instanceCount, geometry._maxInstanceCount );\n\n\t\t\trenderer.renderInstances( geometry, drawStart, drawCount, instanceCount );\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\t// Compile\n\n\tthis.compile = function ( scene, camera ) {\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tif ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tconst compiled = new WeakMap();\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tlet material = object.material;\n\n\t\t\tif ( material ) {\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\tlet material2 = material[ i ];\n\n\t\t\t\t\t\tif ( compiled.has( material2 ) === false ) {\n\n\t\t\t\t\t\t\tinitMaterial( material2, scene, object );\n\t\t\t\t\t\t\tcompiled.set( material2 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( compiled.has( material ) === false ) {\n\n\t\t\t\t\tinitMaterial( material, scene, object );\n\t\t\t\t\tcompiled.set( material );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time ) {\n\n\t\tif ( xr.isPresenting ) return;\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tif ( typeof window !== 'undefined' ) animation.setContext( window );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\t\txr.setAnimationLoop( callback );\n\n\t\t( callback === null ) ? animation.stop() : animation.start();\n\n\t};\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tlet renderTarget, forceClear;\n\n\t\tif ( arguments[ 2 ] !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead.' );\n\t\t\trenderTarget = arguments[ 2 ];\n\n\t\t}\n\n\t\tif ( arguments[ 3 ] !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead.' );\n\t\t\tforceClear = arguments[ 3 ];\n\n\t\t}\n\n\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( _isContextLost === true ) return;\n\n\t\t// reset caching for this frame\n\n\t\tbindingStates.resetDefaultState();\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\t// update scene graph\n\n\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t// update camera matrices and frustum\n\n\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\tcamera = xr.getCamera( camera );\n\n\t\t}\n\n\t\t//\n\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, renderTarget || _currentRenderTarget );\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tcurrentRenderList = renderLists.get( scene, camera );\n\t\tcurrentRenderList.init();\n\n\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\tcurrentRenderList.finish();\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled === true ) _clipping.beginShadows();\n\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tif ( _clippingEnabled === true ) _clipping.endShadows();\n\n\t\t//\n\n\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\t\tif ( renderTarget !== undefined ) {\n\n\t\t\tthis.setRenderTarget( renderTarget );\n\n\t\t}\n\n\t\t//\n\n\t\tbackground.render( currentRenderList, scene, camera, forceClear );\n\n\t\t// render scene\n\n\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\n\n\t\t//\n\n\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\n\n\t\t//\n\n\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t}\n\n\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\tstate.buffers.depth.setTest( true );\n\t\tstate.buffers.depth.setMask( true );\n\t\tstate.buffers.color.setMask( true );\n\n\t\tstate.setPolygonOffset( false );\n\n\t\t// _gl.finish();\n\n\t\tcurrentRenderList = null;\n\t\tcurrentRenderState = null;\n\n\t};\n\n\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible ) {\n\n\t\t\tif ( object.isGroup ) {\n\n\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isImmediateRenderObject ) {\n\n\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t}\n\n\t\t\t\tcurrentRenderList.push( object, null, object.material, groupOrder, _vector3.z, null );\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\t// update skeleton only once in a frame\n\n\t\t\t\t\tif ( object.skeleton.frame !== info.render.frame ) {\n\n\t\t\t\t\t\tobject.skeleton.update();\n\t\t\t\t\t\tobject.skeleton.frame = info.render.frame;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t}\n\n\t}\n\n\tfunction renderObjects( renderList, scene, camera ) {\n\n\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tconst renderItem = renderList[ i ];\n\n\t\t\tconst object = renderItem.object;\n\t\t\tconst geometry = renderItem.geometry;\n\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\tconst group = renderItem.group;\n\n\t\t\tif ( camera.isArrayCamera ) {\n\n\t\t\t\t_currentArrayCamera = camera;\n\n\t\t\t\tconst cameras = camera.cameras;\n\n\t\t\t\tfor ( let j = 0, jl = cameras.length; j < jl; j ++ ) {\n\n\t\t\t\t\tconst camera2 = cameras[ j ];\n\n\t\t\t\t\tif ( object.layers.test( camera2.layers ) ) {\n\n\t\t\t\t\t\tstate.viewport( _currentViewport.copy( camera2.viewport ) );\n\n\t\t\t\t\t\tcurrentRenderState.setupLights( camera2 );\n\n\t\t\t\t\t\trenderObject( object, scene, camera2, geometry, material, group );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_currentArrayCamera = null;\n\n\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\tif ( object.isImmediateRenderObject ) {\n\n\t\t\tconst program = setProgram( camera, scene, material, object );\n\n\t\t\tstate.setMaterial( material );\n\n\t\t\tbindingStates.reset();\n\n\t\t\trenderObjectImmediate( object, program );\n\n\t\t} else {\n\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t}\n\n\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t}\n\n\tfunction initMaterial( material, scene, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tconst lights = currentRenderState.state.lights;\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tconst lightsStateVersion = lights.state.version;\n\n\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, _clipping.numPlanes, _clipping.numIntersection, object );\n\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\tlet program = materialProperties.program;\n\t\tlet programChange = true;\n\n\t\tif ( program === undefined ) {\n\n\t\t\t// new material\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t} else if ( program.cacheKey !== programCacheKey ) {\n\n\t\t\t// changed glsl or parameters\n\t\t\treleaseMaterialProgramReference( material );\n\n\t\t} else if ( materialProperties.lightsStateVersion !== lightsStateVersion ) {\n\n\t\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\t\tprogramChange = false;\n\n\t\t} else if ( parameters.shaderID !== undefined ) {\n\n\t\t\t// same glsl and uniform list\n\t\t\treturn;\n\n\t\t} else {\n\n\t\t\t// only rebuild uniform list\n\t\t\tprogramChange = false;\n\n\t\t}\n\n\t\tif ( programChange ) {\n\n\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\n\t\t\tmaterialProperties.program = program;\n\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\t\t\tmaterialProperties.outputEncoding = parameters.outputEncoding;\n\t\t\tmaterial.program = program;\n\n\t\t}\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tif ( material.morphTargets ) {\n\n\t\t\tmaterial.numSupportedMorphTargets = 0;\n\n\t\t\tfor ( let i = 0; i < _this.maxMorphTargets; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphTarget' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphTargets ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.morphNormals ) {\n\n\t\t\tmaterial.numSupportedMorphNormals = 0;\n\n\t\t\tfor ( let i = 0; i < _this.maxMorphNormals; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphNormal' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphNormals ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst uniforms = materialProperties.uniforms;\n\n\t\tif ( ! material.isShaderMaterial &&\n\t\t\t! material.isRawShaderMaterial ||\n\t\t\tmaterial.clipping === true ) {\n\n\t\t\tmaterialProperties.numClippingPlanes = _clipping.numPlanes;\n\t\t\tmaterialProperties.numIntersection = _clipping.numIntersection;\n\t\t\tuniforms.clippingPlanes = _clipping.uniform;\n\n\t\t}\n\n\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tmaterialProperties.fog = scene.fog;\n\n\t\t// store the light setup it was created for\n\n\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\tuniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t}\n\n\t\tconst progUniforms = materialProperties.program.getUniforms(),\n\t\t\tuniformsList =\n\t\t\t\tWebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t}\n\n\tfunction setProgram( camera, scene, material, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\ttextures.resetTextureUnits();\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tconst encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : _currentRenderTarget.texture.encoding;\n\n\t\tconst materialProperties = properties.get( material );\n\t\tconst lights = currentRenderState.state.lights;\n\n\t\tif ( _clippingEnabled === true ) {\n\n\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\n\n\t\t\t\tconst useCache =\n\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\t_clipping.setState(\n\t\t\t\t\tmaterial.clippingPlanes, material.clipIntersection, material.clipShadows,\n\t\t\t\t\tcamera, materialProperties, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\tif ( materialProperties.program === undefined ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( material.fog && materialProperties.fog !== fog ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.environment !== environment ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t( materialProperties.numClippingPlanes !== _clipping.numPlanes ||\n\t\t\t\tmaterialProperties.numIntersection !== _clipping.numIntersection ) ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.outputEncoding !== encoding ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tinitMaterial( material, scene, object );\n\t\t\tmaterialProperties.__version = material.version;\n\n\t\t}\n\n\t\tlet refreshProgram = false;\n\t\tlet refreshMaterial = false;\n\t\tlet refreshLights = false;\n\n\t\tconst program = materialProperties.program,\n\t\t\tp_uniforms = program.getUniforms(),\n\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\trefreshProgram = true;\n\t\t\trefreshMaterial = true;\n\t\t\trefreshLights = true;\n\n\t\t}\n\n\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t_currentMaterialId = material.id;\n\n\t\t\trefreshMaterial = true;\n\n\t\t}\n\n\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t}\n\n\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t}\n\n\t\t\t// load material specific uniforms\n\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\tif ( material.isShaderMaterial ||\n\t\t\t\tmaterial.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.envMap ) {\n\n\t\t\t\tconst uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ||\n\t\t\t\tmaterial.isShadowMaterial ||\n\t\t\t\tmaterial.skinning ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// skinning uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone texture must go before other textures\n\t\t// otherwise textures used for skinning can take over texture units reserved for other material textures\n\n\t\tif ( material.skinning ) {\n\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\tconst skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tconst bones = skeleton.bones;\n\n\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === undefined ) {\n\n\t\t\t\t\t\t// layout (1 matrix = 4 pixels)\n\t\t\t\t\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t\t\t\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t\t\t\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t\t\t\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t\t\t\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\n\t\t\t\t\t\tlet size = Math.sqrt( bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\t\t\t\t\tsize = MathUtils.ceilPowerOfTwo( size );\n\t\t\t\t\t\tsize = Math.max( size, 4 );\n\n\t\t\t\t\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\t\t\t\t\tboneMatrices.set( skeleton.boneMatrices ); // copy current values\n\n\t\t\t\t\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\n\t\t\t\t\t\tskeleton.boneMatrices = boneMatrices;\n\t\t\t\t\t\tskeleton.boneTexture = boneTexture;\n\t\t\t\t\t\tskeleton.boneTextureSize = size;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tp_uniforms.setOptional( _gl, skeleton, 'boneMatrices' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t}\n\n\t\tif ( refreshMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t// values\n\t\t\t\t//\n\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t// the GL state when required\n\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t}\n\n\t\t\t// refresh uniforms common to several materials\n\n\t\t\tif ( fog && material.fog ) {\n\n\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, environment, _pixelRatio, _height );\n\n\t\t\t// RectAreaLight Texture\n\t\t\t// TODO (mrdoob): Find a nicer implementation\n\n\t\t\tif ( m_uniforms.ltc_1 !== undefined ) m_uniforms.ltc_1.value = UniformsLib.LTC_1;\n\t\t\tif ( m_uniforms.ltc_2 !== undefined ) m_uniforms.ltc_2.value = UniformsLib.LTC_2;\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\n\t\t}\n\n\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t}\n\n\t\t// common matrices\n\n\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\treturn program;\n\n\t}\n\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\tuniforms.directionalLights.needsUpdate = value;\n\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\tuniforms.pointLights.needsUpdate = value;\n\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\tuniforms.spotLights.needsUpdate = value;\n\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t}\n\n\tfunction materialNeedsLights( material ) {\n\n\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t}\n\n\t//\n\tthis.setFramebuffer = function ( value ) {\n\n\t\tif ( _framebuffer !== value && _currentRenderTarget === null ) _gl.bindFramebuffer( 36160, value );\n\n\t\t_framebuffer = value;\n\n\t};\n\n\tthis.getActiveCubeFace = function () {\n\n\t\treturn _currentActiveCubeFace;\n\n\t};\n\n\tthis.getActiveMipmapLevel = function () {\n\n\t\treturn _currentActiveMipmapLevel;\n\n\t};\n\n\tthis.getRenderTarget = function () {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget, activeCubeFace, activeMipmapLevel ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\tif ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {\n\n\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t}\n\n\t\tlet framebuffer = _framebuffer;\n\t\tlet isCube = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace || 0 ];\n\t\t\t\tisCube = true;\n\n\t\t\t} else if ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t} else {\n\n\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t}\n\n\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t} else {\n\n\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t}\n\n\t\tif ( _currentFramebuffer !== framebuffer ) {\n\n\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t\t_currentFramebuffer = framebuffer;\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport );\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tif ( isCube ) {\n\n\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( 36160, 36064, 34069 + ( activeCubeFace || 0 ), textureProperties.__webglTexture, activeMipmapLevel || 0 );\n\n\t\t}\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t}\n\n\t\tif ( framebuffer ) {\n\n\t\t\tlet restore = false;\n\n\t\t\tif ( framebuffer !== _currentFramebuffer ) {\n\n\t\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\n\t\t\t\trestore = true;\n\n\t\t\t}\n\n\t\t\ttry {\n\n\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // IE11, Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_float' ) || extensions.get( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t! ( textureType === HalfFloatType && ( capabilities.isWebGL2 ? extensions.get( 'EXT_color_buffer_float' ) : extensions.get( 'EXT_color_buffer_half_float' ) ) ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _gl.checkFramebufferStatus( 36160 ) === 36053 ) {\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\tif ( restore ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, _currentFramebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.copyFramebufferToTexture = function ( position, texture, level ) {\n\n\t\tif ( level === undefined ) level = 0;\n\n\t\tconst levelScale = Math.pow( 2, - level );\n\t\tconst width = Math.floor( texture.image.width * levelScale );\n\t\tconst height = Math.floor( texture.image.height * levelScale );\n\t\tconst glFormat = utils.convert( texture.format );\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t_gl.copyTexImage2D( 3553, level, glFormat, position.x, position.y, width, height, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level ) {\n\n\t\tif ( level === undefined ) level = 0;\n\n\t\tconst width = srcTexture.image.width;\n\t\tconst height = srcTexture.image.height;\n\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\tconst glType = utils.convert( dstTexture.type );\n\n\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\t// As another texture upload may have changed pixelStorei\n\t\t// parameters, make sure they are correct for the dstTexture\n\t\t_gl.pixelStorei( 37440, dstTexture.flipY );\n\t\t_gl.pixelStorei( 37441, dstTexture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, dstTexture.unpackAlignment );\n\n\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t} else {\n\n\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\t_gl.compressedTexSubImage2D( 3553, level, position.x, position.y, srcTexture.mipmaps[ 0 ].width, srcTexture.mipmaps[ 0 ].height, glFormat, srcTexture.mipmaps[ 0 ].data );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Generate mipmaps only when copying level 0\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( 3553 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.initTexture = function ( texture ) {\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebGL1Renderer( parameters ) {\n\n\tWebGLRenderer.call( this, parameters );\n\n}\n\nWebGL1Renderer.prototype = Object.assign( Object.create( WebGLRenderer.prototype ), {\n\n\tconstructor: WebGL1Renderer,\n\n\tisWebGL1Renderer: true\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction FogExp2( color, density ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\tthis.density = ( density !== undefined ) ? density : 0.00025;\n\n}\n\nObject.assign( FogExp2.prototype, {\n\n\tisFogExp2: true,\n\n\tclone: function () {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t},\n\n\ttoJSON: function ( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Fog( color, near, far ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\n\tthis.near = ( near !== undefined ) ? near : 1;\n\tthis.far = ( far !== undefined ) ? far : 1000;\n\n}\n\nObject.assign( Fog.prototype, {\n\n\tisFog: true,\n\n\tclone: function () {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t},\n\n\ttoJSON: function ( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InterleavedBuffer( array, stride ) {\n\n\tthis.array = array;\n\tthis.stride = stride;\n\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\tthis.usage = StaticDrawUsage;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n\tthis.uuid = MathUtils.generateUUID();\n\n}\n\nObject.defineProperty( InterleavedBuffer.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\n\tisInterleavedBuffer: true,\n\n\tonUploadCallback: function () {},\n\n\tsetUsage: function ( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( let i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = MathUtils.generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\n\n\t\t}\n\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\n\n\t\tconst ib = new InterleavedBuffer( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\t// generate UUID for array buffer if necessary\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = MathUtils.generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.prototype.slice.call( new Uint32Array( this.array.buffer ) );\n\n\t\t}\n\n\t\t//\n\n\t\treturn {\n\t\t\tuuid: this.uuid,\n\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tstride: this.stride\n\t\t};\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nconst _vector$6 = new Vector3();\n\nfunction InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) {\n\n\tthis.name = '';\n\n\tthis.data = interleavedBuffer;\n\tthis.itemSize = itemSize;\n\tthis.offset = offset;\n\n\tthis.normalized = normalized === true;\n\n}\n\nObject.defineProperties( InterleavedBufferAttribute.prototype, {\n\n\tcount: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.count;\n\n\t\t}\n\n\t},\n\n\tarray: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.array;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( InterleavedBufferAttribute.prototype, {\n\n\tisInterleavedBufferAttribute: true,\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.x = this.getX( i );\n\t\t\t_vector$6.y = this.getY( i );\n\t\t\t_vector$6.z = this.getZ( i );\n\n\t\t\t_vector$6.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t\t} else {\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\n\n\t\t\t}\n\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// deinterleave data and save it as an ordinary buffer attribute for now\n\n\t\t\treturn {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t// save as true interlaved attribtue\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\tdata: this.data.uuid,\n\t\t\t\toffset: this.offset,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * map: new THREE.Texture( ),\n * alphaMap: new THREE.Texture( ),\n * rotation: ,\n * sizeAttenuation: \n * }\n */\n\nfunction SpriteMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'SpriteMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.rotation = 0;\n\n\tthis.sizeAttenuation = true;\n\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nSpriteMaterial.prototype = Object.create( Material.prototype );\nSpriteMaterial.prototype.constructor = SpriteMaterial;\nSpriteMaterial.prototype.isSpriteMaterial = true;\n\nSpriteMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.rotation = source.rotation;\n\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\treturn this;\n\n};\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nlet _geometry;\n\nconst _intersectPoint = new Vector3();\nconst _worldScale = new Vector3();\nconst _mvPosition = new Vector3();\n\nconst _alignedPosition = new Vector2();\nconst _rotatedPosition = new Vector2();\nconst _viewWorldMatrix = new Matrix4();\n\nconst _vA$1 = new Vector3();\nconst _vB$1 = new Vector3();\nconst _vC$1 = new Vector3();\n\nconst _uvA$1 = new Vector2();\nconst _uvB$1 = new Vector2();\nconst _uvC$1 = new Vector2();\n\nfunction Sprite( material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Sprite';\n\n\tif ( _geometry === undefined ) {\n\n\t\t_geometry = new BufferGeometry();\n\n\t\tconst float32Array = new Float32Array( [\n\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t] );\n\n\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t}\n\n\tthis.geometry = _geometry;\n\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n\tthis.center = new Vector2( 0.5, 0.5 );\n\n}\n\nSprite.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Sprite,\n\n\tisSprite: true,\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tconst rotation = this.material.rotation;\n\t\tlet sin, cos;\n\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tconst center = this.center;\n\n\t\ttransformVertex( _vA$1.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB$1.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC$1.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA$1.set( 0, 0 );\n\t\t_uvB$1.set( 1, 0 );\n\t\t_uvC$1.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA$1, _vB$1, _vC$1, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB$1.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB$1.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA$1, _vC$1, _vB$1, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getUV( _intersectPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _v1$4 = new Vector3();\nconst _v2$2 = new Vector3();\n\nfunction LOD() {\n\n\tObject3D.call( this );\n\n\tthis._currentLevel = 0;\n\n\tthis.type = 'LOD';\n\n\tObject.defineProperties( this, {\n\t\tlevels: {\n\t\t\tenumerable: true,\n\t\t\tvalue: []\n\t\t}\n\t} );\n\n\tthis.autoUpdate = true;\n\n}\n\nLOD.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: LOD,\n\n\tisLOD: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source, false );\n\n\t\tconst levels = source.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t},\n\n\taddLevel: function ( object, distance ) {\n\n\t\tif ( distance === undefined ) distance = 0;\n\n\t\tdistance = Math.abs( distance );\n\n\t\tconst levels = this.levels;\n\n\t\tlet l;\n\n\t\tfor ( l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t},\n\n\tgetCurrentLevel: function () {\n\n\t\treturn this._currentLevel;\n\n\t},\n\n\tgetObjectForDistance: function ( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$4.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$4 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t},\n\n\tupdate: function ( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$4.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$4.distanceTo( _v2$2 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._currentLevel = i - 1;\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction SkinnedMesh( geometry, material ) {\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\tconsole.error( 'THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t}\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'SkinnedMesh';\n\n\tthis.bindMode = 'attached';\n\tthis.bindMatrix = new Matrix4();\n\tthis.bindMatrixInverse = new Matrix4();\n\n}\n\nSkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: SkinnedMesh,\n\n\tisSkinnedMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tMesh.prototype.copy.call( this, source );\n\n\t\tthis.bindMode = source.bindMode;\n\t\tthis.bindMatrix.copy( source.bindMatrix );\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\n\n\t\tthis.skeleton = source.skeleton;\n\n\t\treturn this;\n\n\t},\n\n\tbind: function ( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.getInverse( bindMatrix );\n\n\t},\n\n\tpose: function () {\n\n\t\tthis.skeleton.pose();\n\n\t},\n\n\tnormalizeSkinWeights: function () {\n\n\t\tconst vector = new Vector4();\n\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.x = skinWeight.getX( i );\n\t\t\tvector.y = skinWeight.getY( i );\n\t\t\tvector.z = skinWeight.getZ( i );\n\t\t\tvector.w = skinWeight.getW( i );\n\n\t\t\tconst scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tMesh.prototype.updateMatrixWorld.call( this, force );\n\n\t\tif ( this.bindMode === 'attached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.matrixWorld );\n\n\t\t} else if ( this.bindMode === 'detached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.bindMatrix );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t},\n\n\tboneTransform: ( function () {\n\n\t\tconst basePosition = new Vector3();\n\n\t\tconst skinIndex = new Vector4();\n\t\tconst skinWeight = new Vector4();\n\n\t\tconst vector = new Vector3();\n\t\tconst matrix = new Matrix4();\n\n\t\treturn function ( index, target ) {\n\n\t\t\tconst skeleton = this.skeleton;\n\t\t\tconst geometry = this.geometry;\n\n\t\t\tskinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t\tskinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t\tbasePosition.fromBufferAttribute( geometry.attributes.position, index ).applyMatrix4( this.bindMatrix );\n\n\t\t\ttarget.set( 0, 0, 0 );\n\n\t\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\t\tconst weight = skinWeight.getComponent( i );\n\n\t\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\t\tconst boneIndex = skinIndex.getComponent( i );\n\n\t\t\t\t\tmatrix.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\t\ttarget.addScaledVector( vector.copy( basePosition ).applyMatrix4( matrix ), weight );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn target.applyMatrix4( this.bindMatrixInverse );\n\n\t\t};\n\n\t}() )\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author michael guerrero / http://realitymeltdown.com\n * @author ikerr / http://verold.com\n */\n\nconst _offsetMatrix = new Matrix4();\nconst _identityMatrix = new Matrix4();\n\nfunction Skeleton( bones, boneInverses ) {\n\n\t// copy the bone array\n\n\tbones = bones || [];\n\n\tthis.bones = bones.slice( 0 );\n\tthis.boneMatrices = new Float32Array( this.bones.length * 16 );\n\n\tthis.frame = - 1;\n\n\t// use the supplied bone inverses or calculate the inverses\n\n\tif ( boneInverses === undefined ) {\n\n\t\tthis.calculateInverses();\n\n\t} else {\n\n\t\tif ( this.bones.length === boneInverses.length ) {\n\n\t\t\tthis.boneInverses = boneInverses.slice( 0 );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Skeleton boneInverses is the wrong length.' );\n\n\t\t\tthis.boneInverses = [];\n\n\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Skeleton.prototype, {\n\n\tcalculateInverses: function () {\n\n\t\tthis.boneInverses = [];\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.getInverse( this.bones[ i ].matrixWorld );\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t},\n\n\tpose: function () {\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.getInverse( this.boneInverses[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.getInverse( bone.parent.matrixWorld );\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdate: function () {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\t\tconst boneMatrices = this.boneMatrices;\n\t\tconst boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== undefined ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t},\n\n\tgetBoneByName: function ( name ) {\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tdispose: function ( ) {\n\n\t\tif ( this.boneTexture ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = undefined;\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction Bone() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Bone';\n\n}\n\nBone.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Bone,\n\n\tisBone: true\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _instanceLocalMatrix = new Matrix4();\nconst _instanceWorldMatrix = new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _mesh = new Mesh();\n\nfunction InstancedMesh( geometry, material, count ) {\n\n\tMesh.call( this, geometry, material );\n\n\tthis.instanceMatrix = new BufferAttribute( new Float32Array( count * 16 ), 16 );\n\n\tthis.count = count;\n\n\tthis.frustumCulled = false;\n\n}\n\nInstancedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: InstancedMesh,\n\n\tisInstancedMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tMesh.prototype.copy.call( this, source );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\t\tthis.count = source.count;\n\n\t\treturn this;\n\n\t},\n\n\tgetMatrixAt: function ( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst raycastTimes = this.count;\n\n\t\t_mesh.geometry = this.geometry;\n\t\t_mesh.material = this.material;\n\n\t\tif ( _mesh.material === undefined ) return;\n\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t},\n\n\tsetMatrixAt: function ( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n * linecap: \"round\",\n * linejoin: \"round\"\n * }\n */\n\nfunction LineBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'LineBasicMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.linewidth = 1;\n\tthis.linecap = 'round';\n\tthis.linejoin = 'round';\n\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nLineBasicMaterial.prototype = Object.create( Material.prototype );\nLineBasicMaterial.prototype.constructor = LineBasicMaterial;\n\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\n\nLineBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.linewidth = source.linewidth;\n\tthis.linecap = source.linecap;\n\tthis.linejoin = source.linejoin;\n\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _start = new Vector3();\nconst _end = new Vector3();\nconst _inverseMatrix$1 = new Matrix4();\nconst _ray$1 = new Ray();\nconst _sphere$2 = new Sphere();\n\nfunction Line( geometry, material, mode ) {\n\n\tif ( mode === 1 ) {\n\n\t\tconsole.error( 'THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead.' );\n\n\t}\n\n\tObject3D.call( this );\n\n\tthis.type = 'Line';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new LineBasicMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nLine.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Line,\n\n\tisLine: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\tcomputeLineDistances: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t_start.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t\t_end.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i ] += _start.distanceTo( _end );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst lineDistances = geometry.lineDistances;\n\n\t\t\tlineDistances[ 0 ] = 0;\n\n\t\t\tfor ( let i = 1, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i ] += vertices[ i - 1 ].distanceTo( vertices[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$2.copy( geometry.boundingSphere );\n\t\t_sphere$2.applyMatrix4( matrixWorld );\n\t\t_sphere$2.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$2 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.getInverse( matrixWorld );\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst vStart = new Vector3();\n\t\tconst vEnd = new Vector3();\n\t\tconst interSegment = new Vector3();\n\t\tconst interRay = new Vector3();\n\t\tconst step = ( this && this.isLineSegments ) ? 2 : 1;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positions = attributes.position.array;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst indices = index.array;\n\n\t\t\t\tfor ( let i = 0, l = indices.length - 1; i < l; i += step ) {\n\n\t\t\t\t\tconst a = indices[ i ];\n\t\t\t\t\tconst b = indices[ i + 1 ];\n\n\t\t\t\t\tvStart.fromArray( positions, a * 3 );\n\t\t\t\t\tvEnd.fromArray( positions, b * 3 );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0, l = positions.length / 3 - 1; i < l; i += step ) {\n\n\t\t\t\t\tvStart.fromArray( positions, 3 * i );\n\t\t\t\t\tvEnd.fromArray( positions, 3 * i + 3 );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst nbVertices = vertices.length;\n\n\t\t\tfor ( let i = 0; i < nbVertices - 1; i += step ) {\n\n\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );\n\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _start$1 = new Vector3();\nconst _end$1 = new Vector3();\n\nfunction LineSegments( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineSegments';\n\n}\n\nLineSegments.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineSegments,\n\n\tisLineSegments: true,\n\n\tcomputeLineDistances: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [];\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t\t_start$1.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\t_end$1.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start$1.distanceTo( _end$1 );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst lineDistances = geometry.lineDistances;\n\n\t\t\tfor ( let i = 0, l = vertices.length; i < l; i += 2 ) {\n\n\t\t\t\t_start$1.copy( vertices[ i ] );\n\t\t\t\t_end$1.copy( vertices[ i + 1 ] );\n\n\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start$1.distanceTo( _end$1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mgreter / http://github.com/mgreter\n */\n\nfunction LineLoop( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineLoop';\n\n}\n\nLineLoop.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineLoop,\n\n\tisLineLoop: true,\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n * alphaMap: new THREE.Texture( ),\n *\n * size: ,\n * sizeAttenuation: \n *\n * morphTargets: \n * }\n */\n\nfunction PointsMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'PointsMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.size = 1;\n\tthis.sizeAttenuation = true;\n\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nPointsMaterial.prototype = Object.create( Material.prototype );\nPointsMaterial.prototype.constructor = PointsMaterial;\n\nPointsMaterial.prototype.isPointsMaterial = true;\n\nPointsMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.size = source.size;\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nconst _inverseMatrix$2 = new Matrix4();\nconst _ray$2 = new Ray();\nconst _sphere$3 = new Sphere();\nconst _position$1 = new Vector3();\n\nfunction Points( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Points';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new PointsMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nPoints.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Points,\n\n\tisPoints: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$3.copy( geometry.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\t\t_sphere$3.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$2.getInverse( matrixWorld );\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positions = attributes.position.array;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst indices = index.array;\n\n\t\t\t\tfor ( let i = 0, il = indices.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst a = indices[ i ];\n\n\t\t\t\t\t_position$1.fromArray( positions, a * 3 );\n\n\t\t\t\t\ttestPoint( _position$1, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0, l = positions.length / 3; i < l; i ++ ) {\n\n\t\t\t\t\t_position$1.fromArray( positions, i * 3 );\n\n\t\t\t\t\ttestPoint( _position$1, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst vertices = geometry.vertices;\n\n\t\t\tfor ( let i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\ttestPoint( vertices[ i ], i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray$2.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray$2.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.format = format !== undefined ? format : RGBFormat;\n\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\tthis.generateMipmaps = false;\n\n}\n\nVideoTexture.prototype = Object.assign( Object.create( Texture.prototype ), {\n\n\tconstructor: VideoTexture,\n\n\tisVideoTexture: true,\n\n\tupdate: function () {\n\n\t\tconst video = this.image;\n\n\t\tif ( video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { width: width, height: height };\n\tthis.mipmaps = mipmaps;\n\n\t// no flipping for cube textures\n\t// (also flipping doesn't work for compressed textures )\n\n\tthis.flipY = false;\n\n\t// can't generate mipmaps for compressed textures\n\t// mips must be embedded in DDS files\n\n\tthis.generateMipmaps = false;\n\n}\n\nCompressedTexture.prototype = Object.create( Texture.prototype );\nCompressedTexture.prototype.constructor = CompressedTexture;\n\nCompressedTexture.prototype.isCompressedTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.needsUpdate = true;\n\n}\n\nCanvasTexture.prototype = Object.create( Texture.prototype );\nCanvasTexture.prototype.constructor = CanvasTexture;\nCanvasTexture.prototype.isCanvasTexture = true;\n\n/**\n * @author Matt DesLauriers / @mattdesl\n * @author atix / arthursilber.de\n */\n\nfunction DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\tformat = format !== undefined ? format : DepthFormat;\n\n\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t}\n\n\tif ( type === undefined && format === DepthFormat ) type = UnsignedShortType;\n\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.image = { width: width, height: height };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.flipY = false;\n\tthis.generateMipmaps\t= false;\n\n}\n\nDepthTexture.prototype = Object.create( Texture.prototype );\nDepthTexture.prototype.constructor = DepthTexture;\nDepthTexture.prototype.isDepthTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WireframeGeometry( geometry ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'WireframeGeometry';\n\n\t// buffer\n\n\tconst vertices = [];\n\n\t// helper variables\n\n\tconst edge = [ 0, 0 ], edges = {};\n\tconst keys = [ 'a', 'b', 'c' ];\n\n\t// different logic for Geometry and BufferGeometry\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\t// create a data structure that contains all edges without duplicates\n\n\t\tconst faces = geometry.faces;\n\n\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\tconst edge1 = face[ keys[ j ] ];\n\t\t\t\tconst edge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\tconst key = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices\n\n\t\tfor ( const key in edges ) {\n\n\t\t\tconst e = edges[ key ];\n\n\t\t\tlet vertex = geometry.vertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = geometry.vertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t} else if ( geometry && geometry.isBufferGeometry ) {\n\n\t\tlet vertex = new Vector3();\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\t// indexed BufferGeometry\n\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst indices = geometry.index;\n\t\t\tlet groups = geometry.groups;\n\n\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t}\n\n\t\t\t// create a data structure that contains all eges without duplicates\n\n\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\tconst start = group.start;\n\t\t\t\tconst count = group.count;\n\n\t\t\t\tfor ( let i = start, l = ( start + count ); i < l; i += 3 ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\tconst edge1 = indices.getX( i + j );\n\t\t\t\t\t\tconst edge2 = indices.getX( i + ( j + 1 ) % 3 );\n\t\t\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\t\t\tconst key = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// generate vertices\n\n\t\t\tfor ( const key in edges ) {\n\n\t\t\t\tconst e = edges[ key ];\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index1 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index2 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// non-indexed BufferGeometry\n\n\t\t\tconst position = geometry.attributes.position;\n\n\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\tconst index1 = 3 * i + j;\n\t\t\t\t\tvertex.fromBufferAttribute( position, index1 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\t\t\t\t\tvertex.fromBufferAttribute( position, index2 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nWireframeGeometry.prototype = Object.create( BufferGeometry.prototype );\nWireframeGeometry.prototype.constructor = WireframeGeometry;\n\n/**\n * @author zz85 / https://github.com/zz85\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Parametric Surfaces Geometry\n * based on the brilliant article by @prideout https://prideout.net/blog/old/blog/index.html@p=44.html\n */\n\n// ParametricGeometry\n\nfunction ParametricGeometry( func, slices, stacks ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ParametricGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\tthis.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) );\n\tthis.mergeVertices();\n\n}\n\nParametricGeometry.prototype = Object.create( Geometry.prototype );\nParametricGeometry.prototype.constructor = ParametricGeometry;\n\n// ParametricBufferGeometry\n\nfunction ParametricBufferGeometry( func, slices, stacks ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ParametricBufferGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\tconst EPS = 0.00001;\n\n\tconst normal = new Vector3();\n\n\tconst p0 = new Vector3(), p1 = new Vector3();\n\tconst pu = new Vector3(), pv = new Vector3();\n\n\tif ( func.length < 3 ) {\n\n\t\tconsole.error( 'THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.' );\n\n\t}\n\n\t// generate vertices, normals and uvs\n\n\tconst sliceCount = slices + 1;\n\n\tfor ( let i = 0; i <= stacks; i ++ ) {\n\n\t\tconst v = i / stacks;\n\n\t\tfor ( let j = 0; j <= slices; j ++ ) {\n\n\t\t\tconst u = j / slices;\n\n\t\t\t// vertex\n\n\t\t\tfunc( u, v, p0 );\n\t\t\tvertices.push( p0.x, p0.y, p0.z );\n\n\t\t\t// normal\n\n\t\t\t// approximate tangent vectors via finite differences\n\n\t\t\tif ( u - EPS >= 0 ) {\n\n\t\t\t\tfunc( u - EPS, v, p1 );\n\t\t\t\tpu.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u + EPS, v, p1 );\n\t\t\t\tpu.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\tif ( v - EPS >= 0 ) {\n\n\t\t\t\tfunc( u, v - EPS, p1 );\n\t\t\t\tpv.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u, v + EPS, p1 );\n\t\t\t\tpv.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\t// cross product of tangent vectors returns surface normal\n\n\t\t\tnormal.crossVectors( pu, pv ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u, v );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( let i = 0; i < stacks; i ++ ) {\n\n\t\tfor ( let j = 0; j < slices; j ++ ) {\n\n\t\t\tconst a = i * sliceCount + j;\n\t\t\tconst b = i * sliceCount + j + 1;\n\t\t\tconst c = ( i + 1 ) * sliceCount + j + 1;\n\t\t\tconst d = ( i + 1 ) * sliceCount + j;\n\n\t\t\t// faces one and two\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry;\n\n/**\n * @author clockworkgeek / https://github.com/clockworkgeek\n * @author timothypratley / https://github.com/timothypratley\n * @author WestLangley / http://github.com/WestLangley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// PolyhedronGeometry\n\nfunction PolyhedronGeometry( vertices, indices, radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PolyhedronGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nPolyhedronGeometry.prototype = Object.create( Geometry.prototype );\nPolyhedronGeometry.prototype.constructor = PolyhedronGeometry;\n\n// PolyhedronBufferGeometry\n\nfunction PolyhedronBufferGeometry( vertices, indices, radius, detail ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PolyhedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tradius = radius || 1;\n\tdetail = detail || 0;\n\n\t// default buffer data\n\n\tconst vertexBuffer = [];\n\tconst uvBuffer = [];\n\n\t// the subdivision creates the vertex buffer data\n\n\tsubdivide( detail );\n\n\t// all vertices should lie on a conceptual sphere with a given radius\n\n\tapplyRadius( radius );\n\n\t// finally, create the uv data\n\n\tgenerateUVs();\n\n\t// build non-indexed geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\tif ( detail === 0 ) {\n\n\t\tthis.computeVertexNormals(); // flat normals\n\n\t} else {\n\n\t\tthis.normalizeNormals(); // smooth normals\n\n\t}\n\n\t// helper functions\n\n\tfunction subdivide( detail ) {\n\n\t\tconst a = new Vector3();\n\t\tconst b = new Vector3();\n\t\tconst c = new Vector3();\n\n\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t// get the vertices of the face\n\n\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t// perform subdivision\n\n\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t}\n\n\t}\n\n\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\tconst cols = Math.pow( 2, detail );\n\n\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\tconst v = [];\n\n\t\t// construct all of the vertices for this subdivision\n\n\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\tv[ i ] = [];\n\n\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\tconst rows = cols - i;\n\n\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// construct all of the faces\n\n\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction applyRadius( radius ) {\n\n\t\tconst vertex = new Vector3();\n\n\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tconst vertex = new Vector3();\n\n\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t}\n\n\t\tcorrectUVs();\n\n\t\tcorrectSeam();\n\n\t}\n\n\tfunction correctSeam() {\n\n\t\t// handle case when face straddles the seam, see #3269\n\n\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t// uv data of a single face\n\n\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction pushVertex( vertex ) {\n\n\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t}\n\n\tfunction getVertexByIndex( index, vertex ) {\n\n\t\tconst stride = index * 3;\n\n\t\tvertex.x = vertices[ stride + 0 ];\n\t\tvertex.y = vertices[ stride + 1 ];\n\t\tvertex.z = vertices[ stride + 2 ];\n\n\t}\n\n\tfunction correctUVs() {\n\n\t\tconst a = new Vector3();\n\t\tconst b = new Vector3();\n\t\tconst c = new Vector3();\n\n\t\tconst centroid = new Vector3();\n\n\t\tconst uvA = new Vector2();\n\t\tconst uvB = new Vector2();\n\t\tconst uvC = new Vector2();\n\n\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\tconst azi = azimuth( centroid );\n\n\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t}\n\n\t}\n\n\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t}\n\n\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t}\n\n\t}\n\n\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\tfunction azimuth( vector ) {\n\n\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t}\n\n\n\t// Angle above the XZ plane.\n\n\tfunction inclination( vector ) {\n\n\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t}\n\n}\n\nPolyhedronBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// TetrahedronGeometry\n\nfunction TetrahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TetrahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nTetrahedronGeometry.prototype = Object.create( Geometry.prototype );\nTetrahedronGeometry.prototype.constructor = TetrahedronGeometry;\n\n// TetrahedronBufferGeometry\n\nfunction TetrahedronBufferGeometry( radius, detail ) {\n\n\tconst vertices = [\n\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t];\n\n\tconst indices = [\n\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'TetrahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nTetrahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nTetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// OctahedronGeometry\n\nfunction OctahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'OctahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nOctahedronGeometry.prototype = Object.create( Geometry.prototype );\nOctahedronGeometry.prototype.constructor = OctahedronGeometry;\n\n// OctahedronBufferGeometry\n\nfunction OctahedronBufferGeometry( radius, detail ) {\n\n\tconst vertices = [\n\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t];\n\n\tconst indices = [\n\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t1, 3, 4,\t1, 4, 2\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'OctahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nOctahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nOctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// IcosahedronGeometry\n\nfunction IcosahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'IcosahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nIcosahedronGeometry.prototype = Object.create( Geometry.prototype );\nIcosahedronGeometry.prototype.constructor = IcosahedronGeometry;\n\n// IcosahedronBufferGeometry\n\nfunction IcosahedronBufferGeometry( radius, detail ) {\n\n\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\tconst vertices = [\n\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t 0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t t, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t];\n\n\tconst indices = [\n\t\t 0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t 1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t 3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t 4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'IcosahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nIcosahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nIcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry;\n\n/**\n * @author Abe Pazos / https://hamoid.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// DodecahedronGeometry\n\nfunction DodecahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'DodecahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nDodecahedronGeometry.prototype = Object.create( Geometry.prototype );\nDodecahedronGeometry.prototype.constructor = DodecahedronGeometry;\n\n// DodecahedronBufferGeometry\n\nfunction DodecahedronBufferGeometry( radius, detail ) {\n\n\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\tconst r = 1 / t;\n\n\tconst vertices = [\n\n\t\t// (±1, ±1, ±1)\n\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t// (0, ±1/φ, ±φ)\n\t\t 0, - r, - t, 0, - r, t,\n\t\t 0, r, - t, 0, r, t,\n\n\t\t// (±1/φ, ±φ, 0)\n\t\t- r, - t, 0, - r, t, 0,\n\t\t r, - t, 0, r, t, 0,\n\n\t\t// (±φ, 0, ±1/φ)\n\t\t- t, 0, - r, t, 0, - r,\n\t\t- t, 0, r, t, 0, r\n\t];\n\n\tconst indices = [\n\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'DodecahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nDodecahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nDodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry;\n\n/**\n * @author oosmoxiecode / https://github.com/oosmoxiecode\n * @author WestLangley / https://github.com/WestLangley\n * @author zz85 / https://github.com/zz85\n * @author miningold / https://github.com/miningold\n * @author jonobr1 / https://github.com/jonobr1\n * @author Mugen87 / https://github.com/Mugen87\n *\n */\n\n// TubeGeometry\n\nfunction TubeGeometry( path, tubularSegments, radius, radialSegments, closed, taper ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TubeGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\tif ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' );\n\n\tconst bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = bufferGeometry.tangents;\n\tthis.normals = bufferGeometry.normals;\n\tthis.binormals = bufferGeometry.binormals;\n\n\t// create geometry\n\n\tthis.fromBufferGeometry( bufferGeometry );\n\tthis.mergeVertices();\n\n}\n\nTubeGeometry.prototype = Object.create( Geometry.prototype );\nTubeGeometry.prototype.constructor = TubeGeometry;\n\n// TubeBufferGeometry\n\nfunction TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TubeBufferGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\ttubularSegments = tubularSegments || 64;\n\tradius = radius || 1;\n\tradialSegments = radialSegments || 8;\n\tclosed = closed || false;\n\n\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = frames.tangents;\n\tthis.normals = frames.normals;\n\tthis.binormals = frames.binormals;\n\n\t// helper variables\n\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\tconst uv = new Vector2();\n\tlet P = new Vector3();\n\n\t// buffer\n\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\tconst indices = [];\n\n\t// create buffer data\n\n\tgenerateBufferData();\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// functions\n\n\tfunction generateBufferData() {\n\n\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\tgenerateSegment( i );\n\n\t\t}\n\n\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t// at the regular position on the given path\n\t\t//\n\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t// uvs are generated in a separate function.\n\t\t// this makes it easy compute correct values for closed geometries\n\n\t\tgenerateUVs();\n\n\t\t// finally create faces\n\n\t\tgenerateIndices();\n\n\t}\n\n\tfunction generateSegment( i ) {\n\n\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t// retrieve corresponding normal and binormal\n\n\t\tconst N = frames.normals[ i ];\n\t\tconst B = frames.binormals[ i ];\n\n\t\t// generate normals and vertices for the current segment\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\tconst sin = Math.sin( v );\n\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t// normal\n\n\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\tnormal.normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\tfunction generateIndices() {\n\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nTubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTubeBufferGeometry.prototype.constructor = TubeBufferGeometry;\n\nTubeBufferGeometry.prototype.toJSON = function () {\n\n\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\tdata.path = this.parameters.path.toJSON();\n\n\treturn data;\n\n};\n\n/**\n * @author oosmoxiecode\n * @author Mugen87 / https://github.com/Mugen87\n *\n * based on http://www.blackpawn.com/texts/pqtorus/\n */\n\n// TorusKnotGeometry\n\nfunction TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusKnotGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tif ( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' );\n\n\tthis.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) );\n\tthis.mergeVertices();\n\n}\n\nTorusKnotGeometry.prototype = Object.create( Geometry.prototype );\nTorusKnotGeometry.prototype.constructor = TorusKnotGeometry;\n\n// TorusKnotBufferGeometry\n\nfunction TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusKnotBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\ttubularSegments = Math.floor( tubularSegments ) || 64;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\tp = p || 2;\n\tq = q || 3;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\n\tconst P1 = new Vector3();\n\tconst P2 = new Vector3();\n\n\tconst B = new Vector3();\n\tconst T = new Vector3();\n\tconst N = new Vector3();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\n\n\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t// calculate orthonormal basis\n\n\t\tT.subVectors( P2, P1 );\n\t\tN.addVectors( P2, P1 );\n\t\tB.crossVectors( T, N );\n\t\tN.crossVectors( B, T );\n\n\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\tB.normalize();\n\t\tN.normalize();\n\n\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t// now calculate the final vertex position.\n\t\t\t// first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\n\n\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// this function calculates the current position on the torus curve\n\n\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\tconst cu = Math.cos( u );\n\t\tconst su = Math.sin( u );\n\t\tconst quOverP = q / p * u;\n\t\tconst cs = Math.cos( quOverP );\n\n\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t}\n\n}\n\nTorusKnotBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry;\n\n/**\n * @author oosmoxiecode\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// TorusGeometry\n\nfunction TorusGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tthis.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) );\n\tthis.mergeVertices();\n\n}\n\nTorusGeometry.prototype = Object.create( Geometry.prototype );\nTorusGeometry.prototype.constructor = TorusGeometry;\n\n// TorusBufferGeometry\n\nfunction TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\ttubularSegments = Math.floor( tubularSegments ) || 6;\n\tarc = arc || Math.PI * 2;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst center = new Vector3();\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tconst u = i / tubularSegments * arc;\n\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\tconst d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nTorusBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusBufferGeometry.prototype.constructor = TorusBufferGeometry;\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n * Port from https://github.com/mapbox/earcut (v2.2.2)\n */\n\nconst Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim ) {\n\n\t\tdim = dim || 2;\n\n\t\tlet hasHoles = holeIndices && holeIndices.length,\n\t\t\touterLen = hasHoles ? holeIndices[ 0 ] * dim : data.length,\n\t\t\touterNode = linkedList( data, 0, outerLen, dim, true ),\n\t\t\ttriangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tlet minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( let i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 1 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tlet i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tlet p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tlet stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim );\n\t\t\ttriangles.push( ear.i / dim );\n\t\t\ttriangles.push( next.i / dim );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( filterPoints( ear ), triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tlet a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tlet p = ear.next.next;\n\n\twhile ( p !== ear.prev ) {\n\n\t\tif ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tlet a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tlet minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ),\n\t\tminTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ),\n\t\tmaxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ),\n\t\tmaxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y );\n\n\t// z-order range for the current triangle bbox;\n\tlet minZ = zOrder( minTX, minTY, minX, minY, invSize ),\n\t\tmaxZ = zOrder( maxTX, maxTY, minX, minY, invSize );\n\n\tlet p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tlet a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim );\n\t\t\ttriangles.push( p.i / dim );\n\t\t\ttriangles.push( b.i / dim );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn filterPoints( p );\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tlet a = start;\n\tdo {\n\n\t\tlet b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tlet c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tlet queue = [],\n\t\ti, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\teliminateHole( queue[ i ], outerNode );\n\t\touterNode = filterPoints( outerNode, outerNode.next );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\touterNode = findHoleBridge( hole, outerNode );\n\tif ( outerNode ) {\n\n\t\tconst b = splitPolygon( outerNode, hole );\n\n\t\t// filter collinear points around the cuts\n\t\tfilterPoints( outerNode, outerNode.next );\n\t\tfilterPoints( b, b.next );\n\n\t}\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tlet p = outerNode,\n\t\thx = hole.x,\n\t\thy = hole.y,\n\t\tqx = - Infinity,\n\t\tm;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tlet x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tif ( x === hx ) {\n\n\t\t\t\t\tif ( hy === p.y ) return p;\n\t\t\t\t\tif ( hy === p.next.y ) return p.next;\n\n\t\t\t\t}\n\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\tif ( hx === qx ) return m; // hole touches outer segment; pick leftmost endpoint\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tlet stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y,\n\t\ttanMin = Infinity,\n\t\ttan;\n\n\tp = m;\n\n\tdo {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== stop );\n\n\treturn m;\n\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector( m, p ) {\n\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tif ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tlet i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = 32767 * ( x - minX ) * invSize;\n\ty = 32767 * ( y - minY ) * invSize;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tlet p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 &&\n\t\t\t( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 &&\n\t\t\t( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0;\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // dones't intersect other edges\n\t\t( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n\t\t( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n\t\tequals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tconst o1 = sign( area( p1, q1, p2 ) );\n\tconst o2 = sign( area( p1, q1, q2 ) );\n\tconst o3 = sign( area( p2, q2, p1 ) );\n\tconst o4 = sign( area( p2, q2, q1 ) );\n\n\tif ( o1 !== o2 && o3 !== o4 ) return true; // general case\n\n\tif ( o1 === 0 && onSegment( p1, p2, q1 ) ) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n\tif ( o2 === 0 && onSegment( p1, q2, q1 ) ) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n\tif ( o3 === 0 && onSegment( p2, p1, q2 ) ) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n\tif ( o4 === 0 && onSegment( p2, q1, q2 ) ) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n\treturn false;\n\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment( p, q, r ) {\n\n\treturn q.x <= Math.max( p.x, r.x ) && q.x >= Math.min( p.x, r.x ) && q.y <= Math.max( p.y, r.y ) && q.y >= Math.min( p.y, r.y );\n\n}\n\nfunction sign( num ) {\n\n\treturn num > 0 ? 1 : num < 0 ? - 1 : 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tlet p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tlet p = a,\n\t\tinside = false,\n\t\tpx = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tlet a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tconst p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = null;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tlet sum = 0;\n\tfor ( let i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nconst ShapeUtils = {\n\n\t// calculate area of the contour polygon\n\n\tarea: function ( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t},\n\n\tisClockWise: function ( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t},\n\n\ttriangulateShape: function ( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n};\n\nfunction removeDupEndPts( points ) {\n\n\tconst l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( let i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * depth: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline (including bevelOffset) is bevel\n * bevelOffset: , // how far from shape outline does bevel start\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // curve to extrude shape along\n *\n * UVGenerator: // object that provides UV generator functions\n *\n * }\n */\n\n// ExtrudeGeometry\n\nfunction ExtrudeGeometry( shapes, options ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ExtrudeGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tthis.fromBufferGeometry( new ExtrudeBufferGeometry( shapes, options ) );\n\tthis.mergeVertices();\n\n}\n\nExtrudeGeometry.prototype = Object.create( Geometry.prototype );\nExtrudeGeometry.prototype.constructor = ExtrudeGeometry;\n\nExtrudeGeometry.prototype.toJSON = function () {\n\n\tconst data = Geometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\tconst options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n// ExtrudeBufferGeometry\n\nfunction ExtrudeBufferGeometry( shapes, options ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ExtrudeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\tconst scope = this;\n\n\tconst verticesArray = [];\n\tconst uvArray = [];\n\n\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\tconst shape = shapes[ i ];\n\t\taddShape( shape );\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\tthis.computeVertexNormals();\n\n\t// functions\n\n\tfunction addShape( shape ) {\n\n\t\tconst placeholder = [];\n\n\t\t// options\n\n\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\tlet depth = options.depth !== undefined ? options.depth : 100;\n\n\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6;\n\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2;\n\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\tconst extrudePath = options.extrudePath;\n\n\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t// deprecated options\n\n\t\tif ( options.amount !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' );\n\t\t\tdepth = options.amount;\n\n\t\t}\n\n\t\t//\n\n\t\tlet extrudePts, extrudeByPath = false;\n\t\tlet splineTube, binormal, normal, position2;\n\n\t\tif ( extrudePath ) {\n\n\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\textrudeByPath = true;\n\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t// SETUP TNB variables\n\n\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\tbinormal = new Vector3();\n\t\t\tnormal = new Vector3();\n\t\t\tposition2 = new Vector3();\n\n\t\t}\n\n\t\t// Safeguards if bevels are not enabled\n\n\t\tif ( ! bevelEnabled ) {\n\n\t\t\tbevelSegments = 0;\n\t\t\tbevelThickness = 0;\n\t\t\tbevelSize = 0;\n\t\t\tbevelOffset = 0;\n\n\t\t}\n\n\t\t// Variables initialization\n\n\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\tlet vertices = shapePoints.shape;\n\t\tconst holes = shapePoints.holes;\n\n\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\tif ( reverse ) {\n\n\t\t\tvertices = vertices.reverse();\n\n\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t/* Vertices */\n\n\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tconst ahole = holes[ h ];\n\n\t\t\tvertices = vertices.concat( ahole );\n\n\t\t}\n\n\n\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\tif ( ! vec ) console.error( \"THREE.ExtrudeGeometry: vec does not exist\" );\n\n\t\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t\t}\n\n\t\tconst vlen = vertices.length, flen = faces.length;\n\n\n\t\t// Find directions for point movement\n\n\n\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t//\n\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t// check for collinear edges\n\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t// not collinear\n\n\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t// but prevent crazy spikes\n\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\tlet direction_eq = false; // assumes: opposite\n\n\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t}\n\n\n\t\tconst contourMovements = [];\n\n\t\tfor ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\tif ( j === il ) j = 0;\n\t\t\tif ( k === il ) k = 0;\n\n\t\t\t// (j)---(i)---(k)\n\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t}\n\n\t\tconst holesMovements = [];\n\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tconst ahole = holes[ h ];\n\n\t\t\toneHoleMovements = [];\n\n\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t// (j)---(i)---(k)\n\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t}\n\n\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t}\n\n\n\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\tconst t = b / bevelSegments;\n\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t// contract shape\n\n\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t// Back facing vertices\n\n\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t} else {\n\n\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Add stepped vertices...\n\t\t// Including front facing vertices\n\n\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// Add bevel segments planes\n\n\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\tconst t = b / bevelSegments;\n\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t// contract shape\n\n\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t/* Faces */\n\n\t\t// Top and bottom faces\n\n\t\tbuildLidFaces();\n\n\t\t// Sides faces\n\n\t\tbuildSideFaces();\n\n\n\t\t///// Internal functions\n\n\t\tfunction buildLidFaces() {\n\n\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t}\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t}\n\n\t\t// Create faces for the z-sides of the shape\n\n\t\tfunction buildSideFaces() {\n\n\t\t\tconst start = verticesArray.length / 3;\n\t\t\tlet layeroffset = 0;\n\t\t\tsidewalls( contour, layeroffset );\n\t\t\tlayeroffset += contour.length;\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t//, true\n\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t}\n\n\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t}\n\n\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\tlet i = contour.length;\n\n\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\tconst j = i;\n\t\t\t\tlet k = i - 1;\n\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction v( x, y, z ) {\n\n\t\t\tplaceholder.push( x );\n\t\t\tplaceholder.push( y );\n\t\t\tplaceholder.push( z );\n\n\t\t}\n\n\n\t\tfunction f3( a, b, c ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\n\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\n\t\t}\n\n\t\tfunction f4( a, b, c, d ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( d );\n\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\t\t\taddVertex( d );\n\n\n\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t}\n\n\t\tfunction addVertex( index ) {\n\n\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t}\n\n\n\t\tfunction addUV( vector2 ) {\n\n\t\t\tuvArray.push( vector2.x );\n\t\t\tuvArray.push( vector2.y );\n\n\t\t}\n\n\t}\n\n}\n\nExtrudeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nExtrudeBufferGeometry.prototype.constructor = ExtrudeBufferGeometry;\n\nExtrudeBufferGeometry.prototype.toJSON = function () {\n\n\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\tconst options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n//\n\nconst WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\n\t\tconst d_x = vertices[ indexD * 3 ];\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < 0.01 ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n};\n\nfunction toJSON( shapes, options, data ) {\n\n\t//\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\t//\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author alteredq / http://alteredqualia.com/\n *\n * Text = 3D Text\n *\n * parameters = {\n * font: , // font\n *\n * size: , // size of the text\n * height: , // thickness to extrude text\n * curveSegments: , // number of points on the curves\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into text bevel goes\n * bevelSize: , // how far from text outline (including bevelOffset) is bevel\n * bevelOffset: // how far from text outline does bevel start\n * }\n */\n\n// TextGeometry\n\nfunction TextGeometry( text, parameters ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TextGeometry';\n\n\tthis.parameters = {\n\t\ttext: text,\n\t\tparameters: parameters\n\t};\n\n\tthis.fromBufferGeometry( new TextBufferGeometry( text, parameters ) );\n\tthis.mergeVertices();\n\n}\n\nTextGeometry.prototype = Object.create( Geometry.prototype );\nTextGeometry.prototype.constructor = TextGeometry;\n\n// TextBufferGeometry\n\nfunction TextBufferGeometry( text, parameters ) {\n\n\tparameters = parameters || {};\n\n\tconst font = parameters.font;\n\n\tif ( ! ( font && font.isFont ) ) {\n\n\t\tconsole.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' );\n\t\treturn new Geometry();\n\n\t}\n\n\tconst shapes = font.generateShapes( text, parameters.size );\n\n\t// translate parameters to ExtrudeGeometry API\n\n\tparameters.depth = parameters.height !== undefined ? parameters.height : 50;\n\n\t// defaults\n\n\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\n\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\n\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\n\n\tExtrudeBufferGeometry.call( this, shapes, parameters );\n\n\tthis.type = 'TextBufferGeometry';\n\n}\n\nTextBufferGeometry.prototype = Object.create( ExtrudeBufferGeometry.prototype );\nTextBufferGeometry.prototype.constructor = TextBufferGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author benaadams / https://twitter.com/ben_a_adams\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// SphereGeometry\n\nfunction SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'SphereGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nSphereGeometry.prototype = Object.create( Geometry.prototype );\nSphereGeometry.prototype.constructor = SphereGeometry;\n\n// SphereBufferGeometry\n\nfunction SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'SphereBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\n\twidthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 );\n\theightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 );\n\n\tphiStart = phiStart !== undefined ? phiStart : 0;\n\tphiLength = phiLength !== undefined ? phiLength : Math.PI * 2;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI;\n\n\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\tlet index = 0;\n\tconst grid = [];\n\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\tconst verticesRow = [];\n\n\t\tconst v = iy / heightSegments;\n\n\t\t// special case for the poles\n\n\t\tlet uOffset = 0;\n\n\t\tif ( iy == 0 && thetaStart == 0 ) {\n\n\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t} else if ( iy == heightSegments && thetaEnd == Math.PI ) {\n\n\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t}\n\n\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\tconst u = ix / widthSegments;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormal.copy( vertex ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\tverticesRow.push( index ++ );\n\n\t\t}\n\n\t\tgrid.push( verticesRow );\n\n\t}\n\n\t// indices\n\n\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nSphereBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nSphereBufferGeometry.prototype.constructor = SphereBufferGeometry;\n\n/**\n * @author Kaleb Murphy\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// RingGeometry\n\nfunction RingGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'RingGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nRingGeometry.prototype = Object.create( Geometry.prototype );\nRingGeometry.prototype.constructor = RingGeometry;\n\n// RingBufferGeometry\n\nfunction RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'RingBufferGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tinnerRadius = innerRadius || 0.5;\n\touterRadius = outerRadius || 1;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\tthetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8;\n\tphiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// some helper variables\n\n\tlet radius = innerRadius;\n\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\tconst vertex = new Vector3();\n\tconst uv = new Vector2();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// increase the radius for next row of vertices\n\n\t\tradius += radiusStep;\n\n\t}\n\n\t// indices\n\n\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\tconst a = segment;\n\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\tconst d = segment + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nRingBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nRingBufferGeometry.prototype.constructor = RingBufferGeometry;\n\n/**\n * @author zz85 / https://github.com/zz85\n * @author bhouston / http://clara.io\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// LatheGeometry\n\nfunction LatheGeometry( points, segments, phiStart, phiLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'LatheGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tthis.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) );\n\tthis.mergeVertices();\n\n}\n\nLatheGeometry.prototype = Object.create( Geometry.prototype );\nLatheGeometry.prototype.constructor = LatheGeometry;\n\n// LatheBufferGeometry\n\nfunction LatheBufferGeometry( points, segments, phiStart, phiLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'LatheBufferGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tsegments = Math.floor( segments ) || 12;\n\tphiStart = phiStart || 0;\n\tphiLength = phiLength || Math.PI * 2;\n\n\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\tphiLength = MathUtils.clamp( phiLength, 0, Math.PI * 2 );\n\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst inverseSegments = 1.0 / segments;\n\tconst vertex = new Vector3();\n\tconst uv = new Vector2();\n\n\t// generate vertices and uvs\n\n\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\tconst sin = Math.sin( phi );\n\t\tconst cos = Math.cos( phi );\n\n\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\tvertex.y = points[ j ].y;\n\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// uv\n\n\t\t\tuv.x = i / segments;\n\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\tconst base = j + i * points.length;\n\n\t\t\tconst a = base;\n\t\t\tconst b = base + points.length;\n\t\t\tconst c = base + points.length + 1;\n\t\t\tconst d = base + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// generate normals\n\n\tthis.computeVertexNormals();\n\n\t// if the geometry is closed, we need to average the normals along the seam.\n\t// because the corresponding vertices are identical (but still have different UVs).\n\n\tif ( phiLength === Math.PI * 2 ) {\n\n\t\tconst normals = this.attributes.normal.array;\n\t\tconst n1 = new Vector3();\n\t\tconst n2 = new Vector3();\n\t\tconst n = new Vector3();\n\n\t\t// this is the buffer offset for the last line of vertices\n\n\t\tconst base = segments * points.length * 3;\n\n\t\tfor ( let i = 0, j = 0; i < points.length; i ++, j += 3 ) {\n\n\t\t\t// select the normal of the vertex in the first line\n\n\t\t\tn1.x = normals[ j + 0 ];\n\t\t\tn1.y = normals[ j + 1 ];\n\t\t\tn1.z = normals[ j + 2 ];\n\n\t\t\t// select the normal of the vertex in the last line\n\n\t\t\tn2.x = normals[ base + j + 0 ];\n\t\t\tn2.y = normals[ base + j + 1 ];\n\t\t\tn2.z = normals[ base + j + 2 ];\n\n\t\t\t// average normals\n\n\t\t\tn.addVectors( n1, n2 ).normalize();\n\n\t\t\t// assign the new values to both normals\n\n\t\t\tnormals[ j + 0 ] = normals[ base + j + 0 ] = n.x;\n\t\t\tnormals[ j + 1 ] = normals[ base + j + 1 ] = n.y;\n\t\t\tnormals[ j + 2 ] = normals[ base + j + 2 ] = n.z;\n\n\t\t}\n\n\t}\n\n}\n\nLatheBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nLatheBufferGeometry.prototype.constructor = LatheBufferGeometry;\n\n/**\n * @author jonobr1 / http://jonobr1.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// ShapeGeometry\n\nfunction ShapeGeometry( shapes, curveSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ShapeGeometry';\n\n\tif ( typeof curveSegments === 'object' ) {\n\n\t\tconsole.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' );\n\n\t\tcurveSegments = curveSegments.curveSegments;\n\n\t}\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tthis.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) );\n\tthis.mergeVertices();\n\n}\n\nShapeGeometry.prototype = Object.create( Geometry.prototype );\nShapeGeometry.prototype.constructor = ShapeGeometry;\n\nShapeGeometry.prototype.toJSON = function () {\n\n\tconst data = Geometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n// ShapeBufferGeometry\n\nfunction ShapeBufferGeometry( shapes, curveSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ShapeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tcurveSegments = curveSegments || 12;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tlet groupStart = 0;\n\tlet groupCount = 0;\n\n\t// allow single and array values for \"shapes\" parameter\n\n\tif ( Array.isArray( shapes ) === false ) {\n\n\t\taddShape( shapes );\n\n\t} else {\n\n\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\taddShape( shapes[ i ] );\n\n\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\tgroupStart += groupCount;\n\t\t\tgroupCount = 0;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t// helper functions\n\n\tfunction addShape( shape ) {\n\n\t\tconst indexOffset = vertices.length / 3;\n\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\tlet shapeVertices = points.shape;\n\t\tconst shapeHoles = points.holes;\n\n\t\t// check direction of vertices\n\n\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t}\n\n\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t// join vertices of inner and outer paths to a single array\n\n\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t}\n\n\t\t// vertices, normals, uvs\n\n\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\tnormals.push( 0, 0, 1 );\n\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t}\n\n\t\t// incides\n\n\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\tindices.push( a, b, c );\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t}\n\n}\n\nShapeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry;\n\nShapeBufferGeometry.prototype.toJSON = function () {\n\n\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n//\n\nfunction toJSON$1( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction EdgesGeometry( geometry, thresholdAngle ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'EdgesGeometry';\n\n\tthis.parameters = {\n\t\tthresholdAngle: thresholdAngle\n\t};\n\n\tthresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1;\n\n\t// buffer\n\n\tconst vertices = [];\n\n\t// helper variables\n\n\tconst thresholdDot = Math.cos( MathUtils.DEG2RAD * thresholdAngle );\n\tconst edge = [ 0, 0 ], edges = {};\n\tlet edge1, edge2, key;\n\tconst keys = [ 'a', 'b', 'c' ];\n\n\t// prepare source geometry\n\n\tlet geometry2;\n\n\tif ( geometry.isBufferGeometry ) {\n\n\t\tgeometry2 = new Geometry();\n\t\tgeometry2.fromBufferGeometry( geometry );\n\n\t} else {\n\n\t\tgeometry2 = geometry.clone();\n\n\t}\n\n\tgeometry2.mergeVertices();\n\tgeometry2.computeFaceNormals();\n\n\tconst sourceVertices = geometry2.vertices;\n\tconst faces = geometry2.faces;\n\n\t// now create a data structure where each entry represents an edge with its adjoining faces\n\n\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\tconst face = faces[ i ];\n\n\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\tedge1 = face[ keys[ j ] ];\n\t\t\tedge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\tedge[ 0 ] = Math.min( edge1, edge2 );\n\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ], face1: i, face2: undefined };\n\n\t\t\t} else {\n\n\t\t\t\tedges[ key ].face2 = i;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// generate vertices\n\n\tfor ( key in edges ) {\n\n\t\tconst e = edges[ key ];\n\n\t\t// an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree.\n\n\t\tif ( e.face2 === undefined || faces[ e.face1 ].normal.dot( faces[ e.face2 ].normal ) <= thresholdDot ) {\n\n\t\t\tlet vertex = sourceVertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = sourceVertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nEdgesGeometry.prototype = Object.create( BufferGeometry.prototype );\nEdgesGeometry.prototype.constructor = EdgesGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// CylinderGeometry\n\nfunction CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CylinderGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCylinderGeometry.prototype = Object.create( Geometry.prototype );\nCylinderGeometry.prototype.constructor = CylinderGeometry;\n\n// CylinderBufferGeometry\n\nfunction CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CylinderBufferGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tconst scope = this;\n\n\tradiusTop = radiusTop !== undefined ? radiusTop : 1;\n\tradiusBottom = radiusBottom !== undefined ? radiusBottom : 1;\n\theight = height || 1;\n\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\theightSegments = Math.floor( heightSegments ) || 1;\n\n\topenEnded = openEnded !== undefined ? openEnded : false;\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0.0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tlet index = 0;\n\tconst indexArray = [];\n\tconst halfHeight = height / 2;\n\tlet groupStart = 0;\n\n\t// generate geometry\n\n\tgenerateTorso();\n\n\tif ( openEnded === false ) {\n\n\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\tfunction generateTorso() {\n\n\t\tconst normal = new Vector3();\n\t\tconst vertex = new Vector3();\n\n\t\tlet groupCount = 0;\n\n\t\t// this will be used to calculate the normal\n\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\tconst indexRow = [];\n\n\t\t\tconst v = y / heightSegments;\n\n\t\t\t// calculate the radius of the current row\n\n\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\t// now save vertices of the row in our index array\n\n\t\t\tindexArray.push( indexRow );\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t// update group counter\n\n\t\t\t\tgroupCount += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n\tfunction generateCap( top ) {\n\n\t\tlet centerIndexStart, centerIndexEnd;\n\n\t\tconst uv = new Vector2();\n\t\tconst vertex = new Vector3();\n\n\t\tlet groupCount = 0;\n\n\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\tconst sign = ( top === true ) ? 1 : - 1;\n\n\t\t// save the index of the first center vertex\n\t\tcenterIndexStart = index;\n\n\t\t// first we generate the center vertex data of the cap.\n\t\t// because the geometry needs one set of uvs per face,\n\t\t// we must generate a center vertex per face/segment\n\n\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// save the index of the last center vertex\n\n\t\tcenterIndexEnd = index;\n\n\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\tconst u = x / radialSegments;\n\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * sinTheta;\n\t\t\tvertex.y = halfHeight * sign;\n\t\t\tvertex.z = radius * cosTheta;\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tconst c = centerIndexStart + x;\n\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\tif ( top === true ) {\n\n\t\t\t\t// face top\n\n\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t} else {\n\n\t\t\t\t// face bottom\n\n\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t}\n\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n}\n\nCylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry;\n\n/**\n * @author abelnation / http://github.com/abelnation\n */\n\n// ConeGeometry\n\nfunction ConeGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeGeometry.prototype = Object.create( CylinderGeometry.prototype );\nConeGeometry.prototype.constructor = ConeGeometry;\n\n// ConeBufferGeometry\n\nfunction ConeBufferGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderBufferGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeBufferGeometry.prototype = Object.create( CylinderBufferGeometry.prototype );\nConeBufferGeometry.prototype.constructor = ConeBufferGeometry;\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n * @author Mugen87 / https://github.com/Mugen87\n * @author hughes\n */\n\n// CircleGeometry\n\nfunction CircleGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CircleGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCircleGeometry.prototype = Object.create( Geometry.prototype );\nCircleGeometry.prototype.constructor = CircleGeometry;\n\n// CircleBufferGeometry\n\nfunction CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CircleBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\tsegments = segments !== undefined ? Math.max( 3, segments ) : 8;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst vertex = new Vector3();\n\tconst uv = new Vector2();\n\n\t// center point\n\n\tvertices.push( 0, 0, 0 );\n\tnormals.push( 0, 0, 1 );\n\tuvs.push( 0.5, 0.5 );\n\n\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\tconst segment = thetaStart + s / segments * thetaLength;\n\n\t\t// vertex\n\n\t\tvertex.x = radius * Math.cos( segment );\n\t\tvertex.y = radius * Math.sin( segment );\n\n\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t// normal\n\n\t\tnormals.push( 0, 0, 1 );\n\n\t\t// uvs\n\n\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\tuvs.push( uv.x, uv.y );\n\n\t}\n\n\t// indices\n\n\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\tindices.push( i, i + 1, 0 );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nCircleBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCircleBufferGeometry.prototype.constructor = CircleBufferGeometry;\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tWireframeGeometry: WireframeGeometry,\n\tParametricGeometry: ParametricGeometry,\n\tParametricBufferGeometry: ParametricBufferGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTetrahedronBufferGeometry: TetrahedronBufferGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tOctahedronBufferGeometry: OctahedronBufferGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tIcosahedronBufferGeometry: IcosahedronBufferGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tDodecahedronBufferGeometry: DodecahedronBufferGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tPolyhedronBufferGeometry: PolyhedronBufferGeometry,\n\tTubeGeometry: TubeGeometry,\n\tTubeBufferGeometry: TubeBufferGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTorusKnotBufferGeometry: TorusKnotBufferGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusBufferGeometry: TorusBufferGeometry,\n\tTextGeometry: TextGeometry,\n\tTextBufferGeometry: TextBufferGeometry,\n\tSphereGeometry: SphereGeometry,\n\tSphereBufferGeometry: SphereBufferGeometry,\n\tRingGeometry: RingGeometry,\n\tRingBufferGeometry: RingBufferGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPlaneBufferGeometry: PlaneBufferGeometry,\n\tLatheGeometry: LatheGeometry,\n\tLatheBufferGeometry: LatheBufferGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tShapeBufferGeometry: ShapeBufferGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tExtrudeBufferGeometry: ExtrudeBufferGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tConeGeometry: ConeGeometry,\n\tConeBufferGeometry: ConeBufferGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tCylinderBufferGeometry: CylinderBufferGeometry,\n\tCircleGeometry: CircleGeometry,\n\tCircleBufferGeometry: CircleBufferGeometry,\n\tBoxGeometry: BoxGeometry,\n\tBoxBufferGeometry: BoxBufferGeometry\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * parameters = {\n * color: \n * }\n */\n\nfunction ShadowMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShadowMaterial';\n\n\tthis.color = new Color( 0x000000 );\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nShadowMaterial.prototype = Object.create( Material.prototype );\nShadowMaterial.prototype.constructor = ShadowMaterial;\n\nShadowMaterial.prototype.isShadowMaterial = true;\n\nShadowMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction RawShaderMaterial( parameters ) {\n\n\tShaderMaterial.call( this, parameters );\n\n\tthis.type = 'RawShaderMaterial';\n\n}\n\nRawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype );\nRawShaderMaterial.prototype.constructor = RawShaderMaterial;\n\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * color: ,\n * roughness: ,\n * metalness: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * roughnessMap: new THREE.Texture( ),\n *\n * metalnessMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * envMapIntensity: \n *\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshStandardMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.type = 'MeshStandardMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.roughness = 1.0;\n\tthis.metalness = 0.0;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.roughnessMap = null;\n\n\tthis.metalnessMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.envMapIntensity = 1.0;\n\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.vertexTangents = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshStandardMaterial.prototype = Object.create( Material.prototype );\nMeshStandardMaterial.prototype.constructor = MeshStandardMaterial;\n\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\nMeshStandardMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.color.copy( source.color );\n\tthis.roughness = source.roughness;\n\tthis.metalness = source.metalness;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.roughnessMap = source.roughnessMap;\n\n\tthis.metalnessMap = source.metalnessMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.envMapIntensity = source.envMapIntensity;\n\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.vertexTangents = source.vertexTangents;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * clearcoat: ,\n * clearcoatMap: new THREE.Texture( ),\n * clearcoatRoughness: ,\n * clearcoatRoughnessMap: new THREE.Texture( ),\n * clearcoatNormalScale: ,\n * clearcoatNormalMap: new THREE.Texture( ),\n *\n * reflectivity: ,\n *\n * sheen: ,\n *\n * transparency: \n * }\n */\n\nfunction MeshPhysicalMaterial( parameters ) {\n\n\tMeshStandardMaterial.call( this );\n\n\tthis.defines = {\n\n\t\t'STANDARD': '',\n\t\t'PHYSICAL': ''\n\n\t};\n\n\tthis.type = 'MeshPhysicalMaterial';\n\n\tthis.clearcoat = 0.0;\n\tthis.clearcoatMap = null;\n\tthis.clearcoatRoughness = 0.0;\n\tthis.clearcoatRoughnessMap = null;\n\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\tthis.clearcoatNormalMap = null;\n\n\tthis.reflectivity = 0.5; // maps to F0 = 0.04\n\n\tthis.sheen = null; // null will disable sheen bsdf\n\n\tthis.transparency = 0.0;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\nMeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial;\n\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\nMeshPhysicalMaterial.prototype.copy = function ( source ) {\n\n\tMeshStandardMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = {\n\n\t\t'STANDARD': '',\n\t\t'PHYSICAL': ''\n\n\t};\n\n\tthis.clearcoat = source.clearcoat;\n\tthis.clearcoatMap = source.clearcoatMap;\n\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\tthis.reflectivity = source.reflectivity;\n\n\tif ( source.sheen ) {\n\n\t\tthis.sheen = ( this.sheen || new Color() ).copy( source.sheen );\n\n\t} else {\n\n\t\tthis.sheen = null;\n\n\t}\n\n\tthis.transparency = source.transparency;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * specular: ,\n * shininess: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.MultiplyOperation,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshPhongMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshPhongMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.specular = new Color( 0x111111 );\n\tthis.shininess = 30;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhongMaterial.prototype = Object.create( Material.prototype );\nMeshPhongMaterial.prototype.constructor = MeshPhongMaterial;\n\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\nMeshPhongMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.specular.copy( source.specular );\n\tthis.shininess = source.shininess;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author takahirox / http://github.com/takahirox\n *\n * parameters = {\n * color: ,\n *\n * map: new THREE.Texture( ),\n * gradientMap: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * alphaMap: new THREE.Texture( ),\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshToonMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'TOON': '' };\n\n\tthis.type = 'MeshToonMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\tthis.gradientMap = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.alphaMap = null;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshToonMaterial.prototype = Object.create( Material.prototype );\nMeshToonMaterial.prototype.constructor = MeshToonMaterial;\n\nMeshToonMaterial.prototype.isMeshToonMaterial = true;\n\nMeshToonMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\tthis.gradientMap = source.gradientMap;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * opacity: ,\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshNormalMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshNormalMaterial';\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshNormalMaterial.prototype = Object.create( Material.prototype );\nMeshNormalMaterial.prototype.constructor = MeshNormalMaterial;\n\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\nMeshNormalMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshLambertMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshLambertMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshLambertMaterial.prototype = Object.create( Material.prototype );\nMeshLambertMaterial.prototype.constructor = MeshLambertMaterial;\n\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\nMeshLambertMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * matcap: new THREE.Texture( ),\n *\n * map: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * alphaMap: new THREE.Texture( ),\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshMatcapMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.type = 'MeshMatcapMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.matcap = null;\n\n\tthis.map = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.alphaMap = null;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshMatcapMaterial.prototype = Object.create( Material.prototype );\nMeshMatcapMaterial.prototype.constructor = MeshMatcapMaterial;\n\nMeshMatcapMaterial.prototype.isMeshMatcapMaterial = true;\n\nMeshMatcapMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.color.copy( source.color );\n\n\tthis.matcap = source.matcap;\n\n\tthis.map = source.map;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n *\n * scale: ,\n * dashSize: ,\n * gapSize: \n * }\n */\n\nfunction LineDashedMaterial( parameters ) {\n\n\tLineBasicMaterial.call( this );\n\n\tthis.type = 'LineDashedMaterial';\n\n\tthis.scale = 1;\n\tthis.dashSize = 3;\n\tthis.gapSize = 1;\n\n\tthis.setValues( parameters );\n\n}\n\nLineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype );\nLineDashedMaterial.prototype.constructor = LineDashedMaterial;\n\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\nLineDashedMaterial.prototype.copy = function ( source ) {\n\n\tLineBasicMaterial.prototype.copy.call( this, source );\n\n\tthis.scale = source.scale;\n\tthis.dashSize = source.dashSize;\n\tthis.gapSize = source.gapSize;\n\n\treturn this;\n\n};\n\nvar Materials = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tShadowMaterial: ShadowMaterial,\n\tSpriteMaterial: SpriteMaterial,\n\tRawShaderMaterial: RawShaderMaterial,\n\tShaderMaterial: ShaderMaterial,\n\tPointsMaterial: PointsMaterial,\n\tMeshPhysicalMaterial: MeshPhysicalMaterial,\n\tMeshStandardMaterial: MeshStandardMaterial,\n\tMeshPhongMaterial: MeshPhongMaterial,\n\tMeshToonMaterial: MeshToonMaterial,\n\tMeshNormalMaterial: MeshNormalMaterial,\n\tMeshLambertMaterial: MeshLambertMaterial,\n\tMeshDepthMaterial: MeshDepthMaterial,\n\tMeshDistanceMaterial: MeshDistanceMaterial,\n\tMeshBasicMaterial: MeshBasicMaterial,\n\tMeshMatcapMaterial: MeshMatcapMaterial,\n\tLineDashedMaterial: LineDashedMaterial,\n\tLineBasicMaterial: LineBasicMaterial,\n\tMaterial: Material\n});\n\n/**\n * @author tschw\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nconst AnimationUtils = {\n\n\t// same as Array.prototype.slice, but also works on typed arrays\n\tarraySlice: function ( array, from, to ) {\n\n\t\tif ( AnimationUtils.isTypedArray( array ) ) {\n\n\t\t\t// in ios9 array.subarray(from, undefined) will return empty array\n\t\t\t// but array.subarray(from) or array.subarray(from, len) is correct\n\t\t\treturn new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );\n\n\t\t}\n\n\t\treturn array.slice( from, to );\n\n\t},\n\n\t// converts an array to a specific type\n\tconvertArray: function ( array, type, forceClone ) {\n\n\t\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t\t! forceClone && array.constructor === type ) return array;\n\n\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\t\treturn new type( array ); // create typed array\n\n\t\t}\n\n\t\treturn Array.prototype.slice.call( array ); // create Array\n\n\t},\n\n\tisTypedArray: function ( object ) {\n\n\t\treturn ArrayBuffer.isView( object ) &&\n\t\t\t! ( object instanceof DataView );\n\n\t},\n\n\t// returns an array by which times and values can be sorted\n\tgetKeyframeOrder: function ( times ) {\n\n\t\tfunction compareTime( i, j ) {\n\n\t\t\treturn times[ i ] - times[ j ];\n\n\t\t}\n\n\t\tconst n = times.length;\n\t\tconst result = new Array( n );\n\t\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\t\tresult.sort( compareTime );\n\n\t\treturn result;\n\n\t},\n\n\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\tsortedArray: function ( values, stride, order ) {\n\n\t\tconst nValues = values.length;\n\t\tconst result = new values.constructor( nValues );\n\n\t\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\tconst srcOffset = order[ i ] * stride;\n\n\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// function for parsing AOS keyframe formats\n\tflattenJSON: function ( jsonKeys, times, values, valuePropertyName ) {\n\n\t\tlet i = 1, key = jsonKeys[ 0 ];\n\n\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t}\n\n\t\tif ( key === undefined ) return; // no data\n\n\t\tlet value = key[ valuePropertyName ];\n\t\tif ( value === undefined ) return; // no data\n\n\t\tif ( Array.isArray( value ) ) {\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else if ( value.toArray !== undefined ) {\n\n\t\t\t// ...assume THREE.Math-ish\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else {\n\n\t\t\t// otherwise push as-is\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t}\n\n\t},\n\n\tsubclip: function ( sourceClip, name, startFrame, endFrame, fps ) {\n\n\t\tfps = fps || 30;\n\n\t\tconst clip = sourceClip.clone();\n\n\t\tclip.name = name;\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tconst track = clip.tracks[ i ];\n\t\t\tconst valueSize = track.getValueSize();\n\n\t\t\tconst times = [];\n\t\t\tconst values = [];\n\n\t\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( times.length === 0 ) continue;\n\n\t\t\ttrack.times = AnimationUtils.convertArray( times, track.times.constructor );\n\t\t\ttrack.values = AnimationUtils.convertArray( values, track.values.constructor );\n\n\t\t\ttracks.push( track );\n\n\t\t}\n\n\t\tclip.tracks = tracks;\n\n\t\t// find minimum .times value across all tracks in the trimmed clip\n\n\t\tlet minStartTime = Infinity;\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// shift all tracks such that clip begins at t=0\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t\t}\n\n\t\tclip.resetDuration();\n\n\t\treturn clip;\n\n\t},\n\n\tmakeClipAdditive: function ( targetClip, referenceFrame, referenceClip, fps ) {\n\n\t\tif ( referenceFrame === undefined ) referenceFrame = 0;\n\t\tif ( referenceClip === undefined ) referenceClip = targetClip;\n\t\tif ( fps === undefined || fps <= 0 ) fps = 30;\n\n\t\tconst numTracks = targetClip.tracks.length;\n\t\tconst referenceTime = referenceFrame / fps;\n\n\t\t// Make each track's values relative to the values at the reference frame\n\t\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t\t// Skip this track if it's non-numeric\n\t\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t\t} );\n\n\t\t\tif ( targetTrack === undefined ) continue;\n\n\t\t\tconst valueSize = referenceTrack.getValueSize();\n\t\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\t\tlet referenceValue;\n\n\t\t\t// Find the value to subtract out of the track\n\t\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, 0, referenceTrack.valueSize );\n\n\t\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\t\tconst startIndex = lastIndex * valueSize;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex );\n\n\t\t\t} else {\n\n\t\t\t\t// Interpolate to the reference value\n\t\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\t\treferenceValue = interpolant.resultBuffer;\n\n\t\t\t}\n\n\t\t\t// Conjugate the quaternion\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\tconst referenceQuat = new Quaternion(\n\t\t\t\t\treferenceValue[ 0 ],\n\t\t\t\t\treferenceValue[ 1 ],\n\t\t\t\t\treferenceValue[ 2 ],\n\t\t\t\t\treferenceValue[ 3 ]\n\t\t\t\t).normalize().conjugate();\n\t\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t\t}\n\n\t\t\t// Subtract the reference value from all of the track values\n\n\t\t\tconst numTimes = targetTrack.times.length;\n\t\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\t\tconst valueStart = j * valueSize;\n\n\t\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart,\n\t\t\t\t\t\treferenceValue,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\t\treturn targetClip;\n\n\t}\n\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n * @author tschw\n */\n\nfunction Interpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tthis.parameterPositions = parameterPositions;\n\tthis._cachedIndex = 0;\n\n\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\tthis.sampleValues = sampleValues;\n\tthis.valueSize = sampleSize;\n\n}\n\nObject.assign( Interpolant.prototype, {\n\n\tevaluate: function ( t ) {\n\n\t\tlet pp = this.parameterPositions,\n\t\t\ti1 = this._cachedIndex,\n\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tlet right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t, t0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tconst t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tconst mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.afterEnd_( i1 - 1, t0, t );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t},\n\n\tsettings: null, // optional, subclass-specific settings structure\n\t// Note: The indirection allows central control of many interpolants.\n\n\t// --- Protected interface\n\n\tDefaultSettings_: {},\n\n\tgetSettings_: function () {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t},\n\n\tcopySampleValue_: function ( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// Template methods for derived classes:\n\n\tinterpolate_: function ( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t},\n\n\tintervalChanged_: function ( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n} );\n\n// DECLARE ALIAS AFTER assign prototype\nObject.assign( Interpolant.prototype, {\n\n\t//( 0, t, t0 ), returns this.resultBuffer\n\tbeforeStart_: Interpolant.prototype.copySampleValue_,\n\n\t//( N-1, tN-1, t ), returns this.resultBuffer\n\tafterEnd_: Interpolant.prototype.copySampleValue_,\n\n} );\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n *\n * @author tschw\n */\n\nfunction CubicInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\tthis._weightPrev = - 0;\n\tthis._offsetPrev = - 0;\n\tthis._weightNext = - 0;\n\tthis._offsetNext = - 0;\n\n}\n\nCubicInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: CubicInterpolant,\n\n\tDefaultSettings_: {\n\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\n\t},\n\n\tintervalChanged_: function ( i1, t0, t1 ) {\n\n\t\tlet pp = this.parameterPositions,\n\t\t\tiPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t},\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tconst s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tconst s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tconst sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n * @author tschw\n */\n\nfunction LinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: LinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceeding\n * the parameter.\n *\n * @author tschw\n */\n\nfunction DiscreteInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nDiscreteInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: DiscreteInterpolant,\n\n\tinterpolate_: function ( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n} );\n\n/**\n *\n * A timed sequence of keyframes for a specific property.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction KeyframeTrack( name, times, values, interpolation ) {\n\n\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\tthis.name = name;\n\n\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\n\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\n\n\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n}\n\n// Static methods\n\nObject.assign( KeyframeTrack, {\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\ttoJSON: function ( track ) {\n\n\t\tconst trackType = track.constructor;\n\n\t\tlet json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== undefined ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': AnimationUtils.convertArray( track.times, Array ),\n\t\t\t\t'values': AnimationUtils.convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tconst interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n} );\n\nObject.assign( KeyframeTrack.prototype, {\n\n\tconstructor: KeyframeTrack,\n\n\tTimeBufferType: Float32Array,\n\n\tValueBufferType: Float32Array,\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodDiscrete: function ( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: function ( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tsetInterpolation: function ( interpolation ) {\n\n\t\tlet factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tconst message = \"unsupported interpolation for \" +\n\t\t\t\tthis.ValueTypeName + \" keyframe track named \" + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t},\n\n\tgetInterpolation: function () {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t},\n\n\tgetValueSize: function () {\n\n\t\treturn this.values.length / this.times.length;\n\n\t},\n\n\t// move all keyframes either forwards or backwards in time\n\tshift: function ( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale: function ( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim: function ( startTime, endTime ) {\n\n\t\tconst times = this.times,\n\t\t\tnKeys = times.length;\n\n\t\tlet from = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) {\n\n\t\t\t\tto = Math.max( to, 1 );\n\t\t\t\tfrom = to - 1;\n\n\t\t\t}\n\n\t\t\tconst stride = this.getValueSize();\n\t\t\tthis.times = AnimationUtils.arraySlice( times, from, to );\n\t\t\tthis.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate: function () {\n\n\t\tlet valid = true;\n\n\t\tconst valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tconst times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tlet prevTime = null;\n\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tconst currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( AnimationUtils.isTypedArray( values ) ) {\n\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tconst value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize: function () {\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tconst times = AnimationUtils.arraySlice( this.times ),\n\t\t\tvalues = AnimationUtils.arraySlice( this.values ),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\tlastIndex = times.length - 1;\n\n\t\tlet writeIndex = 1;\n\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tlet keep = false;\n\n\t\t\tconst time = times[ i ];\n\t\t\tconst timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tconst offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tconst value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tconst readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = AnimationUtils.arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\tconst times = AnimationUtils.arraySlice( this.times, 0 );\n\t\tconst values = AnimationUtils.arraySlice( this.values, 0 );\n\n\t\tconst TypedKeyframeTrack = this.constructor;\n\t\tconst track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n} );\n\n/**\n *\n * A Track of Boolean keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction BooleanKeyframeTrack( name, times, values ) {\n\n\tKeyframeTrack.call( this, name, times, values );\n\n}\n\nBooleanKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: BooleanKeyframeTrack,\n\n\tValueTypeName: 'bool',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\tInterpolantFactoryMethodSmooth: undefined\n\n\t// Note: Actually this track could have a optimized / compressed\n\t// representation of a single value and a custom interpolant that\n\t// computes \"firstValue ^ isOdd( index )\".\n\n} );\n\n/**\n *\n * A Track of keyframe values that represent color.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction ColorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nColorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: ColorKeyframeTrack,\n\n\tValueTypeName: 'color'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n\t// Note: Very basic implementation and nothing special yet.\n\t// However, this is the place for color space parameterization.\n\n} );\n\n/**\n *\n * A Track of numeric keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction NumberKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nNumberKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: NumberKeyframeTrack,\n\n\tValueTypeName: 'number'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n/**\n * Spherical linear unit quaternion interpolant.\n *\n * @author tschw\n */\n\nfunction QuaternionLinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nQuaternionLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: QuaternionLinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tlet offset = i1 * stride;\n\n\t\tfor ( let end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n *\n * A Track of quaternion keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction QuaternionKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nQuaternionKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: QuaternionKeyframeTrack,\n\n\tValueTypeName: 'quaternion',\n\n\t// ValueBufferType is inherited\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: undefined // not yet implemented\n\n} );\n\n/**\n *\n * A Track that interpolates Strings\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction StringKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nStringKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: StringKeyframeTrack,\n\n\tValueTypeName: 'string',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\n\tInterpolantFactoryMethodSmooth: undefined\n\n} );\n\n/**\n *\n * A Track of vectored keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction VectorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nVectorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: VectorKeyframeTrack,\n\n\tValueTypeName: 'vector'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n/**\n *\n * Reusable set of Tracks that represent an animation.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nfunction AnimationClip( name, duration, tracks, blendMode ) {\n\n\tthis.name = name;\n\tthis.tracks = tracks;\n\tthis.duration = ( duration !== undefined ) ? duration : - 1;\n\tthis.blendMode = ( blendMode !== undefined ) ? blendMode : NormalAnimationBlendMode;\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\t// this means it should figure out its duration by scanning the tracks\n\tif ( this.duration < 0 ) {\n\n\t\tthis.resetDuration();\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tconst trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tconst times = [], values = [];\n\n\t\tAnimationUtils.flattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nObject.assign( AnimationClip, {\n\n\tparse: function ( json ) {\n\n\t\tconst tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( json.name, json.duration, tracks, json.blendMode );\n\n\t},\n\n\ttoJSON: function ( clip ) {\n\n\t\tconst tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tconst json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid,\n\t\t\t'blendMode': clip.blendMode\n\n\t\t};\n\n\t\tfor ( let i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t},\n\n\tCreateFromMorphTargetSequence: function ( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tlet times = [];\n\t\t\tlet values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tconst order = AnimationUtils.getKeyframeOrder( times );\n\t\t\ttimes = AnimationUtils.sortedArray( times, 1, order );\n\t\t\tvalues = AnimationUtils.sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( name, - 1, tracks );\n\n\t},\n\n\tfindByName: function ( objectOrClipArray, name ) {\n\n\t\tlet clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tconst o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\tCreateClipsFromMorphTargetSequences: function ( morphTargets, fps, noLoop ) {\n\n\t\tconst animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\tconst parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tconst name = parts[ 1 ];\n\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\n\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst clips = [];\n\n\t\tfor ( const name in animationToMorphTargets ) {\n\n\t\t\tclips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t},\n\n\t// parse the animation.hierarchy format\n\tparseAnimation: function ( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tAnimationUtils.flattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tconst tracks = [];\n\n\t\tconst clipName = animation.name || 'default';\n\t\tconst fps = animation.fps || 30;\n\t\tconst blendMode = animation.blendMode;\n\n\t\t// automatic length determination in AnimationClip.\n\t\tlet duration = animation.length || - 1;\n\n\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tconst animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tconst morphTargetNames = {};\n\n\t\t\t\tlet k;\n\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( const morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tconst animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * ( fps || 1.0 );\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tconst boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst clip = new AnimationClip( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n} );\n\nObject.assign( AnimationClip.prototype, {\n\n\tresetDuration: function () {\n\n\t\tconst tracks = this.tracks;\n\t\tlet duration = 0;\n\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tconst track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t},\n\n\ttrim: function () {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tvalidate: function () {\n\n\t\tlet valid = true;\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\toptimize: function () {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new AnimationClip( this.name, this.duration, tracks, this.blendMode );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LoadingManager( onLoad, onProgress, onError ) {\n\n\tconst scope = this;\n\n\tlet isLoading = false;\n\tlet itemsLoaded = 0;\n\tlet itemsTotal = 0;\n\tlet urlModifier = undefined;\n\tconst handlers = [];\n\n\t// Refer to #5689 for the reason why we don't set .onStart\n\t// in the constructor\n\n\tthis.onStart = undefined;\n\tthis.onLoad = onLoad;\n\tthis.onProgress = onProgress;\n\tthis.onError = onError;\n\n\tthis.itemStart = function ( url ) {\n\n\t\titemsTotal ++;\n\n\t\tif ( isLoading === false ) {\n\n\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tisLoading = true;\n\n\t};\n\n\tthis.itemEnd = function ( url ) {\n\n\t\titemsLoaded ++;\n\n\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t}\n\n\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\tisLoading = false;\n\n\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\tscope.onLoad();\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.itemError = function ( url ) {\n\n\t\tif ( scope.onError !== undefined ) {\n\n\t\t\tscope.onError( url );\n\n\t\t}\n\n\t};\n\n\tthis.resolveURL = function ( url ) {\n\n\t\tif ( urlModifier ) {\n\n\t\t\treturn urlModifier( url );\n\n\t\t}\n\n\t\treturn url;\n\n\t};\n\n\tthis.setURLModifier = function ( transform ) {\n\n\t\turlModifier = transform;\n\n\t\treturn this;\n\n\t};\n\n\tthis.addHandler = function ( regex, loader ) {\n\n\t\thandlers.push( regex, loader );\n\n\t\treturn this;\n\n\t};\n\n\tthis.removeHandler = function ( regex ) {\n\n\t\tconst index = handlers.indexOf( regex );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\thandlers.splice( index, 2 );\n\n\t\t}\n\n\t\treturn this;\n\n\t};\n\n\tthis.getHandler = function ( file ) {\n\n\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\tconst regex = handlers[ i ];\n\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\treturn loader;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t};\n\n}\n\nconst DefaultLoadingManager = new LoadingManager();\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Loader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\tthis.crossOrigin = 'anonymous';\n\tthis.path = '';\n\tthis.resourcePath = '';\n\tthis.requestHeader = {};\n\n}\n\nObject.assign( Loader.prototype, {\n\n\tload: function ( /* url, onLoad, onProgress, onError */ ) {},\n\n\tloadAsync: function ( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t},\n\n\tparse: function ( /* data */ ) {},\n\n\tsetCrossOrigin: function ( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t},\n\n\tsetResourcePath: function ( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t},\n\n\tsetRequestHeader: function ( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst loading = {};\n\nfunction FileLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nFileLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: FileLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Check for data: URI\n\t\tconst dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n\t\tconst dataUriRegexResult = url.match( dataUriRegex );\n\t\tlet request;\n\n\t\t// Safari can not handle Data URIs through XMLHttpRequest so process manually\n\t\tif ( dataUriRegexResult ) {\n\n\t\t\tconst mimeType = dataUriRegexResult[ 1 ];\n\t\t\tconst isBase64 = !! dataUriRegexResult[ 2 ];\n\n\t\t\tlet data = dataUriRegexResult[ 3 ];\n\t\t\tdata = decodeURIComponent( data );\n\n\t\t\tif ( isBase64 ) data = atob( data );\n\n\t\t\ttry {\n\n\t\t\t\tlet response;\n\t\t\t\tconst responseType = ( this.responseType || '' ).toLowerCase();\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\tconst view = new Uint8Array( data.length );\n\n\t\t\t\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\t\t\t\tview[ i ] = data.charCodeAt( i );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( responseType === 'blob' ) {\n\n\t\t\t\t\t\t\tresponse = new Blob( [ view.buffer ], { type: mimeType } );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tresponse = view.buffer;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\tresponse = parser.parseFromString( data, mimeType );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\tresponse = JSON.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault: // 'text' or other\n\n\t\t\t\t\t\tresponse = data;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onError ) onError( error );\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Initialise array for duplicate requests\n\n\t\t\tloading[ url ] = [];\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\trequest = new XMLHttpRequest();\n\n\t\t\trequest.open( 'GET', url, true );\n\n\t\t\trequest.addEventListener( 'load', function ( event ) {\n\n\t\t\t\tconst response = this.response;\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tif ( this.status === 200 || this.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( this.status === 0 ) console.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\t\tCache.add( url, response );\n\n\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( response );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'progress', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'error', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'abort', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\tif ( this.responseType !== undefined ) request.responseType = this.responseType;\n\t\t\tif ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;\n\n\t\t\tif ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' );\n\n\t\t\tfor ( const header in this.requestHeader ) {\n\n\t\t\t\trequest.setRequestHeader( header, this.requestHeader[ header ] );\n\n\t\t\t}\n\n\t\t\trequest.send( null );\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\treturn request;\n\n\t},\n\n\tsetResponseType: function ( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t},\n\n\tsetMimeType: function ( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io/\n */\n\nfunction AnimationLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nAnimationLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: AnimationLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nfunction CompressedTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nCompressedTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: CompressedTextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\t\ttexture.image = images;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 )\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tfor ( let i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( let i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * @author Nikos M. / https://github.com/foo123/\n *\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nfunction DataTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nDataTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: DataTextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst texture = new DataTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tconst texData = scope.parse( buffer );\n\n\t\t\tif ( ! texData ) return;\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ImageLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nImageLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ImageLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.substr( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction CubeTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nCubeTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: CubeTextureLoader,\n\n\tload: function ( urls, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new CubeTexture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction TextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: TextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new Texture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\n\t\t\t// JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB.\n\t\t\tconst isJPEG = url.search( /\\.jpe?g($|\\?)/i ) > 0 || url.search( /^data\\:image\\/jpeg/ ) === 0;\n\n\t\t\ttexture.format = isJPEG ? RGBFormat : RGBAFormat;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Extensible curve object\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\n/**************************************************************\n *\tAbstract Curve base class\n **************************************************************/\n\nfunction Curve() {\n\n\tthis.type = 'Curve';\n\n\tthis.arcLengthDivisions = 200;\n\n}\n\nObject.assign( Curve.prototype, {\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint: function ( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t},\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt: function ( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t},\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get total curve arc length\n\n\tgetLength: function () {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t},\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = this.arcLengthDivisions;\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t},\n\n\tupdateArcLengths: function () {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t},\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping: function ( u, distance ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0, il = arcLengths.length;\n\n\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tlet low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t},\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent: function ( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t},\n\n\tgetTangentAt: function ( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t},\n\n\tcomputeFrenetFrames: function ( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\n\t\t\ttangents[ i ].normalize();\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\tconst theta = Math.acos( MathUtils.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\tlet theta = Math.acos( MathUtils.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'EllipseCurve';\n\n\tthis.aX = aX || 0;\n\tthis.aY = aY || 0;\n\n\tthis.xRadius = xRadius || 1;\n\tthis.yRadius = yRadius || 1;\n\n\tthis.aStartAngle = aStartAngle || 0;\n\tthis.aEndAngle = aEndAngle || 2 * Math.PI;\n\n\tthis.aClockwise = aClockwise || false;\n\n\tthis.aRotation = aRotation || 0;\n\n}\n\nEllipseCurve.prototype = Object.create( Curve.prototype );\nEllipseCurve.prototype.constructor = EllipseCurve;\n\nEllipseCurve.prototype.isEllipseCurve = true;\n\nEllipseCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst twoPi = Math.PI * 2;\n\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t// ensures that deltaAngle is 0 .. 2 PI\n\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\tif ( samePoints ) {\n\n\t\t\tdeltaAngle = 0;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = twoPi;\n\n\t\t}\n\n\t}\n\n\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\tdeltaAngle = - twoPi;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t}\n\n\t}\n\n\tconst angle = this.aStartAngle + t * deltaAngle;\n\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\tif ( this.aRotation !== 0 ) {\n\n\t\tconst cos = Math.cos( this.aRotation );\n\t\tconst sin = Math.sin( this.aRotation );\n\n\t\tconst tx = x - this.aX;\n\t\tconst ty = y - this.aY;\n\n\t\t// Rotate the point about the center of the ellipse.\n\t\tx = tx * cos - ty * sin + this.aX;\n\t\ty = tx * sin + ty * cos + this.aY;\n\n\t}\n\n\treturn point.set( x, y );\n\n};\n\nEllipseCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.aX = source.aX;\n\tthis.aY = source.aY;\n\n\tthis.xRadius = source.xRadius;\n\tthis.yRadius = source.yRadius;\n\n\tthis.aStartAngle = source.aStartAngle;\n\tthis.aEndAngle = source.aEndAngle;\n\n\tthis.aClockwise = source.aClockwise;\n\n\tthis.aRotation = source.aRotation;\n\n\treturn this;\n\n};\n\n\nEllipseCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.aX = this.aX;\n\tdata.aY = this.aY;\n\n\tdata.xRadius = this.xRadius;\n\tdata.yRadius = this.yRadius;\n\n\tdata.aStartAngle = this.aStartAngle;\n\tdata.aEndAngle = this.aEndAngle;\n\n\tdata.aClockwise = this.aClockwise;\n\n\tdata.aRotation = this.aRotation;\n\n\treturn data;\n\n};\n\nEllipseCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.aX = json.aX;\n\tthis.aY = json.aY;\n\n\tthis.xRadius = json.xRadius;\n\tthis.yRadius = json.yRadius;\n\n\tthis.aStartAngle = json.aStartAngle;\n\tthis.aEndAngle = json.aEndAngle;\n\n\tthis.aClockwise = json.aClockwise;\n\n\tthis.aRotation = json.aRotation;\n\n\treturn this;\n\n};\n\nfunction ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\tEllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\tthis.type = 'ArcCurve';\n\n}\n\nArcCurve.prototype = Object.create( EllipseCurve.prototype );\nArcCurve.prototype.constructor = ArcCurve;\n\nArcCurve.prototype.isArcCurve = true;\n\n/**\n * @author zz85 https://github.com/zz85\n *\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nconst tmp = new Vector3();\nconst px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly();\n\nfunction CatmullRomCurve3( points, closed, curveType, tension ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CatmullRomCurve3';\n\n\tthis.points = points || [];\n\tthis.closed = closed || false;\n\tthis.curveType = curveType || 'centripetal';\n\tthis.tension = tension || 0.5;\n\n}\n\nCatmullRomCurve3.prototype = Object.create( Curve.prototype );\nCatmullRomCurve3.prototype.constructor = CatmullRomCurve3;\n\nCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\n\nCatmullRomCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tconst points = this.points;\n\tconst l = points.length;\n\n\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\tlet intPoint = Math.floor( p );\n\tlet weight = p - intPoint;\n\n\tif ( this.closed ) {\n\n\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\tintPoint = l - 2;\n\t\tweight = 1;\n\n\t}\n\n\tlet p0, p1, p2, p3; // 4 points\n\n\tif ( this.closed || intPoint > 0 ) {\n\n\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate first point\n\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\tp0 = tmp;\n\n\t}\n\n\tp1 = points[ intPoint % l ];\n\tp2 = points[ ( intPoint + 1 ) % l ];\n\n\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate last point\n\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\tp3 = tmp;\n\n\t}\n\n\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t// init Centripetal / Chordal Catmull-Rom\n\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t// safety check for repeated points\n\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t}\n\n\tpoint.set(\n\t\tpx.calc( weight ),\n\t\tpy.calc( weight ),\n\t\tpz.calc( weight )\n\t);\n\n\treturn point;\n\n};\n\nCatmullRomCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tconst point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\tthis.closed = source.closed;\n\tthis.curveType = source.curveType;\n\tthis.tension = source.tension;\n\n\treturn this;\n\n};\n\nCatmullRomCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tconst point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\tdata.closed = this.closed;\n\tdata.curveType = this.curveType;\n\tdata.tension = this.tension;\n\n\treturn data;\n\n};\n\nCatmullRomCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tconst point = json.points[ i ];\n\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t}\n\n\tthis.closed = json.closed;\n\tthis.curveType = json.curveType;\n\tthis.tension = json.tension;\n\n\treturn this;\n\n};\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n * Bezier Curves formulas obtained from\n * http://en.wikipedia.org/wiki/Bézier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nfunction CubicBezierCurve( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\tthis.v3 = v3 || new Vector2();\n\n}\n\nCubicBezierCurve.prototype = Object.create( Curve.prototype );\nCubicBezierCurve.prototype.constructor = CubicBezierCurve;\n\nCubicBezierCurve.prototype.isCubicBezierCurve = true;\n\nCubicBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction CubicBezierCurve3( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\tthis.v3 = v3 || new Vector3();\n\n}\n\nCubicBezierCurve3.prototype = Object.create( Curve.prototype );\nCubicBezierCurve3.prototype.constructor = CubicBezierCurve3;\n\nCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\n\nCubicBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction LineCurve( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve';\n\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nLineCurve.prototype = Object.create( Curve.prototype );\nLineCurve.prototype.constructor = LineCurve;\n\nLineCurve.prototype.isLineCurve = true;\n\nLineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve.prototype.getTangent = function ( t, optionalTarget ) {\n\n\tconst tangent = optionalTarget || new Vector2();\n\n\ttangent.copy( this.v2 ).sub( this.v1 ).normalize();\n\n\treturn tangent;\n\n};\n\nLineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction LineCurve3( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve3';\n\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nLineCurve3.prototype = Object.create( Curve.prototype );\nLineCurve3.prototype.constructor = LineCurve3;\n\nLineCurve3.prototype.isLineCurve3 = true;\n\nLineCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve3.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nQuadraticBezierCurve.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve;\n\nQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\n\nQuadraticBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve3( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nQuadraticBezierCurve3.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3;\n\nQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\n\nQuadraticBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction SplineCurve( points /* array of Vector2 */ ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'SplineCurve';\n\n\tthis.points = points || [];\n\n}\n\nSplineCurve.prototype = Object.create( Curve.prototype );\nSplineCurve.prototype.constructor = SplineCurve;\n\nSplineCurve.prototype.isSplineCurve = true;\n\nSplineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst points = this.points;\n\tconst p = ( points.length - 1 ) * t;\n\n\tconst intPoint = Math.floor( p );\n\tconst weight = p - intPoint;\n\n\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\tconst p1 = points[ intPoint ];\n\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\tpoint.set(\n\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t);\n\n\treturn point;\n\n};\n\nSplineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tconst point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\treturn this;\n\n};\n\nSplineCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tconst point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\treturn data;\n\n};\n\nSplineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tconst point = json.points[ i ];\n\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t}\n\n\treturn this;\n\n};\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n **/\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nfunction CurvePath() {\n\n\tCurve.call( this );\n\n\tthis.type = 'CurvePath';\n\n\tthis.curves = [];\n\tthis.autoClose = false; // Automatically closes the path\n\n}\n\nCurvePath.prototype = Object.assign( Object.create( Curve.prototype ), {\n\n\tconstructor: CurvePath,\n\n\tadd: function ( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t},\n\n\tclosePath: function () {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t}\n\n\t},\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint: function ( t ) {\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurve.prototype.copy.call( this, source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = Curve.prototype.toJSON.call( this );\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurve.prototype.fromJSON.call( this, json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Creates free form 2d path using series of points, lines or curves.\n **/\n\nfunction Path( points ) {\n\n\tCurvePath.call( this );\n\n\tthis.type = 'Path';\n\n\tthis.currentPoint = new Vector2();\n\n\tif ( points ) {\n\n\t\tthis.setFromPoints( points );\n\n\t}\n\n}\n\nPath.prototype = Object.assign( Object.create( CurvePath.prototype ), {\n\n\tconstructor: Path,\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\treturn this;\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tconst curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tsplineThru: function ( pts /*Array of Vector*/ ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t},\n\n\tarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t},\n\n\tabsarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t},\n\n\tellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t},\n\n\tabsellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tconst firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurvePath.prototype.copy.call( this, source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = CurvePath.prototype.toJSON.call( this );\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurvePath.prototype.fromJSON.call( this, json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Defines a 2d shape plane using paths.\n **/\n\n// STEP 1 Create a path.\n// STEP 2 Turn path into shape.\n// STEP 3 ExtrudeGeometry takes in Shape/Shapes\n// STEP 3a - Extract points from each shape, turn to vertices\n// STEP 3b - Triangulate each shape, add faces.\n\nfunction Shape( points ) {\n\n\tPath.call( this, points );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.type = 'Shape';\n\n\tthis.holes = [];\n\n}\n\nShape.prototype = Object.assign( Object.create( Path.prototype ), {\n\n\tconstructor: Shape,\n\n\tgetPointsHoles: function ( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t},\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints: function ( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tPath.prototype.copy.call( this, source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = Path.prototype.toJSON.call( this );\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tPath.prototype.fromJSON.call( this, json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Light( color, intensity ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Light';\n\n\tthis.color = new Color( color );\n\tthis.intensity = intensity !== undefined ? intensity : 1;\n\n\tthis.receiveShadow = undefined;\n\n}\n\nLight.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Light,\n\n\tisLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction HemisphereLight( skyColor, groundColor, intensity ) {\n\n\tLight.call( this, skyColor, intensity );\n\n\tthis.type = 'HemisphereLight';\n\n\tthis.castShadow = undefined;\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.groundColor = new Color( groundColor );\n\n}\n\nHemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: HemisphereLight,\n\n\tisHemisphereLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LightShadow( camera ) {\n\n\tthis.camera = camera;\n\n\tthis.bias = 0;\n\tthis.normalBias = 0;\n\tthis.radius = 1;\n\n\tthis.mapSize = new Vector2( 512, 512 );\n\n\tthis.map = null;\n\tthis.mapPass = null;\n\tthis.matrix = new Matrix4();\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis._frustum = new Frustum();\n\tthis._frameExtents = new Vector2( 1, 1 );\n\n\tthis._viewportCount = 1;\n\n\tthis._viewports = [\n\n\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t];\n\n}\n\nObject.assign( LightShadow.prototype, {\n\n\t_projScreenMatrix: new Matrix4(),\n\n\t_lightPositionWorld: new Vector3(),\n\n\t_lookTarget: new Vector3(),\n\n\tgetViewportCount: function () {\n\n\t\treturn this._viewportCount;\n\n\t},\n\n\tgetFrustum: function () {\n\n\t\treturn this._frustum;\n\n\t},\n\n\tupdateMatrices: function ( light ) {\n\n\t\tconst shadowCamera = this.camera,\n\t\t\tshadowMatrix = this.matrix,\n\t\t\tprojScreenMatrix = this._projScreenMatrix,\n\t\t\tlookTarget = this._lookTarget,\n\t\t\tlightPositionWorld = this._lightPositionWorld;\n\n\t\tlightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( lightPositionWorld );\n\n\t\tlookTarget.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( lookTarget );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\tprojScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( projScreenMatrix );\n\n\t\tshadowMatrix.set(\n\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t);\n\n\t\tshadowMatrix.multiply( shadowCamera.projectionMatrix );\n\t\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\n\n\t},\n\n\tgetViewport: function ( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t},\n\n\tgetFrameExtents: function () {\n\n\t\treturn this._frameExtents;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction SpotLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n}\n\nSpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: SpotLightShadow,\n\n\tisSpotLightShadow: true,\n\n\tupdateMatrices: function ( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = MathUtils.RAD2DEG * 2 * light.angle;\n\t\tconst aspect = this.mapSize.width / this.mapSize.height;\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tLightShadow.prototype.updateMatrices.call( this, light );\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction SpotLight( color, intensity, distance, angle, penumbra, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'SpotLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / Math.PI;\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.angle = ( angle !== undefined ) ? angle : Math.PI / 3;\n\tthis.penumbra = ( penumbra !== undefined ) ? penumbra : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new SpotLightShadow();\n\n}\n\nSpotLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: SpotLight,\n\n\tisSpotLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction PointLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\tthis._frameExtents = new Vector2( 4, 2 );\n\n\tthis._viewportCount = 6;\n\n\tthis._viewports = [\n\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t// following orientation:\n\t\t//\n\t\t// xzXZ\n\t\t// y Y\n\t\t//\n\t\t// X - Positive x direction\n\t\t// x - Negative x direction\n\t\t// Y - Positive y direction\n\t\t// y - Negative y direction\n\t\t// Z - Positive z direction\n\t\t// z - Negative z direction\n\n\t\t// positive X\n\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t// negative X\n\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t// positive Z\n\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t// negative Z\n\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t// positive Y\n\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t// negative Y\n\t\tnew Vector4( 1, 0, 1, 1 )\n\t];\n\n\tthis._cubeDirections = [\n\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t];\n\n\tthis._cubeUps = [\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t];\n\n}\n\nPointLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: PointLightShadow,\n\n\tisPointLightShadow: true,\n\n\tupdateMatrices: function ( light, viewportIndex ) {\n\n\t\tif ( viewportIndex === undefined ) viewportIndex = 0;\n\n\t\tconst camera = this.camera,\n\t\t\tshadowMatrix = this.matrix,\n\t\t\tlightPositionWorld = this._lightPositionWorld,\n\t\t\tlookTarget = this._lookTarget,\n\t\t\tprojScreenMatrix = this._projScreenMatrix;\n\n\t\tlightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( lightPositionWorld );\n\n\t\tlookTarget.copy( camera.position );\n\t\tlookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - lightPositionWorld.x, - lightPositionWorld.y, - lightPositionWorld.z );\n\n\t\tprojScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( projScreenMatrix );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction PointLight( color, intensity, distance, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'PointLight';\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * 4 * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new PointLightShadow();\n\n}\n\nPointLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: PointLight,\n\n\tisPointLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author arose / http://github.com/arose\n */\n\nfunction OrthographicCamera( left, right, top, bottom, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'OrthographicCamera';\n\n\tthis.zoom = 1;\n\tthis.view = null;\n\n\tthis.left = ( left !== undefined ) ? left : - 1;\n\tthis.right = ( right !== undefined ) ? right : 1;\n\tthis.top = ( top !== undefined ) ? top : 1;\n\tthis.bottom = ( bottom !== undefined ) ? bottom : - 1;\n\n\tthis.near = ( near !== undefined ) ? near : 0.1;\n\tthis.far = ( far !== undefined ) ? far : 2000;\n\n\tthis.updateProjectionMatrix();\n\n}\n\nOrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: OrthographicCamera,\n\n\tisOrthographicCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t},\n\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tconst cx = ( this.right + this.left ) / 2;\n\t\tconst cy = ( this.top + this.bottom ) / 2;\n\n\t\tlet left = cx - dx;\n\t\tlet right = cx + dx;\n\t\tlet top = cy + dy;\n\t\tlet bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t\tthis.projectionMatrixInverse.getInverse( this.projectionMatrix );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectionalLightShadow() {\n\n\tLightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n}\n\nDirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: DirectionalLightShadow,\n\n\tisDirectionalLightShadow: true,\n\n\tupdateMatrices: function ( light ) {\n\n\t\tLightShadow.prototype.updateMatrices.call( this, light );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DirectionalLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'DirectionalLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tthis.shadow = new DirectionalLightShadow();\n\n}\n\nDirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: DirectionalLight,\n\n\tisDirectionalLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AmbientLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'AmbientLight';\n\n\tthis.castShadow = undefined;\n\n}\n\nAmbientLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: AmbientLight,\n\n\tisAmbientLight: true\n\n} );\n\n/**\n * @author abelnation / http://github.com/abelnation\n */\n\nfunction RectAreaLight( color, intensity, width, height ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'RectAreaLight';\n\n\tthis.width = ( width !== undefined ) ? width : 10;\n\tthis.height = ( height !== undefined ) ? height : 10;\n\n}\n\nRectAreaLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: RectAreaLight,\n\n\tisRectAreaLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Light.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * Primary reference:\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n * https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nfunction SphericalHarmonics3() {\n\n\tthis.coefficients = [];\n\n\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\tthis.coefficients.push( new Vector3() );\n\n\t}\n\n}\n\nObject.assign( SphericalHarmonics3.prototype, {\n\n\tisSphericalHarmonics3: true,\n\n\tset: function ( coefficients ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tzero: function () {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt: function ( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t},\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt: function ( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t},\n\n\tadd: function ( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\taddScaledSH: function ( sh, s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( sh, alpha ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcopy: function ( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n} );\n\nObject.assign( SphericalHarmonics3, {\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tgetBasisAt: function ( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n} );\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * A LightProbe is a source of indirect-diffuse light\n */\n\nfunction LightProbe( sh, intensity ) {\n\n\tLight.call( this, undefined, intensity );\n\n\tthis.type = 'LightProbe';\n\n\tthis.sh = ( sh !== undefined ) ? sh : new SphericalHarmonics3();\n\n}\n\nLightProbe.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: LightProbe,\n\n\tisLightProbe: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\n\t\tthis.sh.fromArray( json.sh );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Light.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction MaterialLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n\tthis.textures = {};\n\n}\n\nMaterialLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: MaterialLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tconst material = new Materials[ json.type ]();\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = new Color().setHex( json.sheen );\n\t\tif ( json.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;\n\t\tif ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\n\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== 1 ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.skinning !== undefined ) material.skinning = json.skinning;\n\t\tif ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets;\n\t\tif ( json.morphNormals !== undefined ) material.morphNormals = json.morphNormals;\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.vertexTangents !== undefined ) material.vertexTangents = json.vertexTangents;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( const name in json.uniforms ) {\n\n\t\t\t\tconst uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( const key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Deprecated\n\n\t\tif ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap );\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tlet normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\treturn material;\n\n\t},\n\n\tsetTextures: function ( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author Don McCurdy / https://www.donmccurdy.com\n */\n\nconst LoaderUtils = {\n\n\tdecodeText: function ( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tlet s = '';\n\n\t\tfor ( let i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t},\n\n\textractUrlBase: function ( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.substr( 0, index + 1 );\n\n\t}\n\n};\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferGeometry() {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'InstancedBufferGeometry';\n\tthis.instanceCount = Infinity;\n\n}\n\nInstancedBufferGeometry.prototype = Object.assign( Object.create( BufferGeometry.prototype ), {\n\n\tconstructor: InstancedBufferGeometry,\n\n\tisInstancedBufferGeometry: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferGeometry.prototype.copy.call( this, source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferAttribute( array, itemSize, normalized, meshPerAttribute ) {\n\n\tif ( typeof ( normalized ) === 'number' ) {\n\n\t\tmeshPerAttribute = normalized;\n\n\t\tnormalized = false;\n\n\t\tconsole.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' );\n\n\t}\n\n\tBufferAttribute.call( this, array, itemSize, normalized );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedBufferAttribute.prototype = Object.assign( Object.create( BufferAttribute.prototype ), {\n\n\tconstructor: InstancedBufferAttribute,\n\n\tisInstancedBufferAttribute: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferAttribute.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ()\t{\n\n\t\tconst data = BufferAttribute.prototype.toJSON.call( this );\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferGeometryLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nBufferGeometryLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: BufferGeometryLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst interleavedBufferMap = {};\n\t\tconst arrayBufferMap = {};\n\n\t\tfunction getInterleavedBuffer( json, uuid ) {\n\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\n\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\n\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\n\n\t\t\tconst array = new TYPED_ARRAYS[ interleavedBuffer.type ]( buffer );\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\n\t\t\tib.uuid = interleavedBuffer.uuid;\n\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\n\n\t\t\treturn ib;\n\n\t\t}\n\n\t\tfunction getArrayBuffer( json, uuid ) {\n\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\n\n\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\n\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\n\n\t\t\tarrayBufferMap[ uuid ] = ab;\n\n\t\t\treturn ab;\n\n\t\t}\n\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tconst index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst typedArray = new TYPED_ARRAYS[ index.type ]( index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tconst attributes = json.data.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\t\t\tlet bufferAttribute;\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t} else {\n\n\t\t\t\tconst typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( const key in morphAttributes ) {\n\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attribute = attributeArray[ i ];\n\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tconst center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\t// Workaround for IE11 pre KB2929437. See #11440\n\tUint8ClampedArray: typeof Uint8ClampedArray !== 'undefined' ? Uint8ClampedArray : Uint8Array,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ObjectLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nObjectLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ObjectLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json, onLoad ) {\n\n\t\tconst shapes = this.parseShape( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials );\n\n\t\tif ( json.animations ) {\n\n\t\t\tobject.animations = this.parseAnimations( json.animations );\n\n\t\t}\n\n\t\tif ( json.images === undefined || json.images.length === 0 ) {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t},\n\n\tparseShape: function ( json ) {\n\n\t\tconst shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t},\n\n\tparseGeometries: function ( json, shapes ) {\n\n\t\tconst geometries = {};\n\t\tlet geometryShapes;\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tlet geometry;\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'PlaneGeometry':\n\t\t\t\t\tcase 'PlaneBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BoxGeometry':\n\t\t\t\t\tcase 'BoxBufferGeometry':\n\t\t\t\t\tcase 'CubeGeometry': // backwards compatible\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.depth,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.depthSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CircleGeometry':\n\t\t\t\t\tcase 'CircleBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CylinderGeometry':\n\t\t\t\t\tcase 'CylinderBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radiusTop,\n\t\t\t\t\t\t\tdata.radiusBottom,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ConeGeometry':\n\t\t\t\t\tcase 'ConeBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'SphereGeometry':\n\t\t\t\t\tcase 'SphereBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'DodecahedronGeometry':\n\t\t\t\t\tcase 'DodecahedronBufferGeometry':\n\t\t\t\t\tcase 'IcosahedronGeometry':\n\t\t\t\t\tcase 'IcosahedronBufferGeometry':\n\t\t\t\t\tcase 'OctahedronGeometry':\n\t\t\t\t\tcase 'OctahedronBufferGeometry':\n\t\t\t\t\tcase 'TetrahedronGeometry':\n\t\t\t\t\tcase 'TetrahedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.detail\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'RingGeometry':\n\t\t\t\t\tcase 'RingBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.innerRadius,\n\t\t\t\t\t\t\tdata.outerRadius,\n\t\t\t\t\t\t\tdata.thetaSegments,\n\t\t\t\t\t\t\tdata.phiSegments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusGeometry':\n\t\t\t\t\tcase 'TorusBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.arc\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusKnotGeometry':\n\t\t\t\t\tcase 'TorusKnotBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.p,\n\t\t\t\t\t\t\tdata.q\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TubeGeometry':\n\t\t\t\t\tcase 'TubeBufferGeometry':\n\n\t\t\t\t\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t\t\t\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.closed\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'LatheGeometry':\n\t\t\t\t\tcase 'LatheBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.points,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PolyhedronGeometry':\n\t\t\t\t\tcase 'PolyhedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.vertices,\n\t\t\t\t\t\t\tdata.indices,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.details\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ShapeGeometry':\n\t\t\t\t\tcase 'ShapeBufferGeometry':\n\n\t\t\t\t\t\tgeometryShapes = [];\n\n\t\t\t\t\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.curveSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\n\t\t\t\t\tcase 'ExtrudeGeometry':\n\t\t\t\t\tcase 'ExtrudeBufferGeometry':\n\n\t\t\t\t\t\tgeometryShapes = [];\n\n\t\t\t\t\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst extrudePath = data.options.extrudePath;\n\n\t\t\t\t\t\tif ( extrudePath !== undefined ) {\n\n\t\t\t\t\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.options\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\tconsole.error( 'THREE.ObjectLoader: Loading \"Geometry\" is not supported anymore.' );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Unsupported geometry type \"' + data.type + '\"' );\n\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t},\n\n\tparseMaterials: function ( json, textures ) {\n\n\t\tconst cache = {}; // MultiMaterial\n\t\tconst materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.type === 'MultiMaterial' ) {\n\n\t\t\t\t\t// Deprecated\n\n\t\t\t\t\tconst array = [];\n\n\t\t\t\t\tfor ( let j = 0; j < data.materials.length; j ++ ) {\n\n\t\t\t\t\t\tconst material = data.materials[ j ];\n\n\t\t\t\t\t\tif ( cache[ material.uuid ] === undefined ) {\n\n\t\t\t\t\t\t\tcache[ material.uuid ] = loader.parse( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tarray.push( cache[ material.uuid ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = array;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t},\n\n\tparseAnimations: function ( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst data = json[ i ];\n\n\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\tif ( data.uuid !== undefined ) clip.uuid = data.uuid;\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t},\n\n\tparseImages: function ( json, onLoad ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tconst manager = new LoadingManager( onLoad );\n\n\t\t\tloader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\timages[ image.uuid ] = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( currentUrl ) ? currentUrl : scope.resourcePath + currentUrl;\n\n\t\t\t\t\t\timages[ image.uuid ].push( loadImage( path ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( image.url ) ? image.url : scope.resourcePath + image.url;\n\n\t\t\t\t\timages[ image.uuid ] = loadImage( path );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t},\n\n\tparseTextures: function ( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tconst textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tlet texture;\n\n\t\t\t\tif ( Array.isArray( images[ data.image ] ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture( images[ data.image ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture = new Texture( images[ data.image ] );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t},\n\n\tparseObject: function ( data, geometries, materials ) {\n\n\t\tlet object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tlet geometry, material;\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' );\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\t\t\t\tconst count = data.count;\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new BufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tconst levels = data.levels;\n\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tconst level = levels[ l ];\n\t\t\t\tconst child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n} );\n\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping,\n\tCubeUVRefractionMapping: CubeUVRefractionMapping\n};\n\nconst TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nconst TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\n/**\n * @author thespite / http://clicktorelease.com/\n */\n\n\nfunction ImageBitmapLoader( manager ) {\n\n\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t}\n\n\tif ( typeof fetch === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t}\n\n\tLoader.call( this, manager );\n\n\tthis.options = { premultiplyAlpha: 'none' };\n\n}\n\nImageBitmapLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ImageBitmapLoader,\n\n\tisImageBitmapLoader: true,\n\n\tsetOptions: function setOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t},\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tfetch( url ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, scope.options );\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * minimal class for proxing functions to Path. Replaces old \"extractSubpaths()\"\n **/\n\nfunction ShapePath() {\n\n\tthis.type = 'ShapePath';\n\n\tthis.color = new Color();\n\n\tthis.subPaths = [];\n\tthis.currentPath = null;\n\n}\n\nObject.assign( ShapePath.prototype, {\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tsplineThru: function ( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t},\n\n\ttoShapes: function ( isCCW, noHoles ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tconst polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tlet solid, tmpPath, tmpShape, shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tlet ambiguous = false;\n\t\t\tconst toChange = [];\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } );\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t// console.log(\"ambiguous: \", ambiguous);\n\n\t\t\tif ( toChange.length > 0 ) {\n\n\t\t\t\t// console.log(\"to change: \", toChange);\n\t\t\t\tif ( ! ambiguous )\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction Font( data ) {\n\n\tthis.type = 'Font';\n\n\tthis.data = data;\n\n}\n\nObject.assign( Font.prototype, {\n\n\tisFont: true,\n\n\tgenerateShapes: function ( text, size ) {\n\n\t\tif ( size === undefined ) size = 100;\n\n\t\tconst shapes = [];\n\t\tconst paths = createPaths( text, size, this.data );\n\n\t\tfor ( let p = 0, pl = paths.length; p < pl; p ++ ) {\n\n\t\t\tArray.prototype.push.apply( shapes, paths[ p ].toShapes() );\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\nfunction createPaths( text, size, data ) {\n\n\tconst chars = Array.from ? Array.from( text ) : String( text ).split( '' ); // workaround for IE11, see #13988\n\tconst scale = size / data.resolution;\n\tconst line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale;\n\n\tconst paths = [];\n\n\tlet offsetX = 0, offsetY = 0;\n\n\tfor ( let i = 0; i < chars.length; i ++ ) {\n\n\t\tconst char = chars[ i ];\n\n\t\tif ( char === '\\n' ) {\n\n\t\t\toffsetX = 0;\n\t\t\toffsetY -= line_height;\n\n\t\t} else {\n\n\t\t\tconst ret = createPath( char, scale, offsetX, offsetY, data );\n\t\t\toffsetX += ret.offsetX;\n\t\t\tpaths.push( ret.path );\n\n\t\t}\n\n\t}\n\n\treturn paths;\n\n}\n\nfunction createPath( char, scale, offsetX, offsetY, data ) {\n\n\tconst glyph = data.glyphs[ char ] || data.glyphs[ '?' ];\n\n\tif ( ! glyph ) {\n\n\t\tconsole.error( 'THREE.Font: character \"' + char + '\" does not exists in font family ' + data.familyName + '.' );\n\n\t\treturn;\n\n\t}\n\n\tconst path = new ShapePath();\n\n\tlet x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2;\n\n\tif ( glyph.o ) {\n\n\t\tconst outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );\n\n\t\tfor ( let i = 0, l = outline.length; i < l; ) {\n\n\t\t\tconst action = outline[ i ++ ];\n\n\t\t\tswitch ( action ) {\n\n\t\t\t\tcase 'm': // moveTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.moveTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'l': // lineTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.lineTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'q': // quadraticCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.quadraticCurveTo( cpx1, cpy1, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'b': // bezierCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx2 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy2 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { offsetX: glyph.ha * scale, path: path };\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction FontLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nFontLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: FontLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tconsole.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' );\n\t\t\t\tjson = JSON.parse( text.substring( 65, text.length - 2 ) );\n\n\t\t\t}\n\n\t\t\tconst font = scope.parse( json );\n\n\t\t\tif ( onLoad ) onLoad( font );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\treturn new Font( json );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nlet _context;\n\nconst AudioContext = {\n\n\tgetContext: function () {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t},\n\n\tsetContext: function ( value ) {\n\n\t\t_context = value;\n\n\t}\n\n};\n\n/**\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nfunction AudioLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nAudioLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: AudioLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n} );\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction HemisphereLightProbe( skyColor, groundColor, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tconst color1 = new Color().set( skyColor );\n\tconst color2 = new Color().set( groundColor );\n\n\tconst sky = new Vector3( color1.r, color1.g, color1.b );\n\tconst ground = new Vector3( color2.r, color2.g, color2.b );\n\n\t// without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );\n\tconst c0 = Math.sqrt( Math.PI );\n\tconst c1 = c0 * Math.sqrt( 0.75 );\n\n\tthis.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 );\n\tthis.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 );\n\n}\n\nHemisphereLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\n\n\tconstructor: HemisphereLightProbe,\n\n\tisHemisphereLightProbe: true,\n\n\tcopy: function ( source ) { // modifying colors not currently supported\n\n\t\tLightProbe.prototype.copy.call( this, source );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction AmbientLightProbe( color, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tconst color1 = new Color().set( color );\n\n\t// without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI );\n\tthis.sh.coefficients[ 0 ].set( color1.r, color1.g, color1.b ).multiplyScalar( 2 * Math.sqrt( Math.PI ) );\n\n}\n\nAmbientLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\n\n\tconstructor: AmbientLightProbe,\n\n\tisAmbientLightProbe: true,\n\n\tcopy: function ( source ) { // modifying color not currently supported\n\n\t\tLightProbe.prototype.copy.call( this, source );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\nconst _eyeRight = new Matrix4();\nconst _eyeLeft = new Matrix4();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction StereoCamera() {\n\n\tthis.type = 'StereoCamera';\n\n\tthis.aspect = 1;\n\n\tthis.eyeSep = 0.064;\n\n\tthis.cameraL = new PerspectiveCamera();\n\tthis.cameraL.layers.enable( 1 );\n\tthis.cameraL.matrixAutoUpdate = false;\n\n\tthis.cameraR = new PerspectiveCamera();\n\tthis.cameraR.layers.enable( 2 );\n\tthis.cameraR.matrixAutoUpdate = false;\n\n\tthis._cache = {\n\t\tfocus: null,\n\t\tfov: null,\n\t\taspect: null,\n\t\tnear: null,\n\t\tfar: null,\n\t\tzoom: null,\n\t\teyeSep: null\n\t};\n\n}\n\nObject.assign( StereoCamera.prototype, {\n\n\tupdate: function ( camera ) {\n\n\t\tconst cache = this._cache;\n\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\tconst projectionMatrix = camera.projectionMatrix.clone();\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tconst ymax = ( cache.near * Math.tan( MathUtils.DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tlet xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\tprojectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraL.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t// for right eye\n\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\n\t\t\tprojectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Clock( autoStart ) {\n\n\tthis.autoStart = ( autoStart !== undefined ) ? autoStart : true;\n\n\tthis.startTime = 0;\n\tthis.oldTime = 0;\n\tthis.elapsedTime = 0;\n\n\tthis.running = false;\n\n}\n\nObject.assign( Clock.prototype, {\n\n\tstart: function () {\n\n\t\tthis.startTime = ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t},\n\n\tgetElapsedTime: function () {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t},\n\n\tgetDelta: function () {\n\n\t\tlet diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tconst newTime = ( typeof performance === 'undefined' ? Date : performance ).now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _position$2 = new Vector3();\nconst _quaternion$3 = new Quaternion();\nconst _scale$1 = new Vector3();\nconst _orientation = new Vector3();\n\nfunction AudioListener() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'AudioListener';\n\n\tthis.context = AudioContext.getContext();\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( this.context.destination );\n\n\tthis.filter = null;\n\n\tthis.timeDelta = 0;\n\n\t// private\n\n\tthis._clock = new Clock();\n\n}\n\nAudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: AudioListener,\n\n\tgetInput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tremoveFilter: function ( ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.filter;\n\n\t},\n\n\tsetFilter: function ( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t},\n\n\tgetMasterVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetMasterVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tconst listener = this.context.listener;\n\t\tconst up = this.up;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$2, _quaternion$3, _scale$1 );\n\n\t\t_orientation.set( 0, 0, - 1 ).applyQuaternion( _quaternion$3 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$2.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$2.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$2.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation.z, endTime );\n\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t} else {\n\n\t\t\tlistener.setPosition( _position$2.x, _position$2.y, _position$2.z );\n\t\t\tlistener.setOrientation( _orientation.x, _orientation.y, _orientation.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nfunction Audio( listener ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Audio';\n\n\tthis.listener = listener;\n\tthis.context = listener.context;\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( listener.getInput() );\n\n\tthis.autoplay = false;\n\n\tthis.buffer = null;\n\tthis.detune = 0;\n\tthis.loop = false;\n\tthis.loopStart = 0;\n\tthis.loopEnd = 0;\n\tthis.offset = 0;\n\tthis.duration = undefined;\n\tthis.playbackRate = 1;\n\tthis.isPlaying = false;\n\tthis.hasPlaybackControl = true;\n\tthis.sourceType = 'empty';\n\n\tthis._startedAt = 0;\n\tthis._progress = 0;\n\n\tthis.filters = [];\n\n}\n\nAudio.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Audio,\n\n\tgetOutput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tsetNodeSource: function ( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetMediaElementSource: function ( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetMediaStreamSource: function ( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetBuffer: function ( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t},\n\n\tplay: function ( delay ) {\n\n\t\tif ( delay === undefined ) delay = 0;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tconst source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t},\n\n\tpause: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._progress = 0;\n\n\t\tthis.source.stop();\n\t\tthis.source.onended = null;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t},\n\n\tconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilters: function () {\n\n\t\treturn this.filters;\n\n\t},\n\n\tsetFilters: function ( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value;\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetDetune: function ( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.source.detune === undefined ) return; // only set detune when available\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetDetune: function () {\n\n\t\treturn this.detune;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t},\n\n\tsetFilter: function ( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t},\n\n\tsetPlaybackRate: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetPlaybackRate: function () {\n\n\t\treturn this.playbackRate;\n\n\t},\n\n\tonEnded: function () {\n\n\t\tthis.isPlaying = false;\n\n\t},\n\n\tgetLoop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t},\n\n\tsetLoop: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetLoopStart: function ( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoopEnd: function ( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _position$3 = new Vector3();\nconst _quaternion$4 = new Quaternion();\nconst _scale$2 = new Vector3();\nconst _orientation$1 = new Vector3();\n\nfunction PositionalAudio( listener ) {\n\n\tAudio.call( this, listener );\n\n\tthis.panner = this.context.createPanner();\n\tthis.panner.panningModel = 'HRTF';\n\tthis.panner.connect( this.gain );\n\n}\n\nPositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {\n\n\tconstructor: PositionalAudio,\n\n\tgetOutput: function () {\n\n\t\treturn this.panner;\n\n\t},\n\n\tgetRefDistance: function () {\n\n\t\treturn this.panner.refDistance;\n\n\t},\n\n\tsetRefDistance: function ( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetRolloffFactor: function () {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t},\n\n\tsetRolloffFactor: function ( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetDistanceModel: function () {\n\n\t\treturn this.panner.distanceModel;\n\n\t},\n\n\tsetDistanceModel: function ( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxDistance: function () {\n\n\t\treturn this.panner.maxDistance;\n\n\t},\n\n\tsetMaxDistance: function ( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tsetDirectionalCone: function ( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$4, _scale$2 );\n\n\t\t_orientation$1.set( 0, 0, 1 ).applyQuaternion( _quaternion$4 );\n\n\t\tconst panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position$3.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position$3.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position$3.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation$1.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position$3.x, _position$3.y, _position$3.z );\n\t\t\tpanner.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z );\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AudioAnalyser( audio, fftSize ) {\n\n\tthis.analyser = audio.context.createAnalyser();\n\tthis.analyser.fftSize = fftSize !== undefined ? fftSize : 2048;\n\n\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\taudio.getOutput().connect( this.analyser );\n\n}\n\nObject.assign( AudioAnalyser.prototype, {\n\n\tgetFrequencyData: function () {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t},\n\n\tgetAverageFrequency: function () {\n\n\t\tlet value = 0;\n\t\tconst data = this.getFrequencyData();\n\n\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n} );\n\n/**\n *\n * Buffered scene graph property that allows weighted accumulation.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction PropertyMixer( binding, typeName, valueSize ) {\n\n\tthis.binding = binding;\n\tthis.valueSize = valueSize;\n\n\tlet mixFunction,\n\t\tmixFunctionAdditive,\n\t\tsetIdentity;\n\n\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t//\n\t// interpolators can use .buffer as their .result\n\t// the data then goes to 'incoming'\n\t//\n\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t// the cumulative result and are compared to detect\n\t// changes\n\t//\n\t// 'orig' stores the original state of the property\n\t//\n\t// 'add' is used for additive cumulative results\n\t//\n\t// 'work' is optional and is only present for quaternion types. It is used\n\t// to store intermediate quaternion multiplication results\n\n\tswitch ( typeName ) {\n\n\t\tcase 'quaternion':\n\t\t\tmixFunction = this._slerp;\n\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\tthis._workIndex = 5;\n\t\t\tbreak;\n\n\t\tcase 'string':\n\t\tcase 'bool':\n\t\t\tmixFunction = this._select;\n\n\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t// additive is not relevant for non-numeric types\n\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tmixFunction = this._lerp;\n\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t}\n\n\tthis._mixBufferRegion = mixFunction;\n\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\tthis._setIdentity = setIdentity;\n\tthis._origIndex = 3;\n\tthis._addIndex = 4;\n\n\tthis.cumulativeWeight = 0;\n\tthis.cumulativeWeightAdditive = 0;\n\n\tthis.useCount = 0;\n\tthis.referenceCount = 0;\n\n}\n\nObject.assign( PropertyMixer.prototype, {\n\n\t// accumulate data in the 'incoming' region into 'accu'\n\taccumulate: function ( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride;\n\n\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tconst mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t},\n\n\t// accumulate data in the 'incoming' region into 'add'\n\taccumulateAdditive: function ( weight ) {\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = stride * this._addIndex;\n\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\n\n\t\t\t// add = identity\n\n\t\t\tthis._setIdentity();\n\n\t\t}\n\n\t\t// add := add + incoming * weight\n\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\n\t\tthis.cumulativeWeightAdditive += weight;\n\n\t},\n\n\t// apply the state of 'accu' to the binding when accus differ\n\tapply: function ( accuIndex ) {\n\n\t\tconst stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tif ( weightAdditive > 0 ) {\n\n\t\t\t// accuN := accuN + additive accuN\n\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\n\n\t\t}\n\n\t\tfor ( let i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState: function () {\n\n\t\tconst binding = this.binding;\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * this._origIndex;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\t// Add to identity for additive\n\t\tthis._setIdentity();\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t},\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState: function () {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t},\n\n\t_setAdditiveIdentityNumeric: function () {\n\n\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t},\n\n\t_setAdditiveIdentityQuaternion: function () {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * 4 + 3 ] = 1;\n\n\t},\n\n\t_setAdditiveIdentityOther: function () {\n\n\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t},\n\n\n\t// mix functions\n\n\t_select: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_slerp: function ( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t},\n\n\t_slerpAdditive: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst workOffset = this._workIndex * stride;\n\n\t\t// Store result in intermediate buffer offset\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\n\n\t\t// Slerp to the intermediate result\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\n\n\t},\n\n\t_lerp: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst s = 1 - t;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t},\n\n\t_lerpAdditive: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n *\n * A reference to a real property in the scene graph.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\n// Characters [].:/ are reserved for track binding syntax.\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nconst _directoryRe = /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nconst _objectRe = /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nconst _propertyRe = /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nconst _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nconst _supportedObjectNames = [ 'material', 'materials', 'bones' ];\n\nfunction Composite( targetGroup, path, optionalParsedPath ) {\n\n\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis._targetGroup = targetGroup;\n\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n}\n\nObject.assign( Composite.prototype, {\n\n\tgetValue: function ( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t},\n\n\tsetValue: function ( array, offset ) {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t},\n\n\tbind: function () {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t},\n\n\tunbind: function () {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n} );\n\n\nfunction PropertyBinding( rootNode, path, parsedPath ) {\n\n\tthis.path = path;\n\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode;\n\n\tthis.rootNode = rootNode;\n\n}\n\nObject.assign( PropertyBinding, {\n\n\tComposite: Composite,\n\n\tcreate: function ( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tsanitizeNodeName: function ( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t},\n\n\tparseTrackName: function ( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( ! matches ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tconst results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t},\n\n\tfindNode: function ( root, nodeName ) {\n\n\t\tif ( ! nodeName || nodeName === \"\" || nodeName === \".\" || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tconst bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tconst searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tconst childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tconst subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n} );\n\nObject.assign( PropertyBinding.prototype, { // prototype, continued\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable: function () {},\n\t_setValue_unavailable: function () {},\n\n\tBindingType: {\n\t\tDirect: 0,\n\t\tEntireArray: 1,\n\t\tArrayElement: 2,\n\t\tHasFromToArray: 3\n\t},\n\n\tVersioning: {\n\t\tNone: 0,\n\t\tNeedsUpdate: 1,\n\t\tMatrixWorldNeedsUpdate: 2\n\t},\n\n\tGetterByBindingType: [\n\n\t\tfunction getValue_direct( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.node[ this.propertyName ];\n\n\t\t},\n\n\t\tfunction getValue_array( buffer, offset ) {\n\n\t\t\tconst source = this.resolvedProperty;\n\n\t\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t\t}\n\n\t\t},\n\n\t\tfunction getValue_arrayElement( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t\t},\n\n\t\tfunction getValue_toArray( buffer, offset ) {\n\n\t\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t\t}\n\n\t],\n\n\tSetterByBindingTypeAndVersioning: [\n\n\t\t[\n\t\t\t// Direct\n\n\t\t\tfunction setValue_direct( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// EntireArray\n\n\t\t\tfunction setValue_array( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// ArrayElement\n\n\t\t\tfunction setValue_arrayElement( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// HasToFromArray\n\n\t\t\tfunction setValue_fromArray( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t]\n\n\t],\n\n\tgetValue: function getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t\t// Note: This class uses a State pattern on a per-method basis:\n\t\t// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n\t\t// prototype version of these methods with one that represents\n\t\t// the bound state. When the property is not found, the methods\n\t\t// become no-ops.\n\n\t},\n\n\tsetValue: function getValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t},\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind: function () {\n\n\t\tlet targetObject = this.node,\n\t\t\tparsedPath = this.parsedPath,\n\n\t\t\tobjectName = parsedPath.objectName,\n\t\t\tpropertyName = parsedPath.propertyName,\n\t\t\tpropertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tlet objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( let i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tconst nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tconst nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tlet versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tlet bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === \"morphTargetInfluences\" ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.geometry.isBufferGeometry ) {\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t\t}\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences on THREE.Geometry. Use THREE.BufferGeometry instead.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t},\n\n\tunbind: function () {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n} );\n\n// DECLARE ALIAS AFTER assign prototype\nObject.assign( PropertyBinding.prototype, {\n\n\t// initial state of these methods that calls 'bind'\n\t_getValue_unbound: PropertyBinding.prototype.getValue,\n\t_setValue_unbound: PropertyBinding.prototype.setValue,\n\n} );\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * - Add objects you would otherwise pass as 'root' to the\n * constructor or the .clipAction method of AnimationMixer.\n *\n * - Instead pass this object as 'root'.\n *\n * - You can also add and remove objects later when the mixer\n * is running.\n *\n * Note:\n *\n * Objects of this class appear as one object to the mixer,\n * so cache control of the individual objects must be done\n * on the group.\n *\n * Limitation:\n *\n * - The animated properties must be compatible among the\n * all objects in the group.\n *\n * - A single property can either be controlled through a\n * target group or directly, but not both.\n *\n * @author tschw\n */\n\nfunction AnimationObjectGroup() {\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\t// cached objects followed by the active ones\n\tthis._objects = Array.prototype.slice.call( arguments );\n\n\tthis.nCachedObjects_ = 0; // threshold\n\t// note: read by PropertyBinding.Composite\n\n\tconst indices = {};\n\tthis._indicesByUUID = indices; // for bookkeeping\n\n\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t}\n\n\tthis._paths = []; // inside: string\n\tthis._parsedPaths = []; // inside: { we don't care, here }\n\tthis._bindings = []; // inside: Array< PropertyBinding >\n\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\tconst scope = this;\n\n\tthis.stats = {\n\n\t\tobjects: {\n\t\t\tget total() {\n\n\t\t\t\treturn scope._objects.length;\n\n\t\t\t},\n\t\t\tget inUse() {\n\n\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t}\n\t\t},\n\t\tget bindingsPerObject() {\n\n\t\t\treturn scope._bindings.length;\n\n\t\t}\n\n\t};\n\n}\n\nObject.assign( AnimationObjectGroup.prototype, {\n\n\tisAnimationObjectGroup: true,\n\n\tadd: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet knownObject = undefined,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid;\n\t\t\tlet index = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\n\n\t\t\t\t\tlet binding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\tremove: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tconst lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// remove & forget\n\tuncache: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\tnObjects = objects.length;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tconst lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_: function ( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tlet indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ],\n\t\t\tbindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tconst paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tconst object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t},\n\n\tunsubscribe_: function ( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n *\n * Action provided by AnimationMixer for scheduling clip playback on specific\n * objects.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n *\n */\n\nfunction AnimationAction( mixer, clip, localRoot, blendMode ) {\n\n\tthis._mixer = mixer;\n\tthis._clip = clip;\n\tthis._localRoot = localRoot || null;\n\tthis.blendMode = blendMode || clip.blendMode;\n\n\tconst tracks = clip.tracks,\n\t\tnTracks = tracks.length,\n\t\tinterpolants = new Array( nTracks );\n\n\tconst interpolantSettings = {\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\t};\n\n\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\tinterpolants[ i ] = interpolant;\n\t\tinterpolant.settings = interpolantSettings;\n\n\t}\n\n\tthis._interpolantSettings = interpolantSettings;\n\n\tthis._interpolants = interpolants; // bound by the mixer\n\n\t// inside: PropertyMixer (managed by the mixer)\n\tthis._propertyBindings = new Array( nTracks );\n\n\tthis._cacheIndex = null; // for the memory manager\n\tthis._byClipCacheIndex = null; // for the memory manager\n\n\tthis._timeScaleInterpolant = null;\n\tthis._weightInterpolant = null;\n\n\tthis.loop = LoopRepeat;\n\tthis._loopCount = - 1;\n\n\t// global mixer time when the action is to be started\n\t// it's set back to 'null' upon start of the action\n\tthis._startTime = null;\n\n\t// scaled local time of the action\n\t// gets clamped or wrapped to 0..clip.duration according to loop\n\tthis.time = 0;\n\n\tthis.timeScale = 1;\n\tthis._effectiveTimeScale = 1;\n\n\tthis.weight = 1;\n\tthis._effectiveWeight = 1;\n\n\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\tthis.paused = false; // true -> zero effective time scale\n\tthis.enabled = true; // false -> zero effective weight\n\n\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n}\n\nObject.assign( AnimationAction.prototype, {\n\n\t// State & Scheduling\n\n\tplay: function () {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t},\n\n\treset: function () {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t},\n\n\tisRunning: function () {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t},\n\n\t// return true when play has been called\n\tisScheduled: function () {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t},\n\n\tstartAt: function ( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoop: function ( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t},\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight: function ( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t},\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight: function () {\n\n\t\treturn this._effectiveWeight;\n\n\t},\n\n\tfadeIn: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t},\n\n\tfadeOut: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t},\n\n\tcrossFadeFrom: function ( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tconst fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcrossFadeTo: function ( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t},\n\n\tstopFading: function () {\n\n\t\tlet weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale: function ( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale: function () {\n\n\t\treturn this._effectiveTimeScale;\n\n\t},\n\n\tsetDuration: function ( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\tsyncWith: function ( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\thalt: function ( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t},\n\n\twarp: function ( startTimeScale, endTimeScale, duration ) {\n\n\t\tconst mixer = this._mixer,\n\t\t\tnow = mixer.time,\n\t\t\ttimeScale = this.timeScale;\n\n\t\tlet interpolant = this._timeScaleInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t},\n\n\tstopWarping: function () {\n\n\t\tlet timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Object Accessors\n\n\tgetMixer: function () {\n\n\t\treturn this._mixer;\n\n\t},\n\n\tgetClip: function () {\n\n\t\treturn this._clip;\n\n\t},\n\n\tgetRoot: function () {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t},\n\n\t// Interna\n\n\t_update: function ( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t}\n\n\t\t\t// start\n\n\t\t\tthis._startTime = null; // unschedule\n\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tconst clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tconst weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tconst interpolants = this._interpolants;\n\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\tdefault:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_updateWeight: function ( time ) {\n\n\t\tlet weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t},\n\n\t_updateTimeScale: function ( time ) {\n\n\t\tlet timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t},\n\n\t_updateTime: function ( deltaTime ) {\n\n\t\tconst duration = this._clip.duration;\n\t\tconst loop = this.loop;\n\n\t\tlet time = this.time + deltaTime;\n\t\tlet loopCount = this._loopCount;\n\n\t\tconst pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tconst loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tconst pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tconst atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t},\n\n\t_setEndings: function ( atStart, atEnd, pingPong ) {\n\n\t\tconst settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_scheduleFading: function ( duration, weightNow, weightThen ) {\n\n\t\tconst mixer = this._mixer, now = mixer.time;\n\t\tlet interpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n *\n * Player for AnimationClips.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction AnimationMixer( root ) {\n\n\tthis._root = root;\n\tthis._initMemoryManager();\n\tthis._accuIndex = 0;\n\n\tthis.time = 0;\n\n\tthis.timeScale = 1.0;\n\n}\n\nAnimationMixer.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: AnimationMixer,\n\n\t_bindAction: function ( action, prototypeAction ) {\n\n\t\tconst root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName;\n\n\t\tlet bindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst track = tracks[ i ],\n\t\t\t\ttrackName = track.name;\n\n\t\t\tlet binding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tconst path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t},\n\n\t_activateAction: function ( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tconst rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t},\n\n\t_deactivateAction: function ( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t},\n\n\t// Memory manager\n\n\t_initMemoryManager: function () {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t},\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction: function ( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t},\n\n\t_addInactiveAction: function ( action, clipUuid, rootUuid ) {\n\n\t\tconst actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tlet actionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tconst knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t},\n\n\t_removeInactiveAction: function ( action ) {\n\n\t\tconst actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tconst clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tconst actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t},\n\n\t_removeInactiveBindingsForAction: function ( action ) {\n\n\t\tconst bindings = action._propertyBindings;\n\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tconst binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_lendAction: function ( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t},\n\n\t_takeBackAction: function ( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t},\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding: function ( binding, rootUuid, trackName ) {\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindings = this._bindings;\n\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t},\n\n\t_removeInactiveBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t},\n\n\t_lendBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t},\n\n\t_takeBackBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t},\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant: function () {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\n\n\t\tlet interpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, this._controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t},\n\n\t_takeBackControlInterpolant: function ( interpolant ) {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t},\n\n\t_controlInterpolantsResultBuffer: new Float32Array( 1 ),\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction: function ( clip, optionalRoot, blendMode ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid;\n\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\n\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\n\t\tlet actionsForClip = this._actionsByClip[ clipUuid ],\n\t\t\tprototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t},\n\n\t// get an existing action\n\texistingAction: function ( clip, optionalRoot ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction: function () {\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions;\n\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// advance the time and update apply the animation\n\tupdate: function ( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( let i = 0; i !== nActions; ++ i ) {\n\n\t\t\tconst action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tconst bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( let i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Allows you to seek to a specific time in an animation.\n\tsetTime: function ( timeInSeconds ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( timeInSeconds ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t},\n\n\t// return this mixer's root target object\n\tgetRoot: function () {\n\n\t\treturn this._root;\n\n\t},\n\n\t// free all resources specific to a particular clip\n\tuncacheClip: function ( clip ) {\n\n\t\tconst actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tconst action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tconst cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t},\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot: function ( root ) {\n\n\t\tconst rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( const clipUuid in actionsByClip ) {\n\n\t\t\tconst actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( const trackName in bindingByName ) {\n\n\t\t\t\tconst binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remove a targeted clip from the cache\n\tuncacheAction: function ( clip, optionalRoot ) {\n\n\t\tconst action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Uniform( value ) {\n\n\tif ( typeof value === 'string' ) {\n\n\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\tvalue = arguments[ 1 ];\n\n\t}\n\n\tthis.value = value;\n\n}\n\nUniform.prototype.clone = function () {\n\n\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n};\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedInterleavedBuffer( array, stride, meshPerAttribute ) {\n\n\tInterleavedBuffer.call( this, array, stride );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedInterleavedBuffer.prototype = Object.assign( Object.create( InterleavedBuffer.prototype ), {\n\n\tconstructor: InstancedInterleavedBuffer,\n\n\tisInstancedInterleavedBuffer: true,\n\n\tcopy: function ( source ) {\n\n\t\tInterleavedBuffer.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tconst ib = InterleavedBuffer.prototype.clone.call( this, data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tconst json = InterleavedBuffer.prototype.toJSON.call( this, data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author bhouston / http://clara.io/\n * @author stephomi / http://stephaneginier.com/\n */\n\nfunction Raycaster( origin, direction, near, far ) {\n\n\tthis.ray = new Ray( origin, direction );\n\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\tthis.near = near || 0;\n\tthis.far = far || Infinity;\n\tthis.camera = null;\n\tthis.layers = new Layers();\n\n\tthis.params = {\n\t\tMesh: {},\n\t\tLine: { threshold: 1 },\n\t\tLOD: {},\n\t\tPoints: { threshold: 1 },\n\t\tSprite: {}\n\t};\n\n\tObject.defineProperties( this.params, {\n\t\tPointCloud: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' );\n\t\t\t\treturn this.Points;\n\n\t\t\t}\n\t\t}\n\t} );\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tobject.raycast( raycaster, intersects );\n\n\t}\n\n\tif ( recursive === true ) {\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Raycaster.prototype, {\n\n\tset: function ( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t},\n\n\tsetFromCamera: function ( coords, camera ) {\n\n\t\tif ( ( camera && camera.isPerspectiveCamera ) ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( ( camera && camera.isOrthographicCamera ) ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type.' );\n\n\t\t}\n\n\t},\n\n\tintersectObject: function ( object, recursive, optionalTarget ) {\n\n\t\tconst intersects = optionalTarget || [];\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t},\n\n\tintersectObjects: function ( objects, recursive, optionalTarget ) {\n\n\t\tconst intersects = optionalTarget || [];\n\n\t\tif ( Array.isArray( objects ) === false ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' );\n\t\t\treturn intersects;\n\n\t\t}\n\n\t\tfor ( let i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n * The azimuthal angle (theta) is measured from the positive z-axis.\n */\n\nfunction Spherical( radius, phi, theta ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0;\n\tthis.phi = ( phi !== undefined ) ? phi : 0; // polar angle\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // azimuthal angle\n\n\treturn this;\n\n}\n\nObject.assign( Spherical.prototype, {\n\n\tset: function ( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t},\n\n\t// restrict phi to be betwee EPS and PI-EPS\n\tmakeSafe: function () {\n\n\t\tconst EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function ( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t},\n\n\tsetFromCartesianCoords: function ( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( MathUtils.clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n *\n */\n\nfunction Cylindrical( radius, theta, y ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0; // distance from the origin to a point in the x-z plane\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\tthis.y = ( y !== undefined ) ? y : 0; // height above the x-z plane\n\n\treturn this;\n\n}\n\nObject.assign( Cylindrical.prototype, {\n\n\tset: function ( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function ( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t},\n\n\tsetFromCartesianCoords: function ( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nconst _vector$7 = new Vector2();\n\nfunction Box2( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity );\n\n}\n\nObject.assign( Box2.prototype, {\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function ( center, size ) {\n\n\t\tconst halfSize = _vector$7.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getCenter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getSize() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getParameter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\tconst clampedPoint = _vector$7.copy( point ).clamp( this.min, this.max );\n\t\treturn clampedPoint.sub( point ).length();\n\n\t},\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nconst _startP = new Vector3();\nconst _startEnd = new Vector3();\n\nfunction Line3( start, end ) {\n\n\tthis.start = ( start !== undefined ) ? start : new Vector3();\n\tthis.end = ( end !== undefined ) ? end : new Vector3();\n\n}\n\nObject.assign( Line3.prototype, {\n\n\tset: function ( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t},\n\n\tdelta: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .delta() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t},\n\n\tdistanceSq: function () {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t},\n\n\tdistance: function () {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tclosestPointToPointParameter: function ( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\n\n\t\tlet t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = MathUtils.clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t},\n\n\tclosestPointToPoint: function ( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction ImmediateRenderObject( material ) {\n\n\tObject3D.call( this );\n\n\tthis.material = material;\n\tthis.render = function ( /* renderCallback */ ) {};\n\n\tthis.hasPositions = false;\n\tthis.hasNormals = false;\n\tthis.hasColors = false;\n\tthis.hasUvs = false;\n\n\tthis.positionArray = null;\n\tthis.normalArray = null;\n\tthis.colorArray = null;\n\tthis.uvArray = null;\n\n\tthis.count = 0;\n\n}\n\nImmediateRenderObject.prototype = Object.create( Object3D.prototype );\nImmediateRenderObject.prototype.constructor = ImmediateRenderObject;\n\nImmediateRenderObject.prototype.isImmediateRenderObject = true;\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nconst _vector$8 = new Vector3();\n\nfunction SpotLightHelper( light, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tconst geometry = new BufferGeometry();\n\n\tconst positions = [\n\t\t0, 0, 0, \t0, 0, 1,\n\t\t0, 0, 0, \t1, 0, 1,\n\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t0, 0, 0, \t0, 1, 1,\n\t\t0, 0, 0, \t0, - 1, 1\n\t];\n\n\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\tpositions.push(\n\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t);\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\tthis.cone = new LineSegments( geometry, material );\n\tthis.add( this.cone );\n\n\tthis.update();\n\n}\n\nSpotLightHelper.prototype = Object.create( Object3D.prototype );\nSpotLightHelper.prototype.constructor = SpotLightHelper;\n\nSpotLightHelper.prototype.dispose = function () {\n\n\tthis.cone.geometry.dispose();\n\tthis.cone.material.dispose();\n\n};\n\nSpotLightHelper.prototype.update = function () {\n\n\tthis.light.updateMatrixWorld();\n\n\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t_vector$8.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\tthis.cone.lookAt( _vector$8 );\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.cone.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.cone.material.color.copy( this.light.color );\n\n\t}\n\n};\n\n/**\n * @author Sean Griffin / http://twitter.com/sgrif\n * @author Michael Guerrero / http://realitymeltdown.com\n * @author mrdoob / http://mrdoob.com/\n * @author ikerr / http://verold.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nconst _vector$9 = new Vector3();\nconst _boneMatrix = new Matrix4();\nconst _matrixWorldInv = new Matrix4();\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object && object.isBone ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( let i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nfunction SkeletonHelper( object ) {\n\n\tconst bones = getBoneList( object );\n\n\tconst geometry = new BufferGeometry();\n\n\tconst vertices = [];\n\tconst colors = [];\n\n\tconst color1 = new Color( 0, 0, 1 );\n\tconst color2 = new Color( 0, 1, 0 );\n\n\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\tconst bone = bones[ i ];\n\n\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t}\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'SkeletonHelper';\n\n\tthis.root = object;\n\tthis.bones = bones;\n\n\tthis.matrix = object.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n}\n\nSkeletonHelper.prototype = Object.create( LineSegments.prototype );\nSkeletonHelper.prototype.constructor = SkeletonHelper;\n\nSkeletonHelper.prototype.isSkeletonHelper = true;\n\nSkeletonHelper.prototype.updateMatrixWorld = function ( force ) {\n\n\tconst bones = this.bones;\n\n\tconst geometry = this.geometry;\n\tconst position = geometry.getAttribute( 'position' );\n\n\t_matrixWorldInv.getInverse( this.root.matrixWorld );\n\n\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\tconst bone = bones[ i ];\n\n\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t_vector$9.setFromMatrixPosition( _boneMatrix );\n\t\t\tposition.setXYZ( j, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t_vector$9.setFromMatrixPosition( _boneMatrix );\n\t\t\tposition.setXYZ( j + 1, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\tj += 2;\n\n\t\t}\n\n\t}\n\n\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction PointLightHelper( light, sphereSize, color ) {\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.color = color;\n\n\tconst geometry = new SphereBufferGeometry( sphereSize, 4, 2 );\n\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'PointLightHelper';\n\n\tthis.matrix = this.light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n\n\t/*\n\tconst distanceGeometry = new THREE.IcosahedronBufferGeometry( 1, 2 );\n\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tconst d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n}\n\nPointLightHelper.prototype = Object.create( Mesh.prototype );\nPointLightHelper.prototype.constructor = PointLightHelper;\n\nPointLightHelper.prototype.dispose = function () {\n\n\tthis.geometry.dispose();\n\tthis.material.dispose();\n\n};\n\nPointLightHelper.prototype.update = function () {\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.material.color.copy( this.light.color );\n\n\t}\n\n\t/*\n\tconst d = this.light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.visible = true;\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\t*/\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nconst _vector$a = new Vector3();\nconst _color1 = new Color();\nconst _color2 = new Color();\n\nfunction HemisphereLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tconst geometry = new OctahedronBufferGeometry( size );\n\tgeometry.rotateY( Math.PI * 0.5 );\n\n\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\tconst position = geometry.getAttribute( 'position' );\n\tconst colors = new Float32Array( position.count * 3 );\n\n\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\tthis.add( new Mesh( geometry, this.material ) );\n\n\tthis.update();\n\n}\n\nHemisphereLightHelper.prototype = Object.create( Object3D.prototype );\nHemisphereLightHelper.prototype.constructor = HemisphereLightHelper;\n\nHemisphereLightHelper.prototype.dispose = function () {\n\n\tthis.children[ 0 ].geometry.dispose();\n\tthis.children[ 0 ].material.dispose();\n\n};\n\nHemisphereLightHelper.prototype.update = function () {\n\n\tconst mesh = this.children[ 0 ];\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.material.color.set( this.color );\n\n\t} else {\n\n\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t_color1.copy( this.light.color );\n\t\t_color2.copy( this.light.groundColor );\n\n\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t}\n\n\t\tcolors.needsUpdate = true;\n\n\t}\n\n\tmesh.lookAt( _vector$a.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction GridHelper( size, divisions, color1, color2 ) {\n\n\tsize = size || 10;\n\tdivisions = divisions || 10;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tconst center = divisions / 2;\n\tconst step = size / divisions;\n\tconst halfSize = size / 2;\n\n\tconst vertices = [], colors = [];\n\n\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\tconst color = i === center ? color1 : color2;\n\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\n\t}\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'GridHelper';\n\n}\n\nGridHelper.prototype = Object.assign( Object.create( LineSegments.prototype ), {\n\n\tconstructor: GridHelper,\n\n\tcopy: function ( source ) {\n\n\t\tLineSegments.prototype.copy.call( this, source );\n\n\t\tthis.geometry.copy( source.geometry );\n\t\tthis.material.copy( source.material );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / http://github.com/Mugen87\n * @author Hectate / http://www.github.com/Hectate\n */\n\nfunction PolarGridHelper( radius, radials, circles, divisions, color1, color2 ) {\n\n\tradius = radius || 10;\n\tradials = radials || 16;\n\tcircles = circles || 8;\n\tdivisions = divisions || 64;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tconst vertices = [];\n\tconst colors = [];\n\n\t// create the radials\n\n\tfor ( let i = 0; i <= radials; i ++ ) {\n\n\t\tconst v = ( i / radials ) * ( Math.PI * 2 );\n\n\t\tconst x = Math.sin( v ) * radius;\n\t\tconst z = Math.cos( v ) * radius;\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tvertices.push( x, 0, z );\n\n\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\tcolors.push( color.r, color.g, color.b );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t}\n\n\t// create the circles\n\n\tfor ( let i = 0; i <= circles; i ++ ) {\n\n\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\tconst r = radius - ( radius / circles * i );\n\n\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t// first vertex\n\n\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\tlet x = Math.sin( v ) * r;\n\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t// second vertex\n\n\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\tx = Math.sin( v ) * r;\n\t\t\tz = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t}\n\n\t}\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'PolarGridHelper';\n\n}\n\nPolarGridHelper.prototype = Object.create( LineSegments.prototype );\nPolarGridHelper.prototype.constructor = PolarGridHelper;\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nconst _v1$5 = new Vector3();\nconst _v2$3 = new Vector3();\nconst _v3$1 = new Vector3();\n\nfunction DirectionalLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tif ( size === undefined ) size = 1;\n\n\tlet geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t- size, size, 0,\n\t\tsize, size, 0,\n\t\tsize, - size, 0,\n\t\t- size, - size, 0,\n\t\t- size, size, 0\n\t], 3 ) );\n\n\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\tthis.lightPlane = new Line( geometry, material );\n\tthis.add( this.lightPlane );\n\n\tgeometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\tthis.targetLine = new Line( geometry, material );\n\tthis.add( this.targetLine );\n\n\tthis.update();\n\n}\n\nDirectionalLightHelper.prototype = Object.create( Object3D.prototype );\nDirectionalLightHelper.prototype.constructor = DirectionalLightHelper;\n\nDirectionalLightHelper.prototype.dispose = function () {\n\n\tthis.lightPlane.geometry.dispose();\n\tthis.lightPlane.material.dispose();\n\tthis.targetLine.geometry.dispose();\n\tthis.targetLine.material.dispose();\n\n};\n\nDirectionalLightHelper.prototype.update = function () {\n\n\t_v1$5.setFromMatrixPosition( this.light.matrixWorld );\n\t_v2$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\t_v3$1.subVectors( _v2$3, _v1$5 );\n\n\tthis.lightPlane.lookAt( _v2$3 );\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.lightPlane.material.color.set( this.color );\n\t\tthis.targetLine.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t}\n\n\tthis.targetLine.lookAt( _v2$3 );\n\tthis.targetLine.scale.z = _v3$1.length();\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author Mugen87 / https://github.com/Mugen87\n *\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\n */\n\nconst _vector$b = new Vector3();\nconst _camera = new Camera();\n\nfunction CameraHelper( camera ) {\n\n\tconst geometry = new BufferGeometry();\n\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\tconst vertices = [];\n\tconst colors = [];\n\n\tconst pointMap = {};\n\n\t// colors\n\n\tconst colorFrustum = new Color( 0xffaa00 );\n\tconst colorCone = new Color( 0xff0000 );\n\tconst colorUp = new Color( 0x00aaff );\n\tconst colorTarget = new Color( 0xffffff );\n\tconst colorCross = new Color( 0x333333 );\n\n\t// near\n\n\taddLine( 'n1', 'n2', colorFrustum );\n\taddLine( 'n2', 'n4', colorFrustum );\n\taddLine( 'n4', 'n3', colorFrustum );\n\taddLine( 'n3', 'n1', colorFrustum );\n\n\t// far\n\n\taddLine( 'f1', 'f2', colorFrustum );\n\taddLine( 'f2', 'f4', colorFrustum );\n\taddLine( 'f4', 'f3', colorFrustum );\n\taddLine( 'f3', 'f1', colorFrustum );\n\n\t// sides\n\n\taddLine( 'n1', 'f1', colorFrustum );\n\taddLine( 'n2', 'f2', colorFrustum );\n\taddLine( 'n3', 'f3', colorFrustum );\n\taddLine( 'n4', 'f4', colorFrustum );\n\n\t// cone\n\n\taddLine( 'p', 'n1', colorCone );\n\taddLine( 'p', 'n2', colorCone );\n\taddLine( 'p', 'n3', colorCone );\n\taddLine( 'p', 'n4', colorCone );\n\n\t// up\n\n\taddLine( 'u1', 'u2', colorUp );\n\taddLine( 'u2', 'u3', colorUp );\n\taddLine( 'u3', 'u1', colorUp );\n\n\t// target\n\n\taddLine( 'c', 't', colorTarget );\n\taddLine( 'p', 'c', colorCross );\n\n\t// cross\n\n\taddLine( 'cn1', 'cn2', colorCross );\n\taddLine( 'cn3', 'cn4', colorCross );\n\n\taddLine( 'cf1', 'cf2', colorCross );\n\taddLine( 'cf3', 'cf4', colorCross );\n\n\tfunction addLine( a, b, color ) {\n\n\t\taddPoint( a, color );\n\t\taddPoint( b, color );\n\n\t}\n\n\tfunction addPoint( id, color ) {\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\tpointMap[ id ] = [];\n\n\t\t}\n\n\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'CameraHelper';\n\n\tthis.camera = camera;\n\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\tthis.matrix = camera.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.pointMap = pointMap;\n\n\tthis.update();\n\n}\n\nCameraHelper.prototype = Object.create( LineSegments.prototype );\nCameraHelper.prototype.constructor = CameraHelper;\n\nCameraHelper.prototype.update = function () {\n\n\tconst geometry = this.geometry;\n\tconst pointMap = this.pointMap;\n\n\tconst w = 1, h = 1;\n\n\t// we need just camera projection matrix inverse\n\t// world matrix must be identity\n\n\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t// center / target\n\n\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t// near\n\n\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t// far\n\n\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t// up\n\n\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t// cross\n\n\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n};\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector$b.set( x, y, z ).unproject( camera );\n\n\tconst points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector$b.x, _vector$b.y, _vector$b.z );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / http://github.com/Mugen87\n */\n\nconst _box$3 = new Box3();\n\nfunction BoxHelper( object, color ) {\n\n\tthis.object = object;\n\n\tif ( color === undefined ) color = 0xffff00;\n\n\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\tconst positions = new Float32Array( 8 * 3 );\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\tthis.type = 'BoxHelper';\n\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n}\n\nBoxHelper.prototype = Object.create( LineSegments.prototype );\nBoxHelper.prototype.constructor = BoxHelper;\n\nBoxHelper.prototype.update = function ( object ) {\n\n\tif ( object !== undefined ) {\n\n\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t}\n\n\tif ( this.object !== undefined ) {\n\n\t\t_box$3.setFromObject( this.object );\n\n\t}\n\n\tif ( _box$3.isEmpty() ) return;\n\n\tconst min = _box$3.min;\n\tconst max = _box$3.max;\n\n\t/*\n\t 5____4\n\t1/___0/|\n\t| 6__|_7\n\t2/___3/\n\n\t0: max.x, max.y, max.z\n\t1: min.x, max.y, max.z\n\t2: min.x, min.y, max.z\n\t3: max.x, min.y, max.z\n\t4: max.x, max.y, min.z\n\t5: min.x, max.y, min.z\n\t6: min.x, min.y, min.z\n\t7: max.x, min.y, min.z\n\t*/\n\n\tconst position = this.geometry.attributes.position;\n\tconst array = position.array;\n\n\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\tposition.needsUpdate = true;\n\n\tthis.geometry.computeBoundingSphere();\n\n\n};\n\nBoxHelper.prototype.setFromObject = function ( object ) {\n\n\tthis.object = object;\n\tthis.update();\n\n\treturn this;\n\n};\n\nBoxHelper.prototype.copy = function ( source ) {\n\n\tLineSegments.prototype.copy.call( this, source );\n\n\tthis.object = source.object;\n\n\treturn this;\n\n};\n\nBoxHelper.prototype.clone = function () {\n\n\treturn new this.constructor().copy( this );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3Helper( box, color ) {\n\n\tthis.type = 'Box3Helper';\n\n\tthis.box = box;\n\n\tcolor = color || 0xffff00;\n\n\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\n\tconst positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ];\n\n\tconst geometry = new BufferGeometry();\n\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\tthis.type = 'Box3Helper';\n\n\tthis.geometry.computeBoundingSphere();\n\n}\n\nBox3Helper.prototype = Object.create( LineSegments.prototype );\nBox3Helper.prototype.constructor = Box3Helper;\n\nBox3Helper.prototype.updateMatrixWorld = function ( force ) {\n\n\tconst box = this.box;\n\n\tif ( box.isEmpty() ) return;\n\n\tbox.getCenter( this.position );\n\n\tbox.getSize( this.scale );\n\n\tthis.scale.multiplyScalar( 0.5 );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction PlaneHelper( plane, size, hex ) {\n\n\tthis.plane = plane;\n\n\tthis.size = ( size === undefined ) ? 1 : size;\n\n\tconst color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\tconst positions = [ 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, 0, 1, 0, 0, 0 ];\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\tgeometry.computeBoundingSphere();\n\n\tLine.call( this, geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\tthis.type = 'PlaneHelper';\n\n\t//\n\n\tconst positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ];\n\n\tconst geometry2 = new BufferGeometry();\n\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\tgeometry2.computeBoundingSphere();\n\n\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n}\n\nPlaneHelper.prototype = Object.create( Line.prototype );\nPlaneHelper.prototype.constructor = PlaneHelper;\n\nPlaneHelper.prototype.updateMatrixWorld = function ( force ) {\n\n\tlet scale = - this.plane.constant;\n\n\tif ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter\n\n\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, scale );\n\n\tthis.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here\n\n\tthis.lookAt( this.plane.normal );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n * @author zz85 / http://github.com/zz85\n * @author bhouston / http://clara.io\n *\n * Creates an arrow for visualizing directions\n *\n * Parameters:\n * dir - Vector3\n * origin - Vector3\n * length - Number\n * color - color in hex value\n * headLength - Number\n * headWidth - Number\n */\n\nconst _axis = new Vector3();\nlet _lineGeometry, _coneGeometry;\n\nfunction ArrowHelper( dir, origin, length, color, headLength, headWidth ) {\n\n\t// dir is assumed to be normalized\n\n\tObject3D.call( this );\n\n\tthis.type = 'ArrowHelper';\n\n\tif ( dir === undefined ) dir = new Vector3( 0, 0, 1 );\n\tif ( origin === undefined ) origin = new Vector3( 0, 0, 0 );\n\tif ( length === undefined ) length = 1;\n\tif ( color === undefined ) color = 0xffff00;\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tif ( _lineGeometry === undefined ) {\n\n\t\t_lineGeometry = new BufferGeometry();\n\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t_coneGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 );\n\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t}\n\n\tthis.position.copy( origin );\n\n\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\tthis.line.matrixAutoUpdate = false;\n\tthis.add( this.line );\n\n\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\tthis.cone.matrixAutoUpdate = false;\n\tthis.add( this.cone );\n\n\tthis.setDirection( dir );\n\tthis.setLength( length, headLength, headWidth );\n\n}\n\nArrowHelper.prototype = Object.create( Object3D.prototype );\nArrowHelper.prototype.constructor = ArrowHelper;\n\nArrowHelper.prototype.setDirection = function ( dir ) {\n\n\t// dir is assumed to be normalized\n\n\tif ( dir.y > 0.99999 ) {\n\n\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t} else if ( dir.y < - 0.99999 ) {\n\n\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t} else {\n\n\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\tconst radians = Math.acos( dir.y );\n\n\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t}\n\n};\n\nArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) {\n\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\tthis.line.updateMatrix();\n\n\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\tthis.cone.position.y = length;\n\tthis.cone.updateMatrix();\n\n};\n\nArrowHelper.prototype.setColor = function ( color ) {\n\n\tthis.line.material.color.set( color );\n\tthis.cone.material.color.set( color );\n\n};\n\nArrowHelper.prototype.copy = function ( source ) {\n\n\tObject3D.prototype.copy.call( this, source, false );\n\n\tthis.line.copy( source.line );\n\tthis.cone.copy( source.cone );\n\n\treturn this;\n\n};\n\nArrowHelper.prototype.clone = function () {\n\n\treturn new this.constructor().copy( this );\n\n};\n\n/**\n * @author sroucheray / http://sroucheray.org/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AxesHelper( size ) {\n\n\tsize = size || 1;\n\n\tconst vertices = [\n\t\t0, 0, 0,\tsize, 0, 0,\n\t\t0, 0, 0,\t0, size, 0,\n\t\t0, 0, 0,\t0, 0, size\n\t];\n\n\tconst colors = [\n\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t0, 0, 1,\t0, 0.6, 1\n\t];\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'AxesHelper';\n\n}\n\nAxesHelper.prototype = Object.create( LineSegments.prototype );\nAxesHelper.prototype.constructor = AxesHelper;\n\n/**\n * @author Emmett Lalish / elalish\n *\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n * (PMREM) from a cubeMap environment texture. This allows different levels of\n * blur to be quickly accessed based on material roughness. It is packed into a\n * special CubeUV format that allows us to perform custom interpolation so that\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n * higher roughness levels. In this way we maintain resolution to smoothly\n * interpolate diffuse lighting while limiting sampling computation.\n */\n\nconst LOD_MIN = 4;\nconst LOD_MAX = 8;\nconst SIZE_MAX = Math.pow( 2, LOD_MAX );\n\n// The standard deviations (radians) associated with the extra mips. These are\n// chosen to approximate a Trowbridge-Reitz distribution function times the\n// geometric shadowing function. These sigma values squared must match the\n// variance #defines in cube_uv_reflection_fragment.glsl.js.\nconst EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\n\nconst TOTAL_LODS = LOD_MAX - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\n// samples and exit early, but not recompile the shader.\nconst MAX_SAMPLES = 20;\n\nconst ENCODINGS = {\n\t[ LinearEncoding ]: 0,\n\t[ sRGBEncoding ]: 1,\n\t[ RGBEEncoding ]: 2,\n\t[ RGBM7Encoding ]: 3,\n\t[ RGBM16Encoding ]: 4,\n\t[ RGBDEncoding ]: 5,\n\t[ GammaEncoding ]: 6\n};\n\nconst _flatCamera = new OrthographicCamera();\nconst { _lodPlanes, _sizeLods, _sigmas } = _createPlanes();\nlet _oldTarget = null;\n\n// Golden Ratio\nconst PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\nconst INV_PHI = 1 / PHI;\n\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nconst _axisDirections = [\n\tnew Vector3( 1, 1, 1 ),\n\tnew Vector3( - 1, 1, 1 ),\n\tnew Vector3( 1, 1, - 1 ),\n\tnew Vector3( - 1, 1, - 1 ),\n\tnew Vector3( 0, PHI, INV_PHI ),\n\tnew Vector3( 0, PHI, - INV_PHI ),\n\tnew Vector3( INV_PHI, 0, PHI ),\n\tnew Vector3( - INV_PHI, 0, PHI ),\n\tnew Vector3( PHI, INV_PHI, 0 ),\n\tnew Vector3( - PHI, INV_PHI, 0 ) ];\n\nfunction PMREMGenerator( renderer ) {\n\n\tthis._renderer = renderer;\n\tthis._pingPongRenderTarget = null;\n\n\tthis._blurMaterial = _getBlurShader( MAX_SAMPLES );\n\tthis._equirectShader = null;\n\tthis._cubemapShader = null;\n\n\tthis._compileMaterial( this._blurMaterial );\n\n}\n\nPMREMGenerator.prototype = {\n\n\tconstructor: PMREMGenerator,\n\n\t/**\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n\t * is placed at the origin).\n\t */\n\tfromScene: function ( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\n\t\tif ( sigma > 0 ) {\n\n\t\t\tthis._blur( cubeUVRenderTarget, 0, 0, sigma );\n\n\t\t}\n\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t/**\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input image size is 1k (1024 x 512),\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromEquirectangular: function ( equirectangular ) {\n\n\t\treturn this._fromTexture( equirectangular );\n\n\t},\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromCubemap: function ( cubemap ) {\n\n\t\treturn this._fromTexture( cubemap );\n\n\t},\n\n\t/**\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileCubemapShader: function () {\n\n\t\tif ( this._cubemapShader === null ) {\n\n\t\t\tthis._cubemapShader = _getCubemapShader();\n\t\t\tthis._compileMaterial( this._cubemapShader );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileEquirectangularShader: function () {\n\n\t\tif ( this._equirectShader === null ) {\n\n\t\t\tthis._equirectShader = _getEquirectShader();\n\t\t\tthis._compileMaterial( this._equirectShader );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t * one of them will cause any others to also become unusable.\n\t */\n\tdispose: function () {\n\n\t\tthis._blurMaterial.dispose();\n\n\t\tif ( this._cubemapShader !== null ) this._cubemapShader.dispose();\n\t\tif ( this._equirectShader !== null ) this._equirectShader.dispose();\n\n\t\tfor ( let i = 0; i < _lodPlanes.length; i ++ ) {\n\n\t\t\t_lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t},\n\n\t// private interface\n\n\t_cleanup: function ( outputTarget ) {\n\n\t\tthis._pingPongRenderTarget.dispose();\n\t\tthis._renderer.setRenderTarget( _oldTarget );\n\t\toutputTarget.scissorTest = false;\n\t\t_setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );\n\n\t},\n\n\t_fromTexture: function ( texture ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\tconst cubeUVRenderTarget = this._allocateTargets( texture );\n\t\tthis._textureToCubeUV( texture, cubeUVRenderTarget );\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t_allocateTargets: function ( texture ) { // warning: null texture is valid\n\n\t\tconst params = {\n\t\t\tmagFilter: NearestFilter,\n\t\t\tminFilter: NearestFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\ttype: UnsignedByteType,\n\t\t\tformat: RGBEFormat,\n\t\t\tencoding: _isLDR( texture ) ? texture.encoding : RGBEEncoding,\n\t\t\tdepthBuffer: false,\n\t\t\tstencilBuffer: false\n\t\t};\n\n\t\tconst cubeUVRenderTarget = _createRenderTarget( params );\n\t\tcubeUVRenderTarget.depthBuffer = texture ? false : true;\n\t\tthis._pingPongRenderTarget = _createRenderTarget( params );\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t_compileMaterial: function ( material ) {\n\n\t\tconst tmpMesh = new Mesh( _lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t},\n\n\t_sceneToCubeUV: function ( scene, near, far, cubeUVRenderTarget ) {\n\n\t\tconst fov = 90;\n\t\tconst aspect = 1;\n\t\tconst cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\n\t\tconst upSign = [ 1, - 1, 1, 1, 1, 1 ];\n\t\tconst forwardSign = [ 1, 1, 1, - 1, - 1, - 1 ];\n\t\tconst renderer = this._renderer;\n\n\t\tconst outputEncoding = renderer.outputEncoding;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\tconst clearColor = renderer.getClearColor();\n\t\tconst clearAlpha = renderer.getClearAlpha();\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.outputEncoding = LinearEncoding;\n\n\t\tlet background = scene.background;\n\t\tif ( background && background.isColor ) {\n\n\t\t\tbackground.convertSRGBToLinear();\n\t\t\t// Convert linear to RGBE\n\t\t\tconst maxComponent = Math.max( background.r, background.g, background.b );\n\t\t\tconst fExp = Math.min( Math.max( Math.ceil( Math.log2( maxComponent ) ), - 128.0 ), 127.0 );\n\t\t\tbackground = background.multiplyScalar( Math.pow( 2.0, - fExp ) );\n\t\t\tconst alpha = ( fExp + 128.0 ) / 255.0;\n\t\t\trenderer.setClearColor( background, alpha );\n\t\t\tscene.background = null;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst col = i % 3;\n\t\t\tif ( col == 0 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\n\n\t\t\t} else if ( col == 1 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\n\t\t\t\tcubeCamera.lookAt( 0, forwardSign[ i ], 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\n\n\t\t\t}\n\n\t\t\t_setViewport( cubeUVRenderTarget,\n\t\t\t\tcol * SIZE_MAX, i > 2 ? SIZE_MAX : 0, SIZE_MAX, SIZE_MAX );\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\t\trenderer.render( scene, cubeCamera );\n\n\t\t}\n\n\t\trenderer.toneMapping = toneMapping;\n\t\trenderer.outputEncoding = outputEncoding;\n\t\trenderer.setClearColor( clearColor, clearAlpha );\n\n\t},\n\n\t_textureToCubeUV: function ( texture, cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\n\t\tif ( texture.isCubeTexture ) {\n\n\t\t\tif ( this._cubemapShader == null ) {\n\n\t\t\t\tthis._cubemapShader = _getCubemapShader();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( this._equirectShader == null ) {\n\n\t\t\t\tthis._equirectShader = _getEquirectShader();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst material = texture.isCubeTexture ? this._cubemapShader : this._equirectShader;\n\t\tconst mesh = new Mesh( _lodPlanes[ 0 ], material );\n\n\t\tconst uniforms = material.uniforms;\n\n\t\tuniforms[ 'envMap' ].value = texture;\n\n\t\tif ( ! texture.isCubeTexture ) {\n\n\t\t\tuniforms[ 'texelSize' ].value.set( 1.0 / texture.image.width, 1.0 / texture.image.height );\n\n\t\t}\n\n\t\tuniforms[ 'inputEncoding' ].value = ENCODINGS[ texture.encoding ];\n\t\tuniforms[ 'outputEncoding' ].value = ENCODINGS[ cubeUVRenderTarget.texture.encoding ];\n\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * SIZE_MAX, 2 * SIZE_MAX );\n\n\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\trenderer.render( mesh, _flatCamera );\n\n\t},\n\n\t_applyPMREM: function ( cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tfor ( let i = 1; i < TOTAL_LODS; i ++ ) {\n\n\t\t\tconst sigma = Math.sqrt( _sigmas[ i ] * _sigmas[ i ] - _sigmas[ i - 1 ] * _sigmas[ i - 1 ] );\n\n\t\t\tconst poleAxis = _axisDirections[ ( i - 1 ) % _axisDirections.length ];\n\n\t\t\tthis._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\n\t},\n\n\t/**\n\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n\t * vertically and horizontally, but this breaks down on a cube. Here we apply\n\t * the blur latitudinally (around the poles), and then longitudinally (towards\n\t * the poles) to approximate the orthogonally-separable blur. It is least\n\t * accurate at the poles, but still does a decent job.\n\t */\n\t_blur: function ( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\n\n\t\tconst pingPongRenderTarget = this._pingPongRenderTarget;\n\n\t\tthis._halfBlur(\n\t\t\tcubeUVRenderTarget,\n\t\t\tpingPongRenderTarget,\n\t\t\tlodIn,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'latitudinal',\n\t\t\tpoleAxis );\n\n\t\tthis._halfBlur(\n\t\t\tpingPongRenderTarget,\n\t\t\tcubeUVRenderTarget,\n\t\t\tlodOut,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'longitudinal',\n\t\t\tpoleAxis );\n\n\t},\n\n\t_halfBlur: function ( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst blurMaterial = this._blurMaterial;\n\n\t\tif ( direction !== 'latitudinal' && direction !== 'longitudinal' ) {\n\n\t\t\tconsole.error(\n\t\t\t\t'blur direction must be either latitudinal or longitudinal!' );\n\n\t\t}\n\n\t\t// Number of standard deviations at which to cut off the discrete approximation.\n\t\tconst STANDARD_DEVIATIONS = 3;\n\n\t\tconst blurMesh = new Mesh( _lodPlanes[ lodOut ], blurMaterial );\n\t\tconst blurUniforms = blurMaterial.uniforms;\n\n\t\tconst pixels = _sizeLods[ lodIn ] - 1;\n\t\tconst radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\n\t\tconst sigmaPixels = sigmaRadians / radiansPerPixel;\n\t\tconst samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;\n\n\t\tif ( samples > MAX_SAMPLES ) {\n\n\t\t\tconsole.warn( `sigmaRadians, ${\n\t\t\t\tsigmaRadians}, is too large and will clip, as it requested ${\n\t\t\t\tsamples} samples when the maximum is set to ${MAX_SAMPLES}` );\n\n\t\t}\n\n\t\tconst weights = [];\n\t\tlet sum = 0;\n\n\t\tfor ( let i = 0; i < MAX_SAMPLES; ++ i ) {\n\n\t\t\tconst x = i / sigmaPixels;\n\t\t\tconst weight = Math.exp( - x * x / 2 );\n\t\t\tweights.push( weight );\n\n\t\t\tif ( i == 0 ) {\n\n\t\t\t\tsum += weight;\n\n\t\t\t} else if ( i < samples ) {\n\n\t\t\t\tsum += 2 * weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < weights.length; i ++ ) {\n\n\t\t\tweights[ i ] = weights[ i ] / sum;\n\n\t\t}\n\n\t\tblurUniforms[ 'envMap' ].value = targetIn.texture;\n\t\tblurUniforms[ 'samples' ].value = samples;\n\t\tblurUniforms[ 'weights' ].value = weights;\n\t\tblurUniforms[ 'latitudinal' ].value = direction === 'latitudinal';\n\n\t\tif ( poleAxis ) {\n\n\t\t\tblurUniforms[ 'poleAxis' ].value = poleAxis;\n\n\t\t}\n\n\t\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\t\tblurUniforms[ 'mipInt' ].value = LOD_MAX - lodIn;\n\t\tblurUniforms[ 'inputEncoding' ].value = ENCODINGS[ targetIn.texture.encoding ];\n\t\tblurUniforms[ 'outputEncoding' ].value = ENCODINGS[ targetIn.texture.encoding ];\n\n\t\tconst outputSize = _sizeLods[ lodOut ];\n\t\tconst x = 3 * Math.max( 0, SIZE_MAX - 2 * outputSize );\n\t\tconst y = ( lodOut === 0 ? 0 : 2 * SIZE_MAX ) + 2 * outputSize * ( lodOut > LOD_MAX - LOD_MIN ? lodOut - LOD_MAX + LOD_MIN : 0 );\n\n\t\t_setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );\n\t\trenderer.setRenderTarget( targetOut );\n\t\trenderer.render( blurMesh, _flatCamera );\n\n\t}\n\n};\n\nfunction _isLDR( texture ) {\n\n\tif ( texture === undefined || texture.type !== UnsignedByteType ) return false;\n\n\treturn texture.encoding === LinearEncoding || texture.encoding === sRGBEncoding || texture.encoding === GammaEncoding;\n\n}\n\nfunction _createPlanes() {\n\n\tconst _lodPlanes = [];\n\tconst _sizeLods = [];\n\tconst _sigmas = [];\n\n\tlet lod = LOD_MAX;\n\n\tfor ( let i = 0; i < TOTAL_LODS; i ++ ) {\n\n\t\tconst sizeLod = Math.pow( 2, lod );\n\t\t_sizeLods.push( sizeLod );\n\t\tlet sigma = 1.0 / sizeLod;\n\n\t\tif ( i > LOD_MAX - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - LOD_MAX + LOD_MIN - 1 ];\n\n\t\t} else if ( i == 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\n\t\t_sigmas.push( sigma );\n\n\t\tconst texelSize = 1.0 / ( sizeLod - 1 );\n\t\tconst min = - texelSize / 2;\n\t\tconst max = 1 + texelSize / 2;\n\t\tconst uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\n\n\t\tconst cubeFaces = 6;\n\t\tconst vertices = 6;\n\t\tconst positionSize = 3;\n\t\tconst uvSize = 2;\n\t\tconst faceIndexSize = 1;\n\n\t\tconst position = new Float32Array( positionSize * vertices * cubeFaces );\n\t\tconst uv = new Float32Array( uvSize * vertices * cubeFaces );\n\t\tconst faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\n\n\t\tfor ( let face = 0; face < cubeFaces; face ++ ) {\n\n\t\t\tconst x = ( face % 3 ) * 2 / 3 - 1;\n\t\t\tconst y = face > 2 ? 0 : - 1;\n\t\t\tconst coordinates = [\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y + 1, 0\n\t\t\t];\n\t\t\tposition.set( coordinates, positionSize * vertices * face );\n\t\t\tuv.set( uv1, uvSize * vertices * face );\n\t\t\tconst fill = [ face, face, face, face, face, face ];\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\n\n\t\t}\n\n\t\tconst planes = new BufferGeometry();\n\t\tplanes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );\n\t\tplanes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );\n\t\tplanes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );\n\t\t_lodPlanes.push( planes );\n\n\t\tif ( lod > LOD_MIN ) {\n\n\t\t\tlod --;\n\n\t\t}\n\n\t}\n\n\treturn { _lodPlanes, _sizeLods, _sigmas };\n\n}\n\nfunction _createRenderTarget( params ) {\n\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( 3 * SIZE_MAX, 3 * SIZE_MAX, params );\n\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\n\tcubeUVRenderTarget.scissorTest = true;\n\treturn cubeUVRenderTarget;\n\n}\n\nfunction _setViewport( target, x, y, width, height ) {\n\n\ttarget.viewport.set( x, y, width, height );\n\ttarget.scissor.set( x, y, width, height );\n\n}\n\nfunction _getBlurShader( maxSamples ) {\n\n\tconst weights = new Float32Array( maxSamples );\n\tconst poleAxis = new Vector3( 0, 1, 0 );\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'SphericalGaussianBlur',\n\n\t\tdefines: { 'n': maxSamples },\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'samples': { value: 1 },\n\t\t\t'weights': { value: weights },\n\t\t\t'latitudinal': { value: false },\n\t\t\t'dTheta': { value: 0 },\n\t\t\t'mipInt': { value: 0 },\n\t\t\t'poleAxis': { value: poleAxis },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: `\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform sampler2D envMap;\nuniform int samples;\nuniform float weights[n];\nuniform bool latitudinal;\nuniform float dTheta;\nuniform float mipInt;\nuniform vec3 poleAxis;\n\n${_getEncodings()}\n\n#define ENVMAP_TYPE_CUBE_UV\n#include \n\nvec3 getSample(float theta, vec3 axis) {\n\tfloat cosTheta = cos(theta);\n\t// Rodrigues' axis-angle rotation\n\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t+ cross(axis, vOutputDirection) * sin(theta)\n\t\t+ axis * dot(axis, vOutputDirection) * (1.0 - cosTheta);\n\treturn bilinearCubeUV(envMap, sampleDirection, mipInt);\n}\n\nvoid main() {\n\tvec3 axis = latitudinal ? poleAxis : cross(poleAxis, vOutputDirection);\n\tif (all(equal(axis, vec3(0.0))))\n\t\taxis = vec3(vOutputDirection.z, 0.0, - vOutputDirection.x);\n\taxis = normalize(axis);\n\tgl_FragColor = vec4(0.0);\n\tgl_FragColor.rgb += weights[0] * getSample(0.0, axis);\n\tfor (int i = 1; i < n; i++) {\n\t\tif (i >= samples)\n\t\t\tbreak;\n\t\tfloat theta = dTheta * float(i);\n\t\tgl_FragColor.rgb += weights[i] * getSample(-1.0 * theta, axis);\n\t\tgl_FragColor.rgb += weights[i] * getSample(theta, axis);\n\t}\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getEquirectShader() {\n\n\tconst texelSize = new Vector2( 1, 1 );\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'EquirectangularToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'texelSize': { value: texelSize },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: `\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform sampler2D envMap;\nuniform vec2 texelSize;\n\n${_getEncodings()}\n\n#include \n\nvoid main() {\n\tgl_FragColor = vec4(0.0);\n\tvec3 outputDirection = normalize(vOutputDirection);\n\tvec2 uv = equirectUv( outputDirection );\n\tvec2 f = fract(uv / texelSize - 0.5);\n\tuv -= f * texelSize;\n\tvec3 tl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.x += texelSize.x;\n\tvec3 tr = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.y += texelSize.y;\n\tvec3 br = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.x -= texelSize.x;\n\tvec3 bl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tvec3 tm = mix(tl, tr, f.x);\n\tvec3 bm = mix(bl, br, f.x);\n\tgl_FragColor.rgb = mix(tm, bm, f.y);\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getCubemapShader() {\n\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'CubemapToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: `\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform samplerCube envMap;\n\n${_getEncodings()}\n\nvoid main() {\n\tgl_FragColor = vec4(0.0);\n\tgl_FragColor.rgb = envMapTexelToLinear(textureCube(envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ))).rgb;\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn `\nprecision mediump float;\nprecision mediump int;\nattribute vec3 position;\nattribute vec2 uv;\nattribute float faceIndex;\nvarying vec3 vOutputDirection;\n\n// RH coordinate system; PMREM face-indexing convention\nvec3 getDirection(vec2 uv, float face) {\n\tuv = 2.0 * uv - 1.0;\n\tvec3 direction = vec3(uv, 1.0);\n\tif (face == 0.0) {\n\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\t} else if (face == 1.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\t} else if (face == 2.0) {\n\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\t} else if (face == 3.0) {\n\t\tdirection = direction.zyx;\n\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\t} else if (face == 4.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\t} else if (face == 5.0) {\n\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\t}\n\treturn direction;\n}\n\nvoid main() {\n\tvOutputDirection = getDirection(uv, faceIndex);\n\tgl_Position = vec4( position, 1.0 );\n}\n\t`;\n\n}\n\nfunction _getEncodings() {\n\n\treturn `\nuniform int inputEncoding;\nuniform int outputEncoding;\n\n#include \n\nvec4 inputTexelToLinear(vec4 value){\n\tif(inputEncoding == 0){\n\t\treturn value;\n\t}else if(inputEncoding == 1){\n\t\treturn sRGBToLinear(value);\n\t}else if(inputEncoding == 2){\n\t\treturn RGBEToLinear(value);\n\t}else if(inputEncoding == 3){\n\t\treturn RGBMToLinear(value, 7.0);\n\t}else if(inputEncoding == 4){\n\t\treturn RGBMToLinear(value, 16.0);\n\t}else if(inputEncoding == 5){\n\t\treturn RGBDToLinear(value, 256.0);\n\t}else{\n\t\treturn GammaToLinear(value, 2.2);\n\t}\n}\n\nvec4 linearToOutputTexel(vec4 value){\n\tif(outputEncoding == 0){\n\t\treturn value;\n\t}else if(outputEncoding == 1){\n\t\treturn LinearTosRGB(value);\n\t}else if(outputEncoding == 2){\n\t\treturn LinearToRGBE(value);\n\t}else if(outputEncoding == 3){\n\t\treturn LinearToRGBM(value, 7.0);\n\t}else if(outputEncoding == 4){\n\t\treturn LinearToRGBM(value, 16.0);\n\t}else if(outputEncoding == 5){\n\t\treturn LinearToRGBD(value, 256.0);\n\t}else{\n\t\treturn LinearToGamma(value, 2.2);\n\t}\n}\n\nvec4 envMapTexelToLinear(vec4 color) {\n\treturn inputTexelToLinear(color);\n}\n\t`;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Face4( a, b, c, d, normal, color, materialIndex ) {\n\n\tconsole.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' );\n\treturn new Face3( a, b, c, normal, color, materialIndex );\n\n}\n\nconst LineStrip = 0;\nconst LinePieces = 1;\nconst NoColors = 0;\nconst FaceColors = 1;\nconst VertexColors = 2;\n\nfunction MeshFaceMaterial( materials ) {\n\n\tconsole.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' );\n\treturn materials;\n\n}\n\nfunction MultiMaterial( materials ) {\n\n\tif ( materials === undefined ) materials = [];\n\n\tconsole.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' );\n\tmaterials.isMultiMaterial = true;\n\tmaterials.materials = materials;\n\tmaterials.clone = function () {\n\n\t\treturn materials.slice();\n\n\t};\n\n\treturn materials;\n\n}\n\nfunction PointCloud( geometry, material ) {\n\n\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction Particle( material ) {\n\n\tconsole.warn( 'THREE.Particle has been renamed to THREE.Sprite.' );\n\treturn new Sprite( material );\n\n}\n\nfunction ParticleSystem( geometry, material ) {\n\n\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction PointCloudMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleBasicMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleSystemMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction Vertex( x, y, z ) {\n\n\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\treturn new Vector3( x, y, z );\n\n}\n\n//\n\nfunction DynamicBufferAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead.' );\n\treturn new BufferAttribute( array, itemSize ).setUsage( DynamicDrawUsage );\n\n}\n\nfunction Int8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' );\n\treturn new Int8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' );\n\treturn new Uint8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8ClampedAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' );\n\treturn new Uint8ClampedBufferAttribute( array, itemSize );\n\n}\n\nfunction Int16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' );\n\treturn new Int16BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' );\n\treturn new Uint16BufferAttribute( array, itemSize );\n\n}\n\nfunction Int32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' );\n\treturn new Int32BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' );\n\treturn new Uint32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' );\n\treturn new Float32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float64Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' );\n\treturn new Float64BufferAttribute( array, itemSize );\n\n}\n\n//\n\nCurve.create = function ( construct, getPoint ) {\n\n\tconsole.log( 'THREE.Curve.create() has been deprecated' );\n\n\tconstruct.prototype = Object.create( Curve.prototype );\n\tconstruct.prototype.constructor = construct;\n\tconstruct.prototype.getPoint = getPoint;\n\n\treturn construct;\n\n};\n\n//\n\nObject.assign( CurvePath.prototype, {\n\n\tcreatePointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from path points (for Line or Points objects)\n\n\t\tconst pts = this.getPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateSpacedPointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from equidistant sampling along the path\n\n\t\tconst pts = this.getSpacedPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateGeometry: function ( points ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\tconst geometry = new Geometry();\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tgeometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\n//\n\nObject.assign( Path.prototype, {\n\n\tfromPoints: function ( points ) {\n\n\t\tconsole.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' );\n\t\treturn this.setFromPoints( points );\n\n\t}\n\n} );\n\n//\n\nfunction ClosedSplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\tthis.closed = true;\n\n}\n\nClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction SplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction Spline( points ) {\n\n\tconsole.warn( 'THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSpline.prototype = Object.create( CatmullRomCurve3.prototype );\n\nObject.assign( Spline.prototype, {\n\n\tinitFromArray: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .initFromArray() has been removed.' );\n\n\t},\n\tgetControlPointsArray: function ( /* optionalTarget */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .getControlPointsArray() has been removed.' );\n\n\t},\n\treparametrizeByArcLength: function ( /* samplingCoef */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .reparametrizeByArcLength() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nfunction AxisHelper( size ) {\n\n\tconsole.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' );\n\treturn new AxesHelper( size );\n\n}\n\nfunction BoundingBoxHelper( object, color ) {\n\n\tconsole.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' );\n\treturn new BoxHelper( object, color );\n\n}\n\nfunction EdgesHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' );\n\treturn new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\nGridHelper.prototype.setColors = function () {\n\n\tconsole.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' );\n\n};\n\nSkeletonHelper.prototype.update = function () {\n\n\tconsole.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' );\n\n};\n\nfunction WireframeHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' );\n\treturn new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\n//\n\nObject.assign( Loader.prototype, {\n\n\textractUrlBase: function ( url ) {\n\n\t\tconsole.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' );\n\t\treturn LoaderUtils.extractUrlBase( url );\n\n\t}\n\n} );\n\nLoader.Handlers = {\n\n\tadd: function ( /* regex, loader */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.' );\n\n\t},\n\n\tget: function ( /* file */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.' );\n\n\t}\n\n};\n\nfunction XHRLoader( manager ) {\n\n\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\n\treturn new FileLoader( manager );\n\n}\n\nfunction BinaryTextureLoader( manager ) {\n\n\tconsole.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' );\n\treturn new DataTextureLoader( manager );\n\n}\n\nObject.assign( ObjectLoader.prototype, {\n\n\tsetTexturePath: function ( value ) {\n\n\t\tconsole.warn( 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().' );\n\t\treturn this.setResourcePath( value );\n\n\t}\n\n} );\n\n//\n\nObject.assign( Box2.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nObject.assign( Box3.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nObject.assign( Sphere.prototype, {\n\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Sphere: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\n} );\n\nFrustum.prototype.setFromMatrix = function ( m ) {\n\n\tconsole.warn( 'THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix().' );\n\treturn this.setFromProjectionMatrix( m );\n\n};\n\nLine3.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nObject.assign( MathUtils, {\n\n\trandom16: function () {\n\n\t\tconsole.warn( 'THREE.Math: .random16() has been deprecated. Use Math.random() instead.' );\n\t\treturn Math.random();\n\n\t},\n\n\tnearestPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().' );\n\t\treturn MathUtils.floorPowerOfTwo( value );\n\n\t},\n\n\tnextPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().' );\n\t\treturn MathUtils.ceilPowerOfTwo( value );\n\n\t}\n\n} );\n\nObject.assign( Matrix3.prototype, {\n\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\t\treturn vector.applyMatrix3( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' );\n\n\t},\n\tapplyToBufferAttribute: function ( attribute ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead.' );\n\t\treturn attribute.applyMatrix3( this );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' );\n\n\t}\n\n} );\n\nObject.assign( Matrix4.prototype, {\n\n\textractPosition: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\t\treturn this.copyPosition( m );\n\n\t},\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tgetPosition: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\t\treturn new Vector3().setFromMatrixColumn( this, 3 );\n\n\t},\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\t\treturn this.makeRotationFromQuaternion( q );\n\n\t},\n\tmultiplyToArray: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector4: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' );\n\n\t},\n\trotateAxis: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\t\tv.transformDirection( this );\n\n\t},\n\tcrossVector: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\ttranslate: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\n\t},\n\trotateX: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\n\t},\n\trotateY: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\n\t},\n\trotateZ: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\n\t},\n\trotateByAxis: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\n\t},\n\tapplyToBufferAttribute: function ( attribute ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead.' );\n\t\treturn attribute.applyMatrix4( this );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' );\n\n\t},\n\tmakeFrustum: function ( left, right, bottom, top, near, far ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' );\n\t\treturn this.makePerspective( left, right, top, bottom, near, far );\n\n\t}\n\n} );\n\nPlane.prototype.isIntersectionLine = function ( line ) {\n\n\tconsole.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' );\n\treturn this.intersectsLine( line );\n\n};\n\nQuaternion.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\n\treturn vector.applyQuaternion( this );\n\n};\n\nObject.assign( Ray.prototype, {\n\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionPlane: function ( plane ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\t\treturn this.intersectsPlane( plane );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t}\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tarea: function () {\n\n\t\tconsole.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' );\n\t\treturn this.getArea();\n\n\t},\n\tbarycoordFromPoint: function ( point, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn this.getBarycoord( point, target );\n\n\t},\n\tmidpoint: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' );\n\t\treturn this.getMidpoint( target );\n\n\t},\n\tnormal: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn this.getNormal( target );\n\n\t},\n\tplane: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' );\n\t\treturn this.getPlane( target );\n\n\t}\n\n} );\n\nObject.assign( Triangle, {\n\n\tbarycoordFromPoint: function ( point, a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn Triangle.getBarycoord( point, a, b, c, target );\n\n\t},\n\tnormal: function ( a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn Triangle.getNormal( a, b, c, target );\n\n\t}\n\n} );\n\nObject.assign( Shape.prototype, {\n\n\textractAllPoints: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' );\n\t\treturn this.extractPoints( divisions );\n\n\t},\n\textrude: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\n\t\treturn new ExtrudeGeometry( this, options );\n\n\t},\n\tmakeGeometry: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\n\t\treturn new ShapeGeometry( this, options );\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector3.prototype, {\n\n\tsetEulerFromRotationMatrix: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\n\t},\n\tsetEulerFromQuaternion: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\n\t},\n\tgetPositionFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\t\treturn this.setFromMatrixPosition( m );\n\n\t},\n\tgetScaleFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\t\treturn this.setFromMatrixScale( m );\n\n\t},\n\tgetColumnFromMatrix: function ( index, matrix ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\t\treturn this.setFromMatrixColumn( matrix, index );\n\n\t},\n\tapplyProjection: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' );\n\t\treturn this.applyMatrix4( m );\n\n\t},\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\n//\n\nObject.assign( Geometry.prototype, {\n\n\tcomputeTangents: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeLineDistances: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.' );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.assign( Object3D.prototype, {\n\n\tgetChildByName: function ( name ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\t\treturn this.getObjectByName( name );\n\n\t},\n\trenderDepth: function () {\n\n\t\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\n\t},\n\ttranslate: function ( distance, axis ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\t\treturn this.translateOnAxis( axis, distance );\n\n\t},\n\tgetWorldRotation: function () {\n\n\t\tconsole.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.defineProperties( Object3D.prototype, {\n\n\teulerOrder: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\treturn this.rotation.order;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\tthis.rotation.order = value;\n\n\t\t}\n\t},\n\tuseQuaternion: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( Mesh.prototype, {\n\n\tsetDrawMode: function () {\n\n\t\tconsole.error( 'THREE.Mesh: .setDrawMode() has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.' );\n\n\t},\n\n} );\n\nObject.defineProperties( Mesh.prototype, {\n\n\tdrawMode: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode.' );\n\t\t\treturn TrianglesDrawMode;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.error( 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( LOD.prototype, {\n\n\tobjects: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.LOD: .objects has been renamed to .levels.' );\n\t\t\treturn this.levels;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperty( Skeleton.prototype, 'useVertexTexture', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t},\n\tset: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t}\n\n} );\n\nSkinnedMesh.prototype.initBones = function () {\n\n\tconsole.error( 'THREE.SkinnedMesh: initBones() has been removed.' );\n\n};\n\nObject.defineProperty( Curve.prototype, '__arcLengthDivisions', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\treturn this.arcLengthDivisions;\n\n\t},\n\tset: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\tthis.arcLengthDivisions = value;\n\n\t}\n\n} );\n\n//\n\nPerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) {\n\n\tconsole.warn( \"THREE.PerspectiveCamera.setLens is deprecated. \" +\n\t\t\t\"Use .setFocalLength and .filmGauge for a photographic setup.\" );\n\n\tif ( filmGauge !== undefined ) this.filmGauge = filmGauge;\n\tthis.setFocalLength( focalLength );\n\n};\n\n//\n\nObject.defineProperties( Light.prototype, {\n\tonlyShadow: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .onlyShadow has been removed.' );\n\n\t\t}\n\t},\n\tshadowCameraFov: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' );\n\t\t\tthis.shadow.camera.fov = value;\n\n\t\t}\n\t},\n\tshadowCameraLeft: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' );\n\t\t\tthis.shadow.camera.left = value;\n\n\t\t}\n\t},\n\tshadowCameraRight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' );\n\t\t\tthis.shadow.camera.right = value;\n\n\t\t}\n\t},\n\tshadowCameraTop: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' );\n\t\t\tthis.shadow.camera.top = value;\n\n\t\t}\n\t},\n\tshadowCameraBottom: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' );\n\t\t\tthis.shadow.camera.bottom = value;\n\n\t\t}\n\t},\n\tshadowCameraNear: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' );\n\t\t\tthis.shadow.camera.near = value;\n\n\t\t}\n\t},\n\tshadowCameraFar: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' );\n\t\t\tthis.shadow.camera.far = value;\n\n\t\t}\n\t},\n\tshadowCameraVisible: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' );\n\n\t\t}\n\t},\n\tshadowBias: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' );\n\t\t\tthis.shadow.bias = value;\n\n\t\t}\n\t},\n\tshadowDarkness: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowDarkness has been removed.' );\n\n\t\t}\n\t},\n\tshadowMapWidth: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' );\n\t\t\tthis.shadow.mapSize.width = value;\n\n\t\t}\n\t},\n\tshadowMapHeight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' );\n\t\t\tthis.shadow.mapSize.height = value;\n\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( BufferAttribute.prototype, {\n\n\tlength: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' );\n\t\t\treturn this.array.length;\n\n\t\t}\n\t},\n\tdynamic: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\treturn this.usage === DynamicDrawUsage;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\tthis.setUsage( DynamicDrawUsage );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( BufferAttribute.prototype, {\n\tsetDynamic: function ( value ) {\n\n\t\tconsole.warn( 'THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\t\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\t\treturn this;\n\n\t},\n\tcopyIndicesArray: function ( /* indices */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' );\n\n\t},\n\tsetArray: function ( /* array */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n\t}\n} );\n\nObject.assign( BufferGeometry.prototype, {\n\n\taddIndex: function ( index ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\t\tthis.setIndex( index );\n\n\t},\n\taddAttribute: function ( name, attribute ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute().' );\n\n\t\tif ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\t\treturn this.setAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t\t}\n\n\t\tif ( name === 'index' ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\t\tthis.setIndex( attribute );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\treturn this.setAttribute( name, attribute );\n\n\t},\n\taddDrawCall: function ( start, count, indexOffset ) {\n\n\t\tif ( indexOffset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\n\t\t}\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\t\tthis.addGroup( start, count );\n\n\t},\n\tclearDrawCalls: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\t\tthis.clearGroups();\n\n\t},\n\tcomputeTangents: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeOffsets: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\n\t},\n\tremoveAttribute: function ( name ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute().' );\n\n\t\treturn this.deleteAttribute( name );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.defineProperties( BufferGeometry.prototype, {\n\n\tdrawcalls: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t},\n\toffsets: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( InstancedBufferGeometry.prototype, {\n\n\tmaxInstancedCount: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount.' );\n\t\t\treturn this.instanceCount;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount.' );\n\t\t\tthis.instanceCount = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( Raycaster.prototype, {\n\n\tlinePrecision: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead.' );\n\t\t\treturn this.params.Line.threshold;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead.' );\n\t\t\tthis.params.Line.threshold = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( InterleavedBuffer.prototype, {\n\n\tdynamic: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.' );\n\t\t\treturn this.usage === DynamicDrawUsage;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.' );\n\t\t\tthis.setUsage( value );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\tsetDynamic: function ( value ) {\n\n\t\tconsole.warn( 'THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\t\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\t\treturn this;\n\n\t},\n\tsetArray: function ( /* array */ ) {\n\n\t\tconsole.error( 'THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n\t}\n} );\n\n//\n\nObject.assign( ExtrudeBufferGeometry.prototype, {\n\n\tgetArrays: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .getArrays() has been removed.' );\n\n\t},\n\n\taddShapeList: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.' );\n\n\t},\n\n\taddShape: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShape() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Uniform.prototype, {\n\n\tdynamic: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' );\n\n\t\t}\n\t},\n\tonUpdate: {\n\t\tvalue: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\t\t\treturn this;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Material.prototype, {\n\n\twrapAround: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t}\n\t},\n\n\toverdraw: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t}\n\t},\n\n\twrapRGB: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapRGB has been removed.' );\n\t\t\treturn new Color();\n\n\t\t}\n\t},\n\n\tshading: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\tthis.flatShading = ( value === FlatShading );\n\n\t\t}\n\t},\n\n\tstencilMask: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\treturn this.stencilFuncMask;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\tthis.stencilFuncMask = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( MeshPhongMaterial.prototype, {\n\n\tmetal: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( ShaderMaterial.prototype, {\n\n\tderivatives: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\treturn this.extensions.derivatives;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\tthis.extensions.derivatives = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.assign( WebGLRenderer.prototype, {\n\n\tclearTarget: function ( renderTarget, color, depth, stencil ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' );\n\t\tthis.setRenderTarget( renderTarget );\n\t\tthis.clear( color, depth, stencil );\n\n\t},\n\tanimate: function ( callback ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' );\n\t\tthis.setAnimationLoop( callback );\n\n\t},\n\tgetCurrentRenderTarget: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' );\n\t\treturn this.getRenderTarget();\n\n\t},\n\tgetMaxAnisotropy: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' );\n\t\treturn this.capabilities.getMaxAnisotropy();\n\n\t},\n\tgetPrecision: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' );\n\t\treturn this.capabilities.precision;\n\n\t},\n\tresetGLState: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' );\n\t\treturn this.state.reset();\n\n\t},\n\tsupportsFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_float' );\n\n\t},\n\tsupportsHalfFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_half_float' );\n\n\t},\n\tsupportsStandardDerivatives: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\t\treturn this.extensions.get( 'OES_standard_derivatives' );\n\n\t},\n\tsupportsCompressedTextureS3TC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t},\n\tsupportsCompressedTexturePVRTC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t},\n\tsupportsBlendMinMax: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\t\treturn this.extensions.get( 'EXT_blend_minmax' );\n\n\t},\n\tsupportsVertexTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' );\n\t\treturn this.capabilities.vertexTextures;\n\n\t},\n\tsupportsInstancedArrays: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\t\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\n\t},\n\tenableScissorTest: function ( boolean ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\t\tthis.setScissorTest( boolean );\n\n\t},\n\tinitMaterial: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\n\t},\n\taddPrePlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\n\t},\n\taddPostPlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\n\t},\n\tupdateShadowMap: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\n\t},\n\tsetFaceCulling: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' );\n\n\t},\n\tallocTextureUnit: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .allocTextureUnit() has been removed.' );\n\n\t},\n\tsetTexture: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture() has been removed.' );\n\n\t},\n\tsetTexture2D: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture2D() has been removed.' );\n\n\t},\n\tsetTextureCube: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTextureCube() has been removed.' );\n\n\t},\n\tgetActiveMipMapLevel: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().' );\n\t\treturn this.getActiveMipmapLevel();\n\n\t}\n\n} );\n\nObject.defineProperties( WebGLRenderer.prototype, {\n\n\tshadowMapEnabled: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.enabled;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\tthis.shadowMap.enabled = value;\n\n\t\t}\n\t},\n\tshadowMapType: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\tthis.shadowMap.type = value;\n\n\t\t}\n\t},\n\tshadowMapCullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\tcontext: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.' );\n\t\t\treturn this.getContext();\n\n\t\t}\n\t},\n\tvr: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .vr has been renamed to .xr' );\n\t\t\treturn this.xr;\n\n\t\t}\n\t},\n\tgammaInput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\n\t\t}\n\t},\n\tgammaOutput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\tthis.outputEncoding = ( value === true ) ? sRGBEncoding : LinearEncoding;\n\n\t\t}\n\t},\n\ttoneMappingWhitePoint: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\t\t\treturn 1.0;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\n\t\t}\n\t},\n\n} );\n\nObject.defineProperties( WebGLShadowMap.prototype, {\n\n\tcullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* cullFace */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderReverseSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderSingleSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t}\n\n} );\n\nfunction WebGLRenderTargetCube( width, height, options ) {\n\n\tconsole.warn( 'THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options ).' );\n\treturn new WebGLCubeRenderTarget( width, options );\n\n}\n\n//\n\nObject.defineProperties( WebGLRenderTarget.prototype, {\n\n\twrapS: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\treturn this.texture.wrapS;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\tthis.texture.wrapS = value;\n\n\t\t}\n\t},\n\twrapT: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\treturn this.texture.wrapT;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\tthis.texture.wrapT = value;\n\n\t\t}\n\t},\n\tmagFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\treturn this.texture.magFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\tthis.texture.magFilter = value;\n\n\t\t}\n\t},\n\tminFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\treturn this.texture.minFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\tthis.texture.minFilter = value;\n\n\t\t}\n\t},\n\tanisotropy: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\treturn this.texture.anisotropy;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\tthis.texture.anisotropy = value;\n\n\t\t}\n\t},\n\toffset: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\treturn this.texture.offset;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\tthis.texture.offset = value;\n\n\t\t}\n\t},\n\trepeat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\treturn this.texture.repeat;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\tthis.texture.repeat = value;\n\n\t\t}\n\t},\n\tformat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\treturn this.texture.format;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\tthis.texture.format = value;\n\n\t\t}\n\t},\n\ttype: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\treturn this.texture.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\tthis.texture.type = value;\n\n\t\t}\n\t},\n\tgenerateMipmaps: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\treturn this.texture.generateMipmaps;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\tthis.texture.generateMipmaps = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Audio.prototype, {\n\n\tload: {\n\t\tvalue: function ( file ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' );\n\t\t\tconst scope = this;\n\t\t\tconst audioLoader = new AudioLoader();\n\t\t\taudioLoader.load( file, function ( buffer ) {\n\n\t\t\t\tscope.setBuffer( buffer );\n\n\t\t\t} );\n\t\t\treturn this;\n\n\t\t}\n\t},\n\tstartTime: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Audio: .startTime is now .play( delay ).' );\n\n\t\t}\n\t}\n\n} );\n\nAudioAnalyser.prototype.getData = function () {\n\n\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\n\treturn this.getFrequencyData();\n\n};\n\n//\n\nCubeCamera.prototype.updateCubeMap = function ( renderer, scene ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' );\n\treturn this.update( renderer, scene );\n\n};\n\n//\n\nconst GeometryUtils = {\n\n\tmerge: function ( geometry1, geometry2, materialIndexOffset ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' );\n\t\tlet matrix;\n\n\t\tif ( geometry2.isMesh ) {\n\n\t\t\tgeometry2.matrixAutoUpdate && geometry2.updateMatrix();\n\n\t\t\tmatrix = geometry2.matrix;\n\t\t\tgeometry2 = geometry2.geometry;\n\n\t\t}\n\n\t\tgeometry1.merge( geometry2, matrix, materialIndexOffset );\n\n\t},\n\n\tcenter: function ( geometry ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' );\n\t\treturn geometry.center();\n\n\t}\n\n};\n\nImageUtils.crossOrigin = undefined;\n\nImageUtils.loadTexture = function ( url, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\n\n\tconst loader = new TextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( url, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadTextureCube = function ( urls, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\n\n\tconst loader = new CubeTextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( urls, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadCompressedTexture = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\nImageUtils.loadCompressedTextureCube = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\n//\n\nfunction CanvasRenderer() {\n\n\tconsole.error( 'THREE.CanvasRenderer has been removed' );\n\n}\n\n//\n\nfunction JSONLoader() {\n\n\tconsole.error( 'THREE.JSONLoader has been removed.' );\n\n}\n\n//\n\nconst SceneUtils = {\n\n\tcreateMultiMaterialObject: function ( /* geometry, materials */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tdetach: function ( /* child, parent, scene */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tattach: function ( /* child, scene, parent */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t}\n\n};\n\n//\n\nfunction LensFlare() {\n\n\tconsole.error( 'THREE.LensFlare has been moved to /examples/jsm/objects/Lensflare.js' );\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t/* eslint-disable no-undef */\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\t/* eslint-enable no-undef */\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AlphaFormat, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AmbientLightProbe, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, AxisHelper, BackSide, BasicDepthPacking, BasicShadowMap, BinaryTextureLoader, Bone, BooleanKeyframeTrack, BoundingBoxHelper, Box2, Box3, Box3Helper, BoxBufferGeometry, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasRenderer, CanvasTexture, CatmullRomCurve3, CineonToneMapping, CircleBufferGeometry, CircleGeometry, ClampToEdgeWrapping, Clock, ClosedSplineCurve3, Color, ColorKeyframeTrack, CompressedTexture, CompressedTextureLoader, ConeBufferGeometry, ConeGeometry, CubeCamera, BoxGeometry as CubeGeometry, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubeUVRefractionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderBufferGeometry, CylinderGeometry, Cylindrical, DataTexture, DataTexture2DArray, DataTexture3D, DataTextureLoader, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DirectionalLightShadow, DiscreteInterpolant, DodecahedronBufferGeometry, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicBufferAttribute, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EdgesHelper, EllipseCurve, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeBufferGeometry, ExtrudeGeometry, Face3, Face4, FaceColors, FileLoader, FlatShading, Float32Attribute, Float32BufferAttribute, Float64Attribute, Float64BufferAttribute, FloatType, Fog, FogExp2, Font, FontLoader, FrontFaceDirectionCCW, FrontFaceDirectionCW, FrontSide, Frustum, GammaEncoding, Geometry, GeometryUtils, GreaterDepth, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, HemisphereLightProbe, IcosahedronBufferGeometry, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, ImmediateRenderObject, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16Attribute, Int16BufferAttribute, Int32Attribute, Int32BufferAttribute, Int8Attribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, JSONLoader, KeepStencilOp, KeyframeTrack, LOD, LatheBufferGeometry, LatheGeometry, Layers, LensFlare, LessDepth, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, LightShadow, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LinePieces, LineSegments, LineStrip, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearToneMapping, Loader, LoaderUtils, LoadingManager, LogLuvEncoding, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils as Math, MathUtils, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshFaceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiMaterial, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeverDepth, NeverStencilFunc, NoBlending, NoColors, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronBufferGeometry, OctahedronGeometry, OneFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, ParametricBufferGeometry, ParametricGeometry, Particle, ParticleBasicMaterial, ParticleSystem, ParticleSystemMaterial, Path, PerspectiveCamera, Plane, PlaneBufferGeometry, PlaneGeometry, PlaneHelper, PointCloud, PointCloudMaterial, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronBufferGeometry, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBDEncoding, RGBEEncoding, RGBEFormat, RGBFormat, RGBIntegerFormat, RGBM16Encoding, RGBM7Encoding, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingBufferGeometry, RingGeometry, SRGB8_ALPHA8_ASTC_10x10_Format, SRGB8_ALPHA8_ASTC_10x5_Format, SRGB8_ALPHA8_ASTC_10x6_Format, SRGB8_ALPHA8_ASTC_10x8_Format, SRGB8_ALPHA8_ASTC_12x10_Format, SRGB8_ALPHA8_ASTC_12x12_Format, SRGB8_ALPHA8_ASTC_4x4_Format, SRGB8_ALPHA8_ASTC_5x4_Format, SRGB8_ALPHA8_ASTC_5x5_Format, SRGB8_ALPHA8_ASTC_6x5_Format, SRGB8_ALPHA8_ASTC_6x6_Format, SRGB8_ALPHA8_ASTC_8x5_Format, SRGB8_ALPHA8_ASTC_8x6_Format, SRGB8_ALPHA8_ASTC_8x8_Format, Scene, SceneUtils, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeBufferGeometry, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, SmoothShading, Sphere, SphereBufferGeometry, SphereGeometry, Spherical, SphericalHarmonics3, Spline, SplineCurve, SplineCurve3, SpotLight, SpotLightHelper, SpotLightShadow, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronBufferGeometry, TetrahedronGeometry, TextBufferGeometry, TextGeometry, Texture, TextureLoader, TorusBufferGeometry, TorusGeometry, TorusKnotBufferGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeBufferGeometry, TubeGeometry, UVMapping, Uint16Attribute, Uint16BufferAttribute, Uint32Attribute, Uint32BufferAttribute, Uint8Attribute, Uint8BufferAttribute, Uint8ClampedAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShort565Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, Vertex, VertexColors, VideoTexture, WebGL1Renderer, WebGLCubeRenderTarget, WebGLMultisampleRenderTarget, WebGLRenderTarget, WebGLRenderTargetCube, WebGLRenderer, WebGLUtils, WireframeGeometry, WireframeHelper, WrapAroundEnding, XHRLoader, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, sRGBEncoding };\n","\n/**\n * @license\n *\n * chroma.js - JavaScript library for color conversions\n * \n * Copyright (c) 2011-2017, Gregor Aisch\n * All rights reserved.\n * \n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n * \n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * \n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n * \n * 3. The name Gregor Aisch may not be used to endorse or promote products\n * derived from this software without specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n */\n\n(function() {\n var Color, DEG2RAD, LAB_CONSTANTS, PI, PITHIRD, RAD2DEG, TWOPI, _average_lrgb, _guess_formats, _guess_formats_sorted, _input, _interpolators, abs, atan2, bezier, blend, blend_f, brewer, burn, chroma, clip_rgb, cmyk2rgb, colors, cos, css2rgb, darken, dodge, each, floor, hcg2rgb, hex2rgb, hsi2rgb, hsl2css, hsl2rgb, hsv2rgb, interpolate, interpolate_hsx, interpolate_lab, interpolate_lrgb, interpolate_num, interpolate_rgb, lab2lch, lab2rgb, lab_xyz, lch2lab, lch2rgb, lighten, limit, log, luminance_x, m, max, multiply, normal, num2rgb, overlay, pow, rgb2cmyk, rgb2css, rgb2hcg, rgb2hex, rgb2hsi, rgb2hsl, rgb2hsv, rgb2lab, rgb2lch, rgb2luminance, rgb2num, rgb2temperature, rgb2xyz, rgb_xyz, rnd, root, round, screen, sin, sqrt, temperature2rgb, type, unpack, w3cx11, xyz_lab, xyz_rgb,\n slice = [].slice;\n\n type = (function() {\n\n /*\n for browser-safe type checking+\n ported from jQuery's $.type\n */\n var classToType, len, name, o, ref;\n classToType = {};\n ref = \"Boolean Number String Function Array Date RegExp Undefined Null\".split(\" \");\n for (o = 0, len = ref.length; o < len; o++) {\n name = ref[o];\n classToType[\"[object \" + name + \"]\"] = name.toLowerCase();\n }\n return function(obj) {\n var strType;\n strType = Object.prototype.toString.call(obj);\n return classToType[strType] || \"object\";\n };\n })();\n\n limit = function(x, min, max) {\n if (min == null) {\n min = 0;\n }\n if (max == null) {\n max = 1;\n }\n if (x < min) {\n x = min;\n }\n if (x > max) {\n x = max;\n }\n return x;\n };\n\n unpack = function(args) {\n if (args.length >= 3) {\n return Array.prototype.slice.call(args);\n } else {\n return args[0];\n }\n };\n\n clip_rgb = function(rgb) {\n var i, o;\n rgb._clipped = false;\n rgb._unclipped = rgb.slice(0);\n for (i = o = 0; o < 3; i = ++o) {\n if (i < 3) {\n if (rgb[i] < 0 || rgb[i] > 255) {\n rgb._clipped = true;\n }\n if (rgb[i] < 0) {\n rgb[i] = 0;\n }\n if (rgb[i] > 255) {\n rgb[i] = 255;\n }\n } else if (i === 3) {\n if (rgb[i] < 0) {\n rgb[i] = 0;\n }\n if (rgb[i] > 1) {\n rgb[i] = 1;\n }\n }\n }\n if (!rgb._clipped) {\n delete rgb._unclipped;\n }\n return rgb;\n };\n\n PI = Math.PI, round = Math.round, cos = Math.cos, floor = Math.floor, pow = Math.pow, log = Math.log, sin = Math.sin, sqrt = Math.sqrt, atan2 = Math.atan2, max = Math.max, abs = Math.abs;\n\n TWOPI = PI * 2;\n\n PITHIRD = PI / 3;\n\n DEG2RAD = PI / 180;\n\n RAD2DEG = 180 / PI;\n\n chroma = function() {\n if (arguments[0] instanceof Color) {\n return arguments[0];\n }\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, arguments, function(){});\n };\n\n chroma[\"default\"] = chroma;\n\n _interpolators = [];\n\n if ((typeof module !== \"undefined\" && module !== null) && (module.exports != null)) {\n module.exports = chroma;\n }\n\n if (typeof define === 'function' && define.amd) {\n define([], function() {\n return chroma;\n });\n } else {\n root = typeof exports !== \"undefined\" && exports !== null ? exports : this;\n root.chroma = chroma;\n }\n\n chroma.version = '1.4.1';\n\n _input = {};\n\n _guess_formats = [];\n\n _guess_formats_sorted = false;\n\n Color = (function() {\n function Color() {\n var arg, args, chk, len, len1, me, mode, o, w;\n me = this;\n args = [];\n for (o = 0, len = arguments.length; o < len; o++) {\n arg = arguments[o];\n if (arg != null) {\n args.push(arg);\n }\n }\n if (args.length > 1) {\n mode = args[args.length - 1];\n }\n if (_input[mode] != null) {\n me._rgb = clip_rgb(_input[mode](unpack(args.slice(0, -1))));\n } else {\n if (!_guess_formats_sorted) {\n _guess_formats = _guess_formats.sort(function(a, b) {\n return b.p - a.p;\n });\n _guess_formats_sorted = true;\n }\n for (w = 0, len1 = _guess_formats.length; w < len1; w++) {\n chk = _guess_formats[w];\n mode = chk.test.apply(chk, args);\n if (mode) {\n break;\n }\n }\n if (mode) {\n me._rgb = clip_rgb(_input[mode].apply(_input, args));\n }\n }\n if (me._rgb == null) {\n console.warn('unknown format: ' + args);\n }\n if (me._rgb == null) {\n me._rgb = [0, 0, 0];\n }\n if (me._rgb.length === 3) {\n me._rgb.push(1);\n }\n }\n\n Color.prototype.toString = function() {\n return this.hex();\n };\n\n return Color;\n\n })();\n\n chroma._input = _input;\n\n\n /**\n \tColorBrewer colors for chroma.js\n \n \tCopyright (c) 2002 Cynthia Brewer, Mark Harrower, and The \n \tPennsylvania State University.\n \n \tLicensed under the Apache License, Version 2.0 (the \"License\"); \n \tyou may not use this file except in compliance with the License.\n \tYou may obtain a copy of the License at\t\n \thttp://www.apache.org/licenses/LICENSE-2.0\n \n \tUnless required by applicable law or agreed to in writing, software distributed\n \tunder the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n \tCONDITIONS OF ANY KIND, either express or implied. See the License for the\n \tspecific language governing permissions and limitations under the License.\n \n @preserve\n */\n\n chroma.brewer = brewer = {\n OrRd: ['#fff7ec', '#fee8c8', '#fdd49e', '#fdbb84', '#fc8d59', '#ef6548', '#d7301f', '#b30000', '#7f0000'],\n PuBu: ['#fff7fb', '#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0', '#045a8d', '#023858'],\n BuPu: ['#f7fcfd', '#e0ecf4', '#bfd3e6', '#9ebcda', '#8c96c6', '#8c6bb1', '#88419d', '#810f7c', '#4d004b'],\n Oranges: ['#fff5eb', '#fee6ce', '#fdd0a2', '#fdae6b', '#fd8d3c', '#f16913', '#d94801', '#a63603', '#7f2704'],\n BuGn: ['#f7fcfd', '#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45', '#006d2c', '#00441b'],\n YlOrBr: ['#ffffe5', '#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02', '#993404', '#662506'],\n YlGn: ['#ffffe5', '#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443', '#006837', '#004529'],\n Reds: ['#fff5f0', '#fee0d2', '#fcbba1', '#fc9272', '#fb6a4a', '#ef3b2c', '#cb181d', '#a50f15', '#67000d'],\n RdPu: ['#fff7f3', '#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e', '#7a0177', '#49006a'],\n Greens: ['#f7fcf5', '#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45', '#006d2c', '#00441b'],\n YlGnBu: ['#ffffd9', '#edf8b1', '#c7e9b4', '#7fcdbb', '#41b6c4', '#1d91c0', '#225ea8', '#253494', '#081d58'],\n Purples: ['#fcfbfd', '#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d'],\n GnBu: ['#f7fcf0', '#e0f3db', '#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#0868ac', '#084081'],\n Greys: ['#ffffff', '#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252', '#252525', '#000000'],\n YlOrRd: ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a', '#e31a1c', '#bd0026', '#800026'],\n PuRd: ['#f7f4f9', '#e7e1ef', '#d4b9da', '#c994c7', '#df65b0', '#e7298a', '#ce1256', '#980043', '#67001f'],\n Blues: ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#08519c', '#08306b'],\n PuBuGn: ['#fff7fb', '#ece2f0', '#d0d1e6', '#a6bddb', '#67a9cf', '#3690c0', '#02818a', '#016c59', '#014636'],\n Viridis: ['#440154', '#482777', '#3f4a8a', '#31678e', '#26838f', '#1f9d8a', '#6cce5a', '#b6de2b', '#fee825'],\n Spectral: ['#9e0142', '#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#e6f598', '#abdda4', '#66c2a5', '#3288bd', '#5e4fa2'],\n RdYlGn: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'],\n RdBu: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#f7f7f7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'],\n PiYG: ['#8e0152', '#c51b7d', '#de77ae', '#f1b6da', '#fde0ef', '#f7f7f7', '#e6f5d0', '#b8e186', '#7fbc41', '#4d9221', '#276419'],\n PRGn: ['#40004b', '#762a83', '#9970ab', '#c2a5cf', '#e7d4e8', '#f7f7f7', '#d9f0d3', '#a6dba0', '#5aae61', '#1b7837', '#00441b'],\n RdYlBu: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695'],\n BrBG: ['#543005', '#8c510a', '#bf812d', '#dfc27d', '#f6e8c3', '#f5f5f5', '#c7eae5', '#80cdc1', '#35978f', '#01665e', '#003c30'],\n RdGy: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#ffffff', '#e0e0e0', '#bababa', '#878787', '#4d4d4d', '#1a1a1a'],\n PuOr: ['#7f3b08', '#b35806', '#e08214', '#fdb863', '#fee0b6', '#f7f7f7', '#d8daeb', '#b2abd2', '#8073ac', '#542788', '#2d004b'],\n Set2: ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f', '#e5c494', '#b3b3b3'],\n Accent: ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f', '#bf5b17', '#666666'],\n Set1: ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33', '#a65628', '#f781bf', '#999999'],\n Set3: ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f'],\n Dark2: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02', '#a6761d', '#666666'],\n Paired: ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'],\n Pastel2: ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae', '#f1e2cc', '#cccccc'],\n Pastel1: ['#fbb4ae', '#b3cde3', '#ccebc5', '#decbe4', '#fed9a6', '#ffffcc', '#e5d8bd', '#fddaec', '#f2f2f2']\n };\n\n (function() {\n var key, results;\n results = [];\n for (key in brewer) {\n results.push(brewer[key.toLowerCase()] = brewer[key]);\n }\n return results;\n })();\n\n\n /**\n \tX11 color names\n \n \thttp://www.w3.org/TR/css3-color/#svg-color\n */\n\n w3cx11 = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflower: '#6495ed',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n laserlemon: '#ffff54',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrod: '#fafad2',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n maroon2: '#7f0000',\n maroon3: '#b03060',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n purple2: '#7f007f',\n purple3: '#a020f0',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32'\n };\n\n chroma.colors = colors = w3cx11;\n\n lab2rgb = function() {\n var a, args, b, g, l, r, x, y, z;\n args = unpack(arguments);\n l = args[0], a = args[1], b = args[2];\n y = (l + 16) / 116;\n x = isNaN(a) ? y : y + a / 500;\n z = isNaN(b) ? y : y - b / 200;\n y = LAB_CONSTANTS.Yn * lab_xyz(y);\n x = LAB_CONSTANTS.Xn * lab_xyz(x);\n z = LAB_CONSTANTS.Zn * lab_xyz(z);\n r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z);\n g = xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z);\n b = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z);\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n xyz_rgb = function(r) {\n return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow(r, 1 / 2.4) - 0.055);\n };\n\n lab_xyz = function(t) {\n if (t > LAB_CONSTANTS.t1) {\n return t * t * t;\n } else {\n return LAB_CONSTANTS.t2 * (t - LAB_CONSTANTS.t0);\n }\n };\n\n LAB_CONSTANTS = {\n Kn: 18,\n Xn: 0.950470,\n Yn: 1,\n Zn: 1.088830,\n t0: 0.137931034,\n t1: 0.206896552,\n t2: 0.12841855,\n t3: 0.008856452\n };\n\n rgb2lab = function() {\n var b, g, r, ref, ref1, x, y, z;\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n ref1 = rgb2xyz(r, g, b), x = ref1[0], y = ref1[1], z = ref1[2];\n return [116 * y - 16, 500 * (x - y), 200 * (y - z)];\n };\n\n rgb_xyz = function(r) {\n if ((r /= 255) <= 0.04045) {\n return r / 12.92;\n } else {\n return pow((r + 0.055) / 1.055, 2.4);\n }\n };\n\n xyz_lab = function(t) {\n if (t > LAB_CONSTANTS.t3) {\n return pow(t, 1 / 3);\n } else {\n return t / LAB_CONSTANTS.t2 + LAB_CONSTANTS.t0;\n }\n };\n\n rgb2xyz = function() {\n var b, g, r, ref, x, y, z;\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n r = rgb_xyz(r);\n g = rgb_xyz(g);\n b = rgb_xyz(b);\n x = xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / LAB_CONSTANTS.Xn);\n y = xyz_lab((0.2126729 * r + 0.7151522 * g + 0.0721750 * b) / LAB_CONSTANTS.Yn);\n z = xyz_lab((0.0193339 * r + 0.1191920 * g + 0.9503041 * b) / LAB_CONSTANTS.Zn);\n return [x, y, z];\n };\n\n chroma.lab = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['lab']), function(){});\n };\n\n _input.lab = lab2rgb;\n\n Color.prototype.lab = function() {\n return rgb2lab(this._rgb);\n };\n\n bezier = function(colors) {\n var I, I0, I1, c, lab0, lab1, lab2, lab3, ref, ref1, ref2;\n colors = (function() {\n var len, o, results;\n results = [];\n for (o = 0, len = colors.length; o < len; o++) {\n c = colors[o];\n results.push(chroma(c));\n }\n return results;\n })();\n if (colors.length === 2) {\n ref = (function() {\n var len, o, results;\n results = [];\n for (o = 0, len = colors.length; o < len; o++) {\n c = colors[o];\n results.push(c.lab());\n }\n return results;\n })(), lab0 = ref[0], lab1 = ref[1];\n I = function(t) {\n var i, lab;\n lab = (function() {\n var o, results;\n results = [];\n for (i = o = 0; o <= 2; i = ++o) {\n results.push(lab0[i] + t * (lab1[i] - lab0[i]));\n }\n return results;\n })();\n return chroma.lab.apply(chroma, lab);\n };\n } else if (colors.length === 3) {\n ref1 = (function() {\n var len, o, results;\n results = [];\n for (o = 0, len = colors.length; o < len; o++) {\n c = colors[o];\n results.push(c.lab());\n }\n return results;\n })(), lab0 = ref1[0], lab1 = ref1[1], lab2 = ref1[2];\n I = function(t) {\n var i, lab;\n lab = (function() {\n var o, results;\n results = [];\n for (i = o = 0; o <= 2; i = ++o) {\n results.push((1 - t) * (1 - t) * lab0[i] + 2 * (1 - t) * t * lab1[i] + t * t * lab2[i]);\n }\n return results;\n })();\n return chroma.lab.apply(chroma, lab);\n };\n } else if (colors.length === 4) {\n ref2 = (function() {\n var len, o, results;\n results = [];\n for (o = 0, len = colors.length; o < len; o++) {\n c = colors[o];\n results.push(c.lab());\n }\n return results;\n })(), lab0 = ref2[0], lab1 = ref2[1], lab2 = ref2[2], lab3 = ref2[3];\n I = function(t) {\n var i, lab;\n lab = (function() {\n var o, results;\n results = [];\n for (i = o = 0; o <= 2; i = ++o) {\n results.push((1 - t) * (1 - t) * (1 - t) * lab0[i] + 3 * (1 - t) * (1 - t) * t * lab1[i] + 3 * (1 - t) * t * t * lab2[i] + t * t * t * lab3[i]);\n }\n return results;\n })();\n return chroma.lab.apply(chroma, lab);\n };\n } else if (colors.length === 5) {\n I0 = bezier(colors.slice(0, 3));\n I1 = bezier(colors.slice(2, 5));\n I = function(t) {\n if (t < 0.5) {\n return I0(t * 2);\n } else {\n return I1((t - 0.5) * 2);\n }\n };\n }\n return I;\n };\n\n chroma.bezier = function(colors) {\n var f;\n f = bezier(colors);\n f.scale = function() {\n return chroma.scale(f);\n };\n return f;\n };\n\n chroma.cubehelix = function(start, rotations, hue, gamma, lightness) {\n var dh, dl, f;\n if (start == null) {\n start = 300;\n }\n if (rotations == null) {\n rotations = -1.5;\n }\n if (hue == null) {\n hue = 1;\n }\n if (gamma == null) {\n gamma = 1;\n }\n if (lightness == null) {\n lightness = [0, 1];\n }\n dh = 0;\n if (type(lightness) === 'array') {\n dl = lightness[1] - lightness[0];\n } else {\n dl = 0;\n lightness = [lightness, lightness];\n }\n f = function(fract) {\n var a, amp, b, cos_a, g, h, l, r, sin_a;\n a = TWOPI * ((start + 120) / 360 + rotations * fract);\n l = pow(lightness[0] + dl * fract, gamma);\n h = dh !== 0 ? hue[0] + fract * dh : hue;\n amp = h * l * (1 - l) / 2;\n cos_a = cos(a);\n sin_a = sin(a);\n r = l + amp * (-0.14861 * cos_a + 1.78277 * sin_a);\n g = l + amp * (-0.29227 * cos_a - 0.90649 * sin_a);\n b = l + amp * (+1.97294 * cos_a);\n return chroma(clip_rgb([r * 255, g * 255, b * 255, 1]));\n };\n f.start = function(s) {\n if (s == null) {\n return start;\n }\n start = s;\n return f;\n };\n f.rotations = function(r) {\n if (r == null) {\n return rotations;\n }\n rotations = r;\n return f;\n };\n f.gamma = function(g) {\n if (g == null) {\n return gamma;\n }\n gamma = g;\n return f;\n };\n f.hue = function(h) {\n if (h == null) {\n return hue;\n }\n hue = h;\n if (type(hue) === 'array') {\n dh = hue[1] - hue[0];\n if (dh === 0) {\n hue = hue[1];\n }\n } else {\n dh = 0;\n }\n return f;\n };\n f.lightness = function(h) {\n if (h == null) {\n return lightness;\n }\n if (type(h) === 'array') {\n lightness = h;\n dl = h[1] - h[0];\n } else {\n lightness = [h, h];\n dl = 0;\n }\n return f;\n };\n f.scale = function() {\n return chroma.scale(f);\n };\n f.hue(hue);\n return f;\n };\n\n chroma.random = function() {\n var code, digits, i, o;\n digits = '0123456789abcdef';\n code = '#';\n for (i = o = 0; o < 6; i = ++o) {\n code += digits.charAt(floor(Math.random() * 16));\n }\n return new Color(code);\n };\n\n _interpolators = [];\n\n interpolate = function(col1, col2, f, m) {\n var interpol, len, o, res;\n if (f == null) {\n f = 0.5;\n }\n if (m == null) {\n m = 'rgb';\n }\n\n /*\n interpolates between colors\n f = 0 --> me\n f = 1 --> col\n */\n if (type(col1) !== 'object') {\n col1 = chroma(col1);\n }\n if (type(col2) !== 'object') {\n col2 = chroma(col2);\n }\n for (o = 0, len = _interpolators.length; o < len; o++) {\n interpol = _interpolators[o];\n if (m === interpol[0]) {\n res = interpol[1](col1, col2, f, m);\n break;\n }\n }\n if (res == null) {\n throw \"color mode \" + m + \" is not supported\";\n }\n return res.alpha(col1.alpha() + f * (col2.alpha() - col1.alpha()));\n };\n\n chroma.interpolate = interpolate;\n\n Color.prototype.interpolate = function(col2, f, m) {\n return interpolate(this, col2, f, m);\n };\n\n chroma.mix = interpolate;\n\n Color.prototype.mix = Color.prototype.interpolate;\n\n _input.rgb = function() {\n var k, ref, results, v;\n ref = unpack(arguments);\n results = [];\n for (k in ref) {\n v = ref[k];\n results.push(v);\n }\n return results;\n };\n\n chroma.rgb = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['rgb']), function(){});\n };\n\n Color.prototype.rgb = function(round) {\n if (round == null) {\n round = true;\n }\n if (round) {\n return this._rgb.map(Math.round).slice(0, 3);\n } else {\n return this._rgb.slice(0, 3);\n }\n };\n\n Color.prototype.rgba = function(round) {\n if (round == null) {\n round = true;\n }\n if (!round) {\n return this._rgb.slice(0);\n }\n return [Math.round(this._rgb[0]), Math.round(this._rgb[1]), Math.round(this._rgb[2]), this._rgb[3]];\n };\n\n _guess_formats.push({\n p: 3,\n test: function(n) {\n var a;\n a = unpack(arguments);\n if (type(a) === 'array' && a.length === 3) {\n return 'rgb';\n }\n if (a.length === 4 && type(a[3]) === \"number\" && a[3] >= 0 && a[3] <= 1) {\n return 'rgb';\n }\n }\n });\n\n _input.lrgb = _input.rgb;\n\n interpolate_lrgb = function(col1, col2, f, m) {\n var xyz0, xyz1;\n xyz0 = col1._rgb;\n xyz1 = col2._rgb;\n return new Color(sqrt(pow(xyz0[0], 2) * (1 - f) + pow(xyz1[0], 2) * f), sqrt(pow(xyz0[1], 2) * (1 - f) + pow(xyz1[1], 2) * f), sqrt(pow(xyz0[2], 2) * (1 - f) + pow(xyz1[2], 2) * f), m);\n };\n\n _average_lrgb = function(colors) {\n var col, f, len, o, rgb, xyz;\n f = 1 / colors.length;\n xyz = [0, 0, 0, 0];\n for (o = 0, len = colors.length; o < len; o++) {\n col = colors[o];\n rgb = col._rgb;\n xyz[0] += pow(rgb[0], 2) * f;\n xyz[1] += pow(rgb[1], 2) * f;\n xyz[2] += pow(rgb[2], 2) * f;\n xyz[3] += rgb[3] * f;\n }\n xyz[0] = sqrt(xyz[0]);\n xyz[1] = sqrt(xyz[1]);\n xyz[2] = sqrt(xyz[2]);\n if (xyz[3] > 1) {\n xyz[3] = 1;\n }\n return new Color(clip_rgb(xyz));\n };\n\n _interpolators.push(['lrgb', interpolate_lrgb]);\n\n chroma.average = function(colors, mode) {\n var A, alpha, c, cnt, dx, dy, first, i, l, len, o, xyz, xyz2;\n if (mode == null) {\n mode = 'rgb';\n }\n l = colors.length;\n colors = colors.map(function(c) {\n return chroma(c);\n });\n first = colors.splice(0, 1)[0];\n if (mode === 'lrgb') {\n return _average_lrgb(colors);\n }\n xyz = first.get(mode);\n cnt = [];\n dx = 0;\n dy = 0;\n for (i in xyz) {\n xyz[i] = xyz[i] || 0;\n cnt.push(isNaN(xyz[i]) ? 0 : 1);\n if (mode.charAt(i) === 'h' && !isNaN(xyz[i])) {\n A = xyz[i] / 180 * PI;\n dx += cos(A);\n dy += sin(A);\n }\n }\n alpha = first.alpha();\n for (o = 0, len = colors.length; o < len; o++) {\n c = colors[o];\n xyz2 = c.get(mode);\n alpha += c.alpha();\n for (i in xyz) {\n if (!isNaN(xyz2[i])) {\n cnt[i] += 1;\n if (mode.charAt(i) === 'h') {\n A = xyz2[i] / 180 * PI;\n dx += cos(A);\n dy += sin(A);\n } else {\n xyz[i] += xyz2[i];\n }\n }\n }\n }\n for (i in xyz) {\n if (mode.charAt(i) === 'h') {\n A = atan2(dy / cnt[i], dx / cnt[i]) / PI * 180;\n while (A < 0) {\n A += 360;\n }\n while (A >= 360) {\n A -= 360;\n }\n xyz[i] = A;\n } else {\n xyz[i] = xyz[i] / cnt[i];\n }\n }\n return chroma(xyz, mode).alpha(alpha / l);\n };\n\n hex2rgb = function(hex) {\n var a, b, g, r, rgb, u;\n if (hex.match(/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/)) {\n if (hex.length === 4 || hex.length === 7) {\n hex = hex.substr(1);\n }\n if (hex.length === 3) {\n hex = hex.split(\"\");\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n }\n u = parseInt(hex, 16);\n r = u >> 16;\n g = u >> 8 & 0xFF;\n b = u & 0xFF;\n return [r, g, b, 1];\n }\n if (hex.match(/^#?([A-Fa-f0-9]{8})$/)) {\n if (hex.length === 9) {\n hex = hex.substr(1);\n }\n u = parseInt(hex, 16);\n r = u >> 24 & 0xFF;\n g = u >> 16 & 0xFF;\n b = u >> 8 & 0xFF;\n a = round((u & 0xFF) / 0xFF * 100) / 100;\n return [r, g, b, a];\n }\n if ((_input.css != null) && (rgb = _input.css(hex))) {\n return rgb;\n }\n throw \"unknown color: \" + hex;\n };\n\n rgb2hex = function(channels, mode) {\n var a, b, g, hxa, r, str, u;\n if (mode == null) {\n mode = 'auto';\n }\n r = channels[0], g = channels[1], b = channels[2], a = channels[3];\n if (mode === 'auto') {\n mode = a < 1 ? 'rgba' : 'rgb';\n }\n r = Math.round(r);\n g = Math.round(g);\n b = Math.round(b);\n u = r << 16 | g << 8 | b;\n str = \"000000\" + u.toString(16);\n str = str.substr(str.length - 6);\n hxa = '0' + round(a * 255).toString(16);\n hxa = hxa.substr(hxa.length - 2);\n return \"#\" + (function() {\n switch (mode.toLowerCase()) {\n case 'rgba':\n return str + hxa;\n case 'argb':\n return hxa + str;\n default:\n return str;\n }\n })();\n };\n\n _input.hex = function(h) {\n return hex2rgb(h);\n };\n\n chroma.hex = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['hex']), function(){});\n };\n\n Color.prototype.hex = function(mode) {\n if (mode == null) {\n mode = 'auto';\n }\n return rgb2hex(this._rgb, mode);\n };\n\n _guess_formats.push({\n p: 4,\n test: function(n) {\n if (arguments.length === 1 && type(n) === \"string\") {\n return 'hex';\n }\n }\n });\n\n hsl2rgb = function() {\n var args, b, c, g, h, i, l, o, r, ref, s, t1, t2, t3;\n args = unpack(arguments);\n h = args[0], s = args[1], l = args[2];\n if (s === 0) {\n r = g = b = l * 255;\n } else {\n t3 = [0, 0, 0];\n c = [0, 0, 0];\n t2 = l < 0.5 ? l * (1 + s) : l + s - l * s;\n t1 = 2 * l - t2;\n h /= 360;\n t3[0] = h + 1 / 3;\n t3[1] = h;\n t3[2] = h - 1 / 3;\n for (i = o = 0; o <= 2; i = ++o) {\n if (t3[i] < 0) {\n t3[i] += 1;\n }\n if (t3[i] > 1) {\n t3[i] -= 1;\n }\n if (6 * t3[i] < 1) {\n c[i] = t1 + (t2 - t1) * 6 * t3[i];\n } else if (2 * t3[i] < 1) {\n c[i] = t2;\n } else if (3 * t3[i] < 2) {\n c[i] = t1 + (t2 - t1) * ((2 / 3) - t3[i]) * 6;\n } else {\n c[i] = t1;\n }\n }\n ref = [round(c[0] * 255), round(c[1] * 255), round(c[2] * 255)], r = ref[0], g = ref[1], b = ref[2];\n }\n if (args.length > 3) {\n return [r, g, b, args[3]];\n } else {\n return [r, g, b];\n }\n };\n\n rgb2hsl = function(r, g, b) {\n var h, l, min, ref, s;\n if (r !== void 0 && r.length >= 3) {\n ref = r, r = ref[0], g = ref[1], b = ref[2];\n }\n r /= 255;\n g /= 255;\n b /= 255;\n min = Math.min(r, g, b);\n max = Math.max(r, g, b);\n l = (max + min) / 2;\n if (max === min) {\n s = 0;\n h = Number.NaN;\n } else {\n s = l < 0.5 ? (max - min) / (max + min) : (max - min) / (2 - max - min);\n }\n if (r === max) {\n h = (g - b) / (max - min);\n } else if (g === max) {\n h = 2 + (b - r) / (max - min);\n } else if (b === max) {\n h = 4 + (r - g) / (max - min);\n }\n h *= 60;\n if (h < 0) {\n h += 360;\n }\n return [h, s, l];\n };\n\n chroma.hsl = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['hsl']), function(){});\n };\n\n _input.hsl = hsl2rgb;\n\n Color.prototype.hsl = function() {\n return rgb2hsl(this._rgb);\n };\n\n hsv2rgb = function() {\n var args, b, f, g, h, i, p, q, r, ref, ref1, ref2, ref3, ref4, ref5, s, t, v;\n args = unpack(arguments);\n h = args[0], s = args[1], v = args[2];\n v *= 255;\n if (s === 0) {\n r = g = b = v;\n } else {\n if (h === 360) {\n h = 0;\n }\n if (h > 360) {\n h -= 360;\n }\n if (h < 0) {\n h += 360;\n }\n h /= 60;\n i = floor(h);\n f = h - i;\n p = v * (1 - s);\n q = v * (1 - s * f);\n t = v * (1 - s * (1 - f));\n switch (i) {\n case 0:\n ref = [v, t, p], r = ref[0], g = ref[1], b = ref[2];\n break;\n case 1:\n ref1 = [q, v, p], r = ref1[0], g = ref1[1], b = ref1[2];\n break;\n case 2:\n ref2 = [p, v, t], r = ref2[0], g = ref2[1], b = ref2[2];\n break;\n case 3:\n ref3 = [p, q, v], r = ref3[0], g = ref3[1], b = ref3[2];\n break;\n case 4:\n ref4 = [t, p, v], r = ref4[0], g = ref4[1], b = ref4[2];\n break;\n case 5:\n ref5 = [v, p, q], r = ref5[0], g = ref5[1], b = ref5[2];\n }\n }\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n rgb2hsv = function() {\n var b, delta, g, h, min, r, ref, s, v;\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n min = Math.min(r, g, b);\n max = Math.max(r, g, b);\n delta = max - min;\n v = max / 255.0;\n if (max === 0) {\n h = Number.NaN;\n s = 0;\n } else {\n s = delta / max;\n if (r === max) {\n h = (g - b) / delta;\n }\n if (g === max) {\n h = 2 + (b - r) / delta;\n }\n if (b === max) {\n h = 4 + (r - g) / delta;\n }\n h *= 60;\n if (h < 0) {\n h += 360;\n }\n }\n return [h, s, v];\n };\n\n chroma.hsv = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['hsv']), function(){});\n };\n\n _input.hsv = hsv2rgb;\n\n Color.prototype.hsv = function() {\n return rgb2hsv(this._rgb);\n };\n\n num2rgb = function(num) {\n var b, g, r;\n if (type(num) === \"number\" && num >= 0 && num <= 0xFFFFFF) {\n r = num >> 16;\n g = (num >> 8) & 0xFF;\n b = num & 0xFF;\n return [r, g, b, 1];\n }\n console.warn(\"unknown num color: \" + num);\n return [0, 0, 0, 1];\n };\n\n rgb2num = function() {\n var b, g, r, ref;\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n return (r << 16) + (g << 8) + b;\n };\n\n chroma.num = function(num) {\n return new Color(num, 'num');\n };\n\n Color.prototype.num = function(mode) {\n if (mode == null) {\n mode = 'rgb';\n }\n return rgb2num(this._rgb, mode);\n };\n\n _input.num = num2rgb;\n\n _guess_formats.push({\n p: 1,\n test: function(n) {\n if (arguments.length === 1 && type(n) === \"number\" && n >= 0 && n <= 0xFFFFFF) {\n return 'num';\n }\n }\n });\n\n hcg2rgb = function() {\n var _c, _g, args, b, c, f, g, h, i, p, q, r, ref, ref1, ref2, ref3, ref4, ref5, t, v;\n args = unpack(arguments);\n h = args[0], c = args[1], _g = args[2];\n c = c / 100;\n g = g / 100 * 255;\n _c = c * 255;\n if (c === 0) {\n r = g = b = _g;\n } else {\n if (h === 360) {\n h = 0;\n }\n if (h > 360) {\n h -= 360;\n }\n if (h < 0) {\n h += 360;\n }\n h /= 60;\n i = floor(h);\n f = h - i;\n p = _g * (1 - c);\n q = p + _c * (1 - f);\n t = p + _c * f;\n v = p + _c;\n switch (i) {\n case 0:\n ref = [v, t, p], r = ref[0], g = ref[1], b = ref[2];\n break;\n case 1:\n ref1 = [q, v, p], r = ref1[0], g = ref1[1], b = ref1[2];\n break;\n case 2:\n ref2 = [p, v, t], r = ref2[0], g = ref2[1], b = ref2[2];\n break;\n case 3:\n ref3 = [p, q, v], r = ref3[0], g = ref3[1], b = ref3[2];\n break;\n case 4:\n ref4 = [t, p, v], r = ref4[0], g = ref4[1], b = ref4[2];\n break;\n case 5:\n ref5 = [v, p, q], r = ref5[0], g = ref5[1], b = ref5[2];\n }\n }\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n rgb2hcg = function() {\n var _g, b, c, delta, g, h, min, r, ref;\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n min = Math.min(r, g, b);\n max = Math.max(r, g, b);\n delta = max - min;\n c = delta * 100 / 255;\n _g = min / (255 - delta) * 100;\n if (delta === 0) {\n h = Number.NaN;\n } else {\n if (r === max) {\n h = (g - b) / delta;\n }\n if (g === max) {\n h = 2 + (b - r) / delta;\n }\n if (b === max) {\n h = 4 + (r - g) / delta;\n }\n h *= 60;\n if (h < 0) {\n h += 360;\n }\n }\n return [h, c, _g];\n };\n\n chroma.hcg = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['hcg']), function(){});\n };\n\n _input.hcg = hcg2rgb;\n\n Color.prototype.hcg = function() {\n return rgb2hcg(this._rgb);\n };\n\n css2rgb = function(css) {\n var aa, ab, hsl, i, m, o, rgb, w;\n css = css.toLowerCase();\n if ((chroma.colors != null) && chroma.colors[css]) {\n return hex2rgb(chroma.colors[css]);\n }\n if (m = css.match(/rgb\\(\\s*(\\-?\\d+),\\s*(\\-?\\d+)\\s*,\\s*(\\-?\\d+)\\s*\\)/)) {\n rgb = m.slice(1, 4);\n for (i = o = 0; o <= 2; i = ++o) {\n rgb[i] = +rgb[i];\n }\n rgb[3] = 1;\n } else if (m = css.match(/rgba\\(\\s*(\\-?\\d+),\\s*(\\-?\\d+)\\s*,\\s*(\\-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)/)) {\n rgb = m.slice(1, 5);\n for (i = w = 0; w <= 3; i = ++w) {\n rgb[i] = +rgb[i];\n }\n } else if (m = css.match(/rgb\\(\\s*(\\-?\\d+(?:\\.\\d+)?)%,\\s*(\\-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(\\-?\\d+(?:\\.\\d+)?)%\\s*\\)/)) {\n rgb = m.slice(1, 4);\n for (i = aa = 0; aa <= 2; i = ++aa) {\n rgb[i] = round(rgb[i] * 2.55);\n }\n rgb[3] = 1;\n } else if (m = css.match(/rgba\\(\\s*(\\-?\\d+(?:\\.\\d+)?)%,\\s*(\\-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(\\-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)/)) {\n rgb = m.slice(1, 5);\n for (i = ab = 0; ab <= 2; i = ++ab) {\n rgb[i] = round(rgb[i] * 2.55);\n }\n rgb[3] = +rgb[3];\n } else if (m = css.match(/hsl\\(\\s*(\\-?\\d+(?:\\.\\d+)?),\\s*(\\-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(\\-?\\d+(?:\\.\\d+)?)%\\s*\\)/)) {\n hsl = m.slice(1, 4);\n hsl[1] *= 0.01;\n hsl[2] *= 0.01;\n rgb = hsl2rgb(hsl);\n rgb[3] = 1;\n } else if (m = css.match(/hsla\\(\\s*(\\-?\\d+(?:\\.\\d+)?),\\s*(\\-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(\\-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)/)) {\n hsl = m.slice(1, 4);\n hsl[1] *= 0.01;\n hsl[2] *= 0.01;\n rgb = hsl2rgb(hsl);\n rgb[3] = +m[4];\n }\n return rgb;\n };\n\n rgb2css = function(rgba) {\n var mode;\n mode = rgba[3] < 1 ? 'rgba' : 'rgb';\n if (mode === 'rgb') {\n return mode + '(' + rgba.slice(0, 3).map(round).join(',') + ')';\n } else if (mode === 'rgba') {\n return mode + '(' + rgba.slice(0, 3).map(round).join(',') + ',' + rgba[3] + ')';\n } else {\n\n }\n };\n\n rnd = function(a) {\n return round(a * 100) / 100;\n };\n\n hsl2css = function(hsl, alpha) {\n var mode;\n mode = alpha < 1 ? 'hsla' : 'hsl';\n hsl[0] = rnd(hsl[0] || 0);\n hsl[1] = rnd(hsl[1] * 100) + '%';\n hsl[2] = rnd(hsl[2] * 100) + '%';\n if (mode === 'hsla') {\n hsl[3] = alpha;\n }\n return mode + '(' + hsl.join(',') + ')';\n };\n\n _input.css = function(h) {\n return css2rgb(h);\n };\n\n chroma.css = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['css']), function(){});\n };\n\n Color.prototype.css = function(mode) {\n if (mode == null) {\n mode = 'rgb';\n }\n if (mode.slice(0, 3) === 'rgb') {\n return rgb2css(this._rgb);\n } else if (mode.slice(0, 3) === 'hsl') {\n return hsl2css(this.hsl(), this.alpha());\n }\n };\n\n _input.named = function(name) {\n return hex2rgb(w3cx11[name]);\n };\n\n _guess_formats.push({\n p: 5,\n test: function(n) {\n if (arguments.length === 1 && (w3cx11[n] != null)) {\n return 'named';\n }\n }\n });\n\n Color.prototype.name = function(n) {\n var h, k;\n if (arguments.length) {\n if (w3cx11[n]) {\n this._rgb = hex2rgb(w3cx11[n]);\n }\n this._rgb[3] = 1;\n this;\n }\n h = this.hex('rgb');\n for (k in w3cx11) {\n if (h === w3cx11[k]) {\n return k;\n }\n }\n return h;\n };\n\n lch2lab = function() {\n\n /*\n Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel.\n These formulas were invented by David Dalrymple to obtain maximum contrast without going\n out of gamut if the parameters are in the range 0-1.\n \n A saturation multiplier was added by Gregor Aisch\n */\n var c, h, l, ref;\n ref = unpack(arguments), l = ref[0], c = ref[1], h = ref[2];\n h = h * DEG2RAD;\n return [l, cos(h) * c, sin(h) * c];\n };\n\n lch2rgb = function() {\n var L, a, args, b, c, g, h, l, r, ref, ref1;\n args = unpack(arguments);\n l = args[0], c = args[1], h = args[2];\n ref = lch2lab(l, c, h), L = ref[0], a = ref[1], b = ref[2];\n ref1 = lab2rgb(L, a, b), r = ref1[0], g = ref1[1], b = ref1[2];\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n lab2lch = function() {\n var a, b, c, h, l, ref;\n ref = unpack(arguments), l = ref[0], a = ref[1], b = ref[2];\n c = sqrt(a * a + b * b);\n h = (atan2(b, a) * RAD2DEG + 360) % 360;\n if (round(c * 10000) === 0) {\n h = Number.NaN;\n }\n return [l, c, h];\n };\n\n rgb2lch = function() {\n var a, b, g, l, r, ref, ref1;\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n ref1 = rgb2lab(r, g, b), l = ref1[0], a = ref1[1], b = ref1[2];\n return lab2lch(l, a, b);\n };\n\n chroma.lch = function() {\n var args;\n args = unpack(arguments);\n return new Color(args, 'lch');\n };\n\n chroma.hcl = function() {\n var args;\n args = unpack(arguments);\n return new Color(args, 'hcl');\n };\n\n _input.lch = lch2rgb;\n\n _input.hcl = function() {\n var c, h, l, ref;\n ref = unpack(arguments), h = ref[0], c = ref[1], l = ref[2];\n return lch2rgb([l, c, h]);\n };\n\n Color.prototype.lch = function() {\n return rgb2lch(this._rgb);\n };\n\n Color.prototype.hcl = function() {\n return rgb2lch(this._rgb).reverse();\n };\n\n rgb2cmyk = function(mode) {\n var b, c, f, g, k, m, r, ref, y;\n if (mode == null) {\n mode = 'rgb';\n }\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n r = r / 255;\n g = g / 255;\n b = b / 255;\n k = 1 - Math.max(r, Math.max(g, b));\n f = k < 1 ? 1 / (1 - k) : 0;\n c = (1 - r - k) * f;\n m = (1 - g - k) * f;\n y = (1 - b - k) * f;\n return [c, m, y, k];\n };\n\n cmyk2rgb = function() {\n var alpha, args, b, c, g, k, m, r, y;\n args = unpack(arguments);\n c = args[0], m = args[1], y = args[2], k = args[3];\n alpha = args.length > 4 ? args[4] : 1;\n if (k === 1) {\n return [0, 0, 0, alpha];\n }\n r = c >= 1 ? 0 : 255 * (1 - c) * (1 - k);\n g = m >= 1 ? 0 : 255 * (1 - m) * (1 - k);\n b = y >= 1 ? 0 : 255 * (1 - y) * (1 - k);\n return [r, g, b, alpha];\n };\n\n _input.cmyk = function() {\n return cmyk2rgb(unpack(arguments));\n };\n\n chroma.cmyk = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['cmyk']), function(){});\n };\n\n Color.prototype.cmyk = function() {\n return rgb2cmyk(this._rgb);\n };\n\n _input.gl = function() {\n var i, k, o, rgb, v;\n rgb = (function() {\n var ref, results;\n ref = unpack(arguments);\n results = [];\n for (k in ref) {\n v = ref[k];\n results.push(v);\n }\n return results;\n }).apply(this, arguments);\n for (i = o = 0; o <= 2; i = ++o) {\n rgb[i] *= 255;\n }\n return rgb;\n };\n\n chroma.gl = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['gl']), function(){});\n };\n\n Color.prototype.gl = function() {\n var rgb;\n rgb = this._rgb;\n return [rgb[0] / 255, rgb[1] / 255, rgb[2] / 255, rgb[3]];\n };\n\n rgb2luminance = function(r, g, b) {\n var ref;\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n r = luminance_x(r);\n g = luminance_x(g);\n b = luminance_x(b);\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n };\n\n luminance_x = function(x) {\n x /= 255;\n if (x <= 0.03928) {\n return x / 12.92;\n } else {\n return pow((x + 0.055) / 1.055, 2.4);\n }\n };\n\n interpolate_rgb = function(col1, col2, f, m) {\n var xyz0, xyz1;\n xyz0 = col1._rgb;\n xyz1 = col2._rgb;\n return new Color(xyz0[0] + f * (xyz1[0] - xyz0[0]), xyz0[1] + f * (xyz1[1] - xyz0[1]), xyz0[2] + f * (xyz1[2] - xyz0[2]), m);\n };\n\n _interpolators.push(['rgb', interpolate_rgb]);\n\n Color.prototype.luminance = function(lum, mode) {\n var cur_lum, eps, max_iter, rgba, test;\n if (mode == null) {\n mode = 'rgb';\n }\n if (!arguments.length) {\n return rgb2luminance(this._rgb);\n }\n rgba = this._rgb;\n if (lum === 0) {\n rgba = [0, 0, 0, this._rgb[3]];\n } else if (lum === 1) {\n rgba = [255, 255, 255, this[3]];\n } else {\n cur_lum = rgb2luminance(this._rgb);\n eps = 1e-7;\n max_iter = 20;\n test = function(l, h) {\n var lm, m;\n m = l.interpolate(h, 0.5, mode);\n lm = m.luminance();\n if (Math.abs(lum - lm) < eps || !max_iter--) {\n return m;\n }\n if (lm > lum) {\n return test(l, m);\n }\n return test(m, h);\n };\n if (cur_lum > lum) {\n rgba = test(chroma('black'), this).rgba();\n } else {\n rgba = test(this, chroma('white')).rgba();\n }\n }\n return chroma(rgba).alpha(this.alpha());\n };\n\n temperature2rgb = function(kelvin) {\n var b, g, r, temp;\n temp = kelvin / 100;\n if (temp < 66) {\n r = 255;\n g = -155.25485562709179 - 0.44596950469579133 * (g = temp - 2) + 104.49216199393888 * log(g);\n b = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b = temp - 10) + 115.67994401066147 * log(b);\n } else {\n r = 351.97690566805693 + 0.114206453784165 * (r = temp - 55) - 40.25366309332127 * log(r);\n g = 325.4494125711974 + 0.07943456536662342 * (g = temp - 50) - 28.0852963507957 * log(g);\n b = 255;\n }\n return [r, g, b];\n };\n\n rgb2temperature = function() {\n var b, eps, g, maxTemp, minTemp, r, ref, rgb, temp;\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n minTemp = 1000;\n maxTemp = 40000;\n eps = 0.4;\n while (maxTemp - minTemp > eps) {\n temp = (maxTemp + minTemp) * 0.5;\n rgb = temperature2rgb(temp);\n if ((rgb[2] / rgb[0]) >= (b / r)) {\n maxTemp = temp;\n } else {\n minTemp = temp;\n }\n }\n return round(temp);\n };\n\n chroma.temperature = chroma.kelvin = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['temperature']), function(){});\n };\n\n _input.temperature = _input.kelvin = _input.K = temperature2rgb;\n\n Color.prototype.temperature = function() {\n return rgb2temperature(this._rgb);\n };\n\n Color.prototype.kelvin = Color.prototype.temperature;\n\n chroma.contrast = function(a, b) {\n var l1, l2, ref, ref1;\n if ((ref = type(a)) === 'string' || ref === 'number') {\n a = new Color(a);\n }\n if ((ref1 = type(b)) === 'string' || ref1 === 'number') {\n b = new Color(b);\n }\n l1 = a.luminance();\n l2 = b.luminance();\n if (l1 > l2) {\n return (l1 + 0.05) / (l2 + 0.05);\n } else {\n return (l2 + 0.05) / (l1 + 0.05);\n }\n };\n\n chroma.distance = function(a, b, mode) {\n var d, i, l1, l2, ref, ref1, sum_sq;\n if (mode == null) {\n mode = 'lab';\n }\n if ((ref = type(a)) === 'string' || ref === 'number') {\n a = new Color(a);\n }\n if ((ref1 = type(b)) === 'string' || ref1 === 'number') {\n b = new Color(b);\n }\n l1 = a.get(mode);\n l2 = b.get(mode);\n sum_sq = 0;\n for (i in l1) {\n d = (l1[i] || 0) - (l2[i] || 0);\n sum_sq += d * d;\n }\n return Math.sqrt(sum_sq);\n };\n\n chroma.deltaE = function(a, b, L, C) {\n var L1, L2, a1, a2, b1, b2, c1, c2, c4, dH2, delA, delB, delC, delL, f, h1, ref, ref1, ref2, ref3, sc, sh, sl, t, v1, v2, v3;\n if (L == null) {\n L = 1;\n }\n if (C == null) {\n C = 1;\n }\n if ((ref = type(a)) === 'string' || ref === 'number') {\n a = new Color(a);\n }\n if ((ref1 = type(b)) === 'string' || ref1 === 'number') {\n b = new Color(b);\n }\n ref2 = a.lab(), L1 = ref2[0], a1 = ref2[1], b1 = ref2[2];\n ref3 = b.lab(), L2 = ref3[0], a2 = ref3[1], b2 = ref3[2];\n c1 = sqrt(a1 * a1 + b1 * b1);\n c2 = sqrt(a2 * a2 + b2 * b2);\n sl = L1 < 16.0 ? 0.511 : (0.040975 * L1) / (1.0 + 0.01765 * L1);\n sc = (0.0638 * c1) / (1.0 + 0.0131 * c1) + 0.638;\n h1 = c1 < 0.000001 ? 0.0 : (atan2(b1, a1) * 180.0) / PI;\n while (h1 < 0) {\n h1 += 360;\n }\n while (h1 >= 360) {\n h1 -= 360;\n }\n t = (h1 >= 164.0) && (h1 <= 345.0) ? 0.56 + abs(0.2 * cos((PI * (h1 + 168.0)) / 180.0)) : 0.36 + abs(0.4 * cos((PI * (h1 + 35.0)) / 180.0));\n c4 = c1 * c1 * c1 * c1;\n f = sqrt(c4 / (c4 + 1900.0));\n sh = sc * (f * t + 1.0 - f);\n delL = L1 - L2;\n delC = c1 - c2;\n delA = a1 - a2;\n delB = b1 - b2;\n dH2 = delA * delA + delB * delB - delC * delC;\n v1 = delL / (L * sl);\n v2 = delC / (C * sc);\n v3 = sh;\n return sqrt(v1 * v1 + v2 * v2 + (dH2 / (v3 * v3)));\n };\n\n Color.prototype.get = function(modechan) {\n var channel, i, me, mode, ref, src;\n me = this;\n ref = modechan.split('.'), mode = ref[0], channel = ref[1];\n src = me[mode]();\n if (channel) {\n i = mode.indexOf(channel);\n if (i > -1) {\n return src[i];\n } else {\n return console.warn('unknown channel ' + channel + ' in mode ' + mode);\n }\n } else {\n return src;\n }\n };\n\n Color.prototype.set = function(modechan, value) {\n var channel, i, me, mode, ref, src;\n me = this;\n ref = modechan.split('.'), mode = ref[0], channel = ref[1];\n if (channel) {\n src = me[mode]();\n i = mode.indexOf(channel);\n if (i > -1) {\n if (type(value) === 'string') {\n switch (value.charAt(0)) {\n case '+':\n src[i] += +value;\n break;\n case '-':\n src[i] += +value;\n break;\n case '*':\n src[i] *= +(value.substr(1));\n break;\n case '/':\n src[i] /= +(value.substr(1));\n break;\n default:\n src[i] = +value;\n }\n } else {\n src[i] = value;\n }\n } else {\n console.warn('unknown channel ' + channel + ' in mode ' + mode);\n }\n } else {\n src = value;\n }\n return chroma(src, mode).alpha(me.alpha());\n };\n\n Color.prototype.clipped = function() {\n return this._rgb._clipped || false;\n };\n\n Color.prototype.alpha = function(a) {\n if (arguments.length) {\n return chroma.rgb([this._rgb[0], this._rgb[1], this._rgb[2], a]);\n }\n return this._rgb[3];\n };\n\n Color.prototype.darken = function(amount) {\n var lab, me;\n if (amount == null) {\n amount = 1;\n }\n me = this;\n lab = me.lab();\n lab[0] -= LAB_CONSTANTS.Kn * amount;\n return chroma.lab(lab).alpha(me.alpha());\n };\n\n Color.prototype.brighten = function(amount) {\n if (amount == null) {\n amount = 1;\n }\n return this.darken(-amount);\n };\n\n Color.prototype.darker = Color.prototype.darken;\n\n Color.prototype.brighter = Color.prototype.brighten;\n\n Color.prototype.saturate = function(amount) {\n var lch, me;\n if (amount == null) {\n amount = 1;\n }\n me = this;\n lch = me.lch();\n lch[1] += amount * LAB_CONSTANTS.Kn;\n if (lch[1] < 0) {\n lch[1] = 0;\n }\n return chroma.lch(lch).alpha(me.alpha());\n };\n\n Color.prototype.desaturate = function(amount) {\n if (amount == null) {\n amount = 1;\n }\n return this.saturate(-amount);\n };\n\n Color.prototype.premultiply = function() {\n var a, rgb;\n rgb = this.rgb();\n a = this.alpha();\n return chroma(rgb[0] * a, rgb[1] * a, rgb[2] * a, a);\n };\n\n blend = function(bottom, top, mode) {\n if (!blend[mode]) {\n throw 'unknown blend mode ' + mode;\n }\n return blend[mode](bottom, top);\n };\n\n blend_f = function(f) {\n return function(bottom, top) {\n var c0, c1;\n c0 = chroma(top).rgb();\n c1 = chroma(bottom).rgb();\n return chroma(f(c0, c1), 'rgb');\n };\n };\n\n each = function(f) {\n return function(c0, c1) {\n var i, o, out;\n out = [];\n for (i = o = 0; o <= 3; i = ++o) {\n out[i] = f(c0[i], c1[i]);\n }\n return out;\n };\n };\n\n normal = function(a, b) {\n return a;\n };\n\n multiply = function(a, b) {\n return a * b / 255;\n };\n\n darken = function(a, b) {\n if (a > b) {\n return b;\n } else {\n return a;\n }\n };\n\n lighten = function(a, b) {\n if (a > b) {\n return a;\n } else {\n return b;\n }\n };\n\n screen = function(a, b) {\n return 255 * (1 - (1 - a / 255) * (1 - b / 255));\n };\n\n overlay = function(a, b) {\n if (b < 128) {\n return 2 * a * b / 255;\n } else {\n return 255 * (1 - 2 * (1 - a / 255) * (1 - b / 255));\n }\n };\n\n burn = function(a, b) {\n return 255 * (1 - (1 - b / 255) / (a / 255));\n };\n\n dodge = function(a, b) {\n if (a === 255) {\n return 255;\n }\n a = 255 * (b / 255) / (1 - a / 255);\n if (a > 255) {\n return 255;\n } else {\n return a;\n }\n };\n\n blend.normal = blend_f(each(normal));\n\n blend.multiply = blend_f(each(multiply));\n\n blend.screen = blend_f(each(screen));\n\n blend.overlay = blend_f(each(overlay));\n\n blend.darken = blend_f(each(darken));\n\n blend.lighten = blend_f(each(lighten));\n\n blend.dodge = blend_f(each(dodge));\n\n blend.burn = blend_f(each(burn));\n\n chroma.blend = blend;\n\n chroma.analyze = function(data) {\n var len, o, r, val;\n r = {\n min: Number.MAX_VALUE,\n max: Number.MAX_VALUE * -1,\n sum: 0,\n values: [],\n count: 0\n };\n for (o = 0, len = data.length; o < len; o++) {\n val = data[o];\n if ((val != null) && !isNaN(val)) {\n r.values.push(val);\n r.sum += val;\n if (val < r.min) {\n r.min = val;\n }\n if (val > r.max) {\n r.max = val;\n }\n r.count += 1;\n }\n }\n r.domain = [r.min, r.max];\n r.limits = function(mode, num) {\n return chroma.limits(r, mode, num);\n };\n return r;\n };\n\n chroma.scale = function(colors, positions) {\n var _classes, _colorCache, _colors, _correctLightness, _domain, _fixed, _gamma, _max, _min, _mode, _nacol, _out, _padding, _pos, _spread, _useCache, classifyValue, f, getClass, getColor, resetCache, setColors, tmap;\n _mode = 'rgb';\n _nacol = chroma('#ccc');\n _spread = 0;\n _fixed = false;\n _domain = [0, 1];\n _pos = [];\n _padding = [0, 0];\n _classes = false;\n _colors = [];\n _out = false;\n _min = 0;\n _max = 1;\n _correctLightness = false;\n _colorCache = {};\n _useCache = true;\n _gamma = 1;\n setColors = function(colors) {\n var c, col, o, ref, ref1, w;\n if (colors == null) {\n colors = ['#fff', '#000'];\n }\n if ((colors != null) && type(colors) === 'string' && (chroma.brewer != null)) {\n colors = chroma.brewer[colors] || chroma.brewer[colors.toLowerCase()] || colors;\n }\n if (type(colors) === 'array') {\n if (colors.length === 1) {\n colors = [colors[0], colors[0]];\n }\n colors = colors.slice(0);\n for (c = o = 0, ref = colors.length - 1; 0 <= ref ? o <= ref : o >= ref; c = 0 <= ref ? ++o : --o) {\n col = colors[c];\n if (type(col) === \"string\") {\n colors[c] = chroma(col);\n }\n }\n _pos.length = 0;\n for (c = w = 0, ref1 = colors.length - 1; 0 <= ref1 ? w <= ref1 : w >= ref1; c = 0 <= ref1 ? ++w : --w) {\n _pos.push(c / (colors.length - 1));\n }\n }\n resetCache();\n return _colors = colors;\n };\n getClass = function(value) {\n var i, n;\n if (_classes != null) {\n n = _classes.length - 1;\n i = 0;\n while (i < n && value >= _classes[i]) {\n i++;\n }\n return i - 1;\n }\n return 0;\n };\n tmap = function(t) {\n return t;\n };\n classifyValue = function(value) {\n var i, maxc, minc, n, val;\n val = value;\n if (_classes.length > 2) {\n n = _classes.length - 1;\n i = getClass(value);\n minc = _classes[0] + (_classes[1] - _classes[0]) * (0 + _spread * 0.5);\n maxc = _classes[n - 1] + (_classes[n] - _classes[n - 1]) * (1 - _spread * 0.5);\n val = _min + ((_classes[i] + (_classes[i + 1] - _classes[i]) * 0.5 - minc) / (maxc - minc)) * (_max - _min);\n }\n return val;\n };\n getColor = function(val, bypassMap) {\n var c, col, i, k, o, p, ref, t;\n if (bypassMap == null) {\n bypassMap = false;\n }\n if (isNaN(val) || val === null) {\n return _nacol;\n }\n if (!bypassMap) {\n if (_classes && _classes.length > 2) {\n c = getClass(val);\n t = c / (_classes.length - 2);\n } else if (_max !== _min) {\n t = (val - _min) / (_max - _min);\n } else {\n t = 1;\n }\n } else {\n t = val;\n }\n if (!bypassMap) {\n t = tmap(t);\n }\n if (_gamma !== 1) {\n t = pow(t, _gamma);\n }\n t = _padding[0] + (t * (1 - _padding[0] - _padding[1]));\n t = Math.min(1, Math.max(0, t));\n k = Math.floor(t * 10000);\n if (_useCache && _colorCache[k]) {\n col = _colorCache[k];\n } else {\n if (type(_colors) === 'array') {\n for (i = o = 0, ref = _pos.length - 1; 0 <= ref ? o <= ref : o >= ref; i = 0 <= ref ? ++o : --o) {\n p = _pos[i];\n if (t <= p) {\n col = _colors[i];\n break;\n }\n if (t >= p && i === _pos.length - 1) {\n col = _colors[i];\n break;\n }\n if (t > p && t < _pos[i + 1]) {\n t = (t - p) / (_pos[i + 1] - p);\n col = chroma.interpolate(_colors[i], _colors[i + 1], t, _mode);\n break;\n }\n }\n } else if (type(_colors) === 'function') {\n col = _colors(t);\n }\n if (_useCache) {\n _colorCache[k] = col;\n }\n }\n return col;\n };\n resetCache = function() {\n return _colorCache = {};\n };\n setColors(colors);\n f = function(v) {\n var c;\n c = chroma(getColor(v));\n if (_out && c[_out]) {\n return c[_out]();\n } else {\n return c;\n }\n };\n f.classes = function(classes) {\n var d;\n if (classes != null) {\n if (type(classes) === 'array') {\n _classes = classes;\n _domain = [classes[0], classes[classes.length - 1]];\n } else {\n d = chroma.analyze(_domain);\n if (classes === 0) {\n _classes = [d.min, d.max];\n } else {\n _classes = chroma.limits(d, 'e', classes);\n }\n }\n return f;\n }\n return _classes;\n };\n f.domain = function(domain) {\n var c, d, k, len, o, ref, w;\n if (!arguments.length) {\n return _domain;\n }\n _min = domain[0];\n _max = domain[domain.length - 1];\n _pos = [];\n k = _colors.length;\n if (domain.length === k && _min !== _max) {\n for (o = 0, len = domain.length; o < len; o++) {\n d = domain[o];\n _pos.push((d - _min) / (_max - _min));\n }\n } else {\n for (c = w = 0, ref = k - 1; 0 <= ref ? w <= ref : w >= ref; c = 0 <= ref ? ++w : --w) {\n _pos.push(c / (k - 1));\n }\n }\n _domain = [_min, _max];\n return f;\n };\n f.mode = function(_m) {\n if (!arguments.length) {\n return _mode;\n }\n _mode = _m;\n resetCache();\n return f;\n };\n f.range = function(colors, _pos) {\n setColors(colors, _pos);\n return f;\n };\n f.out = function(_o) {\n _out = _o;\n return f;\n };\n f.spread = function(val) {\n if (!arguments.length) {\n return _spread;\n }\n _spread = val;\n return f;\n };\n f.correctLightness = function(v) {\n if (v == null) {\n v = true;\n }\n _correctLightness = v;\n resetCache();\n if (_correctLightness) {\n tmap = function(t) {\n var L0, L1, L_actual, L_diff, L_ideal, max_iter, pol, t0, t1;\n L0 = getColor(0, true).lab()[0];\n L1 = getColor(1, true).lab()[0];\n pol = L0 > L1;\n L_actual = getColor(t, true).lab()[0];\n L_ideal = L0 + (L1 - L0) * t;\n L_diff = L_actual - L_ideal;\n t0 = 0;\n t1 = 1;\n max_iter = 20;\n while (Math.abs(L_diff) > 1e-2 && max_iter-- > 0) {\n (function() {\n if (pol) {\n L_diff *= -1;\n }\n if (L_diff < 0) {\n t0 = t;\n t += (t1 - t) * 0.5;\n } else {\n t1 = t;\n t += (t0 - t) * 0.5;\n }\n L_actual = getColor(t, true).lab()[0];\n return L_diff = L_actual - L_ideal;\n })();\n }\n return t;\n };\n } else {\n tmap = function(t) {\n return t;\n };\n }\n return f;\n };\n f.padding = function(p) {\n if (p != null) {\n if (type(p) === 'number') {\n p = [p, p];\n }\n _padding = p;\n return f;\n } else {\n return _padding;\n }\n };\n f.colors = function(numColors, out) {\n var dd, dm, i, o, ref, result, results, samples, w;\n if (arguments.length < 2) {\n out = 'hex';\n }\n result = [];\n if (arguments.length === 0) {\n result = _colors.slice(0);\n } else if (numColors === 1) {\n result = [f(0.5)];\n } else if (numColors > 1) {\n dm = _domain[0];\n dd = _domain[1] - dm;\n result = (function() {\n results = [];\n for (var o = 0; 0 <= numColors ? o < numColors : o > numColors; 0 <= numColors ? o++ : o--){ results.push(o); }\n return results;\n }).apply(this).map(function(i) {\n return f(dm + i / (numColors - 1) * dd);\n });\n } else {\n colors = [];\n samples = [];\n if (_classes && _classes.length > 2) {\n for (i = w = 1, ref = _classes.length; 1 <= ref ? w < ref : w > ref; i = 1 <= ref ? ++w : --w) {\n samples.push((_classes[i - 1] + _classes[i]) * 0.5);\n }\n } else {\n samples = _domain;\n }\n result = samples.map(function(v) {\n return f(v);\n });\n }\n if (chroma[out]) {\n result = result.map(function(c) {\n return c[out]();\n });\n }\n return result;\n };\n f.cache = function(c) {\n if (c != null) {\n _useCache = c;\n return f;\n } else {\n return _useCache;\n }\n };\n f.gamma = function(g) {\n if (g != null) {\n _gamma = g;\n return f;\n } else {\n return _gamma;\n }\n };\n f.nodata = function(d) {\n if (d != null) {\n _nacol = chroma(d);\n return f;\n } else {\n return _nacol;\n }\n };\n return f;\n };\n\n if (chroma.scales == null) {\n chroma.scales = {};\n }\n\n chroma.scales.cool = function() {\n return chroma.scale([chroma.hsl(180, 1, .9), chroma.hsl(250, .7, .4)]);\n };\n\n chroma.scales.hot = function() {\n return chroma.scale(['#000', '#f00', '#ff0', '#fff'], [0, .25, .75, 1]).mode('rgb');\n };\n\n chroma.analyze = function(data, key, filter) {\n var add, k, len, o, r, val, visit;\n r = {\n min: Number.MAX_VALUE,\n max: Number.MAX_VALUE * -1,\n sum: 0,\n values: [],\n count: 0\n };\n if (filter == null) {\n filter = function() {\n return true;\n };\n }\n add = function(val) {\n if ((val != null) && !isNaN(val)) {\n r.values.push(val);\n r.sum += val;\n if (val < r.min) {\n r.min = val;\n }\n if (val > r.max) {\n r.max = val;\n }\n r.count += 1;\n }\n };\n visit = function(val, k) {\n if (filter(val, k)) {\n if ((key != null) && type(key) === 'function') {\n return add(key(val));\n } else if ((key != null) && type(key) === 'string' || type(key) === 'number') {\n return add(val[key]);\n } else {\n return add(val);\n }\n }\n };\n if (type(data) === 'array') {\n for (o = 0, len = data.length; o < len; o++) {\n val = data[o];\n visit(val);\n }\n } else {\n for (k in data) {\n val = data[k];\n visit(val, k);\n }\n }\n r.domain = [r.min, r.max];\n r.limits = function(mode, num) {\n return chroma.limits(r, mode, num);\n };\n return r;\n };\n\n chroma.limits = function(data, mode, num) {\n var aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, assignments, best, centroids, cluster, clusterSizes, dist, i, j, kClusters, limits, max_log, min, min_log, mindist, n, nb_iters, newCentroids, o, p, pb, pr, ref, ref1, ref10, ref11, ref12, ref13, ref14, ref2, ref3, ref4, ref5, ref6, ref7, ref8, ref9, repeat, sum, tmpKMeansBreaks, v, value, values, w;\n if (mode == null) {\n mode = 'equal';\n }\n if (num == null) {\n num = 7;\n }\n if (type(data) === 'array') {\n data = chroma.analyze(data);\n }\n min = data.min;\n max = data.max;\n sum = data.sum;\n values = data.values.sort(function(a, b) {\n return a - b;\n });\n if (num === 1) {\n return [min, max];\n }\n limits = [];\n if (mode.substr(0, 1) === 'c') {\n limits.push(min);\n limits.push(max);\n }\n if (mode.substr(0, 1) === 'e') {\n limits.push(min);\n for (i = o = 1, ref = num - 1; 1 <= ref ? o <= ref : o >= ref; i = 1 <= ref ? ++o : --o) {\n limits.push(min + (i / num) * (max - min));\n }\n limits.push(max);\n } else if (mode.substr(0, 1) === 'l') {\n if (min <= 0) {\n throw 'Logarithmic scales are only possible for values > 0';\n }\n min_log = Math.LOG10E * log(min);\n max_log = Math.LOG10E * log(max);\n limits.push(min);\n for (i = w = 1, ref1 = num - 1; 1 <= ref1 ? w <= ref1 : w >= ref1; i = 1 <= ref1 ? ++w : --w) {\n limits.push(pow(10, min_log + (i / num) * (max_log - min_log)));\n }\n limits.push(max);\n } else if (mode.substr(0, 1) === 'q') {\n limits.push(min);\n for (i = aa = 1, ref2 = num - 1; 1 <= ref2 ? aa <= ref2 : aa >= ref2; i = 1 <= ref2 ? ++aa : --aa) {\n p = (values.length - 1) * i / num;\n pb = floor(p);\n if (pb === p) {\n limits.push(values[pb]);\n } else {\n pr = p - pb;\n limits.push(values[pb] * (1 - pr) + values[pb + 1] * pr);\n }\n }\n limits.push(max);\n } else if (mode.substr(0, 1) === 'k') {\n\n /*\n implementation based on\n http://code.google.com/p/figue/source/browse/trunk/figue.js#336\n simplified for 1-d input values\n */\n n = values.length;\n assignments = new Array(n);\n clusterSizes = new Array(num);\n repeat = true;\n nb_iters = 0;\n centroids = null;\n centroids = [];\n centroids.push(min);\n for (i = ab = 1, ref3 = num - 1; 1 <= ref3 ? ab <= ref3 : ab >= ref3; i = 1 <= ref3 ? ++ab : --ab) {\n centroids.push(min + (i / num) * (max - min));\n }\n centroids.push(max);\n while (repeat) {\n for (j = ac = 0, ref4 = num - 1; 0 <= ref4 ? ac <= ref4 : ac >= ref4; j = 0 <= ref4 ? ++ac : --ac) {\n clusterSizes[j] = 0;\n }\n for (i = ad = 0, ref5 = n - 1; 0 <= ref5 ? ad <= ref5 : ad >= ref5; i = 0 <= ref5 ? ++ad : --ad) {\n value = values[i];\n mindist = Number.MAX_VALUE;\n for (j = ae = 0, ref6 = num - 1; 0 <= ref6 ? ae <= ref6 : ae >= ref6; j = 0 <= ref6 ? ++ae : --ae) {\n dist = abs(centroids[j] - value);\n if (dist < mindist) {\n mindist = dist;\n best = j;\n }\n }\n clusterSizes[best]++;\n assignments[i] = best;\n }\n newCentroids = new Array(num);\n for (j = af = 0, ref7 = num - 1; 0 <= ref7 ? af <= ref7 : af >= ref7; j = 0 <= ref7 ? ++af : --af) {\n newCentroids[j] = null;\n }\n for (i = ag = 0, ref8 = n - 1; 0 <= ref8 ? ag <= ref8 : ag >= ref8; i = 0 <= ref8 ? ++ag : --ag) {\n cluster = assignments[i];\n if (newCentroids[cluster] === null) {\n newCentroids[cluster] = values[i];\n } else {\n newCentroids[cluster] += values[i];\n }\n }\n for (j = ah = 0, ref9 = num - 1; 0 <= ref9 ? ah <= ref9 : ah >= ref9; j = 0 <= ref9 ? ++ah : --ah) {\n newCentroids[j] *= 1 / clusterSizes[j];\n }\n repeat = false;\n for (j = ai = 0, ref10 = num - 1; 0 <= ref10 ? ai <= ref10 : ai >= ref10; j = 0 <= ref10 ? ++ai : --ai) {\n if (newCentroids[j] !== centroids[i]) {\n repeat = true;\n break;\n }\n }\n centroids = newCentroids;\n nb_iters++;\n if (nb_iters > 200) {\n repeat = false;\n }\n }\n kClusters = {};\n for (j = aj = 0, ref11 = num - 1; 0 <= ref11 ? aj <= ref11 : aj >= ref11; j = 0 <= ref11 ? ++aj : --aj) {\n kClusters[j] = [];\n }\n for (i = ak = 0, ref12 = n - 1; 0 <= ref12 ? ak <= ref12 : ak >= ref12; i = 0 <= ref12 ? ++ak : --ak) {\n cluster = assignments[i];\n kClusters[cluster].push(values[i]);\n }\n tmpKMeansBreaks = [];\n for (j = al = 0, ref13 = num - 1; 0 <= ref13 ? al <= ref13 : al >= ref13; j = 0 <= ref13 ? ++al : --al) {\n tmpKMeansBreaks.push(kClusters[j][0]);\n tmpKMeansBreaks.push(kClusters[j][kClusters[j].length - 1]);\n }\n tmpKMeansBreaks = tmpKMeansBreaks.sort(function(a, b) {\n return a - b;\n });\n limits.push(tmpKMeansBreaks[0]);\n for (i = am = 1, ref14 = tmpKMeansBreaks.length - 1; am <= ref14; i = am += 2) {\n v = tmpKMeansBreaks[i];\n if (!isNaN(v) && limits.indexOf(v) === -1) {\n limits.push(v);\n }\n }\n }\n return limits;\n };\n\n hsi2rgb = function(h, s, i) {\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/hsi2rgb.cpp\n */\n var args, b, g, r;\n args = unpack(arguments);\n h = args[0], s = args[1], i = args[2];\n if (isNaN(h)) {\n h = 0;\n }\n h /= 360;\n if (h < 1 / 3) {\n b = (1 - s) / 3;\n r = (1 + s * cos(TWOPI * h) / cos(PITHIRD - TWOPI * h)) / 3;\n g = 1 - (b + r);\n } else if (h < 2 / 3) {\n h -= 1 / 3;\n r = (1 - s) / 3;\n g = (1 + s * cos(TWOPI * h) / cos(PITHIRD - TWOPI * h)) / 3;\n b = 1 - (r + g);\n } else {\n h -= 2 / 3;\n g = (1 - s) / 3;\n b = (1 + s * cos(TWOPI * h) / cos(PITHIRD - TWOPI * h)) / 3;\n r = 1 - (g + b);\n }\n r = limit(i * r * 3);\n g = limit(i * g * 3);\n b = limit(i * b * 3);\n return [r * 255, g * 255, b * 255, args.length > 3 ? args[3] : 1];\n };\n\n rgb2hsi = function() {\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/rgb2hsi.cpp\n */\n var b, g, h, i, min, r, ref, s;\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n TWOPI = Math.PI * 2;\n r /= 255;\n g /= 255;\n b /= 255;\n min = Math.min(r, g, b);\n i = (r + g + b) / 3;\n s = 1 - min / i;\n if (s === 0) {\n h = 0;\n } else {\n h = ((r - g) + (r - b)) / 2;\n h /= Math.sqrt((r - g) * (r - g) + (r - b) * (g - b));\n h = Math.acos(h);\n if (b > g) {\n h = TWOPI - h;\n }\n h /= TWOPI;\n }\n return [h * 360, s, i];\n };\n\n chroma.hsi = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['hsi']), function(){});\n };\n\n _input.hsi = hsi2rgb;\n\n Color.prototype.hsi = function() {\n return rgb2hsi(this._rgb);\n };\n\n interpolate_hsx = function(col1, col2, f, m) {\n var dh, hue, hue0, hue1, lbv, lbv0, lbv1, res, sat, sat0, sat1, xyz0, xyz1;\n if (m === 'hsl') {\n xyz0 = col1.hsl();\n xyz1 = col2.hsl();\n } else if (m === 'hsv') {\n xyz0 = col1.hsv();\n xyz1 = col2.hsv();\n } else if (m === 'hcg') {\n xyz0 = col1.hcg();\n xyz1 = col2.hcg();\n } else if (m === 'hsi') {\n xyz0 = col1.hsi();\n xyz1 = col2.hsi();\n } else if (m === 'lch' || m === 'hcl') {\n m = 'hcl';\n xyz0 = col1.hcl();\n xyz1 = col2.hcl();\n }\n if (m.substr(0, 1) === 'h') {\n hue0 = xyz0[0], sat0 = xyz0[1], lbv0 = xyz0[2];\n hue1 = xyz1[0], sat1 = xyz1[1], lbv1 = xyz1[2];\n }\n if (!isNaN(hue0) && !isNaN(hue1)) {\n if (hue1 > hue0 && hue1 - hue0 > 180) {\n dh = hue1 - (hue0 + 360);\n } else if (hue1 < hue0 && hue0 - hue1 > 180) {\n dh = hue1 + 360 - hue0;\n } else {\n dh = hue1 - hue0;\n }\n hue = hue0 + f * dh;\n } else if (!isNaN(hue0)) {\n hue = hue0;\n if ((lbv1 === 1 || lbv1 === 0) && m !== 'hsv') {\n sat = sat0;\n }\n } else if (!isNaN(hue1)) {\n hue = hue1;\n if ((lbv0 === 1 || lbv0 === 0) && m !== 'hsv') {\n sat = sat1;\n }\n } else {\n hue = Number.NaN;\n }\n if (sat == null) {\n sat = sat0 + f * (sat1 - sat0);\n }\n lbv = lbv0 + f * (lbv1 - lbv0);\n return res = chroma[m](hue, sat, lbv);\n };\n\n _interpolators = _interpolators.concat((function() {\n var len, o, ref, results;\n ref = ['hsv', 'hsl', 'hsi', 'hcl', 'lch', 'hcg'];\n results = [];\n for (o = 0, len = ref.length; o < len; o++) {\n m = ref[o];\n results.push([m, interpolate_hsx]);\n }\n return results;\n })());\n\n interpolate_num = function(col1, col2, f, m) {\n var n1, n2;\n n1 = col1.num();\n n2 = col2.num();\n return chroma.num(n1 + (n2 - n1) * f, 'num');\n };\n\n _interpolators.push(['num', interpolate_num]);\n\n interpolate_lab = function(col1, col2, f, m) {\n var res, xyz0, xyz1;\n xyz0 = col1.lab();\n xyz1 = col2.lab();\n return res = new Color(xyz0[0] + f * (xyz1[0] - xyz0[0]), xyz0[1] + f * (xyz1[1] - xyz0[1]), xyz0[2] + f * (xyz1[2] - xyz0[2]), m);\n };\n\n _interpolators.push(['lab', interpolate_lab]);\n\n}).call(this);\n","/*jslint onevar:true, undef:true, newcap:true, regexp:true, bitwise:true, maxerr:50, indent:4, white:false, nomen:false, plusplus:false */\n/*global define:false, require:false, exports:false, module:false, signals:false */\n\n/** @license\n * JS Signals \n * Released under the MIT license\n * Author: Miller Medeiros\n * Version: 1.0.0 - Build: 268 (2012/11/29 05:48 PM)\n */\n\n(function(global){\n\n // SignalBinding -------------------------------------------------\n //================================================================\n\n /**\n * Object that represents a binding between a Signal and a listener function.\n *
- This is an internal constructor and shouldn't be called by regular users.\n *
- inspired by Joa Ebert AS3 SignalBinding and Robert Penner's Slot classes.\n * @author Miller Medeiros\n * @constructor\n * @internal\n * @name SignalBinding\n * @param {Signal} signal Reference to Signal object that listener is currently bound to.\n * @param {Function} listener Handler function bound to the signal.\n * @param {boolean} isOnce If binding should be executed just once.\n * @param {Object} [listenerContext] Context on which listener will be executed (object that should represent the `this` variable inside listener function).\n * @param {Number} [priority] The priority level of the event listener. (default = 0).\n */\n function SignalBinding(signal, listener, isOnce, listenerContext, priority) {\n\n /**\n * Handler function bound to the signal.\n * @type Function\n * @private\n */\n this._listener = listener;\n\n /**\n * If binding should be executed just once.\n * @type boolean\n * @private\n */\n this._isOnce = isOnce;\n\n /**\n * Context on which listener will be executed (object that should represent the `this` variable inside listener function).\n * @memberOf SignalBinding.prototype\n * @name context\n * @type Object|undefined|null\n */\n this.context = listenerContext;\n\n /**\n * Reference to Signal object that listener is currently bound to.\n * @type Signal\n * @private\n */\n this._signal = signal;\n\n /**\n * Listener priority\n * @type Number\n * @private\n */\n this._priority = priority || 0;\n }\n\n SignalBinding.prototype = {\n\n /**\n * If binding is active and should be executed.\n * @type boolean\n */\n active : true,\n\n /**\n * Default parameters passed to listener during `Signal.dispatch` and `SignalBinding.execute`. (curried parameters)\n * @type Array|null\n */\n params : null,\n\n /**\n * Call listener passing arbitrary parameters.\n *

If binding was added using `Signal.addOnce()` it will be automatically removed from signal dispatch queue, this method is used internally for the signal dispatch.

\n * @param {Array} [paramsArr] Array of parameters that should be passed to the listener\n * @return {*} Value returned by the listener.\n */\n execute : function (paramsArr) {\n var handlerReturn, params;\n if (this.active && !!this._listener) {\n params = this.params? this.params.concat(paramsArr) : paramsArr;\n handlerReturn = this._listener.apply(this.context, params);\n if (this._isOnce) {\n this.detach();\n }\n }\n return handlerReturn;\n },\n\n /**\n * Detach binding from signal.\n * - alias to: mySignal.remove(myBinding.getListener());\n * @return {Function|null} Handler function bound to the signal or `null` if binding was previously detached.\n */\n detach : function () {\n return this.isBound()? this._signal.remove(this._listener, this.context) : null;\n },\n\n /**\n * @return {Boolean} `true` if binding is still bound to the signal and have a listener.\n */\n isBound : function () {\n return (!!this._signal && !!this._listener);\n },\n\n /**\n * @return {boolean} If SignalBinding will only be executed once.\n */\n isOnce : function () {\n return this._isOnce;\n },\n\n /**\n * @return {Function} Handler function bound to the signal.\n */\n getListener : function () {\n return this._listener;\n },\n\n /**\n * @return {Signal} Signal that listener is currently bound to.\n */\n getSignal : function () {\n return this._signal;\n },\n\n /**\n * Delete instance properties\n * @private\n */\n _destroy : function () {\n delete this._signal;\n delete this._listener;\n delete this.context;\n },\n\n /**\n * @return {string} String representation of the object.\n */\n toString : function () {\n return '[SignalBinding isOnce:' + this._isOnce +', isBound:'+ this.isBound() +', active:' + this.active + ']';\n }\n\n };\n\n\n/*global SignalBinding:false*/\n\n // Signal --------------------------------------------------------\n //================================================================\n\n function validateListener(listener, fnName) {\n if (typeof listener !== 'function') {\n throw new Error( 'listener is a required param of {fn}() and should be a Function.'.replace('{fn}', fnName) );\n }\n }\n\n /**\n * Custom event broadcaster\n *
- inspired by Robert Penner's AS3 Signals.\n * @name Signal\n * @author Miller Medeiros\n * @constructor\n */\n function Signal() {\n /**\n * @type Array.\n * @private\n */\n this._bindings = [];\n this._prevParams = null;\n\n // enforce dispatch to aways work on same context (#47)\n var self = this;\n this.dispatch = function(){\n Signal.prototype.dispatch.apply(self, arguments);\n };\n }\n\n Signal.prototype = {\n\n /**\n * Signals Version Number\n * @type String\n * @const\n */\n VERSION : '1.0.0',\n\n /**\n * If Signal should keep record of previously dispatched parameters and\n * automatically execute listener during `add()`/`addOnce()` if Signal was\n * already dispatched before.\n * @type boolean\n */\n memorize : false,\n\n /**\n * @type boolean\n * @private\n */\n _shouldPropagate : true,\n\n /**\n * If Signal is active and should broadcast events.\n *

IMPORTANT: Setting this property during a dispatch will only affect the next dispatch, if you want to stop the propagation of a signal use `halt()` instead.

\n * @type boolean\n */\n active : true,\n\n /**\n * @param {Function} listener\n * @param {boolean} isOnce\n * @param {Object} [listenerContext]\n * @param {Number} [priority]\n * @return {SignalBinding}\n * @private\n */\n _registerListener : function (listener, isOnce, listenerContext, priority) {\n\n var prevIndex = this._indexOfListener(listener, listenerContext),\n binding;\n\n if (prevIndex !== -1) {\n binding = this._bindings[prevIndex];\n if (binding.isOnce() !== isOnce) {\n throw new Error('You cannot add'+ (isOnce? '' : 'Once') +'() then add'+ (!isOnce? '' : 'Once') +'() the same listener without removing the relationship first.');\n }\n } else {\n binding = new SignalBinding(this, listener, isOnce, listenerContext, priority);\n this._addBinding(binding);\n }\n\n if(this.memorize && this._prevParams){\n binding.execute(this._prevParams);\n }\n\n return binding;\n },\n\n /**\n * @param {SignalBinding} binding\n * @private\n */\n _addBinding : function (binding) {\n //simplified insertion sort\n var n = this._bindings.length;\n do { --n; } while (this._bindings[n] && binding._priority <= this._bindings[n]._priority);\n this._bindings.splice(n + 1, 0, binding);\n },\n\n /**\n * @param {Function} listener\n * @return {number}\n * @private\n */\n _indexOfListener : function (listener, context) {\n var n = this._bindings.length,\n cur;\n while (n--) {\n cur = this._bindings[n];\n if (cur._listener === listener && cur.context === context) {\n return n;\n }\n }\n return -1;\n },\n\n /**\n * Check if listener was attached to Signal.\n * @param {Function} listener\n * @param {Object} [context]\n * @return {boolean} if Signal has the specified listener.\n */\n has : function (listener, context) {\n return this._indexOfListener(listener, context) !== -1;\n },\n\n /**\n * Add a listener to the signal.\n * @param {Function} listener Signal handler function.\n * @param {Object} [listenerContext] Context on which listener will be executed (object that should represent the `this` variable inside listener function).\n * @param {Number} [priority] The priority level of the event listener. Listeners with higher priority will be executed before listeners with lower priority. Listeners with same priority level will be executed at the same order as they were added. (default = 0)\n * @return {SignalBinding} An Object representing the binding between the Signal and listener.\n */\n add : function (listener, listenerContext, priority) {\n validateListener(listener, 'add');\n return this._registerListener(listener, false, listenerContext, priority);\n },\n\n /**\n * Add listener to the signal that should be removed after first execution (will be executed only once).\n * @param {Function} listener Signal handler function.\n * @param {Object} [listenerContext] Context on which listener will be executed (object that should represent the `this` variable inside listener function).\n * @param {Number} [priority] The priority level of the event listener. Listeners with higher priority will be executed before listeners with lower priority. Listeners with same priority level will be executed at the same order as they were added. (default = 0)\n * @return {SignalBinding} An Object representing the binding between the Signal and listener.\n */\n addOnce : function (listener, listenerContext, priority) {\n validateListener(listener, 'addOnce');\n return this._registerListener(listener, true, listenerContext, priority);\n },\n\n /**\n * Remove a single listener from the dispatch queue.\n * @param {Function} listener Handler function that should be removed.\n * @param {Object} [context] Execution context (since you can add the same handler multiple times if executing in a different context).\n * @return {Function} Listener handler function.\n */\n remove : function (listener, context) {\n validateListener(listener, 'remove');\n\n var i = this._indexOfListener(listener, context);\n if (i !== -1) {\n this._bindings[i]._destroy(); //no reason to a SignalBinding exist if it isn't attached to a signal\n this._bindings.splice(i, 1);\n }\n return listener;\n },\n\n /**\n * Remove all listeners from the Signal.\n */\n removeAll : function () {\n var n = this._bindings.length;\n while (n--) {\n this._bindings[n]._destroy();\n }\n this._bindings.length = 0;\n },\n\n /**\n * @return {number} Number of listeners attached to the Signal.\n */\n getNumListeners : function () {\n return this._bindings.length;\n },\n\n /**\n * Stop propagation of the event, blocking the dispatch to next listeners on the queue.\n *

IMPORTANT: should be called only during signal dispatch, calling it before/after dispatch won't affect signal broadcast.

\n * @see Signal.prototype.disable\n */\n halt : function () {\n this._shouldPropagate = false;\n },\n\n /**\n * Dispatch/Broadcast Signal to all listeners added to the queue.\n * @param {...*} [params] Parameters that should be passed to each handler.\n */\n dispatch : function (params) {\n if (! this.active) {\n return;\n }\n\n var paramsArr = Array.prototype.slice.call(arguments),\n n = this._bindings.length,\n bindings;\n\n if (this.memorize) {\n this._prevParams = paramsArr;\n }\n\n if (! n) {\n //should come after memorize\n return;\n }\n\n bindings = this._bindings.slice(); //clone array in case add/remove items during dispatch\n this._shouldPropagate = true; //in case `halt` was called before dispatch or during the previous dispatch.\n\n //execute all callbacks until end of the list or until a callback returns `false` or stops propagation\n //reverse loop since listeners with higher priority will be added at the end of the list\n do { n--; } while (bindings[n] && this._shouldPropagate && bindings[n].execute(paramsArr) !== false);\n },\n\n /**\n * Forget memorized arguments.\n * @see Signal.memorize\n */\n forget : function(){\n this._prevParams = null;\n },\n\n /**\n * Remove all bindings from signal and destroy any reference to external objects (destroy Signal object).\n *

IMPORTANT: calling any method on the signal instance after calling dispose will throw errors.

\n */\n dispose : function () {\n this.removeAll();\n delete this._bindings;\n delete this._prevParams;\n },\n\n /**\n * @return {string} String representation of the object.\n */\n toString : function () {\n return '[Signal active:'+ this.active +' numListeners:'+ this.getNumListeners() +']';\n }\n\n };\n\n\n // Namespace -----------------------------------------------------\n //================================================================\n\n /**\n * Signals namespace\n * @namespace\n * @name signals\n */\n var signals = Signal;\n\n /**\n * Custom event broadcaster\n * @see Signal\n */\n // alias for backwards compatibility (see #gh-44)\n signals.Signal = Signal;\n\n\n\n //exports to multiple environments\n if(typeof define === 'function' && define.amd){ //AMD\n define(function () { return signals; });\n } else if (typeof module !== 'undefined' && module.exports){ //node\n module.exports = signals;\n } else { //browser\n //use string because of Google closure compiler ADVANCED_MODE\n /*jslint sub:true */\n global['signals'] = signals;\n }\n\n}(this));\n","/* global window, exports, define */\n\n!function() {\n 'use strict'\n\n var re = {\n not_string: /[^s]/,\n not_bool: /[^t]/,\n not_type: /[^T]/,\n not_primitive: /[^v]/,\n number: /[diefg]/,\n numeric_arg: /[bcdiefguxX]/,\n json: /[j]/,\n not_json: /[^j]/,\n text: /^[^\\x25]+/,\n modulo: /^\\x25{2}/,\n placeholder: /^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,\n key: /^([a-z_][a-z_\\d]*)/i,\n key_access: /^\\.([a-z_][a-z_\\d]*)/i,\n index_access: /^\\[(\\d+)\\]/,\n sign: /^[+-]/\n }\n\n function sprintf(key) {\n // `arguments` is not an array, but should be fine for this call\n return sprintf_format(sprintf_parse(key), arguments)\n }\n\n function vsprintf(fmt, argv) {\n return sprintf.apply(null, [fmt].concat(argv || []))\n }\n\n function sprintf_format(parse_tree, argv) {\n var cursor = 1, tree_length = parse_tree.length, arg, output = '', i, k, ph, pad, pad_character, pad_length, is_positive, sign\n for (i = 0; i < tree_length; i++) {\n if (typeof parse_tree[i] === 'string') {\n output += parse_tree[i]\n }\n else if (typeof parse_tree[i] === 'object') {\n ph = parse_tree[i] // convenience purposes only\n if (ph.keys) { // keyword argument\n arg = argv[cursor]\n for (k = 0; k < ph.keys.length; k++) {\n if (arg == undefined) {\n throw new Error(sprintf('[sprintf] Cannot access property \"%s\" of undefined value \"%s\"', ph.keys[k], ph.keys[k-1]))\n }\n arg = arg[ph.keys[k]]\n }\n }\n else if (ph.param_no) { // positional argument (explicit)\n arg = argv[ph.param_no]\n }\n else { // positional argument (implicit)\n arg = argv[cursor++]\n }\n\n if (re.not_type.test(ph.type) && re.not_primitive.test(ph.type) && arg instanceof Function) {\n arg = arg()\n }\n\n if (re.numeric_arg.test(ph.type) && (typeof arg !== 'number' && isNaN(arg))) {\n throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg))\n }\n\n if (re.number.test(ph.type)) {\n is_positive = arg >= 0\n }\n\n switch (ph.type) {\n case 'b':\n arg = parseInt(arg, 10).toString(2)\n break\n case 'c':\n arg = String.fromCharCode(parseInt(arg, 10))\n break\n case 'd':\n case 'i':\n arg = parseInt(arg, 10)\n break\n case 'j':\n arg = JSON.stringify(arg, null, ph.width ? parseInt(ph.width) : 0)\n break\n case 'e':\n arg = ph.precision ? parseFloat(arg).toExponential(ph.precision) : parseFloat(arg).toExponential()\n break\n case 'f':\n arg = ph.precision ? parseFloat(arg).toFixed(ph.precision) : parseFloat(arg)\n break\n case 'g':\n arg = ph.precision ? String(Number(arg.toPrecision(ph.precision))) : parseFloat(arg)\n break\n case 'o':\n arg = (parseInt(arg, 10) >>> 0).toString(8)\n break\n case 's':\n arg = String(arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 't':\n arg = String(!!arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'T':\n arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'u':\n arg = parseInt(arg, 10) >>> 0\n break\n case 'v':\n arg = arg.valueOf()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'x':\n arg = (parseInt(arg, 10) >>> 0).toString(16)\n break\n case 'X':\n arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase()\n break\n }\n if (re.json.test(ph.type)) {\n output += arg\n }\n else {\n if (re.number.test(ph.type) && (!is_positive || ph.sign)) {\n sign = is_positive ? '+' : '-'\n arg = arg.toString().replace(re.sign, '')\n }\n else {\n sign = ''\n }\n pad_character = ph.pad_char ? ph.pad_char === '0' ? '0' : ph.pad_char.charAt(1) : ' '\n pad_length = ph.width - (sign + arg).length\n pad = ph.width ? (pad_length > 0 ? pad_character.repeat(pad_length) : '') : ''\n output += ph.align ? sign + arg + pad : (pad_character === '0' ? sign + pad + arg : pad + sign + arg)\n }\n }\n }\n return output\n }\n\n var sprintf_cache = Object.create(null)\n\n function sprintf_parse(fmt) {\n if (sprintf_cache[fmt]) {\n return sprintf_cache[fmt]\n }\n\n var _fmt = fmt, match, parse_tree = [], arg_names = 0\n while (_fmt) {\n if ((match = re.text.exec(_fmt)) !== null) {\n parse_tree.push(match[0])\n }\n else if ((match = re.modulo.exec(_fmt)) !== null) {\n parse_tree.push('%')\n }\n else if ((match = re.placeholder.exec(_fmt)) !== null) {\n if (match[2]) {\n arg_names |= 1\n var field_list = [], replacement_field = match[2], field_match = []\n if ((field_match = re.key.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {\n if ((field_match = re.key_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else if ((field_match = re.index_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n }\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n match[2] = field_list\n }\n else {\n arg_names |= 2\n }\n if (arg_names === 3) {\n throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported')\n }\n\n parse_tree.push(\n {\n placeholder: match[0],\n param_no: match[1],\n keys: match[2],\n sign: match[3],\n pad_char: match[4],\n align: match[5],\n width: match[6],\n precision: match[7],\n type: match[8]\n }\n )\n }\n else {\n throw new SyntaxError('[sprintf] unexpected placeholder')\n }\n _fmt = _fmt.substring(match[0].length)\n }\n return sprintf_cache[fmt] = parse_tree\n }\n\n /**\n * export to either browser or node.js\n */\n /* eslint-disable quote-props */\n if (typeof exports !== 'undefined') {\n exports['sprintf'] = sprintf\n exports['vsprintf'] = vsprintf\n }\n if (typeof window !== 'undefined') {\n window['sprintf'] = sprintf\n window['vsprintf'] = vsprintf\n\n if (typeof define === 'function' && define['amd']) {\n define(function() {\n return {\n 'sprintf': sprintf,\n 'vsprintf': vsprintf\n }\n })\n }\n }\n /* eslint-enable quote-props */\n}(); // eslint-disable-line\n","import{Vector2 as t,Vector3 as e,Matrix4 as i,Quaternion as r,Color as s,ShaderChunk as n,Points as o,Box3 as a,LinearEncoding as c,PerspectiveCamera as l,OrthographicCamera as h,StereoCamera as d,Scene as u,Group as m,Fog as p,SpotLight as f,AmbientLight as g,WebGLRenderer as y,WebGLRenderTarget as b,NearestFilter as x,RGBAFormat as v,UnsignedByteType as w,LinearFilter as A,Uniform as _,ShaderMaterial as S,AdditiveBlending as C,Mesh as P,PlaneGeometry as I,BufferGeometry as k,BufferAttribute as M,LineSegments as T,sRGBEncoding as B,FloatType as D,Geometry as $,Matrix3 as O,UniformsUtils as R,UniformsLib as E,NoBlending as F,FrontSide as L,BackSide as N,DoubleSide as z,IcosahedronBufferGeometry as V,DataTexture as G,NormalBlending as U,Euler as j,CanvasTexture as H,CylinderBufferGeometry as W,ConeBufferGeometry as q,BoxBufferGeometry as X,OctahedronBufferGeometry as Y,TetrahedronBufferGeometry as K,TorusBufferGeometry as Z,Face3 as Q}from\"three\";export{Box3,Color,Euler,Matrix3,Matrix4,Plane,Quaternion,Vector2,Vector3}from\"three\";import*as J from\"chroma-js\";import*as tt from\"signals\";import{Signal as et}from\"signals\";export{Signal}from\"signals\";import{sprintf as it}from\"sprintf-js\";function rt(t){if(\"undefined\"==typeof window)return;const e=new RegExp(`${t}=([^&#=]*)`).exec(window.location.search);return e?decodeURIComponent(e[1]):void 0}function st(t,e){return void 0!==t?t:e}function nt(t,e){const i=Object.assign({},t);for(const r in e){void 0===t[r]&&(i[r]=e[r])}return i}function ot(t,e){for(const i in e){const r=e[i];void 0!==r&&(t[i]=r)}return t}function at(t,e){e=st(e,[]);for(let i=0;ie?(o&&(clearTimeout(o),o=null),a=l,n=t.apply(r,s),o||(r=s=null)):o||!1===i.trailing||(o=setTimeout(c,h)),n}}function mt(t,e){return te?1:0}function pt(t,e,i=mt){let r=0,s=t.length-1;for(;r<=s;){const n=r+s>>1,o=i(e,t[n]);if(o>0)r=n+1;else{if(!(o<0))return n;s=n-1}}return-r-1}function ft(t,e,i){const r=function(t,e){let i=t.length-1;if(t[i]>1;t[s]>=e?i=s-1:r=s+1}return i+1}(t,e),s=function(t,e){if(t[0]>e)return-1;let i=0,r=t.length-1;for(;i<=r;){const s=i+r>>1;t[s]>e?r=s-1:i=s+1}return i-1}(t,i);return-1===r||-1===s||r>s?0:s-r+1}function gt(t){return t.sort().filter((function(t,e,i){return 0===e||t!==i[e-1]}))}function yt(t){const e=28672;if(t.length>e){const i=[];for(let r=0;r65535?Uint32Array:Uint16Array)(t)}function vt(t){return t.buffer&&t.buffer instanceof ArrayBuffer?t.buffer:t}function wt(t,e){return void 0===t?t=new e:Array.isArray(t)&&(t=(new e).fromArray(t)),t}function At(t){return wt(t,e)}function _t(t){return wt(t,i)}function St(t){return wt(t,r)}function Ct(t){return e=t,i=Float32Array,e instanceof i?e:new i(e);var e,i}function Pt(t){return st(t,\"\").toString().toLowerCase()}class It{constructor(t){this.name=t,this._dict={}}add(t,e){this._dict[Pt(t)]=e}get(t){return this._dict[Pt(t)]}get names(){return Object.keys(this._dict)}}function kt(t){return.01745*t}const Mt=\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\".split(\"\"),Tt=new Array(36);function Bt(){let t,e=0;for(let i=0;i<36;i++)8===i||13===i||18===i||23===i?Tt[i]=\"-\":14===i?Tt[i]=\"4\":(e<=2&&(e=33554432+16777216*Math.random()|0),t=15&e,e>>=4,Tt[i]=Mt[19===i?3&t|8:t]);return Tt.join(\"\")}function Dt(t,e,i){return Math.max(e,Math.min(i,t))}function $t(t,e,i){return t+(e-t)*i}function Ot(t,e,i,r,s,n){const o=(i-t)*n,a=(r-e)*n,c=s*s;return(2*e-2*i+o+a)*(s*c)+(-3*e+3*i-2*o-a)*c+o*s+e}function Rt(t,e,i){var r;return r=function(t,e,i){return(t-e)/(i-e)}(i,t,e),(i=Dt(r,0,1))*i*(3-2*i)}var Et=\"sRGB\";const Ft={scale:\"uniform\",mode:\"hcl\",domain:[0,1],value:16777215,reverse:!1},Lt=new s;function Nt(t,e,i){const r=i.value;return i.value=function(t,e){let i=r.bind(this,t,e)();return\"linear\"==Et?(Lt.set(i),Lt.convertSRGBToLinear(),Lt.getHex()):i},i}class zt{constructor(t={}){this.parameters=nt(t,Ft),\"string\"==typeof this.parameters.value&&(this.parameters.value=Lt.set(this.parameters.value).getHex()),this.parameters.structure&&(this.atomProxy=this.parameters.structure.getAtomProxy())}getScale(t={}){const e=nt(t,this.parameters);return\"rainbow\"===e.scale?e.scale=[\"red\",\"orange\",\"yellow\",\"green\",\"blue\"]:\"rwb\"===e.scale&&(e.scale=[\"red\",\"white\",\"blue\"]),e.reverse&&(e.domain=e.domain.slice().reverse()),J.scale(e.scale).mode(e.mode).domain(e.domain).out(\"num\")}colorToArray(t,e=[],i=0){return e[i]=(t>>16&255)/255,e[i+1]=(t>>8&255)/255,e[i+2]=(255&t)/255,e}atomColorToArray(t,e,i){return this.colorToArray(this.atomColor?this.atomColor(t):0,e,i)}bondColor(t,e){return this.atomProxy&&this.atomColor?(this.atomProxy.index=e?t.atomIndex1:t.atomIndex2,this.atomColor(this.atomProxy)):0}bondColorToArray(t,e,i,r){return this.colorToArray(this.bondColor(t,e),i,r)}volumeColorToArray(t,e,i){return this.colorToArray(this.volumeColor?this.volumeColor(t):0,e,i)}positionColorToArray(t,e,i){return this.colorToArray(this.positionColor?this.positionColor(t):0,e,i)}}var Vt;!function(t){t[t.PROTEIN=1]=\"PROTEIN\",t[t.NUCLEIC=2]=\"NUCLEIC\",t[t.RNA=3]=\"RNA\",t[t.DNA=4]=\"DNA\",t[t.POLYMER=5]=\"POLYMER\",t[t.WATER=6]=\"WATER\",t[t.HELIX=7]=\"HELIX\",t[t.SHEET=8]=\"SHEET\",t[t.TURN=9]=\"TURN\",t[t.BACKBONE=10]=\"BACKBONE\",t[t.SIDECHAIN=11]=\"SIDECHAIN\",t[t.ALL=12]=\"ALL\",t[t.HETERO=13]=\"HETERO\",t[t.ION=14]=\"ION\",t[t.SACCHARIDE=15]=\"SACCHARIDE\",t[t.SUGAR=15]=\"SUGAR\",t[t.BONDED=16]=\"BONDED\",t[t.RING=17]=\"RING\",t[t.AROMATICRING=18]=\"AROMATICRING\",t[t.METAL=19]=\"METAL\",t[t.POLARH=20]=\"POLARH\",t[t.NONE=21]=\"NONE\"}(Vt||(Vt={}));const Gt=[\"*\",\"\",\"ALL\"],Ut=[\"NONE\"],jt=[Vt.BACKBONE,Vt.SIDECHAIN,Vt.BONDED,Vt.RING,Vt.AROMATICRING,Vt.METAL,Vt.POLARH],Ht=[Vt.POLYMER,Vt.WATER],Wt=[\"ALA\",\"GLY\",\"SER\"],qt=[\"CYS\",\"SER\",\"THR\"],Xt=[\"ALA\",\"ILE\",\"LEU\",\"MET\",\"PHE\",\"PRO\",\"TRP\",\"VAL\"],Yt=[\"PHE\",\"TRP\",\"TYR\",\"HIS\"],Kt=[\"ASN\",\"GLN\"],Zt=[\"ASP\",\"GLU\"],Qt=[\"ARG\",\"HIS\",\"LYS\"],Jt=[\"ARG\",\"ASP\",\"GLU\",\"HIS\",\"LYS\"],te=[\"ASN\",\"ARG\",\"ASP\",\"CYS\",\"GLY\",\"GLN\",\"GLU\",\"HIS\",\"LYS\",\"SER\",\"THR\",\"TYR\"],ee=[\"ALA\",\"ILE\",\"LEU\",\"MET\",\"PHE\",\"PRO\",\"TRP\",\"VAL\"],ie=[\"HIS\",\"PHE\",\"PRO\",\"TRP\",\"TYR\"],re=[\"ALA\",\"GLY\",\"ILE\",\"LEU\",\"VAL\"];function se(t,e){if(void 0===e.atomname&&void 0===e.element&&void 0===e.altloc&&void 0===e.atomindex&&void 0===e.keyword&&void 0===e.inscode&&void 0===e.resname&&void 0===e.sstruc&&void 0===e.resno&&void 0===e.chainname&&void 0===e.model)return-1;if(void 0!==e.keyword){if(e.keyword===Vt.BACKBONE&&!t.isBackbone())return!1;if(e.keyword===Vt.SIDECHAIN&&!t.isSidechain())return!1;if(e.keyword===Vt.BONDED&&!t.isBonded())return!1;if(e.keyword===Vt.RING&&!t.isRing())return!1;if(e.keyword===Vt.AROMATICRING&&!t.isAromatic())return!1;if(e.keyword===Vt.HETERO&&!t.isHetero())return!1;if(e.keyword===Vt.PROTEIN&&!t.isProtein())return!1;if(e.keyword===Vt.NUCLEIC&&!t.isNucleic())return!1;if(e.keyword===Vt.RNA&&!t.isRna())return!1;if(e.keyword===Vt.DNA&&!t.isDna())return!1;if(e.keyword===Vt.POLYMER&&!t.isPolymer())return!1;if(e.keyword===Vt.WATER&&!t.isWater())return!1;if(e.keyword===Vt.HELIX&&!t.isHelix())return!1;if(e.keyword===Vt.SHEET&&!t.isSheet())return!1;if(e.keyword===Vt.TURN&&!t.isTurn())return!1;if(e.keyword===Vt.ION&&!t.isIon())return!1;if(e.keyword===Vt.SACCHARIDE&&!t.isSaccharide())return!1;if(e.keyword===Vt.METAL&&!t.isMetal())return!1;if(e.keyword===Vt.POLARH&&!t.isPolarHydrogen())return!1}if(void 0!==e.atomname&&e.atomname!==t.atomname)return!1;if(void 0!==e.element&&e.element!==t.element)return!1;if(void 0!==e.altloc&&e.altloc!==t.altloc)return!1;if(void 0!==e.atomindex&&pt(e.atomindex,t.index)<0)return!1;if(void 0!==e.resname)if(Array.isArray(e.resname)){if(!e.resname.includes(t.resname))return!1}else if(e.resname!==t.resname)return!1;if(void 0!==e.sstruc&&e.sstruc!==t.sstruc)return!1;if(void 0!==e.resno)if(Array.isArray(e.resno)&&2===e.resno.length){if(e.resno[0]>t.resno||e.resno[1]t.resno||e.resno[1]0?t:null}function he(t,e=!1){let i=t;return e&&(i=le(t,(function(t){return void 0!==t.keyword&&!jt.includes(t.keyword)||(void 0!==t.model||(void 0!==t.chainname||(void 0!==t.resname||(void 0!==t.resno||void 0!==t.sstruc))))}))),ce(i,se)}function de(t,e=!1){let i=t;return e&&(i=le(t,(function(t){return!(void 0===t.keyword||!jt.includes(t.keyword))||(void 0!==t.model||(void 0!==t.chainname||(void 0!==t.atomname||(void 0!==t.element||void 0!==t.altloc))))}))),ce(i,ne)}function ue(t,e=!1){let i=t;return e&&(i=le(t,(function(t){return void 0!==t.keyword&&!Ht.includes(t.keyword)||(void 0!==t.resname||(void 0!==t.resno||(void 0!==t.atomname||(void 0!==t.element||(void 0!==t.altloc||(void 0!==t.sstruc||void 0!==t.inscode))))))}))),ce(i,oe)}function me(t,e=!1){let i=t;return e&&(i=le(t,(function(t){return void 0!==t.keyword||(void 0!==t.chainname||(void 0!==t.resname||(void 0!==t.resno||(void 0!==t.atomname||(void 0!==t.element||(void 0!==t.altloc||(void 0!==t.sstruc||void 0!==t.inscode)))))))}))),ce(i,ae)}class pe{constructor(t){this.signals={stringChanged:new et},this.setString(t)}get type(){return\"selection\"}setString(t,e){if(void 0===t&&(t=this.string||\"\"),t===this.string)return;try{this.selection=function(t){let e={operator:void 0,rules:[]};if(!t)return e;let i,r,s=e;const n=[];\"(\"===(t=t.replace(/\\(/g,\" ( \").replace(/\\)/g,\" ) \").trim()).charAt(0)&&\")\"===t.substr(-1)&&(t=t.slice(1,-1).trim());const o=t.split(/\\s+/),a=t=>{i={operator:t,rules:[]},void 0===s?(s=i,e=i):(s.rules.push(i),n.push(s),s=i)},c=function(t){r=s,s=n.pop(),void 0===s&&(a(t),l(r))},l=function(t){s.rules.push(t)};let h=!1;for(let t=0;t0)if(\"NOT\"===i)h=1;else if(1===h)h=2;else{if(2!==h)throw new Error(\"something went wrong with 'not'\");h=!1,c()}if(\"AND\"===i){if(\"OR\"===s.operator){const t=s.rules.pop();a(\"AND\"),l(t)}else s.operator=\"AND\";continue}if(\"OR\"===i){\"AND\"===s.operator?c(\"OR\"):s.operator=\"OR\";continue}if(\"NOT\"===e.toUpperCase()){h=1,a(),s.negate=!0;continue}if(+i!=+i){const t=Vt[i];if(void 0!==t){l({keyword:t});continue}}if(\"HYDROGEN\"===i){l({operator:\"OR\",rules:[{element:\"H\"},{element:\"D\"}]});continue}if(\"SMALL\"===i){l({resname:Wt});continue}if(\"NUCLEOPHILIC\"===i){l({resname:qt});continue}if(\"HYDROPHOBIC\"===i){l({resname:Xt});continue}if(\"AROMATIC\"===i){l({resname:Yt});continue}if(\"AMIDE\"===i){l({resname:Kt});continue}if(\"ACIDIC\"===i){l({resname:Zt});continue}if(\"BASIC\"===i){l({resname:Qt});continue}if(\"CHARGED\"===i){l({resname:Jt});continue}if(\"POLAR\"===i){l({resname:te});continue}if(\"NONPOLAR\"===i){l({resname:ee});continue}if(\"CYCLIC\"===i){l({resname:ie});continue}if(\"ALIPHATIC\"===i){l({resname:re});continue}if(\"SIDECHAINATTACHED\"===i){l({operator:\"OR\",rules:[{keyword:Vt.SIDECHAIN},{operator:\"AND\",negate:!1,rules:[{keyword:Vt.PROTEIN},{operator:\"OR\",negate:!1,rules:[{atomname:\"CA\"},{atomname:\"BB\"}]}]},{operator:\"AND\",negate:!1,rules:[{resname:\"PRO\"},{atomname:\"N\"}]},{operator:\"AND\",negate:!1,rules:[{keyword:Vt.NUCLEIC},{operator:\"OR\",negate:!0,rules:[{atomname:\"P\"},{atomname:\"OP1\"},{atomname:\"OP2\"},{atomname:\"O3'\"},{atomname:\"O3*\"},{atomname:\"HO3'\"},{atomname:\"O5'\"},{atomname:\"O5*\"},{atomname:\"HO5'\"},{atomname:\"C5'\"},{atomname:\"C5*\"},{atomname:\"H5'\"},{atomname:\"H5''\"}]}]}]});continue}if(\"APOLARH\"===i){l({operator:\"AND\",negate:!1,rules:[{element:\"H\"},{negate:!0,operator:void 0,rules:[{keyword:Vt.POLARH}]}]});continue}if(\"LIGAND\"===i){l({operator:\"AND\",rules:[{operator:\"OR\",rules:[{operator:\"AND\",rules:[{keyword:Vt.HETERO},{negate:!0,operator:void 0,rules:[{keyword:Vt.POLYMER}]}]},{negate:!0,operator:void 0,rules:[{keyword:Vt.POLYMER}]}]},{negate:!0,operator:void 0,rules:[{operator:\"OR\",rules:[{keyword:Vt.WATER},{keyword:Vt.ION}]}]}]});continue}if(-1!==Gt.indexOf(i)){l({keyword:Vt.ALL});continue}if(\"@\"===e.charAt(0)){const t=e.substr(1).split(\",\").map((t=>parseInt(t)));t.sort((function(t,e){return t-e})),l({atomindex:t});continue}if(\"#\"===e.charAt(0)){console.error(\"# for element selection deprecated, use _\"),l({element:i.substr(1)});continue}if(\"_\"===e.charAt(0)){l({element:i.substr(1)});continue}if(\"[\"===e[0]&&\"]\"===e[e.length-1]){const t=i.substr(1,e.length-2).split(\",\"),r=t.length>1?t:t[0];l({resname:r});continue}if(e.length>=1&&e.length<=4&&\"^\"!==e[0]&&\":\"!==e[0]&&\".\"!==e[0]&&\"%\"!==e[0]&&\"/\"!==e[0]&&isNaN(parseInt(e))){l({resname:i});continue}const r={operator:\"AND\",rules:[]},n=e.split(\"/\");if(n.length>1&&n[1]){if(isNaN(parseInt(n[1])))throw new Error(\"model must be an integer\");r.rules.push({model:parseInt(n[1])})}const d=n[0].split(\"%\");d.length>1&&r.rules.push({altloc:d[1]});const u=d[0].split(\".\");if(u.length>1&&u[1]){if(u[1].length>4)throw new Error(\"atomname must be one to four characters\");r.rules.push({atomname:u[1].substring(0,4).toUpperCase()})}const m=u[0].split(\":\");m.length>1&&m[1]&&r.rules.push({chainname:m[1]});const p=m[0].split(\"^\");if(p.length>1&&r.rules.push({inscode:p[1]}),p[0]){let t,e;\"-\"===p[0][0]&&(p[0]=p[0].substr(1),t=!0),p[0].includes(\"--\")&&(p[0]=p[0].replace(\"--\",\"-\"),e=!0);let i=p[0].split(\"-\");if(1===i.length){let e=parseInt(i[0]);if(isNaN(e))throw new Error(\"resi must be an integer\");t&&(e*=-1),r.rules.push({resno:e})}else{if(2!==i.length)throw new Error(\"resi range must contain one '-'\");{const s=i.map((t=>parseInt(t)));t&&(s[0]*=-1),e&&(s[1]*=-1),r.rules.push({resno:[s[0],s[1]]})}}}if(1===r.rules.length)l(r.rules[0]);else{if(!(r.rules.length>1))throw new Error(\"empty selection chunk\");l(r)}}return void 0===e.operator&&1===e.rules.length&&e.rules[0].hasOwnProperty(\"operator\")&&(e=e.rules[0]),e}(t)}catch(t){this.selection={error:t.message}}const i=this.selection;this.string=t,this.test=he(i),this.residueTest=de(i),this.chainTest=ue(i),this.modelTest=me(i),this.atomOnlyTest=he(i,!0),this.residueOnlyTest=de(i,!0),this.chainOnlyTest=ue(i,!0),this.modelOnlyTest=me(i,!0),e||this.signals.stringChanged.dispatch(this.string)}isAllSelection(){return Gt.includes(this.string.toUpperCase())}isNoneSelection(){return Ut.includes(this.string.toUpperCase())}}class fe extends zt{constructor(t){super(t),this.colormakerList=[],this.selectionList=[];(t.dataList||[]).forEach((t=>{const[e,i,r={}]=t;Fe.hasScheme(e)?Object.assign(r,{scheme:e,structure:this.parameters.structure}):Object.assign(r,{scheme:\"uniform\",value:new s(e).getHex()}),this.colormakerList.push(Fe.getScheme(r)),this.selectionList.push(new pe(i))}))}atomColor(t){for(let e=0,i=this.selectionList.length;e{}),t)}catch(t){}const Se=\"undefined\"!=typeof window&&void 0!==window.orientation;let Ce=!1;function Pe(t){Ce=t}let Ie=!1;function ke(t){Ie=t}const Me={log:Function.prototype.bind.call(console.log,console),info:Function.prototype.bind.call(console.info,console),warn:Function.prototype.bind.call(console.warn,console),error:Function.prototype.bind.call(console.error,console),time:Function.prototype.bind.call(console.time,console),timeEnd:Function.prototype.bind.call(console.timeEnd,console)};let Te={color:\"green\",labelColor:8421504,labelAttachment:\"bottom-center\",labelSize:.7,labelZOffset:.5,labelYOffset:.1,labelBorder:!0,labelBorderColor:13882323,labelBorderWidth:.25,lineOpacity:.8,linewidth:5,opacity:.6,labelUnit:\"angstrom\",arcVisible:!0,planeVisible:!1};function Be(t={}){Object.assign(Te,t)}let De=!!($e=rt(\"debug\"))&&(\"string\"!=typeof $e||/^1|true|t|yes|y$/i.test($e));var $e;function Oe(t){De=t}const Re=[\"ngl\",\"js\"],Ee=new class{constructor(){this.activeWorkerCount=0,this._funcDict={},this._depsDict={},this._blobDict={}}add(t,e,i){this._funcDict[t]=e,this._depsDict[t]=i}get(t){return this._blobDict[t]||(this._blobDict[t]=we(this._funcDict[t],this._depsDict[t])),this._blobDict[t]}},Fe=new class{constructor(){this.schemes={},this.userSchemes={}}getScheme(t){const e=((t||{}).scheme||\"\").toLowerCase();let i;return i=e in this.schemes?this.schemes[e]:e in this.userSchemes?this.userSchemes[e]:zt,new i(t)}getSchemes(){const t={};return Object.keys(this.schemes).forEach((function(e){t[e]=e})),Object.keys(this.userSchemes).forEach((function(e){t[e]=e.split(\"|\")[1]})),t}getScales(){return ge}getModes(){return ye}add(t,e){t=t.toLowerCase(),this.schemes[t]=e}addScheme(t,e){return function(t){return t instanceof zt}(t)||(t=this._createScheme(t)),this._addUserScheme(t,e)}_addUserScheme(t,e){e=e||\"\";const i=`${Bt()}|${e}`.toLowerCase();return this.userSchemes[i]=t,i}removeScheme(t){t=t.toLowerCase(),delete this.userSchemes[t]}_createScheme(t){return class extends zt{constructor(e){super(e),t.call(this,e)}}}addSelectionScheme(t,e){return this._addUserScheme(class extends fe{constructor(e){super(Object.assign({dataList:t},e))}},e)}hasScheme(t){return(t=t.toLowerCase())in this.schemes||t in this.userSchemes}},Le=new It(\"datasource\"),Ne=new It(\"representatation\"),ze=new class extends It{constructor(){super(\"parser\")}__hasObjName(t,e){const i=this.get(t);return i&&i.prototype.__objName===e}isTrajectory(t){return this.__hasObjName(t,\"frames\")}isStructure(t){return this.__hasObjName(t,\"structure\")}isVolume(t){return this.__hasObjName(t,\"volume\")}isSurface(t){return this.__hasObjName(t,\"surface\")}isBinary(t){const e=this.get(t);return e&&e.prototype.isBinary}isXml(t){const e=this.get(t);return e&&e.prototype.isXml}isJson(t){const e=this.get(t);return e&&e.prototype.isJson}getTrajectoryExtensions(){return this.names.filter((t=>this.isTrajectory(t)))}getStructureExtensions(){return this.names.filter((t=>this.isStructure(t)))}getVolumeExtensions(){return this.names.filter((t=>this.isVolume(t)))}getSurfaceExtensions(){return this.names.filter((t=>this.isSurface(t)))}},Ve=new It(\"shader\"),Ge=new It(\"decompressor\"),Ue=new It(\"component\"),je=new It(\"buffer\"),He=new It(\"picker\");let We,qe;function Xe(t){We=t}function Ye(t){qe=t}class Ke{constructor(t,e={}){this.chunkSize=10485760,this.newline=\"\\n\",this.__pointer=0,this.__partialLine=\"\",this.compressed=st(e.compressed,!1),this.binary=st(e.binary,!1),this.json=st(e.json,!1),this.xml=st(e.xml,!1),this.src=t}isBinary(){return this.binary||this.compressed}read(){return this._read().then((t=>{const e=this.compressed?Ge.get(this.compressed):void 0;return this.compressed&&e?this.data=e(t):((this.binary||this.compressed)&&t instanceof ArrayBuffer&&(t=new Uint8Array(t)),this.data=t),this.data}))}_chunk(t,e){return e=Math.min(this.data.length,e),0===t&&this.data.length===e?this.data:this.isBinary()?this.data.subarray(t,e):this.data.substring(t,e)}chunk(t){const e=t+this.chunkSize;return this._chunk(t,e)}peekLines(t){const e=this.data,i=e.length,r=this.isBinary()?this.newline.charCodeAt(0):this.newline;let s,n=0;for(s=0;si).lines}chunkCount(){return Math.floor(this.data.length/this.chunkSize)+1}asText(){return this.isBinary()?yt(this.data):this.data}chunkToLines(t,e,i){const r=this.newline;if(!this.isBinary()&&t.length===this.data.length)return{lines:t.split(r),partialLine:\"\"};let s=[];const n=this.isBinary()?yt(t):t,o=n.lastIndexOf(r);if(-1===o)e+=n;else{const t=e+n.substr(0,o);s=s.concat(t.split(r)),e=o===n.length-r.length?\"\":n.substr(o+r.length)}return i&&\"\"!==e&&s.push(e),{lines:s,partialLine:e}}nextChunk(){const t=this.__pointer;if(!(t>this.data.length))return this.__pointer+=this.chunkSize,this.chunk(t)}nextChunkOfLines(){const t=this.nextChunk();if(void 0===t)return;const e=this.__pointer>this.data.length,i=this.chunkToLines(t,this.__partialLine,e);return this.__partialLine=i.partialLine,i.lines}eachChunk(t){const e=this.chunkSize,i=this.data.length,r=this.chunkCount();for(let s=0;s{const s=i===r+1,n=this.chunkToLines(e,this.__partialLine,s);this.__partialLine=n.partialLine,t(n.lines,i,r)}))}dispose(){delete this.src}}class Ze extends Ke{_read(){return new Promise(((t,e)=>{const i=this.src,r=new FileReader;r.onload=e=>{e.target&&t(e.target.result)},r.onerror=t=>e(t),this.binary||this.compressed?r.readAsArrayBuffer(i):r.readAsText(i)}))}}class Qe extends Ke{_read(){return new Promise(((t,e)=>{const i=this.src,r=new XMLHttpRequest;r.open(\"GET\",i,!0),r.addEventListener(\"load\",(()=>{if(200===r.status||304===r.status||0===r.status)try{t(r.response)}catch(t){e(t)}else e(r.statusText)}),!1),r.addEventListener(\"error\",(t=>e(\"network error\")),!1),this.isBinary()?r.responseType=\"arraybuffer\":this.json?r.responseType=\"json\":this.xml?r.responseType=\"document\":r.responseType=\"text\",r.send()}))}}class Je{constructor(t,e={}){this.parameters=nt(e,{ext:\"\",compressed:!1,binary:ze.isBinary(e.ext||\"\"),name:\"\",dir:\"\",path:\"\",protocol:\"\"});const i={compressed:this.parameters.compressed,binary:this.parameters.binary,json:ze.isJson(this.parameters.ext),xml:ze.isXml(this.parameters.ext)};\"undefined\"!=typeof File&&t instanceof File||\"undefined\"!=typeof Blob&&t instanceof Blob?this.streamer=new Ze(t,i):this.streamer=new Qe(t,i)}}class ti extends Je{constructor(t,e={}){super(t,e),this.parserParams={voxelSize:e.voxelSize,firstModelOnly:e.firstModelOnly,asTrajectory:e.asTrajectory,cAlphaOnly:e.cAlphaOnly,delimiter:e.delimiter,comment:e.comment,columnNames:e.columnNames,inferBonds:e.inferBonds,name:this.parameters.name,path:this.parameters.path}}load(){return new(ze.get(this.parameters.ext))(this.streamer,this.parserParams).parse()}}class ei{constructor(t,e,i){this.name=e,this.path=i,this.signals={elementAdded:new et,elementRemoved:new et,nameChanged:new et},this.type=\"Script\",this.dir=i.substring(0,i.lastIndexOf(\"/\")+1);try{this.fn=new Function(\"stage\",\"__name\",\"__path\",\"__dir\",t)}catch(t){Me.error(\"Script compilation failed\",t),this.fn=function(){}}}run(t){return new Promise(((e,i)=>{try{this.fn.apply(null,[t,this.name,this.path,this.dir]),e()}catch(t){Me.error(\"Script.fn\",t),i(t)}}))}}class ii extends Je{load(){return this.streamer.read().then((()=>new ei(this.streamer.asText(),this.parameters.name,this.parameters.path)))}}function ri(t){const e=Ge.names;let i,r,s=\"\";i=t instanceof File?t.name:t instanceof Blob?\"\":t;const n=i.lastIndexOf(\"?\"),o=-1!==n?i.substring(n):\"\";i=i.substring(0,-1===n?i.length:n);const a=i.replace(/^.*[\\\\/]/,\"\");let c=a.substring(0,a.lastIndexOf(\".\"));const l=a.split(\".\");let h=l.length>1?(l.pop()||\"\").toLowerCase():\"\";const d=i.match(/^(.+):\\/\\/(.+)$/);d&&(s=d[1].toLowerCase(),i=d[2]||\"\");const u=i.substring(0,i.lastIndexOf(\"/\")+1);if(e.includes(h)){r=h;const t=i.length-h.length-1;h=(i.substr(0,t).split(\".\").pop()||\"\").toLowerCase();const e=c.length-h.length-1;c=c.substr(0,e)}else r=!1;return{path:i,name:a,ext:h,base:c,dir:u,compressed:r,protocol:s,query:o,src:t}}function si(t){let e=ri(t);const i=Le.get(e.protocol);return i&&(e=ri(i.getUrl(e.src)),!e.ext&&i.getExt&&(e.ext=i.getExt(t))),e}function ni(t,e={}){const i=Object.assign(si(t),e);let r;return ze.names.includes(i.ext)?r=new ti(i.src,i):Re.includes(i.ext)&&(r=new ii(i.src,i)),r?r.load():Promise.reject(new Error(`autoLoad: ext '${i.ext}' unknown`))}class oi{getBlob(){return new Blob([this.getData()],{type:this.mimeType})}download(t,e){t=st(t,this.defaultName),e=st(e,this.defaultExt),dt(this.getBlob(),`${t}.${e}`)}}class ai extends oi{constructor(t,e){super(),this.mimeType=\"text/plain\",this.defaultName=\"structure\",this.defaultExt=\"pdb\";const i=Object.assign({},e);this.renumberSerial=st(i.renumberSerial,!0),this.remarks=function(t){return Array.isArray(t)?t:[t]}(st(i.remarks,[])),this.structure=t,this._records=[]}_writeRecords(){this._records.length=0,this._writeTitle(),this._writeRemarks(),this._writeAtoms()}_writeTitle(){this._records.push(it(\"TITLE %-74s\",this.structure.name))}_writeRemarks(){this.remarks.forEach((t=>{this._records.push(it(\"REMARK %-73s\",t))})),this.structure.trajectory&&(this._records.push(it(\"REMARK %-73s\",\"Trajectory '\"+this.structure.trajectory.name+\"'\")),this._records.push(it(\"REMARK %-73s\",`Frame ${this.structure.trajectory.frame}`)))}_writeAtoms(){let t=1,e=1,i=\" \",r=\" \";const s=this.structure.modelStore.count>1;this.structure.eachModel((n=>{s&&this._records.push(it(\"MODEL %4d%-66s\",e++,\"\")),n.eachAtom((e=>{const s=e.hetero?\"HETATM%5d %-4s %3s %1s%4d %8.3f%8.3f%8.3f%6.2f%6.2f %4s%2s%1s%1s\":\"ATOM %5d %-4s %3s %1s%4d %8.3f%8.3f%8.3f%6.2f%6.2f %4s%2s%1s%1s\",n=this.renumberSerial?t:e.serial;let o=e.atomname;(1===o.length||o.length<4&&1===e.element.length&&o[0]===e.element)&&(o=\" \"+o),e.formalCharge?(i=Math.abs(e.formalCharge).toPrecision(1),r=e.formalCharge>0?\"+\":\"-\"):(i=\" \",r=\" \"),this._records.push(it(s,n,o,e.resname,st(e.chainname,\" \"),e.resno,e.x,e.y,e.z,st(e.occupancy,1),st(e.bfactor,0),\"\",st(e.element,\"\"),i,r)),t+=1}),this.structure.getSelection()),s&&this._records.push(it(\"%-80s\",\"ENDMDL\"))})),this._records.push(it(\"%-80s\",\"END\"))}getString(){return console.warn(\"PdbWriter.getString() is deprecated, use .getData instead\"),this.getData()}getData(){return this._writeRecords(),this._records.join(\"\\n\")}}class ci extends oi{constructor(t){super(),this.mimeType=\"text/plain\",this.defaultName=\"structure\",this.defaultExt=\"sdf\",this.structure=t,this._records=[]}get idString(){return this.structure.id}get titleString(){return\" \"+this.structure.title}get countsString(){return it(\"%3i%3i 0 0 0 0 0 0 0 0999 V2000\",this.structure.atomCount,this.structure.bondCount)}get chargeLines(){const t=[];this.structure.eachAtom((e=>{null!=e.formalCharge&&0!==e.formalCharge&&t.push([e.index,e.formalCharge])}));const e=[];for(let i=0;i{this._records.push(this.formatAtom(t))})),this.structure.eachBond((t=>{this._records.push(this.formatBond(t))})),this.chargeLines.forEach((t=>{this._records.push(t)})),this._records.push(\"M END\")}_writeFooter(){this._records.push(\"$$$$\")}getData(){return this._writeRecords(),this._records.join(\"\\n\")}}const li=[];class hi{constructor(t,e={}){this._mark=0,this._marks=[],this.offset=0,this.littleEndian=!0;let i=!1;void 0===t&&(t=8192),\"number\"==typeof t?t=new ArrayBuffer(t):i=!0;const r=e.offset?e.offset>>>0:0;let s=t.byteLength-r,n=r;t instanceof ArrayBuffer||(t.byteLength!==t.buffer.byteLength&&(n=t.byteOffset+r),t=t.buffer),this._lastWrittenByte=i?s:0,this.buffer=t,this.length=s,this.byteLength=s,this.byteOffset=n,this._data=new DataView(this.buffer,n,s)}available(t){return void 0===t&&(t=1),this.offset+t<=this.length}isLittleEndian(){return this.littleEndian}setLittleEndian(){return this.littleEndian=!0,this}isBigEndian(){return!this.littleEndian}setBigEndian(){return this.littleEndian=!1,this}skip(t){return void 0===t&&(t=1),this.offset+=t,this}seek(t){return this.offset=t,this}mark(){return this._mark=this.offset,this}reset(){return this.offset=this._mark,this}pushMark(){return this._marks.push(this.offset),this}popMark(){const t=this._marks.pop();if(void 0===t)throw new Error(\"Mark stack empty\");return this.seek(t),this}rewind(){return this.offset=0,this}ensureAvailable(t){if(void 0===t&&(t=1),!this.available(t)){const e=2*(this.offset+t),i=new Uint8Array(e);i.set(new Uint8Array(this.buffer)),this.buffer=i.buffer,this.length=this.byteLength=e,this._data=new DataView(this.buffer)}return this}readBoolean(){return 0!==this.readUint8()}readInt8(){return this._data.getInt8(this.offset++)}readUint8(){return this._data.getUint8(this.offset++)}readByte(){return this.readUint8()}readBytes(t){void 0===t&&(t=1);for(var e=new Uint8Array(t),i=0;ithis._lastWrittenByte&&(this._lastWrittenByte=this.offset)}}class di extends oi{constructor(t){super(),this.mimeType=\"application/vnd.ms-pki.stl\",this.defaultName=\"surface\",this.defaultExt=\"stl\",this.surface=t}getData(){const t=this.surface.index.length/3,i=new hi(2*t+3*t*4*4+80+4);i.skip(80),i.writeUint32(t);const r=new e,s=new e,n=new e,o=new e;for(let e=0;e{0===this.count&&(this.signals.countChanged.remove(i,this),t.call(e))};this.signals.countChanged.add(i,this)}}dispose(){this.clear(),this.signals.countChanged.dispose()}}Ve.add(\"shader/BasicLine.vert\",\"void main(){\\n#include begin_vertex\\n#include project_vertex\\n}\"),Ve.add(\"shader/BasicLine.frag\",\"uniform vec3 uColor;\\n#include common\\n#include fog_pars_fragment\\nvoid main(){\\ngl_FragColor = vec4( uColor, 1.0 );\\n#include premultiplied_alpha_fragment\\n#include tonemapping_fragment\\n#include encodings_fragment\\n#include fog_fragment\\n}\"),Ve.add(\"shader/Quad.vert\",\"varying vec2 vUv;\\nvoid main() {\\nvUv = uv;\\ngl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\"),Ve.add(\"shader/Quad.frag\",\"varying vec2 vUv;\\nuniform sampler2D tForeground;\\nuniform float scale;\\nvoid main() {\\nvec4 foreground = texture2D( tForeground, vUv );\\ngl_FragColor = foreground * scale;\\n}\");class mi{constructor(){this.signals={updated:new tt.Signal},this.maxDuration=-1/0,this.minDuration=1/0,this.avgDuration=14,this.lastDuration=1/0,this.prevFpsTime=0,this.lastFps=1/0,this.lastFrames=1,this.frames=0,this.count=0,this.begin()}update(){this.startTime=this.end(),this.currentTime=this.startTime,this.signals.updated.dispatch()}begin(){this.startTime=window.performance.now(),this.lastFrames=this.frames}end(){const t=window.performance.now();return this.count+=1,this.frames+=1,this.lastDuration=t-this.startTime,this.minDuration=Math.min(this.minDuration,this.lastDuration),this.maxDuration=Math.max(this.maxDuration,this.lastDuration),this.avgDuration-=this.avgDuration/30,this.avgDuration+=this.lastDuration/30,t>this.prevFpsTime+1e3&&(this.lastFps=this.frames,this.prevFpsTime=t,this.frames=0),t}}Ve.add(\"shader/chunk/fog_fragment.glsl\",\"#ifdef USE_FOG\\nfloat depth = length( vViewPosition );\\n#ifdef FOG_EXP2\\nfloat fogFactor = whiteCompliment( exp2( - fogDensity * fogDensity * depth * depth * LOG2 ) );\\n#else\\nfloat fogFactor = smoothstep( fogNear, fogFar, depth );\\n#endif\\ngl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\"),Ve.add(\"shader/chunk/interior_fragment.glsl\",\"if( gl_FrontFacing == false ){\\n#ifdef USE_INTERIOR_COLOR\\noutgoingLight.xyz = interiorColor;\\n#else\\n#ifdef DIFFUSE_INTERIOR\\noutgoingLight.xyz = vColor;\\n#endif\\n#endif\\noutgoingLight.xyz *= 1.0 - interiorDarkening;\\n}\"),Ve.add(\"shader/chunk/matrix_scale.glsl\",\"float matrixScale( in mat4 m ){\\nvec4 r = m[ 0 ];\\nreturn sqrt( r[ 0 ] * r[ 0 ] + r[ 1 ] * r[ 1 ] + r[ 2 ] * r[ 2 ] );\\n}\"),Ve.add(\"shader/chunk/nearclip_vertex.glsl\",\"#ifdef NEAR_CLIP\\nif( vViewPosition.z < clipNear - 5.0 )\\ngl_Position.z = 2.0 * gl_Position.w;\\n#endif\"),Ve.add(\"shader/chunk/nearclip_fragment.glsl\",\"#ifdef NEAR_CLIP\\nif( vViewPosition.z < clipNear )\\ndiscard;\\n#endif\"),Ve.add(\"shader/chunk/opaque_back_fragment.glsl\",\"#ifdef OPAQUE_BACK\\n#ifdef FLIP_SIDED\\nif( gl_FrontFacing == true ){\\ngl_FragColor.a = 1.0;\\n}\\n#else\\nif( gl_FrontFacing == false ){\\ngl_FragColor.a = 1.0;\\n}\\n#endif\\n#endif\"),Ve.add(\"shader/chunk/radiusclip_vertex.glsl\",\"#ifdef RADIUS_CLIP\\nif( distance( vViewPosition, vClipCenter ) > clipRadius + 5.0 )\\ngl_Position.z = 2.0 * gl_Position.w;\\n#endif\"),Ve.add(\"shader/chunk/radiusclip_fragment.glsl\",\"#ifdef RADIUS_CLIP\\nif( distance( vViewPosition, vClipCenter ) > clipRadius )\\ndiscard;\\n#endif\"),Ve.add(\"shader/chunk/unpack_color.glsl\",\"vec3 unpackColor(float f) {\\nvec3 color;\\ncolor.r = floor(f / 256.0 / 256.0);\\ncolor.g = floor((f - color.r * 256.0 * 256.0) / 256.0);\\ncolor.b = floor(f - color.r * 256.0 * 256.0 - color.g * 256.0);\\nreturn color / 255.0;\\n}\");const pi=/^(?!\\/\\/)\\s*#include\\s+(\\S+)/gim,fi={};function gi(t,e={}){let i=t+\"|\";for(const t in e)i+=t+\":\"+e[t];if(!fi[i]){const r=function(t){if(void 0===t)return\"\";const e=[];for(const i in t){const r=t[i];r&&e.push(`#define ${i} ${r}`)}return e.join(\"\\n\")+\"\\n\"}(e);let s=Ve.get(`shader/${t}`);if(!s)throw new Error(`empty shader, '${t}'`);s=s.replace(pi,(function(t,e){const i=`shader/chunk/${e}.glsl`,r=Ve.get(i)||n[e];if(!r)throw new Error(`empty chunk, '${e}'`);return r})),fi[i]=r+s}return fi[i]}if(\"undefined\"!=typeof WebGLRenderingContext){const t=WebGLRenderingContext.prototype,e=t.getShaderParameter;t.getShaderParameter=function(){return!De||e.apply(this,arguments)};const i=t.getShaderInfoLog;t.getShaderInfoLog=function(){return De?i.apply(this,arguments):\"\"};const r=t.getProgramParameter;t.getProgramParameter=function(e,i){return!De&&i===t.LINK_STATUS||r.apply(this,arguments)};const s=t.getProgramInfoLog;t.getProgramInfoLog=function(){return De?s.apply(this,arguments):\"\"}}const yi=[[[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]]];yi.forEach((t=>{t.forEach((t=>{t[0]*=.0625,t[1]*=.0625}))}));class bi{constructor(t,e,i,r){this.canvas=document.createElement(\"canvas\"),this._viewer=i,this._factor=st(r.factor,2),this._antialias=st(r.antialias,!1),this._onProgress=r.onProgress,this._onFinish=r.onFinish,this._antialias&&(this._factor*=2),this._n=this._factor*this._factor,this._width=this._viewer.width,this._height=this._viewer.height,this._antialias?(this.canvas.width=this._width*this._factor/2,this.canvas.height=this._height*this._factor/2):(this.canvas.width=this._width*this._factor,this.canvas.height=this._height*this._factor),this._ctx=this.canvas.getContext(\"2d\"),this._viewerSampleLevel=i.sampleLevel,this._viewer.setSampling(-1)}_renderTile(t){const e=this._viewer,i=this._width,r=this._height,s=this._factor,n=t%s*i,o=Math.floor(t/s)*r;if(e.camera.setViewOffset(i*s,r*s,n,o,i,r),e.render(),this._antialias){const t=Math.round((n+i)/2)-Math.round(n/2),s=Math.round((o+r)/2)-Math.round(o/2);this._ctx.drawImage(e.renderer.domElement,Math.round(n/2),Math.round(o/2),t,s)}else this._ctx.drawImage(e.renderer.domElement,Math.floor(n),Math.floor(o),Math.ceil(i),Math.ceil(r));\"function\"==typeof this._onProgress&&this._onProgress(t+1,this._n,!1)}_finalize(){this._viewer.setSampling(this._viewerSampleLevel),this._viewer.camera.view=null,\"function\"==typeof this._onFinish&&this._onFinish(this._n+1,this._n,!1)}render(){for(let t=0;t<=this._n;++t)t===this._n?this._finalize():this._renderTile(t)}renderAsync(){let t=0;const e=this._n,i=()=>{t===e?this._finalize():this._renderTile(t),t+=1};for(let t=0;t<=e;++t)setTimeout(i,0)}}const xi=2*Math.PI,vi=180/Math.PI;function wi(t,e,i=1,r=0,s){const n=s?s.length:t.length/i;let o=0,a=0;if(s)for(let c=0;ce&&(e=t[i]);return e}function Di(t){let e=1/0;for(let i=0,r=t.length;i=0;l--){for(c=o-1;c>=0;c--)if(d=4*(l*o+c),a[d]!==e||a[d+1]!==i||a[d+2]!==r||a[d+3]!==s){h=!0;break}if(h)break}const p=l;for(h=!1,c=o-1;c>=0;c--){for(l=n-1;l>=0;l--)if(d=4*(l*o+c),a[d]!==e||a[d+1]!==i||a[d+2]!==r||a[d+3]!==s){h=!0;break}if(h)break}const f=c,g=document.createElement(\"canvas\");return g.width=f-m,g.height=p-u,g.getContext(\"2d\").drawImage(t,m,u,g.width,g.height,0,0,g.width,g.height),g}(t,n?0:255*e.r,n?0:255*e.g,n?0:255*e.b,n?0:255)}return t}function u(t,i,r){\"function\"==typeof e.onProgress&&e.onProgress(t,i,r)}return new Promise((function(e,i){const l=new bi(o,a,t,{factor:r,antialias:s,onProgress:u,onFinish:function(r,s){d(l.canvas).toBlob((function(r){o.setClearAlpha(c),h(!0),t.requestRender(),u(s,s,!0),r?e(r):i(\"error creating image\")}),\"image/png\")}});o.setClearAlpha(n?0:1),h(),l.renderAsync()}))}const Fi=new e,Li=new i,Ni=new i;const zi=new t,Vi=new i,Gi=new i;function Ui(t,e){Vi.getInverse(e.projectionMatrix),Gi.copy(e.projectionMatrix).transpose(),t.traverse((function(t){const e=t.material;if(!e)return;const i=e.uniforms;i&&(i.projectionMatrixInverse&&i.projectionMatrixInverse.value.copy(Vi),i.projectionMatrixTranspose&&i.projectionMatrixTranspose.value.copy(Gi))}))}function ji(t,e,i){const r=t.createShader(i);if(!r)return void console.log(`error creating WebGL shader ${i}`);t.shaderSource(r,e),t.compileShader(r);return t.getShaderParameter(r,t.COMPILE_STATUS)?r:(console.log(`error compiling shader ${r}: ${t.getShaderInfoLog(r)}`),t.deleteShader(r),null)}function Hi(t,e){const i=t.getExtension(e);return i||console.log(`extension '${e}' not available`),i}const Wi=new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]);function qi(t){const e=document.createElement(\"canvas\");e.width=16,e.height=16,e.style.width=\"16px\",e.style.height=\"16px\";const i=e.getContext(\"webgl\")||e.getContext(\"experimental-webgl\");if(!i)return console.log(`error creating webgl context for ${t}`),!1;if(!(i instanceof WebGLRenderingContext))return console.log(\"Got unexpected type for WebGL rendering context\"),!1;Hi(i,\"OES_texture_float\"),Hi(i,\"OES_texture_half_float\"),Hi(i,\"WEBGL_color_buffer_float\");const r=ji(i,\"\\nattribute vec4 a_position;\\n\\nvoid main() {\\n gl_Position = a_position;\\n}\",i.VERTEX_SHADER),s=ji(i,\"\\nprecision mediump float;\\nuniform vec4 u_color;\\nuniform sampler2D u_texture;\\n\\nvoid main() {\\n gl_FragColor = texture2D(u_texture, vec2(0.5, 0.5)) * u_color;\\n}\",i.FRAGMENT_SHADER);if(!r||!s)return!1;const n=function(t,e,i,r){const s=t.createProgram();return s?(e.forEach((e=>t.attachShader(s,e))),i&&i.forEach(((e,i)=>{t.bindAttribLocation(s,r?r[i]:i,e)})),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)?s:(console.log(`error linking program: ${t.getProgramInfoLog(s)}`),t.deleteProgram(s),null)):void console.log(\"error creating WebGL program\")}(i,[r,s]);if(!n)return console.log(\"error creating WebGL program\"),!1;i.useProgram(n);const o=i.getAttribLocation(n,\"a_position\"),a=i.getUniformLocation(n,\"u_color\");if(!a)return console.log(\"error getting 'u_color' uniform location\"),!1;const c=i.createBuffer();i.bindBuffer(i.ARRAY_BUFFER,c),i.bufferData(i.ARRAY_BUFFER,Wi,i.STATIC_DRAW),i.enableVertexAttribArray(o),i.vertexAttribPointer(o,2,i.FLOAT,!1,0,0);const l=i.createTexture(),h=new Uint8Array([255,255,255,255]);i.bindTexture(i.TEXTURE_2D,l),i.texImage2D(i.TEXTURE_2D,0,i.RGBA,1,1,0,i.RGBA,i.UNSIGNED_BYTE,h);const d=i.createTexture();i.bindTexture(i.TEXTURE_2D,d),i.texImage2D(i.TEXTURE_2D,0,i.RGBA,1,1,0,i.RGBA,t,null),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,i.NEAREST),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,i.NEAREST);const u=i.createFramebuffer();i.bindFramebuffer(i.FRAMEBUFFER,u),i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,d,0);if(i.checkFramebufferStatus(i.FRAMEBUFFER)!==i.FRAMEBUFFER_COMPLETE)return console.log(`error creating framebuffer for ${t}`),!1;i.bindTexture(i.TEXTURE_2D,l),i.uniform4fv(a,[0,10,20,1]),i.drawArrays(i.TRIANGLES,0,6),i.bindTexture(i.TEXTURE_2D,d),i.bindFramebuffer(i.FRAMEBUFFER,null),i.clearColor(1,0,0,1),i.clear(i.COLOR_BUFFER_BIT),i.uniform4fv(a,[0,.1,.05,1]),i.drawArrays(i.TRIANGLES,0,6);const m=new Uint8Array(4);if(i.readPixels(0,0,1,1,i.RGBA,i.UNSIGNED_BYTE,m),0!==m[0]||m[1]<248||m[2]<248||m[3]<254)return console.log(`not able to actually render to ${t} texture`),!1;if(t===i.FLOAT){i.bindFramebuffer(i.FRAMEBUFFER,u);const t=new Float32Array(4);i.readPixels(0,0,1,1,i.RGBA,i.FLOAT,t);const e=i.getError();if(e)return console.log(`error reading pixels as float: '${function(t,e){switch(e){case t.NO_ERROR:return\"no error\";case t.INVALID_ENUM:return\"invalid enum\";case t.INVALID_VALUE:return\"invalid value\";case t.INVALID_OPERATION:return\"invalid operation\";case t.INVALID_FRAMEBUFFER_OPERATION:return\"invalid framebuffer operation\";case t.OUT_OF_MEMORY:return\"out of memory\";case t.CONTEXT_LOST_WEBGL:return\"context lost\"}return\"unknown error\"}(i,e)}'`),!1}return!0}const Xi=new Float32Array(100),Yi=new Uint8Array(100),Ki=[12,7,13,17,11,6,8,18,16,2,14,22,10,1,3,9,19,23,21,15,5,0,4,24,20],Zi=new i;function Qi(t,e,i,r,s){const n=s.uniforms,o=[];if(n&&(n.objectId&&(n.objectId.value=Ce?this.id:this.id/255,o.push(\"objectId\")),(n.modelViewMatrixInverse||n.modelViewMatrixInverseTranspose||n.modelViewProjectionMatrix||n.modelViewProjectionMatrixInverse)&&this.modelViewMatrix.multiplyMatrices(i.matrixWorldInverse,this.matrixWorld),n.modelViewMatrixInverse&&(n.modelViewMatrixInverse.value.getInverse(this.modelViewMatrix),o.push(\"modelViewMatrixInverse\")),n.modelViewMatrixInverseTranspose&&(n.modelViewMatrixInverse?n.modelViewMatrixInverseTranspose.value.copy(n.modelViewMatrixInverse.value).transpose():n.modelViewMatrixInverseTranspose.value.getInverse(this.modelViewMatrix).transpose(),o.push(\"modelViewMatrixInverseTranspose\")),n.modelViewProjectionMatrix&&(n.modelViewProjectionMatrix.value.multiplyMatrices(i.projectionMatrix,this.modelViewMatrix),o.push(\"modelViewProjectionMatrix\")),n.modelViewProjectionMatrixInverse&&(n.modelViewProjectionMatrix?(Zi.copy(n.modelViewProjectionMatrix.value),n.modelViewProjectionMatrixInverse.value.getInverse(Zi)):(Zi.multiplyMatrices(i.projectionMatrix,this.modelViewMatrix),n.modelViewProjectionMatrixInverse.value.getInverse(Zi)),o.push(\"modelViewProjectionMatrixInverse\")),o.length)){const e=t.properties.get(s);if(e.program){const i=t.getContext(),r=e.program;i.useProgram(r.program);const s=r.getUniforms();o.forEach((function(t){s.setValue(i,t,n[t].value)}))}}}class Ji{constructor(t){if(this.boundingBox=new a,this.boundingBoxSize=new e,this.boundingBoxLength=0,this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}},this.distVector=new e,this.signals={ticked:new et,rendered:new et},\"string\"==typeof t){const e=document.getElementById(t);this.container=null===e?document.createElement(\"div\"):e}else t instanceof HTMLElement?this.container=t:this.container=document.createElement(\"div\");if(this.container===document.body)this.width=window.innerWidth||1,this.height=window.innerHeight||1;else{const t=this.container.getBoundingClientRect();this.width=t.width||1,this.height=t.height||1,this.container.style.overflow=\"hidden\"}this.wrapper=document.createElement(\"div\"),this.wrapper.style.position=\"relative\",this.container.appendChild(this.wrapper),this._initParams(),this._initStats(),this._initCamera(),this._initScene(),!1!==this._initRenderer()?(this._initHelper(),this.setBackground(),this.setFog(),this.animate=this.animate.bind(this)):Me.error(\"Viewer: could not initialize renderer\")}_initParams(){this.parameters={fogColor:new s(0),fogNear:50,fogFar:100,backgroundColor:new s(0),cameraType:\"perspective\",cameraFov:40,cameraEyeSep:.3,cameraZ:-80,clipNear:0,clipFar:100,clipDist:10,clipMode:\"scene\",clipScale:\"relative\",lightColor:new s(14540253),lightIntensity:1,ambientColor:new s(14540253),ambientIntensity:.2,sampleLevel:0,rendererEncoding:c}}_initCamera(){const t=new e(0,0,0),{width:i,height:r}=this;this.perspectiveCamera=new l(this.parameters.cameraFov,i/r),this.perspectiveCamera.position.z=this.parameters.cameraZ,this.perspectiveCamera.lookAt(t),this.orthographicCamera=new h(i/-2,i/2,r/2,r/-2),this.orthographicCamera.position.z=this.parameters.cameraZ,this.orthographicCamera.lookAt(t),this.stereoCamera=new d,this.stereoCamera.aspect=.5,this.stereoCamera.eyeSep=this.parameters.cameraEyeSep;const s=this.parameters.cameraType;if(\"orthographic\"===s)this.camera=this.orthographicCamera;else{if(\"perspective\"!==s&&\"stereo\"!==s)throw new Error(`Unknown cameraType '${s}'`);this.camera=this.perspectiveCamera}this.camera.updateProjectionMatrix()}_initStats(){this.stats=new mi}_initScene(){this.scene||(this.scene=new u,this.scene.name=\"scene\"),this.rotationGroup=new m,this.rotationGroup.name=\"rotationGroup\",this.scene.add(this.rotationGroup),this.translationGroup=new m,this.translationGroup.name=\"translationGroup\",this.rotationGroup.add(this.translationGroup),this.modelGroup=new m,this.modelGroup.name=\"modelGroup\",this.translationGroup.add(this.modelGroup),this.pickingGroup=new m,this.pickingGroup.name=\"pickingGroup\",this.translationGroup.add(this.pickingGroup),this.backgroundGroup=new m,this.backgroundGroup.name=\"backgroundGroup\",this.translationGroup.add(this.backgroundGroup),this.helperGroup=new m,this.helperGroup.name=\"helperGroup\",this.translationGroup.add(this.helperGroup),this.scene.fog=new p(this.parameters.fogColor.getHex()),this.spotLight=new f(this.parameters.lightColor.getHex(),this.parameters.lightIntensity),this.scene.add(this.spotLight),this.ambientLight=new g(this.parameters.ambientColor.getHex(),this.parameters.ambientIntensity),this.scene.add(this.ambientLight)}_initRenderer(){const t=window.devicePixelRatio,{width:e,height:i}=this;try{this.renderer=new y({preserveDrawingBuffer:!0,alpha:!0,antialias:!0})}catch(t){return this.wrapper.innerHTML='

Your browser/graphics card does not seem to support WebGL.

Find out how to get it here.

',!1}this.renderer.setPixelRatio(t),this.renderer.setSize(e,i),this.renderer.autoClear=!1,this.renderer.sortObjects=!0,this.renderer.outputEncoding=this.parameters.rendererEncoding;const r=this.renderer.getContext();this.renderer.capabilities.isWebGL2?(ke(!0),Pe(this.renderer.extensions.get(\"EXT_color_buffer_float\")),this.supportsHalfFloat=!0):(ke(this.renderer.extensions.get(\"EXT_frag_depth\")),this.renderer.extensions.get(\"OES_element_index_uint\"),Pe(this.renderer.extensions.get(\"OES_texture_float\")&&this.renderer.extensions.get(\"WEBGL_color_buffer_float\")||this.renderer.extensions.get(\"OES_texture_float\")&&qi(r.FLOAT)),this.renderer.extensions.get(\"OES_texture_float\"),this.supportsHalfFloat=this.renderer.extensions.get(\"OES_texture_half_float\")&&qi(36193)),this.wrapper.appendChild(this.renderer.domElement);const s=e*t,n=i*t;De&&console.log(JSON.stringify({Browser:Ae,OES_texture_float:!!this.renderer.extensions.get(\"OES_texture_float\"),OES_texture_half_float:!!this.renderer.extensions.get(\"OES_texture_half_float\"),WEBGL_color_buffer_float:!!this.renderer.extensions.get(\"WEBGL_color_buffer_float\"),\"testTextureSupport Float\":qi(r.FLOAT),\"testTextureSupport HalfFloat\":qi(36193),\"this.supportsHalfFloat\":this.supportsHalfFloat,SupportsReadPixelsFloat:Ce},null,2)),this.pickingTarget=new b(s,n,{minFilter:x,magFilter:x,stencilBuffer:!1,format:v,type:Ce?D:w}),this.pickingTarget.texture.generateMipmaps=!1,this.pickingTarget.texture.encoding=this.parameters.rendererEncoding,this.renderer.setRenderTarget(this.pickingTarget),this.renderer.clear(),this.renderer.setRenderTarget(null),this.sampleTarget=new b(s,n,{minFilter:A,magFilter:A,format:v}),this.sampleTarget.texture.encoding=this.parameters.rendererEncoding,this.holdTarget=new b(s,n,{minFilter:x,magFilter:x,format:v,type:w}),this.holdTarget.texture.encoding=this.parameters.rendererEncoding,this.compositeUniforms={tForeground:new _(this.sampleTarget.texture),scale:new _(1)},this.compositeMaterial=new S({uniforms:this.compositeUniforms,vertexShader:gi(\"Quad.vert\"),fragmentShader:gi(\"Quad.frag\"),premultipliedAlpha:!0,transparent:!0,blending:C,depthTest:!1,depthWrite:!1}),this.compositeCamera=new h(-1,1,1,-1,0,1),this.compositeScene=new u,this.compositeScene.name=\"compositeScene\",this.compositeScene.add(new P(new I(2,2),this.compositeMaterial))}_initHelper(){const t=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]),e=new Float32Array(24),i=new k;i.setIndex(new M(t,1)),i.setAttribute(\"position\",new M(e,3));const r=new S({uniforms:{uColor:{value:new s(\"skyblue\")}},vertexShader:gi(\"BasicLine.vert\"),fragmentShader:gi(\"BasicLine.frag\")});this.boundingBoxMesh=new T(i,r),this.helperGroup.add(this.boundingBoxMesh)}updateHelper(){const t=this.boundingBoxMesh.geometry.attributes.position,e=t.array,{min:i,max:r}=this.boundingBox;e[0]=r.x,e[1]=r.y,e[2]=r.z,e[3]=i.x,e[4]=r.y,e[5]=r.z,e[6]=i.x,e[7]=i.y,e[8]=r.z,e[9]=r.x,e[10]=i.y,e[11]=r.z,e[12]=r.x,e[13]=r.y,e[14]=i.z,e[15]=i.x,e[16]=r.y,e[17]=i.z,e[18]=i.x,e[19]=i.y,e[20]=i.z,e[21]=r.x,e[22]=i.y,e[23]=i.z,t.needsUpdate=!0,this.boundingBox.isEmpty()||this.boundingBoxMesh.geometry.computeBoundingSphere()}get cameraDistance(){return Math.abs(this.camera.position.z)}set cameraDistance(t){this.camera.position.z=-t}add(t,e){e?e.forEach((e=>this.addBuffer(t,e))):this.addBuffer(t),t.group.name=\"meshGroup\",t.wireframeGroup.name=\"wireframeGroup\",t.parameters.background?(this.backgroundGroup.add(t.group),this.backgroundGroup.add(t.wireframeGroup)):(this.modelGroup.add(t.group),this.modelGroup.add(t.wireframeGroup)),t.pickable&&this.pickingGroup.add(t.pickingGroup),De&&this.updateHelper()}addBuffer(t,e){function i(r){r instanceof m?r.children.forEach(i):(r.userData.buffer=t,r.userData.instance=e,r.onBeforeRender=Qi)}const r=t.getMesh();e&&r.applyMatrix4(e.matrix),i(r),t.group.add(r);const s=t.getWireframeMesh();if(e&&(s.matrix.copy(r.matrix),s.position.copy(r.position),s.quaternion.copy(r.quaternion),s.scale.copy(r.scale)),i(s),t.wireframeGroup.add(s),t.pickable){const s=t.getPickingMesh();e&&(s.matrix.copy(r.matrix),s.position.copy(r.position),s.quaternion.copy(r.quaternion),s.scale.copy(r.scale)),i(s),t.pickingGroup.add(s)}e?this._updateBoundingBox(t.geometry,t.matrix,e.matrix):this._updateBoundingBox(t.geometry,t.matrix)}remove(t){this.translationGroup.children.forEach((function(e){e.remove(t.group),e.remove(t.wireframeGroup)})),t.pickable&&this.pickingGroup.remove(t.pickingGroup),this.updateBoundingBox(),De&&this.updateHelper()}_updateBoundingBox(t,e,i){const r=this.boundingBox;function s(t,e,i){null==t.boundingBox&&t.computeBoundingBox();const s=t.boundingBox.clone();e&&s.applyMatrix4(e),i&&s.applyMatrix4(i),s.min.equals(s.max)&&s.expandByScalar(5),r.union(s)}function n(t){if(void 0!==t.geometry){let e,i;t.userData.buffer&&(e=t.userData.buffer.matrix),t.userData.instance&&(i=t.userData.instance.matrix),s(t.geometry,e,i)}}t?s(t,e,i):(r.makeEmpty(),this.modelGroup.traverse(n),this.backgroundGroup.traverse(n)),r.getSize(this.boundingBoxSize),this.boundingBoxLength=this.boundingBoxSize.length()}updateBoundingBox(){this._updateBoundingBox(),De&&this.updateHelper()}getPickingPixels(){const{width:t,height:e}=this,i=t*e*4,r=Ce?new Float32Array(i):new Uint8Array(i);return this.render(!0),this.renderer.readRenderTargetPixels(this.pickingTarget,0,0,t,e,r),r}getImage(t){return new Promise((e=>{if(t){const{width:t,height:i}=this,r=t*i*4;let s=this.getPickingPixels();if(Ce){const t=new Uint8Array(r);for(let e=0;e500&&!this.isStill&&this.sampleLevel<3&&-1!==this.sampleLevel){const t=this.sampleLevel;this.sampleLevel=3,this.renderPending=!0,this.render(),this.isStill=!0,this.sampleLevel=t,De&&Me.log(\"rendered still frame\")}this.frameRequest=window.requestAnimationFrame(this.animate)}pick(t,e){if(\"stereo\"===this.parameters.cameraType)return{pid:0,instance:void 0,picker:void 0};t*=window.devicePixelRatio,e*=window.devicePixelRatio,t=Math.max(t-2,0),e=Math.max(e-2,0);let i,r,s=0;const n=Ce?Xi:Yi;this.render(!0),this.renderer.readRenderTargetPixels(this.pickingTarget,t,e,5,5,n);for(let t=0;t22&&(this.stats.begin(),this.isStill=!1),this.renderPending=!0,window.requestAnimationFrame((()=>{this.render(),this.stats.update()})))}updateZoom(){const t=kt(this.perspectiveCamera.fov),e=2*Math.tan(t/2)*this.cameraDistance;this.orthographicCamera.zoom=this.height/e}absoluteToRelative(t){return 50*(1-t/this.bRadius)}relativeToAbsolute(t){return this.bRadius*(1-t/50)}__updateClipping(){const t=this.parameters;this.bRadius=Math.max(10,.5*this.boundingBoxLength),isFinite(this.bRadius)||(this.bRadius=50),this.camera.getWorldPosition(this.distVector),this.cDist=this.distVector.length(),this.cDist||(this.cameraDistance=Math.abs(t.cameraZ),this.cDist=Math.abs(t.cameraZ));const e=this.scene.fog;if(e.color.set(t.fogColor),\"camera\"===t.clipMode)this.camera.near=t.clipNear,this.camera.far=t.clipFar,e.near=t.fogNear,e.far=t.fogFar;else if(\"absolute\"===t.clipScale)this.camera.near=this.cDist-t.clipNear,this.camera.far=this.cDist+t.clipFar,e.near=this.cDist-t.fogNear,e.far=this.cDist+t.fogFar;else{const i=(50-t.clipNear)/50,r=-(50-t.clipFar)/50;this.camera.near=this.cDist-this.bRadius*i,this.camera.far=this.cDist+this.bRadius*r;const s=(50-t.fogNear)/50,n=-(50-t.fogFar)/50;e.near=this.cDist-this.bRadius*s,e.far=this.cDist+this.bRadius*n}\"camera\"!==t.clipMode&&(\"PerspectiveCamera\"===this.camera.type?(this.camera.near=Math.max(.1,t.clipDist,this.camera.near),this.camera.far=Math.max(1,this.camera.far),e.near=Math.max(.1,e.near),e.far=Math.max(1,e.far)):\"OrthographicCamera\"===this.camera.type&&t.clipDist>0&&(this.camera.near=Math.max(t.clipDist,this.camera.near)))}__updateCamera(){const e=this.camera;e.updateMatrix(),e.updateMatrixWorld(!0),e.updateProjectionMatrix(),function(e,i,r,s,n){let o=new t;r.getSize(o);const a=o.height,c=r.getPixelRatio(),l=\"OrthographicCamera\"===i.type;zi.set(o.width,o.height),Vi.getInverse(i.projectionMatrix),Gi.copy(i.projectionMatrix).transpose(),e.traverse((function(t){const e=t.material;if(!e)return;const i=e.uniforms;if(i){if(e.clipNear){const t=(50-e.clipNear)/50,r=s-n*t;i.clipNear.value=r}i.canvasHeight&&(i.canvasHeight.value=a),i.resolution&&i.resolution.value.copy(zi),i.pixelRatio&&(i.pixelRatio.value=c),i.projectionMatrixInverse&&i.projectionMatrixInverse.value.copy(Vi),i.projectionMatrixTranspose&&i.projectionMatrixTranspose.value.copy(Gi),i.ortho&&(i.ortho.value=l)}}))}(this.scene,e,this.renderer,this.cDist,this.bRadius),function(t,e){t.traverseVisible((function(t){if(!(t instanceof o&&t.userData.buffer.parameters.sortParticles))return;const i=t.geometry.attributes,r=i.position.count;if(0===r)return;let s,n,a,c,l,h,d,u;Li.multiplyMatrices(e.matrixWorldInverse,t.matrixWorld),Ni.multiplyMatrices(e.projectionMatrix,Li),t.userData.sortData?(s=t.userData.sortData,a=s.__zArray,n=s.__sortArray,c=s.__cmpFn):(a=new Float32Array(r),n=new Uint32Array(r),c=function(t,e){const i=a[t],r=a[e];return i>r?1:ie?1:t=l&&e(t[o],n)>0;)t[o+1]=t[o],--o;t[o+1]=n}if(-1===c)break;h=s[c--],l=s[c--]}else{for(o=l+1,a=h,d(l+h>>1,o),e(t[l],t[h])>0&&d(l,h),e(t[o],t[h])>0&&d(o,h),e(t[l],t[o])>0&&d(l,o),n=t[o];;){do{o++}while(e(t[o],n)<0);do{a--}while(e(t[a],n)>0);if(a=a-l?(s[++c]=o,s[++c]=h,h=a-1):(s[++c]=l,s[++c]=a-1,l=o)}}(n,c);for(let t in i){const e=i[t],o=e.array,a=e.itemSize;s[t]||(s[t]=new Float32Array(a*r)),u=s[t],s[t]=o;for(let t=0;t0&&\"stereo\"!==this.parameters.cameraType?this.__renderSuperSample(e,i):this.__renderModelGroup(e,i)}render(t=!1,e){if(this.rendering)Me.warn(\"'tried to call 'render' from within 'render'\");else{this.rendering=!0;try{this.__updateClipping(),this.__updateCamera(),this.__updateLights(),this.updateInfo(!0),\"stereo\"===this.parameters.cameraType?this.__renderStereo(t,e):this.__render(t,this.camera,e),this.lastRenderedPicking=t}finally{this.rendering=!1,this.renderPending=!1}this.signals.rendered.dispatch()}}clear(){Me.log(\"scene cleared\"),this.scene.remove(this.rotationGroup),this._initScene(),this.renderer.clear()}dispose(){this.renderer.dispose(),window.cancelAnimationFrame(this.frameRequest)}}const tr=1,er=2,ir=3;function rr(t){const e=t.touches[0].pageX-t.touches[1].pageX,i=t.touches[0].pageY-t.touches[1].pageY;return Math.sqrt(e*e+i*i)}class sr{constructor(e,i={}){this.domElement=e,this.signals={moved:new et,scrolled:new et,dragged:new et,dropped:new et,clicked:new et,hovered:new et,doubleClicked:new et},this.position=new t,this.prevPosition=new t,this.down=new t,this.canvasPosition=new t,this.prevClickCP=new t,this.moving=!1,this.hovering=!0,this.scrolled=!1,this.lastMoved=1/0,this.which=0,this.buttons=0,this.pressed=!1,this.altKey=!1,this.ctrlKey=!1,this.metaKey=!1,this.shiftKey=!1,this.domElement.style.touchAction=\"none\",this.hoverTimeout=st(i.hoverTimeout,50),this.handleScroll=st(i.handleScroll,!0),this.doubleClickSpeed=st(i.doubleClickSpeed,500),this._listen=this._listen.bind(this),this._onMousewheel=this._onMousewheel.bind(this),this._onMousemove=this._onMousemove.bind(this),this._onMousedown=this._onMousedown.bind(this),this._onMouseup=this._onMouseup.bind(this),this._onContextmenu=this._onContextmenu.bind(this),this._onTouchstart=this._onTouchstart.bind(this),this._onTouchend=this._onTouchend.bind(this),this._onTouchmove=this._onTouchmove.bind(this),this._listen();const r={passive:!1};document.addEventListener(\"mousewheel\",this._onMousewheel,r),document.addEventListener(\"wheel\",this._onMousewheel,r),document.addEventListener(\"MozMousePixelScroll\",this._onMousewheel,r),document.addEventListener(\"mousemove\",this._onMousemove,r),document.addEventListener(\"mousedown\",this._onMousedown,r),document.addEventListener(\"mouseup\",this._onMouseup,r),document.addEventListener(\"contextmenu\",this._onContextmenu,r),document.addEventListener(\"touchstart\",this._onTouchstart,r),document.addEventListener(\"touchend\",this._onTouchend,r),document.addEventListener(\"touchmove\",this._onTouchmove,r)}get key(){let t=0;return this.altKey&&(t+=1),this.ctrlKey&&(t+=2),this.metaKey&&(t+=4),this.shiftKey&&(t+=8),t}setParameters(t={}){this.hoverTimeout=st(t.hoverTimeout,this.hoverTimeout)}_listen(){const t=window.performance.now(),e=this.canvasPosition;this.doubleClickPending&&t-this.lastClicked>this.doubleClickSpeed&&(this.doubleClickPending=!1),t-this.lastMoved>this.hoverTimeout&&(this.moving=!1),(this.scrolled||!this.moving&&!this.hovering)&&(this.scrolled=!1,-1!==this.hoverTimeout&&this.overElement&&(this.hovering=!0,this.signals.hovered.dispatch(e.x,e.y))),this.frameRequest=window.requestAnimationFrame(this._listen)}_onMousewheel(t){if(t.target!==this.domElement||!this.handleScroll)return;t.preventDefault(),this._setKeys(t);let e=0;\"deltaY\"in t&&\"deltaMode\"in t&&void 0!==t.deltaY&&void 0!==t.deltaMode?e=t.deltaMode===WheelEvent.DOM_DELTA_PIXEL?.025*-t.deltaY:t.deltaMode===WheelEvent.DOM_DELTA_LINE?-t.deltaY*(2.5/3):2.5*-t.deltaY:\"deltaY\"in t&&!(\"detail\"in t)?e=.025*-t.deltaY:void 0!==t.wheelDelta?e=.025*-t.wheelDelta:void 0!==t.wheelDeltaY?e=.025*-t.wheelDeltaY:void 0!==t.detail&&(e=-t.detail/3),this.signals.scrolled.dispatch(e),setTimeout((()=>{this.scrolled=!0}),this.hoverTimeout)}_onMousemove(t){t.target===this.domElement?(t.preventDefault(),this.overElement=!0):this.overElement=!1,this._setKeys(t),this.moving=!0,this.hovering=!1,this.lastMoved=window.performance.now(),this.prevPosition.copy(this.position),this.position.set(t.clientX,t.clientY),this._setCanvasPosition(t);const e=this.prevPosition.x-this.position.x,i=this.prevPosition.y-this.position.y;this.signals.moved.dispatch(e,i),this.pressed&&this.signals.dragged.dispatch(e,i)}_onMousedown(t){t.target===this.domElement&&(t.preventDefault(),this._setKeys(t),this.moving=!1,this.hovering=!1,this.down.set(t.clientX,t.clientY),this.position.set(t.clientX,t.clientY),this.which=t.which,this.buttons=function(t){if(\"object\"==typeof t){if(\"buttons\"in t)return t.buttons;if(\"which\"in t){const e=t.which;if(2===e)return 4;if(3===e)return 2;if(e>0)return 1<=0)return 1<2&&this.handleScroll&&this.position.distanceTo(this.prevPosition)<2)this.which=0,this.buttons=0,this.signals.scrolled.dispatch(i/2);else{this.which=3,this.buttons=2;const t=this.prevPosition.x-this.position.x,e=this.prevPosition.y-this.position.y;this.signals.moved.dispatch(t,e),this.pressed&&this.signals.dragged.dispatch(t,e)}}}}_distance(){return this.position.distanceTo(this.down)}_setCanvasPosition(t){const e=this.domElement.getBoundingClientRect();let i,r;\"clientX\"in t&&\"clientY\"in t?(i=t.clientX-e.left,r=t.clientY-e.top):(i=t.offsetX,r=t.offsetY),this.canvasPosition.set(i,e.height-r)}_setKeys(t){this.altKey=t.altKey,this.ctrlKey=t.ctrlKey,this.metaKey=t.metaKey,this.shiftKey=t.shiftKey}dispose(){document.removeEventListener(\"mousewheel\",this._onMousewheel),document.removeEventListener(\"wheel\",this._onMousewheel),document.removeEventListener(\"MozMousePixelScroll\",this._onMousewheel),document.removeEventListener(\"mousemove\",this._onMousemove),document.removeEventListener(\"mousedown\",this._onMousedown),document.removeEventListener(\"mouseup\",this._onMouseup),document.removeEventListener(\"contextmenu\",this._onContextmenu),document.removeEventListener(\"touchstart\",this._onTouchstart),document.removeEventListener(\"touchend\",this._onTouchend),document.removeEventListener(\"touchmove\",this._onTouchmove),window.cancelAnimationFrame(this.frameRequest)}}const nr=new i,or=new i,ar=new i,cr=new i,lr=new i,hr=new e,dr=new r,ur=new r,mr=new i,pr=new e,fr=new e;class gr{constructor(t,e={}){this.stage=t,this.rotateSpeed=st(e.rotateSpeed,2),this.zoomSpeed=st(e.zoomSpeed,1.2),this.panSpeed=st(e.panSpeed,1),this.viewer=t.viewer,this.mouse=t.mouseObserver,this.controls=t.viewerControls}get component(){return this.stage.transformComponent}get atom(){return this.stage.transformAtom}_setPanVector(t,e,i=0){const r=this.controls.getCanvasScaleFactor(i);pr.set(t,e,0),pr.multiplyScalar(this.panSpeed*r)}_getRotateXY(t,e){return[this.rotateSpeed*-t*.01,this.rotateSpeed*e*.01]}_getCameraRotation(t){return t.extractRotation(this.viewer.camera.matrixWorld),t.multiply(or.makeRotationY(Math.PI)),t}_transformPanVector(){this.component&&(mr.extractRotation(this.component.transform),mr.premultiply(this.viewer.rotationGroup.matrix),mr.getInverse(mr),mr.multiply(this._getCameraRotation(cr)),pr.applyMatrix4(mr))}zoom(t){this.controls.zoom(this.zoomSpeed*t*.02)}pan(t,e){this._setPanVector(t,e),mr.getInverse(this.viewer.rotationGroup.matrix),mr.multiply(this._getCameraRotation(cr)),pr.applyMatrix4(mr),this.controls.translate(pr)}panComponent(t,e){this.component&&(this._setPanVector(t,e),this._transformPanVector(),this.component.position.add(pr),this.component.updateMatrix())}panAtom(t,e){this.atom&&this.component&&(this.atom.positionToVector3(fr),fr.add(this.viewer.translationGroup.position),fr.applyMatrix4(this.viewer.rotationGroup.matrix),this._setPanVector(t,e,fr.z),this._transformPanVector(),this.atom.positionAdd(pr),this.component.updateRepresentations({position:!0}))}rotate(t,e){const[i,r]=this._getRotateXY(t,e);this._getCameraRotation(cr),hr.set(1,0,0),hr.applyMatrix4(cr),dr.setFromAxisAngle(hr,r),hr.set(0,1,0),hr.applyMatrix4(cr),ur.setFromAxisAngle(hr,i),dr.multiply(ur),cr.makeRotationFromQuaternion(dr),this.controls.applyMatrix(cr)}zRotate(t,e){const i=this.rotateSpeed*((-t+e)/-2)*.01;ar.makeRotationZ(i),this.controls.applyMatrix(ar)}rotateComponent(t,e){if(!this.component)return;const[i,r]=this._getRotateXY(t,e);this._getCameraRotation(lr),cr.extractRotation(this.component.transform),cr.premultiply(this.viewer.rotationGroup.matrix),cr.getInverse(cr),cr.premultiply(lr),hr.set(1,0,0),hr.applyMatrix4(cr),nr.makeRotationAxis(hr,r),hr.set(0,1,0),hr.applyMatrix4(cr),or.makeRotationAxis(hr,i),nr.multiply(or),dr.setFromRotationMatrix(nr),this.component.quaternion.premultiply(dr),this.component.quaternion.normalize(),this.component.updateMatrix()}}const yr=new e;class br{constructor(t,e){this.stage=e,this.pid=t.pid,this.picker=t.picker,this.instance=t.instance,this.stage=e,this.controls=e.viewerControls,this.mouse=e.mouseObserver}get type(){return this.picker.type}get altKey(){return this.mouse.altKey}get ctrlKey(){return this.mouse.ctrlKey}get metaKey(){return this.mouse.metaKey}get shiftKey(){return this.mouse.shiftKey}get canvasPosition(){return this.mouse.canvasPosition}get component(){return this.stage.getComponentsByObject(this.picker.data).list[0]}get object(){return this.picker.getObject(this.pid)}get position(){return this.picker.getPosition(this.pid,this.instance,this.component)}get closestBondAtom(){if(\"bond\"!==this.type||!this.bond)return;const t=this.bond,e=this.controls,i=this.canvasPosition,r=t.atom1.positionToVector3(),s=t.atom2.positionToVector3();r.applyMatrix4(this.component.matrix),s.applyMatrix4(this.component.matrix);const n=e.getPositionOnCanvas(r),o=e.getPositionOnCanvas(s);return c=n,l=o,(a=i).distanceTo(c)=t.length))return new br(i,this.stage);console.error(\"pid >= picker.array.length\")}}}const vr=new r,wr=new e,Ar=new e,_r=new e,Sr=new e,Cr=new i,Pr=new e,Ir=new i;class kr{constructor(t){this.stage=t,this.signals={changed:new tt.Signal},this.viewer=t.viewer}get position(){return this.viewer.translationGroup.position}get rotation(){return this.viewer.rotationGroup.quaternion}changed(){this.viewer.requestRender(),this.signals.changed.dispatch()}getPositionOnCanvas(e,i){const r=wt(i,t);const s=this.viewer;return _r.copy(e).add(s.translationGroup.position).applyMatrix4(s.rotationGroup.matrix).project(s.camera),r.set((_r.x+1)*s.width/2,(_r.y+1)*s.height/2)}getCanvasScaleFactor(t=0){const e=this.viewer.camera;if(e instanceof h)return 1/e.zoom;{t=Math.abs(t),t+=this.getCameraDistance();const i=kt(e.fov);return 2*t*Math.tan(i/2)/this.viewer.height}}getOrientation(t){const e=_t(t);e.copy(this.viewer.rotationGroup.matrix);const i=this.getCameraDistance();return e.scale(Sr.set(i,i,i)),e.setPosition(this.viewer.translationGroup.position),e}orient(t){_t(t).decompose(wr,vr,Ar);const e=this.viewer;e.rotationGroup.setRotationFromQuaternion(vr),e.translationGroup.position.copy(wr),e.cameraDistance=Ar.z,e.updateZoom(),this.changed()}translate(t){this.viewer.translationGroup.position.add(At(t)),this.changed()}center(t){this.viewer.translationGroup.position.copy(At(t)).negate(),this.changed()}zoom(t){this.distance(this.getCameraDistance()*(1-t))}getCameraDistance(){return this.viewer.cameraDistance}distance(t){this.viewer.cameraDistance=Math.max(Math.abs(t),.2),this.viewer.updateZoom(),this.changed()}spin(t,e){Cr.getInverse(this.viewer.rotationGroup.matrix),Pr.copy(At(t)).applyMatrix4(Cr),this.viewer.rotationGroup.rotateOnAxis(Pr,e),this.changed()}rotate(t){this.viewer.rotationGroup.setRotationFromQuaternion(St(t)),this.changed()}align(t){Ir.getInverse(_t(t)),this.viewer.rotationGroup.setRotationFromMatrix(Ir),this.changed()}applyMatrix(t){this.viewer.rotationGroup.applyMatrix4(_t(t)),this.changed()}}class Mr{constructor(t,e,...i){this.pausedTime=-1,this.elapsedDuration=0,this.pausedDuration=0,this.ignoreGlobalToggle=!1,this._paused=!1,this._resolveList=[],this.duration=st(t,1e3),this.controls=e,this.startTime=window.performance.now(),this._init(...i)}get done(){return 1===this.alpha}get paused(){return this._paused}tick(t){if(!this._paused)return this.elapsedDuration=t.currentTime-this.startTime-this.pausedDuration,0===this.duration?this.alpha=1:this.alpha=Rt(0,1,this.elapsedDuration/this.duration),this._tick(t),this.done&&this._resolveList.forEach((t=>t())),this.done}pause(t){t&&(this._hold=!0),-1===this.pausedTime&&(this.pausedTime=window.performance.now()),this._paused=!0}resume(t){!t&&this._hold||(this.pausedDuration+=window.performance.now()-this.pausedTime,this._paused=!1,this._hold=!1,this.pausedTime=-1)}toggle(){this._paused?this.resume():this.pause()}then(t){let e;return e=this.done?Promise.resolve():new Promise((t=>this._resolveList.push(t))),e.then(t)}}class Tr extends Mr{constructor(t,e,...i){super(st(t,1/0),e,...i)}_init(t,i){Array.isArray(t)?this.axis=(new e).fromArray(t):this.axis=st(t,new e(0,1,0)),this.angle=st(i,.01)}_tick(t){this.axis&&this.angle&&this.controls.spin(this.axis,this.angle*t.lastDuration/16)}}class Br extends Mr{constructor(t,e,...i){super(st(t,1/0),e,...i),this.angleSum=0,this.direction=1}_init(t,i,r){Array.isArray(t)?this.axis=(new e).fromArray(t):this.axis=st(t,new e(0,1,0)),this.angleStep=st(i,.01),this.angleEnd=st(r,.2)}_tick(t){if(!this.axis||!this.angleStep||!this.angleEnd)return;const e=Rt(0,1,Math.abs(this.angleSum)/this.angleEnd),i=this.angleStep*this.direction*(1.1-e);this.controls.spin(this.axis,i*t.lastDuration/16),this.angleSum+=this.angleStep,this.angleSum>=this.angleEnd&&(this.direction*=-1,this.angleSum=-this.angleEnd)}}class Dr extends Mr{_init(t,i){this.moveFrom=At(st(t,new e)),this.moveTo=At(st(i,new e))}_tick(){this.controls.position.lerpVectors(this.moveFrom,this.moveTo,this.alpha).negate(),this.controls.changed()}}class $r extends Mr{_init(t,e){this.zoomFrom=t,this.zoomTo=e}_tick(){this.controls.distance($t(this.zoomFrom,this.zoomTo,this.alpha))}}class Or extends Mr{constructor(){super(...arguments),this._currentRotation=new r}_init(t,e){this.rotateFrom=St(t),this.rotateTo=St(e),this._currentRotation=new r}_tick(){this._currentRotation.copy(this.rotateFrom).slerp(this.rotateTo,this.alpha),this.controls.rotate(this._currentRotation)}}class Rr extends Mr{_init(t,e,i){this.valueFrom=t,this.valueTo=e,this.callback=i}_tick(){this.callback($t(this.valueFrom,this.valueTo,this.alpha))}}class Er extends Mr{_init(t){this.callback=t}_tick(){1===this.alpha&&this.callback()}}class Fr{constructor(t=[]){this._resolveList=[],this._list=t}get done(){return this._list.every((t=>t.done))}then(t){let e;return e=this.done?Promise.resolve():new Promise((t=>{this._resolveList.push(t),this._list.forEach((t=>{t.then((()=>{this._resolveList.forEach((t=>{t()})),this._resolveList.length=0}))}))})),e.then(t)}}class Lr{constructor(t){this.stage=t,this.animationList=[],this.finishedList=[],this.viewer=t.viewer,this.controls=t.viewerControls}get paused(){return this.animationList.every((t=>t.paused))}add(t){return 0===t.duration?t.tick(this.viewer.stats):this.animationList.push(t),t}remove(t){const e=this.animationList,i=e.indexOf(t);i>-1&&e.splice(i,1)}run(t){const e=this.finishedList,i=this.animationList,r=i.length;for(let s=0;st.pause()))}resume(){this.animationList.forEach((t=>t.resume()))}toggle(){this.paused?this.resume():this.pause()}clear(){this.animationList.length=0}dispose(){this.clear()}}class Nr{constructor(t,e){if(this.fn=t,this.queue=[],this.pending=!1,this.next=this.next.bind(this),e){for(let t=0,i=e.length;tthis.run(t)))):this.pending=!1}push(t){this.queue.push(t),this.pending||this.next()}kill(){this.queue.length=0}length(){return this.queue.length}}class zr{constructor(t,e,i){this.type=\"\",this.parameters={lazy:{type:\"boolean\"},clipNear:{type:\"range\",step:1,max:100,min:0,buffer:!0},clipRadius:{type:\"number\",precision:1,max:1e3,min:0,buffer:!0},clipCenter:{type:\"vector3\",precision:1,buffer:!0},flatShaded:{type:\"boolean\",buffer:!0},opacity:{type:\"range\",step:.01,max:1,min:0,buffer:!0},depthWrite:{type:\"boolean\",buffer:!0},side:{type:\"select\",buffer:!0,options:{front:\"front\",back:\"back\",double:\"double\"}},wireframe:{type:\"boolean\",buffer:!0},colorData:{type:\"hidden\",update:\"color\"},colorScheme:{type:\"select\",update:\"color\",options:{}},colorScale:{type:\"select\",update:\"color\",options:Fe.getScales()},colorReverse:{type:\"boolean\",update:\"color\"},colorValue:{type:\"color\",update:\"color\"},colorDomain:{type:\"hidden\",update:\"color\"},colorMode:{type:\"select\",update:\"color\",options:Fe.getModes()},roughness:{type:\"range\",step:.01,max:1,min:0,buffer:!0},metalness:{type:\"range\",step:.01,max:1,min:0,buffer:!0},diffuse:{type:\"color\",buffer:!0},diffuseInterior:{type:\"boolean\",buffer:!0},useInteriorColor:{type:\"boolean\",buffer:!0},interiorColor:{type:\"color\",buffer:!0},interiorDarkening:{type:\"range\",step:.01,max:1,min:0,buffer:!0},matrix:{type:\"hidden\",buffer:!0},disablePicking:{type:\"boolean\",rebuild:!0}},this.viewer=e,this.tasks=new ui,this.queue=new Nr(this.make.bind(this)),this.bufferList=[],this.parameters.colorScheme&&(this.parameters.colorScheme.options=Fe.getSchemes()),this.toBePrepared=!1}init(t){const r=t||{};this.clipNear=st(r.clipNear,0),this.clipRadius=st(r.clipRadius,0),this.clipCenter=st(r.clipCenter,new e),this.flatShaded=st(r.flatShaded,!1),this.side=st(r.side,\"double\"),this.opacity=st(r.opacity,1),this.depthWrite=st(r.depthWrite,!0),this.wireframe=st(r.wireframe,!1),this.setColor(r.color,r),this.colorData=st(r.colorData,void 0),this.colorScheme=st(r.colorScheme,\"uniform\"),this.colorScale=st(r.colorScale,\"\"),this.colorReverse=st(r.colorReverse,!1),this.colorValue=st(r.colorValue,9474192),this.colorDomain=st(r.colorDomain,void 0),this.colorMode=st(r.colorMode,\"hcl\"),this.visible=st(r.visible,!0),this.quality=st(r.quality,void 0),this.roughness=st(r.roughness,.4),this.metalness=st(r.metalness,0),this.diffuse=st(r.diffuse,16777215),this.diffuseInterior=st(r.diffuseInterior,!1),this.useInteriorColor=st(r.useInteriorColor,!1),this.interiorColor=st(r.interiorColor,2236962),this.interiorDarkening=st(r.interiorDarkening,0),this.lazy=st(r.lazy,!1),this.lazyProps={build:!1,bufferParams:{},what:{}},this.matrix=st(r.matrix,new i),this.disablePicking=st(r.disablePicking,!1);const s=this.parameters;!0===s.sphereDetail&&(s.sphereDetail={type:\"integer\",max:3,min:0,rebuild:\"impostor\"}),!0===s.radialSegments&&(s.radialSegments={type:\"integer\",max:25,min:5,rebuild:\"impostor\"}),!0===s.openEnded&&(s.openEnded={type:\"boolean\",rebuild:\"impostor\",buffer:!0}),!0===s.disableImpostor&&(s.disableImpostor={type:\"boolean\",rebuild:!0}),\"low\"===r.quality?(s.sphereDetail&&(this.sphereDetail=0),s.radialSegments&&(this.radialSegments=5)):\"medium\"===r.quality?(s.sphereDetail&&(this.sphereDetail=1),s.radialSegments&&(this.radialSegments=10)):\"high\"===r.quality?(s.sphereDetail&&(this.sphereDetail=2),s.radialSegments&&(this.radialSegments=20)):(s.sphereDetail&&(this.sphereDetail=st(r.sphereDetail,1)),s.radialSegments&&(this.radialSegments=st(r.radialSegments,10))),s.openEnded&&(this.openEnded=st(r.openEnded,!0)),s.disableImpostor&&(this.disableImpostor=st(r.disableImpostor,!1))}getColorParams(t){return Object.assign({data:this.colorData,scheme:this.colorScheme,scale:this.colorScale,reverse:this.colorReverse,value:this.colorValue,domain:this.colorDomain,mode:this.colorMode,colorSpace:this.colorSpace},t)}getBufferParams(t={}){return Object.assign({clipNear:this.clipNear,clipRadius:this.clipRadius,clipCenter:this.clipCenter,flatShaded:this.flatShaded,opacity:this.opacity,depthWrite:this.depthWrite,side:this.side,wireframe:this.wireframe,roughness:this.roughness,metalness:this.metalness,diffuse:this.diffuse,diffuseInterior:this.diffuseInterior,useInteriorColor:this.useInteriorColor,interiorColor:this.interiorColor,interiorDarkening:this.interiorDarkening,matrix:this.matrix,disablePicking:this.disablePicking},t)}setColor(t,e){const i=Object.keys(Fe.getSchemes());if(\"string\"==typeof t&&i.includes(t.toLowerCase()))e?e.colorScheme=t:this.setParameters({colorScheme:t});else if(void 0!==t){let i=new s(t).getHex();e?(e.colorScheme=\"uniform\",e.colorValue=i):this.setParameters({colorScheme:\"uniform\",colorValue:i})}return this}prepare(t){}create(){}update(t){this.build()}build(t){if(!this.lazy||this.visible&&this.opacity){if(!this.toBePrepared)return this.tasks.increment(),void this.make();this.queue.length()>0?(this.tasks.change(1-this.queue.length()),this.queue.kill()):this.tasks.increment(),this.queue.push(t||!1)}else this.lazyProps.build=!0}make(t,e){De&&Me.time(\"Representation.make \"+this.type);const i=()=>{t?(this.update(t),this.viewer.requestRender(),this.tasks.decrement(),e&&e()):(this.clear(),this.create(),this.manualAttach||this.disposed||(De&&Me.time(\"Representation.attach \"+this.type),this.attach((()=>{De&&Me.timeEnd(\"Representation.attach \"+this.type),this.tasks.decrement(),e&&e()})))),De&&Me.timeEnd(\"Representation.make \"+this.type)};this.toBePrepared?this.prepare(i):i()}attach(t){this.setVisibility(this.visible),t()}setVisibility(t,e){if(this.visible=t,this.visible&&this.opacity){const t=this.lazyProps,e=t.bufferParams,i=t.what;if(t.build)return t.build=!1,this.build(),this;(Object.keys(e).length||Object.keys(i).length)&&(t.bufferParams={},t.what={},this.updateParameters(e,i))}return this.bufferList.forEach((function(e){e.setVisibility(t)})),e||this.viewer.requestRender(),this}setParameters(t,e={},i=!1){const r=t||{},s=this.parameters,n={};this.opacity||void 0===r.opacity||(this.lazyProps.build?(this.lazyProps.build=!1,i=!0):(Object.assign(n,this.lazyProps.bufferParams),Object.assign(e,this.lazyProps.what),this.lazyProps.bufferParams={},this.lazyProps.what={})),this.setColor(r.color,r);for(let t in r)if(void 0!==r[t]&&null!=s[t]&&(s[t].int&&(r[t]=parseInt(r[t])),s[t].float&&(r[t]=parseFloat(r[t])),r[t]!==this[t]||r[t].equals&&!r[t].equals(this[t]))){if(this[t]&&this[t].copy&&r[t].copy?this[t].copy(r[t]):this[t]&&this[t].set?this[t].set(r[t]):this[t]=r[t],s[t].buffer)if(!0===s[t].buffer)n[t]=r[t];else{n[s[t].buffer]=r[t]}s[t].update&&(e[s[t].update]=!0),!s[t].rebuild||\"impostor\"===s[t].rebuild&&Ie&&!this.disableImpostor||(i=!0)}return i?this.build():this.updateParameters(n,e),this}updateParameters(t={},e){if(this.lazy&&(!this.visible||!this.opacity)&&!1===t.hasOwnProperty(\"opacity\"))return Object.assign(this.lazyProps.bufferParams,t),void Object.assign(this.lazyProps.what,e);this.bufferList.forEach((function(e){e.setParameters(t)})),Object.keys(e).length&&this.update(e),this.viewer.requestRender()}getParameters(){const t={lazy:this.lazy,visible:this.visible,quality:this.quality};return Object.keys(this.parameters).forEach((e=>{null!==this.parameters[e]&&(t[e]=this[e])})),t}clear(){this.bufferList.forEach((t=>{this.viewer.remove(t),t.dispose()})),this.bufferList.length=0,this.viewer.requestRender()}dispose(){this.disposed=!0,this.queue.kill(),this.tasks.dispose(),this.clear()}}class Vr{constructor(t){this.pending=0,this.postCount=0,this.onmessageDict={},this.onerrorDict={},this.name=t,this.blobUrl=window.URL.createObjectURL(Ee.get(t)),this.worker=new Worker(this.blobUrl),Ee.activeWorkerCount+=1,this.worker.onmessage=e=>{this.pending-=1;const i=e.data.__postId;De&&Me.timeEnd(\"Worker.postMessage \"+t+\" #\"+i);const r=this.onmessageDict[i];r&&r.call(this.worker,e),delete this.onmessageDict[i],delete this.onerrorDict[i]},this.worker.onerror=e=>{if(this.pending-=1,e.data){const i=e.data.__postId,r=this.onerrorDict[i];r?r.call(this.worker,e):Me.error(\"Worker.onerror\",i,t,e),delete this.onmessageDict[i],delete this.onerrorDict[i]}else Me.error(\"Worker.onerror\",t,e)}}post(t={},e,i,r){this.onmessageDict[this.postCount]=i,this.onerrorDict[this.postCount]=r,t.__name=this.name,t.__postId=this.postCount,t.__debug=De,De&&Me.time(`Worker.postMessage ${this.name} #${this.postCount}`);try{this.worker.postMessage(t,e)}catch(e){Me.error(\"worker.post:\",e),this.worker.postMessage(t)}return this.pending+=1,this.postCount+=1,this}terminate(){this.worker?(this.worker.terminate(),window.URL.revokeObjectURL(this.blobUrl),Ee.activeWorkerCount-=1):Me.log(\"no worker to terminate\")}}class Gr{constructor(t,e=2){this.pool=[],this.count=0,this.maxCount=Math.min(8,e),this.name=t}post(t={},e,i,r){const s=this.getNextWorker();return s?s.post(t,e,i,r):console.error(\"unable to get worker from pool\"),this}terminate(){this.pool.forEach((function(t){t.terminate()}))}getNextWorker(){let t,e=1/0;for(let i=0;i=this.count){t=new Vr(this.name),this.pool.push(t),this.count+=1;break}const r=this.pool[i];if(0===r.pending){t=r;break}r.pendings&&(s=c),l>n&&(n=l),h>o&&(o=h)}return[Yr([e,i,r]),Yr([s,n,o])]}function Wr(t,e){for(let i=0,r=e.length;i0){const o=1/Math.sqrt(n);t[e]=i*o,t[e+1]=r*o,t[e+2]=s*o}}}function Yr(t){return new Float32Array(t||3)}function Kr(t,e,i){const r=e[0],s=e[1],n=e[2],o=i[0],a=i[1],c=i[2];t[0]=s*c-n*a,t[1]=n*o-r*c,t[2]=r*a-s*o}function Zr(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function Qr(t,e,i){t[0]=e[0]-i[0],t[1]=e[1]-i[1],t[2]=e[2]-i[2]}function Jr(t,e,i){t[0]=e[0]+i[0],t[1]=e[1]+i[1],t[2]=e[2]+i[2]}function ts(t,e,i=0){t[0]=e[i],t[1]=e[i+1],t[2]=e[i+2]}function es(t,e,i=0){e[i]=t[0],e[i+1]=t[1],e[i+2]=t[2]}function is(t){return t[0]*t[0]+t[1]*t[1]+t[2]*t[2]}function rs(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2])}function ss(t,e,i){ns(t,e,1/i)}function ns(t,e,i){t[0]=e[0]*i,t[1]=e[1]*i,t[2]=e[2]*i}function os(t,e){const i=is(e);0==i?(t[0]=e[0],t[1]=e[1],t[2]=e[2]):ns(t,e,1/Math.sqrt(i))}function as(t,e,i){t[0]=e[0]-i,t[1]=e[1]-i,t[2]=e[2]-i}function cs(t,e,i){t[0]=e[0]+i,t[1]=e[1]+i,t[2]=e[2]+i}function ls(t,e){t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t[2]=Math.floor(e[2])}function hs(t,e){t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t[2]=Math.ceil(e[2])}function ds(t,e){t[0]=-e[0],t[1]=-e[1],t[2]=-e[2]}function us(t,e){const i=t[0],r=t[1],s=t[2],n=e[0],o=e[1],a=e[2],c=r*a-s*o,l=s*n-i*a,h=i*o-r*n,d=Math.sqrt(c*c+l*l+h*h),u=i*n+r*o+s*a;return Math.atan2(d,u)}function ms(t,i=9){const r=Math.floor(i/2),s=t.position1.length/3,n=3*(r*s),o=1/i,a=_i(t.position1,t.position2),c=new Float32Array(n),l=new Float32Array(n),h=new e;for(let e=0;e0){const e=3*p;n[e]=t.position2[3*d-3],n[e+1]=t.position2[3*d-2],n[e+1]=t.position2[3*d-1]}const y=new Float32Array(s),b=new Float32Array(n),x=Ai(y,b),v=new Float32Array(o),w={position:x,position1:y,position2:b,color:v,color2:v};return a&&(w.radius=new Float32Array(a)),c&&t.picking&&(t.picking.array=new Float32Array(c),w.picking=t.picking),l&&(w.primitiveId=new Float32Array(l)),w}Gr.prototype.constructor=Gr,Hr.__deps=[Yr],ss.__deps=[ns],os.__deps=[ns,is];const gs=new e;class ys{static get Picker(){return He.get(this.type)}static get Buffer(){return je.get(this.type)}static getShapeKey(t){return this.type+t[0].toUpperCase()+t.substr(1)}static expandBoundingBox(t,e){}static valueToShape(t,e,i){const r=t._primitiveData[this.getShapeKey(e)];switch(this.fields[e]){case\"v3\":case\"c\":n=r,void 0!==(s=i).toArray?s=s.toArray():void 0!==s.x?s=[s.x,s.y,s.z]:void 0!==s.r&&(s=[s.r,s.g,s.b]),n.push.apply(n,s);break;default:r.push(i)}var s,n}static objectToShape(t,e){Object.keys(this.fields).forEach((i=>{this.valueToShape(t,i,e[i])})),this.valueToShape(t,\"name\",e.name),this.expandBoundingBox(t.boundingBox,e)}static valueFromShape(t,i,r){const n=t._primitiveData[this.getShapeKey(r)];switch(this.fields[r]){case\"v3\":return(new e).fromArray(n,3*i);case\"c\":return(new s).fromArray(n,3*i);default:return n[i]}}static objectFromShape(t,e){let i=this.valueFromShape(t,e,\"name\");void 0===i&&(i=`${this.type}: ${e} (${t.name})`);const r={shape:t,name:i};return Object.keys(this.fields).forEach((i=>{r[i]=this.valueFromShape(t,e,i)})),r}static arrayFromShape(t,e){const i=t._primitiveData[this.getShapeKey(e)];return\"s\"===this.fields[e]?i:new Float32Array(i)}static dataFromShape(t){const e={};return this.Picker&&(e.picking=new this.Picker(t)),Object.keys(this.fields).forEach((i=>{e[i]=this.arrayFromShape(t,i)})),e}static bufferFromShape(t,e){return new this.Buffer(this.dataFromShape(t),e)}}ys.type=\"\",ys.fields={};class bs extends ys{static positionFromShape(t,e){return this.valueFromShape(t,e,\"position\")}static expandBoundingBox(t,e){t.expandByPoint(gs.fromArray(e.position))}}bs.type=\"sphere\",bs.fields={position:\"v3\",color:\"c\",radius:\"f\"};class xs extends ys{static positionFromShape(t,e){return this.valueFromShape(t,e,\"position\")}static expandBoundingBox(t,e){t.expandByPoint(gs.fromArray(e.position))}}xs.type=\"box\",xs.fields={position:\"v3\",color:\"c\",size:\"f\",heightAxis:\"v3\",depthAxis:\"v3\"};class vs extends xs{}vs.type=\"octahedron\";class ws extends xs{}ws.type=\"tetrahedron\";class As extends ys{static positionFromShape(t,e){const i=this.valueFromShape(t,e,\"position1\"),r=this.valueFromShape(t,e,\"position2\");return i.add(r).multiplyScalar(.5)}static expandBoundingBox(t,e){t.expandByPoint(gs.fromArray(e.position1)),t.expandByPoint(gs.fromArray(e.position2))}static bufferFromShape(t,e={}){let i=this.dataFromShape(t);return\"cylinder\"===this.type&&e.dashedCylinder&&(i=ps(i)),new this.Buffer(i,e)}}As.type=\"cylinder\",As.fields={position1:\"v3\",position2:\"v3\",color:\"c\",radius:\"f\"};class _s extends As{}_s.type=\"arrow\";class Ss extends As{}Ss.type=\"cone\";class Cs extends bs{}Cs.type=\"ellipsoid\",Cs.fields={position:\"v3\",color:\"c\",radius:\"f\",majorAxis:\"v3\",minorAxis:\"v3\"};class Ps extends Cs{}Ps.type=\"torus\";class Is extends ys{static positionFromShape(t,e){return this.valueFromShape(t,e,\"position\")}static expandBoundingBox(t,e){t.expandByPoint(gs.fromArray(e.position))}}Is.type=\"text\",Is.fields={position:\"v3\",color:\"c\",size:\"f\",text:\"s\"};class ks extends ys{static positionFromShape(t,e){return this.valueFromShape(t,e,\"position\")}static expandBoundingBox(t,e){t.expandByPoint(gs.fromArray(e.position))}}ks.type=\"point\",ks.fields={position:\"v3\",color:\"c\"};class Ms extends ys{static positionFromShape(t,e){const i=this.valueFromShape(t,e,\"position1\"),r=this.valueFromShape(t,e,\"position2\");return i.add(r).multiplyScalar(.5)}static expandBoundingBox(t,e){t.expandByPoint(gs.fromArray(e.position1)),t.expandByPoint(gs.fromArray(e.position2))}}Ms.type=\"wideline\",Ms.fields={position1:\"v3\",position2:\"v3\",color:\"c\"};class Ts{constructor(t,e){this.exp=3;const i=e||function(t){const{x:e,y:i,z:r}=t,s=new a,n=e.length,{min:o,max:c}=s;for(let t=0;t>this.exp),this.boundY=1+(i.max.y-this.minY>>this.exp),this.boundZ=1+(i.max.z-this.minZ>>this.exp);const r=this.boundX*this.boundY*this.boundZ,s=void 0!==t.count?t.count:t.x.length,n=t.x,o=t.y,c=t.z;let l=0;const h=new Uint32Array(r),d=new Int32Array(s);for(let t=0;t>this.exp,i=o[t]-this.minY>>this.exp,r=c[t]-this.minZ>>this.exp,s=(e*this.boundY+i)*this.boundZ+r;1===(h[s]+=1)&&(l+=1),d[t]=s}const u=new Uint16Array(l);for(let t=0,e=0;t0&&(h[t]=e+1,u[e]=i,e+=1)}const m=new Uint32Array(l);for(let t=1;t0){const i=e-1;f[m[i]+p[i]]=t,p[i]+=1}}this.grid=h,this.bucketCount=u,this.bucketOffset=m,this.bucketArray=f,this.xArray=n,this.yArray=o,this.zArray=c}within(t,e,i,r){const s=[];return this.eachWithin(t,e,i,r,(t=>s.push(t))),s}eachWithin(t,e,i,r,s){const n=r*r,o=Math.max(0,t-r-this.minX>>this.exp),a=Math.max(0,e-r-this.minY>>this.exp),c=Math.max(0,i-r-this.minZ>>this.exp),l=Math.min(this.boundX,1+(t+r-this.minX>>this.exp)),h=Math.min(this.boundY,1+(e+r-this.minY>>this.exp)),d=Math.min(this.boundZ,1+(i+r-this.minZ>>this.exp));for(let r=o;r0){const r=l-1,o=this.bucketOffset[r],a=o+this.bucketCount[r];for(let r=o;rr?s.set(this[e].subarray(0,r)):s.set(this[e]),this[e]=s}}growIfFull(){if(this.count>=this.length){const t=Math.round(1.5*this.length);this.resize(Math.max(256,t))}}copyFrom(t,e,i,r){for(let s=0,n=this._fields.length;s0;)h-=1;l<=h&&(l===c?c=h:h===c&&(c=l),(o=l)!==(a=h)&&(i.copyFrom(e,0,o,1),e.copyWithin(o,a,1),e.copyFrom(i,a,0,1)),l+=1,h-=1)}while(l<=h);r(s,h),r(l,n)}var o,a}(0,this.count-1),Me.timeEnd(\"Store.sort\")}clear(){this.count=0}dispose(){for(let t=0,e=this._fields.length;t>>1&1431655765))+(t>>>2&858993459))+(t>>>4)&252645135)>>>24}class Os{constructor(t,e){this.length=t,this._words=new Uint32Array(t+32>>>5),!0===e&&this.setAll()}get(t){return 0!=(this._words[t>>>5]&1<>>5]|=1<>>5]&=~(1<>>5]^=1<>>5,o=e>>>5;for(let t=n+1;t>>5]|=1<>>5]|=1<>>5]|=1<>>5]&=~(1<>>5]&=~(1<>>5]&=~(1<>>5]|=1<>>5]&=~(1<>>i,this}_isRangeValue(t,e,i){if(e>>5,o=e>>>5;for(let t=n+1;t>>5]&1<>>5]&1<>>5]&1<>>5]&1<>>5]&1<0){const{types:r,groups:s,centers:n,atomSets:o}=t;r.push(e.type),s.push(e.group),n.x.push(e.x/i),n.y.push(e.y/i),n.z.push(e.z/i),o.push(e.atomSet)}}const Ns=0,zs=[\"D-BETA-PEPTIDE, C-GAMMA LINKING\",\"D-GAMMA-PEPTIDE, C-DELTA LINKING\",\"D-PEPTIDE COOH CARBOXY TERMINUS\",\"D-PEPTIDE NH3 AMINO TERMINUS\",\"D-PEPTIDE LINKING\",\"L-BETA-PEPTIDE, C-GAMMA LINKING\",\"L-GAMMA-PEPTIDE, C-DELTA LINKING\",\"L-PEPTIDE COOH CARBOXY TERMINUS\",\"L-PEPTIDE NH3 AMINO TERMINUS\",\"L-PEPTIDE LINKING\",\"PEPTIDE LINKING\",\"PEPTIDE-LIKE\"],Vs=[\"RNA OH 3 PRIME TERMINUS\",\"RNA OH 5 PRIME TERMINUS\",\"RNA LINKING\"],Gs=[\"DNA OH 3 PRIME TERMINUS\",\"DNA OH 5 PRIME TERMINUS\",\"DNA LINKING\",\"L-DNA LINKING\",\"L-RNA LINKING\"],Us=[\"D-SACCHARIDE\",\"D-SACCHARIDE 1,4 AND 1,4 LINKING\",\"D-SACCHARIDE 1,4 AND 1,6 LINKING\",\"L-SACCHARIDE\",\"L-SACCHARIDE 1,4 AND 1,4 LINKING\",\"L-SACCHARIDE 1,4 AND 1,6 LINKING\",\"SACCHARIDE\"],js=[\"NON-POLYMER\"].concat([\"OTHER\"],Us),Hs=[\"h\",\"g\",\"i\"],Ws=[\"e\",\"b\"],qs=[\"s\",\"t\",\"l\",\"\"],Xs={H:1,D:1,T:1,HE:2,LI:3,BE:4,B:5,C:6,N:7,O:8,F:9,NE:10,NA:11,MG:12,AL:13,SI:14,P:15,S:16,CL:17,AR:18,K:19,CA:20,SC:21,TI:22,V:23,CR:24,MN:25,FE:26,CO:27,NI:28,CU:29,ZN:30,GA:31,GE:32,AS:33,SE:34,BR:35,KR:36,RB:37,SR:38,Y:39,ZR:40,NB:41,MO:42,TC:43,RU:44,RH:45,PD:46,AG:47,CD:48,IN:49,SN:50,SB:51,TE:52,I:53,XE:54,CS:55,BA:56,LA:57,CE:58,PR:59,ND:60,PM:61,SM:62,EU:63,GD:64,TB:65,DY:66,HO:67,ER:68,TM:69,YB:70,LU:71,HF:72,TA:73,W:74,RE:75,OS:76,IR:77,PT:78,AU:79,HG:80,TL:81,PB:82,BI:83,PO:84,AT:85,RN:86,FR:87,RA:88,AC:89,TH:90,PA:91,U:92,NP:93,PU:94,AM:95,CM:96,BK:97,CF:98,ES:99,FM:100,MD:101,NO:102,LR:103,RF:104,DB:105,SG:106,BH:107,HS:108,MT:109,DS:110,RG:111,CN:112,NH:113,FL:114,MC:115,LV:116,TS:117,OG:118},Ys={1:1.1,2:1.4,3:1.81,4:1.53,5:1.92,6:1.7,7:1.55,8:1.52,9:1.47,10:1.54,11:2.27,12:1.73,13:1.84,14:2.1,15:1.8,16:1.8,17:1.75,18:1.88,19:2.75,20:2.31,21:2.3,22:2.15,23:2.05,24:2.05,25:2.05,26:2.05,27:2,28:2,29:2,30:2.1,31:1.87,32:2.11,33:1.85,34:1.9,35:1.83,36:2.02,37:3.03,38:2.49,39:2.4,40:2.3,41:2.15,42:2.1,43:2.05,44:2.05,45:2,46:2.05,47:2.1,48:2.2,49:2.2,50:1.93,51:2.17,52:2.06,53:1.98,54:2.16,55:3.43,56:2.68,57:2.5,58:2.48,59:2.47,60:2.45,61:2.43,62:2.42,63:2.4,64:2.38,65:2.37,66:2.35,67:2.33,68:2.32,69:2.3,70:2.28,71:2.27,72:2.25,73:2.2,74:2.1,75:2.05,76:2,77:2,78:2.05,79:2.1,80:2.05,81:1.96,82:2.02,83:2.07,84:1.97,85:2.02,86:2.2,87:3.48,88:2.83,89:2,90:2.4,91:2,92:2.3,93:2,94:2,95:2,96:2,97:2,98:2,99:2,100:2,101:2,102:2,103:2,104:2,105:2,106:2,107:2,108:2,109:2,110:2,111:2,112:2,113:2,114:2,115:2,116:2,117:2,118:2},Ks={1:.31,2:.28,3:1.28,4:.96,5:.84,6:.76,7:.71,8:.66,9:.57,10:.58,11:1.66,12:1.41,13:1.21,14:1.11,15:1.07,16:1.05,17:1.02,18:1.06,19:2.03,20:1.76,21:1.7,22:1.6,23:1.53,24:1.39,25:1.39,26:1.32,27:1.26,28:1.24,29:1.32,30:1.22,31:1.22,32:1.2,33:1.19,34:1.2,35:1.2,36:1.16,37:2.2,38:1.95,39:1.9,40:1.75,41:1.64,42:1.54,43:1.47,44:1.46,45:1.42,46:1.39,47:1.45,48:1.44,49:1.42,50:1.39,51:1.39,52:1.38,53:1.39,54:1.4,55:2.44,56:2.15,57:2.07,58:2.04,59:2.03,60:2.01,61:1.99,62:1.98,63:1.98,64:1.96,65:1.94,66:1.92,67:1.92,68:1.89,69:1.9,70:1.87,71:1.87,72:1.75,73:1.7,74:1.62,75:1.51,76:1.44,77:1.41,78:1.36,79:1.36,80:1.32,81:1.45,82:1.46,83:1.48,84:1.4,85:1.5,86:1.5,87:2.6,88:2.21,89:2.15,90:2.06,91:2,92:1.96,93:1.9,94:1.87,95:1.8,96:1.69,97:1.6,98:1.6,99:1.6,100:1.6,101:1.6,102:1.6,103:1.6,104:1.6,105:1.6,106:1.6,107:1.6,108:1.6,109:1.6,110:1.6,111:1.6,112:1.6,113:1.6,114:1.6,115:1.6,116:1.6,117:1.6,118:1.6},Zs={1:[1],2:[0],3:[1],4:[2],5:[3],6:[4],7:[3],8:[2],9:[1],10:[0],11:[1],12:[2],13:[6],14:[6],15:[3,5,7],16:[2,4,6],17:[1],18:[0],19:[1],20:[2],31:[3],32:[4],33:[3,5],34:[2,4,6],35:[1],36:[0],37:[1],38:[2],49:[3],50:[4],51:[3,5],52:[2],53:[1,2,5],54:[0,2],55:[1],56:[2],81:[3],82:[4],83:[3],84:[2],85:[1],86:[0],87:[1],88:[2]},Qs={1:1,2:2,3:1,4:2,5:3,6:4,7:5,8:6,9:7,10:8,11:1,12:2,13:3,14:4,15:5,16:6,17:7,18:8,19:1,20:2,21:3,22:4,23:5,24:6,25:7,26:8,27:9,28:10,29:11,30:2,31:3,32:4,33:5,34:6,35:7,36:8,37:1,38:2,39:3,40:4,41:5,42:6,43:7,44:8,45:9,46:10,47:11,48:2,49:3,50:4,51:5,52:6,53:7,54:8,55:1,56:2,57:3,58:4,59:3,60:4,61:5,62:6,63:7,64:8,65:9,66:10,67:11,68:12,69:13,70:14,71:15,72:4,73:5,74:6,75:7,76:8,77:9,78:10,79:11,80:2,81:3,82:4,83:5,84:6,85:7,86:8,87:1,88:2,89:3,90:4,91:3,92:4,93:5,94:6,95:7,96:8,97:9,98:10,99:11,100:12,101:13,102:14,103:15,104:2,105:2,106:2,107:2,108:2,109:2,110:2,111:2,112:2,113:3,114:4,115:5,116:6,117:7,118:8},Js={ALA:[.17,.5,.33],ARG:[.81,1.81,1],ASN:[.42,.85,.43],ASP:[1.23,3.64,2.41],ASH:[-.07,.43,.5],CYS:[-.24,-.02,.22],GLN:[.58,.77,.19],GLU:[2.02,3.63,1.61],GLH:[-.01,.11,.12],GLY:[.01,1.15,1.14],HIS:[.17,.11,-.06],ILE:[-.31,-1.12,-.81],LEU:[-.56,-1.25,-.69],LYS:[.99,2.8,1.81],MET:[-.23,-.67,-.44],PHE:[-1.13,-1.71,-.58],PRO:[.45,.14,-.31],SER:[.13,.46,.33],THR:[.14,.25,.11],TRP:[-1.85,-2.09,-.24],TYR:[-.94,-.71,.23],VAL:[.07,-.46,-.53]},tn=[0,0,0],en={HIS:\"H\",ARG:\"R\",LYS:\"K\",ILE:\"I\",PHE:\"F\",LEU:\"L\",TRP:\"W\",ALA:\"A\",MET:\"M\",PRO:\"P\",CYS:\"C\",ASN:\"N\",VAL:\"V\",GLY:\"G\",SER:\"S\",GLN:\"Q\",TYR:\"Y\",ASP:\"D\",GLU:\"E\",THR:\"T\",SEC:\"U\",PYL:\"O\"},rn=Object.keys(en),sn=[\"A\",\"C\",\"T\",\"G\",\"U\",\"I\"],nn=[\"DA\",\"DC\",\"DT\",\"DG\",\"DU\",\"DI\"],on=[\"A\",\"G\",\"I\",\"DA\",\"DG\",\"DI\"],an=sn.concat(nn),cn=[\"SOL\",\"WAT\",\"HOH\",\"H2O\",\"W\",\"DOD\",\"D3O\",\"TIP3\",\"TIP4\",\"SPC\"],ln=[\"118\",\"119\",\"1AL\",\"1CU\",\"2FK\",\"2HP\",\"2OF\",\"3CO\",\"3MT\",\"3NI\",\"3OF\",\"3P8\",\"4MO\",\"4PU\",\"543\",\"6MO\",\"ACT\",\"AG\",\"AL\",\"ALF\",\"AM\",\"ATH\",\"AU\",\"AU3\",\"AUC\",\"AZI\",\"BA\",\"BCT\",\"BEF\",\"BF4\",\"BO4\",\"BR\",\"BS3\",\"BSY\",\"CA\",\"CAC\",\"CD\",\"CD1\",\"CD3\",\"CD5\",\"CE\",\"CHT\",\"CL\",\"CO\",\"CO3\",\"CO5\",\"CON\",\"CR\",\"CS\",\"CSB\",\"CU\",\"CU1\",\"CU3\",\"CUA\",\"CUZ\",\"CYN\",\"DME\",\"DMI\",\"DSC\",\"DTI\",\"DY\",\"E4N\",\"EDR\",\"EMC\",\"ER3\",\"EU\",\"EU3\",\"F\",\"FE\",\"FE2\",\"FPO\",\"GA\",\"GD3\",\"GEP\",\"HAI\",\"HG\",\"HGC\",\"IN\",\"IOD\",\"IR\",\"IR3\",\"IRI\",\"IUM\",\"K\",\"KO4\",\"LA\",\"LCO\",\"LCP\",\"LI\",\"LU\",\"MAC\",\"MG\",\"MH2\",\"MH3\",\"MLI\",\"MLT\",\"MMC\",\"MN\",\"MN3\",\"MN5\",\"MN6\",\"MO1\",\"MO2\",\"MO3\",\"MO4\",\"MO5\",\"MO6\",\"MOO\",\"MOS\",\"MOW\",\"MW1\",\"MW2\",\"MW3\",\"NA\",\"NA2\",\"NA5\",\"NA6\",\"NAO\",\"NAW\",\"NCO\",\"NET\",\"NH4\",\"NI\",\"NI1\",\"NI2\",\"NI3\",\"NO2\",\"NO3\",\"NRU\",\"O4M\",\"OAA\",\"OC1\",\"OC2\",\"OC3\",\"OC4\",\"OC5\",\"OC6\",\"OC7\",\"OC8\",\"OCL\",\"OCM\",\"OCN\",\"OCO\",\"OF1\",\"OF2\",\"OF3\",\"OH\",\"OS\",\"OS4\",\"OXL\",\"PB\",\"PBM\",\"PD\",\"PDV\",\"PER\",\"PI\",\"PO3\",\"PO4\",\"PR\",\"PT\",\"PT4\",\"PTN\",\"RB\",\"RH3\",\"RHD\",\"RU\",\"SB\",\"SCN\",\"SE4\",\"SEK\",\"SM\",\"SMO\",\"SO3\",\"SO4\",\"SR\",\"T1A\",\"TB\",\"TBA\",\"TCN\",\"TEA\",\"TH\",\"THE\",\"TL\",\"TMA\",\"TRA\",\"UNX\",\"V\",\"VN3\",\"VO4\",\"W\",\"WO5\",\"Y1\",\"YB\",\"YB2\",\"YH\",\"YT3\",\"ZCM\",\"ZN\",\"ZN2\",\"ZN3\",\"ZNO\",\"ZO3\",\"OHX\"],hn=[\"045\",\"0AT\",\"0BD\",\"0MK\",\"0NZ\",\"0TS\",\"0V4\",\"0XY\",\"0YT\",\"10M\",\"147\",\"149\",\"14T\",\"15L\",\"16G\",\"18T\",\"18Y\",\"1AR\",\"1BW\",\"1GL\",\"1GN\",\"1JB\",\"1LL\",\"1NA\",\"1S3\",\"26M\",\"26Q\",\"26R\",\"26V\",\"26W\",\"26Y\",\"27C\",\"289\",\"291\",\"293\",\"2DG\",\"2F8\",\"2FG\",\"2FL\",\"2FP\",\"2GL\",\"2M4\",\"2M5\",\"32O\",\"34V\",\"3CM\",\"3DO\",\"3DY\",\"3FM\",\"3LR\",\"3MF\",\"3MG\",\"3SA\",\"3ZW\",\"46D\",\"46M\",\"46Z\",\"48Z\",\"4CQ\",\"4GC\",\"4NN\",\"50A\",\"5DI\",\"5GF\",\"5MM\",\"5RP\",\"5SA\",\"5SP\",\"64K\",\"6PG\",\"6SA\",\"7JZ\",\"7SA\",\"A1Q\",\"A2G\",\"AAB\",\"AAL\",\"AAO\",\"ABC\",\"ABD\",\"ABE\",\"ABF\",\"ABL\",\"ACG\",\"ACI\",\"ACR\",\"ACX\",\"ADA\",\"ADG\",\"ADR\",\"AF1\",\"AFD\",\"AFL\",\"AFO\",\"AFP\",\"AFR\",\"AGC\",\"AGH\",\"AGL\",\"AHR\",\"AIG\",\"ALL\",\"ALX\",\"AMU\",\"AOG\",\"AOS\",\"ARA\",\"ARB\",\"ARE\",\"ARI\",\"ASG\",\"ASO\",\"AXP\",\"AXR\",\"B0D\",\"B16\",\"B2G\",\"B4G\",\"B6D\",\"B8D\",\"B9D\",\"BBK\",\"BCD\",\"BDG\",\"BDP\",\"BDR\",\"BEM\",\"BFP\",\"BGC\",\"BGL\",\"BGP\",\"BGS\",\"BHG\",\"BMA\",\"BMX\",\"BNG\",\"BNX\",\"BOG\",\"BRI\",\"BXF\",\"BXP\",\"BXX\",\"BXY\",\"C3X\",\"C4X\",\"C5X\",\"CAP\",\"CBI\",\"CBK\",\"CBS\",\"CDR\",\"CEG\",\"CGF\",\"CHO\",\"CR1\",\"CR6\",\"CRA\",\"CT3\",\"CTO\",\"CTR\",\"CTT\",\"D6G\",\"DAF\",\"DAG\",\"DDA\",\"DDB\",\"DDL\",\"DEL\",\"DFR\",\"DFX\",\"DG0\",\"DGC\",\"DGD\",\"DGM\",\"DGS\",\"DIG\",\"DLF\",\"DLG\",\"DMU\",\"DNO\",\"DOM\",\"DP5\",\"DQQ\",\"DQR\",\"DR2\",\"DR3\",\"DR4\",\"DRI\",\"DSR\",\"DT6\",\"DVC\",\"E4P\",\"E5G\",\"EAG\",\"EBG\",\"EBQ\",\"EGA\",\"EJT\",\"EPG\",\"ERE\",\"ERI\",\"F1P\",\"F1X\",\"F6P\",\"FBP\",\"FCA\",\"FCB\",\"FCT\",\"FDP\",\"FDQ\",\"FFC\",\"FIX\",\"FMO\",\"FRU\",\"FSI\",\"FU4\",\"FUB\",\"FUC\",\"FUD\",\"FUL\",\"FXP\",\"G16\",\"G1P\",\"G2F\",\"G3I\",\"G4D\",\"G4S\",\"G6D\",\"G6P\",\"G6S\",\"GAC\",\"GAD\",\"GAL\",\"GC1\",\"GC4\",\"GCD\",\"GCN\",\"GCO\",\"GCS\",\"GCT\",\"GCU\",\"GCV\",\"GCW\",\"GCX\",\"GE1\",\"GFG\",\"GFP\",\"GIV\",\"GL0\",\"GL2\",\"GL5\",\"GL6\",\"GL7\",\"GL9\",\"GLA\",\"GLB\",\"GLC\",\"GLD\",\"GLF\",\"GLG\",\"GLO\",\"GLP\",\"GLS\",\"GLT\",\"GLW\",\"GMH\",\"GN1\",\"GNX\",\"GP1\",\"GP4\",\"GPH\",\"GPM\",\"GQ1\",\"GQ2\",\"GQ4\",\"GS1\",\"GS4\",\"GSA\",\"GSD\",\"GTE\",\"GTH\",\"GTK\",\"GTR\",\"GTZ\",\"GU0\",\"GU1\",\"GU2\",\"GU3\",\"GU4\",\"GU5\",\"GU6\",\"GU8\",\"GU9\",\"GUF\",\"GUP\",\"GUZ\",\"GYP\",\"GYV\",\"H2P\",\"HDL\",\"HMS\",\"HS2\",\"HSD\",\"HSG\",\"HSH\",\"HSJ\",\"HSQ\",\"HSR\",\"HSU\",\"HSX\",\"HSY\",\"HSZ\",\"IAB\",\"IDG\",\"IDR\",\"IDS\",\"IDT\",\"IDU\",\"IDX\",\"IDY\",\"IMK\",\"IN1\",\"IPT\",\"ISL\",\"KBG\",\"KD2\",\"KDA\",\"KDM\",\"KDO\",\"KFN\",\"KO1\",\"KO2\",\"KTU\",\"L6S\",\"LAG\",\"LAI\",\"LAK\",\"LAO\",\"LAT\",\"LB2\",\"LBT\",\"LCN\",\"LDY\",\"LGC\",\"LGU\",\"LM2\",\"LMT\",\"LMU\",\"LOG\",\"LOX\",\"LPK\",\"LSM\",\"LTM\",\"LVZ\",\"LXB\",\"LXZ\",\"M1F\",\"M3M\",\"M6P\",\"M8C\",\"MA1\",\"MA2\",\"MA3\",\"MAB\",\"MAG\",\"MAL\",\"MAN\",\"MAT\",\"MAV\",\"MAW\",\"MBG\",\"MCU\",\"MDA\",\"MDM\",\"MDP\",\"MFA\",\"MFB\",\"MFU\",\"MG5\",\"MGA\",\"MGL\",\"MLB\",\"MMA\",\"MMN\",\"MN0\",\"MRP\",\"MTT\",\"MUG\",\"MVP\",\"MXY\",\"N1L\",\"N9S\",\"NAA\",\"NAG\",\"NBG\",\"NDG\",\"NED\",\"NG1\",\"NG6\",\"NGA\",\"NGB\",\"NGC\",\"NGE\",\"NGF\",\"NGL\",\"NGS\",\"NGY\",\"NHF\",\"NM6\",\"NM9\",\"NTF\",\"NTO\",\"NTP\",\"NXD\",\"NYT\",\"OPG\",\"OPM\",\"ORP\",\"OX2\",\"P3M\",\"P53\",\"P6P\",\"PA5\",\"PNA\",\"PNG\",\"PNW\",\"PRP\",\"PSJ\",\"PSV\",\"PTQ\",\"QDK\",\"QPS\",\"QV4\",\"R1P\",\"R1X\",\"R2B\",\"R5P\",\"RAA\",\"RAE\",\"RAF\",\"RAM\",\"RAO\",\"RAT\",\"RB5\",\"RBL\",\"RCD\",\"RDP\",\"REL\",\"RER\",\"RF5\",\"RG1\",\"RGG\",\"RHA\",\"RIB\",\"RIP\",\"RNS\",\"RNT\",\"ROB\",\"ROR\",\"RPA\",\"RST\",\"RUB\",\"RUU\",\"RZM\",\"S6P\",\"S7P\",\"SA0\",\"SCR\",\"SDD\",\"SF6\",\"SF9\",\"SG4\",\"SG5\",\"SG6\",\"SG7\",\"SGA\",\"SGC\",\"SGD\",\"SGN\",\"SGS\",\"SHB\",\"SHG\",\"SI3\",\"SIO\",\"SOE\",\"SOL\",\"SSG\",\"SUC\",\"SUP\",\"SUS\",\"T6P\",\"T6T\",\"TAG\",\"TCB\",\"TDG\",\"TGK\",\"TGY\",\"TH1\",\"TIA\",\"TM5\",\"TM6\",\"TM9\",\"TMR\",\"TMX\",\"TOA\",\"TOC\",\"TRE\",\"TYV\",\"UCD\",\"UDC\",\"VG1\",\"X0X\",\"X1X\",\"X2F\",\"X4S\",\"X5S\",\"X6X\",\"XBP\",\"XDN\",\"XDP\",\"XIF\",\"XIM\",\"XLF\",\"XLS\",\"XMM\",\"XUL\",\"XXR\",\"XYP\",\"XYS\",\"YO5\",\"Z3Q\",\"Z6J\",\"Z9M\",\"ZDC\",\"ZDM\"],dn=[\"CA\",\"C\",\"N\",\"O\",\"O1\",\"O2\",\"OC1\",\"OC2\",\"OX1\",\"OXT\",\"OT1\",\"OT2\",\"H\",\"H1\",\"H2\",\"H3\",\"HA\",\"HN\",\"BB\"],un=[\"P\",\"OP1\",\"OP2\",\"HOP2\",\"HOP3\",\"O2'\",\"O3'\",\"O4'\",\"O5'\",\"C1'\",\"C2'\",\"C3'\",\"C4'\",\"C5'\",\"H1'\",\"H2'\",\"H2''\",\"HO2'\",\"H3'\",\"H4'\",\"H5'\",\"H5''\",\"HO3'\",\"HO5'\",\"O2*\",\"O3*\",\"O4*\",\"O5*\",\"C1*\",\"C2*\",\"C3*\",\"C4*\",\"C5*\"],mn={1:{trace:\"CA\",direction1:\"C\",direction2:[\"O\",\"OC1\",\"O1\",\"OX1\",\"OXT\",\"OT1\",\"OT2\"],backboneStart:\"N\",backboneEnd:\"C\"},2:{trace:[\"C4'\",\"C4*\"],direction1:[\"C1'\",\"C1*\"],direction2:[\"C3'\",\"C3*\"],backboneStart:\"P\",backboneEnd:[\"O3'\",\"O3*\"]},3:{trace:[\"C3'\",\"C3*\"],direction1:[\"C2'\",\"C2*\"],direction2:[\"O4'\",\"O4*\"],backboneStart:\"P\",backboneEnd:[\"O3'\",\"O3*\"]},4:{trace:[\"CA\",\"BB\"],backboneStart:[\"CA\",\"BB\"],backboneEnd:[\"CA\",\"BB\"]},5:{trace:[\"C4'\",\"C4*\",\"P\"],backboneStart:[\"C4'\",\"C4*\",\"P\"],backboneEnd:[\"C4'\",\"C4*\",\"P\"]},6:{trace:[\"C3'\",\"C3*\",\"C2'\",\"P\"],backboneStart:[\"C3'\",\"C3*\",\"C2'\",\"P\"],backboneEnd:[\"C3'\",\"C3*\",\"C2'\",\"P\"]}};mn[Ns]={};const pn={HD:\"H\",HS:\"H\",A:\"C\",NA:\"N\",NS:\"N\",OA:\"O\",OS:\"O\",SA:\"S\",G0:\"C\",G1:\"C\",G2:\"C\",G3:\"C\",CG0:\"C\",CG1:\"C\",CG2:\"C\",CG3:\"C\",W:\"O\"};function fn(t){switch(t){case 0:return 0;case 1:return 1;case 2:return 2;case 3:return 3;case 4:return 4;default:return 8}}const gn=new Map([[2,kt(180)],[3,kt(120)],[4,kt(109.4721)],[6,kt(90)]]);function yn(t,i){let r=[];const s=new e,n=new e;return s.subVectors(i,t),t.eachBondedAtom((e=>{1!==e.number&&(n.subVectors(e,t),r.push(s.angleTo(n)))})),r}function bn(t,i){const r=t.clone(),s=new e;s.subVectors(i,t);const n=[new e,new e];let o=0;if(t.eachBondedAtom((e=>{o>1||1!==e.number&&(r.index=e.index,n[o++].subVectors(e,t))})),1===o&&r.eachBondedAtom((e=>{o>1||1!==e.number&&e.index!==t.index&&n[o++].subVectors(e,t)})),2!==o)return;const a=n[0].cross(n[1]);return Math.abs(Math.PI/2-a.angleTo(s))}function xn(t,e){const i=t.structure,r=i.atomCount,s=new Int8Array(r),n=new Int8Array(r),o=new Int8Array(r),a=new Int8Array(r);return i.eachAtom((t=>{const i=t.index,[r,c,l,h]=function(t,e){const i=t.bondToElementCount(1);let r=t.formalCharge||0;const s=\"always\"===e.assignCharge||\"auto\"===e.assignCharge&&0===r,n=\"always\"===e.assignH||\"auto\"===e.assignH&&0===i,o=t.bondCount,a=function(t){let e=0;return t.eachBond((t=>e+=t.bondOrder)),e}(t),c=function(t){const e=t.structure.getBondProxy(),i=t.number,r=8===i||7===i;if(r&&4===t.bondCount)return!1;let s=!1;return t.eachBond((i=>{if(i.bondOrder>1)s=!0;else if(r){const r=i.getOtherAtom(t);r.eachBond((t=>{if(t.bondOrder>1){const e=r.number;if((15===e||16===e)&&8===t.getOtherAtom(r).number)return;s=!0}}),e)}})),s}(t),l=a-o>0;let h=0,d=8;switch(t.number){case 1:s&&(0===o?(r=1,d=0):1===o&&(r=0,d=1));break;case 6:s&&(r=0),n&&(h=Math.max(0,4-a-Math.abs(r))),d=fn(o+h+Math.max(0,-r));break;case 7:if(s)if(n)if(c&&a<4)r=o-i==1&&a-i==2?1:0;else{let e=!1;t.eachBondedAtom((t=>{(16===t.number||t.isMetal())&&(e=!0)})),r=e?0:1}else r=a-3;n&&(h=Math.max(0,3-a+r)),d=fn(c&&!l?o+h-r:o+h+1-r);break;case 8:s&&(n||(r=a-2),1===a&&t.eachBondedAtom((e=>{e.eachBond((i=>{const s=i.getOtherAtom(e);s.index!==t.index&&8===s.number&&2===i.bondOrder&&(r=-1)}))}))),n&&(h=Math.max(0,2-a+r)),d=fn(c&&!l?o+h-r+1:o+h-r+2);break;case 16:s&&(n||(r=a<=3&&!t.bondToElementCount(8)?a-2:0)),n&&a<2&&(h=Math.max(0,2-a+r)),a<=3&&(d=fn(o+h-r+2));break;case 9:case 17:case 35:case 53:case 85:s&&(r=a-1);break;case 3:case 11:case 19:case 37:case 55:case 87:s&&(r=1-a);break;case 4:case 12:case 20:case 38:case 56:case 88:s&&(r=2-a);break;default:console.warn(\"Requested charge, protonation for an unhandled element\",t.element)}return[r,h,h+i,d]}(t,e);s[i]=r,n[i]=c,o[i]=l,a[i]=h})),{charge:s,implicitH:n,totalH:o,idealGeometry:a}}function vn(t){if(t[\"@valenceModel\"])return t[\"@valenceModel\"];const e=xn(t,{assignCharge:\"auto\",assignH:\"auto\"});return t[\"@valenceModel\"]=e,e}function wn(t){return 15===t.number&&t.bondToElementCount(8)===t.bondCount}const An=[\"ARG\",\"HIS\",\"LYS\"],_n=[\"GLU\",\"ASP\"];function Sn(t,e){return 2===t&&1===e||1===t&&2===e}function Cn(t,e){return 3===t&&3===e}function Pn(t,e){return 3===t&&1===e||1===t&&3===e}function In(t){return\"HIS\"===t.resname&&7==t.number&&t.isRing()}function kn(t,e){return 5===t&&4===e||4===t&&5===e}function Mn(t,e){return 9===t&&5===e||5===t&&9===e}const Tn=[3,11,19,37,55,12,20,38,56,13,31,49,81,21,50,82,83,51,80];function Bn(t,e){return 12===t?11===e||12===e:13===t?10===e:void 0}const Dn=[17,35,53,85];const $n=[7,8,16],On=[6,7,15,16];const Rn=kt(180),En=kt(120);function Fn(t,e,i){return!Nn(t,e,i)&&(t.modelIndex!==e.modelIndex||t.altloc&&e.altloc&&t.altloc!==e.altloc)}const Ln={maxHydrophobicDist:4,maxHbondDist:3.5,maxHbondSulfurDist:4.1,maxHbondAccAngle:45,maxHbondDonAngle:45,maxHbondAccPlaneAngle:90,maxHbondDonPlaneAngle:30,maxPiStackingDist:5.5,maxPiStackingOffset:2,maxPiStackingAngle:30,maxCationPiDist:6,maxCationPiOffset:2,maxIonicDist:5,maxHalogenBondDist:4,maxHalogenBondAngle:30,maxMetalDist:3,refineSaltBridges:!0,masterModelIndex:-1,lineOfSightDistFactor:1};function Nn(t,e,i){return t.modelIndex===i&&e.modelIndex!==i||e.modelIndex===i&&t.modelIndex!==i}function zn(t,e,i){return!Nn(t,e,i)&&(t.modelIndex!==e.modelIndex||t.residueIndex===e.residueIndex||t.altloc&&e.altloc&&t.altloc!==e.altloc)}function Vn(t){const e={types:[],groups:[],centers:{x:[],y:[],z:[]},atomSets:[]};return De&&Me.time(\"calculateFeatures\"),function(t,e){const{charge:i}=vn(t.data),r={};t.eachResidue((t=>{if(An.includes(t.resname)){const i=Es(1);t.eachAtom((t=>{7===t.number&&t.isSidechain()&&Fs(i,t)})),Ls(e,i)}else rn.includes(t.resname)||t.isNucleic()||(t.eachAtom((t=>{let i=!1;const s=Es(1);!function(t){let e=0;return 6===t.number&&3===t.bondCount&&3===t.bondToElementCount(7)&&t.eachBondedAtom((t=>{t.bondCount-t.bondToElementCount(1)==1&&++e})),2===e}(t)?function(t){let e=0;return 6===t.number&&3===t.bondCount&&2===t.bondToElementCount(7)&&1===t.bondToElementCount(6)&&t.eachBondedAtom((t=>{t.bondCount-t.bondToElementCount(1)==1&&++e})),2===e}(t)&&(s.group=9,i=!0):(s.group=8,i=!0),i&&(t.eachBondedAtom((t=>{7===t.number&&(r[t.index]=!0,Fs(s,t))})),Ls(e,s))})),t.eachAtom((t=>{const s=Es(1);i[t.index]>0&&(r[t.index]||(Fs(s,t),Ls(e,s)))})))}))}(t,e),function(t,e){const{charge:i}=vn(t.data),r={};t.eachResidue((t=>{if(_n.includes(t.resname)){const i=Es(2);t.eachAtom((t=>{8===t.number&&t.isSidechain()&&Fs(i,t)})),Ls(e,i)}else if(an.includes(t.resname)){const i=Es(2);t.eachAtom((t=>{wn(t)&&(i.group=6,t.eachBondedAtom((t=>{8===t.number&&Fs(i,t)})),Ls(e,i))}))}else rn.includes(t.resname)||an.includes(t.resname)||(t.eachAtom((t=>{let i=!1;const s=Es(2);!function(t){return 16===t.number&&3===t.bondToElementCount(8)}(t)?wn(t)?(s.group=6,i=!0):function(t){return 16===t.number&&4===t.bondToElementCount(8)}(t)?(s.group=5,i=!0):function(t){let e=0;return 6===t.number&&2===t.bondToElementCount(8)&&1===t.bondToElementCount(6)&&t.eachBondedAtom((t=>{8===t.number&&t.bondCount-t.bondToElementCount(1)==1&&++e})),2===e}(t)&&(s.group=10,i=!0):(s.group=4,i=!0),i&&(t.eachBondedAtom((t=>{8===t.number&&(r[t.index]=!0,Fs(s,t))})),Ls(e,s))})),t.eachAtom((t=>{const s=Es(2);i[t.index]<0&&(r[t.index]||(Fs(s,t),Ls(e,s)))})))}))}(t,e),function(t,e){const i=t.getAtomProxy();t.eachResidue((t=>{const r=t.getAromaticRings();if(r){const s=t.atomOffset;r.forEach((t=>{const r=Es(3);t.forEach((t=>{i.index=t+s,Fs(r,i)})),Ls(e,r)}))}}))}(t,e),function(t,e){const{charge:i,implicitH:r,idealGeometry:s}=vn(t.data);t.eachAtom((t=>{const n=Es(5),o=t.number;if(8===o)Fs(n,t),Ls(e,n);else if(7===o){if(In(t))Fs(n,t),Ls(e,n);else if(i[t.index]<1){const i=t.bondCount+r[t.index],o=s[t.index];(4===o&&i<4||3===o&&i<3||2===o&&i<2)&&(Fs(n,t),Ls(e,n))}}else 16===o&&(\"CYS\"!==t.resname&&\"MET\"!==t.resname&&-1!==t.formalCharge||(Fs(n,t),Ls(e,n)))}))}(t,e),function(t,e){const{totalH:i}=vn(t.data);t.eachAtom((t=>{const r=Es(4),s=t.number;(In(t)||i[t.index]>0&&(7===s||8===s||16===s))&&(Fs(r,t),Ls(e,r))}))}(t,e),function(t,e){const{totalH:i}=vn(t.data);t.eachAtom((t=>{if(6===t.number&&i[t.index]>0&&(t.bondToElementCount(7)>0||t.bondToElementCount(8)>0||function(t){if(!t.isAromatic())return!1;const e=t.residueType.getRings();if(!e)return!1;let i=!1;return e.rings.forEach((e=>{i||e.some((e=>t.index-t.residueAtomOffset===e))&&(i=e.some((e=>{const i=t.residueType.atomTypeIdList[e],r=t.atomMap.get(i).number;return 7===r||8===r})))})),i}(t))){const i=Es(9);Fs(i,t),Ls(e,i)}}))}(t,e),function(t,e){t.eachAtom((t=>{let i=!1,r=!1;const s=rn.includes(t.resname),n=an.includes(t.resname);if(s||n?s?8===t.number?([\"ASP\",\"GLU\",\"SER\",\"THR\",\"TYR\",\"ASN\",\"GLN\"].includes(t.resname)&&t.isSidechain()||t.isBackbone())&&(i=!0,r=!0):16===t.number&&\"CYS\"===t.resname?(i=!0,r=!0):7===t.number&&\"HIS\"===t.resname&&t.isSidechain()&&(i=!0):n&&(8===t.number&&t.isBackbone()?(i=!0,r=!0):[\"N3\",\"N4\",\"N7\"].includes(t.atomname)?i=!0:[\"O2\",\"O4\",\"O6\"].includes(t.atomname)&&(i=!0,r=!0)):t.isHalogen()||8===t.number||16===t.number?(i=!0,r=!0):7===t.number&&(i=!0),i){const i=Es(11);Fs(i,t),Ls(e,i)}if(r){const i=Es(10);Fs(i,t),Ls(e,i)}}))}(t,e),function(t,e){t.eachAtom((t=>{if(t.isTransitionMetal()||30===t.number||48===t.number){const i=Es(12);Fs(i,t),Ls(e,i)}else if(Tn.includes(t.number)){const i=Es(13);Fs(i,t),Ls(e,i)}}))}(t,e),function(t,e){t.eachAtom((t=>{const i=Es(8);let r=!1;6===t.number?(r=!0,t.eachBondedAtom((t=>{const e=t.number;6!==e&&1!==e&&(r=!1)}))):9===t.number&&(r=!0),r&&(Fs(i,t),Ls(e,i))}))}(t,e),function(t,e){t.eachAtom((t=>{if($n.includes(t.number)){let i=!1;if(t.eachBondedAtom((t=>{On.includes(t.number)&&(i=!0)})),i){const i=Es(7);Fs(i,t),Ls(e,i)}}}))}(t,e),function(t,e){t.eachAtom((t=>{if(Dn.includes(t.number)&&1===t.bondToElementCount(6)){const i=Es(6);Fs(i,t),Ls(e,i)}}))}(t,e),De&&Me.timeEnd(\"calculateFeatures\"),e}function Gn(t,i=Ln){const r=function(t){const{types:e,centers:i}=t;return{features:t,spatialHash:new Ts(i),contactStore:new Ds,featureSet:new Os(e.length,!1)}}(Vn(t));De&&Me.time(\"calculateContacts\"),function(t,i,r={}){const s=st(r.maxIonicDist,Ln.maxIonicDist),n=st(r.maxPiStackingDist,Ln.maxPiStackingDist),o=st(r.maxPiStackingOffset,Ln.maxPiStackingOffset),a=st(r.maxPiStackingAngle,Ln.maxPiStackingAngle),c=st(r.maxCationPiDist,Ln.maxCationPiDist),l=st(r.maxCationPiOffset,Ln.maxCationPiOffset),h=st(r.masterModelIndex,Ln.masterModelIndex),d=Math.max(s+2,n,c),u=n*n,m=c*c,{features:p,spatialHash:f,contactStore:g,featureSet:y}=i,{types:b,centers:x,atomSets:v}=p,{x:w,y:A,z:_}=x,S=b.length,C=t.atomStore.x,P=t.atomStore.y,I=t.atomStore.z,k=t.getAtomProxy(),M=t.getAtomProxy(),T=function(t,e,i){const r=t.length,s=e.length;for(let n=0;n{if(e<=t)return;if(k.index=v[t][0],M.index=v[e][0],zn(k,M,h))return;const r=b[t],n=b[e];if(Sn(r,n))T(v[t],v[e],s)&&z(t,e,1);else if(Cn(r,n)){if(i<=u){L(v[t],E),L(v[e],F);const i=57.29578*E.angleTo(F);Math.min(N(t,e,F),N(e,t,E))<=o&&(i<=a||i>=180-a||i<=a+90&&i>=90-a)&&z(t,e,3)}}else if(Pn(r,n)&&i<=m){const[i,s]=3===r?[t,e]:[e,t];L(v[i],E),N(s,i,E)<=l&&z(i,s,2)}}))}(t,r,i),function(t,e,i={}){const r=st(i.maxHbondDist,Ln.maxHbondDist),s=st(i.maxHbondSulfurDist,Ln.maxHbondSulfurDist),n=kt(st(i.maxHbondAccAngle,Ln.maxHbondAccAngle)),o=kt(st(i.maxHbondDonAngle,Ln.maxHbondDonAngle)),a=kt(st(i.maxHbondAccPlaneAngle,Ln.maxHbondAccPlaneAngle)),c=kt(st(i.maxHbondDonPlaneAngle,Ln.maxHbondDonPlaneAngle)),l=st(i.masterModelIndex,Ln.masterModelIndex),h=Math.max(r,s),d=r*r,{features:u,spatialHash:m,contactStore:p,featureSet:f}=e,{types:g,centers:y,atomSets:b}=u,{x:x,y:v,z:w}=y,A=g.length,{idealGeometry:_}=vn(t.data),S=t.getAtomProxy(),C=t.getAtomProxy();for(let t=0;t{if(e<=t)return;const r=g[t],s=g[e],h=Mn(r,s);if(!h&&!kn(r,s))return;const[u,m]=5===s?[t,e]:[e,t];if(S.index=b[u][0],C.index=b[m][0],C.index===S.index)return;if(zn(S,C,l))return;if(16!==S.number&&16!==C.number&&i>d)return;if(S.connectedTo(C))return;const y=yn(S,C),x=gn.get(_[S.index])||kt(120);if(y.some((t=>Math.abs(x-t)>o)))return;if(3===_[S.index]){const t=bn(S,C);if(void 0!==t&&t>c)return}const v=yn(C,S),w=gn.get(_[C.index])||kt(120);if(v.some((t=>w-t>n)))return;if(3===_[C.index]){const t=bn(C,S);if(void 0!==t&&t>a)return}f.setBits(u,m);const A=h?8:function(t,e){return t.isWater()&&e.isWater()}(P=S,I=C)?9:function(t,e){return t.isBackbone()&&e.isBackbone()}(P,I)?10:4;var P,I;p.addContact(u,m,A)}))}(t,r,i),function(t,e,i={}){const r=st(i.maxMetalDist,Ln.maxMetalDist),s=st(i.masterModelIndex,Ln.masterModelIndex),{features:n,spatialHash:o,contactStore:a,featureSet:c}=e,{types:l,centers:h,atomSets:d}=n,{x:u,y:m,z:p}=h,f=l.length,g=t.getAtomProxy(),y=t.getAtomProxy();for(let t=0;t{if(e<=t)return;if(g.index=d[t][0],y.index=d[e][0],zn(g,y,s))return;const r=g.isMetal(),n=y.isMetal();if(!r&&!n)return;const[o,h]=r?[l[t],l[e]]:[l[e],l[t]];Bn(o,h)&&(c.setBits(t,e),a.addContact(t,e,7))}))}(t,r,i),function(t,e,i={}){const r=st(i.maxHydrophobicDist,Ln.maxHydrophobicDist),s=st(i.masterModelIndex,Ln.masterModelIndex),{features:n,spatialHash:o,contactStore:a,featureSet:c}=e,{types:l,centers:h,atomSets:d}=n,{x:u,y:m,z:p}=h,f=l.length,g=t.getAtomProxy(),y=t.getAtomProxy();for(let t=0;t{var r,n;e<=t||(g.index=d[t][0],y.index=d[e][0],zn(g,y,s)||9===g.number&&9===y.number||g.connectedTo(y)||(r=l[t],n=l[e],8===r&&8===n&&(c.setBits(t,e),a.addContact(t,e,6))))}))}(t,r,i),function(t,e,i={}){const r=st(i.maxHalogenBondDist,Ln.maxHalogenBondDist),s=kt(st(i.maxHalogenBondAngle,Ln.maxHalogenBondAngle)),n=st(i.masterModelIndex,Ln.masterModelIndex),{features:o,spatialHash:a,contactStore:c,featureSet:l}=e,{types:h,centers:d,atomSets:u}=o,{x:m,y:p,z:f}=d,g=h.length,y=t.getAtomProxy(),b=t.getAtomProxy();for(let t=0;t{if(e<=t)return;if(y.index=u[t][0],b.index=u[e][0],zn(y,b,n))return;if(r=h[t],o=h[e],!(7===r&&6===o||6===r&&7===o))return;var r,o;const[a,d]=6===h[t]?[y,b]:[b,y],m=yn(a,d);if(1!==m.length)return;if(Rn-m[0]>s)return;const p=yn(d,a);0!==p.length&&(p.some((t=>En-t>s))||(l.setBits(t,e),c.addContact(t,e,5)))}))}(t,r,i);const s=function(t){const{index1:e,index2:i,count:r}=t.contactStore,s=Rs({nodeArray1:e,nodeArray2:i,edgeCount:r,nodeCount:t.featureSet.length}),n=new Os(t.contactStore.count,!0);return Object.assign({adjacencyList:s,contactSet:n},t)}(r);return function(t,i,r={}){De&&Me.time(\"refineLineOfSight\");const s=st(r.lineOfSightDistFactor,Ln.lineOfSightDistFactor),n=st(r.masterModelIndex,Ln.masterModelIndex),o=t.spatialHash,{contactSet:a,contactStore:c,features:l}=i,{index1:h,index2:d}=c,{centers:u,atomSets:m}=l,{x:p,y:f,z:g}=u,y=t.getAtomProxy(),b=t.getAtomProxy(),x=t.getAtomProxy(),v=new e,w=new e,A=3*s,_=s*s;a.forEach((t=>{v.set(p[h[t]],f[h[t]],g[h[t]]),w.set(p[d[t]],f[d[t]],g[d[t]]);const e=(v.x+w.x)/2,i=(v.y+w.y)/2,r=(v.z+w.z)/2,s=m[h[t]],c=m[d[t]];y.index=s[0],b.index=c[0],o.eachWithin(e,i,r,A,((e,i)=>{x.index=e,1!==x.number&&x.vdw*x.vdw*_>i&&!Fn(y,x,n)&&!Fn(b,x,n)&&!s.includes(e)&&!c.includes(e)&&v.distanceToSquared(x)>1&&w.distanceToSquared(x)>1&&(a.clear(t),De&&Me.log(\"removing\",y.qualifiedName(),b.qualifiedName(),\"because\",x.qualifiedName()))}))})),De&&Me.timeEnd(\"refineLineOfSight\")}(t,s,i),function(t,e){const{contactSet:i,contactStore:r,features:s}=e,{type:n,index1:o,index2:a}=r,{atomSets:c}=s,l=t.getAtomProxy(),h=t.getAtomProxy(),d={},u=function(t,e,r){const[s,n]=d[r]||[1/0,-1];t{if(6!==n[t])return;l.index=c[o[t]][0],h.index=c[a[t]][0];const e=l.distanceTo(h);u(e,t,`${l.index}|${h.residueIndex}`),u(e,t,`${h.index}|${l.residueIndex}`)}))}(t,s),i.refineSaltBridges&&function(t,e){const{contactSet:i,contactStore:r,features:s}=e,{type:n,index1:o,index2:a}=r,{atomSets:c}=s,l={},h=function(t,e){l[t]||(l[t]=[]),l[t].push(e)};i.forEach((t=>{1===n[t]&&(c[o[t]].forEach((e=>h(e,t))),c[a[t]].forEach((e=>h(e,t))))})),i.forEach((t=>{if(!function(t){return 4===t||9===t||10===t}(n[t]))return;const e=l[c[o[t]][0]],r=l[c[a[t]][0]];if(!e||!r)return;const s=e.length;for(let n=0;n{3===n[t]&&(c[o[t]].forEach((e=>h(e,t))),c[a[t]].forEach((e=>h(e,t))))})),i.forEach((t=>{if(6!==n[t]&&2!==n[t])return;const e=l[c[o[t]][0]],r=l[c[a[t]][0]];if(!e||!r)return;const s=e.length;for(let n=0;n{1===n[t]&&(c[o[t]].forEach((e=>h(e,t))),c[a[t]].forEach((e=>h(e,t))))})),i.forEach((t=>{if(7!==n[t])return;const e=l[c[o[t]][0]],r=l[c[a[t]][0]];if(!e||!r)return;const s=e.length;for(let t=0;te.getAtomSet(new pe(t)))):e.getAtomSet(new pe(r.filterSele))),o.forEach((t=>{const e=f[t];if(!s.includes(e))return;if(w){const e=l[m[t]][0],i=l[p[t]][0];if(Array.isArray(w)){if(!(w[0].isSet(e)&&w[1].isSet(i)||w[1].isSet(e)&&w[0].isSet(i)))return}else if(!w.isSet(e)&&!w.isSet(i))return}const i=m[t],n=p[t];g.push(h[i],d[i],u[i]),y.push(h[n],d[n],u[n]),b.push(...function(t){switch(t){case 4:case 9:case 10:return Hn.setHex(2851770).toArray();case 6:return Hn.setHex(8421504).toArray();case 5:return Hn.setHex(4259775).toArray();case 1:return Hn.setHex(15779860).toArray();case 7:return Hn.setHex(9191577).toArray();case 2:return Hn.setHex(16744448).toArray();case 3:return Hn.setHex(9220966).toArray();case 8:return Hn.setHex(12967404).toArray();default:return Hn.setHex(13421772).toArray()}}(e)),x.push(r.radius),v.push(t)})),{position1:new Float32Array(g),position2:new Float32Array(y),color:new Float32Array(b),color2:new Float32Array(b),radius:new Float32Array(x),picking:new Qn(v,t,e)}}class qn{constructor(t){this.array=t}get type(){return\"\"}get data(){return{}}getIndex(t){return this.array?this.array[t]:t}getObject(t){return{}}_applyTransformations(t,e,i){return e&&t.applyMatrix4(e.matrix),i&&t.applyMatrix4(i.matrix),t}_getPosition(t){return new e}getPosition(t,e,i){return this._applyTransformations(this._getPosition(t),e,i)}}class Xn extends qn{constructor(t){super(),this.shape=t}get primitive(){}get data(){return this.shape}get type(){return this.primitive.type}getObject(t){return this.primitive.objectFromShape(this.shape,this.getIndex(t))}_getPosition(t){return this.primitive.positionFromShape(this.shape,this.getIndex(t))}}class Yn extends qn{constructor(t,e){super(t),this.structure=e}get type(){return\"atom\"}get data(){return this.structure}getObject(t){return this.structure.getAtomProxy(this.getIndex(t))}_getPosition(t){return(new e).copy(this.getObject(t))}}class Kn extends qn{constructor(t){super(),this.axes=t}get type(){return\"axes\"}get data(){return this.axes}getObject(){return{axes:this.axes}}_getPosition(){return this.axes.center.clone()}}class Zn extends qn{constructor(t,e,i){super(t),this.structure=e,this.bondStore=i||e.bondStore}get type(){return\"bond\"}get data(){return this.structure}getObject(t){const e=this.structure.getBondProxy(this.getIndex(t));return e.bondStore=this.bondStore,e}_getPosition(t){const i=this.getObject(t);return(new e).copy(i.atom1).add(i.atom2).multiplyScalar(.5)}}class Qn extends qn{constructor(t,e,i){super(t),this.contacts=e,this.structure=i}get type(){return\"contact\"}get data(){return this.contacts}getObject(t){const i=this.getIndex(t),{features:r,contactStore:s}=this.contacts,{centers:n,atomSets:o}=r,{x:a,y:c,z:l}=n,{index1:h,index2:d,type:u}=s,m=h[i],p=d[i];return{center1:new e(a[m],c[m],l[m]),center2:new e(a[p],c[p],l[p]),atom1:this.structure.getAtomProxy(o[m][0]),atom2:this.structure.getAtomProxy(o[p][0]),type:Un(u[i])}}_getPosition(t){const{center1:i,center2:r}=this.getObject(t);return(new e).addVectors(i,r).multiplyScalar(.5)}}class Jn extends qn{constructor(t,e,i){super(t),this.validation=e,this.structure=i}get type(){return\"clash\"}get data(){return this.validation}getObject(t){const e=this.validation,i=this.getIndex(t);return{validation:e,index:i,clash:e.clashArray[i]}}_getAtomProxyFromSele(t){const e=new pe(t),i=this.structure.getAtomIndices(e)[0];return this.structure.getAtomProxy(i)}_getPosition(t){const i=this.getObject(t).clash,r=this._getAtomProxyFromSele(i.sele1),s=this._getAtomProxyFromSele(i.sele2);return(new e).copy(r).add(s).multiplyScalar(.5)}}class to extends Zn{get type(){return\"distance\"}}class eo extends qn{get type(){return\"ignore\"}}class io extends Xn{constructor(t,e){super(t),this.mesh=e}get type(){return\"mesh\"}getObject(){const t=this.mesh;return{shape:this.shape,name:t.name,serial:t.serial}}_getPosition(){return this.__position||(this.__position=Ur(this.mesh.position)),this.__position}}class ro extends qn{constructor(t,e){super(t),this.surface=e}get type(){return\"surface\"}get data(){return this.surface}getObject(t){return{surface:this.surface,index:this.getIndex(t)}}_getPosition(){return this.surface.center.clone()}}class so extends qn{constructor(t,e){super(),this.unitcell=t,this.structure=e}get type(){return\"unitcell\"}get data(){return this.unitcell}getObject(){return{unitcell:this.unitcell,structure:this.structure}}_getPosition(){return this.unitcell.getCenter(this.structure)}}class no extends qn{constructor(t,e){super(t),this.volume=e}get type(){return\"volume\"}get data(){return this.volume}getObject(t){const e=this.volume,i=this.getIndex(t);return{volume:e,index:i,value:e.data[i]}}_getPosition(t){const i=this.volume.position,r=this.getIndex(t);return new e(i[3*r],i[3*r+1],i[3*r+2])}}class oo extends no{get type(){return\"slice\"}}function ao(){return new Uint32Array([0,265,515,778,1030,1295,1541,1804,2060,2309,2575,2822,3082,3331,3593,3840,400,153,915,666,1430,1183,1941,1692,2460,2197,2975,2710,3482,3219,3993,3728,560,825,51,314,1590,1855,1077,1340,2620,2869,2111,2358,3642,3891,3129,3376,928,681,419,170,1958,1711,1445,1196,2988,2725,2479,2214,4010,3747,3497,3232,1120,1385,1635,1898,102,367,613,876,3180,3429,3695,3942,2154,2403,2665,2912,1520,1273,2035,1786,502,255,1013,764,3580,3317,4095,3830,2554,2291,3065,2800,1616,1881,1107,1370,598,863,85,348,3676,3925,3167,3414,2650,2899,2137,2384,1984,1737,1475,1226,966,719,453,204,4044,3781,3535,3270,3018,2755,2505,2240,2240,2505,2755,3018,3270,3535,3781,4044,204,453,719,966,1226,1475,1737,1984,2384,2137,2899,2650,3414,3167,3925,3676,348,85,863,598,1370,1107,1881,1616,2800,3065,2291,2554,3830,4095,3317,3580,764,1013,255,502,1786,2035,1273,1520,2912,2665,2403,2154,3942,3695,3429,3180,876,613,367,102,1898,1635,1385,1120,3232,3497,3747,4010,2214,2479,2725,2988,1196,1445,1711,1958,170,419,681,928,3376,3129,3891,3642,2358,2111,2869,2620,1340,1077,1855,1590,314,51,825,560,3728,3993,3219,3482,2710,2975,2197,2460,1692,1941,1183,1430,666,915,153,400,3840,3593,3331,3082,2822,2575,2309,2060,1804,1541,1295,1030,778,515,265,0])}function co(){return new Int32Array([-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,8,3,9,8,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,2,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,3,1,2,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,2,10,0,2,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,8,3,2,10,8,10,9,8,-1,-1,-1,-1,-1,-1,-1,3,11,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,11,2,8,11,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,9,0,2,3,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,11,2,1,9,11,9,8,11,-1,-1,-1,-1,-1,-1,-1,3,10,1,11,10,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,10,1,0,8,10,8,11,10,-1,-1,-1,-1,-1,-1,-1,3,9,0,3,11,9,11,10,9,-1,-1,-1,-1,-1,-1,-1,9,8,10,10,8,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,7,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,3,0,7,3,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,9,8,4,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,1,9,4,7,1,7,3,1,-1,-1,-1,-1,-1,-1,-1,1,2,10,8,4,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,4,7,3,0,4,1,2,10,-1,-1,-1,-1,-1,-1,-1,9,2,10,9,0,2,8,4,7,-1,-1,-1,-1,-1,-1,-1,2,10,9,2,9,7,2,7,3,7,9,4,-1,-1,-1,-1,8,4,7,3,11,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,4,7,11,2,4,2,0,4,-1,-1,-1,-1,-1,-1,-1,9,0,1,8,4,7,2,3,11,-1,-1,-1,-1,-1,-1,-1,4,7,11,9,4,11,9,11,2,9,2,1,-1,-1,-1,-1,3,10,1,3,11,10,7,8,4,-1,-1,-1,-1,-1,-1,-1,1,11,10,1,4,11,1,0,4,7,11,4,-1,-1,-1,-1,4,7,8,9,0,11,9,11,10,11,0,3,-1,-1,-1,-1,4,7,11,4,11,9,9,11,10,-1,-1,-1,-1,-1,-1,-1,9,5,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,5,4,0,8,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,5,4,1,5,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,5,4,8,3,5,3,1,5,-1,-1,-1,-1,-1,-1,-1,1,2,10,9,5,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,0,8,1,2,10,4,9,5,-1,-1,-1,-1,-1,-1,-1,5,2,10,5,4,2,4,0,2,-1,-1,-1,-1,-1,-1,-1,2,10,5,3,2,5,3,5,4,3,4,8,-1,-1,-1,-1,9,5,4,2,3,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,11,2,0,8,11,4,9,5,-1,-1,-1,-1,-1,-1,-1,0,5,4,0,1,5,2,3,11,-1,-1,-1,-1,-1,-1,-1,2,1,5,2,5,8,2,8,11,4,8,5,-1,-1,-1,-1,10,3,11,10,1,3,9,5,4,-1,-1,-1,-1,-1,-1,-1,4,9,5,0,8,1,8,10,1,8,11,10,-1,-1,-1,-1,5,4,0,5,0,11,5,11,10,11,0,3,-1,-1,-1,-1,5,4,8,5,8,10,10,8,11,-1,-1,-1,-1,-1,-1,-1,9,7,8,5,7,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,3,0,9,5,3,5,7,3,-1,-1,-1,-1,-1,-1,-1,0,7,8,0,1,7,1,5,7,-1,-1,-1,-1,-1,-1,-1,1,5,3,3,5,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,7,8,9,5,7,10,1,2,-1,-1,-1,-1,-1,-1,-1,10,1,2,9,5,0,5,3,0,5,7,3,-1,-1,-1,-1,8,0,2,8,2,5,8,5,7,10,5,2,-1,-1,-1,-1,2,10,5,2,5,3,3,5,7,-1,-1,-1,-1,-1,-1,-1,7,9,5,7,8,9,3,11,2,-1,-1,-1,-1,-1,-1,-1,9,5,7,9,7,2,9,2,0,2,7,11,-1,-1,-1,-1,2,3,11,0,1,8,1,7,8,1,5,7,-1,-1,-1,-1,11,2,1,11,1,7,7,1,5,-1,-1,-1,-1,-1,-1,-1,9,5,8,8,5,7,10,1,3,10,3,11,-1,-1,-1,-1,5,7,0,5,0,9,7,11,0,1,0,10,11,10,0,-1,11,10,0,11,0,3,10,5,0,8,0,7,5,7,0,-1,11,10,5,7,11,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,6,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,3,5,10,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,0,1,5,10,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,8,3,1,9,8,5,10,6,-1,-1,-1,-1,-1,-1,-1,1,6,5,2,6,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,6,5,1,2,6,3,0,8,-1,-1,-1,-1,-1,-1,-1,9,6,5,9,0,6,0,2,6,-1,-1,-1,-1,-1,-1,-1,5,9,8,5,8,2,5,2,6,3,2,8,-1,-1,-1,-1,2,3,11,10,6,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,0,8,11,2,0,10,6,5,-1,-1,-1,-1,-1,-1,-1,0,1,9,2,3,11,5,10,6,-1,-1,-1,-1,-1,-1,-1,5,10,6,1,9,2,9,11,2,9,8,11,-1,-1,-1,-1,6,3,11,6,5,3,5,1,3,-1,-1,-1,-1,-1,-1,-1,0,8,11,0,11,5,0,5,1,5,11,6,-1,-1,-1,-1,3,11,6,0,3,6,0,6,5,0,5,9,-1,-1,-1,-1,6,5,9,6,9,11,11,9,8,-1,-1,-1,-1,-1,-1,-1,5,10,6,4,7,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,3,0,4,7,3,6,5,10,-1,-1,-1,-1,-1,-1,-1,1,9,0,5,10,6,8,4,7,-1,-1,-1,-1,-1,-1,-1,10,6,5,1,9,7,1,7,3,7,9,4,-1,-1,-1,-1,6,1,2,6,5,1,4,7,8,-1,-1,-1,-1,-1,-1,-1,1,2,5,5,2,6,3,0,4,3,4,7,-1,-1,-1,-1,8,4,7,9,0,5,0,6,5,0,2,6,-1,-1,-1,-1,7,3,9,7,9,4,3,2,9,5,9,6,2,6,9,-1,3,11,2,7,8,4,10,6,5,-1,-1,-1,-1,-1,-1,-1,5,10,6,4,7,2,4,2,0,2,7,11,-1,-1,-1,-1,0,1,9,4,7,8,2,3,11,5,10,6,-1,-1,-1,-1,9,2,1,9,11,2,9,4,11,7,11,4,5,10,6,-1,8,4,7,3,11,5,3,5,1,5,11,6,-1,-1,-1,-1,5,1,11,5,11,6,1,0,11,7,11,4,0,4,11,-1,0,5,9,0,6,5,0,3,6,11,6,3,8,4,7,-1,6,5,9,6,9,11,4,7,9,7,11,9,-1,-1,-1,-1,10,4,9,6,4,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,10,6,4,9,10,0,8,3,-1,-1,-1,-1,-1,-1,-1,10,0,1,10,6,0,6,4,0,-1,-1,-1,-1,-1,-1,-1,8,3,1,8,1,6,8,6,4,6,1,10,-1,-1,-1,-1,1,4,9,1,2,4,2,6,4,-1,-1,-1,-1,-1,-1,-1,3,0,8,1,2,9,2,4,9,2,6,4,-1,-1,-1,-1,0,2,4,4,2,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,3,2,8,2,4,4,2,6,-1,-1,-1,-1,-1,-1,-1,10,4,9,10,6,4,11,2,3,-1,-1,-1,-1,-1,-1,-1,0,8,2,2,8,11,4,9,10,4,10,6,-1,-1,-1,-1,3,11,2,0,1,6,0,6,4,6,1,10,-1,-1,-1,-1,6,4,1,6,1,10,4,8,1,2,1,11,8,11,1,-1,9,6,4,9,3,6,9,1,3,11,6,3,-1,-1,-1,-1,8,11,1,8,1,0,11,6,1,9,1,4,6,4,1,-1,3,11,6,3,6,0,0,6,4,-1,-1,-1,-1,-1,-1,-1,6,4,8,11,6,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,10,6,7,8,10,8,9,10,-1,-1,-1,-1,-1,-1,-1,0,7,3,0,10,7,0,9,10,6,7,10,-1,-1,-1,-1,10,6,7,1,10,7,1,7,8,1,8,0,-1,-1,-1,-1,10,6,7,10,7,1,1,7,3,-1,-1,-1,-1,-1,-1,-1,1,2,6,1,6,8,1,8,9,8,6,7,-1,-1,-1,-1,2,6,9,2,9,1,6,7,9,0,9,3,7,3,9,-1,7,8,0,7,0,6,6,0,2,-1,-1,-1,-1,-1,-1,-1,7,3,2,6,7,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,3,11,10,6,8,10,8,9,8,6,7,-1,-1,-1,-1,2,0,7,2,7,11,0,9,7,6,7,10,9,10,7,-1,1,8,0,1,7,8,1,10,7,6,7,10,2,3,11,-1,11,2,1,11,1,7,10,6,1,6,7,1,-1,-1,-1,-1,8,9,6,8,6,7,9,1,6,11,6,3,1,3,6,-1,0,9,1,11,6,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,8,0,7,0,6,3,11,0,11,6,0,-1,-1,-1,-1,7,11,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,6,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,0,8,11,7,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,9,11,7,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,1,9,8,3,1,11,7,6,-1,-1,-1,-1,-1,-1,-1,10,1,2,6,11,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,2,10,3,0,8,6,11,7,-1,-1,-1,-1,-1,-1,-1,2,9,0,2,10,9,6,11,7,-1,-1,-1,-1,-1,-1,-1,6,11,7,2,10,3,10,8,3,10,9,8,-1,-1,-1,-1,7,2,3,6,2,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,0,8,7,6,0,6,2,0,-1,-1,-1,-1,-1,-1,-1,2,7,6,2,3,7,0,1,9,-1,-1,-1,-1,-1,-1,-1,1,6,2,1,8,6,1,9,8,8,7,6,-1,-1,-1,-1,10,7,6,10,1,7,1,3,7,-1,-1,-1,-1,-1,-1,-1,10,7,6,1,7,10,1,8,7,1,0,8,-1,-1,-1,-1,0,3,7,0,7,10,0,10,9,6,10,7,-1,-1,-1,-1,7,6,10,7,10,8,8,10,9,-1,-1,-1,-1,-1,-1,-1,6,8,4,11,8,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,6,11,3,0,6,0,4,6,-1,-1,-1,-1,-1,-1,-1,8,6,11,8,4,6,9,0,1,-1,-1,-1,-1,-1,-1,-1,9,4,6,9,6,3,9,3,1,11,3,6,-1,-1,-1,-1,6,8,4,6,11,8,2,10,1,-1,-1,-1,-1,-1,-1,-1,1,2,10,3,0,11,0,6,11,0,4,6,-1,-1,-1,-1,4,11,8,4,6,11,0,2,9,2,10,9,-1,-1,-1,-1,10,9,3,10,3,2,9,4,3,11,3,6,4,6,3,-1,8,2,3,8,4,2,4,6,2,-1,-1,-1,-1,-1,-1,-1,0,4,2,4,6,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,9,0,2,3,4,2,4,6,4,3,8,-1,-1,-1,-1,1,9,4,1,4,2,2,4,6,-1,-1,-1,-1,-1,-1,-1,8,1,3,8,6,1,8,4,6,6,10,1,-1,-1,-1,-1,10,1,0,10,0,6,6,0,4,-1,-1,-1,-1,-1,-1,-1,4,6,3,4,3,8,6,10,3,0,3,9,10,9,3,-1,10,9,4,6,10,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,9,5,7,6,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,3,4,9,5,11,7,6,-1,-1,-1,-1,-1,-1,-1,5,0,1,5,4,0,7,6,11,-1,-1,-1,-1,-1,-1,-1,11,7,6,8,3,4,3,5,4,3,1,5,-1,-1,-1,-1,9,5,4,10,1,2,7,6,11,-1,-1,-1,-1,-1,-1,-1,6,11,7,1,2,10,0,8,3,4,9,5,-1,-1,-1,-1,7,6,11,5,4,10,4,2,10,4,0,2,-1,-1,-1,-1,3,4,8,3,5,4,3,2,5,10,5,2,11,7,6,-1,7,2,3,7,6,2,5,4,9,-1,-1,-1,-1,-1,-1,-1,9,5,4,0,8,6,0,6,2,6,8,7,-1,-1,-1,-1,3,6,2,3,7,6,1,5,0,5,4,0,-1,-1,-1,-1,6,2,8,6,8,7,2,1,8,4,8,5,1,5,8,-1,9,5,4,10,1,6,1,7,6,1,3,7,-1,-1,-1,-1,1,6,10,1,7,6,1,0,7,8,7,0,9,5,4,-1,4,0,10,4,10,5,0,3,10,6,10,7,3,7,10,-1,7,6,10,7,10,8,5,4,10,4,8,10,-1,-1,-1,-1,6,9,5,6,11,9,11,8,9,-1,-1,-1,-1,-1,-1,-1,3,6,11,0,6,3,0,5,6,0,9,5,-1,-1,-1,-1,0,11,8,0,5,11,0,1,5,5,6,11,-1,-1,-1,-1,6,11,3,6,3,5,5,3,1,-1,-1,-1,-1,-1,-1,-1,1,2,10,9,5,11,9,11,8,11,5,6,-1,-1,-1,-1,0,11,3,0,6,11,0,9,6,5,6,9,1,2,10,-1,11,8,5,11,5,6,8,0,5,10,5,2,0,2,5,-1,6,11,3,6,3,5,2,10,3,10,5,3,-1,-1,-1,-1,5,8,9,5,2,8,5,6,2,3,8,2,-1,-1,-1,-1,9,5,6,9,6,0,0,6,2,-1,-1,-1,-1,-1,-1,-1,1,5,8,1,8,0,5,6,8,3,8,2,6,2,8,-1,1,5,6,2,1,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,3,6,1,6,10,3,8,6,5,6,9,8,9,6,-1,10,1,0,10,0,6,9,5,0,5,6,0,-1,-1,-1,-1,0,3,8,5,6,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,5,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,5,10,7,5,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,5,10,11,7,5,8,3,0,-1,-1,-1,-1,-1,-1,-1,5,11,7,5,10,11,1,9,0,-1,-1,-1,-1,-1,-1,-1,10,7,5,10,11,7,9,8,1,8,3,1,-1,-1,-1,-1,11,1,2,11,7,1,7,5,1,-1,-1,-1,-1,-1,-1,-1,0,8,3,1,2,7,1,7,5,7,2,11,-1,-1,-1,-1,9,7,5,9,2,7,9,0,2,2,11,7,-1,-1,-1,-1,7,5,2,7,2,11,5,9,2,3,2,8,9,8,2,-1,2,5,10,2,3,5,3,7,5,-1,-1,-1,-1,-1,-1,-1,8,2,0,8,5,2,8,7,5,10,2,5,-1,-1,-1,-1,9,0,1,5,10,3,5,3,7,3,10,2,-1,-1,-1,-1,9,8,2,9,2,1,8,7,2,10,2,5,7,5,2,-1,1,3,5,3,7,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,7,0,7,1,1,7,5,-1,-1,-1,-1,-1,-1,-1,9,0,3,9,3,5,5,3,7,-1,-1,-1,-1,-1,-1,-1,9,8,7,5,9,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,8,4,5,10,8,10,11,8,-1,-1,-1,-1,-1,-1,-1,5,0,4,5,11,0,5,10,11,11,3,0,-1,-1,-1,-1,0,1,9,8,4,10,8,10,11,10,4,5,-1,-1,-1,-1,10,11,4,10,4,5,11,3,4,9,4,1,3,1,4,-1,2,5,1,2,8,5,2,11,8,4,5,8,-1,-1,-1,-1,0,4,11,0,11,3,4,5,11,2,11,1,5,1,11,-1,0,2,5,0,5,9,2,11,5,4,5,8,11,8,5,-1,9,4,5,2,11,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,5,10,3,5,2,3,4,5,3,8,4,-1,-1,-1,-1,5,10,2,5,2,4,4,2,0,-1,-1,-1,-1,-1,-1,-1,3,10,2,3,5,10,3,8,5,4,5,8,0,1,9,-1,5,10,2,5,2,4,1,9,2,9,4,2,-1,-1,-1,-1,8,4,5,8,5,3,3,5,1,-1,-1,-1,-1,-1,-1,-1,0,4,5,1,0,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,4,5,8,5,3,9,0,5,0,3,5,-1,-1,-1,-1,9,4,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,11,7,4,9,11,9,10,11,-1,-1,-1,-1,-1,-1,-1,0,8,3,4,9,7,9,11,7,9,10,11,-1,-1,-1,-1,1,10,11,1,11,4,1,4,0,7,4,11,-1,-1,-1,-1,3,1,4,3,4,8,1,10,4,7,4,11,10,11,4,-1,4,11,7,9,11,4,9,2,11,9,1,2,-1,-1,-1,-1,9,7,4,9,11,7,9,1,11,2,11,1,0,8,3,-1,11,7,4,11,4,2,2,4,0,-1,-1,-1,-1,-1,-1,-1,11,7,4,11,4,2,8,3,4,3,2,4,-1,-1,-1,-1,2,9,10,2,7,9,2,3,7,7,4,9,-1,-1,-1,-1,9,10,7,9,7,4,10,2,7,8,7,0,2,0,7,-1,3,7,10,3,10,2,7,4,10,1,10,0,4,0,10,-1,1,10,2,8,7,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,9,1,4,1,7,7,1,3,-1,-1,-1,-1,-1,-1,-1,4,9,1,4,1,7,0,8,1,8,7,1,-1,-1,-1,-1,4,0,3,7,4,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,8,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,10,8,10,11,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,0,9,3,9,11,11,9,10,-1,-1,-1,-1,-1,-1,-1,0,1,10,0,10,8,8,10,11,-1,-1,-1,-1,-1,-1,-1,3,1,10,11,3,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,2,11,1,11,9,9,11,8,-1,-1,-1,-1,-1,-1,-1,3,0,9,3,9,11,1,2,9,2,11,9,-1,-1,-1,-1,0,2,11,8,0,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,2,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,3,8,2,8,10,10,8,9,-1,-1,-1,-1,-1,-1,-1,9,10,2,0,9,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,3,8,2,8,10,0,1,8,1,10,8,-1,-1,-1,-1,1,10,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,3,8,9,1,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,9,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,3,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1])}function lo(t,e,i,r,s){var n,o,a,c,l,h,d,u=[[0,4,4,4,2,0,0,0,2,2,0,0],[4,0,4,4,0,8,0,0,0,8,8,0],[4,4,0,4,0,0,8,0,0,0,8,8],[4,4,4,0,0,0,0,1,1,0,0,1],[2,0,0,0,0,8,8,8,2,2,0,0],[0,8,0,0,8,0,8,8,0,8,8,0],[0,0,8,0,8,8,0,8,0,0,8,8],[0,0,0,1,8,8,8,0,1,0,0,1],[2,0,0,1,2,0,0,1,0,2,0,1],[2,8,0,0,2,8,0,0,2,0,8,0],[0,8,8,0,0,8,8,0,0,8,0,8],[0,0,8,1,0,0,8,1,1,0,8,0]],m=0,p=!1,f=!1,g=!1,y=!1,b=-1,x=e*i*r,v=e,w=e*i,A=new Int32Array(12),_=[],S=[],C=[],P=[],I=ao(),k=co();function M(t,e,i){return t+(e-t)*i}function T(t,s,n){return w*(n=(n+d)%r)+v*(s=(s+h)%i)+(t=(t+l)%e)}function B(t,e,i,r,c,l,h){var d=3*t;if(o[d]<0){var u=(m-l)/(h-l),f=n,g=3*a;if(_[g]=i+u,_[g+1]=r,_[g+2]=c,!p){var y=3*t;S[g]=b*M(f[y],f[y+3],u),S[g+1]=b*M(f[y+1],f[y+4],u),S[g+2]=b*M(f[y+2],f[y+5],u)}s&&(P[a]=s[t+Math.round(u)]),o[d]=a,A[e]=a,a+=1}else A[e]=o[d]}function D(t,e,i,r,c,l,h){var d=3*t+1;if(o[d]<0){var u=(m-l)/(h-l),f=n,g=3*a;if(_[g]=i,_[g+1]=r+u,_[g+2]=c,!p){var y=3*t,x=y+3*v;S[g]=b*M(f[y],f[x],u),S[g+1]=b*M(f[y+1],f[x+1],u),S[g+2]=b*M(f[y+2],f[x+2],u)}s&&(P[a]=s[t+Math.round(u)*v]),o[d]=a,A[e]=a,a+=1}else A[e]=o[d]}function $(t,e,i,r,c,l,h){var d=3*t+2;if(o[d]<0){var u=(m-l)/(h-l),f=n,g=3*a;if(_[g]=i,_[g+1]=r,_[g+2]=c+u,!p){var y=3*t,x=y+3*w;S[g]=b*M(f[y],f[x],u),S[g+1]=b*M(f[y+1],f[x+1],u),S[g+2]=b*M(f[y+2],f[x+2],u)}s&&(P[a]=s[t+Math.round(u)*w]),o[d]=a,A[e]=a,a+=1}else A[e]=o[d]}function O(e){var i=3*e;0===n[i]&&(n[i]=t[(e-1+x)%x]-t[(e+1)%x],n[i+1]=t[(e-v+x)%x]-t[(e+v)%x],n[i+2]=t[(e-w+x)%x]-t[(e+w)%x])}function R(e,i,r,s,n){var o,a,l,h,d,b,x;g?(s=T(e,i,r),o=T(e+1,i,r),a=T(e,i+1,r),l=T(e,i,r+1),h=T(e+1,i+1,r),d=T(e+1,i,r+1),b=T(e,i+1,r+1),x=T(e+1,i+1,r+1)):(o=s+1,h=(a=s+v)+1,d=(l=s+w)+1,x=(b=a+w)+1);var _=0,S=t[s],P=t[o],M=t[a],R=t[h],E=t[l],F=t[d],L=t[b],N=t[x];S=m){$=b,M=!0;break}if(M)break}if(M)break}for(M=!1,y=n;y=m){D=y,M=!0;break}if(M)break}if(M)break}for(M=!1,f=s;f=m){B=f,M=!0;break}if(M)break}if(M)break}for(M=!1,b=h;b>=a;--b){for(y=l;y>=n;--y){for(f=c;f>=s;--f)if(d=e*i*b+e*y+f,t[d]>=m){F=b,M=!0;break}if(M)break}if(M)break}for(M=!1,y=l;y>=n;--y){for(b=F;b>=a;--b){for(f=c;f>=s;--f)if(d=e*i*b+e*y+f,t[d]>=m){E=y,M=!0;break}if(M)break}if(M)break}for(M=!1,f=c;f>=s;--f){for(y=E;y>=n;--y){for(b=F;b>=a;--b)if(d=e*i*b+e*y+f,t[d]>=m){O=f,M=!0;break}if(M)break}if(M)break}p?(s=Math.max(0,B-1),n=Math.max(0,D-1),a=Math.max(0,$-1),c=Math.min(e-1,O+1),l=Math.min(i-1,E+1),h=Math.min(r-1,F+1)):(s=Math.max(1,B-1),n=Math.max(1,D-1),a=Math.max(1,$-1),c=Math.min(e-2,O+1),l=Math.min(i-2,E+1),h=Math.min(r-2,F+1))}var L=15;for(b=a;b0?-1:1,n||(n=new Float32Array(3*x)));var I=3*x;if(o&&o.length===I||(o=new Int32Array(I)),a=0,c=0,void 0!==v){var k=v[0].map(Math.round),M=v[1].map(Math.round);l=e*Math.ceil(Math.abs(k[0])/e),h=i*Math.ceil(Math.abs(k[1])/i),d=r*Math.ceil(Math.abs(k[2])/r),E(k[0],k[1],k[2],M[0],M[1],M[2])}else l=h=d=0,E();return _.length=3*a,p||(S.length=3*a),C.length=c,s&&(P.length=a),{position:new Float32Array(_),normal:p?void 0:new Float32Array(S),index:xt(C,_.length/3),atomindex:s?new Int32Array(P):void 0,contour:f}}}He.add(\"arrow\",class extends Xn{get primitive(){return _s}}),He.add(\"box\",class extends Xn{get primitive(){return xs}}),He.add(\"cone\",class extends Xn{get primitive(){return Ss}}),He.add(\"cylinder\",class extends Xn{get primitive(){return As}}),He.add(\"ellipsoid\",class extends Xn{get primitive(){return Cs}}),He.add(\"octahedron\",class extends Xn{get primitive(){return vs}}),He.add(\"sphere\",class extends Xn{get primitive(){return bs}}),He.add(\"tetrahedron\",class extends Xn{get primitive(){return ws}}),He.add(\"torus\",class extends Xn{get primitive(){return Ps}}),He.add(\"point\",class extends Xn{get primitive(){return ks}}),He.add(\"wideline\",class extends Xn{get primitive(){return Ms}}),Object.assign(lo,{__deps:[ao,co,xt]});class ho{constructor(t,e){this.cols=t,this.rows=e,this.size=this.cols*this.rows,this.data=new Float32Array(this.size)}copyTo(t){t.data.set(this.data)}}function uo(t,e){let i=0,r=0;const s=e.rows,n=e.cols;let o=0,a=0,c=0;const l=e.data,h=t.data;for(;i(e=Math.abs(e))?(e/=t,t*Math.sqrt(1+e*e)):e>0?(t/=e,e*Math.sqrt(1+t*t)):0}const xo=1.192092896e-7,vo=1e-37;function wo(t,e,i,r){let s=0,n=0;const o=t.rows,a=t.cols;let c=o,l=a;c>16)?O:-O,t[h*e+u]=$;for(m=0;m<2;m++)for(d=0;d{const e=t.data.sd,i=t.data.p;o(this._makeSurface(e,i.isolevel,i.smooth))}),(a=>{console.warn(\"Volume.getSurfaceWorker error - trying without worker\",a);const c=this.getSurface(t,e,i,r,s,n);o(c)}))}else{const a=this.getSurface(t,e,i,r,s,n);o(a)}}getValueForSigma(t){return this.mean+st(t,2)*this.rms}getSigmaForValue(t){return(st(t,0)-this.mean)/this.rms}get position(){if(!this._position){const t=this.nz,e=this.ny,i=this.nx,r=new Float32Array(i*e*t*3);let s=0;for(let n=0;ni){const t=e;e=i,i=t}const r=t[e];return void 0===r?(t[e]=[i],!0):!r.includes(i)&&(r.push(i),!0)}const i=this.geometry,r=i.index;if(this.parameters.wireframe)if(r){const s=r.array;let n,o=s.length;if(i.drawRange.count!==1/0&&(o=i.drawRange.count),this.wireframeIndex&&this.wireframeIndex.length>2*o)n=this.wireframeIndex;else{n=xt(2*o,i.attributes.position.count)}let a=0;t.length=0;for(let t=0;t2*t?this.wireframeIndex:xt(2*t,t);for(let i=0,r=0;ithis.wireframeGeometry.index.array.length)this.wireframeGeometry.setIndex(new M(this.wireframeIndex,1).setUsage(this.dynamic?WebGLRenderingContext.DYNAMIC_DRAW:0));else{const t=this.wireframeGeometry.getIndex();if(!t)return void Me.error(\"Index is null\");t.set(this.wireframeIndex),t.needsUpdate=this.wireframeIndexCount>0,t.updateRange.count=this.wireframeIndexCount}this.wireframeGeometry.setDrawRange(0,this.wireframeIndexCount)}}getRenderOrder(){let t=0;return this.isText?t=1:this.transparent&&(t=this.isSurface?3:2),t}_getMesh(t){this.material||this.makeMaterial();const e=this.geometry,i=this[t];let r;return r=this.isLine?new T(e,i):this.isPoint?new o(e,i):new P(e,i),r.frustumCulled=!1,r.renderOrder=this.getRenderOrder(),r}getMesh(){return this._getMesh(\"material\")}getWireframeMesh(){let t;return this.material||this.makeMaterial(),this.wireframeGeometry||this.makeWireframeGeometry(),t=new T(this.wireframeGeometry,this.wireframeMaterial),t.frustumCulled=!1,t.renderOrder=this.getRenderOrder(),t}getPickingMesh(){return this._getMesh(\"pickingMaterial\")}getShader(t,e){return gi(t,this.getDefines(e))}getVertexShader(t){return this.getShader(this.vertexShader,t)}getFragmentShader(t){return this.getShader(this.fragmentShader,t)}getDefines(t){const e={};return this.parameters.clipNear&&(e.NEAR_CLIP=1),this.parameters.clipRadius&&(e.RADIUS_CLIP=1),\"picking\"===t?e.PICKING=1:((\"background\"===t||this.parameters.background)&&(e.NOLIGHT=1),this.parameters.flatShaded&&(e.FLAT_SHADED=1),this.parameters.opaqueBack&&(e.OPAQUE_BACK=1),this.parameters.diffuseInterior&&(e.DIFFUSE_INTERIOR=1),this.parameters.useInteriorColor&&(e.USE_INTERIOR_COLOR=1)),e}getParameters(){return this.parameters}addUniforms(t){this.uniforms=R.merge([this.uniforms,t]),this.pickingUniforms=R.merge([this.pickingUniforms,t])}addAttributes(t){for(let e in t){let i;const r=t[e],s=this.attributeSize*Lo[r.type];r.value?(s!==r.value.length&&Me.error(\"attribute value has wrong length\",e),i=r.value):i=bt(\"float32\",s),this.geometry.setAttribute(e,new M(i,Lo[r.type]).setUsage(this.dynamic?WebGLRenderingContext.DYNAMIC_DRAW:0))}}updateRenderOrder(){const t=this.getRenderOrder();function e(e){e.renderOrder=t}this.group.children.forEach(e),this.pickingGroup&&this.pickingGroup.children.forEach(e)}updateShader(){const t=this.material,e=this.wireframeMaterial,i=this.pickingMaterial;t.vertexShader=this.getVertexShader(),t.fragmentShader=this.getFragmentShader(),t.needsUpdate=!0,e.vertexShader=this.getShader(\"Line.vert\"),e.fragmentShader=this.getShader(\"Line.frag\"),e.needsUpdate=!0,i.vertexShader=this.getVertexShader(\"picking\"),i.fragmentShader=this.getFragmentShader(\"picking\"),i.needsUpdate=!0}setParameters(t){const e=t,i=this.parameterTypes,r=this.parameters,s={},n={};let o=!1,a=!1;for(const t in e){const c=e[t];void 0!==c&&(r[t]=c,void 0!==i[t]&&(i[t].property&&(!0!==i[t].property?s[i[t].property]=c:s[t]=c),i[t].uniform&&(!0!==i[t].uniform?n[i[t].uniform]=c:n[t]=c),i[t].updateShader&&(o=!0),i[t].updateVisibility&&(a=!0),this.dynamic&&\"wireframe\"===t&&!0===c&&this.updateWireframeIndex(),\"forceTransparent\"===t&&(s.transparent=this.transparent),\"matrix\"===t&&(this.matrix=c)))}this.setProperties(s),this.setUniforms(n),o&&this.updateShader(),a&&this.setVisibility(this.visible)}setAttributes(t){const e=this.geometry,i=e.attributes;for(const r in t){if(\"picking\"===r)continue;const s=t[r],n=s.length;if(\"index\"===r){const t=e.getIndex();if(!t){Me.error(\"Index is null\");continue}e.setDrawRange(0,1/0),n>t.array.length?e.setIndex(new M(s,1).setUsage(this.dynamic?WebGLRenderingContext.DYNAMIC_DRAW:0)):(t.set(s),t.count=n,t.needsUpdate=n>0,t.updateRange.count=n,e.setDrawRange(0,n)),this.indexVersion++,this.parameters.wireframe&&this.updateWireframeIndex()}else{const t=i[r];n>t.array.length?e.setAttribute(r,new M(s,t.itemSize).setUsage(this.dynamic?WebGLRenderingContext.DYNAMIC_DRAW:0)):(i[r].set(s),i[r].needsUpdate=n>0,i[r].updateRange.count=n)}}}setUniforms(t){if(!t)return;const e=this.material.uniforms,i=this.wireframeMaterial.uniforms,r=this.pickingMaterial.uniforms;for(let s in t)\"opacity\"===s&&this.setProperties({transparent:this.transparent}),void 0!==e[s]&&(e[s].value.isVector3?e[s].value.copy(t[s]):e[s].value.set?e[s].value.set(t[s]):e[s].value=t[s]),void 0!==i[s]&&(i[s].value.isVector3?i[s].value.copy(t[s]):i[s].value.set?i[s].value.set(t[s]):i[s].value=t[s]),void 0!==r[s]&&(r[s].value.isVector3?r[s].value.copy(t[s]):r[s].value.set?r[s].value.set(t[s]):r[s].value=t[s])}setProperties(t){if(!t)return;const e=this.material,i=this.wireframeMaterial,r=this.pickingMaterial;for(const s in t){const n=s;let o=t[n];\"transparent\"===n?this.updateRenderOrder():\"side\"===n&&(o=Fo(o)),e[n]=o,i[n]=o,r[n]=o}e.needsUpdate=!0,i.needsUpdate=!0,r.needsUpdate=!0}setVisibility(t){this.visible=t,this.parameters.wireframe?(this.group.visible=!1,this.wireframeGroup.visible=t,this.pickable&&(this.pickingGroup.visible=!1)):(this.group.visible=t,this.wireframeGroup.visible=!1,this.pickable&&(this.pickingGroup.visible=t))}dispose(){this.material&&this.material.dispose(),this.wireframeMaterial&&this.wireframeMaterial.dispose(),this.pickingMaterial&&this.pickingMaterial.dispose(),this.geometry.dispose(),this.wireframeGeometry&&this.wireframeGeometry.dispose()}toJSON(){var t={};for(var e in this)\"group\"!==e&&\"wireframeGroup\"!==e&&\"pickingGroup\"!=e&&\"picking\"!==e&&(t[e]=this[e]);return t}}class Uo extends Go{constructor(t,e={}){super(t,e),this.vertexShader=\"Mesh.vert\",this.fragmentShader=\"Mesh.frag\",this.addAttributes({normal:{type:\"v3\",value:t.normal}}),void 0===t.normal&&this.geometry.computeVertexNormals()}}class jo extends Uo{constructor(){super(...arguments),this.isSurface=!0}}function Ho(t){t.visible=!0}function Wo(t){t.visible=!1}class qo{constructor(t){this.group=new m,this.wireframeGroup=new m,this.pickingGroup=new m,this.frontMeshes=[],this.backMeshes=[],this.size=t.size,this.side=t.parameters.side,this.visible=t.visible,this.geometry=t.geometry,this.picking=t.picking,this.group=new m,this.wireframeGroup=new m,this.pickingGroup=new m,this.matrix=t.matrix;const e=t,i=new t.constructor({position:new Float32Array(0)});e.makeMaterial(),i.makeMaterial(),i.picking=t.picking,i.geometry=t.geometry,i.wireframeGeometry=t.wireframeGeometry,i.setParameters(t.getParameters()),i.updateShader(),e.setParameters({side:\"front\"}),i.setParameters({side:\"back\",opacity:i.parameters.opacity}),this.buffer=t,this.frontBuffer=e,this.backBuffer=i}set matrix(t){Go.prototype.setMatrix.call(this,t)}get matrix(){return this.group.matrix.clone()}get pickable(){return!!this.picking&&!this.parameters.disablePicking}get parameters(){return this.buffer.parameters}getParameters(){const t=Object.assign({},this.buffer.parameters);return t.side=this.side,t}getMesh(t){let e,i;return t?(i=this.backBuffer.getPickingMesh(),e=this.frontBuffer.getPickingMesh()):(i=this.backBuffer.getMesh(),e=this.frontBuffer.getMesh()),this.frontMeshes.push(e),this.backMeshes.push(i),this.setParameters({side:this.side}),(new m).add(i,e)}getWireframeMesh(){return this.buffer.getWireframeMesh()}getPickingMesh(){return this.getMesh(!0)}setAttributes(t){this.buffer.setAttributes(t)}setParameters(t){\"front\"===(t=Object.assign({},t)).side?(this.frontMeshes.forEach(Ho),this.backMeshes.forEach(Wo)):\"back\"===t.side?(this.frontMeshes.forEach(Wo),this.backMeshes.forEach(Ho)):\"double\"===t.side&&(this.frontMeshes.forEach(Ho),this.backMeshes.forEach(Ho)),void 0!==t.side&&(this.side=t.side),delete t.side,void 0!==t.matrix&&(this.matrix=t.matrix),delete t.matrix,this.frontBuffer.setParameters(t),void 0!==t.wireframe&&(this.wireframe=t.wireframe,this.setVisibility(this.visible)),delete t.wireframe,this.backBuffer.setParameters(t)}setVisibility(t){this.visible=t,this.parameters.wireframe?(this.group.visible=!1,this.wireframeGroup.visible=t,this.pickable&&(this.pickingGroup.visible=!1)):(this.group.visible=t,this.wireframeGroup.visible=!1,this.pickable&&(this.pickingGroup.visible=t))}dispose(){this.frontBuffer.dispose(),this.backBuffer.dispose()}toJSON(){var t={};for(var e in this)[\"side\",\"size\",\"visible\",\"matrix\",\"parameters\"].includes(e)&&(t[e]=this[e]);return t}}Ve.add(\"shader/Line.vert\",\"uniform float clipNear;\\nuniform vec3 clipCenter;\\nvarying vec3 vViewPosition;\\n#if defined( RADIUS_CLIP )\\nvarying vec3 vClipCenter;\\n#endif\\n#include color_pars_vertex\\nvoid main(){\\n#include color_vertex\\n#include begin_vertex\\n#include project_vertex\\nvViewPosition = -mvPosition.xyz;\\n#if defined( RADIUS_CLIP )\\nvClipCenter = -( modelViewMatrix * vec4( clipCenter, 1.0 ) ).xyz;\\n#endif\\n#include nearclip_vertex\\n}\"),Ve.add(\"shader/Line.frag\",\"uniform float opacity;\\nuniform float clipNear;\\nuniform float clipRadius;\\nvarying vec3 vViewPosition;\\n#if defined( RADIUS_CLIP )\\nvarying vec3 vClipCenter;\\n#endif\\n#include common\\n#include color_pars_fragment\\n#include fog_pars_fragment\\nvoid main(){\\n#include nearclip_fragment\\n#include radiusclip_fragment\\ngl_FragColor = vec4( vColor, opacity );\\n#include premultiplied_alpha_fragment\\n#include tonemapping_fragment\\n#include encodings_fragment\\n#include fog_fragment\\n}\");class Xo extends Go{constructor(){super(...arguments),this.isLine=!0,this.vertexShader=\"Line.vert\",this.fragmentShader=\"Line.frag\"}}class Yo extends zr{constructor(t,r,s){super(t,r,s),this.type=\"surface\",this.parameters=Object.assign({isolevelType:{type:\"select\",options:{value:\"value\",sigma:\"sigma\"}},isolevel:{type:\"number\",precision:2,max:1e3,min:-1e3},negateIsolevel:{type:\"boolean\"},isolevelScroll:{type:\"boolean\"},smooth:{type:\"integer\",precision:1,max:10,min:0},background:{type:\"boolean\",rebuild:!0},opaqueBack:{type:\"boolean\",buffer:!0},boxSize:{type:\"integer\",precision:1,max:100,min:0},colorVolume:{type:\"hidden\"},contour:{type:\"boolean\",rebuild:!0},useWorker:{type:\"boolean\",rebuild:!0},wrap:{type:\"boolean\",rebuild:!0}},this.parameters),t instanceof Eo?(this.surface=void 0,this.volume=t):(this.surface=t,this.volume=void 0),this.boxCenter=new e,this.__boxCenter=new e,this.box=new a,this.__box=new a,this._position=new e,this.inverseMatrix=new i,this.setBox=function(){this._position.copy(r.translationGroup.position).negate(),this._position.applyMatrix4(this.inverseMatrix),this._position.equals(this.boxCenter)||this.setParameters({boxCenter:this._position})},this.toBePrepared=!0,this.viewer.signals.ticked.add(this.setBox,this),this.init(s)}init(t){const e=t||{};e.colorScheme=st(e.colorScheme,\"uniform\"),e.colorValue=st(e.colorValue,14540253),this.isolevelType=st(e.isolevelType,\"sigma\"),this.isolevel=st(e.isolevel,2),this.negateIsolevel=st(e.negateIsolevel,!1),this.isolevelScroll=st(e.isolevelScroll,!1),this.smooth=st(e.smooth,0),this.background=st(e.background,!1),this.opaqueBack=st(e.opaqueBack,!0),this.boxSize=st(e.boxSize,0),this.colorVolume=st(e.colorVolume,void 0),this.contour=st(e.contour,!1),this.useWorker=st(e.useWorker,!0),this.wrap=st(e.wrap,!1),super.init(e),this.inverseMatrix.getInverse(this.matrix),this.build()}attach(t){this.bufferList.forEach((t=>{this.viewer.add(t)})),this.setVisibility(this.visible),t()}prepare(t){if(this.volume){let e;if(e=\"sigma\"===this.isolevelType?this.volume.getValueForSigma(this.isolevel):this.isolevel,this.negateIsolevel&&(e*=-1),!this.surface||this.__isolevel!==e||this.__smooth!==this.smooth||this.__contour!==this.contour||this.__wrap!==this.wrap||this.__boxSize!==this.boxSize||this.boxSize>0&&!this.__boxCenter.equals(this.boxCenter)){this.__isolevel=e,this.__smooth=this.smooth,this.__contour=this.contour,this.__wrap=this.wrap,this.__boxSize=this.boxSize,this.__boxCenter.copy(this.boxCenter),this.__box.copy(this.box);const i=e=>{this.surface=e,t()};this.useWorker?this.volume.getSurfaceWorker(e,this.smooth,this.boxCenter,this.boxSize,this.contour,this.wrap,i):i(this.volume.getSurface(e,this.smooth,this.boxCenter,this.boxSize,this.contour,this.wrap))}else t()}else t()}create(){const t={position:this.surface.getPosition(),color:this.surface.getColor(this.getColorParams()),index:this.surface.getIndex()};let e;if(this.contour)e=new Xo(t,this.getBufferParams({wireframe:!1}));else{Object.assign(t,{normal:this.surface.getNormal(),picking:this.surface.getPicking()});const i=new jo(t,this.getBufferParams({background:this.background,opaqueBack:this.opaqueBack,dullInterior:!1}));e=new qo(i)}this.bufferList.push(e)}update(t){if(0===this.bufferList.length)return;const e={};(t=t||{}).position&&(e.position=this.surface.getPosition()),t.color&&(e.color=this.surface.getColor(this.getColorParams())),t.index&&(e.index=this.surface.getIndex()),t.normal&&(e.normal=this.surface.getNormal()),this.bufferList.forEach((function(t){t.setAttributes(e)}))}setParameters(t,e,i){return t&&void 0!==t.isolevelType&&this.volume&&(\"value\"===this.isolevelType&&\"sigma\"===t.isolevelType?this.isolevel=this.volume.getSigmaForValue(this.isolevel):\"sigma\"===this.isolevelType&&\"value\"===t.isolevelType&&(this.isolevel=this.volume.getValueForSigma(this.isolevel)),this.isolevelType=t.isolevelType),t&&t.boxCenter&&(this.boxCenter.copy(t.boxCenter),delete t.boxCenter),t&&t.wireframe&&(t.contour||void 0===t.contour&&this.contour)&&(t.wireframe=!1),super.setParameters(t,e,i),t.matrix&&this.inverseMatrix.getInverse(t.matrix),this.volume&&this.volume.getBox(this.boxCenter,this.boxSize,this.box),t&&void 0!==t.colorVolume&&e&&(e.color=!0),this.surface&&(void 0!==t.isolevel||void 0!==t.negateIsolevel||void 0!==t.smooth||void 0!==t.wrap||void 0!==t.boxSize||this.boxSize>0&&!this.__box.equals(this.box))&&this.build({position:!0,color:!0,index:!0,normal:!this.contour}),this}getColorParams(){const t=super.getColorParams();return t.volume=this.colorVolume,t}dispose(){this.viewer.signals.ticked.remove(this.setBox,this),super.dispose()}}class Ko{static zoomScroll(t,e){t.trackballControls.zoom(e)}static clipNearScroll(t,e){const i=t.getParameters();t.setParameters({clipNear:i.clipNear+e/10})}static focusScroll(t,e){const i=t.getFocus(),r=Math.sign(e)*function(t,e,i){if(t>e)return t;const r=t/e;return((2*i-e)*r+(2*e-3*i))*r*r+i}((100-i)/10,5,.2);t.setFocus(i+r)}static zoomFocusScroll(t,e){t.trackballControls.zoom(e);const i=t.viewer.camera.position.z;t.setFocus(100-Math.abs(i/8))}static isolevelScroll(t,e){const i=Math.sign(e)/10;t.eachRepresentation(((t,e)=>{if(t.repr instanceof Yo){const e=t.getParameters();e.isolevelScroll&&t.setParameters({isolevel:e.isolevel+i})}}))}static panDrag(t,e,i){t.trackballControls.pan(e,i)}static rotateDrag(t,e,i){t.trackballControls.rotate(e,i)}static zRotateDrag(t,e,i){t.trackballControls.zRotate(e,i)}static zoomDrag(t,e,i){t.trackballControls.zoom((e+i)/-2)}static zoomFocusDrag(t,e,i){t.trackballControls.zoom((e+i)/-2);const r=t.viewer.camera.position.z;t.setFocus(100-Math.abs(r/8))}static panComponentDrag(t,e,i){t.trackballControls.panComponent(e,i)}static panAtomDrag(t,e,i){t.trackballControls.panAtom(e,i)}static rotateComponentDrag(t,e,i){t.trackballControls.rotateComponent(e,i)}static movePick(t,e){e&&t.animationControls.move(e.position.clone())}static tooltipPick(t,e){const i=t.tooltip;if(t.getParameters().tooltip&&e){const t=e.mouse.position;i.innerText=e.getLabel(),i.style.bottom=window.innerHeight-t.y+3+\"px\",i.style.left=t.x+3+\"px\",i.style.display=\"block\"}else i.style.display=\"none\"}static measurePick(t,e){if(e&&(e.atom||e.bond)){const t=e.atom||e.closestBondAtom;e.component.measurePick(t)}else t.measureClear()}}const Zo={default:[[\"scroll\",Ko.zoomScroll],[\"scroll-shift\",Ko.focusScroll],[\"scroll-ctrl\",Ko.isolevelScroll],[\"scroll-shift-ctrl\",Ko.zoomFocusScroll],[\"drag-left\",Ko.rotateDrag],[\"drag-right\",Ko.panDrag],[\"drag-ctrl-left\",Ko.panDrag],[\"drag-ctrl-right\",Ko.zRotateDrag],[\"drag-shift-left\",Ko.zoomDrag],[\"drag-middle\",Ko.zoomFocusDrag],[\"drag-ctrl-shift-right\",Ko.panComponentDrag],[\"drag-ctrl-shift-left\",Ko.rotateComponentDrag],[\"clickPick-right\",Ko.measurePick],[\"clickPick-ctrl-left\",Ko.measurePick],[\"clickPick-middle\",Ko.movePick],[\"clickPick-left\",Ko.movePick],[\"hoverPick\",Ko.tooltipPick]],pymol:[[\"drag-left\",Ko.rotateDrag],[\"drag-middle\",Ko.panDrag],[\"drag-right\",Ko.zoomDrag],[\"scroll\",Ko.focusScroll],[\"drag-shift-right\",Ko.focusScroll],[\"clickPick-ctrl+shift-middle\",Ko.movePick],[\"hoverPick\",Ko.tooltipPick]],coot:[[\"scroll\",Ko.isolevelScroll],[\"drag-left\",Ko.rotateDrag],[\"drag-middle\",Ko.panDrag],[\"drag-ctrl-left\",Ko.panDrag],[\"drag-right\",Ko.zoomFocusDrag],[\"drag-ctrl-right\",Ko.focusScroll],[\"clickPick-middle\",Ko.movePick],[\"hoverPick\",Ko.tooltipPick]],astexviewer:[[\"drag-left\",Ko.rotateDrag],[\"drag-ctrl-left\",Ko.panDrag],[\"drag-shift-left\",Ko.zoomDrag],[\"scroll\",Ko.focusScroll],[\"clickPick-middle\",Ko.movePick],[\"hoverPick\",Ko.tooltipPick]]};function Qo(t){const e=t.split(/[-+]/);let i=\"\";e.includes(\"scroll\")&&(i=\"scroll\"),e.includes(\"drag\")&&(i=\"drag\"),e.includes(\"click\")&&(i=\"click\"),e.includes(\"doubleClick\")&&(i=\"doubleClick\"),e.includes(\"hover\")&&(i=\"hover\"),e.includes(\"clickPick\")&&(i=\"clickPick\"),e.includes(\"hoverPick\")&&(i=\"hoverPick\");let r=0;e.includes(\"alt\")&&(r+=1),e.includes(\"ctrl\")&&(r+=2),e.includes(\"meta\")&&(r+=4),e.includes(\"shift\")&&(r+=8);let s=0;return e.includes(\"left\")&&(s+=1),e.includes(\"right\")&&(s+=2),e.includes(\"middle\")&&(s+=4),[i,r,s]}class Jo{constructor(t,e={}){this.stage=t,this.actionList=[],this.mouse=t.mouseObserver,this.disabled=e.disabled||!1,this.preset(e.preset||\"default\")}run(t,...e){if(this.disabled)return;const i=this.mouse.key||0,r=this.mouse.buttons||0;this.actionList.forEach((s=>{s.type===t&&s.key===i&&s.button===r&&s.callback(this.stage,...e)}))}add(t,e){const[i,r,s]=Qo(t);this.actionList.push({type:i,key:r,button:s,callback:e})}remove(t,e){const i=t.includes(\"*\"),[r,s,n]=Qo(t),o=this.actionList.filter((function(t){return!((t.type===r||i&&\"\"===r)&&(t.key===s||i&&0===s)&&(t.button===n||i&&0===n)&&(t.callback===e||void 0===e))}));this.actionList=o}preset(t){this.clear();(Zo[t]||[]).forEach((t=>this.add(t[0],t[1])))}clear(){this.actionList.length=0}}class ta{static autoView(t){t.autoView(1e3)}static toggleAnimations(t){t.animationControls.toggle()}static toggleRock(t){t.toggleRock()}static toggleSpin(t){t.toggleSpin()}static toggleAntialiasing(t){const e=t.getParameters();t.setParameters({sampleLevel:-1===e.sampleLevel?0:-1})}}const ea={default:[[\"i\",ta.toggleSpin],[\"k\",ta.toggleRock],[\"p\",ta.toggleAnimations],[\"a\",ta.toggleAntialiasing],[\"r\",ta.autoView]]};class ia{constructor(t,e={}){this.stage=t,this.actionList=[],this.disabled=e.disabled||!1,this.preset(e.preset||\"default\")}run(t){this.disabled||this.actionList.forEach((e=>{e.key===t&&e.callback(this.stage)}))}add(t,e){this.actionList.push({key:t,callback:e})}remove(t,e){const i=this.actionList.filter((function(i){return!(i.key===t&&(i.callback===e||void 0===e))}));this.actionList=i}preset(t){this.clear();(ea[t]||[]).forEach((t=>this.add(t[0],t[1])))}clear(){this.actionList.length=0}}class ra{constructor(t){this.stage=t,this.stage=t,this.mouse=t.mouseObserver,this.controls=t.mouseControls,this.mouse.signals.clicked.add(this._onClick,this),this.mouse.signals.hovered.add(this._onHover,this)}_onClick(t,e){const i=this.stage.pickingControls.pick(t,e);this.stage.signals.clicked.dispatch(i),this.controls.run(\"clickPick\",i)}_onHover(t,e){const i=this.stage.pickingControls.pick(t,e);i&&this.mouse.down.equals(this.mouse.position)&&(this.stage.transformComponent=i.component,this.stage.transformAtom=i.atom),this.stage.signals.hovered.dispatch(i),this.controls.run(\"hoverPick\",i)}dispose(){this.mouse.signals.clicked.remove(this._onClick,this),this.mouse.signals.hovered.remove(this._onHover,this)}}class sa{constructor(t){this.stage=t,this.stage=t,this.mouse=t.mouseObserver,this.controls=t.mouseControls,this.mouse.signals.moved.add(this._onMove,this),this.mouse.signals.scrolled.add(this._onScroll,this),this.mouse.signals.dragged.add(this._onDrag,this),this.mouse.signals.clicked.add(this._onClick,this),this.mouse.signals.hovered.add(this._onHover,this),this.mouse.signals.doubleClicked.add(this._onDblclick,this)}_onMove(){this.stage.tooltip.style.display=\"none\"}_onScroll(t){this.controls.run(\"scroll\",t)}_onDrag(t,e){this.controls.run(\"drag\",t,e)}_onClick(t,e){this.controls.run(\"click\",t,e)}_onDblclick(t,e){this.controls.run(\"doubleClick\",t,e)}_onHover(t,e){this.controls.run(\"hover\",t,e)}dispose(){this.mouse.signals.moved.remove(this._onMove,this),this.mouse.signals.scrolled.remove(this._onScroll,this),this.mouse.signals.dragged.remove(this._onDrag,this),this.mouse.signals.clicked.remove(this._onClick,this),this.mouse.signals.hovered.remove(this._onHover,this)}}class na{constructor(t){this.stage=t,this.viewer=t.viewer,this.animationControls=t.animationControls,this.viewer.signals.ticked.add(this._onTick,this)}_onTick(t){this.animationControls.run(t)}dispose(){this.viewer.signals.ticked.remove(this._onTick,this)}}const oa=!!_e&&{passive:!0};class aa{constructor(t){this.stage=t,this.stage=t,this.controls=t.keyControls,this.domElement=t.viewer.renderer.domElement,this.domElement.setAttribute(\"tabIndex\",\"-1\"),this.domElement.style.outline=\"none\",this._focusDomElement=this._focusDomElement.bind(this),this._onKeydown=this._onKeydown.bind(this),this._onKeyup=this._onKeyup.bind(this),this._onKeypress=this._onKeypress.bind(this),this.domElement.addEventListener(\"mousedown\",this._focusDomElement),this.domElement.addEventListener(\"touchstart\",this._focusDomElement,oa),this.domElement.addEventListener(\"keydown\",this._onKeydown),this.domElement.addEventListener(\"keyup\",this._onKeyup),this.domElement.addEventListener(\"keypress\",this._onKeypress)}_onKeydown(){}_onKeyup(){}_onKeypress(t){let e;e=\"key\"in KeyboardEvent.prototype?t.key:String.fromCharCode(t.which||t.keyCode),this.controls.run(e)}_focusDomElement(){this.domElement.focus()}dispose(){this.domElement.removeEventListener(\"mousedown\",this._focusDomElement),this.domElement.removeEventListener(\"touchstart\",this._focusDomElement,oa),this.domElement.removeEventListener(\"keydown\",this._onKeypress),this.domElement.removeEventListener(\"keyup\",this._onKeypress),this.domElement.removeEventListener(\"keypress\",this._onKeypress)}}class ca{constructor(i,r,s,n={}){this.component=i,this.position=r,this.offsetX=st(n.offsetX,0),this.offsetY=st(n.offsetY,0),this.visible=st(n.visible,!0),this.stage=i.stage,this.viewer=i.stage.viewer,this._viewerPosition=new e,this._updateViewerPosition(),this._canvasPosition=new t,this._cameraPosition=new e,this.element=document.createElement(\"div\"),Object.assign(this.element.style,{display:\"block\",position:\"absolute\",pointerEvents:\"none\",whiteSpace:\"nowrap\",left:\"-10000px\"}),this.viewer.wrapper.appendChild(this.element),this.setContent(s),this.updateVisibility(),this.viewer.signals.rendered.add(this._update,this),this.component.signals.matrixChanged.add(this._updateViewerPosition,this)}setContent(t){const e=this.element.style.display;if(\"none\"===e&&(this.element.style.left=\"-10000px\",this.element.style.display=\"block\"),t instanceof HTMLElement)this.element.appendChild(t);else{const e=document.createElement(\"div\");e.innerText=t,Object.assign(e.style,{backgroundColor:\"rgba( 0, 0, 0, 0.6 )\",color:\"lightgrey\",padding:\"8px\",fontFamily:\"sans-serif\"}),this.element.appendChild(e)}this._clientRect=this.element.getBoundingClientRect(),\"none\"===e&&(this.element.style.display=e)}setVisibility(t){this.visible=t,this.updateVisibility()}getVisibility(){return this.visible&&this.component.parameters.visible}updateVisibility(){this.element.style.display=this.getVisibility()?\"block\":\"none\"}_updateViewerPosition(){this._viewerPosition.copy(this.position).applyMatrix4(this.component.matrix)}_update(){if(!this.getVisibility())return;const t=this.element.style,e=this._canvasPosition,i=this._viewerPosition,r=this._clientRect;if(this._cameraPosition.copy(i).add(this.viewer.translationGroup.position).applyMatrix4(this.viewer.rotationGroup.matrix).sub(this.viewer.camera.position),this._cameraPosition.z<0)return void(t.display=\"none\");t.display=\"block\";const s=this._cameraPosition.length(),n=this.viewer.scene.fog;t.opacity=(1-Rt(n.near,n.far,s)).toString(),t.zIndex=Math.round(100*(n.far-s)).toString(),this.stage.viewerControls.getPositionOnCanvas(i,e),t.bottom=this.offsetX+e.y+r.height/2+\"px\",t.left=this.offsetY+e.x-r.width/2+\"px\"}dispose(){this.viewer.wrapper.removeChild(this.element),this.viewer.signals.ticked.remove(this._update,this),this.component.signals.matrixChanged.remove(this._updateViewerPosition,this)}}const la=new i,ha=new e,da=new r;class ua{constructor(t){this.component=t,this.signals={changed:new tt.Signal},this.stage=t.stage,this.viewer=t.stage.viewer}get position(){return this.component.position}get rotation(){return this.component.quaternion}changed(){this.component.updateMatrix(),this.viewer.requestRender(),this.signals.changed.dispatch()}spin(t,e){la.getInverse(this.viewer.rotationGroup.matrix),ha.copy(At(t)).applyMatrix4(la),la.extractRotation(this.component.transform),la.premultiply(this.viewer.rotationGroup.matrix),la.getInverse(la),ha.copy(At(t)),ha.applyMatrix4(la),la.makeRotationAxis(ha,e),da.setFromRotationMatrix(la),this.component.quaternion.premultiply(da),this.changed()}}const ma={\"\":\"\",vdw:\"by vdW radius\",covalent:\"by covalent radius\",sstruc:\"by secondary structure\",bfactor:\"by bfactor\",size:\"size\",data:\"data\",explicit:\"explicit\"};class pa{constructor(t={}){this.max=10,this.type=st(t.type,\"size\"),this.scale=st(t.scale,1),this.size=st(t.size,1),this.data=st(t.data,{})}atomRadius(t){let e;switch(this.type){case\"vdw\":e=t.vdw;break;case\"covalent\":e=t.covalent;break;case\"bfactor\":e=t.bfactor||1;break;case\"sstruc\":const i=t.sstruc;e=\"h\"===i||\"g\"===i||\"i\"===i||\"e\"===i||\"b\"===i?.25:un.includes(t.atomname)?.4:.1;break;case\"data\":e=st(this.data[t.index],1);break;case\"explicit\":e=t.radius,null===e&&(e=this.size);break;default:e=this.size}return Math.min(e*this.scale,this.max)}}pa.types=ma;const fa=new e(-1,-1,-1),ga=new i;class ya{constructor(t){const i=t.rows,r=i/3,s=new ho(i,3),n=new ho(3,3),o=new ho(1,3),a=new ho(3,3),c=new ho(3,3),l=fo(t);go(t,l),uo(s,t),mo(n,s,s),wo(n,o,a,c);const h=new e(l[0],l[1],l[2]),d=new e(a.data[0],a.data[3],a.data[6]),u=new e(a.data[1],a.data[4],a.data[7]),m=new e(a.data[2],a.data[5],a.data[8]),p=d.clone().multiplyScalar(Math.sqrt(o.data[0]/r)),f=u.clone().multiplyScalar(Math.sqrt(o.data[1]/r)),g=m.clone().multiplyScalar(Math.sqrt(o.data[2]/r));this.begA=h.clone().sub(p),this.endA=h.clone().add(p),this.begB=h.clone().sub(f),this.endB=h.clone().add(f),this.begC=h.clone().sub(g),this.endC=h.clone().add(g),this.center=h,this.vecA=p,this.vecB=f,this.vecC=g,this.normVecA=d,this.normVecB=u,this.normVecC=m}getBasisMatrix(t=new i){const e=t;return e.makeBasis(this.normVecB,this.normVecA,this.normVecC),e.determinant()<0&&e.scale(fa),e}getRotationQuaternion(t=new r){const e=t;return e.setFromRotationMatrix(this.getBasisMatrix(ga)),e.inverse()}getProjectedScaleForAtoms(t){let i=-1/0,r=-1/0,s=-1/0,n=-1/0,o=-1/0,a=-1/0;const c=new e,l=new e,h=this.center,d=this.normVecA,u=this.normVecB,m=this.normVecC;return t.eachAtom((function(t){jr(c.copy(t),d,h);const e=l.subVectors(c,h).normalize().dot(d),p=c.distanceTo(h);e>0?p>i&&(i=p):p>r&&(r=p),jr(c.copy(t),u,h);const f=l.subVectors(c,h).normalize().dot(u),g=c.distanceTo(h);f>0?g>s&&(s=g):g>n&&(n=g),jr(c.copy(t),m,h);const y=l.subVectors(c,h).normalize().dot(m),b=c.distanceTo(h);y>0?b>o&&(o=b):b>a&&(a=b)})),{d1a:i,d2a:s,d3a:o,d1b:-r,d2b:-n,d3b:-a}}}class ba{constructor(t,e,i,r){this.volume=t,this.setFilter(e,i,r)}get header(){return this.volume.header}get matrix(){return this.volume.matrix}get normalMatrix(){return this.volume.normalMatrix}get inverseMatrix(){return this.volume.inverseMatrix}get center(){return this.volume.center}get boundingBox(){return this.volume.boundingBox}get min(){return this.volume.min}get max(){return this.volume.max}get mean(){return this.volume.mean}get rms(){return this.volume.rms}_getFilterHash(t,e,i){return JSON.stringify([t,e,i])}setFilter(t,e,i){isNaN(t)&&this.header&&(t=this.header.DMEAN+2*this.header.ARMS),t=void 0===t||isNaN(t)?-1/0:t,e=st(e,1/0),i=st(i,!1);const r=this.volume.data,s=this.volume.position,n=this.volume.atomindex,o=this._getFilterHash(t,e,i);if(o!==this._filterHash){if(t===-1/0&&e===1/0)this.data=r,this.position=s,this.atomindex=n;else{const o=r.length;this._dataBuffer||(this._dataBuffer=new ArrayBuffer(4*o),this._positionBuffer=new ArrayBuffer(3*o*4),n&&(this._atomindexBuffer=new ArrayBuffer(4*o)));const a=new Float32Array(this._dataBuffer),c=new Float32Array(this._positionBuffer);let l;n&&(l=new Uint32Array(this._atomindexBuffer));let h=0;for(let d=0;d=t&&u<=e||i&&(ue)){const t=3*h;a[h]=u,c[t+0]=s[o+0],c[t+1]=s[o+1],c[t+2]=s[o+2],n&&l&&(l[h]=n[d]),h+=1}}this.data=new Float32Array(this._dataBuffer,0,h),this.position=new Float32Array(this._positionBuffer,0,3*h),n&&(this.atomindex=new Int32Array(this._atomindexBuffer,0,h))}this._filterHash=o}}}ba.prototype.getValueForSigma=Eo.prototype.getValueForSigma,ba.prototype.getSigmaForValue=Eo.prototype.getSigmaForValue,ba.prototype.getDataAtomindex=Eo.prototype.getDataAtomindex,ba.prototype.getDataPosition=Eo.prototype.getDataPosition,ba.prototype.getDataColor=Eo.prototype.getDataColor,ba.prototype.getDataPicking=Eo.prototype.getDataPicking,ba.prototype.getDataSize=Eo.prototype.getDataSize;class xa{constructor(t,e){const i=Rs({nodeArray1:t.atomIndex1,nodeArray2:t.atomIndex2,edgeCount:t.count,nodeCount:e});this.countArray=i.countArray,this.offsetArray=i.offsetArray,this.indexArray=i.indexArray}}class va extends Bs{get _defaultFields(){return[[\"atomIndex1\",1,\"int32\"],[\"atomIndex2\",1,\"int32\"],[\"bondOrder\",1,\"int8\"]]}addBond(t,e,i){this.growIfFull();const r=this.count,s=t.index,n=e.index;s0&&(a[e]=v.angleTo(w));const r=Math.cos(f.angleTo(g));h[e]=180/Math.PI*Math.acos(r);const s=f.length(),x=g.length();c[e]=Math.sqrt(x*s)/Math.max(2,2*(1-r)),l[e]=Math.abs(m.dot(v)),y.copy(f).multiplyScalar(c[e]/s),b.copy(g).multiplyScalar(c[e]/x),y.subVectors(P,y),b.subVectors(I,b),y.toArray(n,i+3),b.toArray(n,i+6),A.subVectors(C,_),A.toArray(d,i),w.copy(v),_.copy(y)}y.fromArray(n,3),b.fromArray(n,6),v.subVectors(y,b).normalize(),C.index=t.getAtomIndexByType(0,S),_.copy(C),x.copy(C),jr(x,v,y),x.toArray(n,0),A.subVectors(_,y),A.toArray(d,0),y.fromArray(n,3*r-6),b.fromArray(n,3*r-9),v.subVectors(y,b).normalize(),C.index=t.getAtomIndexByType(r-1,S),_.copy(C),x.copy(C),jr(x,v,y),x.toArray(n,3*r-3);for(let e=r-3;ei||h.bending[e]>t)&&(E=!0)),E){if(e-p<4){p=e,E=!1;continue}$.index=B.traceAtomIndex,I=h.axis.subarray(3*p+3,3*e),k=h.center.subarray(3*p,3*e+3),C=Ur(I).normalize(),P=Ur(k),M.fromArray(k),jr(M,C,P),T.fromArray(k,k.length-3),jr(T,C,P),C.subVectors(T,M),C.toArray(g,f),P.toArray(y,f),M.toArray(b,f),T.toArray(x,f),u.atomColorToArray($,v,f),w.push($.index),A.push(m.atomRadius($)),_.push(l+p),S.push(l+e+1-p),f+=3,p=e,E=!1}const F=new Float32Array(w);return{axis:new Float32Array(g),center:new Float32Array(y),begin:new Float32Array(b),end:new Float32Array(x),color:new Float32Array(v),picking:new Yn(F,a),size:new Float32Array(A),residueOffset:_,residueCount:S}}}class Ia{constructor(t){this.scoreFunction=t,this.content=[],this.scoreFunction=t}push(t){this.content.push(t),this.bubbleUp(this.content.length-1)}pop(){const t=this.content[0],e=this.content.pop();return e&&this.content.length>0&&(this.content[0]=e,this.sinkDown(0)),t}peek(){return this.content[0]}remove(t){const e=this.content.length;for(let i=0;i0;){const i=Math.floor((t+1)/2)-1,r=this.content[i];if(!(this.scoreFunction(e), 2016\n * @author Roman Bolzern , 2013\n * @author I4DS http://www.fhnw.ch/i4ds, 2013\n * @license MIT License \n * @description\n * k-d Tree for typed arrays of 3d points (e.g. for Float32Array), in-place\n * provides fast nearest neighbour search\n *\n * Based on https://github.com/ubilabs/kd-tree-javascript by Ubilabs\n *\n * Further information (including mathematical properties)\n * http://en.wikipedia.org/wiki/Binary_tree\n * http://en.wikipedia.org/wiki/K-d_tree\n *\n * @example\n * points: [x, y, z, x, y, z, x, y, z, ...]\n * metric: function(a, b){\n * return Math.pow(a[0]-b[0], 2) + Math.pow(a[1]-b[1], 2) + Math.pow(a[2]-b[2], 2);\n * }\n *\n * @param {Float32Array} points - points\n * @param {Function} metric - metric\n */class ka{constructor(t,e){this.points=t,this.metric=e,this.maxDepth=0,this.currentNode=0;const i=t.length/3,r=new Uint32Array(i);for(let t=0;tthis.maxDepth&&(this.maxDepth=t);const s=r-i;if(0===s)return-1;const n=4*this.currentNode,o=this.nodes;if(this.currentNode+=1,1===s)return o[n]=i,o[n+1]=-1,o[n+2]=-1,o[n+3]=e,n;const a=this.indices,c=this.points,l=i+Math.floor(s/2),h=t%3;let d,u,m,p,f,g=i,y=r-1;for(;y>g;){for(m=g+y>>1,p=c[3*a[m]+h],u=a[m],a[m]=a[y],a[y]=u,f=g,d=g;d-t[1])),s=this.nodes,n=this.points,o=this.indices,a=c=>{let l,h;const d=this.getNodeDepth(c)%3,u=3*o[s[c]],m=[n[u+0],n[u+1],n[u+2]],p=this.metric(t,m);function f(t,i){r.push([t,i]),r.size()>e&&r.pop()}const g=s[c+1],y=s[c+2];if(-1===y&&-1===g)return void((r.size()n[3*o[s[t]]+r])throw new Error(\"left child is > parent!\");i+=this.verify(a,e+1)}if(-1!==c){if(n[3*o[s[c]]+r]0}isBackbone(){const t=this.residueType.backboneIndexList;return t.length>0&&t.includes(this.index-this.residueAtomOffset)}isPolymer(){if(this.structure.entityList.length>0)return this.entity.isPolymer();{const t=this.residueType.moleculeType;return 3===t||4===t||5===t}}isSidechain(){return this.isPolymer()&&!this.isBackbone()}isCg(){const t=this.residueType.backboneType;return 4===t||5===t||6===t}isTrace(){return this.index===this.residueType.traceAtomIndex+this.residueAtomOffset}isHetero(){return 1===this.residueType.hetero}isProtein(){return 3===this.residueType.moleculeType}isNucleic(){const t=this.residueType.moleculeType;return 4===t||5===t}isRna(){return 4===this.residueType.moleculeType}isDna(){return 5===this.residueType.moleculeType}isWater(){return 1===this.residueType.moleculeType}isIon(){return 2===this.residueType.moleculeType}isSaccharide(){return 6===this.residueType.moleculeType}isHelix(){return Hs.includes(this.sstruc)}isSheet(){return Ws.includes(this.sstruc)}isTurn(){return qs.includes(this.sstruc)&&this.isProtein()}isBonded(){return 0!==this.bondHash.countArray[this.index]}isRing(){return void 0!==this.residueType.getRings().atomRings[this.index-this.residueAtomOffset]}isAromatic(){return 1===this.aromatic}isPolarHydrogen(){let t=!1;return 1!==this.number||(t=!this.hasBondToElement(6)),t}isMetal(){return this.atomType.isMetal()}isNonmetal(){return this.atomType.isNonmetal()}isMetalloid(){return this.atomType.isMetalloid()}isHalogen(){return this.atomType.isHalogen()}isDiatomicNonmetal(){return this.atomType.isDiatomicNonmetal()}isPolyatomicNonmetal(){return this.atomType.isPolyatomicNonmetal()}isAlkaliMetal(){return this.atomType.isAlkaliMetal()}isAlkalineEarthMetal(){return this.atomType.isAlkalineEarthMetal()}isNobleGas(){return this.atomType.isNobleGas()}isTransitionMetal(){return this.atomType.isTransitionMetal()}isPostTransitionMetal(){return this.atomType.isPostTransitionMetal()}isLanthanide(){return this.atomType.isLanthanide()}isActinide(){return this.atomType.isActinide()}getDefaultValence(){return this.atomType.getDefaultValence()}getValenceList(){return this.atomType.getValenceList()}getOuterShellElectronCount(){return this.atomType.getOuterShellElectronCount()}distanceTo(t){const e=this.atomStore,i=t.atomStore,r=this.index,s=t.index,n=e.x[r]-i.x[s],o=e.y[r]-i.y[s],a=e.z[r]-i.z[s],c=n*n+o*o+a*a;return Math.sqrt(c)}connectedTo(t){const e=this.atomStore,i=t.atomStore,r=this.index,s=t.index;if(e.altloc&&i.altloc){const t=e.altloc[r],n=i.altloc[s];if(0!==t&&0!==n&&32!==t&&32!==n&&t!==n)return!1}const n=e.x[r]-i.x[s],o=e.y[r]-i.y[s],a=e.z[r]-i.z[s],c=n*n+o*o+a*a;if(c<48&&this.isCg())return!0;if(isNaN(c))return!1;const l=this.covalent+t.covalent,h=l+.3,d=l-.5;return cd*d}positionFromArray(t,e=0){return this.x=t[e+0],this.y=t[e+1],this.z=t[e+2],this}positionToArray(t=[],e=0){const i=this.index,r=this.atomStore;return t[e+0]=r.x[i],t[e+1]=r.y[i],t[e+2]=r.z[i],t}positionToVector3(t){return void 0===t&&(t=new e),t.x=this.x,t.y=this.y,t.z=this.z,t}positionFromVector3(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}positionAdd(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this}positionSub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}getResidueBonds(t=!1){const e=this.residueAtomOffset,i=this.index-this.residueAtomOffset,r=this.residueType.getBonds(),s=r.atomIndices1,n=r.atomIndices2;let o,a,c,l;for(t||(l=[]),o=s.indexOf(i);-1!==o;){if(c=n[o]+e,!l)return c;l.push(c),o=s.indexOf(i,o+1)}for(a=n.indexOf(i);-1!==a;){if(c=s[a]+e,!l)return c;l.push(c),a=n.indexOf(i,a+1)}return l}qualifiedName(t=!1){var e=\"\";return this.resname&&!t&&(e+=\"[\"+this.resname+\"]\"),void 0!==this.resno&&(e+=this.resno),this.inscode&&(e+=\"^\"+this.inscode),this.chainname&&(e+=\":\"+this.chainname),this.atomname&&(e+=\".\"+this.atomname),this.altloc&&(e+=\"%\"+this.altloc),this.structure.modelStore.count>1&&(e+=\"/\"+this.modelIndex),e}clone(){return new Ma(this.structure,this.index)}toObject(){return{index:this.index,residueIndex:this.residueIndex,resname:this.resname,x:this.x,y:this.y,z:this.z,element:this.element,chainname:this.chainname,resno:this.resno,serial:this.serial,vdw:this.vdw,covalent:this.covalent,hetero:this.hetero,bfactor:this.bfactor,altloc:this.altloc,atomname:this.atomname,modelIndex:this.modelIndex}}}function Ta(t,e){const i=t[0]-e[0],r=t[1]-e[1],s=t[2]-e[2];return i*i+r*r+s*s}function Ba(t,e){return Math.sqrt(Ta(t,e))}const Da=new Float32Array(3);class $a{constructor(t,e=!1){De&&Me.time(\"Kdtree build\");const i=e?Ta:Ba,r=new Float32Array(3*t.atomCount),s=new Uint32Array(t.atomCount);let n=0;t.eachAtom((function(t){r[n+0]=t.x,r[n+1]=t.y,r[n+2]=t.z,s[n/3]=t.index,n+=3})),this.atomIndices=s,this.points=r,this.kdtree=new ka(r,i),De&&Me.timeEnd(\"Kdtree build\")}nearest(t,i,r){t instanceof e?t.toArray(Da):t instanceof Ma&&t.positionToArray(Da);const s=this.kdtree.nearest(Da,i,r),n=this.kdtree.indices,o=this.kdtree.nodes,a=this.atomIndices,c=[];for(let t=0,e=s.length;t\":\"3/4-Z\",\"?\":\"X-Y\",\"@\":\"Y-X\",A:\"Z+1/3\",B:\"Z+2/3\",C:\"X+2/3\",D:\"Y+1/3\",E:\"-Y+2/3\",F:\"X-Y+1/3\",G:\"Y-X+2/3\",H:\"-X+1/3\",I:\"X+1/3\",J:\"Y+2/3\",K:\"-Y+1/3\",L:\"X-Y+2/3\",M:\"Y-X+1/3\",N:\"-X+2/3\",O:\"2/3+X\",P:\"1/3+Y\",Q:\"1/3+Z\",R:\"2/3-Y\",S:\"1/3+X-Y\",T:\"2/3+Y-X\",U:\"1/3-X\",V:\"2/3-X\",W:\"1/3-Y\",X:\"1/3-Z\",Y:\"2/3+Y\",Z:\"1/3+Y-X\",\"[\":\"2/3+X-Y\",\"]\":\"1/3+X\",\"^\":\"2/3+Z\",_:\"2/3-Z\",\"`\":\"5/6+Z\",a:\"1/6+Z\",b:\"5/6-Z\",c:\"1/6-Z\",d:\"Z+5/6\",e:\"Z+1/6\",f:\"Z+1/4\",g:\"+Y\"},Ra={\"P 1\":\" !#\",\"P -1\":\" !#$%&\",\"P 1 2 1\":\" !#$!&\",\"P 1 21 1\":\" !#$'&\",\"C 1 2 1\":\" !#$!&()#*)&\",\"P 1 m 1\":\" !# %#\",\"P 1 c 1\":\" !# %+\",\"C 1 m 1\":\" !# %#()#(,#\",\"C 1 c 1\":\" !# %+()#(,+\",\"P 1 2/m 1\":\" !# %#$!&$%&\",\"P 1 21/m 1\":\" !#$)&$%& ,#\",\"C 1 2/m 1\":\" !# %#$!&$%&()#(,#*)&*,&\",\"P 1 2/c 1\":\" !#$!-$%& %+\",\"P 1 21/c 1\":\" !#$%&$)- ,+\",\"C 1 2/c 1\":\" !#$!-$%& %+()#*)-*,&(,+\",\"P 2 2 2\":\" !#$%#$!& %&\",\"P 2 2 21\":\" !#$%+$!- %&\",\"P 21 21 2\":\" !#$%#*)&(,&\",\"P 21 21 21\":\" !#*%+$)-(,&\",\"C 2 2 21\":\" !#$%+$!- %&()#*,+*)-(,&\",\"C 2 2 2\":\" !#$%#$!& %&()#*,#*)&(,&\",\"F 2 2 2\":\" !#$%#$!& %& )+$,+$)- ,-(!+*%+*!-(%-()#*,#*)&(,&\",\"I 2 2 2\":\" !#$%# %&$!&.'/01/.120'2\",\"I 21 21 21\":\" !#*%+$)-(,&()+$,#*!& %-\",\"P m m 2\":\" !#$%# %#$!#\",\"P m c 21\":\" !#$%+ %+$!#\",\"P c c 2\":\" !#$%# %+$!+\",\"P m a 2\":\" !#$%#(%#*!#\",\"P c a 21\":\" !#$%+(%#*!+\",\"P n c 2\":\" !#$%# ,+$)+\",\"P m n 21\":\" !#*%+(%+$!#\",\"P b a 2\":\" !#$%#(,#*)#\",\"P n a 21\":\" !#$%+(,#*)+\",\"P n n 2\":\" !#$%#(,+*)+\",\"C m m 2\":\" !#$%# %#$!#()#*,#(,#*)#\",\"C m c 21\":\" !#$%+ %+$!#()#*,+(,+*)#\",\"C c c 2\":\" !#$%# %+$!+()#*,#(,+*)+\",\"A m m 2\":\" !#$%# %#$!# )+$,+ ,+$)+\",\"A b m 2\":\" !#$%# ,#$)# )+$,+ %+$!+\",\"A m a 2\":\" !#$%#(%#*!# )+$,+(,+*)+\",\"A b a 2\":\" !#$%#(,#*)# )+$,+(%+*!+\",\"F m m 2\":\" !#$%# %#$!# )+$,+ ,+$)+(!+*%+(%+*!+()#*,#(,#*)#\",\"F d d 2\":\" !#$%#345675 )+$,+3896:9(!+*%+;49<79()#*,#;85<:5\",\"I m m 2\":\" !#$%# %#$!#()+*,+(,+*)+\",\"I b a 2\":\" !#$%#(,#*)#()+*,+ %+$!+\",\"I m a 2\":\" !#$%#(%#*!#()+*,+ ,+$)+\",\"P 2/m 2/m 2/m\":\" !#$%#$!& %&$%& !& %#$!#\",\"P 2/n 2/n 2/n\":\" !#$%#$!& %&*,-()-(,+*)+\",\"P 2/c 2/c 2/m\":\" !#$%#$!- %-$%& !& %+$!+\",\"P 2/b 2/a 2/n\":\" !#$%#$!& %&*,&()&(,#*)#\",\"P 21/m 2/m 2/a\":\" !#*%#$!&(%&$%&(!& %#*!#\",\"P 2/n 21/n 2/a\":\" !#*%#*)- ,-$%&(!&(,+$)+\",\"P 2/m 2/n 21/a\":\" !#*%+*!- %&$%&(!-(%+$!#\",\"P 21/c 2/c 2/a\":\" !#*%#$!-(%-$%&(!& %+*!+\",\"P 21/b 21/a 2/m\":\" !#$%#*)&(,&$%& !&(,#*)#\",\"P 21/c 21/c 2/n\":\" !#*,#$)-(%-$%&()& ,+*!+\",\"P 2/b 21/c 21/m\":\" !#$%+$)- ,&$%& !- ,+$)#\",\"P 21/n 21/n 2/m\":\" !#$%#*)-(,-$%& !&(,+*)+\",\"P 21/m 21/m 2/n\":\" !#$%#*'&.,&*,&.'& %#$!#\",\"P 21/b 2/c 21/n\":\" !#*,+$!-(,&$%&()- %+*)#\",\"P 21/b 21/c 21/a\":\" !#*%+$)-(,&$%&(!- ,+*)#\",\"P 21/n 21/m 21/a\":\" !#0%/$'&.12$%&.!2 1#0'/\",\"C 2/m 2/c 21/m\":\" !#$%+$!- %&$%& !- %+$!#()#*,+*)-(,&*,&()-(,+*)#\",\"C 2/m 2/c 21/a\":\" !#$,+$)- %&$%& )- ,+$!#()#*%+*!-(,&*,&(!-(%+*)#\",\"C 2/m 2/m 2/m\":\" !#$%#$!& %&$%& !& %#$!#()#*,#*)&(,&*,&()&(,#*)#\",\"C 2/c 2/c 2/m\":\" !#$%#$!- %-$%& !& %+$!+()#*,#*)-(,-*,&()&(,+*)+\",\"C 2/m 2/m 2/a\":\" !#$,#$)& %&$%& )& ,#$!#()#*%#*!&(,&*,&(!&(%#*)#\",\"C 2/c 2/c 2/a\":\" !#*,#$!&(,&$,-(!- ,+*!+()#$%#*)& %&*%- )-(%+$)+\",\"F 2/m 2/m 2/m\":\" !#$%#$!& %&$%& !& %#$!# )+$,+$)- ,-$,- )- ,+$)+(!+*%+*!-(%-*%-(!-(%+*!+()#*,#*)&(,&*,&()&(,#*)#\",\"F 2/d 2/d 2/d\":\" !#$%#$!& %&64=37=345675 )+$,+$)- ,-68>3:>3896:9(!+*%+*!-(%-<4>;7>;49<79()#*,#*)&(,&<8=;:=;85<:5\",\"I 2/m 2/m 2/m\":\" !#$%#$!& %&$%& !& %#$!#()+*,+*)-(,-*,-()-(,+*)+\",\"I 2/b 2/a 2/m\":\" !#$%#*)&(,&$%& !&(,#*)#()+*,+$!- %-*,-()- %+$!+\",\"I 21/b 21/c 21/a\":\" !#*%+$)-(,&$%&(!- ,+*)#()+$,#*!& %-*,- )&(%#$!+\",\"I 21/m 21/m 21/a\":\" !#$,#$)& %&$%& )& ,#$!#()+*%+*!-(,-*,-(!-(%+*)+\",\"P 4\":\" !#$%#% #!$#\",\"P 41\":\" !#$%+% 5!$9\",\"P 42\":\" !#$%#% +!$+\",\"P 43\":\" !#$%+% 9!$5\",\"I 4\":\" !#$%#% #!$#()+*,+,(+)*+\",\"I 41\":\" !#*,+%(5)$9()+$%#, 9!*5\",\"P -4\":\" !#$%#!$&% &\",\"I -4\":\" !#$%#!$&% &()+*,+)*-,(-\",\"P 4/m\":\" !#$%#% #!$#$%& !&!$&% &\",\"P 42/m\":\" !#$%#% +!$+$%& !&!$-% -\",\"P 4/n\":\" !#$%#,(#)*#*,&()&!$&% &\",\"P 42/n\":\" !#$%#,(+)*+*,-()-!$&% &\",\"I 4/m\":\" !#$%#% #!$#$%& !&!$&% &()+*,+,(+)*+*,-()-)*-,(-\",\"I 41/a\":\" !#*,+%(5)$9$,=(!>!$&,(-()+$%#, 9!*5*%> )=)*-% &\",\"P 4 2 2\":\" !#$%#% #!$#$!& %&! &%$&\",\"P 4 21 2\":\" !#$%#,(#)*#*)&(,&! &%$&\",\"P 41 2 2\":\" !#$%+% 5!$9$!& %-! >%$=\",\"P 41 21 2\":\" !#$%+,(5)*9*)=(,>! &%$-\",\"P 42 2 2\":\" !#$%#% +!$+$!& %&! -%$-\",\"P 42 21 2\":\" !#$%#,(+)*+*)-(,-! &%$&\",\"P 43 2 2\":\" !#$%+% 9!$5$!& %-! =%$>\",\"P 43 21 2\":\" !#$%+,(9)*5*)>(,=! &%$-\",\"I 4 2 2\":\" !#$%#% #!$#$!& %&! &%$&()+*,+,(+)*+*)-(,-)(-,*-\",\"I 41 2 2\":\" !#*,+%(5)$9*!> ,=)(-%$&()+$%#, 9!*5$)=(%>! &,*-\",\"P 4 m m\":\" !#$%#% #!$# %#$!#%$#! #\",\"P 4 b m\":\" !#$%#% #!$#(,#*)#,*#)(#\",\"P 42 c m\":\" !#$%#% +!$+ %+$!+%$#! #\",\"P 42 n m\":\" !#$%#,(+)*+(,+*)+%$#! #\",\"P 4 c c\":\" !#$%#% #!$# %+$!+%$+! +\",\"P 4 n c\":\" !#$%#% #!$#(,+*)+,*+)(+\",\"P 42 m c\":\" !#$%#% +!$+ %#$!#%$+! +\",\"P 42 b c\":\" !#$%#% +!$+(,#*)#,*+)(+\",\"I 4 m m\":\" !#$%#% #!$# %#$!#%$#! #()+*,+,(+)*+(,+*)+,*+)(+\",\"I 4 c m\":\" !#$%#% #!$# %+$!+%$+! +()+*,+,(+)*+(,#*)#,*#)(#\",\"I 41 m d\":\" !#*,+%(5)$9 %#*)+%*5) 9()+$%#, 9!*5(,+$!#,$9!(5\",\"I 41 c d\":\" !#*,+%(5)$9 %+*)#%*9) 5()+$%#, 9!*5(,#$!+,$5!(9\",\"P -4 2 m\":\" !#$%#% &!$&$!& %&%$#! #\",\"P -4 2 c\":\" !#$%#% &!$&$!- %-%$+! +\",\"P -4 21 m\":\" !#$%#% &!$&*)&(,&,*#)(#\",\"P -4 21 c\":\" !#$%#% &!$&*)-(,-,*+)(+\",\"P -4 m 2\":\" !#$%#!$&% & %#$!#! &%$&\",\"P -4 c 2\":\" !#$%#% &!$& %+$!+! -%$-\",\"P -4 b 2\":\" !#$%#% &!$&(,#*)#)(&,*&\",\"P -4 n 2\":\" !#$%#% &!$&(,+*)+)(-,*-\",\"I -4 m 2\":\" !#$%#% &!$& %#$!#! &%$&()+*,+,(-)*-(,+*)+)(-,*-\",\"I -4 c 2\":\" !#$%#% &!$& %+$!+! -%$-()+*,+,(-)*-(,#*)#)(&,*&\",\"I -4 2 m\":\" !#$%#% &!$&$!& %&%$#! #()+*,+,(-)*-*)-(,-,*+)(+\",\"I -4 2 d\":\" !#$%#% &!$&*!>(%>,$9) 9()+*,+,(-)*-$)= ,=%*5!(5\",\"P 4/m 2/m 2/m\":\" !#$%#% #!$#$!& %&! &%$&$%& !&!$&% & %#$!#%$#! #\",\"P 4/m 2/c 2/c\":\" !#$%#% #!$#$!- %-! -%$-$%& !&!$&% & %+$!+%$+! +\",\"P 4/n 2/b 2/m\":\" !#$%#% #!$#$!& %&! &%$&*,&()&)*&,(&(,#*)#,*#)(#\",\"P 4/n 2/n 2/c\":\" !#$%#% #!$#$!& %&! &%$&*,-()-)*-,(-(,+*)+,*+)(+\",\"P 4/m 21/b 2/m\":\" !#$%#% #!$#*)&(,&)(&,*&$%& !&!$&% &(,#*)#,*#)(#\",\"P 4/m 21/n 2/c\":\" !#$%#% #!$#*)-(,-)(-,*-$%& !&!$&% &(,+*)+,*+)(+\",\"P 4/n 21/m 2/m\":\" !#$%#,(#)*#*)&(,&! &%$&*,&()&!$&% & %#$!#,*#)(#\",\"P 4/n 2/c 2/c\":\" !#$%#,(#)*#*)-(,-! -%$-*,&()&!$&% & %+$!+,*+)(+\",\"P 42/m 2/m 2/c\":\" !#$%#% +!$+$!& %&! -%$-$%& !&!$-% - %#$!#%$+! +\",\"P 42/m 2/c 2/m\":\" !#$%#% +!$+$!- %-! &%$&$%& !&!$-% - %+$!+%$#! #\",\"P 42/n 2/b 2/c\":\" !#$%#,(+)*+$!- %-)(&,*&*,-()-!$&% &(,#*)#%$+! +\",\"P 42/n 2/n 2/m\":\" !#$%#,(+)*+$!& %&)(-,*-*,-()-!$&% &(,+*)+%$#! #\",\"P 42/m 21/b 2/c\":\" !#$%#% +!$+*)&(,&)(-,*-$%& !&!$-% -(,#*)#,*+)(+\",\"P 42/m 21/n 2/m\":\" !#$%#,./'*/*'-.,-! &%$&$%& !&'*-,.-.,/*'/%$#! #\",\"P 42/n 21/m 2/c\":\" !#$%#,(+)*+*)-(,-! &%$&*,-()-!$&% & %#$!#,*+)(+\",\"P 42/n 21/c 2/m\":\" !#$%#,(+)*+*)&(,&! -%$-*,-()-!$&% & %+$!+,*#)(#\",\"I 4/m 2/m 2/m\":\" !#$%#% #!$#$!& %&! &%$&$%& !&!$&% & %#$!#%$#! #()+*,+,(+)*+*)-(,-)(-,*-*,-()-)*-,(-(,+*)+,*+)(+\",\"I 4/m 2/c 2/m\":\" !#$%#% #!$#$!- %-! -%$-$%& !&!$&% & %+$!+%$+! +()+*,+,(+)*+*)&(,&)(&,*&*,-()-)*-,(-(,#*)#,*#)(#\",\"I 41/a 2/m 2/d\":\" !#*,+%(5)$9*!> ,=)(-%$&$,=(!>!$&,(-(,+$!#,$9!(5()+$%#, 9!*5$)=(%>! &,*-*%> )=)*-% & %#*)+%*5) 9\",\"I 41/a 2/c 2/d\":\" !#*,+%(5)$9*!= ,>)(&%$-$,=(!>!$&,(-(,#$!+,$5!(9()+$%#, 9!*5$)>(%=! -,*&*%> )=)*-% & %+*)#%*9) 5\",\"P 3\":\" !#%?#@$#\",\"P 31\":\" !#%?A@$B\",\"P 32\":\" !#%?B@$A\",\"H 3\":\" !#%?#@$#CDAEFAGHAIJBKLBMNB\",\"R 3\":\" !## !!# \",\"P -3\":\" !#%?#@$#$%&!@&? &\",\"H -3\":\" !#%?#@$#$%&!@&? &OPQRSQTUQVWXYZX[]X]Y^W[^ZV^UR_PT_SO_\",\"R -3\":\" !## !!# $%&&$%%&$\",\"P 3 1 2\":\" !#%?#@$#%$&@!& ?&\",\"P 3 2 1\":\" !#%?#@$#! &?%&$@&\",\"P 31 1 2\":\" !#%?Q@$^%$_@!X ?&\",\"P 31 2 1\":\" !#%?A@$B! &?%_$@X\",\"P 32 1 2\":\" !#%?^@$Q%$X@!_ ?&\",\"P 32 2 1\":\" !#%?B@$A! &?%X$@_\",\"H 3 2\":\" !#%?#@$#! &?%&$@&OPQRSQTUQY]X[WXVZX]Y^W[^ZV^PO_SR_UT_\",\"R 3 2\":\" !## !!# %$&$&%&%$\",\"P 3 m 1\":\" !#%?#@$#%$#@!# ?#\",\"P 3 1 m\":\" !#%?#@$#! #?%#$@#\",\"P 3 c 1\":\" !#%?#@$#%$+@!+ ?+\",\"P 3 1 c\":\" !#%?#@$#! +?%+$@+\",\"H 3 m\":\" !#%?#@$#%$#@!# ?#OPQRSQTUQRUQTPQOSQ]Y^W[^ZV^WV^ZY^][^\",\"R 3 m\":\" !## !!# ! # #!#! \",\"H 3 c\":\" !#%?#@$#%$+@!+ ?+OPQRSQTUQRU`TP`OS`]Y^W[^ZV^WVaZYa][a\",\"R 3 c\":\" !## !!# '././'/'.\",\"P -3 1 2/m\":\" !#%?#@$#%$&@!& ?&$%&!@&? &! #?%#$@#\",\"P -3 1 2/c\":\" !#%?#@$#%$-@!- ?-$%&!@&? &! +?%+$@+\",\"P -3 2/m 1\":\" !#%?#@$#! &?%&$@&$%&!@&? &%$#@!# ?#\",\"P -3 2/c 1\":\" !#%?#@$#! -?%-$@-$%&!@&? &%$+@!+ ?+\",\"H -3 2/m\":\" !#%?#@$#! &?%&$@&$%&!@&? &%$#@!# ?#OPQRSQTUQY]X[WXVZXVWXYZX[]XRUQTPQOSQ]Y^W[^ZV^PO_SR_UT_UR_PT_SO_WV^ZY^][^\",\"R -3 2/m\":\" !## !!# %$&$&%&%$$%&&$%%&$! # #!#! \",\"H -3 2/c\":\" !#%?#@$#! -?%-$@-$%&!@&? &%$+@!+ ?+OPQRSQTUQY]b[WbVZbVWXYZX[]XRU`TP`OS`]Y^W[^ZV^POcSRcUTcUR_PT_SO_WVaZYa][a\",\"R -3 2/c\":\" !## !!# 102021210$%&&$%%&$'././'/'.\",\"P 6\":\" !#%?#@$#$%#!@#? #\",\"P 61\":\" !#%?A@$B$%/!@d? e\",\"P 65\":\" !#%?B@$A$%/!@e? d\",\"P 62\":\" !#%?^@$Q$%#!@^? Q\",\"P 64\":\" !#%?Q@$^$%#!@Q? ^\",\"P 63\":\" !#%?#@$#$%+!@+? +\",\"P -6\":\" !#%?#@$# !&%?&@$&\",\"P 6/m\":\" !#%?#@$#$%#!@#? #$%&!@&? & !&%?&@$&\",\"P 63/m\":\" !#%?#@$#$%+!@+? +$%&!@&? & !-%?-@$-\",\"P 6 2 2\":\" !#%?#@$#$%#!@#? #! &?%&$@&%$&@!& ?&\",\"P 61 2 2\":\" !#%?Q@$^$%+!@`? a! X?%&$@_%$b@!- ?c\",\"P 65 2 2\":\" !#%?^@$Q$%+!@a? `! _?%&$@X%$c@!- ?b\",\"P 62 2 2\":\" !#%?^@$Q$%#!@^? Q! _?%&$@X%$_@!& ?X\",\"P 64 2 2\":\" !#%?Q@$^$%#!@Q? ^! X?%&$@_%$X@!& ?_\",\"P 63 2 2\":\" !#%?#@$#$%+!@+? +! &?%&$@&%$-@!- ?-\",\"P 6 m m\":\" !#%?#@$#$%#!@#? #%$#@!# ?#! #?%#$@#\",\"P 6 c c\":\" !#%?#@$#$%#!@#? #%$+@!+ ?+! +?%+$@+\",\"P 63 c m\":\" !#%?#@$#$%+!@+? +%$+@!+ ?+! #?%#$@#\",\"P 63 m c\":\" !#%?#@$#$%+!@+? +%$#@!# ?#! +?%+$@+\",\"P -6 m 2\":\" !#%?#@$# !&%?&@$&%$#@!# ?#%$&@!& ?&\",\"P -6 c 2\":\" !#%?#@$# !-%?-@$-%$+@!+ ?+%$&@!& ?&\",\"P -6 2 m\":\" !#%?#@$# !&%?&@$&! &?%&$@&! #?%#$@#\",\"P -6 2 c\":\" !#%?#@$# !-%?-@$-! &?%&$@&! +?%+$@+\",\"P 6/m 2/m 2/m\":\" !#%?#@$#$%#!@#? #! &?%&$@&%$&@!& ?&$%&!@&? & !&@$&%?&%$#@!# ?#! #?%#$@#\",\"P 6/m 2/c 2/c\":\" !#%?#@$#$%#!@#? #! -?%-$@-%$-@!- ?-$%&!@&? & !&@$&%?&%$+@!+ ?+! +?%+$@+\",\"P 63/m 2/c 2/m\":\" !#%?#@$#$%+!@+? +! -?%-$@-%$&@!& ?&$%&!@&? & !-@$-%?-%$+@!+ ?+! #?%#$@#\",\"P 63/m 2/m 2/c\":\" !#%?#@$#$%+!@+? +! &?%&$@&%$-@!- ?-$%&!@&? & !-@$-%?-%$#@!# ?#! +?%+$@+\",\"P 2 3\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& \",\"F 2 3\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& )+$,+$)- ,-#()#*,&*)&(,!+(%+*!-*%-((!+*%+*!-(%-+ )+$,-$)- ,)#(,#*)&*,&(()#*,#*)&(,&+(!+*%-*!-(%)+ ,+$)-$,- \",\"I 2 3\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ()+*,+*)-(,-+()+*,-*)-(,)+(,+*)-*,-(\",\"P 21 3\":\" !#*%+$)-(,&# !+*%-$)&(,!# %+*)-$,&(\",\"I 21 3\":\" !#*%+$)-(,&# !+*%-$)&(,!# %+*)-$,&(()+$,#*!& %-+()#$,&*!- %)+(,#$!&*%- \",\"P 2/m -3\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& $%& !& %#$!#&$%& !# %#$!%&$!& %# !#$\",\"P 2/n -3\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& *,-()-(,+*)+-*,-()+(,+*),-*)-(,+()+*\",\"F 2/m -3\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& $%& !& %#$!#&$%& !# %#$!%&$!& %# !#$ )+$,+$)- ,-#()#*,&*)&(,!+(%+*!-*%-($,- )- ,+$)+&*,&()#(,#*)%-*!-(%+(!+*(!+*%+*!-(%-+ )+$,-$)- ,)#(,#*)&*,&(*%-(!-(%+*!+-$,- )+ ,+$),&*)&(,#()#*()#*,#*)&(,&+(!+*%-*!-(%)+ ,+$)-$,- *,&()&(,#*)#-*%-(!+(%+*!,-$)- ,+ )+$\",\"F 2/d -3\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& 64=37=345675=64=375345674=67=3453756 )+$,+$)- ,-#()#*,&*)&(,!+(%+*!-*%-(68>3:>3896:9=<8=;:5;85<:4><7>;49;79<(!+*%+*!-(%-+ )+$,-$)- ,)#(,#*)&*,&(<4>;7>;49<79>68>3:93896:8=<:=;85;:5<()#*,#*)&(,&+(!+*%-*!-(%)+ ,+$)-$,- <8=;:=;8f<:f><4>;79;49<78>6:>3893:96\",\"I 2/m -3\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& $%& !& %#$!#&$%& !# %#$!%&$!& %# !#$()+*,+*)-(,-+()+*,-*)-(,)+(,+*)-*,-(*,-()-(,+*)+-*,-()+(,+*),-*)-(,+()+*\",\"P 21/a -3\":\" !#*%+$)-(,&# !+*%-$)&(,!# %+*)-$,&($%&(!- ,+*)#&$%-(!+ ,#*)%&$!-(,+ )#*\",\"I 21/a -3\":\" !#*%+$)-(,&# !+*%-$)&(,!# %+*)-$,&($%&(!- ,+*)#&$%-(!+ ,#*)%&$!-(,+ )#*()+$,#*g& %-+()#$,&*!- %)+(,#$!&*%- *,- )&(%#$!+-*,& )#(%+$!,-*)& %#(!+$\",\"P 4 3 2\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! &%$&!$#% # #%$#!$&% &!#!$#% &! &%$\",\"P 42 3 2\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& )(-,*-)*+,(+(+,*+)*-,(-)+)*+,(-)(-,*\",\"F 4 3 2\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! &%$&!$#% # #%$#!$&% &!#!$#% &! &%$ )+$,+$)- ,-#()#*,&*)&(,!+(%+*!-*%-(!(-%*-!*+%(+ +,$+)$-, -)#)*#,(&)(&,*(!+*%+*!-(%-+ )+$,-$)- ,)#(,#*)&*,&() -,$-)$+, +(#,*#)*&,(&)+!*+%(-!(-%*()#*,#*)&(,&+(!+*%-*!-(%)+ ,+$)-$,- )(&,*&)*#,(#(+%*+!*-%(-!+)$+, -) -,$\",\"F 41 3 2\":\" !#$,+*)&(%-# !+$,&*)-(%!# ,+$)&*%-(:3>46=7<98;5;58<976=43>:97<58;>:3=46 )+$%#*!-(,&#()+*%&$!- ,!+(,#*)-$%& :;=4<>765839;94<5:6>83=79:6543>7;=8<(!+*,#$)- %&+ )#$%-*!&(,)#(%+*!&$,- 73=86>:<54;935469:<=8;>7576983=:;>4<()#*%+$!& ,-+(!#*,-$)& %)+ %#$!-*,&(7;>8<=:69435398657<>4;=:5:<94;=73>86\",\"I 4 3 2\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! &%$&!$#% # #%$#!$&% &!#!$#% &! &%$()+*,+*)-(,-+()+*,-*)-(,)+(,+*)-*,-()(-,*-)*+,(+(+,*+)*-,(-)+)*+,(-)(-,*\",\"P 43 3 2\":\" !#*%+$)-(,&# !+*%-$)&(,!# %+*)-$,&(7;>46=:<5839398<5:6=4;>75:<983>7;=46\",\"P 41 3 2\":\" !#*%+$)-(,&# !+*%-$)&(,!# %+*)-$,&(:3=8<>7694;5;54697<>83=:97654;=:3>8<\",\"I 41 3 2\":\" !#*%+$)-(,&# !+*%-$)&(,!# %+*)-$,&(:3=8<>7694;5;54697<>83=:97654;=:3>8<()+$,#*!& %-+()#$,&*!- %)+(,#$!&*%- 7;>46=:<5839398<5:6=4;>75:<983>7;=46\",\"P -4 3 m\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! #%$#!$&% & #!$#%$&! &%#! #%$&!$&% \",\"F -4 3 m\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! #%$#!$&% & #!$#%$&! &%#! #%$&!$&% )+$,+$)- ,-#()#*,&*)&(,!+(%+*!-*%-(!(+%*+!*-%(- +)$+,$-) -,#)(#,*&)*&,((!+*%+*!-(%-+ )+$,-$)- ,)#(,#*)&*,&() +,$+)$-, -(#)*#,*&)(&,+!(+%*-!*-%(()#*,#*)&(,&+(!+*%-*!-(%)+ ,+$)-$,- )(#,*#)*&,(&(+!*+%*-!(-%+) +,$-)$-, \",\"I -4 3 m\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! #%$#!$&% & #!$#%$&! &%#! #%$&!$&% ()+*,+*)-(,-+()+*,-*)-(,)+(,+*)-*,-()(+,*+)*-,(-(+)*+,*-)(-,+)(+,*-)*-,(\",\"P -4 3 n\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& )(+,*+)*-,(-(+)*+,*-)(-,+)(+,*-)*-,(\",\"F -4 3 c\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& )(+,*+)*-,(-(+)*+,*-)(-,+)(+,*-)*-,( )+$,+$)- ,-#()#*,&*)&(,!+(%+*!-*%-() #,$#)$&, &(#!*#%*&!(&%+! +%$-!$-% (!+*%+*!-(%-+ )+$,-$)- ,)#(,#*)&*,&(!(#%*#!*&%(& +!$+%$-! -%#) #,$&)$&, ()#*,#*)&(,&+(!+*%-*!-(%)+ ,+$)-$,- ! +%$+!$-% - #)$#,$&) &,#!(#%*&!*&%(\",\"I -4 3 d\":\" !#*%+$)-(,&# !+*%-$)&(,!# %+*)-$,&(7354<9:6>8;=357<946>:;=857394<>:6=8;()+$,#*!& %-+()#$,&*!- %)+(,#$!&*%- :;98657<=43>;9:658<=73>49:;586=7<>43\",\"P 4/m -3 2/m\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! &%$&!$#% # #%$#!$&% &!#!$#% &! &%$$%& !& %#$!#&$%& !# %#$!%&$!& %# !#$%$#! #% &!$&$&! &% #!$#%&% &!$#%$#! \",\"P 4/n -3 2/n\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! &%$&!$#% # #%$#!$&% &!#!$#% &! &%$*,-()-(,+*)+-*,-()+(,+*),-*)-(,+()+*,*+)(+,(-)*-*-)(-,(+)*+,-,(-)*+,*+)(\",\"P 42/m -3 2/n\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& )(-,*-)*+,(+(+,*+)*-,(-)+)*+,(-)(-,*$%& !& %#$!#&$%& !# %#$!%&$!& %# !#$,*+)(+,(-)*-*-)(-,(+)*+,-,(-)*+,*+)(\",\"P 42/n -3 2/m\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& )(-,*-)*+,(+(+,*+)*-,(-)+)*+,(-)(-,**,-()-(,+*)+-*,-()+(,+*),-*)-(,+()+*%$#! #% &!$&$&! &% #!$#%&% &!$#%$#! \",\"F 4/m -3 2/m\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! &%$&!$#% # #%$#!$&% &!#!$#% &! &%$$%& !& %#$!#&$%& !# %#$!%&$!& %# !#$%$#! #% &!$&$&! &% #!$#%&% &!$#%$#! )+$,+$)- ,-#()#*,&*)&(,!+(%+*!-*%-(!(-%*-!*+%(+ +,$+)$-, -)#)*#,(&)(&,*$,- )- ,+$)+&*,&()#(,#*)%-*!-(%+(!+*%*+!(+%(-!*-$-) -, +)$+,&,(&)*#,*#)((!+*%+*!-(%-+ )+$,-$)- ,)#(,#*)&*,&() -,$-)$+, +(#,*#)*&,(&)+!*+%(-!(-%**%-(!-(%+*!+-$,- )+ ,+$),&*)&(,#()#*,$+) +, -)$-*&)(&,(#)*#,-%(-!*+%*+!(()#*,#*)&(,&+(!+*%-*!-(%)+ ,+$)-$,- )(&,*&)*#,(#(+%*+!*-%(-!+)$+, -) -,$*,&()&(,#*)#-*%-(!+(%+*!,-$)- ,+ )+$,*#)(#,(&)*&*-!(-%(+!*+%-, -)$+,$+) \",\"F 4/m -3 2/c\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& )(-,*-)*+,(+(+,*+)*-,(-)+)*+,(-)(-,*$%& !& %#$!#&$%& !# %#$!%&$!& %# !#$,*+)(+,(-)*-*-)(-,(+)*+,-,(-)*+,*+)( )+$,+$)- ,-#()#*,&*)&(,!+(%+*!-*%-() &,$&)$#, #(#%*#!*&%(&!+!$+% -! -%$$,- )- ,+$)+&*,&()#(,#*)%-*!-(%+(!+*,$#) #, &)$&*&!(&%(#!*#%-% -!$+%$+! (!+*%+*!-(%-+ )+$,-$)- ,)#(,#*)&*,&(!(&%*&!*#%(# +%$+!$-% -!#)$#, &) &,$*%-(!-(%+*!+-$,- )+ ,+$),&*)&(,#()#*%*#!(#%(&!*&$-! -% +!$+%&, &)$#,$#) ()#*,#*)&(,&+(!+*%-*!-(%)+ ,+$)-$,- ! -%$-!$+% + #,$#)$&, &)#!*#%(&!(&%**,&()&(,#*)#-*%-(!+(%+*!,-$)- ,+ )+$%$+! +% -!$-$&) &, #)$#,&%(&!*#%*#!(\",\"F 41/d -3 2/m\":\" !#$,+*)&(%-# !+$,&*)-(%!# ,+$)&*%-(:3>46=7<98;5;58<976=43>:97<58;>:3=4664=3:>;85<79=64>3:5;89<74=6:>385;79<,$+! #%(-)*&*&)(-% #!$+,-%(&)*+,$#! )+$%#*!-(,&#()+*%&$!- ,!+(,#*)-$%& :;=4<>765839;94<5:6>83=79:6543>7;=8<68>37=;49<:5=<8>;753496:4><:=;893756,*#!(+% &)$-*-!(&, +)$#%-, &!$+%*#)((!+*,#$)- %&+ )#$%-*!&(,)#(%+*!&$,- 73=86>:<54;935469:<=8;>7576983=:;>4<<4>;:=389675>68=379;45<:8=<7>;453:96%$#) +,(&!*-$&! -,(#)*+%&% -)$#,*+!(()#*%+$!& ,-+(!#*,-$)& %)+ %#$!-*,&(7;>8<=:69435398657<>4;=:5:<94;=73>86<8=;7>3456:9><4=;:9385678>67=349;:5<%*+)(#, -!$&$-) &%(+!*#,&,(-!*#%$+) \",\"F 41/d -3 2/c\":\" !#$,+*)&(%-# !+$,&*)-(%!# ,+$)&*%-(:3>46=7<98;5;58<976=43>:97<58;>:3=46<8>;7=3496:5><8=;793456:8><7=;493:56%*#)(+, &!$-$-! &,(+)*#%&, -!$#%*+)( )+$%#*!-(,&#()+*%&$!- ,!+(,#*)-$%& :;=4<>765839;94<5:6>83=79:6543>7;=8<<4=;:>385679>64=3:9;85<78=67>345;:9<%$+) #,(-!*&$&) -%(#!*+,&%(-)*#,$+! (!+*,#$)- %&+ )#$%-*!&(,)#(%+*!&$,- 73=86>:<54;935469:<=8;>7576983=:;>4<68=37>;45<:9=<4>;:5389674>6:=389;75<,*+!(#% -)$&*-)(&% +!$#,-,(&!*+%$#) ()#*%+$!& ,-+(!#*,-$)& %)+ %#$!-*,&(7;>8<=:69435398657<>4;=:5:<94;=73>8664>3:=;89<75=68>375;49<:4=<:>;853796,$#! +%(&)*-*&!(-, #)$+%-% &)$+,*#!(\",\"I 4/m -3 2/m\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! &%$&!$#% # #%$#!$&% &!#!$#% &! &%$$%& !& %#$!#&$%& !# %#$!%&$!& %# !#$%$#! #% &!$&$&! &% #!$#%&% &!$#%$#! ()+*,+*)-(,-+()+*,-*)-(,)+(,+*)-*,-()(-,*-)*+,(+(+,*+)*-,(-)+)*+,(-)(-,**,-()-(,+*)+-*,-()+(,+*),-*)-(,+()+*,*+)(+,(-)*-*-)(-,(+)*+,-,(-)*+,*+)(\",\"I 41/a -3 2/d\":\" !#*%+$)-(,&# !+*%-$)&(,!# %+*)-$,&(:3=8<>7694;5;54697<>83=:97654;=:3>8<$%&(!- ,+*)#&$%-(!+ ,#*)%&$!-(,+ )#*4<97358;=:6>6>:;=8357<94=8;>:694<573()+$,#*!& %-+()#$,&*!- %)+(,#$!&*%- 7;>46=:<5839398<5:6=4;>75:<983>7;=46*,- )&(%#$!+-*,& )#(%+$!,-*)& %#(!+$865:;943>7<=<=73>4;9:658>43=7<5869:;\",\"P 1 1 2\":\" !#$%#\",\"P 1 1 21\":\" !#$%+\",\"B 1 1 2\":\" !#$%#(g+*%+\",\"A 1 2 1\":\" !#$!& )+$)-\",\"C 1 21 1\":\" !#$)&()#*!&\",\"I 1 2 1\":\" !#$!&.'/0'2\",\"I 1 21 1\":\" !#$)&.'/0!-\",\"P 1 1 m\":\" !# !&\",\"P 1 1 b\":\" !# )&\",\"B 1 1 m\":\" !# !&(!+(!-\",\"B 1 1 b\":\" !# )&(!+()-\",\"P 1 1 2/m\":\" !# !&$%#$%&\",\"P 1 1 21/m\":\" !#$%+$%& !-\",\"B 1 1 2/m\":\" !# !&$%#$%&(!+(!-*%+*%-\",\"P 1 1 2/b\":\" !#$,#$%& )&\",\"P 1 1 21/b\":\" !#$%&$,+ )-\",\"B 1 1 2/b\":\" !#$,#$%& )&(!+*,+*%-()-\",\"P 21 2 2\":\" !#$!&(%&*%#\",\"P 2 21 2\":\" !# ,&$)&$%#\",\"P 21 21 2 (a)\":\" !#*,#.%&$'&\",\"P 21 2 21\":\" !#$!&(%-*%+\",\"P 2 21 21\":\" !# %&$)-$,+\",\"C 2 2 21a)\":\" !#*%+(,&$)-()#$,+ %&*!-\",\"C 2 2 2a\":\" !#*,#.%&$'&()#$%# ,&*!&\",\"F 2 2 2a\":\" !#*,#.%&$'& '/*%/.12$!2.!/$,/ %20'2.'#$%# 1&0!&\",\"I 2 2 2a\":\" !#*,#.%&$'&()+$%+*!- ,-\",\"P 21/m 21/m 2/n a\":\" !#*,#$)&(%&$%&.'& ,#*!#\",\"P 42 21 2a\":\" !#*,#%.+'$+$'&.%&! -,*-\",\"I 2 3a\":\" !#*,#.%&$'&!# ,- '&$%/$# !-*!/$%&.%()+$%+ ,-*!-)+(%&(!-*,#*+()&$)#*,- ,\"},Ea=/^[1-9]$/;function Fa(t){let e=\"\";return t.length>0&&(e=\":\"+gt(t).join(\" OR :\")),new pe(e)}class La{constructor(t=\"\"){this.name=t,this.partList=[]}get type(){return\"Assembly\"}addPart(t,e){const i=new Na(t,e);return this.partList.push(i),i}getAtomCount(t){return this.partList.reduce(((e,i)=>e+i.getAtomCount(t)),0)}getResidueCount(t){return this.partList.reduce(((e,i)=>e+i.getResidueCount(t)),0)}getInstanceCount(){let t=0;return this.partList.forEach((function(e){t+=e.matrixList.length})),t}isIdentity(t){if(1!==this.partList.length)return!1;const e=this.partList[0];if(1!==e.matrixList.length)return!1;if(!(new i).equals(e.matrixList[0]))return!1;let r=[];return t.eachChain((function(t){r.push(t.chainname)})),r=gt(r),e.chainList.length===r.length}getBoundingBox(t){const e=new a;return this.partList.forEach((function(i){const r=i.getBoundingBox(t);e.expandByPoint(r.min),e.expandByPoint(r.max)})),e}getCenter(t){return this.getBoundingBox(t).getCenter(new e)}getSelection(){let t=[];return this.partList.forEach((function(e){t=t.concat(e.chainList)})),Fa(t)}}class Na{constructor(t=[],e=[]){this.matrixList=t,this.chainList=e}get type(){return\"AssemblyPart\"}_getCount(t,e){let i=0;return t.eachChain((t=>{(0===this.chainList.length||this.chainList.includes(t.chainname))&&(i+=t[e])})),this.matrixList.length*i}getAtomCount(t){return this._getCount(t,\"atomCount\")}getResidueCount(t){return this._getCount(t,\"residueCount\")}getBoundingBox(t){const e=new a,i=new a,r=this.getSelection(),s=t.getBoundingBox(r);return this.matrixList.forEach((function(t){i.copy(s).applyMatrix4(t),e.expandByPoint(i.min),e.expandByPoint(i.max)})),e}getSelection(){return Fa(this.chainList)}getView(t){const e=this.getSelection();return e?t.getView(e):t}getInstanceList(){const t=[];for(let e=0,i=this.matrixList.length;e0&&this.addResidueType(this.ri-1),l.growIfFull(),l.resno[this.ri]=s,void 0!==o&&(l.sstruc[this.ri]=o.charCodeAt(0)),void 0!==a&&(l.inscode[this.ri]=a.charCodeAt(0)),l.atomOffset[this.ri]=this.ai,l.atomCount[this.ri]=0,l.count+=1,l.chainIndex[this.ri]=this.ci,h.residueCount[this.ci]+=1),c.count+=1,c.residueIndex[this.ai]=this.ri,l.atomCount[this.ri]+=1,this.currentModelindex=t,this.currentChainid=i,this.currentResname=r,this.currentResno=s,this.currentInscode=a,this.currentHetero=n}finalize(){this.previousResname=this.currentResname,this.previousHetero=this.currentHetero,this.ri>-1&&this.addResidueType(this.ri)}}function Va(t,e){if(!e)return;De&&Me.time(\"assignSecondaryStructure\");const i=[];t.eachModel((function(t){t.eachChain((function(t){i.push(t.chainname)}))}));const r=i.slice().sort(),s=[];r.forEach((function(t){s.push(i.indexOf(t))}));const n=e.helices.filter((function(t){return pt(r,t[0])>=0}));n.sort((function(t,e){const i=t[0],n=e[0],o=t[1],a=e[1];if(i===n)return o===a?0:o=0}));a.sort((function(t,e){const i=t[0],n=e[0];if(i===n)return 0;const o=pt(r,i),a=pt(r,n);return s[o]=t.residueCount)continue;o.index=n+s,a.index=n+s+e,c.index=o.traceAtomIndex,l.index=a.traceAtomIndex;const h=c.distanceTo(l);if(Math.abs(h-i[e-2])>r)return!1}return!0},i=function(e,i){return t(e,i,[5.45,5.18,6.37],2.1)},r=function(e,i){return t(e,i,[6.1,10.4,13],1.42)};return function(t){De&&Me.time(\"calculateSecondaryStructure\"),t.eachPolymer((function(t){if(t.residueCount<4)return;if(t.isCg())!function(t){const i=t.residueStore,r=t.residueIndexStart,s=new Pa(t).position,n=new e,o=new e;for(let e=0,a=t.residueCount;e1&&s.bending[e]<20&&(i.sstruc[r+e]=\"h\".charCodeAt(0),i.sstruc[r+e+1]=\"h\".charCodeAt(0))}}(t);else{if(!t.isProtein())return;!function(t){const e=t.residueStore,s=t.residueIndexStart;for(let n=0,o=t.residueCount;n=e;)i=Math.floor(i/e),s+=Ua[i%e],r+=1;return r>=5&&Me.warn(\"chainname overflow\"),s}function Ha(t,e=!1){De&&Me.time(\"calculateChainnames\");let i=!0;if(t.eachChain((function(t){t.chainname&&(i=!1)})),i){const i=t.modelStore,r=t.chainStore,s=t.residueStore,n=function(t,e,n,o){const a=r.count;for(let t=0;t{h.add(e),t.forEach((t=>{h.add(t)}))}))),t.eachResidue((function(t){if(!e&&l){const e=t.atomCount,s=t.atomOffset;if(e>500)return void Me.warn(\"more than 500 atoms, skip residue for auto-bonding\",t.qualifiedName());if(\"auto\"===i&&t.hetero)for(let e=t.atomOffset;e{u.forEach((i=>{e.push(t.clone().multiply(i))}))})),h.addPart(e)}else h.addPart(d);const m=new e,p=new La(\"SUPERCELL\"),f=Array.prototype.concat.call(l(m.set(1,0,0)),l(m.set(0,1,0)),l(m.set(0,0,1)),l(m.set(-1,0,0)),l(m.set(0,-1,0)),l(m.set(0,0,-1)),l(m.set(1,1,0)),l(m.set(1,0,1)),l(m.set(0,1,1)),l(m.set(-1,-1,0)),l(m.set(-1,0,-1)),l(m.set(0,-1,-1)),l(m.set(1,-1,-1)),l(m.set(1,1,-1)),l(m.set(1,-1,1)),l(m.set(-1,1,1)),l(m.set(-1,-1,1)),l(m.set(-1,1,-1)),l(m.set(0,1,-1)),l(m.set(0,-1,1)),l(m.set(1,0,-1)),l(m.set(-1,0,1)),l(m.set(1,-1,0)),l(m.set(-1,1,0)),l(),l(m.set(1,1,1)),l(m.set(-1,-1,-1)));if(t.biomolDict.NCS){const t=[];f.forEach((function(e){u.forEach((function(i){t.push(e.clone().multiply(i))}))})),p.addPart(t)}else p.addPart(f);t.biomolDict.UNITCELL=h,t.biomolDict.SUPERCELL=p,De&&Me.timeEnd(\"buildUnitcellAssembly\")}const Qa=[\"H\",\"C\",\"O\",\"N\",\"S\",\"P\"],Ja=[\"NA\",\"CL\",\"FE\"];function tc(t){let e=t.toUpperCase(),i=0,r=0;for(let t=0;t0)break;++i}else r=t+1;(i>0||r=3&&-1!==Qa.indexOf(e[0])?e[0]:\"\"}function ec(t){const e=t.bondHash,i=e.countArray,r=e.offsetArray,s=e.indexArray,n=t.getBondProxy();t.eachResidue((function(t){const e=t.residueType;if(void 0!==e.bonds)return;var o=t.atomOffset,a=[],c=[],l=[],h={};const d=o+t.atomCount;t.eachAtom((function(t){const e=t.index,u=r[e];for(let t=0,r=i[e];t=d)continue;let i=n.atomIndex2;if(i=d)continue;if(e>i){const t=i;i=e,e=t}const r=e+\"|\"+i;void 0===h[r]&&(h[r]=!0,a.push(e-o),c.push(i-o),l.push(n.bondOrder))}})),e.bonds={atomIndices1:a,atomIndices2:c,bondOrders:l}}))}function ic(t,...e){De&&Me.time(\"concatStructures\");const i=new Cc(t,\"\"),r=new za(i),s=i.atomStore,n=i.atomMap;s.addField(\"formalCharge\",1,\"int8\"),s.addField(\"partialCharge\",1,\"float32\");const o={};let a=0,c=0,l=0;e.forEach((t=>{t.eachAtom((t=>{s.growIfFull(),s.atomTypeId[a]=n.add(t.atomname,t.element),s.x[a]=t.x,s.y[a]=t.y,s.z[a]=t.z,s.serial[a]=t.serial,s.formalCharge[a]=t.formalCharge,s.partialCharge[a]=t.partialCharge,s.altloc[a]=t.altloc,s.occupancy[a]=t.occupancy,s.bfactor[a]=t.bfactor,r.addAtom(t.modelIndex+l,t.chainname,t.chainid,t.resname,t.resno,1===t.hetero,t.sstruc,t.inscode),o[t.index+c]=a,a+=1})),c+=t.atomStore.count,l+=t.modelStore.count}));const h=i.bondStore,d=i.getAtomProxy(),u=i.getAtomProxy();return c=0,e.forEach((t=>{t.eachBond((t=>{d.index=o[t.atomIndex1+c],u.index=o[t.atomIndex2+c],h.addBond(d,u,t.bondOrder)})),c+=t.atomStore.count})),r.finalize(),Ka(i,!0),Ya(i,!0),i.finalizeAtoms(),i.finalizeBonds(),ec(i),De&&Me.timeEnd(\"concatStructures\"),i}const rc=[3,11,19,37,55,87],sc=[4,12,20,38,56,88],nc=[6,15,16,34],oc=[1,7,8,9,17,35,53],ac=[2,10,18,36,54,86],cc=[13,30,31,48,49,50,80,81,82,83,84,85,112],lc=[5,14,32,33,51,52,85],hc=[9,17,35,53,85];class dc{constructor(t,e,i){this.structure=t,this.atomname=e,i=i||tc(e),this.element=i,this.number=Xs[i]||0,this.vdw=Ys[this.number]||2,this.covalent=Ks[this.number]||1.6}getDefaultValence(){const t=Zs[this.number];return t?t[0]:-1}getValenceList(){return Zs[this.number]||[]}getOuterShellElectronCount(){return Qs[this.number]||2}isMetal(){return this.isAlkaliMetal()||this.isAlkalineEarthMetal()||this.isLanthanide()||this.isActinide()||this.isTransitionMetal()||this.isPostTransitionMetal()}isNonmetal(){return this.isDiatomicNonmetal()||this.isPolyatomicNonmetal()||this.isNobleGas()}isMetalloid(){return lc.includes(this.number)}isHalogen(){return hc.includes(this.number)}isDiatomicNonmetal(){return oc.includes(this.number)}isPolyatomicNonmetal(){return nc.includes(this.number)}isAlkaliMetal(){return rc.includes(this.number)}isAlkalineEarthMetal(){return sc.includes(this.number)}isNobleGas(){return ac.includes(this.number)}isTransitionMetal(){const t=this.number;return t>=21&&t<=29||t>=39&&t<=47||t>=72&&t<=79||t>=104&&t<=108}isPostTransitionMetal(){return cc.includes(this.number)}isLanthanide(){return this.number>=57&&this.number<=71}isActinide(){return this.number>=89&&this.number<=103}}class uc{constructor(t){this.structure=t,this.dict={},this.list=[],this.structure=t}add(t,e){const i=function(t,e){return t+\"|\"+e}(t=t.toUpperCase(),e=e?e.toUpperCase():tc(t));let r=this.dict[i];if(void 0===r){const s=new dc(this.structure,t,e);r=this.list.length,this.dict[i]=r,this.list.push(s)}return r}get(t){return this.list[t]}}class mc{constructor(t,e,i,r,s,n){this.structure=t,this.bondReferenceAtomIndices=[],this.resname=e,this.atomTypeIdList=i,this.hetero=r?1:0,this.chemCompType=s,this.bonds=n,this.atomCount=i.length,this.moleculeType=this.getMoleculeType(),this.backboneType=this.getBackboneType(0),this.backboneEndType=this.getBackboneType(-1),this.backboneStartType=this.getBackboneType(1),this.backboneIndexList=this.getBackboneIndexList();const o=mn[this.backboneType],a=mn[this.backboneStartType],c=mn[this.backboneEndType],l=this.getAtomIndexByName(o.trace);this.traceAtomIndex=st(l,-1);const h=this.getAtomIndexByName(o.direction1);this.direction1AtomIndex=st(h,-1);const d=this.getAtomIndexByName(o.direction2);this.direction2AtomIndex=st(d,-1);const u=this.getAtomIndexByName(a.backboneStart);this.backboneStartAtomIndex=st(u,-1);const m=this.getAtomIndexByName(c.backboneEnd);let p;this.backboneEndAtomIndex=st(m,-1),p=on.includes(e)?this.getAtomIndexByName(\"N1\"):this.getAtomIndexByName(\"N3\"),this.rungEndAtomIndex=st(p,-1)}getBackboneIndexList(){const t=[];let e;switch(this.moleculeType){case 3:e=dn;break;case 4:case 5:e=un;break;default:return t}const i=this.structure.atomMap,r=this.atomTypeIdList;for(let s=0,n=this.atomCount;s500)De&&Me.warn(\"more than 500 atoms, skip residue for auto-bonding\",t.qualifiedName());else if(s>50){const e=new $a(t,!0),s=t.isCg()?1.2:2.3;for(let t=n;t=0||yc(t,e);this.rings={atomRings:t.atomRings,rings:t.rings}}isAromatic(t){return this.aromaticAtoms=this.getAromatic(t),1===this.aromaticAtoms[t.index-t.residueAtomOffset]}calculateAromatic(t){const e=this.aromaticAtoms=new Uint8Array(this.atomCount),i=this.getRings().rings,r=i.map((e=>function(t){if(t.some((t=>!pc.includes(t.number))))return!1;let e=0;const i=new ho(3,t.length),r=i.data;t.forEach((t=>{r[e+0]=t.x,r[e+1]=t.y,r[e+2]=t.z,e+=3}));return new ya(i).vecC.length()this.structure.getAtomProxy(e+t.atomOffset)))))),s=this.aromaticRings=[];i.forEach(((t,i)=>{r[i]&&(s.push(t),t.forEach((t=>e[t]=1)))}))}assignBondReferenceAtomIndices(){const t=this.getBondGraph(),e=this.getRings(),i=e.atomRings,r=e.rings,s=this.bonds,n=s.atomIndices1,o=s.atomIndices2,a=s.bondOrders,c=this.bondReferenceAtomIndices,l=s.atomIndices1.length;c.length=0;for(let e=0;e1)for(let i=0;i1)for(let i=0;i=0;t--)p[f++]=o[t];const g=t.rings.length;for(let e=0;e0?n[c]!==e&&n[e]!==c&&gc(t,e,c):(r[c]=1,s[a++]=c,n[c]=e)}}}const bc=4;class xc{constructor(t){this.structure=t,this.dict={},this.list=[]}add(t,e,i,r=\"\",s){const n=function(t,e,i,r=\"\"){return t+\"|\"+e.join(\",\")+\"|\"+(i?1:0)+\"|\"+r}(t=t.toUpperCase(),e,i,r);let o=this.dict[n];if(void 0===o){const a=new mc(this.structure,t,e,i,r,s);o=this.list.length,this.dict[n]=o,this.list.push(a)}return o}get(t){return this.list[t]}}class vc{constructor(t,i=0){this.structure=t,this.index=i,this.bondStore=t.bondStore,this._v12=new e,this._v13=new e,this._ap1=this.structure.getAtomProxy(),this._ap2=this.structure.getAtomProxy(),this._ap3=this.structure.getAtomProxy()}get atom1(){return this.structure.getAtomProxy(this.atomIndex1)}get atom2(){return this.structure.getAtomProxy(this.atomIndex2)}get atomIndex1(){return this.bondStore.atomIndex1[this.index]}set atomIndex1(t){this.bondStore.atomIndex1[this.index]=t}get atomIndex2(){return this.bondStore.atomIndex2[this.index]}set atomIndex2(t){this.bondStore.atomIndex2[this.index]=t}get bondOrder(){return this.bondStore.bondOrder[this.index]}set bondOrder(t){this.bondStore.bondOrder[this.index]=t}getOtherAtomIndex(t){return t===this.atomIndex1?this.atomIndex2:this.atomIndex1}getOtherAtom(t){return this.structure.getAtomProxy(this.getOtherAtomIndex(t.index))}getReferenceAtomIndex(){const t=this._ap1,e=this._ap2;if(t.index=this.atomIndex1,e.index=this.atomIndex2,t.residueIndex!==e.residueIndex)return;const i=t.index-t.residueAtomOffset,r=e.index-e.residueAtomOffset,s=t.residueType.getBondReferenceAtomIndex(i,r);if(void 0!==s)return s+t.residueAtomOffset;console.warn(\"No reference atom found\",t.index,e.index)}calculateShiftDir(t=new e){const i=this._ap1,r=this._ap2,s=this._ap3,n=this._v12,o=this._v13;i.index=this.atomIndex1,r.index=this.atomIndex2;const a=this.getReferenceAtomIndex();n.subVectors(i,r).normalize(),void 0!==a?(s.index=a,o.subVectors(i,s)):o.copy(i),o.normalize();let c=n.dot(o);return 1-Math.abs(c)<1e-5&&(o.set(1,0,0),c=n.dot(o),1-Math.abs(c)<1e-5&&(o.set(0,1,0),c=n.dot(o))),t.copy(o.sub(n.multiplyScalar(c))).normalize()}qualifiedName(){return this.atomIndex1+\"=\"+this.atomIndex2}clone(){return new vc(this.structure,this.index)}toObject(){return{atomIndex1:this.atomIndex1,atomIndex2:this.atomIndex2,bondOrder:this.bondOrder}}}class wc{constructor(t,e=0){this.structure=t,this.index=e,this.chainStore=t.chainStore,this.residueStore=t.residueStore,this.atomStore=t.atomStore,this.residueMap=t.residueMap,this.atomMap=t.atomMap}get entity(){return this.structure.entityList[this.entityIndex]}get entityIndex(){return this.chainStore.entityIndex[this.chainIndex]}get chain(){return this.structure.getChainProxy(this.chainIndex)}get chainIndex(){return this.residueStore.chainIndex[this.index]}set chainIndex(t){this.residueStore.chainIndex[this.index]=t}get atomOffset(){return this.residueStore.atomOffset[this.index]}set atomOffset(t){this.residueStore.atomOffset[this.index]=t}get atomCount(){return this.residueStore.atomCount[this.index]}set atomCount(t){this.residueStore.atomCount[this.index]=t}get atomEnd(){return this.atomOffset+this.atomCount-1}get modelIndex(){return this.chainStore.modelIndex[this.chainIndex]}get chainname(){return this.chainStore.getChainname(this.chainIndex)}get chainid(){return this.chainStore.getChainid(this.chainIndex)}get resno(){return this.residueStore.resno[this.index]}set resno(t){this.residueStore.resno[this.index]=t}get sstruc(){return this.residueStore.getSstruc(this.index)}set sstruc(t){this.residueStore.setSstruc(this.index,t)}get inscode(){return this.residueStore.getInscode(this.index)}set inscode(t){this.residueStore.setInscode(this.index,t)}get residueType(){return this.residueMap.get(this.residueStore.residueTypeId[this.index])}get resname(){return this.residueType.resname}get hetero(){return this.residueType.hetero}get moleculeType(){return this.residueType.moleculeType}get backboneType(){return this.residueType.backboneType}get backboneStartType(){return this.residueType.backboneStartType}get backboneEndType(){return this.residueType.backboneEndType}get traceAtomIndex(){return this.residueType.traceAtomIndex+this.atomOffset}get direction1AtomIndex(){return this.residueType.direction1AtomIndex+this.atomOffset}get direction2AtomIndex(){return this.residueType.direction2AtomIndex+this.atomOffset}get backboneStartAtomIndex(){return this.residueType.backboneStartAtomIndex+this.atomOffset}get backboneEndAtomIndex(){return this.residueType.backboneEndAtomIndex+this.atomOffset}get rungEndAtomIndex(){return this.residueType.rungEndAtomIndex+this.atomOffset}get x(){let t=0;for(let e=this.atomOffset;e<=this.atomEnd;++e)t+=this.atomStore.x[e];return t/this.atomCount}get y(){let t=0;for(let e=this.atomOffset;e<=this.atomEnd;++e)t+=this.atomStore.y[e];return t/this.atomCount}get z(){let t=0;for(let e=this.atomOffset;e<=this.atomEnd;++e)t+=this.atomStore.z[e];return t/this.atomCount}eachAtom(t,e){const i=this.atomCount,r=this.atomOffset,s=this.structure._ap,n=r+i;if(e&&e.atomOnlyTest){const i=e.atomOnlyTest;for(let e=r;e0)return this.entity.isPolymer();{const t=this.residueType.moleculeType;return 3===t||4===t||5===t}}isHetero(){return 1===this.residueType.hetero}isWater(){return 1===this.residueType.moleculeType}isIon(){return 2===this.residueType.moleculeType}isSaccharide(){return 6===this.residueType.moleculeType}isStandardAminoacid(){return this.residueType.isStandardAminoacid()}isStandardBase(){return this.residueType.isStandardBase()}isHelix(){return Hs.includes(this.sstruc)}isSheet(){return Ws.includes(this.sstruc)}isTurn(){return qs.includes(this.sstruc)&&this.isProtein()}getAtomType(t){return this.atomMap.get(this.atomStore.atomTypeId[t])}getResname1(){return en[this.resname.toUpperCase()]||\"X\"}getBackboneType(t){switch(t){case-1:return this.residueType.backboneStartType;case 1:return this.residueType.backboneEndType;default:return this.residueType.backboneType}}getAtomIndexByName(t){let e=this.residueType.getAtomIndexByName(t);return void 0!==e&&(e+=this.atomOffset),e}hasAtomWithName(t){return this.residueType.hasAtomWithName(t)}getAtomnameList(){console.warn(\"getAtomnameList - might be expensive\");const t=this.atomCount,e=this.atomOffset,i=new Array(t);for(let r=0;r=e){const e=st(t,this.structure.getResidueProxy());if(e.index=i,e.connectedTo(this))return e}else if(i===e-1){const i=this.chainStore.residueCount[this.chainIndex],r=st(t,this.structure.getResidueProxy());if(r.index=e+i-1,r.connectedTo(this))return r}}getBonds(){return this.residueType.getBonds(this)}getRings(){return this.residueType.getRings()}getAromaticRings(){return this.residueType.getAromaticRings(this)}qualifiedName(t=!1){let e=\"\";return this.resname&&!t&&(e+=\"[\"+this.resname+\"]\"),void 0!==this.resno&&(e+=this.resno),this.inscode&&(e+=\"^\"+this.inscode),this.chain&&(e+=\":\"+this.chainname),e+=\"/\"+this.modelIndex,e}clone(){return new wc(this.structure,this.index)}toObject(){return{index:this.index,chainIndex:this.chainIndex,atomOffset:this.atomOffset,atomCount:this.atomCount,resno:this.resno,resname:this.resname,sstruc:this.sstruc}}}class Ac{constructor(t,e,i){this.structure=t,this.residueIndexStart=e,this.residueIndexEnd=i,this.chainStore=t.chainStore,this.residueStore=t.residueStore,this.atomStore=t.atomStore,this.residueCount=i-e+1;const r=this.structure.getResidueProxy(this.residueIndexStart),s=this.structure.getResidueProxy(this.residueIndexEnd);this.isPrevConnected=void 0!==r.getPreviousConnectedResidue();const n=s.getNextConnectedResidue();this.isNextConnected=void 0!==n,this.isNextNextConnected=void 0!==n&&void 0!==n.getNextConnectedResidue(),this.isCyclic=s.connectedTo(r),this.__residueProxy=this.structure.getResidueProxy()}get chainIndex(){return this.residueStore.chainIndex[this.residueIndexStart]}get modelIndex(){return this.chainStore.modelIndex[this.chainIndex]}get chainname(){return this.chainStore.getChainname(this.chainIndex)}isProtein(){return this.__residueProxy.index=this.residueIndexStart,this.__residueProxy.isProtein()}isCg(){return this.__residueProxy.index=this.residueIndexStart,this.__residueProxy.isCg()}isNucleic(){return this.__residueProxy.index=this.residueIndexStart,this.__residueProxy.isNucleic()}getMoleculeType(){return this.__residueProxy.index=this.residueIndexStart,this.__residueProxy.moleculeType}getBackboneType(t){return this.__residueProxy.index=this.residueIndexStart,this.__residueProxy.getBackboneType(t)}getAtomIndexByType(t,e){this.isCyclic?-1===t?t=this.residueCount-1:t===this.residueCount&&(t=0):(-1!==t||this.isPrevConnected||(t+=1),t!==this.residueCount||this.isNextNextConnected||(t-=1));const i=this.__residueProxy;let r;switch(i.index=this.residueIndexStart+t,e){case\"trace\":r=i.traceAtomIndex;break;case\"direction1\":r=i.direction1AtomIndex;break;case\"direction2\":r=i.direction2AtomIndex;break;default:r=i.getAtomIndexByName(e)}return r}eachAtom(t,e){this.eachResidue((function(i){i.eachAtom(t,e)}))}eachAtomN(t,e,i){const r=this.residueCount,s=new Array(t);for(let e=0;e1&&t(new Ac(n,i,l.index)),i=r)):(o!==Ns&&l.index-i>1&&t(new Ac(n,i,l.index)),i=r)}r-i>1&&this.structure.getResidueProxy(i).backboneEndType&&t(new Ac(n,i,r))}qualifiedName(){return\":\"+this.chainname+\"/\"+this.modelIndex}clone(){return new _c(this.structure,this.index)}toObject(){return{index:this.index,residueOffset:this.residueOffset,residueCount:this.residueCount,chainname:this.chainname}}}class Sc{constructor(t,e=0){this.structure=t,this.index=e,this.modelStore=t.modelStore,this.chainStore=t.chainStore,this.residueStore=t.residueStore}get chainOffset(){return this.modelStore.chainOffset[this.index]}set chainOffset(t){this.modelStore.chainOffset[this.index]=t}get chainCount(){return this.modelStore.chainCount[this.index]}set chainCount(t){this.modelStore.chainCount[this.index]=t}get residueOffset(){return this.chainStore.residueOffset[this.chainOffset]}get atomOffset(){return this.residueStore.atomOffset[this.residueOffset]}get chainEnd(){return this.chainOffset+this.chainCount-1}get residueEnd(){return this.chainStore.residueOffset[this.chainEnd]+this.chainStore.residueCount[this.chainEnd]-1}get atomEnd(){return this.residueStore.atomOffset[this.residueEnd]+this.residueStore.atomCount[this.residueEnd]-1}get residueCount(){return 0===this.chainCount?0:this.residueEnd-this.residueOffset+1}get atomCount(){return 0===this.residueCount?0:this.atomEnd-this.atomOffset+1}eachAtom(t,e){this.eachChain((function(i){i.eachAtom(t,e)}),e)}eachResidue(t,e){this.eachChain((function(i){i.eachResidue(t,e)}),e)}eachPolymer(t,e){if(e&&e.chainOnlyTest){const i=e.chainOnlyTest;this.eachChain((function(r){i(r)&&r.eachPolymer(t,e)}))}else this.eachChain((function(i){i.eachPolymer(t,e)}))}eachChain(t,e){const i=this.chainCount,r=this.chainOffset,s=this.structure._cp,n=r+i;if(e&&e.test){const i=e.chainOnlyTest;if(i)for(let e=r;e{const i=3*e;a.index=t,l&&a.positionToArray(l,i),h&&n.atomColorToArray(a,h,i),d&&(d.array[e]=t),u&&(u[e]=s.atomRadius(a)),m&&(m[e]=t)})),o}getBondData(t){const i=Object.assign({},t);i.colorParams&&(i.colorParams.structure=this.getStructure());const r=i.what,s=st(i.bondSet,this.bondSet),n=st(i.multipleBond,\"off\"),o=\"off\"!==n,a=\"offset\"===n,c=st(i.bondScale,.4),l=st(i.bondSpacing,1);let h,d;const u={},m=this.getBondProxy();i.bondStore&&(m.bondStore=i.bondStore);const p=this.getAtomProxy(),f=this.getAtomProxy();let g;if(o){const t=m.bondStore.bondOrder;g=0,s.forEach((function(e){g+=t[e]}))}else g=s.getSize();r&&!r.position||(u.position1=new Float32Array(3*g),u.position2=new Float32Array(3*g)),r&&!r.color||!i.colorParams||(u.color=new Float32Array(3*g),u.color2=new Float32Array(3*g),d=Fe.getScheme(i.colorParams)),r&&!r.picking||(u.picking=new Zn(new Float32Array(g),this.getStructure(),i.bondStore)),(!r||r.radius||o&&r.position)&&(h=new pa(i.radiusParams)),r&&!r.radius||(u.radius=new Float32Array(g),i.radius2&&(u.radius2=new Float32Array(g)));const{position1:y,position2:b,color:x,color2:v,picking:w,radius:A,radius2:_}=u;let S,C,P,I,k,M,T=0;const B=new e,D=new e,$=new e;return s.forEach((t=>{if(C=3*T,m.index=t,p.index=m.atomIndex1,f.index=m.atomIndex2,I=m.bondOrder,y)if(o&&I>1){const t=h.atomRadius(p);M=t*c/(.5*I),m.calculateShiftDir($),a?(k=2*l*t,$.multiplyScalar(k),$.negate(),D.subVectors(f,p).multiplyScalar(Math.max(.1,k/1.88)),p.positionToArray(y,C),f.positionToArray(b,C),I>=2&&(B.addVectors(p,$).add(D).toArray(y,C+3),B.addVectors(f,$).sub(D).toArray(b,C+3),I>=3&&(B.subVectors(p,$).add(D).toArray(y,C+6),B.subVectors(f,$).sub(D).toArray(b,C+6)))):(k=(l-c)*t,$.multiplyScalar(k),2===I?(B.addVectors(p,$).toArray(y,C),B.subVectors(p,$).toArray(y,C+3),B.addVectors(f,$).toArray(b,C),B.subVectors(f,$).toArray(b,C+3)):3===I?(p.positionToArray(y,C),B.addVectors(p,$).toArray(y,C+3),B.subVectors(p,$).toArray(y,C+6),f.positionToArray(b,C),B.addVectors(f,$).toArray(b,C+3),B.subVectors(f,$).toArray(b,C+6)):(p.positionToArray(y,C),f.positionToArray(b,C)))}else p.positionToArray(y,C),f.positionToArray(b,C);if(x&&v&&(d.bondColorToArray(m,1,x,C),d.bondColorToArray(m,0,v,C),o&&I>1))for(S=1;S1))for(S=1;S1))for(M=A[T]*c/(a?1:.5*I),S=a?1:0;S1))for(M=_[T]*c/(a?1:.5*I),S=a?1:0;S{const e=t.x,a=t.y,l=t.z;en&&(n=e),a>o&&(o=a),l>c&&(c=l)}),t),e.min.set(i,r,s),e.max.set(n,o,c),De&&Me.timeEnd(\"getBoundingBox\"),e}getPrincipalAxes(t){De&&Me.time(\"getPrincipalAxes\");let e=0;const i=new ho(3,this.atomCount),r=i.data;return this.eachAtom((t=>{r[e+0]=t.x,r[e+1]=t.y,r[e+2]=t.z,e+=3}),t),De&&Me.timeEnd(\"getPrincipalAxes\"),new ya(i)}atomCenter(t){return t?this.getBoundingBox(t).getCenter(new e):this.center.clone()}hasCoords(){if(void 0===this._hasCoords){const t=this.atomStore;this._hasCoords=0!==Di(t.x)||0!==Bi(t.x)||0!==Di(t.y)||0!==Bi(t.y)||0!==Di(t.z)||0!==Bi(t.z)||t.count/this.modelStore.count==1}return this._hasCoords}getSequence(t){const e=[],i=this.getResidueProxy();return this.eachAtom((function(t){i.index=t.residueIndex,t.index===i.traceAtomIndex&&e.push(i.getResname1())}),t),e}getAtomIndices(t){if(t&&t.string){const e=[];return this.eachAtom((function(t){e.push(t.index)}),t),new Uint32Array(e)}{const t={what:{index:!0}};return this.getAtomData(t).index}}getChainnameCount(t){const e=new Set;return this.eachChain((function(t){t.residueCount&&e.add(t.chainname)}),t),e.size}updatePosition(t,e=!0){let i=0;this.eachAtom((function(e){e.positionFromArray(t,i),i+=3}),void 0),this._hasCoords=void 0,e&&this.refreshPosition()}refreshPosition(){this.getBoundingBox(void 0,this.boundingBox),this.boundingBox.getCenter(this.center),this.spatialHash=new Ts(this.atomStore,this.boundingBox),this.signals.refreshed.dispatch(this)}dispose(){this.frames&&(this.frames.length=0),this.boxes&&(this.boxes.length=0),this.bondStore.dispose(),this.backboneBondStore.dispose(),this.rungBondStore.dispose(),this.atomStore.dispose(),this.residueStore.dispose(),this.chainStore.dispose(),this.modelStore.dispose(),delete this.bondSet,delete this.atomSet}}const Pc=new a,Ic=[_s,xs,Ss,As,Cs,vs,bs,ws,Is,Ps,ks,Ms],kc={aspectRatio:1.5,sphereDetail:2,radialSegments:50,disableImpostor:!1,openEnded:!1,dashedCylinder:!1,labelParams:{},pointSize:2,sizeAttenuation:!1,useTexture:!0,linewidth:2};class Mc{constructor(t=\"shape\",e={}){this.boundingBox=new a,this.bufferList=[],this.meshCount=0,this._primitiveData={},this.name=t,this.parameters=nt(e,kc),Ic.forEach((t=>{Object.keys(t.fields).forEach((e=>{this._primitiveData[t.getShapeKey(e)]=[]})),this._primitiveData[t.getShapeKey(\"name\")]=[]}))}addBuffer(t){this.bufferList.push(t);const e=t.geometry;return e.boundingBox||e.computeBoundingBox(),this.boundingBox.union(e.boundingBox),this}addMesh(t,e,i,r,s){let n;t=Ct(t),e=Ct(e),Array.isArray(i)&&(i=xt(i,t.length)),r&&(r=Ct(r)),n=void 0===r||0==r.length?{position:t,color:e,index:i}:{position:t,color:e,index:i,normal:r};const o=new io(this,Object.assign({serial:this.meshCount,name:s},n)),a=new Uo(Object.assign({picking:o},n));return this.bufferList.push(a),Pc.setFromArray(t),this.boundingBox.union(Pc),this.meshCount+=1,this}addSphere(t,e,i,r){return bs.objectToShape(this,{position:t,color:e,radius:i,name:r}),this}addEllipsoid(t,e,i,r,s,n){return Cs.objectToShape(this,{position:t,color:e,radius:i,majorAxis:r,minorAxis:s,name:n}),this}addTorus(t,e,i,r,s,n){return Ps.objectToShape(this,{position:t,color:e,radius:i,majorAxis:r,minorAxis:s,name:n}),this}addCylinder(t,e,i,r,s){return As.objectToShape(this,{position1:t,position2:e,color:i,radius:r,name:s}),this}addCone(t,e,i,r,s){return Ss.objectToShape(this,{position1:t,position2:e,color:i,radius:r,name:s}),this}addArrow(t,e,i,r,s){return _s.objectToShape(this,{position1:t,position2:e,color:i,radius:r,name:s}),this}addBox(t,e,i,r,s,n){return xs.objectToShape(this,{position:t,color:e,size:i,heightAxis:r,depthAxis:s,name:n}),this}addOctahedron(t,e,i,r,s,n){return vs.objectToShape(this,{position:t,color:e,size:i,heightAxis:r,depthAxis:s,name:n}),this}addTetrahedron(t,e,i,r,s,n){return ws.objectToShape(this,{position:t,color:e,size:i,heightAxis:r,depthAxis:s,name:n}),this}addText(t,e,i,r){return Is.objectToShape(this,{position:t,color:e,size:i,text:r}),this}addPoint(t,e,i){return ks.objectToShape(this,{position:t,color:e,name:i}),this}addWideline(t,e,i,r,s){return this.parameters.linewidth=r,Ms.objectToShape(this,{position1:t,position2:e,color:i,name:s}),this}addLabel(t,e,i,r){return console.warn(\"Shape.addLabel is deprecated, use .addText instead\"),this.addText(t,e,i,r)}getBufferList(){const t=[];return Ic.forEach((e=>{this._primitiveData[e.getShapeKey(\"color\")].length&&t.push(e.bufferFromShape(this,this.parameters))})),this.bufferList.concat(t)}dispose(){this.bufferList.forEach((function(t){t.dispose()})),this.bufferList.length=0,Ic.forEach((t=>{Object.keys(t.fields).forEach((e=>{this._primitiveData[t.getShapeKey(e)].length=0})),this._primitiveData[t.getShapeKey(\"name\")].length=0}))}get center(){return this._center||(this._center=this.boundingBox.getCenter(new e)),this._center}get type(){return\"Shape\"}}class Tc extends zr{constructor(t,e,i){Array.isArray(t)||(t=[t]),super(t,e,i),this.type=\"buffer\",this.parameters=Object.assign({},this.parameters,{colorScheme:null,colorScale:null,colorValue:null,colorDomain:null,colorMode:null}),this.buffer=t,this.init(i)}init(t){super.init(t),this.build()}create(){this.bufferList.push.apply(this.bufferList,this.buffer)}attach(t){this.bufferList.forEach((t=>{this.viewer.add(t),t.setParameters(this.getBufferParams())})),this.setVisibility(this.visible),t()}}const Bc=new i,Dc=new O;class $c extends Uo{constructor(t,e={},i){super(function(t,e){const i=e.attributes.position.array,r=e.index?e.index.array:void 0,s=t.position.length/3,n=i.length/3,o=s*n,a=new Float32Array(3*o),c=new Float32Array(3*o),l=new Float32Array(3*o);let h;return r&&(h=xt(s*r.length,o)),{position:a,color:l,index:h,normal:c,primitiveId:t.primitiveId||Ii(s,n),picking:t.picking}}(t,i),e),this.updateNormals=!1;const r=i.attributes.position.array,s=i.attributes.normal.array,n=i.index?i.index.array:void 0;this.geoPosition=r,this.geoNormal=s,this.geoIndex=n,this.positionCount=t.position.length/3,this.geoPositionCount=r.length/3,this.transformedGeoPosition=new Float32Array(3*this.geoPositionCount),this.transformedGeoNormal=new Float32Array(3*this.geoPositionCount);const o=this.geometry.attributes;if(this.meshPosition=o.position.array,this.meshColor=o.color.array,this.meshNormal=o.normal.array,this.setAttributes(t),n){const t=this.geometry.getIndex();if(!t)return void Me.error(\"Index is null\");this.meshIndex=t.array,this.makeIndex()}}setAttributes(t={},e=!1){const i=this.geometry.attributes;let r,s,n,o,a,c,l,h,d;const u=this.updateNormals;t.position&&(r=t.position,n=this.geoPosition,l=this.meshPosition,a=this.transformedGeoPosition,i.position.needsUpdate=!0,(u||e)&&(o=this.geoNormal,d=this.meshNormal,c=this.transformedGeoNormal,i.normal.needsUpdate=!0)),t.color&&(s=t.color,h=this.meshColor,i.color.needsUpdate=!0);const m=this.positionCount,p=this.geoPositionCount;for(let t=0;t 0.0 ){\\ncameraPos = rayDirection * posT + rayOrigin;\\ninterior = true;\\nflag2 = true;\\n}\\n#else\\nif( calcDepth( cameraPos ) <= 0.0 ){\\ncameraPos = rayDirection * posT + rayOrigin;\\ninterior = true;\\n}\\n#endif\\ncameraNormal = normalize( cameraPos - cameraSpherePos );\\ncameraNormal *= float(!interior) * 2.0 - 1.0;\\nreturn !interior;\\n}\\nvoid main(void){\\nbool flag = Impostor( cameraPos, cameraNormal );\\n#ifdef NEAR_CLIP\\nif( calcClip( cameraPos ) > 0.0 )\\ndiscard;\\n#endif\\ngl_FragDepthEXT = calcDepth( cameraPos );\\nif( !flag ){\\n#ifdef NEAR_CLIP\\nif( flag2 ){\\ngl_FragDepthEXT = max( 0.0, calcDepth( vec3( - ( clipNear - 0.5 ) ) ) + ( 0.0000001 / vRadius ) );\\n}else if( gl_FragDepthEXT >= 0.0 ){\\ngl_FragDepthEXT = 0.0 + ( 0.0000001 / vRadius );\\n}\\n#else\\nif( gl_FragDepthEXT >= 0.0 ){\\ngl_FragDepthEXT = 0.0 + ( 0.0000001 / vRadius );\\n}\\n#endif\\n}\\nif (gl_FragDepthEXT < 0.0)\\ndiscard;\\nif (gl_FragDepthEXT > 1.0)\\ndiscard;\\n#ifdef PICKING\\nif( opacity < 0.3 )\\ndiscard;\\ngl_FragColor = vec4( vPickingColor, objectId );\\n#else\\nvec3 vNormal = cameraNormal;\\nvec3 vViewPosition = -cameraPos;\\nvec4 diffuseColor = vec4( diffuse, opacity );\\nReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\nvec3 totalEmissiveLight = emissive;\\n#include color_fragment\\n#include roughnessmap_fragment\\n#include metalnessmap_fragment\\n#include normal_fragment_begin\\n#include lights_physical_fragment\\n#include lights_fragment_begin\\n#include lights_fragment_end\\nvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveLight;\\nif( interior ){\\n#ifdef USE_INTERIOR_COLOR\\noutgoingLight.xyz = interiorColor;\\n#else\\n#ifdef DIFFUSE_INTERIOR\\noutgoingLight.xyz = vColor;\\n#endif\\n#endif\\noutgoingLight.xyz *= 1.0 - interiorDarkening;\\n}\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n#include premultiplied_alpha_fragment\\n#include tonemapping_fragment\\n#include encodings_fragment\\n#include fog_fragment\\n#endif\\n}\");class Fc extends Go{constructor(t,e,i={}){super(e,i),this.index=xt(this.indexSize,this.attributeSize),this.makeIndex(),this.initIndex(this.index),this.addAttributes({mapping:{type:t,value:null}}),this.setAttributes({primitiveId:Pi(this.size)})}get attributeSize(){return this.size*this.mappingSize}get indexSize(){return this.size*this.mappingIndicesSize}addAttributes(t){const e={};for(const i in t){const r=t[i];e[i]={type:r.type,value:null}}super.addAttributes(e)}getAttributeIndex(t){return 3*t*this.mappingSize}setAttributes(t){t&&!t.position&&t.position1&&t.position2&&(t.position=Ai(t.position1,t.position2));const e=this.size,i=this.mappingSize,r=this.geometry.attributes;let s,n,o,a,c,l,h;for(const d in t)if(\"index\"!==d&&\"picking\"!==d){n=t[d],s=r[d],o=s.itemSize,a=s.array;for(let t=0;t0&&this.parameters.alphaTest<=1&&(e.ALPHATEST=this.parameters.alphaTest.toPrecision(2)),e}setUniforms(t){t&&void 0!==t.edgeBleach&&(this.makeTexture(),t.map=this.tex),super.setUniforms(t)}dispose(){super.dispose(),this.tex&&this.tex.dispose()}}je.add(\"point\",Wc);class qc extends zr{constructor(t,e,i){super(t,e,i),this.type=\"dot\",this.parameters=Object.assign({thresholdType:{type:\"select\",rebuild:!0,options:{value:\"value\",sigma:\"sigma\"}},thresholdMin:{type:\"number\",precision:3,max:1/0,min:-1/0,rebuild:!0},thresholdMax:{type:\"number\",precision:3,max:1/0,min:-1/0,rebuild:!0},thresholdOut:{type:\"boolean\",rebuild:!0},dotType:{type:\"select\",rebuild:!0,options:{\"\":\"\",sphere:\"sphere\",point:\"point\"}},radiusType:{type:\"select\",options:{\"\":\"\",value:\"value\",\"abs-value\":\"abs-value\",\"value-min\":\"value-min\",deviation:\"deviation\",size:\"size\"}},radius:{type:\"number\",precision:3,max:10,min:.001,property:\"size\"},scale:{type:\"number\",precision:3,max:10,min:.001},sphereDetail:!0,disableImpostor:!0,pointSize:{type:\"number\",precision:1,max:100,min:0,buffer:!0},sizeAttenuation:{type:\"boolean\",buffer:!0},sortParticles:{type:\"boolean\",rebuild:!0},useTexture:{type:\"boolean\",buffer:!0},alphaTest:{type:\"range\",step:.001,max:1,min:0,buffer:!0},forceTransparent:{type:\"boolean\",buffer:!0},edgeBleach:{type:\"range\",step:.001,max:1,min:0,buffer:!0}},this.parameters,{colorScheme:{type:\"select\",update:\"color\",options:{\"\":\"\",value:\"value\",uniform:\"uniform\",random:\"random\"}}}),t instanceof Eo?(this.surface=void 0,this.volume=new ba(t)):(this.surface=t,this.volume=void 0),this.init(i)}init(t){var e=t||{};e.colorScheme=st(e.colorScheme,\"uniform\"),e.colorValue=st(e.colorValue,14540253),this.thresholdType=st(e.thresholdType,\"sigma\"),this.thresholdMin=st(e.thresholdMin,2),this.thresholdMax=st(e.thresholdMax,1/0),this.thresholdOut=st(e.thresholdOut,!1),this.dotType=st(e.dotType,\"point\"),this.radius=st(e.radius,.1),this.scale=st(e.scale,1),this.pointSize=st(e.pointSize,1),this.sizeAttenuation=st(e.sizeAttenuation,!0),this.sortParticles=st(e.sortParticles,!1),this.useTexture=st(e.useTexture,!1),this.alphaTest=st(e.alphaTest,.5),this.forceTransparent=st(e.forceTransparent,!1),this.edgeBleach=st(e.edgeBleach,0),super.init(e),this.build()}attach(t){this.bufferList.forEach((t=>{this.viewer.add(t)})),this.setVisibility(this.visible),t()}create(){var t={};if(this.volume){var e,i,r=this.volume;\"sigma\"===this.thresholdType?(e=r.getValueForSigma(this.thresholdMin),i=r.getValueForSigma(this.thresholdMax)):(e=this.thresholdMin,i=this.thresholdMax),r.setFilter(e,i,this.thresholdOut),Object.assign(t,{position:r.getDataPosition(),color:r.getDataColor(this.getColorParams())}),\"sphere\"===this.dotType&&Object.assign(t,{radius:r.getDataSize(this.radius,this.scale),picking:r.getDataPicking()})}else{var s=this.surface;Object.assign(t,{position:s.getPosition(),color:s.getColor(this.getColorParams())}),\"sphere\"===this.dotType&&Object.assign(t,{radius:s.getSize(this.radius,this.scale),picking:s.getPicking()})}\"sphere\"===this.dotType?this.dotBuffer=new Gc(t,this.getBufferParams({sphereDetail:this.sphereDetail,disableImpostor:this.disableImpostor,dullInterior:!1})):this.dotBuffer=new Wc(t,this.getBufferParams({pointSize:this.pointSize,sizeAttenuation:this.sizeAttenuation,sortParticles:this.sortParticles,useTexture:this.useTexture,alphaTest:this.alphaTest,forceTransparent:this.forceTransparent,edgeBleach:this.edgeBleach})),this.bufferList.push(this.dotBuffer)}update(t={}){if(0===this.bufferList.length)return;const e={};t.color&&(this.volume?Object.assign(e,{color:this.volume.getDataColor(this.getColorParams())}):Object.assign(e,{color:this.surface.getColor(this.getColorParams())})),\"sphere\"===this.dotType&&(t.radius||t.scale)&&(this.volume?Object.assign(e,{radius:this.volume.getDataSize(this.radius,this.scale)}):Object.assign(e,{radius:this.surface.getSize(this.radius,this.scale)})),this.dotBuffer.setAttributes(e)}setParameters(t,e={},i){return t&&void 0!==t.thresholdType&&this.volume instanceof Eo&&(\"value\"===this.thresholdType&&\"sigma\"===t.thresholdType?(this.thresholdMin=this.volume.getSigmaForValue(this.thresholdMin),this.thresholdMax=this.volume.getSigmaForValue(this.thresholdMax)):\"sigma\"===this.thresholdType&&\"value\"===t.thresholdType&&(this.thresholdMin=this.volume.getValueForSigma(this.thresholdMin),this.thresholdMax=this.volume.getValueForSigma(this.thresholdMax)),this.thresholdType=t.thresholdType),t&&void 0!==t.radiusType&&(\"radius\"===t.radiusType?this.radius=.1:this.radius=parseFloat(t.radiusType),e.radius=!0,\"sphere\"!==this.dotType||Ie&&!this.disableImpostor||(i=!0)),t&&void 0!==t.radius&&(e.radius=!0,\"sphere\"!==this.dotType||Ie&&!this.disableImpostor||(i=!0)),t&&void 0!==t.scale&&(e.scale=!0,\"sphere\"!==this.dotType||Ie&&!this.disableImpostor||(i=!0)),super.setParameters(t,e,i),this}}Ve.add(\"shader/Image.vert\",\"uniform float clipRadius;\\nuniform vec3 clipCenter;\\nvarying vec2 vUv;\\n#if defined( NEAR_CLIP ) || defined( RADIUS_CLIP ) || !defined( PICKING )\\nvarying vec3 vViewPosition;\\n#endif\\n#if defined( RADIUS_CLIP )\\nvarying vec3 vClipCenter;\\n#endif\\nvoid main() {\\n#include begin_vertex\\n#include project_vertex\\nvUv = uv;\\n#if defined( NEAR_CLIP ) || defined( RADIUS_CLIP ) || !defined( PICKING )\\nvViewPosition = -mvPosition.xyz;\\n#endif\\n#if defined( RADIUS_CLIP )\\nvClipCenter = -( modelViewMatrix * vec4( clipCenter, 1.0 ) ).xyz;\\n#endif\\n}\"),Ve.add(\"shader/Image.frag\",\"uniform sampler2D map;\\nuniform float opacity;\\nuniform vec2 mapSize;\\nuniform float clipNear;\\nuniform float clipRadius;\\nvarying vec2 vUv;\\n#if defined( NEAR_CLIP ) || defined( RADIUS_CLIP ) || !defined( PICKING )\\nvarying vec3 vViewPosition;\\n#endif\\n#if defined( RADIUS_CLIP )\\nvarying vec3 vClipCenter;\\n#endif\\n#if defined( PICKING )\\nuniform sampler2D pickingMap;\\nuniform float objectId;\\n#else\\n#include fog_pars_fragment\\n#endif\\n#if defined( CUBIC_INTERPOLATION )\\n#if defined( CATMULROM_FILTER ) || defined( MITCHELL_FILTER )\\n#if defined( CATMULROM_FILTER )\\nconst float B = 0.0;\\nconst float C = 0.5;\\n#elif defined( MITCHELL_FILTER )\\nconst float B = 0.333;\\nconst float C = 0.333;\\n#endif\\nfloat filter( float x ){\\nfloat f = x;\\nif( f < 0.0 ){\\nf = -f;\\n}\\nif( f < 1.0 ){\\nreturn ( ( 12.0 - 9.0 * B - 6.0 * C ) * ( f * f * f ) +\\n( -18.0 + 12.0 * B + 6.0 *C ) * ( f * f ) +\\n( 6.0 - 2.0 * B ) ) / 6.0;\\n}else if( f >= 1.0 && f < 2.0 ){\\nreturn ( ( -B - 6.0 * C ) * ( f * f * f )\\n+ ( 6.0 * B + 30.0 * C ) * ( f *f ) +\\n( - ( 12.0 * B ) - 48.0 * C ) * f +\\n8.0 * B + 24.0 * C ) / 6.0;\\n}else{\\nreturn 0.0;\\n}\\n}\\n#elif defined( BSPLINE_FILTER )\\nfloat filter( float x ){\\nfloat f = x;\\nif( f < 0.0 ){\\nf = -f;\\n}\\nif( f >= 0.0 && f <= 1.0 ){\\nreturn ( 2.0 / 3.0 ) + ( 0.5 ) * ( f * f * f ) - ( f * f );\\n}else if( f > 1.0 && f <= 2.0 ){\\nreturn 1.0 / 6.0 * pow( ( 2.0 - f ), 3.0 );\\n}\\nreturn 1.0;\\n}\\n#else\\nfloat filter( float x ){\\nreturn 1.0;\\n}\\n#endif\\nvec4 biCubic( sampler2D tex, vec2 texCoord ){\\nvec2 texelSize = 1.0 / mapSize;\\ntexCoord -= texelSize / 2.0;\\nvec4 nSum = vec4( 0.0 );\\nfloat nDenom = 0.0;\\nvec2 cell = fract( texCoord * mapSize );\\nfor( float m = -1.0; m <= 2.0; ++m ){\\nfor( float n = -1.0; n <= 2.0; ++n ){\\nvec4 vecData = texture2D(\\ntex, texCoord + texelSize * vec2( m, n )\\n);\\nfloat c = filter( m - cell.x ) * filter( -n + cell.y );\\nnSum += vecData * c;\\nnDenom += c;\\n}\\n}\\nreturn nSum / nDenom;\\n}\\n#endif\\nvoid main(){\\n#include nearclip_fragment\\n#include radiusclip_fragment\\n#if defined( CUBIC_INTERPOLATION )\\ngl_FragColor = biCubic( map, vUv );\\n#else\\ngl_FragColor = texture2D( map, vUv );\\n#endif\\n#if defined( PICKING )\\nif( gl_FragColor.a < 0.3 )\\ndiscard;\\ngl_FragColor = vec4( texture2D( pickingMap, vUv ).xyz, objectId );\\n#else\\nif( gl_FragColor.a < 0.01 )\\ndiscard;\\ngl_FragColor.a *= opacity;\\n#include fog_fragment\\n#endif\\n}\");const Xc=new Uint16Array([0,1,2,1,3,2]),Yc=new Float32Array([0,1,0,0,1,1,1,0]),Kc=Object.assign({filter:\"nearest\",forceTransparent:!0},zo),Zc=Object.assign({filter:{updateShader:!0,uniform:!0}},Vo);class Qc extends Go{constructor(e,i){super({position:e.position,index:Xc,picking:e.picking},i),this.parameterTypes=Zc,this.alwaysTransparent=!0,this.hasWireframe=!1,this.vertexShader=\"Image.vert\",this.fragmentShader=\"Image.frag\";const{imageData:r,width:s,height:n}=e,o=new G(r,s,n);o.flipY=!0,this.tex=o;const a=r.length,c=new Uint8Array(a);for(let t=0;t>16&255,c[t+1]=e>>8&255,c[t+2]=255&e}const l=new G(c,s,n);l.flipY=!0,l.minFilter=x,l.magFilter=x,this.pickingTex=l,this.addUniforms({map:{value:o},pickingMap:{value:l},mapSize:{value:new t(s,n)}}),this.geometry.setAttribute(\"uv\",new M(Yc,2))}get defaultParameters(){return Kc}getDefines(t){const e=super.getDefines(t),i=this.parameters.filter;return i.startsWith(\"cubic\")&&(e.CUBIC_INTERPOLATION=1,i.endsWith(\"bspline\")?e.BSPLINE_FILTER=1:i.endsWith(\"catmulrom\")?e.CATMULROM_FILTER=1:i.endsWith(\"mitchell\")&&(e.MITCHELL_FILTER=1)),e}updateTexture(){const t=this.tex,e=this.parameters.filter;e.startsWith(\"cubic\")?(t.minFilter=x,t.magFilter=x):\"linear\"===e?(t.minFilter=A,t.magFilter=A):(t.minFilter=x,t.magFilter=x),t.needsUpdate=!0,this.pickingTex.needsUpdate=!0}makeMaterial(){super.makeMaterial(),this.updateTexture();const t=this.material;t.uniforms.map.value=this.tex,t.blending=U,t.needsUpdate=!0;const e=this.wireframeMaterial;e.uniforms.map.value=this.tex,e.blending=U,e.needsUpdate=!0;const i=this.pickingMaterial;i.uniforms.map.value=this.tex,i.uniforms.pickingMap.value=this.pickingTex,i.blending=U,i.needsUpdate=!0}setUniforms(t){t&&void 0!==t.filter&&(this.updateTexture(),t.map=this.tex),super.setUniforms(t)}}class Jc{constructor(t,e){const i=e||{};this.dimension=st(i.dimension,\"x\"),this.positionType=st(i.positionType,\"percent\"),this.position=st(i.position,30),this.thresholdType=st(i.thresholdType,\"sigma\"),this.thresholdMin=st(i.thresholdMin,-1/0),this.thresholdMax=st(i.thresholdMax,1/0),this.normalize=st(i.normalize,!1),this.volume=t}getPositionFromCoordinate(t){const i=this.dimension,r=this.volume,s=r.matrix,n=(new e).setFromMatrixPosition(s)[i],o=(new e).setFromMatrixScale(s)[i];let a;return a=\"x\"===i?r.nx:\"y\"===i?r.ny:r.nz,Math.round(((t-n)/(a/100)+1)/o)}getData(t){t=t||{};const i=this.volume,r=i.data,s=i.matrix;let n;function o(t){return Math.round(t/100*(n-1))}function a(t,e,r,s){return 3*(r*i.ny*i.nx+e*i.nx+t)+s}n=\"coordinate\"===this.positionType?this.getPositionFromCoordinate(this.position):this.position;const c=new Float32Array(12),l=new e;let h,d,u,m,p,f=0,g=0,y=0,b=i.nx,x=i.ny,v=i.nz;function w(t,e,i,r){l.set(t,e,i).applyMatrix4(s).toArray(c,r)}\"x\"===this.dimension?(u=o(i.nx),m=i.ny-1,p=i.nz-1,h=i.nz,d=i.ny,f=u,b=f+1,w(u,0,0,0),w(u,m,0,3),w(u,0,p,6),w(u,m,p,9)):\"y\"===this.dimension?(u=i.nx-1,m=o(i.ny),p=i.nz-1,h=i.nz,d=i.nx,g=m,x=g+1,w(0,m,0,0),w(u,m,0,3),w(0,m,p,6),w(u,m,p,9)):\"z\"===this.dimension&&(u=i.nx-1,m=i.ny-1,p=o(i.nz),h=i.nx,d=i.ny,y=p,v=y+1,w(0,0,p,0),w(0,m,p,3),w(u,0,p,6),w(u,m,p,9));let A=0,_=0;const S=new Uint8Array(h*d*4),C=new Float32Array(h*d);let P,I;\"sigma\"===this.thresholdType?(P=i.getValueForSigma(this.thresholdMin),I=i.getValueForSigma(this.thresholdMax)):(P=this.thresholdMin,I=this.thresholdMax);const k=Object.assign({},t.colorParams,{volume:i});this.normalize&&(k.domain=[0,1]);const M=Fe.getScheme(k),T=new Float32Array(3),B=M.getScale();let D,$=0,O=0;if(this.normalize){$=1/0,D=-1/0;for(let t=g;tD&&(D=s)}O=D-$}for(let t=g;tP&&n{this.viewer.add(t)})),this.setVisibility(this.visible),t()}create(){const t=new Jc(this.volume,{positionType:this.positionType,position:this.position,dimension:this.dimension,thresholdType:this.thresholdType,thresholdMin:this.thresholdMin,thresholdMax:this.thresholdMax,normalize:this.normalize}),e=new Qc(t.getData({colorParams:this.getColorParams()}),this.getBufferParams({filter:this.filter}));this.bufferList.push(e)}}function el(t){Me.error(`makeRepresentation: representation type ${t} unknown`)}const il={name:\"some element\",status:\"\"};class rl{constructor(t,e={}){this.stage=t,this.signals={statusChanged:new et,nameChanged:new et,disposed:new et},this.parameters=nt(e,this.defaultParameters),this.uuid=Bt()}get defaultParameters(){return il}get name(){return this.parameters.name}setStatus(t){return this.parameters.status=t,this.signals.statusChanged.dispatch(t),this}setName(t){return this.parameters.name=t,this.signals.nameChanged.dispatch(t),this}dispose(){this.signals.disposed.dispatch()}}const sl=Object.assign({visible:!0},il);class nl extends rl{constructor(t,e,i={},r){super(t,Object.assign({name:e.type},i)),this.parent=r,this.signals=Object.assign({visibilityChanged:new et,parametersChanged:new et},this.signals),this.setRepresentation(e)}get defaultParameters(){return sl}get visible(){return this.parameters.visible}get type(){return\"representation\"}getType(){return this.repr.type}setRepresentation(t){this._disposeRepresentation(),this.repr=t,this.stage.tasks.listen(this.repr.tasks),this.updateVisibility()}_disposeRepresentation(){this.repr&&(this.stage.tasks.unlisten(this.repr.tasks),this.repr.dispose())}dispose(){this.parent&&this.parent.hasRepresentation(this)?this.parent.removeRepresentation(this):(this._disposeRepresentation(),this.signals.disposed.dispatch())}setVisibility(t){return this.parameters.visible=t,this.updateVisibility(),this.signals.visibilityChanged.dispatch(this.parameters.visible),this}getVisibility(){return this.parent?this.parent.parameters.visible&&this.parameters.visible:this.parameters.visible}toggleVisibility(){return this.setVisibility(!this.parameters.visible)}updateVisibility(){this.repr.setVisibility(this.getVisibility())}update(t){return this.repr.update(t),this}build(t){return this.repr.build(t),this}setSelection(t){const e=this.repr;return e.setSelection&&e.setSelection(t),this}setParameters(t){return this.repr.setParameters(t),this.signals.parametersChanged.dispatch(this.repr.getParameters()),this}getParameters(){return this.repr.getParameters()}setColor(t){return this.repr.setColor(t),this}}const ol=new i,al=new e,cl={name:\"\",status:\"\",visible:!0};class ll{constructor(t,s,n={}){this.stage=t,this.object=s,this.signals={representationAdded:new et,representationRemoved:new et,visibilityChanged:new et,matrixChanged:new et,statusChanged:new et,nameChanged:new et,disposed:new et},this.reprList=[],this.annotationList=[],this.matrix=new i,this.position=new e,this.quaternion=new r,this.scale=new e(1,1,1),this.transform=new i,this.parameters=nt(n,this.defaultParameters),this.uuid=Bt(),this.viewer=t.viewer,this.controls=new ua(this)}get defaultParameters(){return cl}get name(){return this.parameters.name}get status(){return this.parameters.status}get visible(){return this.parameters.visible}setPosition(t){return Array.isArray(t)?this.position.fromArray(t):this.position.copy(t),this.updateMatrix(),this}setRotation(t){if(Array.isArray(t))if(3===t.length){const e=(new j).fromArray(t);this.quaternion.setFromEuler(e)}else this.quaternion.fromArray(t);else t instanceof j?this.quaternion.setFromEuler(t):this.quaternion.copy(t);return this.updateMatrix(),this}setScale(t){return this.scale.set(t,t,t),this.updateMatrix(),this}setTransform(t){return this.transform.copy(t),this.updateMatrix(),this}updateMatrix(){const t=this.getCenterUntransformed(al);this.matrix.makeTranslation(-t.x,-t.y,-t.z),ol.makeRotationFromQuaternion(this.quaternion),this.matrix.premultiply(ol),ol.makeScale(this.scale.x,this.scale.y,this.scale.z),this.matrix.premultiply(ol);const e=this.position;ol.makeTranslation(e.x+t.x,e.y+t.y,e.z+t.z),this.matrix.premultiply(ol),this.matrix.premultiply(this.transform),this.updateRepresentationMatrices(),this.stage.viewer.updateBoundingBox(),this.signals.matrixChanged.dispatch(this.matrix)}updateRepresentationMatrices(){this.reprList.forEach((t=>{t.setParameters({matrix:this.matrix})}))}addAnnotation(t,e,i){const r=new ca(this,t,e,i);return this.annotationList.push(r),r}eachAnnotation(t){this.annotationList.slice().forEach(t)}removeAnnotation(t){const e=this.annotationList.indexOf(t);-1!==e&&(this.annotationList.splice(e,1),t.dispose())}removeAllAnnotations(){this.eachAnnotation((t=>t.dispose())),this.annotationList.length=0}_addRepresentation(t,e,i,r=!1){const s=i||{},n=this.stage.getParameters();s.matrix=this.matrix.clone(),s.quality=s.quality||n.quality,s.disableImpostor=st(s.disableImpostor,!n.impostor),s.useWorker=st(s.useWorker,n.workerDefault),s.visible=st(s.visible,!0);const o=Object.assign({},s,{visible:this.parameters.visible&&s.visible}),a=function(t,e,i,r){var s;if(De&&Me.time(\"makeRepresentation \"+t),e instanceof Cc){if(!(s=Ne.get(t)))return void el(t)}else if(e instanceof Oo)if(\"surface\"===t)s=Yo;else{if(\"dot\"!==t)return void el(t);s=qc}else if(e instanceof Eo)if(\"surface\"===t)s=Yo;else if(\"dot\"===t)s=qc;else{if(\"slice\"!==t)return void el(t);s=tl}else if(e instanceof Mc)s=Tc,e=e.getBufferList();else{if(\"buffer\"!==t)return void Me.error(\"makeRepresentation: object \"+e+\" unknown\");s=Tc}const n=new s(e,i,r);return De&&Me.timeEnd(\"makeRepresentation \"+t),n}(t,e,this.viewer,o),c=new nl(this.stage,a,s,this);return r||(this.reprList.push(c),this.signals.representationAdded.dispatch(c)),c}addBufferRepresentation(t,e){return this._addRepresentation.call(this,\"buffer\",t,e)}hasRepresentation(t){return-1!==this.reprList.indexOf(t)}eachRepresentation(t){this.reprList.slice().forEach(t)}removeRepresentation(t){const e=this.reprList.indexOf(t);-1!==e&&(this.reprList.splice(e,1),t.dispose(),this.signals.representationRemoved.dispatch(t))}updateRepresentations(t){this.reprList.forEach((e=>e.update(t))),this.stage.viewer.requestRender()}removeAllRepresentations(){this.eachRepresentation((t=>t.dispose()))}dispose(){this.removeAllAnnotations(),this.removeAllRepresentations(),this.reprList.length=0,this.signals.disposed.dispatch()}setVisibility(t){return this.parameters.visible=t,this.eachRepresentation((t=>t.updateVisibility())),this.eachAnnotation((t=>t.updateVisibility())),this.signals.visibilityChanged.dispatch(t),this}setStatus(t){return this.parameters.status=t,this.signals.statusChanged.dispatch(t),this}setName(t){return this.parameters.name=t,this.signals.nameChanged.dispatch(t),this}getBox(...t){return this.getBoxUntransformed(...t).clone().applyMatrix4(this.matrix)}getCenter(...t){return this.getCenterUntransformed(...t).clone().applyMatrix4(this.matrix)}getZoom(...t){return this.stage.getZoomForBox(this.getBox(...t))}getBoxUntransformed(...t){return new a}getCenterUntransformed(...t){return this.getBoxUntransformed().getCenter(new e)}autoView(t){this.stage.animationControls.zoomMove(this.getCenter(),this.getZoom(),st(t,0))}}class hl{constructor(t=[]){this.list=t;const e=t.length;for(let i=0;i0?this.list[0]:void 0}forEach(t){return this.list.forEach(t),this}dispose(){return this.forEach((t=>t.dispose()))}}class dl extends hl{setParameters(t){return this.forEach((e=>e.setParameters(t)))}setVisibility(t){return this.forEach((e=>e.setVisibility(t)))}setSelection(t){return this.forEach((e=>e.setSelection(t)))}setColor(t){return this.forEach((e=>e.setColor(t)))}update(t){return this.forEach((e=>e.update(t)))}build(t){return this.forEach((e=>e.build(t)))}dispose(t){return this.forEach((t=>t.dispose()))}}const ul=Object.assign({defaultStep:1,defaultTimeout:50,defaultInterpolateType:\"\",defaultInterpolateStep:5,defaultMode:\"loop\",defaultDirection:\"forward\",initialFrame:0},il);class ml extends rl{constructor(t,e,i={}){super(t,Object.assign({name:e.name},i)),this.trajectory=e,this.signals=Object.assign(this.signals,{frameChanged:new et,playerChanged:new et,countChanged:new et,parametersChanged:new et}),e.signals.frameChanged.add((t=>{this.signals.frameChanged.dispatch(t)})),e.signals.playerChanged.add((t=>{this.signals.playerChanged.dispatch(t)})),e.signals.countChanged.add((t=>{this.signals.countChanged.dispatch(t)})),void 0!==i.initialFrame&&this.setFrame(i.initialFrame)}get defaultParameters(){return ul}get type(){return\"trajectory\"}setFrame(t){this.trajectory.setFrame(t)}setParameters(t={}){this.trajectory.setParameters(t),this.signals.parametersChanged.dispatch(t)}dispose(){this.trajectory.dispose(),super.dispose()}}class pl{constructor(t,e){this.name=t,this.path=e,this.coordinates=[],this.boxes=[],this.times=[],this.timeOffset=0,this.deltaTime=1}get type(){return\"Frames\"}}class fl{constructor(t,e){let r,s;if(this.A=new ho(3,3),this.W=new ho(1,3),this.U=new ho(3,3),this.V=new ho(3,3),this.VH=new ho(3,3),this.R=new ho(3,3),this.tmp=new ho(3,3),this.c=new ho(3,3),t instanceof Cc)r=t.atomCount;else{if(!(t instanceof Float32Array))return;r=t.length/3}if(e instanceof Cc)s=e.atomCount;else{if(!(e instanceof Float32Array))return;s=e.length/3}const n=Math.min(r,s),o=new ho(3,n),a=new ho(3,n);this.coords1t=new ho(n,3),this.coords2t=new ho(n,3),this.transformationMatrix=new i,this.c.data.set([1,0,0,0,1,0,0,0,-1]),this.prepCoords(t,o,n,!1),this.prepCoords(e,a,n,!1),this._superpose(o,a)}_superpose(t,e){this.mean1=fo(t),this.mean2=fo(e),go(t,this.mean1),go(e,this.mean2),uo(this.coords1t,t),uo(this.coords2t,e),mo(this.A,this.coords2t,this.coords1t),wo(this.A,this.W,this.U,this.V),function(t,e){const i=t.data,r=e.data,s=i[4],n=i[8],o=i[5],a=i[7],c=i[0],l=c*s,h=c*o,d=i[3],u=i[1],m=d*u,p=i[2],f=d*p,g=i[6],y=g*u,b=g*p,x=1/(l*n-h*a-m*n+f*a+y*o-b*s);r[0]=(s*n-o*a)*x,r[1]=-(u*n-p*a)*x,r[2]=-(-u*o+p*s)*x,r[3]=-(d*n-o*g)*x,r[4]=(c*n-b)*x,r[5]=-(h-f)*x,r[6]=-(-d*a+s*g)*x,r[7]=-(c*a-y)*x,r[8]=(l-m)*x}(this.V,this.VH),po(this.R,this.U,this.VH),function(t){const e=t.data;return e[0]*e[4]*e[8]-e[0]*e[5]*e[7]-e[3]*e[1]*e[8]+e[3]*e[2]*e[7]+e[6]*e[1]*e[5]-e[6]*e[2]*e[4]}(this.R)<0&&(De&&Me.log(\"R not a right handed system\"),po(this.tmp,this.c,this.VH),po(this.R,this.U,this.tmp));const i=new ho(4,4),r=new ho(4,4),s=new ho(4,4),n=new ho(4,4),o=new ho(4,4),a=new ho(4,4),c=this.R.data,l=this.mean1,h=this.mean2;n.data.set([1,0,0,-l[0],0,1,0,-l[1],0,0,1,-l[2],0,0,0,1]),o.data.set([c[0],c[1],c[2],0,c[3],c[4],c[5],0,c[6],c[7],c[8],0,0,0,0,1]),a.data.set([1,0,0,h[0],0,1,0,h[1],0,0,1,h[2],0,0,0,1]),uo(r,n),mo(i,o,r),uo(s,i),mo(r,a,s),uo(i,r),this.transformationMatrix.elements=i.data}prepCoords(t,e,i,r){let s=0;const n=e.data;let o=3,a=3*i;if(r&&(a=4*i,o=4),t instanceof Cc)t.eachAtom((function(t){s{t!==this&&this.pause()}),this);const i=st(t.frameCount,1);this.traj=t,this.parameters=nt(e,gl),this.parameters.end=Math.min(st(e.end,i-1),i-1),this.parameters.step=st(e.step,Math.ceil((i+1)/100)),this._currentFrame=this.parameters.start,this._direction=\"bounce\"===this.parameters.direction?\"forward\":this.parameters.direction,t.signals.countChanged.add((t=>{this.parameters.end=Math.min(st(this.parameters.end,t-1),t-1)}),this),this._animate=this._animate.bind(this)}get isRunning(){return this._run}setParameters(t={}){ot(this.parameters,t),void 0!==t.direction&&\"bounce\"!==this.parameters.direction&&(this._direction=this.parameters.direction)}_animate(){if(!this._run)return;this._currentTime=window.performance.now();const t=this._currentTime-this._previousTime,e=this.parameters.interpolateType?this.parameters.interpolateStep:1,i=this.parameters.timeout/e,r=this.traj;if(r&&r.frameCount&&!r.inProgress&&t>=i)if(this.parameters.interpolateType)if(this._currentStep>this.parameters.interpolateStep&&(this._currentStep=1),1===this._currentStep&&(this._currentFrame=this._nextInterpolated()),r.hasFrame(this._currentFrame)){this._currentStep+=1;const t=this._currentStep/(this.parameters.interpolateStep+1),[e,i,s,n]=this._currentFrame;r.setFrameInterpolated(e,i,s,n,t,this.parameters.interpolateType),this._previousTime=this._currentTime}else r.loadFrame(this._currentFrame);else{const t=this._next();r.hasFrame(t)?(r.setFrame(t),this._previousTime=this._currentTime):r.loadFrame(t)}window.requestAnimationFrame(this._animate)}_next(){const t=this.parameters;let e;return e=\"forward\"===this._direction?this.traj.currentFrame+t.step:this.traj.currentFrame-t.step,(e>t.end||e=t.end?i=t.start:\"backward\"===t.direction&&e<=t.start&&(i=t.end),this.traj.setFrame(i),this._run=!0,this._animate(),this.signals.startedRunning.dispatch()}}pause(){this._run=!1,this.signals.haltedRunning.dispatch()}stop(){this.pause(),this.traj.setFrame(this.parameters.start)}}class bl{constructor(t,e,i={}){this.signals={countChanged:new et,frameChanged:new et,playerChanged:new et},this.frameCache={},this.loadQueue={},this.boxCache={},this.pathCache={},this.frameCacheSize=0,this._frameCount=0,this._currentFrame=-1,this._disposed=!1,this.deltaTime=st(i.deltaTime,0),this.timeOffset=st(i.timeOffset,0),this.centerPbc=st(i.centerPbc,!1),this.removePbc=st(i.removePbc,!1),this.removePeriodicity=st(i.removePeriodicity,!1),this.superpose=st(i.superpose,!1),this.name=t.replace(/^.*[\\\\/]/,\"\"),this.trajPath=t,this.selection=new pe(st(i.sele,\"backbone and not hydrogen\")),this.selection.signals.stringChanged.add((()=>{this.selectionIndices=this.structure.getAtomIndices(this.selection),this._resetCache(),this._saveInitialCoords(),this.setFrame(this._currentFrame)}))}get frameCount(){return this._frameCount}get currentFrame(){return this._currentFrame}_init(t){this.setStructure(t),this._loadFrameCount(),this.setPlayer(new yl(this))}_loadFrameCount(){}setStructure(t){this.structure=t,this.atomCount=t.atomCount,this.backboneIndices=this._getIndices(new pe(\"backbone and not hydrogen\")),this._makeAtomIndices(),this._saveStructureCoords(),this.selectionIndices=this._getIndices(this.selection),this._resetCache(),this._saveInitialCoords(),this.setFrame(this._currentFrame)}_saveInitialCoords(){this.structure.hasCoords()?(this.initialCoords=new Float32Array(this.structureCoords),this._makeSuperposeCoords()):this.frameCache[0]?(this.initialCoords=new Float32Array(this.frameCache[0]),this._makeSuperposeCoords()):this.loadFrame(0,(()=>this._saveInitialCoords()))}_saveStructureCoords(){this.structureCoords=this.structure.getAtomData({what:{position:!0}}).position}setSelection(t){return this.selection.setString(t),this}_getIndices(t){let e=0;const i=t.test,r=[];return i&&this.structure.eachAtom((t=>{i(t)&&r.push(e),e+=1})),r}_makeSuperposeCoords(){const t=3*this.selectionIndices.length;this.coords1=new Float32Array(t),this.coords2=new Float32Array(t);const e=this.initialCoords,i=this.coords2;for(let r=0;r!!this.frameCache[t])):!!this.frameCache[t]}setFrame(t,e){return void 0===t||(this.inProgress=!0,-1===t||this.frameCache[t]?(this._updateStructure(t),e&&e()):this.loadFrame(t,(()=>{this._updateStructure(t),e&&e()}))),this}_interpolate(t,e,i,r,s,n){const o=this.frameCache;let a;a=\"spline\"===n?function(t,e,i,r,s){const n=t.length,o=new Float32Array(n);for(let a=0;a{this._interpolate(t,e,i,r,s,n),o&&o()})):(this._interpolate(t,e,i,r,s,n),o&&o()),this}loadFrame(t,e){Array.isArray(t)?t.forEach((t=>{this.loadQueue[t]||this.frameCache[t]||(this.loadQueue[t]=!0,this._loadFrame(t,(()=>{delete this.loadQueue[t]})))})):this.loadQueue[t]||this.frameCache[t]||(this.loadQueue[t]=!0,this._loadFrame(t,(()=>{delete this.loadQueue[t],e&&e()})))}_loadFrame(t,e){Me.error(\"Trajectory._loadFrame not implemented\",t,e)}_updateStructure(t){this._disposed?console.error(\"updateStructure: traj disposed\"):(-1===t?this.structureCoords&&this.structure.updatePosition(this.structureCoords):this.structure.updatePosition(this.frameCache[t]),this.structure.trajectory={name:this.trajPath,frame:t},this._currentFrame=t,this.inProgress=!1,this.signals.frameChanged.dispatch(t))}_doSuperpose(t){const e=3*this.selectionIndices.length,i=this.coords1,r=this.coords2;for(let r=0;r0&&this.centerPbc){const t=[e[0],e[4],e[8]],r=function(t,e,i){return[wi(e,i[0],3,0,t),wi(e,i[1],3,1,t),wi(e,i[2],3,2,t)]}(this.backboneIndices,i,t);!function(t,e,i){if(0===i[0]||0===i[8]||0===i[4])return;const r=t.length,s=i[0],n=i[1],o=i[2],a=-e[0]+s+s/2,c=-e[1]+n+n/2,l=-e[2]+o+o/2;for(let e=0;e.5&&(t[s+r]-=e[3*r+r]*Math.round(n))}}(i,e,t)}this.removePbc&&function(t,e){if(0===e[0]||0===e[8]||0===e[4])return;const i=t.length;for(let r=3;r.9*e[3*i+i])if(s>0)for(let s=0;s<3;++s)t[r+s]-=e[3*i+s];else for(let s=0;s<3;++s)t[r+s]+=e[3*i+s]}}(i,e)}this.selectionIndices.length>0&&this.coords1&&this.superpose&&this._doSuperpose(i),this.frameCache[t]=i,this.boxCache[t]=e,this.frameCacheSize+=1}_setFrameCount(t){t!==this._frameCount&&(this._frameCount=t,this.signals.countChanged.dispatch(t))}dispose(){this._resetCache(),this._disposed=!0,this.player&&this.player.stop()}setPlayer(t){this.player=t,this.signals.playerChanged.dispatch(t)}getFrameTime(t){return this.timeOffset+t*this.deltaTime}}class xl extends bl{constructor(t,e,i){const r=i||{};r.timeOffset=st(r.timeOffset,t.timeOffset),r.deltaTime=st(r.deltaTime,t.deltaTime),super(\"\",e,r),this.name=t.name,this.path=t.path,this.frames=t.coordinates,this.boxes=t.boxes,this._init(e)}get type(){return\"frames\"}_makeAtomIndices(){\"StructureView\"===this.structure.type?this.atomIndices=this.structure.getAtomIndices():this.atomIndices=void 0}_loadFrame(t,e){let i;const r=this.frames[t];if(this.atomIndices){const t=this.atomIndices,e=t.length;i=new Float32Array(3*e);for(let s=0;s{const s=i.response;if(!s)return void Me.error(`empty arrayBuffer for '${r}'`);const n=new Int32Array(s,0,1)[0],o=new Float32Array(s,8,9),a=new Float32Array(s,44);this._process(t,o,a,n),\"function\"==typeof e&&e()}),!1),i.send(s)}_loadFrameCount(){const t=new XMLHttpRequest,e=qe.getCountUrl(this.trajPath);t.open(\"GET\",e,!0),t.addEventListener(\"load\",(()=>{this._setFrameCount(parseInt(t.response))}),!1),t.send()}}class Al extends bl{constructor(t,e,i){super(\"\",e,i),this.requestCallback=t,this._init(e)}get type(){return\"callback\"}_makeAtomIndices(){const t=[];if(\"StructureView\"===this.structure.type){const e=this.structure.getAtomIndices(),i=e.length;let r=e[0],s=e[0];for(let n=1;n{this._process(t,i,r,s),\"function\"==typeof e&&e()}),t,this.atomIndices)}_loadFrameCount(){this.requestCallback((t=>this._setFrameCount(t)))}}Cc.prototype.getView=function(t){return new _l(this,t)};class _l extends Cc{constructor(t,i){super(),this.structure=t,this.selection=i,this.center=new e,this.boundingBox=new a,this._bp=this.getBondProxy(),this._ap=this.getAtomProxy(),this._rp=this.getResidueProxy(),this._cp=this.getChainProxy(),this.selection&&this.selection.signals.stringChanged.add(this.refresh,this),this.structure.signals.refreshed.add(this.refresh,this),this.refresh()}init(){}get type(){return\"StructureView\"}get name(){return this.structure.name}get path(){return this.structure.path}get title(){return this.structure.title}get id(){return this.structure.id}get data(){return this.structure.data}get atomSetDict(){return this.structure.atomSetDict}get biomolDict(){return this.structure.biomolDict}get entityList(){return this.structure.entityList}get unitcell(){return this.structure.unitcell}get frames(){return this.structure.frames}get boxes(){return this.structure.boxes}get validation(){return this.structure.validation}get bondStore(){return this.structure.bondStore}get backboneBondStore(){return this.structure.backboneBondStore}get rungBondStore(){return this.structure.rungBondStore}get atomStore(){return this.structure.atomStore}get residueStore(){return this.structure.residueStore}get chainStore(){return this.structure.chainStore}get modelStore(){return this.structure.modelStore}get atomMap(){return this.structure.atomMap}get residueMap(){return this.structure.residueMap}get bondHash(){return this.structure.bondHash}get spatialHash(){return this.structure.spatialHash}get _hasCoords(){return this.structure._hasCoords}set _hasCoords(t){this.structure._hasCoords=t}refresh(){De&&Me.time(\"StructureView.refresh\"),this.atomSetCache={};const t=this.structure;if(this.selection.isAllSelection()&&t!==this&&t.atomSet&&t.bondSet){this.atomSet=t.atomSet.clone(),this.bondSet=t.bondSet.clone();for(let t in this.atomSetDict){const e=this.atomSetDict[t];this.atomSetCache[\"__\"+t]=e.clone()}this.atomCount=t.atomCount,this.bondCount=t.bondCount,this.boundingBox.copy(t.boundingBox),this.center.copy(t.center)}else if(this.selection.isNoneSelection()&&t!==this&&t.atomSet&&t.bondSet){this.atomSet=new Os(t.atomCount),this.bondSet=new Os(t.bondCount);for(let e in this.atomSetDict)this.atomSetCache[\"__\"+e]=new Os(t.atomCount);this.atomCount=0,this.bondCount=0,this.boundingBox.makeEmpty(),this.center.set(0,0,0)}else{this.atomSet=this.getAtomSet(this.selection,!0),t.atomSet&&(this.atomSet=this.atomSet.intersection(t.atomSet)),this.bondSet=this.getBondSet();for(let t in this.atomSetDict){const e=this.atomSetDict[t];this.atomSetCache[\"__\"+t]=e.makeIntersection(this.atomSet)}this.atomCount=this.atomSet.getSize(),this.bondCount=this.bondSet.getSize(),this.boundingBox=this.getBoundingBox(),this.center=this.boundingBox.getCenter(new e)}De&&Me.timeEnd(\"StructureView.refresh\"),this.signals.refreshed.dispatch()}setSelection(t){this.selection=t,this.refresh()}getSelection(t){const e=[];t&&t.string&&e.push(t.string);const i=this.structure.getSelection();i&&i.string&&e.push(i.string),this.selection&&this.selection.string&&e.push(this.selection.string);let r=\"\";return e.length>0&&(r=`( ${e.join(\" ) AND ( \")} )`),new pe(r)}getStructure(){return this.structure.getStructure()}eachBond(t,e){this.structure.eachBond(t,this.getSelection(e))}eachAtom(t,e){const i=this.getAtomProxy(),r=this.getAtomSet(e),s=this.atomStore.count;if(r.getSize()=this.V[i][r]?(e=\"S\",this.score=this.S[i][r]):this.V[i][r]>=this.H[i][r]?(e=\"V\",this.score=this.V[i][r]):(e=\"H\",this.score=this.H[i][r]),De&&Me.log(\"Alignment: SCORE\",this.score),De&&Me.log(\"Alignment: S, V, H\",this.S[i][r],this.V[i][r],this.H[i][r]);i>0&&r>0;)\"S\"===e?this.S[i][r]===this.S[i-1][r-1]+t(i-1,r-1)?(this.ali1=this.seq1[i-1]+this.ali1,this.ali2=this.seq2[r-1]+this.ali2,--i,--r,e=\"S\"):this.S[i][r]===this.V[i][r]?e=\"V\":this.S[i][r]===this.H[i][r]?e=\"H\":(--i,--r):\"V\"===e?this.V[i][r]===this.V[i-1][r]+this.gapExtensionPenalty?(this.ali1=this.seq1[i-1]+this.ali1,this.ali2=\"-\"+this.ali2,--i,e=\"V\"):this.V[i][r]===this.S[i-1][r]+this.gap(0)?(this.ali1=this.seq1[i-1]+this.ali1,this.ali2=\"-\"+this.ali2,--i,e=\"S\"):--i:\"H\"===e?this.H[i][r]===this.H[i][r-1]+this.gapExtensionPenalty?(this.ali1=\"-\"+this.ali1,this.ali2=this.seq2[r-1]+this.ali2,--r,e=\"H\"):this.H[i][r]===this.S[i][r-1]+this.gap(0)?(this.ali1=\"-\"+this.ali1,this.ali2=this.seq2[r-1]+this.ali2,--r,e=\"S\"):--r:Me.error(\"Alignment: no matrix\");for(;i>0;)this.ali1=this.seq1[i-1]+this.ali1,this.ali2=\"-\"+this.ali2,--i;for(;r>0;)this.ali1=\"-\"+this.ali1,this.ali2=this.seq2[r-1]+this.ali2,--r;De&&Me.timeEnd(\"Alignment.trace\"),De&&Me.log([this.ali1,this.ali2])}}function kl(t,e,i=!1,r=\"\",s=\"\"){let n,o,a,c,l;if(i){let i=t,h=e;r&&s&&(i=t.getView(new pe(r)),h=e.getView(new pe(s)));const d=i.getSequence(),u=h.getSequence(),m=new Il(d.join(\"\"),u.join(\"\"));let p,f;m.calc(),m.trace(),n=0,o=0,a=m.ali1.length;const g=[],y=[];for(let t=0;tt[e]))}}}(),this.spacefillRepresentation=this.addRepresentation(\"spacefill\",{sele:\"none\",opacity:Te.opacity,color:Te.color,disablePicking:!0,radiusType:\"data\"},!0),this.distanceRepresentation=this.addRepresentation(\"distance\",Te,!0),this.angleRepresentation=this.addRepresentation(\"angle\",Te,!0),this.dihedralRepresentation=this.addRepresentation(\"dihedral\",Te,!0),this.measureRepresentations=new dl([this.spacefillRepresentation,this.distanceRepresentation,this.angleRepresentation,this.dihedralRepresentation]),this.setDefaultAssembly(this.parameters.defaultAssembly),this.structure.signals.refreshed.add((()=>{this.updateRepresentations({position:!0})}))}get defaultParameters(){return Ml}get type(){return\"structure\"}initSelection(t){this.selection=new pe(t),this.structureView=new _l(this.structure,this.selection),this.selection.signals.stringChanged.add((()=>{this.structureView.setSelection(this.selection),this.rebuildRepresentations(),this.rebuildTrajectories()}))}setSelection(t){return this.parameters.sele=t,this.selection.setString(t),this}setDefaultAssembly(t){if(void 0===this.structure.biomolDict[t]&&(t=\"\"),this.parameters.defaultAssembly!==t){const e={defaultAssembly:t};this.reprList.forEach((t=>t.setParameters(e))),this.measureRepresentations.setParameters(e),this.parameters.defaultAssembly=t,this.signals.defaultAssemblyChanged.dispatch(t)}return this}rebuildRepresentations(){this.reprList.forEach((t=>{t.build()})),this.measureRepresentations.build()}rebuildTrajectories(){this.trajList.forEach((t=>{t.trajectory.setStructure(this.structureView)}))}updateRepresentations(t){super.updateRepresentations(t),this.measureRepresentations.update(t)}updateRepresentationMatrices(){super.updateRepresentationMatrices(),this.measureRepresentations.setParameters({matrix:this.matrix})}addRepresentation(t,e={},i=!1){e.defaultAssembly=this.parameters.defaultAssembly;const r=this._addRepresentation(t,this.structureView,e,i);return i||r.signals.parametersChanged.add((()=>this.measureUpdate())),r}addTrajectory(t=\"\",e={}){const i=function(t,e,i){let r;return r=t&&t instanceof pl?new xl(t,e,i):!t&&e.frames?new vl(t,e,i):t&&\"function\"==typeof t?new Al(t,e,i):new wl(t,e,i),r}(t,this.structureView,e),r=new ml(this.stage,i,e);return this.trajList.push(r),this.signals.trajectoryAdded.dispatch(r),r}removeTrajectory(t){const e=this.trajList.indexOf(t);-1!==e&&this.trajList.splice(e,1),t.dispose(),this.signals.trajectoryRemoved.dispatch(t)}dispose(){this.trajList.slice().forEach((t=>t.dispose())),this.trajList.length=0,this.structure.dispose(),this.measureRepresentations.dispose(),super.dispose()}autoView(t,e){\"number\"==typeof t&&(e=t,t=\"\"),this.stage.animationControls.zoomMove(this.getCenter(t),this.getZoom(t),st(e,0))}getBoxUntransformed(t){let e;return e=t?this.structureView.getBoundingBox(new pe(t)):this.structureView.boundingBox,e}getCenterUntransformed(t){return t&&\"string\"==typeof t?this.structure.atomCenter(new pe(t)):this.structure.center}superpose(t,e,i,r){return kl(this.structureView,t.structureView,e,i,r),this.updateRepresentations({position:!0}),this}getMaxRepresentationRadius(t){let e=0;const i=this.structure.getAtomProxy(t);return this.eachRepresentation((t=>{if(t.getVisibility()){const r=t.repr;e=Math.max(r.getAtomRadius(i),e)}})),e}measurePick(t){const e=this.pickBuffer.count;if(this.lastPick===t.index&&e>=1){if(e>1){const t=this.pickBuffer.data,i=this.pickBuffer.data.sort();this.pickDict.has(i)?this.pickDict.del(i):this.pickDict.add(i,t),2===e?this.distanceRepresentation.setParameters({atomPair:this.pickDict.values.filter((t=>2===t.length))}):3===e?this.angleRepresentation.setParameters({atomTriple:this.pickDict.values.filter((t=>3===t.length))}):4===e&&this.dihedralRepresentation.setParameters({atomQuad:this.pickDict.values.filter((t=>4===t.length))})}this.pickBuffer.clear(),this.lastPick=void 0}else this.pickBuffer.has(t.index)||this.pickBuffer.push(t.index),this.lastPick=t.index;this.measureUpdate()}measureClear(){this.pickBuffer.clear(),this.lastPick=void 0,this.spacefillRepresentation.setSelection(\"none\")}measureBuild(){const t=this.measureData();this.distanceRepresentation.setParameters({atomPair:t.distance}),this.angleRepresentation.setParameters({atomTriple:t.angle}),this.dihedralRepresentation.setParameters({atomQuad:t.dihedral})}measureUpdate(){const t=this.pickBuffer.data,e={};t.forEach((t=>{const i=Math.max(.1,this.getMaxRepresentationRadius(t));e[t]=i*(2.3-Rt(.1,2,i))})),this.spacefillRepresentation.setSelection(t.length?\"@\"+t.join(\",\"):\"none\"),t.length&&this.spacefillRepresentation.setParameters({radiusData:e})}measureData(){const t=this.pickDict.values;return{distance:t.filter((t=>2===t.length)),angle:t.filter((t=>3===t.length)),dihedral:t.filter((t=>4===t.length))}}removeAllMeasurements(t){const e=this.pickDict,i=e.values,r=function(t){i.filter((e=>e.length===t)).forEach((t=>e.del(t.slice().sort())))};(!t||1&t)&&r(2),(!t||2&t)&&r(3),(!t||4&t)&&r(4),this.measureBuild()}removeMeasurement(t){this.pickDict.del(t.slice().sort()),this.measureBuild()}addMeasurement(t){if(t.length<2||t.length>4)return;const e=t.slice().sort();this.pickDict.has(e)||this.pickDict.add(e,t),this.measureBuild()}}Ue.add(\"structure\",Tl),Ue.add(\"structureview\",Tl);class Bl extends ll{constructor(t,e,i={}){super(t,e,Object.assign({name:e.name},i)),this.surface=e}get type(){return\"surface\"}addRepresentation(t,e={}){return this._addRepresentation(t,this.surface,e)}getBoxUntransformed(){return this.surface.boundingBox}getCenterUntransformed(){return this.surface.center}dispose(){this.surface.dispose(),super.dispose()}}Ue.add(\"surface\",Bl);class Dl extends ll{constructor(t,e,i={}){super(t,e,Object.assign({name:e.name},i)),this.volume=e}get type(){return\"volume\"}addRepresentation(t,e={}){return this._addRepresentation(t,this.volume,e)}getBoxUntransformed(){return this.volume.boundingBox}getCenterUntransformed(){return this.volume.center}dispose(){this.volume.dispose(),super.dispose()}}Ue.add(\"volume\",Dl);class $l extends hl{addRepresentation(t,e){return this.forEach((i=>i.addRepresentation(t,e)))}autoView(t){return this.forEach((e=>e.autoView(t)))}}function Ol(t,e){return t instanceof RegExp?null!==e.name.match(t):e.name===t}const Rl=new e,El={impostor:!0,quality:\"medium\",workerDefault:!0,sampleLevel:0,backgroundColor:\"black\",rotateSpeed:2,zoomSpeed:1.2,panSpeed:1,clipNear:0,clipFar:100,clipDist:10,clipMode:\"scene\",clipScale:\"relative\",fogNear:50,fogFar:100,cameraFov:40,cameraEyeSep:.3,cameraType:\"perspective\",lightColor:14540253,lightIntensity:1,ambientColor:14540253,ambientIntensity:.2,hoverTimeout:0,tooltip:!0,mousePreset:\"default\"};class Fl{constructor(t,e={}){this.signals={parametersChanged:new et,fullscreenChanged:new et,componentAdded:new et,componentRemoved:new et,clicked:new et,hovered:new et},this.tasks=new ui,this.compList=[],this.defaultFileParams={},this.logList=[],this.viewer=new Ji(t),this.viewer.renderer&&(this.tooltip=document.createElement(\"div\"),Object.assign(this.tooltip.style,{display:\"none\",position:\"fixed\",zIndex:\"1000000\",pointerEvents:\"none\",backgroundColor:\"rgba( 0, 0, 0, 0.6 )\",color:\"lightgrey\",padding:\"8px\",fontFamily:\"sans-serif\"}),this.viewer.container.appendChild(this.tooltip),this.mouseObserver=new sr(this.viewer.renderer.domElement),this.viewerControls=new kr(this),this.trackballControls=new gr(this),this.pickingControls=new xr(this),this.animationControls=new Lr(this),this.mouseControls=new Jo(this),this.keyControls=new ia(this),this.pickingBehavior=new ra(this),this.mouseBehavior=new sa(this),this.animationBehavior=new na(this),this.keyBehavior=new aa(this),this.spinAnimation=this.animationControls.spin([0,1,0],.005),this.spinAnimation.pause(!0),this.rockAnimation=this.animationControls.rock([0,1,0],.005),this.rockAnimation.pause(!0),this.parameters=nt(e,El),this.setParameters(this.parameters),this.viewer.animate())}setParameters(t={}){ot(this.parameters,t);const e=t,i=this.parameters,r=this.viewer,s=this.trackballControls;return void 0!==e.quality&&this.setQuality(i.quality),void 0!==e.impostor&&this.setImpostor(i.impostor),void 0!==e.rotateSpeed&&(s.rotateSpeed=i.rotateSpeed),void 0!==e.zoomSpeed&&(s.zoomSpeed=i.zoomSpeed),void 0!==e.panSpeed&&(s.panSpeed=i.panSpeed),void 0!==e.mousePreset&&this.mouseControls.preset(i.mousePreset),this.mouseObserver.setParameters({hoverTimeout:i.hoverTimeout}),r.setClip(i.clipNear,i.clipFar,i.clipDist,i.clipMode,i.clipScale),r.setFog(void 0,i.fogNear,i.fogFar),r.setCamera(i.cameraType,i.cameraFov,i.cameraEyeSep),r.setSampling(i.sampleLevel),r.setBackground(i.backgroundColor),r.setLight(i.lightColor,i.lightIntensity,i.ambientColor,i.ambientIntensity),this.signals.parametersChanged.dispatch(this.getParameters()),this}log(t){console.log(\"STAGE LOG\",t),this.logList.push(t)}getParameters(){return Object.assign({},this.parameters)}defaultFileRepresentation(t){if(t instanceof Tl){let e,i,r;t.setSelection(\"/0\");const s=t.structure;if(s.biomolDict.BU1){const n=s.biomolDict.BU1;e=n.getAtomCount(s),i=n.getResidueCount(s),r=n.getInstanceCount(),t.setDefaultAssembly(\"BU1\")}else e=s.getModelProxy(0).atomCount,i=s.getModelProxy(0).residueCount,r=1;let n=e;Se&&(n*=4);const o=s.atomStore.count/s.residueStore.count<2;o&&(n*=10);let a=\"chainname\",c=\"RdYlBu\",l=!1;if(1===s.getChainnameCount(new pe(\"polymer and /0\"))&&(a=\"residueindex\",c=\"Spectral\",l=!0),De&&console.log(n,e,r,o),i/r<4)t.addRepresentation(\"ball+stick\",{colorScheme:\"element\",radiusScale:2,aspectRatio:1.5,bondScale:.3,bondSpacing:.75,quality:\"auto\"});else if(r>5&&n>15e3||n>7e5){let e=Math.min(2,Math.max(.1,6e3/(n/r)));o&&(e=Math.min(e,.5)),t.addRepresentation(\"surface\",{colorScheme:a,colorScale:c,colorReverse:l,sele:\"polymer\",surfaceType:\"av\",probeRadius:1.4,scaleFactor:e,useWorker:!1})}else n>25e4?t.addRepresentation(\"backbone\",{colorScheme:a,colorScale:c,colorReverse:l,lineOnly:!0}):n>1e5?t.addRepresentation(\"backbone\",{colorScheme:a,colorScale:c,colorReverse:l,quality:\"low\",disableImpostor:!0,radiusScale:2}):n>8e4?t.addRepresentation(\"backbone\",{colorScheme:a,colorScale:c,colorReverse:l,radiusScale:2}):(t.addRepresentation(\"cartoon\",{colorScheme:a,colorScale:c,colorReverse:l,radiusScale:.7,aspectRatio:5,quality:\"auto\"}),n<5e4&&t.addRepresentation(\"base\",{colorScheme:a,colorScale:c,colorReverse:l,quality:\"auto\"}),t.addRepresentation(\"ball+stick\",{sele:\"ligand\",colorScheme:\"element\",radiusScale:2,aspectRatio:1.5,bondScale:.3,bondSpacing:.75,quality:\"auto\"}));t.structure.frames.length&&t.addTrajectory()}else(t instanceof Bl||t instanceof Dl)&&t.addRepresentation(\"surface\");this.tasks.onZeroOnce(this.autoView,this)}loadFile(t,e={}){const i=Object.assign({},this.defaultFileParams,e),r=ri(t).name;this.tasks.increment(),this.log(`loading file '${r}'`);const s=st(i.ext,ri(t).ext);let n;return n=ze.isTrajectory(s)?Promise.reject(new Error(`loadFile: ext '${s}' is a trajectory and must be loaded into a structure component`)):ni(t,i),n.then((t=>{this.log(`loaded '${r}'`);const e=this.addComponentFromObject(t,i);return i.defaultRepresentation&&this.defaultFileRepresentation(e),this.tasks.decrement(),e}),(t=>{this.tasks.decrement();const e=`error loading file: '${t}'`;throw this.log(e),e}))}loadScript(t){const e=ri(t).name;return this.log(`loading script '${e}'`),ni(t).then((t=>{this.tasks.increment(),this.log(`running script '${e}'`),t.run(this).then((()=>{this.tasks.decrement(),this.log(`finished script '${e}'`)})),this.log(`called script '${e}'`)}),(t=>{this.tasks.decrement();const i=`errored script '${e}' \"${t}\"`;throw this.log(i),i}))}addComponent(t){t?(this.compList.push(t),this.signals.componentAdded.dispatch(t)):Me.warn(\"Stage.addComponent: no component given\")}addComponentFromObject(t,e={}){const i=Ue.get(t.type);if(i){const r=new i(this,t,e);return this.addComponent(r),r}Me.warn(\"no component for object type\",t.type)}removeComponent(t){const e=this.compList.indexOf(t);-1!==e&&(this.compList.splice(e,1),t.dispose(),this.signals.componentRemoved.dispatch(t))}removeAllComponents(){this.compList.slice().forEach((t=>this.removeComponent(t)))}handleResize(){this.viewer.handleResize()}setSize(t,e){const i=this.viewer.container;i!==document.body&&(void 0!==t&&(i.style.width=t),void 0!==e&&(i.style.height=e),this.handleResize())}toggleFullscreen(t){if(!(document.fullscreenEnabled||document.mozFullScreenEnabled||document.webkitFullscreenEnabled||document.msFullscreenEnabled))return void Me.log(\"fullscreen mode (currently) not possible\");const e=this;function i(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement}function r(){if(!i()&&e.lastFullscreenElement){const t=e.lastFullscreenElement;t.style.width=t.dataset.normalWidth||\"\",t.style.height=t.dataset.normalHeight||\"\",document.removeEventListener(\"fullscreenchange\",r),document.removeEventListener(\"mozfullscreenchange\",r),document.removeEventListener(\"webkitfullscreenchange\",r),document.removeEventListener(\"MSFullscreenChange\",r),e.handleResize(),e.signals.fullscreenChanged.dispatch(!1)}}t=t||this.viewer.container,this.lastFullscreenElement=t,i()?document.exitFullscreen?document.exitFullscreen():document.msExitFullscreen?document.msExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen():(t.dataset.normalWidth=t.style.width||\"\",t.dataset.normalHeight=t.style.height||\"\",t.style.width=window.screen.width+\"px\",t.style.height=window.screen.height+\"px\",t.requestFullscreen?t.requestFullscreen():t.msRequestFullscreen?t.msRequestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.webkitRequestFullscreen&&t.webkitRequestFullscreen(),document.addEventListener(\"fullscreenchange\",r),document.addEventListener(\"mozfullscreenchange\",r),document.addEventListener(\"webkitfullscreenchange\",r),document.addEventListener(\"MSFullscreenChange\",r),this.handleResize(),this.signals.fullscreenChanged.dispatch(!0),setTimeout((function(){e.handleResize()}),100))}setSpin(t){t?(this.spinAnimation.resume(!0),this.rockAnimation.pause(!0)):this.spinAnimation.pause(!0)}setRock(t){t?(this.rockAnimation.resume(!0),this.spinAnimation.pause(!0)):this.rockAnimation.pause(!0)}toggleSpin(){this.setSpin(this.spinAnimation.paused)}toggleRock(){this.setRock(this.rockAnimation.paused)}getFocus(){const t=this.parameters;if(\"scene\"!==t.clipMode)return 0;let e=t.clipNear;return\"absolute\"===t.clipScale&&(e=this.viewer.absoluteToRelative(e)),2*e}setFocus(t){if(\"scene\"!==this.parameters.clipMode)return;let e,i,r,s;\"relative\"===this.parameters.clipScale?(e=Dt(t/2,0,49.9),i=100-e,r=50,s=function(t){return Dt(t,0,100)}(2*i-50)):(e=this.viewer.relativeToAbsolute(t/2),i=e,r=0,s=2*i),this.setParameters({clipNear:e,clipFar:i,fogNear:r,fogFar:s})}getZoomForBox(t){const e=t.getSize(Rl),i=Math.max(e.x,e.y,e.z),r=Math.min(e.x,e.y,e.z);let s=i+Math.sqrt(r);const n=kt(this.viewer.perspectiveCamera.fov),o=this.viewer.width,a=this.viewer.height,c=a{this.tasks.onZeroOnce((()=>{this.tasks.increment(),this.viewer.makeImage(t).then((t=>{this.tasks.decrement(),e(t)})).catch((t=>{this.tasks.decrement(),i(t)}))}))}))}setImpostor(t){this.parameters.impostor=t;const e=[\"spacefill\",\"ball+stick\",\"licorice\",\"hyperball\",\"backbone\",\"rocket\",\"helixorient\",\"contact\",\"distance\",\"dot\"];this.eachRepresentation((function(i){if(!e.includes(i.getType()))return;const r=i.getParameters();r.disableImpostor=!t,i.build(r)}))}setQuality(t){this.parameters.quality=t;const e=[\"tube\",\"cartoon\",\"ribbon\",\"trace\",\"rope\"],i=[\"spacefill\",\"ball+stick\",\"licorice\",\"hyperball\",\"backbone\",\"rocket\",\"helixorient\",\"contact\",\"distance\",\"dot\"];this.eachRepresentation((function(r){const s=r.getParameters();if(!e.includes(r.getType())){if(!i.includes(r.getType()))return;if(!s.disableImpostor)return void(r.repr.quality=t)}s.quality=t,r.build(s)}))}eachComponent(t,e){this.compList.slice().forEach((i=>{void 0!==e&&e!==i.type||t(i)}))}eachRepresentation(t,e){this.eachComponent((i=>{i.reprList.slice().forEach((r=>{void 0!==e&&e!==r.getType()||t(r,i)}))}))}getComponentsByName(t){const e=[];return this.eachComponent((i=>{(void 0===t||Ol(t,i))&&e.push(i)})),new $l(e)}getComponentsByObject(t){const e=[];return this.eachComponent((i=>{i.object===t&&e.push(i)})),new $l(e)}getRepresentationsByName(t){const e=[];return this.eachRepresentation(((i,r)=>{(void 0===t||Ol(t,i))&&e.push(i)})),new dl(e)}measureClear(){this.eachComponent((t=>t.measureClear()),\"structure\")}measureUpdate(){this.eachComponent((t=>t.measureUpdate()),\"structure\")}dispose(){this.tasks.dispose(),this.viewer.dispose(),this.mouseObserver.dispose()}}class Ll extends ll{constructor(t,e,i={}){super(t,e,Object.assign({name:e.name},i)),this.shape=e}get type(){return\"shape\"}addRepresentation(t,e={}){return this._addRepresentation(t,this.shape,e)}getBoxUntransformed(){return this.shape.boundingBox}getCenterUntransformed(){return this.shape.center}dispose(){this.shape.dispose(),super.dispose()}}function Nl(t,e,i,r){var s,n=arguments.length,o=n<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r;if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.decorate)o=Reflect.decorate(t,e,i,r);else for(var a=t.length-1;a>=0;a--)(s=t[a])&&(o=(n<3?s(o):n>3?s(e,i,o):s(e,i))||o);return n>3&&o&&Object.defineProperty(e,i,o),o}Ue.add(\"shape\",Ll);class zl extends zt{constructor(t){super(t),t.scale||(this.parameters.scale=\"rainbow\",this.parameters.reverse=st(t.reverse,!0)),this.scalePerModel={},t.structure.eachModel((t=>{this.parameters.domain=[t.atomOffset,t.atomEnd],this.scalePerModel[t.index]=this.getScale()}))}atomColor(t){return this.scalePerModel[t.modelIndex](t.index)}}Nl([Nt],zl.prototype,\"atomColor\",null),Fe.add(\"atomindex\",zl);class Vl extends zt{constructor(t){if(super(t),t.scale||(this.parameters.scale=\"OrRd\"),!t.domain){let e,i=1/0,r=-1/0;t.sele&&(e=new pe(t.sele)),t.structure.eachAtom((function(t){const e=t.bfactor;i=Math.min(i,e),r=Math.max(r,e)}),e),this.parameters.domain=[i,r]}this.bfactorScale=this.getScale()}atomColor(t){return this.bfactorScale(t.bfactor)}}Nl([Nt],Vl.prototype,\"atomColor\",null),Fe.add(\"bfactor\",Vl);class Gl extends zt{constructor(t){super(t),this.chainidDictPerModel={},this.scalePerModel={},t.scale||(this.parameters.scale=\"Spectral\"),t.structure.eachModel((t=>{let e=0;const i={};t.eachChain((function(t){void 0===i[t.chainid]&&(i[t.chainid]=e,e+=1)})),this.parameters.domain=[0,e-1],this.chainidDictPerModel[t.index]=i,this.scalePerModel[t.index]=this.getScale()}))}atomColor(t){const e=this.chainidDictPerModel[t.modelIndex];return this.scalePerModel[t.modelIndex](e[t.chainid])}}Nl([Nt],Gl.prototype,\"atomColor\",null),Fe.add(\"chainid\",Gl);class Ul extends zt{constructor(t){super(t),this.scalePerModel={},t.scale||(this.parameters.scale=\"Spectral\"),t.structure.eachModel((t=>{this.parameters.domain=[t.chainOffset,t.chainEnd],this.scalePerModel[t.index]=this.getScale()}))}atomColor(t){return this.scalePerModel[t.modelIndex](t.chainIndex)}}Nl([Nt],Ul.prototype,\"atomColor\",null),Fe.add(\"chainindex\",Ul);class jl extends zt{constructor(t){super(t),this.chainnameDictPerModel={},this.scalePerModel={},t.scale||(this.parameters.scale=\"Spectral\"),t.structure.eachModel((t=>{let e=0;const i={};t.eachChain((function(t){void 0===i[t.chainname]&&(i[t.chainname]=e,e+=1)})),this.parameters.domain=[0,e-1],this.chainnameDictPerModel[t.index]=i,this.scalePerModel[t.index]=this.getScale()}))}atomColor(t){const e=this.chainnameDictPerModel[t.modelIndex];return this.scalePerModel[t.modelIndex](e[t.chainname])}}Nl([Nt],jl.prototype,\"atomColor\",null),Fe.add(\"chainname\",jl);class Hl extends zt{constructor(t){super(t),this.rsrzDict={},this.rsccDict={},t.scale||(this.parameters.scale=\"RdYlBu\"),this.rsrzScale=this.getScale({domain:[2,0]}),this.rsccScale=this.getScale({domain:[.678,1]});const e=t.structure.validation;e&&(this.rsrzDict=e.rsrzDict,this.rsccDict=e.rsccDict)}atomColor(t){let e=t.resno+\"\";t.inscode&&(e+=\"^\"+t.inscode),t.chainname&&(e+=\":\"+t.chainname),e+=\"/\"+t.modelIndex;const i=this.rsrzDict[e];if(void 0!==i)return this.rsrzScale(i);const r=this.rsccDict[e];return void 0!==r?this.rsccScale(r):9474192}}Nl([Nt],Hl.prototype,\"atomColor\",null),Fe.add(\"densityfit\",Hl);const Wl={ARG:{CD:.1,CZ:.5,NE:-.1},ASN:{CG:.55,OD1:-.55},ASP:{CB:-.16,CG:.36,OD1:-.6,OD2:-.6},CYS:{CB:.19,SG:-.19},GLN:{CD:.55,OE1:-.55},GLU:{CD:.36,CG:-.16,OE1:-.6,OE2:-.6},HIS:{CB:.1,CD2:.2,CE1:.45,CG:.15,ND1:.05,NE2:.05},LYS:{CE:.25,NZ:.75},MET:{CE:.06,CG:.06,SD:-.12},PTR:{C:.55,CA:.1,CZ:.25,N:-.35,O:-.55,O1P:-.85,O2P:-.85,O3P:-.85,OG1:-1.1,P:1.4},SEP:{C:.55,CA:.1,CB:.25,N:-.35,O:-.55,O1P:-.85,O2P:-.85,O3P:-.85,OG1:-1.1,P:1.4},SER:{CB:.25,OG:-.25},THR:{CB:.25,OG1:-.25},TPO:{C:.55,CA:.1,CB:.25,N:-.35,O:-.55,OG1:-1.1,O1P:-.85,O2P:-.85,O3P:-.85,P:1.4},TRP:{CD1:.06,CD2:.1,CE2:-.04,CE3:-.03,CG:-.03,NE1:-.06},TYR:{CZ:.25,OH:-.25},backbone:{C:.55,O:-.55,N:-.35,CA:.1}};class ql extends zt{constructor(t){super(t),this.delta=new e,this.hCharges=[],t.scale||(this.parameters.scale=\"rwb\"),t.domain||(this.parameters.domain=[-50,50]),this.scale=this.getScale(),this.charges=new Float32Array(t.structure.atomCount);const i=[];t.structure.eachAtom((t=>{var r;if(this.charges[t.index]=(null!==(r=t).partialCharge?r.partialCharge:r.isProtein()&&(Wl[r.resname]&&Wl[r.resname][r.atomname]||Wl.backbone[r.atomname])||0)*t.occupancy,\"N\"===t.atomname){if(t.bondCount>=3)return;if(t.bondToElementCount(1))return;const r=function(t,i=new e){let r=!1,s=!1,n=!1;return i.set(2*t.x,2*t.y,2*t.z),t.eachBondedAtom((function(t){if(!r)return\"H\"===t.atomname?(i.set(t.x,t.y,t.z),void(r=!0)):void(s||\"CA\"!==t.atomname?n||\"C\"!==t.atomname||(n=!0,i.sub(t)):(i.sub(t),s=!0))})),r?i:s&&n?(i.normalize(),i.multiplyScalar(1.04),i.add(t),i):void 0}(t);void 0!==r&&(i.push(r),this.hCharges.push(.25*t.occupancy))}}));const r=t.structure.getBoundingBox();r.expandByScalar(1.04),this.hStore=function(t){const e=t.length,i=new Float32Array(e),r=new Float32Array(e),s=new Float32Array(e);for(let e=0;e{const s=e[t];0!==s&&(r+=s/i)})),this.hHash.eachWithin(t.x,t.y,t.z,12,((t,e)=>{const s=i[t];0!==s&&(r+=s/e)})),this.scale(332*r)}}Nl([Nt],ql.prototype,\"positionColor\",null),Fe.add(\"electrostatic\",ql);const Xl={H:16777215,HE:14286847,LI:13402367,BE:12779264,B:16758197,C:9474192,N:3166456,O:16715021,F:9494608,NE:11789301,NA:11230450,MG:9109248,AL:12560038,SI:1578e4,P:16744448,S:16777008,CL:2093087,AR:8442339,K:9388244,CA:4062976,SC:15132390,TI:12567239,V:10921643,CR:9083335,MN:10255047,FE:14706227,CO:15765664,NI:5296208,CU:13140019,ZN:8224944,GA:12750735,GE:6721423,AS:12419299,SE:16752896,BR:10889513,KR:6076625,RB:7351984,SR:65280,Y:9764863,ZR:9756896,NB:7586505,MO:5551541,TC:3907230,RU:2396047,RH:687500,PD:27013,AG:12632256,CD:16767375,IN:10909043,SN:6717568,SB:10380213,TE:13924864,I:9699476,XE:9699476,CS:5707663,BA:51456,LA:7394559,CE:16777159,PR:14286791,ND:13107143,PM:10747847,SM:9437127,EU:6422471,GD:4587463,TB:3211207,DY:2097095,HO:65436,ER:58997,TM:54354,YB:48952,LU:43812,HF:5096191,TA:5089023,W:2200790,RE:2522539,OS:2516630,IR:1528967,PT:13684960,AU:16765219,HG:12105936,TL:10900557,PB:5724513,BI:10375093,PO:11230208,AT:7688005,RN:4358806,FR:4325478,RA:32e3,AC:7384058,TH:47871,PA:41471,U:36863,NP:33023,PU:27647,AM:5528818,CM:7888099,BK:9064419,CF:10565332,ES:11739092,FM:11739066,MD:11734438,NO:12389767,LR:13041766,RF:13369433,DB:13697103,SG:14221381,BH:14680120,HS:15073326,MT:15400998,DS:16777215,RG:16777215,CN:16777215,UUT:16777215,FL:16777215,UUP:16777215,LV:16777215,UUH:16777215,D:16777152,T:16777120};class Yl extends zt{constructor(t){t.value=st(t.value,Xl.C),super(t)}atomColor(t){const e=t.element;return\"C\"===e?this.parameters.value:Xl[e]||16777215}}Nl([Nt],Yl.prototype,\"atomColor\",null),Fe.add(\"element\",Yl);class Kl extends zt{constructor(t){super(t),t.scale||(this.parameters.scale=\"Spectral\"),t.domain||(this.parameters.domain=[0,t.structure.entityList.length-1]),this.entityindexScale=this.getScale()}atomColor(t){return this.entityindexScale(t.entityIndex)}}Nl([Nt],Kl.prototype,\"atomColor\",null),Fe.add(\"entityindex\",Kl);class Zl extends zt{atomColor(t){const e=t.entity;switch(e?e.entityType:void 0){case 1:return 8374655;case 2:return 16629894;case 3:return 12496596;case 4:return 3697840;default:return 16777113}}}Nl([Nt],Zl.prototype,\"atomColor\",null),Fe.add(\"entitytype\",Zl);class Ql extends zt{constructor(t){super(t),this.geoAtomDict={},this.geoDict={};const e=t.structure.validation;e&&(this.geoAtomDict=e.geoAtomDict,this.geoDict=e.geoDict)}atomColor(t){let e,i=t.resno+\"\";t.inscode&&(i+=\"^\"+t.inscode),t.chainname&&(i+=\":\"+t.chainname),i+=\"/\"+t.modelIndex;const r=this.geoAtomDict[i];if(void 0!==r){const i=r[t.atomname]||0;s=i,e=16843009*((s=(858993459&(s-=s>>1&1431655765))+(s>>2&858993459))+(s>>4)&252645135)>>24}else e=this.geoDict[i]||0;var s;return 0===e?2188972:1===e?16703627:2===e?16018755:e>=3?10813478:9474192}}Nl([Nt],Ql.prototype,\"atomColor\",null),Fe.add(\"geoquality\",Ql);class Jl extends zt{constructor(t){super(t),this.resHF={},t.scale||(this.parameters.scale=\"RdYlGn\");for(const t in Js)this.resHF[t]=Js[t][0];if(this.defaultResidueHydrophobicity=tn[0],!t.domain){let t=1/0,e=-1/0;for(const i in this.resHF){const r=this.resHF[i];t=Math.min(t,r),e=Math.max(e,r)}this.parameters.domain=[t,0,e]}this.hfScale=this.getScale()}atomColor(t){return this.hfScale(this.resHF[t.resname]||this.defaultResidueHydrophobicity)}}Nl([Nt],Jl.prototype,\"atomColor\",null),Fe.add(\"hydrophobicity\",Jl);class th extends zt{constructor(t){super(t),t.scale||(this.parameters.scale=\"rainbow\"),t.domain||(this.parameters.domain=[0,t.structure.modelStore.count]),this.modelindexScale=this.getScale()}atomColor(t){return this.modelindexScale(t.modelIndex)}}Nl([Nt],th.prototype,\"atomColor\",null),Fe.add(\"modelindex\",th);class eh extends zt{atomColor(t){switch(t.residueType.moleculeType){case 1:return 3697840;case 2:return 15729279;case 3:return 12496596;case 4:return 16629894;case 5:return 12540695;case 6:return 8374655;default:return 16777113}}}Nl([Nt],eh.prototype,\"atomColor\",null),Fe.add(\"moleculetype\",eh);class ih extends zt{constructor(t){super(t),t.scale||(this.parameters.scale=\"PuBu\"),t.domain||(this.parameters.domain=[0,1]),this.occupancyScale=this.getScale()}atomColor(t){return this.occupancyScale(t.occupancy)}}Nl([Nt],ih.prototype,\"atomColor\",null),Fe.add(\"occupancy\",ih);class rh extends zt{constructor(t){super(t),t.scale||(this.parameters.scale=\"rwb\"),t.domain||(this.parameters.domain=[-1,1]),this.partialchargeScale=this.getScale()}atomColor(t){return this.partialchargeScale(t.partialCharge||0)}}function sh(){return 16777215*Math.random()}Nl([Nt],rh.prototype,\"atomColor\",null),Fe.add(\"partialcharge\",rh);class nh extends zt{atomColor(){return sh()}volumeColor(){return sh()}positionColor(){return sh()}}Nl([Nt],nh.prototype,\"atomColor\",null),Nl([Nt],nh.prototype,\"volumeColor\",null),Nl([Nt],nh.prototype,\"positionColor\",null),Fe.add(\"random\",nh);class oh extends zt{constructor(t){super(t),this.rciDict={},t.scale||(this.parameters.scale=\"RdYlBu\"),this.rciScale=this.getScale({domain:[.6,0]});const e=t.structure.validation;e&&(this.rciDict=e.rciDict)}atomColor(t){let e=`[${t.resname}]${t.resno}`;t.chainname&&(e+=\":\"+t.chainname);const i=this.rciDict[e];return void 0!==i?this.rciScale(i):9474192}}Nl([Nt],oh.prototype,\"atomColor\",null),Fe.add(\"randomcoilindex\",oh);class ah extends zt{constructor(t){super(t),this.scalePerChain={},t.scale||(this.parameters.scale=\"rainbow\",this.parameters.reverse=st(t.reverse,!0)),t.structure.eachChain((t=>{this.parameters.domain=[t.residueOffset,t.residueEnd],this.scalePerChain[t.index]=this.getScale()}))}atomColor(t){return this.scalePerChain[t.chainIndex](t.residueIndex)}}Nl([Nt],ah.prototype,\"atomColor\",null),Fe.add(\"residueindex\",ah);const ch={ALA:9240460,ARG:124,ASN:16743536,ASP:10485826,CYS:16777072,GLN:16731212,GLU:6684672,GLY:16777215,HIS:7368959,ILE:19456,LEU:4546117,LYS:4671416,MET:12099650,PHE:5459026,PRO:5395026,SER:16740418,THR:12078080,TRP:5195264,TYR:9203788,VAL:16747775,ASX:16711935,GLX:16711935,ASH:16711935,GLH:16711935,A:14423100,G:3329330,I:10145074,X:8190976,C:16766720,T:4286945,U:4251856,D:35723,DA:14423100,DG:3329330,DI:10145074,DX:8190976,DC:16766720,DT:4286945,DU:4251856,DD:35723};class lh extends zt{atomColor(t){return ch[t.resname]||16711935}}Nl([Nt],lh.prototype,\"atomColor\",null),Fe.add(\"resname\",lh);const hh=16711808,dh=10485888,uh=6291584,mh=16762880,ph=6324479,fh=16777215,gh=11403518,yh=16580962,bh=10921722;class xh extends zt{constructor(t){super(t),this.residueProxy=t.structure.getResidueProxy()}atomColor(t){const e=t.sstruc,i=this.residueProxy;return\"h\"===e?hh:\"g\"===e?dh:\"i\"===e?uh:\"e\"===e||\"b\"===e?mh:\"t\"===e?ph:(i.index=t.residueIndex,i.isDna()?gh:i.isRna()?yh:i.isSaccharide()?bh:i.isProtein()||\"s\"===e||\"l\"===e?fh:8421504)}}Nl([Nt],xh.prototype,\"atomColor\",null),Fe.add(\"sstruc\",xh);class vh extends zt{constructor(t){var e,i;super(t),t.scale||(this.parameters.scale=\"rwb\"),this.atomData=null===(e=this.parameters.data)||void 0===e?void 0:e.atomData,this.bondData=null===(i=this.parameters.data)||void 0===i?void 0:i.bondData,this.scale=this.getScale(this.parameters)}atomColor(t){var e;const i=null===(e=this.atomData)||void 0===e?void 0:e[t.index];return void 0!==i?this.scale(i):this.parameters.value}bondColor(t,e){var i;const r=null===(i=this.bondData)||void 0===i?void 0:i[t.index];return void 0!==r?this.scale(r):this.atomProxy?(this.atomProxy.index=e?t.atomIndex1:t.atomIndex2,this.atomColor(this.atomProxy)):this.parameters.value}}Nl([Nt],vh.prototype,\"atomColor\",null),Nl([Nt],vh.prototype,\"bondColor\",null),Fe.add(\"structuredata\",vh);class wh extends zt{atomColor(){return this.parameters.value}bondColor(){return this.parameters.value}valueColor(){return this.parameters.value}volumeColor(){return this.parameters.value}}Nl([Nt],wh.prototype,\"atomColor\",null),Nl([Nt],wh.prototype,\"bondColor\",null),Nl([Nt],wh.prototype,\"valueColor\",null),Nl([Nt],wh.prototype,\"volumeColor\",null),Fe.add(\"uniform\",wh);class Ah extends zt{constructor(t){super(t),this.valueScale=this.getScale()}volumeColor(t){return this.valueScale(this.parameters.volume.data[t])}}Nl([Nt],Ah.prototype,\"volumeColor\",null),Fe.add(\"value\",Ah);class _h extends zt{constructor(t){super(t),this.vec=new e,this.valueScale=this.getScale()}positionColor(t){const e=this.parameters.volume;if(!e||!e.inverseMatrix)return this.parameters.value;const i=this.vec,r=e.data,s=e.nx,n=e.ny,o=s*n;i.copy(t),i.applyMatrix4(e.inverseMatrix);const a=Math.floor(i.x),c=Math.floor(i.y),l=Math.floor(i.z),h=(l*n+c)*s+a,d=h+1,u=h+s,m=h+o,p=u+1,f=m+1,g=u+o,y=g+1,b=r[h],x=r[d],v=r[u],w=r[m],A=r[p],_=r[f],S=r[g],C=r[y],P=i.x-a,I=i.y-c,k=i.z-l,M=$t(b,x,P),T=$t(w,_,P),B=$t(v,A,P),D=$t(S,C,P),$=$t(M,B,I),O=$t(T,D,I),R=$t($,O,k);return this.valueScale(R)}}Nl([Nt],_h.prototype,\"positionColor\",null),Fe.add(\"volume\",_h);class Sh extends zr{constructor(t,e,i){const r=i||{};if(super(t,e,r),this.type=\"structure\",this.parameters=Object.assign({radiusType:{type:\"select\",options:pa.types},radiusData:{type:\"hidden\"},radiusSize:{type:\"number\",precision:3,max:10,min:.001},radiusScale:{type:\"number\",precision:3,max:10,min:.001},assembly:null,defaultAssembly:{type:\"hidden\"}},this.parameters),this.selection=new pe(r.sele),this.dataList=[],this.structure=t,this.structureView=this.structure.getView(this.selection),t.biomolDict){const e={default:\"default\",\"\":t.unitcell?\"AU\":\"FULL\"};Object.keys(t.biomolDict).forEach((function(t){e[t]=t})),this.parameters.assembly={type:\"select\",options:e,rebuild:!0}}else this.parameters.assembly=null}get defaultScale(){return{vdw:1,covalent:1,bfactor:.01,sstruc:1}}init(t){const e=t||{};e.colorScheme=st(e.colorScheme,\"element\"),this.setRadius(e.radius,e),this.radiusType=st(e.radiusType,\"vdw\"),this.radiusData=st(e.radiusData,{}),this.radiusSize=st(e.radiusSize,1),this.radiusScale=st(e.radiusScale,1),this.assembly=st(e.assembly,\"default\"),this.defaultAssembly=st(e.defaultAssembly,\"\"),\"auto\"===e.quality&&(e.quality=this.getQuality()),super.init(e),this.selection.signals.stringChanged.add((()=>{this.build()})),this.build()}setRadius(t,e){const i=Object.keys(ma);return\"string\"==typeof t&&i.includes(t.toLowerCase())?e.radiusType=t:void 0!==t&&(e.radiusType=\"size\",e.radiusSize=t),this}getAssembly(){const t=\"default\"===this.assembly?this.defaultAssembly:this.assembly;return this.structure.biomolDict[t]}getQuality(){let t;const e=this.structureView,i=this.getAssembly();t=i?i.getAtomCount(e):e.atomCount,Se&&(t*=4);return e.atomStore.count/e.residueStore.count<2&&(t*=10),t<15e3?\"high\":t<8e4?\"medium\":\"low\"}create(){if(0===this.structureView.atomCount)return;if(!this.structureView.hasCoords())return void(this.needsBuild=!0);this.needsBuild=!1;const t=this.getAssembly();if(t)t.partList.forEach(((t,e)=>{const i=t.getView(this.structureView);if(0===i.atomCount)return;const r=this.createData(i,e);r&&(r.sview=i,r.instanceList=t.getInstanceList(),this.dataList.push(r))}));else{const t=this.createData(this.structureView,0);t&&(t.sview=this.structureView,this.dataList.push(t))}}update(t){!this.lazy||this.visible?this.needsBuild?this.build():this.dataList.forEach((e=>{e.bufferList.length>0&&this.updateData(t,e)}),this):Object.assign(this.lazyProps.what,t)}updateData(t,e){this.build()}getColorParams(){return Object.assign(Object.assign({},super.getColorParams()),{structure:this.structure})}getRadiusParams(t){return{type:this.radiusType,scale:this.radiusScale,size:this.radiusSize,data:this.radiusData}}getAtomParams(t,e){return Object.assign({what:t,colorParams:this.getColorParams(),radiusParams:this.getRadiusParams()},e)}getBondParams(t,e){return Object.assign({what:t,colorParams:this.getColorParams(),radiusParams:this.getRadiusParams()},e)}getAtomRadius(t){if(this.structureView.atomSet.isSet(t.index)){return new pa(this.getRadiusParams()).atomRadius(t)}return 0}setSelection(t,e){return this.selection.setString(t,e),this}setParameters(t,e={},i=!1){const r=t||{};return this.setRadius(r.radius,r),void 0===r.radiusType&&void 0===r.radiusData&&void 0===r.radiusSize&&void 0===r.radiusScale||(e.radius=!0,Ie&&!this.disableImpostor||(i=!0)),void 0!==r.defaultAssembly&&r.defaultAssembly!==this.defaultAssembly&&(\"default\"===this.assembly&&void 0===r.assembly||\"default\"===r.assembly)&&(i=!0),super.setParameters(r,e,i),this}getParameters(){return Object.assign(super.getParameters(),{sele:this.selection?this.selection.string:void 0,defaultAssembly:this.defaultAssembly})}attach(t){const e=this.viewer,i=this.bufferList;this.dataList.forEach((function(t){t.bufferList.forEach((function(r){i.push(r),e.add(r,t.instanceList)}))})),this.setVisibility(this.visible),t()}clear(){this.dataList.length=0,super.clear()}dispose(){this.structureView.dispose(),super.dispose()}}class Ch extends Sh{constructor(t,e,i){super(t,e,i),this.n=0,this.parameters=Object.assign({labelVisible:{type:\"boolean\"},labelSize:{type:\"number\",precision:3,max:10,min:.001},labelColor:{type:\"color\"},labelFontFamily:{type:\"select\",options:{\"sans-serif\":\"sans-serif\",monospace:\"monospace\",serif:\"serif\"},buffer:\"fontFamily\"},labelFontStyle:{type:\"select\",options:{normal:\"normal\",italic:\"italic\"},buffer:\"fontStyle\"},labelFontWeight:{type:\"select\",options:{normal:\"normal\",bold:\"bold\"},buffer:\"fontWeight\"},labelsdf:{type:\"boolean\",buffer:\"sdf\"},labelXOffset:{type:\"number\",precision:1,max:20,min:-20,buffer:\"xOffset\"},labelYOffset:{type:\"number\",precision:1,max:20,min:-20,buffer:\"yOffset\"},labelZOffset:{type:\"number\",precision:1,max:20,min:-20,buffer:\"zOffset\"},labelAttachment:{type:\"select\",options:{\"bottom-left\":\"bottom-left\",\"bottom-center\":\"bottom-center\",\"bottom-right\":\"bottom-right\",\"middle-left\":\"middle-left\",\"middle-center\":\"middle-center\",\"middle-right\":\"middle-right\",\"top-left\":\"top-left\",\"top-center\":\"top-center\",\"top-right\":\"top-right\"},rebuild:!0},labelBorder:{type:\"boolean\",buffer:\"showBorder\"},labelBorderColor:{type:\"color\",buffer:\"borderColor\"},labelBorderWidth:{type:\"number\",precision:2,max:.3,min:0,buffer:\"borderWidth\"},labelBackground:{type:\"boolean\",rebuild:!0},labelBackgroundColor:{type:\"color\",buffer:\"backgroundColor\"},labelBackgroundMargin:{type:\"number\",precision:2,max:2,min:0,rebuild:!0},labelBackgroundOpacity:{type:\"range\",step:.01,max:1,min:0,buffer:\"backgroundOpacity\"},labelFixedSize:{type:\"boolean\",buffer:\"fixedSize\"},lineOpacity:{type:\"range\",min:0,max:1,step:.01},linewidth:{type:\"integer\",max:50,min:1,buffer:!0}},this.parameters,{flatShaded:null})}init(t){const e=t||{};this.labelVisible=st(e.labelVisible,!0),this.labelSize=st(e.labelSize,2),this.labelColor=st(e.labelColor,16777215),this.labelFontFamily=st(e.labelFontFamily,\"sans-serif\"),this.labelFontStyle=st(e.labelFontstyle,\"normal\"),this.labelFontWeight=st(e.labelFontWeight,\"bold\"),this.labelsdf=st(e.labelsdf,\"Chrome\"===Ae),this.labelXOffset=st(e.labelXOffset,0),this.labelYOffset=st(e.labelYOffset,0),this.labelZOffset=st(e.labelZOffset,.5),this.labelAttachment=st(e.labelAttachment,\"bottom-left\"),this.labelBorder=st(e.labelBorder,!1),this.labelBorderColor=st(e.labelBorderColor,\"lightgrey\"),this.labelBorderWidth=st(e.labelBorderWidth,.15),this.labelBackground=st(e.labelBackground,!1),this.labelBackgroundColor=st(e.labelBackgroundColor,\"lightgrey\"),this.labelBackgroundMargin=st(e.labelBackgroundMargin,.5),this.labelBackgroundOpacity=st(e.labelBackgroundOpacity,1),this.labelFixedSize=st(e.labelFixedSize,!1),this.lineOpacity=st(e.lineOpacity,1),this.linewidth=st(e.linewidth,2),super.init(e)}update(t){t.position?this.build():super.update(t)}updateData(t,e){const i={};if(t&&!t.labelSize||Object.assign(i,{size:Si(this.n,this.labelSize)}),!t||t.labelColor){const t=new s(this.labelColor);Object.assign(i,{color:Ci(this.n,t.r,t.g,t.b)})}this.textBuffer.setAttributes(i)}setParameters(t,e={},i=!1){return t&&t.labelSize&&(e.labelSize=!0),t&&(t.labelColor||0===t.labelColor)&&(e.labelColor=!0,i=!0),super.setParameters(t,e,i),t&&void 0!==t.opacity&&this.textBuffer.setParameters({opacity:1}),t&&void 0!==t.labelVisible&&this.setVisibility(this.visible),this}setVisibility(t,e){return super.setVisibility(t,!0),this.textBuffer&&this.textBuffer.setVisibility(this.labelVisible&&this.visible),e||this.viewer.requestRender(),this}getLabelBufferParams(t={}){return super.getBufferParams(Object.assign({fontFamily:this.labelFontFamily,fontStyle:this.labelFontStyle,fontWeight:this.labelFontWeight,sdf:this.labelsdf,xOffset:this.labelXOffset,yOffset:this.labelYOffset,zOffset:this.labelZOffset,attachment:this.labelAttachment,showBorder:this.labelBorder,borderColor:this.labelBorderColor,borderWidth:this.labelBorderWidth,showBackground:this.labelBackground,backgroundColor:this.labelBackgroundColor,backgroundMargin:this.labelBackgroundMargin,backgroundOpacity:this.labelBackgroundOpacity,fixedSize:this.labelFixedSize,disablePicking:!0,visible:this.labelVisible},t,{opacity:1}))}getAtomRadius(){return 0}}function Ph(t,e){const i=t.getAtomProxy(),r=new pe,s=e.length;if(0===s)return new Float32Array(0);const n=e[0].length,o=t.getAtomSet(),a=new Float32Array(s*n*3);let c=0;return e.forEach((function(e){let s=!1;for(let l=0;l 1.0 ){\\ngl_FragColor = vec4( backgroundColor, backgroundOpacity );\\n}else{\\nfloat sdf = texture2D( fontTexture, texCoord ).a;\\nif( showBorder ) sdf += borderWidth;\\nfloat a = smoothstep(padding - gamma, padding + gamma, sdf);\\nif( a < 0.2 ) discard;\\na *= opacity;\\nvec3 outgoingLight = vColor;\\nif( showBorder && sdf < ( padding + borderWidth ) ){\\noutgoingLight = borderColor;\\n}\\ngl_FragColor = vec4( outgoingLight, a );\\n}\\n#if defined( PICKING )\\nif( opacity < 0.3 )\\ndiscard;\\ngl_FragColor = vec4( vPickingColor, objectId );\\n#else\\n#include premultiplied_alpha_fragment\\n#include tonemapping_fragment\\n#include encodings_fragment\\n#include fog_fragment\\n#endif\\n}\");const Th={};const Bh={font:\"sans-serif\",size:36,style:\"normal\",variant:\"normal\",weight:\"normal\",outline:3,width:1024,height:1024};class Dh{constructor(t={}){this.gamma=1,this.mapped={},this.scratchW=0,this.scratchH=0,this.currentX=0,this.currentY=0,this.cutoff=.25,this.parameters=nt(t,Bh);const e=this.parameters;this.radius=e.size/8,this.padding=e.size/3;const i=this.lineHeight=e.size+2*e.outline+Math.round(e.size/4),r=this.maxWidth=e.width/4,s=this.canvas=document.createElement(\"canvas\");s.width=r,s.height=i;const n=this.context=this.canvas.getContext(\"2d\");n.font=`${e.style} ${e.variant} ${e.weight} ${e.size}px ${e.font}`,n.fillStyle=\"black\",n.textAlign=\"left\",n.textBaseline=\"bottom\",n.lineJoin=\"round\",this.gridOuter=new Float64Array(i*r),this.gridInner=new Float64Array(i*r),this.f=new Float64Array(Math.max(i,r)),this.d=new Float64Array(Math.max(i,r)),this.z=new Float64Array(Math.max(i,r)+1),this.v=new Int16Array(Math.max(i,r)),this.data=new Uint8Array(e.width*e.height*4),this.canvas2=document.createElement(\"canvas\"),this.canvas2.width=e.width,this.canvas2.height=e.height,this.context2=this.canvas2.getContext(\"2d\"),this.placeholder=this.map(String.fromCharCode(65533));for(let t=32;t<=126;++t)this.map(String.fromCharCode(t));this.map(String.fromCharCode(176)),this.map(String.fromCharCode(8491)),this.texture=new H(this.canvas2),this.texture.flipY=!1,this.texture.needsUpdate=!0}map(t){const e=this.parameters;return void 0===this.mapped[t]&&(this.draw(t),this.currentX+this.scratchW>e.width&&(this.currentX=0,this.currentY+=this.scratchH),this.currentY+this.scratchH>e.height&&console.warn(\"canvas to small\"),this.mapped[t]={x:this.currentX,y:this.currentY,w:this.scratchW,h:this.scratchH},this.context2.drawImage(this.canvas,0,0,this.scratchW,this.scratchH,this.currentX,this.currentY,this.scratchW,this.scratchH),this.currentX+=this.scratchW),this.mapped[t]}get(t){return this.mapped[t]||this.placeholder}draw(t){const e=this.parameters,i=this.lineHeight,r=e.outline,s=this.context,n=this.maxWidth,o=r,a=i-e.outline,c=s.measureText(t),l=Math.min(n,Math.ceil(c.width+2*o+1)),h=l*i;s.clearRect(0,0,l,i),s.fillText(t,o,a);const d=s.getImageData(0,0,l,i),u=d.data;for(let t=0;t= 0.0 ) {\\ntrimSegment( start, end );\\n} else if ( end.z < 0.0 && start.z >= 0.0 ) {\\ntrimSegment( end, start );\\n}\\n}\\nvec4 clipStart = projectionMatrix * start;\\nvec4 clipEnd = projectionMatrix * end;\\nvec2 ndcStart = clipStart.xy / clipStart.w;\\nvec2 ndcEnd = clipEnd.xy / clipEnd.w;\\nvec2 dir = ndcEnd - ndcStart;\\ndir.x *= aspect;\\ndir = normalize( dir );\\nvec2 offset = vec2( dir.y, - dir.x );\\ndir.x /= aspect;\\noffset.x /= aspect;\\nif ( mapping.x < 0.0 ) offset *= - 1.0;\\noffset *= linewidth;\\noffset /= resolution.y;\\nvec4 clip = ( mapping.y < 0.5 ) ? clipStart : clipEnd;\\noffset *= clip.w;\\nclip.xy += offset;\\ngl_Position = clip;\\n#ifndef PICKING\\nvViewPosition = ( projectionMatrixInverse * clip ).xyz;\\n#endif\\n#if defined( RADIUS_CLIP )\\nvClipCenter = -( modelViewMatrix * vec4( clipCenter, 1.0 ) ).xyz;\\n#endif\\n#include nearclip_vertex\\n}\"),Ve.add(\"shader/WideLine.frag\",\"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float clipNear;\\nuniform float clipRadius;\\n#if defined( RADIUS_CLIP )\\nvarying vec3 vClipCenter;\\n#endif\\n#ifdef PICKING\\nuniform float objectId;\\nvarying vec3 vPickingColor;\\n#else\\n#include common\\n#include fog_pars_fragment\\nvarying vec3 vViewPosition;\\nvarying vec3 vColor;\\nvarying vec3 vColor2;\\nvarying float flag;\\n#endif\\nvoid main() {\\n#include nearclip_fragment\\n#include radiusclip_fragment\\n#if defined( PICKING )\\nif( opacity < 0.3 )\\ndiscard;\\ngl_FragColor = vec4( vPickingColor, objectId );\\n#else\\nvec3 outgoingLight = vec3( 0.0 );\\nvec4 diffuseColor = vec4( diffuse, 1.0 );\\nif ( flag < 0.0 ) {\\ndiffuseColor.rgb *= vColor;\\n} else {\\ndiffuseColor.rgb *= vColor2;\\n}\\n#include alphatest_fragment\\noutgoingLight = diffuseColor.rgb;\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a * opacity );\\n#include premultiplied_alpha_fragment\\n#include tonemapping_fragment\\n#include encodings_fragment\\n#include fog_fragment\\n#endif\\n}\");const Fh=Object.assign({linewidth:2},zo),Lh=Object.assign({linewidth:{uniform:!0}},Vo);class Nh extends zc{constructor(e,r={}){super(e,r),this.parameterTypes=Lh,this.vertexShader=\"WideLine.vert\",this.fragmentShader=\"WideLine.frag\",!e.color2&&e.color&&(e.color2=e.color),this.addUniforms({linewidth:{value:this.parameters.linewidth},resolution:{value:new t},projectionMatrixInverse:{value:new i}}),this.addAttributes({position1:{type:\"v3\",value:null},position2:{type:\"v3\",value:null},color2:{type:\"c\",value:null}}),this.setAttributes(e),this.makeMapping()}get defaultParameters(){return Fh}setParameters(t){super.setParameters(t)}}je.add(\"wideline\",Nh);class zh extends Ch{constructor(t,e,i){super(t,e,i),this.type=\"angle\",this.parameters=Object.assign({atomTriple:{type:\"hidden\",rebuild:!0},vectorVisible:{type:\"boolean\",default:!0},arcVisible:{type:\"boolean\",default:!0},sectorVisible:{type:\"boolean\",default:!0}},this.parameters),this.init(i)}init(t){const e=t||{};e.side=st(e.side,\"double\"),e.opacity=st(e.opacity,.5),this.atomTriple=st(e.atomTriple,[]),this.arcVisible=st(e.arcVisible,!0),this.sectorVisible=st(e.sectorVisible,!0),this.vectorVisible=st(e.vectorVisible,!0),super.init(e)}createData(t){if(!t.atomCount||!this.atomTriple.length)return;const e=function(t,e){return function(t){const e=[],i=t.length/9;for(let r=0;r radius2) {\\ndiscard;\\n}\\n#ifdef CAP\\nsurface_point = front_point;\\n_normal = axis;\\n#else\\nsurface_point = ray_target + ( (-a1 - sqrt(d)) / a2 ) * ray_direction;\\ndNV = dot(-axis, ray_direction);\\nnear = dot(axis, end) / dNV;\\nnew_point2 = ray_direction * near + ray_origin;\\nif (dot(new_point2 - end, new_point2-base) < radius2) {\\ndiscard;\\n}\\ninterior = true;\\n#endif\\n}\\nif( end_cap_test > 0.0 )\\n{\\nfloat dNV;\\nfloat near;\\nvec3 end_point;\\nif ( ortho == 1.0 ) {\\nend_point = ray_target;\\n} else {\\ndNV = dot(axis, ray_direction);\\nif (dNV < 0.0) {\\ndiscard;\\n}\\nnear = dot(axis, end) / dNV;\\nend_point = ray_direction * near + ray_origin;\\n}\\n\\nif( dot(end_point - end, end_point-base) > radius2 ) {\\ndiscard;\\n}\\n#ifdef CAP\\nsurface_point = end_point;\\n_normal = axis;\\n#else\\nsurface_point = ray_target + ( (-a1 - sqrt(d)) / a2 ) * ray_direction;\\ndNV = dot(-axis, ray_direction);\\nnear = dot(-axis, (base)) / dNV;\\nnew_point2 = ray_direction * near + ray_origin;\\nif (dot(new_point2 - base, new_point2-base) < radius2) {\\ndiscard;\\n}\\ninterior = true;\\n#endif\\n}\\ngl_FragDepthEXT = calcDepth( surface_point );\\n\\n#ifdef NEAR_CLIP\\nif( calcClip( surface_point ) > 0.0 ){\\ndist = (-a1 - sqrt(d)) / a2;\\nsurface_point = ray_target + dist * ray_direction;\\nif( calcClip( surface_point ) > 0.0 ) {\\ndiscard;\\n}\\ninterior = true;\\ngl_FragDepthEXT = calcDepth( surface_point );\\nif( gl_FragDepthEXT >= 0.0 ){\\ngl_FragDepthEXT = max( 0.0, calcDepth( vec3( - ( clipNear - 0.5 ) ) ) + ( 0.0000001 / vRadius ) );\\n}\\n}else if( gl_FragDepthEXT <= 0.0 ){\\ndist = (-a1 - sqrt(d)) / a2;\\nsurface_point = ray_target + dist * ray_direction;\\ninterior = true;\\ngl_FragDepthEXT = calcDepth( surface_point );\\nif( gl_FragDepthEXT >= 0.0 ){\\ngl_FragDepthEXT = 0.0 + ( 0.0000001 / vRadius );\\n}\\n}\\n#else\\nif( gl_FragDepthEXT <= 0.0 ){\\ndist = (-a1 - sqrt(d)) / a2;\\nsurface_point = ray_target + dist * ray_direction;\\ninterior = true;\\ngl_FragDepthEXT = calcDepth( surface_point );\\nif( gl_FragDepthEXT >= 0.0 ){\\ngl_FragDepthEXT = 0.0 + ( 0.0000001 / vRadius );\\n}\\n}\\n#endif\\nif (gl_FragDepthEXT < 0.0) {\\ndiscard;\\n}\\nif (gl_FragDepthEXT > 1.0) {\\ndiscard;\\n}\\n#ifdef PICKING\\nif( opacity < 0.3 )\\ndiscard;\\ngl_FragColor = vec4( vPickingColor, objectId );\\n#else\\nvec3 vViewPosition = -surface_point;\\nvec3 vNormal = _normal;\\nvec3 vColor;\\nif( distSq3( surface_point, end ) < distSq3( surface_point, base ) ){\\nif( b < 0.0 ){\\nvColor = vColor1;\\n}else{\\nvColor = vColor2;\\n}\\n}else{\\nif( b > 0.0 ){\\nvColor = vColor1;\\n}else{\\nvColor = vColor2;\\n}\\n}\\nvec4 diffuseColor = vec4( diffuse, opacity );\\nReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\nvec3 totalEmissiveLight = emissive;\\n#include color_fragment\\n#include roughnessmap_fragment\\n#include metalnessmap_fragment\\nvec3 normal = normalize( vNormal );\\nvec3 geometryNormal = normal;\\n#include lights_physical_fragment\\n#include lights_fragment_begin\\n#include lights_fragment_end\\nvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveLight;\\nif( interior ){\\n#ifdef USE_INTERIOR_COLOR\\noutgoingLight.xyz = interiorColor;\\n#else\\n#ifdef DIFFUSE_INTERIOR\\noutgoingLight.xyz = vColor;\\n#endif\\n#endif\\noutgoingLight.xyz *= 1.0 - interiorDarkening;\\n}\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n#include premultiplied_alpha_fragment\\n#include tonemapping_fragment\\n#include encodings_fragment\\n#include fog_fragment\\n#endif\\n}\");const Xh=new Float32Array([-1,1,-1,-1,-1,-1,1,1,-1,1,1,1,1,-1,-1,1,-1,1]),Yh=new Uint16Array([0,1,2,1,4,2,2,4,3,4,5,3]);class Kh extends Fc{constructor(t,e={}){super(\"v3\",t,e)}get mapping(){return Xh}get mappingIndices(){return Yh}get mappingIndicesSize(){return 12}get mappingSize(){return 6}get mappingItemSize(){return 3}}const Zh=Object.assign({openEnded:!1},zo),Qh=Object.assign({openEnded:{updateShader:!0}},Vo);class Jh extends Kh{constructor(t,e={}){super(t,e),this.parameterTypes=Qh,this.isImpostor=!0,this.vertexShader=\"CylinderImpostor.vert\",this.fragmentShader=\"CylinderImpostor.frag\",this.addUniforms({modelViewMatrixInverse:{value:new i},ortho:{value:0}}),this.addAttributes({position1:{type:\"v3\",value:null},position2:{type:\"v3\",value:null},color2:{type:\"c\",value:null},radius:{type:\"f\",value:null}}),this.setAttributes(t),this.makeMapping()}get defaultParameters(){return Zh}getDefines(t){const e=Kh.prototype.getDefines.call(this,t);return this.parameters.openEnded||(e.CAP=1),e}}Object.assign({disableImpostor:!1},Hh,Zh);const td=class{constructor(t,e={}){return!t.color2&&t.color&&(t.color2=t.color),!Ie||e&&e.disableImpostor?new qh(t,e):new Jh(t,e)}};je.add(\"cylinder\",td);class ed extends Sh{constructor(t,e,i){super(t,e,i),this.type=\"axes\",this.parameters=Object.assign({radiusSize:{type:\"number\",precision:3,max:10,min:.001},sphereDetail:!0,radialSegments:!0,disableImpostor:!0,showAxes:{type:\"boolean\",rebuild:!0},showBox:{type:\"boolean\",rebuild:!0}},this.parameters,{assembly:null}),this.init(i)}init(t){const e=t||{};e.radiusSize=st(e.radiusSize,.5),e.colorValue=st(e.colorValue,\"lightgreen\"),e.useInteriorColor=st(e.useInteriorColor,!0),this.showAxes=st(e.showAxes,!0),this.showBox=st(e.showBox,!1),super.init(e)}getPrincipalAxes(){let t;const e=this.getAssembly();return e&&(t=e.partList[0].getSelection()),this.structureView.getPrincipalAxes(t)}getAxesData(t){const i=this.getPrincipalAxes(),r=new s(this.colorValue);let n=0,o=0;this.showAxes&&(n+=6,o+=3),this.showBox&&(n+=8,o+=12);const a=new Float32Array(3*n),c=Ci(n,r.r,r.g,r.b),l=Si(n,this.radiusSize),h=new Float32Array(3*o),d=new Float32Array(3*o),u=Ci(o,r.r,r.g,r.b),m=Si(o,this.radiusSize);let p=0;if(this.showAxes){const t=function(t,e){t.toArray(a,2*p),e.toArray(a,2*p+3),t.toArray(h,p),e.toArray(d,p),p+=3};t(i.begA,i.endA),t(i.begB,i.endB),t(i.begC,i.endC)}if(this.showBox){const r=new e,{d1a:s,d2a:n,d3a:o,d1b:c,d2b:l,d3b:u}=i.getProjectedScaleForAtoms(t);let m=2*p;const f=function(t,e,s){r.copy(i.center).addScaledVector(i.normVecA,t).addScaledVector(i.normVecB,e).addScaledVector(i.normVecC,s),r.toArray(a,m),m+=3};f(s,n,o),f(s,n,u),f(s,l,u),f(s,l,o),f(c,l,u),f(c,l,o),f(c,n,o),f(c,n,u);let g=p;const y=function(t,e){r.fromArray(a,2*p+3*t).toArray(h,g),r.fromArray(a,2*p+3*e).toArray(d,g),g+=3};y(0,1),y(0,3),y(0,6),y(1,2),y(1,7),y(2,3),y(2,4),y(3,5),y(4,5),y(4,7),y(5,6),y(6,7)}const f=new Kn(i);return{vertex:{position:a,color:c,radius:l,picking:f},edge:{position1:h,position2:d,color:u,color2:u,radius:m,picking:f}}}create(){const t=this.getAxesData(this.structureView);this.sphereBuffer=new Gc(t.vertex,this.getBufferParams({sphereDetail:this.sphereDetail,disableImpostor:this.disableImpostor,dullInterior:!0})),this.cylinderBuffer=new td(t.edge,this.getBufferParams({openEnded:!0,radialSegments:this.radialSegments,disableImpostor:this.disableImpostor,dullInterior:!0})),this.dataList.push({sview:this.structureView,bufferList:[this.sphereBuffer,this.cylinderBuffer]})}createData(t){}updateData(t,e){const i=this.getAxesData(e.sview),r={},s={};t&&!t.position||(Object.assign(r,{position:i.vertex.position}),Object.assign(s,{position1:i.edge.position1,position2:i.edge.position2})),t&&!t.color||(Object.assign(r,{color:i.vertex.color}),Object.assign(s,{color:i.edge.color,color2:i.edge.color})),t&&!t.radius||(Object.assign(r,{radius:i.vertex.radius}),Object.assign(s,{radius:i.edge.radius})),this.sphereBuffer.setAttributes(r),this.cylinderBuffer.setAttributes(s)}}Ne.add(\"axes\",ed);class id extends Sh{constructor(t,e,i){super(t,e,i),this.type=\"ball+stick\",this.parameters=Object.assign({sphereDetail:!0,radialSegments:!0,openEnded:!0,disableImpostor:!0,aspectRatio:{type:\"number\",precision:1,max:10,min:1},lineOnly:{type:\"boolean\",rebuild:!0},cylinderOnly:{type:\"boolean\",rebuild:!0},multipleBond:{type:\"select\",rebuild:!0,options:{off:\"off\",symmetric:\"symmetric\",offset:\"offset\"}},bondScale:{type:\"number\",precision:2,max:1,min:.01},bondSpacing:{type:\"number\",precision:2,max:2,min:.5},linewidth:{type:\"integer\",max:50,min:1,buffer:!0}},this.parameters),this.init(i)}init(t){var e=t||{};e.radiusType=st(e.radiusType,\"size\"),e.radiusSize=st(e.radiusSize,.15),e.useInteriorColor=st(e.useInteriorColor,!0),this.aspectRatio=st(e.aspectRatio,2),this.lineOnly=st(e.lineOnly,!1),this.cylinderOnly=st(e.cylinderOnly,!1),this.multipleBond=st(e.multipleBond,\"off\"),this.bondSpacing=st(e.bondSpacing,1),this.bondScale=st(e.bondScale,.4),this.linewidth=st(e.linewidth,2),super.init(e)}getAtomRadius(t){return this.aspectRatio*super.getAtomRadius(t)}getAtomParams(t,e){var i=super.getAtomParams(t,e);return i.radiusParams.scale*=this.aspectRatio,i}getAtomData(t,e,i){return t.getAtomData(this.getAtomParams(e,i))}getBondParams(t,e){return e=Object.assign({multipleBond:this.multipleBond,bondSpacing:this.bondSpacing,bondScale:this.bondScale},e),super.getBondParams(t,e)}getBondData(t,e,i){return t.getBondData(this.getBondParams(e,i))}createData(t){const e=[];if(this.lineOnly)this.lineBuffer=new Nh(this.getBondData(t,{position:!0,color:!0,picking:!0}),this.getBufferParams({linewidth:this.linewidth})),e.push(this.lineBuffer);else{const i=new td(this.getBondData(t),this.getBufferParams({openEnded:this.openEnded,radialSegments:this.radialSegments,disableImpostor:this.disableImpostor,dullInterior:!0}));if(e.push(i),!this.cylinderOnly){const i=new Gc(this.getAtomData(t),this.getBufferParams({sphereDetail:this.sphereDetail,disableImpostor:this.disableImpostor,dullInterior:!0}));e.push(i)}}return{bufferList:e}}updateData(t,e){\"off\"!==this.multipleBond&&t&&t.radius&&(t.position=!0);const i=this.getBondData(e.sview,t);if(this.lineOnly){const r={};t&&!t.position||Object.assign(r,{position1:i.position1,position2:i.position2}),t&&!t.color||Object.assign(r,{color:i.color,color2:i.color2}),e.bufferList[0].setAttributes(r)}else{var r={};if(t&&!t.position||Object.assign(r,{position1:i.position1,position2:i.position2}),t&&!t.color||Object.assign(r,{color:i.color,color2:i.color2}),t&&!t.radius||Object.assign(r,{radius:i.radius}),e.bufferList[0].setAttributes(r),!this.cylinderOnly){var s=this.getAtomData(e.sview,t),n={};t&&!t.position||Object.assign(n,{position:s.position}),t&&!t.color||Object.assign(n,{color:s.color}),t&&!t.radius||Object.assign(n,{radius:s.radius}),e.bufferList[1].setAttributes(n)}}}setParameters(t={}){let e=!1;const i={};return(t.aspectRatio||t.bondSpacing||t.bondScale)&&(Object.assign(i,{radius:!0}),Ie&&!this.disableImpostor||(e=!0)),super.setParameters(t,i,e),this}}Ne.add(\"ball+stick\",id);class rd extends id{constructor(t,e,i){super(t,e,i),this.type=\"backbone\",this.parameters=Object.assign({},this.parameters,{multipleBond:null,bondSpacing:null}),this.init(i)}init(t){var e=t||{};e.aspectRatio=st(e.aspectRatio,1),e.radiusSize=st(e.radiusSize,.25),super.init(e)}getAtomRadius(t){return t.isTrace()?super.getAtomRadius(t):0}getAtomData(t,e,i){return t.getBackboneAtomData(this.getAtomParams(e,i))}getBondData(t,e,i){return t.getBackboneBondData(this.getBondParams(e,i))}}Ne.add(\"backbone\",rd);class sd extends id{constructor(t,e,i){super(t,e,i),this.type=\"base\",this.parameters=Object.assign({},this.parameters,{multipleBond:null,bondSpacing:null})}init(t){let e=t||{};e.aspectRatio=st(e.aspectRatio,1),e.radiusSize=st(e.radiusSize,.3),super.init(e)}getAtomData(t,e,i){return t.getRungAtomData(this.getAtomParams(e,i))}getBondData(t,e,i){let r=this.getBondParams(e,i);return Object.assign(r.colorParams,{rung:!0}),t.getRungBondData(r)}}Ne.add(\"base\",sd);class nd{constructor(t,i){this.m=t,this.tension=i,this.dt=1/this.m,this.delta=1e-4,this.vec1=new e,this.vec2=new e,this.vDir=new e,this.vTan=new e,this.vNorm=new e,this.vBin=new e,this.m2=Math.ceil(this.m/2)}interpolateToArr(t,e,i,r,s,n,o){n[o+0]=Ot(t.x,e.x,i.x,r.x,s,this.tension),n[o+1]=Ot(t.y,e.y,i.y,r.y,s,this.tension),n[o+2]=Ot(t.z,e.z,i.z,r.z,s,this.tension)}interpolateToVec(t,e,i,r,s,n){n.x=Ot(t.x,e.x,i.x,r.x,s,this.tension),n.y=Ot(t.y,e.y,i.y,r.y,s,this.tension),n.z=Ot(t.z,e.z,i.z,r.z,s,this.tension)}interpolatePosition(t,e,i,r,s,n){for(var o=0;o1&&(l=1),this.interpolateToVec(t,e,i,r,c,this.vec1),this.interpolateToVec(t,e,i,r,l,this.vec2),this.vec2.sub(this.vec1).normalize(),this.vec2.toArray(s,h)}}vectorSubdivide(t,e,i,r,s){let n,o=e.next(),a=e.next(),c=e.next();const l=e.size,h=l-1;let d=r||0;for(let r=0;r0&&e{if(t.residueCount<4)return;i.push(t);const r=this.getSpline(t),s=this.getAspectRatio(t),n=r.getSubdividedPosition(),o=r.getSubdividedOrientation(),a=r.getSubdividedColor(this.getColorParams()),c=r.getSubdividedPicking(),l=r.getSubdividedSize(this.getRadiusParams());e.push(new hd(Object.assign({},n,o,a,c,l),this.getBufferParams({radialSegments:this.radialSegments,aspectRatio:s,capped:this.capped})))}),t.getSelection()),{bufferList:e,polymerList:i}}updateData(t,e){De&&Me.time(this.type+\" repr update\"),t=t||{};for(var i=0,r=e.polymerList.length;i0;Qr(A,b,_);const s=Zr(A,v)<0;if(ns(A,v,Zr(v,x)),Qr(S,x,A),ns(A,v,Zr(v,w)),Qr(C,w,A),0===rs(S)||0===rs(C))continue;os(S,S),os(C,C);const D=n[T]=us(S,C);a[T]=(vi*D).toFixed(1)+String.fromCharCode(176),Kr(k,S,v),os(k,k),Zr(k,C)<0&&ds(k,k),Ih(A,_,S,k,D/2),es(A,o,3*T);const $=Math.ceil(D/i),O=$+(e.extendLine?4:2),R=e.extendLine?36:0,E=new Float32Array(3*O),F=new Float32Array(3*O),L=new Float32Array(9*$),N=new Float32Array(R);c[T]=E,l[T]=F,h[T]=L,d[T]=N,e.extendLine&&(r?(Qr(A,f,y),os(A,A),ns(P,A,1/Zr(S,A)),Jr(P,P,y)):(ns(P,x,1/Zr(S,x)),Jr(P,P,g)),s?(Qr(A,b,g),os(A,A),ns(I,A,1/Zr(C,A)),Jr(I,I,g)):(ns(I,w,1/Zr(C,w)),Jr(I,I,y))),Jr(M,_,S);let z=0;e.extendLine?(es(f,E,z),es(P,F,z),z+=3,es(P,E,z),es(M,F,z),z+=3,es(P,N,0),es(M,N,3),es(r?y:g,N,6),es(r?y:g,N,9),es(M,N,12),es(_,N,15)):(es(_,E,z),es(M,F,z),z+=3);const V=function(t,e){const i=9*e;es(_,L,i),es(M,L,i+3),es(M,E,z),Ih(M,_,S,k,t),es(M,L,i+6),es(M,F,z),z+=3};let G=0;for(let t=i;t{const e=pd(i,t);Object.assign(t,e)})),e.side=st(e.side,\"double\"),e.opacity=st(e.opacity,.5),e.radiusType=st(e.radiusType,\"size\"),e.radiusSize=st(e.radiusSize,.15),super.init(e)}getHistogramBinBorderBufferParameters(){return this.getBufferParams({linewidth:this.histogramBinBorderWidth,visible:this.histogramBinBorderVisible,opacity:this.histogramBinBorderOpacity})}getBondArrowsBufferParameters(){return this.getBufferParams({linewidth:this.bondArrowWidth,visible:this.bondArrowVisible,opacity:this.bondArrowOpacity})}getOpaqueMiddleDiscBufferParameters(){return this.getBufferParams({visible:this.opaqueMiddleDiscVisible,opacity:this.opaqueMiddleDiscOpacity})}getHistogramBufferParameters(){return this.getBufferParams({visible:!0,opacity:this.histogramOpacity,side:\"double\"})}createData(t){if(!t.atomCount||!this.histogramsData.length)return;this.histogramsData.forEach((e=>e.atomPositions=Ph(t,[e.atomQuad])));const e=this.scaleBinToSectorArea?function(t){return Math.sqrt(t)}:function(t){return t};function i(t){const e=t.map((t=>t.length)),i=new Float32Array($i(e));let r=0;for(let e=0;et.startPoints))),position2:i(t.map((t=>t.endPoints))),color:i(t.map((t=>t.startColors))),color2:i(t.map((t=>t.endColors)))},e)}function s(t,e){return new Uo({position:i(t.map((t=>t.triangles))),color:i(t.map((t=>t.triangleColors)))},e)}this.histogramsData.forEach((t=>t.histogram360Scaled=t.histogram360.map(e)));const n=[];for(let t=0;t=3&&(e=yd(i)),void 0!==e&&n.push(e)}return this.frontHistogramBinBordersBuffer=r(n.map((t=>t.frontHistogramBinBorders)),this.getHistogramBinBorderBufferParameters()),this.backHistogramBinBordersBuffer=r(n.map((t=>t.backHistogramBinBorders)),this.getHistogramBinBorderBufferParameters()),this.adjacentBondArrowsBuffer=r(n.map((t=>t.adjacentBondArrows)),this.getBondArrowsBufferParameters()),this.distantBondArrowsBuffer=r(n.map((t=>t.distantBondArrows)),this.getBondArrowsBufferParameters()),this.opaqueMiddleDiscBuffer=s(n.map((t=>t.opaqueMiddleDisc)),this.getOpaqueMiddleDiscBufferParameters()),this.frontHistogramBuffer=s(n.map((t=>t.frontHistogram)),this.getHistogramBufferParameters()),this.backHistogramBuffer=s(n.map((t=>t.backHistogram)),this.getHistogramBufferParameters()),{bufferList:[].concat(this.frontHistogramBinBordersBuffer,this.backHistogramBinBordersBuffer,this.adjacentBondArrowsBuffer,this.distantBondArrowsBuffer,this.opaqueMiddleDiscBuffer,this.frontHistogramBuffer,this.backHistogramBuffer)}}setParameters(t){return super.setParameters(t,{},!1),t&&void 0!==t.histogramBinBorderVisible&&this.setVisibility(this.visible),this}setVisibility(t,e){return super.setVisibility(t,!0),this.frontHistogramBinBordersBuffer&&this.frontHistogramBinBordersBuffer.setVisibility(this.histogramBinBorderVisible),this.backHistogramBinBordersBuffer&&this.backHistogramBinBordersBuffer.setVisibility(this.histogramBinBorderVisible),e||this.viewer.requestRender(),this}}function yd(t){const e=t.atomPositions,i=t.histogram360Scaled,r=i.length<=180?360:2*i.length,s={triangles:new Float32Array(3*r*3),triangleColors:fd(t.opaqueMiddleDiscColor,3*r)},n={triangles:new Float32Array(3*i.length*3),triangleColors:fd(t.frontHistogramColor,3*i.length)},o={triangles:new Float32Array(3*i.length*3),triangleColors:fd(t.backHistogramColor,3*i.length)},a={startPoints:new Float32Array(3*i.length),endPoints:new Float32Array(3*i.length),startColors:fd(t.histogramBinBorderColor,i.length),endColors:fd(t.histogramBinBorderColor,i.length)},c={startPoints:new Float32Array(3*i.length),endPoints:new Float32Array(3*i.length),startColors:fd(t.histogramBinBorderColor,i.length),endColors:fd(t.histogramBinBorderColor,i.length)},l={startPoints:new Float32Array(6),endPoints:new Float32Array(6),startColors:fd(t.adjacentBondArrowColor,i.length),endColors:fd(t.adjacentBondArrowColor,i.length)},h={startPoints:new Float32Array(6),endPoints:new Float32Array(6),startColors:fd(t.distantBondArrowColor,i.length),endColors:fd(t.distantBondArrowColor,i.length)},d=Yr(),u=Yr(),m=Yr(),p=Yr(),f=Yr(),g=Yr(),y=Yr(),b=Yr(),x=Yr(),v=Yr(),w=Yr(),A=Yr(),_=Yr(),S=Yr(),C=Yr(),P=Yr(),I=[d,u,m,p];for(let t=0;t{let u=e[0],m=e[1];if(\"number\"==typeof u&&Number.isInteger(u)&&\"number\"==typeof m&&Number.isInteger(m)){if(!d.get(u)||!d.get(m))return void(h+=1);c.index=u,l.index=m}else{n.setString(u),o.setString(m);var p=t.getAtomIndices(n),f=t.getAtomIndices(o);if(!p.length||!f.length)return void(h+=1);c.index=p[0],l.index=f[0]}a.addBond(c,l,1),i-=h;var g=c.distanceTo(l);switch(this.labelUnit){case\"angstrom\":r[i]=g.toFixed(2)+\" \"+String.fromCharCode(8491);break;case\"nm\":r[i]=(g/10).toFixed(2)+\" nm\";break;default:r[i]=g.toFixed(2)}var y=3*i;s[y+0]=(c.x+l.x)/2,s[y+1]=(c.y+l.y)/2,s[y+2]=(c.z+l.z)/2})),h>0&&(i-=h,s=s.subarray(0,3*i));var u=new Os(a.count,!0);return{text:r,position:s,bondSet:u,bondStore:a}}getBondData(t,e,i){const r=t.getBondData(this.getBondParams(e,i));return r.picking&&(r.picking=new to(r.picking.array,r.picking.structure,i.bondStore)),r}createData(t){if(!t.atomCount||!this.atomPair.length)return;const e=this.atomPair.length,i=new s(this.labelColor),r=this.getDistanceData(t,this.atomPair);this.textBuffer=new Eh({position:r.position,size:Si(e,this.labelSize),color:Ci(e,i.r,i.g,i.b),text:r.text},this.getLabelBufferParams());const n={bondSet:r.bondSet,bondStore:r.bondStore},o=this.getBondData(t,{position:!0,color:!0,picking:!0,radius:this.useCylinder},n);return this.useCylinder?this.distanceBuffer=new td(o,this.getBufferParams({openEnded:this.openEnded,radialSegments:this.radialSegments,disableImpostor:this.disableImpostor,dullInterior:!0})):this.distanceBuffer=new Nh(ps(o),this.getBufferParams({linewidth:this.linewidth,visible:this.lineVisible,opacity:this.lineOpacity})),{bondSet:r.bondSet,bondStore:r.bondStore,position:r.position,bufferList:[this.textBuffer,this.distanceBuffer]}}updateData(t,e){super.updateData(t,e);const i={bondSet:e.bondSet,bondStore:e.bondStore},r=this.getBondData(e.sview,t,i),s={};t&&!t.color||Object.assign(s,{color:r.color,color2:r.color2}),t&&!t.radius||Object.assign(s,{radius:r.radius}),this.distanceBuffer.setAttributes(s)}setParameters(t){return super.setParameters(t,{},!1),this.useCylinder||(t&&t.lineOpacity&&this.distanceBuffer.setParameters({opacity:t.lineOpacity}),t&&void 0!==t.opacity&&this.distanceBuffer.setParameters({opacity:this.lineOpacity}),t&&t.linewidth&&this.distanceBuffer.setParameters({linewidth:t.linewidth})),this}}function xd(t){return 2*(t.position.length/3)*3}Ne.add(\"distance\",bd);const vd=Object.assign({scale:1,color:\"grey\"},zo);class wd extends Go{constructor(t,e={}){super({position:new Float32Array(xd(t)),color:new Float32Array(xd(t))},e),this.isLine=!0,this.vertexShader=\"Line.vert\",this.fragmentShader=\"Line.frag\";const i=new s(this.parameters.color),r=this.geometry.attributes;Ci(xd(t)/3,i.r,i.g,i.b,r.color.array),this.setAttributes(t)}get defaultParameters(){return vd}setAttributes(t={}){const e=this.geometry.attributes;let i,r,s;t.position&&t.vector&&(i=t.position,r=t.vector,s=e.position.array,e.position.needsUpdate=!0);const n=this.size/2,o=this.parameters.scale;if(i&&r)for(let t=0;t{if(t.residueCount<4)return;i.push(t);const r=new Ca(t),s=r.getPosition(),n=r.getColor(this.getColorParams()),o=r.getSize(this.getRadiusParams()),a=r.getPicking();e.push(new Gc({position:s.center,color:n.color,radius:o.size,picking:a.picking},this.getBufferParams({sphereDetail:this.sphereDetail,disableImpostor:this.disableImpostor,dullInterior:!0})),new wd({position:s.center,vector:s.axis},this.getBufferParams({color:\"skyblue\",scale:1})),new wd({position:s.center,vector:s.resdir},this.getBufferParams({color:\"lightgreen\",scale:1})))}),t.getSelection()),{bufferList:e,polymerList:i}}updateData(t,e){De&&Me.time(this.type+\" repr update\"),t=t||{};for(let i=0,r=e.polymerList.length;i radius2) {\\nspaceposition.y = mapping.y * 1.5 * radius1;\\nspaceposition.x = mapping.x * 1.5 * radius1;\\n} else {\\nspaceposition.y = mapping.y * 1.5 * radius2;\\nspaceposition.x = mapping.x * 1.5 * radius2;\\n}\\nspaceposition.w = 1.0;\\nvec4 e3 = vec4( 1.0 );\\nvec3 e1, e1_temp, e2, e2_temp;\\ne3.xyz = normalize(position_atom1-position_atom2);\\nif (e3.z == 0.0) { e3.z = 0.0000000000001;}\\nif ( (position_atom1.x - position_atom2.x) == 0.0) { position_atom1.x += 0.001;}\\nif ( (position_atom1.y - position_atom2.y) == 0.0) { position_atom1.y += 0.001;}\\nif ( (position_atom1.z - position_atom2.z) == 0.0) { position_atom1.z += 0.001;}\\nvec4 focus = vec4( 1.0 );\\nfocus.x = ( position_atom1.x*position_atom1.x - position_atom2.x*position_atom2.x +\\n( radius2*radius2 - radius1*radius1 )*e3.x*e3.x/shrink )/(2.0*(position_atom1.x - position_atom2.x));\\nfocus.y = ( position_atom1.y*position_atom1.y - position_atom2.y*position_atom2.y +\\n( radius2*radius2 - radius1*radius1 )*e3.y*e3.y/shrink )/(2.0*(position_atom1.y - position_atom2.y));\\nfocus.z = ( position_atom1.z*position_atom1.z - position_atom2.z*position_atom2.z +\\n( radius2*radius2 - radius1*radius1 )*e3.z*e3.z/shrink )/(2.0*(position_atom1.z - position_atom2.z));\\ne1.x = 1.0;\\ne1.y = 1.0;\\ne1.z = ( (e3.x*focus.x + e3.y*focus.y + e3.z*focus.z) - e1.x*e3.x - e1.y*e3.y)/e3.z;\\ne1_temp = e1 - focus.xyz;\\ne1 = normalize(e1_temp);\\ne2_temp = e1.yzx * e3.zxy - e1.zxy * e3.yzx;\\ne2 = normalize(e2_temp);\\nmat3 R= mat3( e1.xyz, e2.xyz, e3.xyz );\\nvertex_position.xyz = R * spaceposition.xyz;\\nvertex_position.w = 1.0;\\nvertex_position.x += (position_atom1.x+position_atom2.x) / 2.0;\\nvertex_position.y += (position_atom1.y+position_atom2.y) / 2.0;\\nvertex_position.z += (position_atom1.z+position_atom2.z) / 2.0;\\ngl_Position = modelViewProjectionMatrix * vertex_position;\\nvec4 i_near, i_far;\\nvec4 near = gl_Position;\\nnear.z = 0.0 ;\\nnear = modelViewProjectionMatrixInverse * near;\\ni_near = near;\\nvec4 far = gl_Position;\\nfar.z = far.w ;\\ni_far = modelViewProjectionMatrixInverse * far;\\nprime1 = vec4( position_atom1 - (position_atom1 - focus.xyz)*shrink, 1.0 );\\nprime2 = vec4( position_atom2 - (position_atom2 - focus.xyz)*shrink, 1.0 );\\nfloat Rsquare = (radius1*radius1/shrink) - (\\n(position_atom1.x - focus.x)*(position_atom1.x - focus.x) +\\n(position_atom1.y - focus.y)*(position_atom1.y - focus.y) +\\n(position_atom1.z - focus.z)*(position_atom1.z - focus.z)\\n);\\nfocus.w = Rsquare;\\nmatrix_near = mat4( i_near, i_far, focus, e3 );\\ngl_Position.z = 1.0;\\n}\"),Ve.add(\"shader/HyperballStickImpostor.frag\",\"#define STANDARD\\n#define IMPOSTOR\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 interiorColor;\\nuniform float interiorDarkening;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\nuniform float clipNear;\\nuniform float shrink;\\nuniform mat4 modelViewMatrix;\\nuniform mat4 modelViewProjectionMatrix;\\nuniform mat4 modelViewMatrixInverseTranspose;\\nuniform mat4 projectionMatrix;\\nvarying mat4 matrix_near;\\nvarying vec4 prime1;\\nvarying vec4 prime2;\\nvarying float vRadius;\\nvarying float vRadius2;\\n#ifdef PICKING\\nuniform float objectId;\\nvarying vec3 vPickingColor;\\n#else\\nvarying vec3 vColor1;\\nvarying vec3 vColor2;\\n#include common\\n#include fog_pars_fragment\\n#include bsdfs\\n#include lights_pars_begin\\n#include lights_physical_pars_fragment\\n#endif\\nbool interior = false;\\nfloat calcClip( vec4 cameraPos ){\\nreturn dot( cameraPos, vec4( 0.0, 0.0, 1.0, clipNear - 0.5 ) );\\n}\\nfloat calcClip( vec3 cameraPos ){\\nreturn calcClip( vec4( cameraPos, 1.0 ) );\\n}\\nfloat calcDepth( in vec3 cameraPos ){\\nvec2 clipZW = cameraPos.z * projectionMatrix[2].zw + projectionMatrix[3].zw;\\nreturn 0.5 + 0.5 * clipZW.x / clipZW.y;\\n}\\nstruct Ray {\\nvec3 origin ;\\nvec3 direction ;\\n};\\nbool cutoff_plane (vec3 M, vec3 cutoff, vec3 x3){\\nfloat a = x3.x;\\nfloat b = x3.y;\\nfloat c = x3.z;\\nfloat d = -x3.x*cutoff.x-x3.y*cutoff.y-x3.z*cutoff.z;\\nfloat l = a*M.x+b*M.y+c*M.z+d;\\nif (l<0.0) {return true;}\\nelse{return false;}\\n}\\nvec3 isect_surf(Ray r, mat4 matrix_coef){\\nvec4 direction = vec4(r.direction, 0.0);\\nvec4 origin = vec4(r.origin, 1.0);\\nfloat a = dot(direction,(matrix_coef*direction));\\nfloat b = dot(origin,(matrix_coef*direction));\\nfloat c = dot(origin,(matrix_coef*origin));\\nfloat delta =b*b-a*c;\\ngl_FragColor.a = 1.0;\\nif (delta<0.0){\\ndiscard;\\n}\\nfloat t1 =(-b-sqrt(delta))/a;\\nreturn r.origin+t1*r.direction;\\n}\\nvec3 isect_surf2(Ray r, mat4 matrix_coef){\\nvec4 direction = vec4(r.direction, 0.0);\\nvec4 origin = vec4(r.origin, 1.0);\\nfloat a = dot(direction,(matrix_coef*direction));\\nfloat b = dot(origin,(matrix_coef*direction));\\nfloat c = dot(origin,(matrix_coef*origin));\\nfloat delta =b*b-a*c;\\ngl_FragColor.a = 1.0;\\nif (delta<0.0){\\ndiscard;\\n}\\nfloat t2 =(-b+sqrt(delta))/a;\\nreturn r.origin+t2*r.direction;\\n}\\nRay primary_ray(vec4 near1, vec4 far1){\\nvec3 near=near1.xyz/near1.w;\\nvec3 far=far1.xyz/far1.w;\\nreturn Ray(near,far-near);\\n}\\nfloat update_z_buffer(vec3 M, mat4 ModelViewP){\\nfloat depth1;\\nvec4 Ms=(ModelViewP*vec4(M,1.0));\\nreturn depth1=(1.0+Ms.z/Ms.w)/2.0;\\n}\\nvoid main(){\\nfloat radius = max( vRadius, vRadius2 );\\nvec4 i_near, i_far, focus;\\nvec3 e3, e1, e1_temp, e2;\\ni_near = vec4(matrix_near[0][0],matrix_near[0][1],matrix_near[0][2],matrix_near[0][3]);\\ni_far = vec4(matrix_near[1][0],matrix_near[1][1],matrix_near[1][2],matrix_near[1][3]);\\nfocus = vec4(matrix_near[2][0],matrix_near[2][1],matrix_near[2][2],matrix_near[2][3]);\\ne3 = vec3(matrix_near[3][0],matrix_near[3][1],matrix_near[3][2]);\\ne1.x = 1.0;\\ne1.y = 1.0;\\ne1.z = ( (e3.x*focus.x + e3.y*focus.y + e3.z*focus.z) - e1.x*e3.x - e1.y*e3.y)/e3.z;\\ne1_temp = e1 - focus.xyz;\\ne1 = normalize(e1_temp);\\ne2 = normalize(cross(e1,e3));\\nvec4 equation = focus;\\nfloat shrinkfactor = shrink;\\nfloat t1 = -1.0/(1.0-shrinkfactor);\\nfloat t2 = 1.0/(shrinkfactor);\\nvec4 colonne1, colonne2, colonne3, colonne4;\\nmat4 mat;\\nvec3 equation1 = vec3(t2,t2,t1);\\nfloat A1 = - e1.x*equation.x - e1.y*equation.y - e1.z*equation.z;\\nfloat A2 = - e2.x*equation.x - e2.y*equation.y - e2.z*equation.z;\\nfloat A3 = - e3.x*equation.x - e3.y*equation.y - e3.z*equation.z;\\nfloat A11 = equation1.x*e1.x*e1.x + equation1.y*e2.x*e2.x + equation1.z*e3.x*e3.x;\\nfloat A21 = equation1.x*e1.x*e1.y + equation1.y*e2.x*e2.y + equation1.z*e3.x*e3.y;\\nfloat A31 = equation1.x*e1.x*e1.z + equation1.y*e2.x*e2.z + equation1.z*e3.x*e3.z;\\nfloat A41 = equation1.x*e1.x*A1 + equation1.y*e2.x*A2 + equation1.z*e3.x*A3;\\nfloat A22 = equation1.x*e1.y*e1.y + equation1.y*e2.y*e2.y + equation1.z*e3.y*e3.y;\\nfloat A32 = equation1.x*e1.y*e1.z + equation1.y*e2.y*e2.z + equation1.z*e3.y*e3.z;\\nfloat A42 = equation1.x*e1.y*A1 + equation1.y*e2.y*A2 + equation1.z*e3.y*A3;\\nfloat A33 = equation1.x*e1.z*e1.z + equation1.y*e2.z*e2.z + equation1.z*e3.z*e3.z;\\nfloat A43 = equation1.x*e1.z*A1 + equation1.y*e2.z*A2 + equation1.z*e3.z*A3;\\nfloat A44 = equation1.x*A1*A1 + equation1.y*A2*A2 + equation1.z*A3*A3 - equation.w;\\ncolonne1 = vec4(A11,A21,A31,A41);\\ncolonne2 = vec4(A21,A22,A32,A42);\\ncolonne3 = vec4(A31,A32,A33,A43);\\ncolonne4 = vec4(A41,A42,A43,A44);\\nmat = mat4(colonne1,colonne2,colonne3,colonne4);\\nRay ray = primary_ray(i_near,i_far) ;\\nvec3 M;\\nM = isect_surf(ray, mat);\\nif (cutoff_plane(M, prime1.xyz, -e3) || cutoff_plane(M, prime2.xyz, e3)){ discard; }\\nvec4 M1 = vec4(M,1.0);\\nvec4 M2 = mat*M1;\\nvec3 _normal = ( modelViewMatrixInverseTranspose * M2 ).xyz;\\ngl_FragDepthEXT = update_z_buffer(M, modelViewProjectionMatrix) ;\\n#ifdef NEAR_CLIP\\nif( calcClip( modelViewMatrix * vec4( M, 1.0 ) ) > 0.0 ){\\nM = isect_surf2(ray, mat);\\nif( calcClip( modelViewMatrix * vec4( M, 1.0 ) ) > 0.0 )\\ndiscard;\\ninterior = true;\\ngl_FragDepthEXT = update_z_buffer(M, modelViewProjectionMatrix) ;\\nif( gl_FragDepthEXT >= 0.0 ){\\ngl_FragDepthEXT = max( 0.0, calcDepth( vec3( - ( clipNear - 0.5 ) ) ) + ( 0.0000001 / radius ) );\\n}\\n}else if( gl_FragDepthEXT <= 0.0 ){\\nM = isect_surf2(ray, mat);\\ninterior = true;\\ngl_FragDepthEXT = update_z_buffer(M, modelViewProjectionMatrix);\\nif( gl_FragDepthEXT >= 0.0 ){\\ngl_FragDepthEXT = 0.0 + ( 0.0000001 / radius );\\n}\\n}\\n#else\\nif( gl_FragDepthEXT <= 0.0 ){\\nM = isect_surf2(ray, mat);\\ninterior = true;\\ngl_FragDepthEXT = update_z_buffer(M, modelViewProjectionMatrix) ;\\nif( gl_FragDepthEXT >= 0.0 ){\\ngl_FragDepthEXT = 0.0 + ( 0.0000001 / radius );\\n}\\n}\\n#endif\\nif (cutoff_plane(M, prime1.xyz, -e3) || cutoff_plane(M, prime2.xyz, e3)){ discard; }\\nif (gl_FragDepthEXT < 0.0)\\ndiscard;\\nif (gl_FragDepthEXT > 1.0)\\ndiscard;\\nfloat distance_ratio = ((M.x-prime2.x)*e3.x + (M.y-prime2.y)*e3.y +(M.z-prime2.z)*e3.z) /\\ndistance(prime2.xyz,prime1.xyz);\\n#ifdef PICKING\\nif( opacity < 0.3 )\\ndiscard;\\ngl_FragColor = vec4( vPickingColor, objectId );\\n#else\\nvec3 vViewPosition = -( modelViewMatrix * vec4( M, 1.0 ) ).xyz;\\nvec3 vNormal = _normal;\\nvec3 vColor;\\nif( distance_ratio>0.5 ){\\nvColor = vColor1;\\n}else{\\nvColor = vColor2;\\n}\\nvec4 diffuseColor = vec4( diffuse, opacity );\\nReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\nvec3 totalEmissiveLight = emissive;\\n#include color_fragment\\n#include roughnessmap_fragment\\n#include metalnessmap_fragment\\nvec3 normal = normalize( vNormal );\\nvec3 geometryNormal = normal;\\n#include lights_physical_fragment\\n#include lights_fragment_begin\\n#include lights_fragment_end\\nvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveLight;\\nif( interior ){\\n#ifdef USE_INTERIOR_COLOR\\noutgoingLight.xyz = interiorColor;\\n#else\\n#ifdef DIFFUSE_INTERIOR\\noutgoingLight.xyz = vColor;\\n#endif\\n#endif\\noutgoingLight.xyz *= 1.0 - interiorDarkening;\\n}\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n#include premultiplied_alpha_fragment\\n#include tonemapping_fragment\\n#include encodings_fragment\\n#include fog_fragment\\n#endif\\n}\");const Sd=new Float32Array([-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,-1,1,-1,1,1,-1,1,1,1,-1,1,1]),Cd=new Uint16Array([0,1,2,0,2,3,1,5,6,1,6,2,4,6,5,4,7,6,0,7,4,0,3,7,0,5,1,0,4,5,3,2,6,3,6,7]);class Pd extends Fc{constructor(t,e={}){super(\"v3\",t,e)}get mapping(){return Sd}get mappingIndices(){return Cd}get mappingIndicesSize(){return 36}get mappingSize(){return 8}get mappingItemSize(){return 3}}const Id=Object.assign({shrink:.14},zo),kd=Object.assign({shrink:{uniform:!0}},Vo);class Md extends Pd{constructor(t,e={}){super(t,e),this.parameterTypes=kd,this.isImpostor=!0,this.vertexShader=\"HyperballStickImpostor.vert\",this.fragmentShader=\"HyperballStickImpostor.frag\",this.addUniforms({modelViewProjectionMatrix:{value:new i},modelViewProjectionMatrixInverse:{value:new i},modelViewMatrixInverseTranspose:{value:new i},shrink:{value:this.parameters.shrink}}),this.addAttributes({position1:{type:\"v3\",value:null},position2:{type:\"v3\",value:null},color2:{type:\"c\",value:null},radius:{type:\"f\",value:null},radius2:{type:\"f\",value:null}}),this.setAttributes(t),this.makeMapping()}get defaultParameters(){return Id}}Object.assign({disableImpostor:!1},Hh,Id);const Td=class{constructor(t,e={}){return!Ie||e&&e.disableImpostor?(t.radius=function(t,e){const i=t.length,r=new Float32Array(i);for(let s=0;sa.push(r.atomLabel(t)))))}else if(\"residue\"===this.labelGrouping){e&&!e.position||(c=[]),e&&!e.color||(h=[]),e&&!e.radius||(l=[]),e&&!e.text||(a=[]),i.colorParams&&(i.colorParams.structure=t.getStructure());const d=Fe.getScheme(i.colorParams),u=new pa(i.radiusParams),m=t.getAtomProxy();let p=0;t.eachResidue((t=>{const i=3*p;t.isProtein()||t.isNucleic()?(m.index=t.traceAtomIndex,e&&!e.position||m.positionToArray(c,i)):(m.index=t.atomOffset,e&&!e.position||t.positionToArray(c,i)),e&&!e.color||d.atomColorToArray(m,h,i),e&&!e.radius||(l[p]=u.atomRadius(m)),e&&!e.text||a.push(r.atomLabel(m)),++p})),e&&!e.position||(s=new Float32Array(c)),e&&!e.color||(o=new Float32Array(h)),e&&!e.radius||(n=new Float32Array(l))}return{position:s,size:n,color:o,text:a}}createData(t){return{bufferList:[new Eh(this.getTextData(t,{position:!0,color:!0,radius:!0,text:!0}),this.getBufferParams({fontFamily:this.fontFamily,fontStyle:this.fontStyle,fontWeight:this.fontWeight,xOffset:this.xOffset,yOffset:this.yOffset,zOffset:this.zOffset,attachment:this.attachment,showBorder:this.showBorder,borderColor:this.borderColor,borderWidth:this.borderWidth,showBackground:this.showBackground,backgroundColor:this.backgroundColor,backgroundMargin:this.backgroundMargin,backgroundOpacity:this.backgroundOpacity,fixedSize:this.fixedSize}))]}}updateData(t,e){e.bufferList[0].setAttributes(this.getTextData(e.sview,t))}getAtomRadius(){return 0}}function Od(t){const e=t.getAtomSet(),i=t.getBondSet(),r=t.getBondProxy();return i.forEach((function(t){r.index=t,e.clear(r.atomIndex1),e.clear(r.atomIndex2)})),e}Ne.add(\"label\",$d);class Rd extends Sh{constructor(t,e,i){super(t,e,i),this.type=\"line\",this.parameters=Object.assign({multipleBond:{type:\"select\",rebuild:!0,options:{off:\"off\",symmetric:\"symmetric\",offset:\"offset\"}},bondSpacing:{type:\"number\",precision:2,max:2,min:.5},linewidth:{type:\"integer\",max:50,min:1,buffer:!0},lines:{type:\"boolean\",rebuild:!0},crosses:{type:\"select\",rebuild:!0,options:{off:\"off\",lone:\"lone\",all:\"all\"}},crossSize:{type:\"number\",precision:2,max:2,min:.1}},this.parameters,{flatShaded:null,side:null,wireframe:null,roughness:null,metalness:null}),this.init(i)}init(t){var e=t||{};this.multipleBond=st(e.multipleBond,\"off\"),this.bondSpacing=st(e.bondSpacing,1),this.linewidth=st(e.linewidth,2),this.lines=st(e.lines,!0),this.crosses=st(e.crosses,\"lone\"),this.crossSize=st(e.crossSize,.4),super.init(e)}getAtomRadius(t){return.1}getBondParams(t,e){return e=Object.assign({multipleBond:this.multipleBond,bondSpacing:this.bondSpacing,radiusParams:{type:\"size\",size:.1,scale:1}},e),super.getBondParams(t,e)}_crossData(t,e){if(t&&!t.position&&!t.color)return;const i={};\"lone\"===this.crosses&&Object.assign(i,{atomSet:Od(e)});const r=e.getAtomData(this.getAtomParams(t,i)),s={},n=r.position,o=r.color,a=r.picking,c=(n||o).length,l=3*c;let h=new Float32Array(0),d=new Float32Array(0),u=new Float32Array(0),m=new Float32Array(0),p=0,f=new Float32Array(0);t&&!t.position||(h=s.position1=new Float32Array(l),d=s.position2=new Float32Array(l),p=this.crossSize/2),t&&!t.color||(u=s.color=new Float32Array(l),m=s.color2=new Float32Array(l)),t&&!t.picking||(f=new Float32Array(3*r.picking.array.length));for(let e=0;el?u[f]=-1:(c=Math.sqrt(l-a),u[f]=Math.floor(c)),++f;p[g]=d,m[g]=u}}function k(i){var r,s,n,a,d,f,b,v,w,A,S,C,P,I,k,M,T,B,D=3*i,$=i;r=Math.floor(.5+o*(t[D]+u[0])),s=Math.floor(.5+o*(t[D+1]+u[1])),n=Math.floor(.5+o*(t[D+2]+u[2]));var O,R=e[$],E=m[R],F=0,L=l*h,N=p[R];for(A=0;A=c||I>=l||k>=h)){var z=P*L+I*h+k;if(g)if(y[z]&_){if(y[z]&_){var V=x[z];V!==D&&b*b+v*v+w*w<(a=r+b-Math.floor(.5+o*(t[V]+u[0])))*a+(d=s+v-Math.floor(.5+o*(t[V+1]+u[1])))*d+(f=n+w-Math.floor(.5+o*(t[V+2]+u[2])))*f&&(x[z]=i)}}else y[z]|=_,x[z]=i;else y[z]|=_}F++}}function M(e){var i,r;for(console.time(\"EDTSurface fillvoxels\"),i=0,r=y.length;i=c||_>=l||C>=h)){var L=A*F+_*h+C;if(y[L]&S){if(g){var N=x[L];b*b+v*v+w*w<(a=Math.floor(.5+o*(t[N]+u[0])))*a+(d=Math.floor(.5+o*(t[N+1]+u[1])))*d+(f=Math.floor(.5+o*(t[N+2]+u[2])))*f&&(x[L]=i)}}else y[L]|=S,g&&(x[L]=i)}R++}}function B(){var t,e,i,r;console.time(\"EDTSurface fastdistancemap\");var s,n=Ed(c,l,h,Uint16Array,3),o=l*h,d=f*f,u=0;for(t=0;t0);var A,P=a*a,I=new Uint16Array(3);for(t=0;t=P)||(y[s]|=C,g&&y[s]&S&&(n.toArray(t,e,i,I),A=I[0]*o+I[1]*h+I[2],x[s]=x[A])));console.timeEnd(\"EDTSurface fastdistancemap\")}function D(t,e,i,r){var s,n,o,a,d,u,m,p,f,g,x,v,w=new Uint16Array(3),A=0;if(0===i)return A;var I=-1,k=-1,M=-1,T=l*h;for(m=0,f=i;m-1&&k-1&&M-1&&(y[x=I*T+h*k+M]&_&&!(y[x]&S)?(e.fromArray(I,k,M,w),g=(a=I-w[0])*a+(d=k-w[1])*d+(u=M-w[2])*u,b[x]=g,y[x]|=S,y[x]|=C,r[A]=I,r[A+1]=k,r[A+2]=M,A+=3):y[x]&_&&y[x]&S&&(g=(a=I-w[0])*a+(d=k-w[1])*d+(u=M-w[2])*u)-1&&k-1&&M-1&&(y[x=I*T+h*k+M]&_&&!(y[x]&S)?(e.fromArray(I,k,M,w),g=(a=I-w[0])*a+(d=k-w[1])*d+(u=M-w[2])*u,b[x]=g,y[x]|=S,y[x]|=C,r[A]=I,r[A+1]=k,r[A+2]=M,A+=3):y[x]&_&&y[x]&S&&(g=(a=I-w[0])*a+(d=k-w[1])*d+(u=M-w[2])*u)-1&&k-1&&M-1&&(y[x=I*T+h*k+M]&_&&!(y[x]&S)?(e.fromArray(I,k,M,w),g=(a=I-w[0])*a+(d=k-w[1])*d+(u=M-w[2])*u,b[x]=g,y[x]|=S,y[x]|=C,r[A]=I,r[A+1]=k,r[A+2]=M,A+=3):y[x]&_&&y[x]&S&&(g=(a=I-w[0])*a+(d=k-w[1])*d+(u=M-w[2])*u)-1&&o-1&&d-1&&aT&&(T=O)}return{neighbourListLength:27*T+1,withinRadii:function(s,n,o,a,d){for(var u=0,m=p(s,c),f=p(n,l),g=p(o,h),y=Math.max(0,m-1),w=Math.max(0,f-1),_=Math.max(0,g-1),S=Math.min(b,m+2),C=Math.min(x,f+2),M=Math.min(v,g+2),T=y;Tu&&(u=h[t]);!function(){const t=$o(c,l,u,p,0);p=t.scaleFactor,y=t.dim,b=t.matrix,$=Math.max(5,2+Math.floor(m*p)),x=Si(y[0]*y[1]*y[2],-1001),v=new Int32Array(x.length),w=new Float32Array(y[0]),A=new Float32Array(y[1]),_=new Float32Array(y[2]),R(w,c[0],1/p),R(A,c[1],1/p),R(_,c[2],1/p)}(),function(){var t=0,e=2*Math.PI/g;C=new Float32Array(g),S=new Float32Array(g);for(var i=0;i=0;){if(n!==r&&n!==s&&F(n,t,e,i))return k=n,n;n=I[++o]}return k=-1,-1}function F(e,i,r,s){var n=3*e,o=d[e],a=t[n]-i,c=t[n+1]-r,l=t[n+2]-s;return a*a+c*c+l*l0&&u=0;)t{e(this._makeSurface(t.data.sd,i))}),(t=>{console.warn(\"MolecularSurface.getSurfaceWorker error - trying without worker\",t),this.worker.terminate(),this.worker=void 0;const r=this.getSurface(i);e(r)}))}else{const t=this.getSurface(i);e(t)}}dispose(){this.worker&&this.worker.terminate()}}class Vd extends Sh{constructor(t,e,i){super(t,e,i),this.type=\"surface\",this.parameters=Object.assign({surfaceType:{type:\"select\",rebuild:!0,options:{vws:\"vws\",sas:\"sas\",ms:\"ms\",ses:\"ses\",av:\"av\"}},probeRadius:{type:\"number\",precision:1,max:20,min:0,rebuild:!0},smooth:{type:\"integer\",precision:1,max:10,min:0,rebuild:!0},scaleFactor:{type:\"number\",precision:1,max:5,min:0,rebuild:!0},cutoff:{type:\"number\",precision:2,max:50,min:0,rebuild:!0},contour:{type:\"boolean\",rebuild:!0},background:{type:\"boolean\",rebuild:!0},opaqueBack:{type:\"boolean\",buffer:!0},filterSele:{type:\"text\",rebuild:!0},colorVolume:{type:\"hidden\"},useWorker:{type:\"boolean\",rebuild:!0}},this.parameters,{radius:null,scale:null}),this.__infoList=[],this.structure.signals.refreshed.add((()=>{this.__forceNewMolsurf=!0})),this.toBePrepared=!0,this.init(i)}init(t){const e=t||{};e.colorScheme=st(e.colorScheme,\"uniform\"),e.colorValue=st(e.colorValue,14540253),e.disablePicking=st(e.disablePicking,!0),this.surfaceType=st(e.surfaceType,\"ms\"),this.probeRadius=st(e.probeRadius,1.4),this.smooth=st(e.smooth,2),this.scaleFactor=st(e.scaleFactor,2),this.cutoff=st(e.cutoff,0),this.contour=st(e.contour,!1),this.background=st(e.background,!1),this.opaqueBack=st(e.opaqueBack,!0),this.filterSele=st(e.filterSele,\"\"),this.colorVolume=st(e.colorVolume,void 0),this.useWorker=st(e.useWorker,!0),super.init(t)}prepareData(t,i,r){let s=this.__infoList[i];if(s||(s={},this.__infoList[i]=s),s.molsurf&&s.sele===t.selection.string)r(i);else{if(this.filterSele){const s=t.structure.getView(new pe(this.filterSele)),n=s.boundingBox.getSize(new e),o=Math.max(n.x,n.y,n.z),a=t.getAtomSetWithinPoint(s.center,o/2+6);if(0===(t=t.getView(new pe(t.getAtomSetWithinSelection(a,3).toSeleString()))).atomCount)return void r(i)}s.sele=t.selection.string,s.molsurf=new zd(t);const n=this.getSurfaceParams(),o=t=>{s.surface=t,r(i)};this.useWorker?s.molsurf.getSurfaceWorker(n,o):o(s.molsurf.getSurface(n))}}prepare(t){if((this.__forceNewMolsurf||this.__sele!==this.selection.string||this.__surfaceParams!==JSON.stringify(this.getSurfaceParams()))&&(this.__infoList.forEach((t=>{t&&t.molsurf&&t.molsurf.dispose()})),this.__infoList.length=0),0===this.structureView.atomCount)return void t();const e=()=>{this.__sele=this.selection.string,this.__surfaceParams=JSON.stringify(this.getSurfaceParams()),this.__forceNewMolsurf=!1,t()},i=\"default\"===this.assembly?this.defaultAssembly:this.assembly,r=this.structure.biomolDict[i];r?r.partList.forEach(((t,i)=>{const s=t.getView(this.structureView);this.prepareData(s,i,(t=>{t===r.partList.length-1&&e()}))})):this.prepareData(this.structureView,0,e)}createData(t,e){const i=this.__infoList[e],r=i.surface;if(!r)return;const s={position:r.getPosition(),color:r.getColor(this.getColorParams()),index:r.getFilteredIndex(this.filterSele,t)},n=[];if(r.contour){const t=new Xo(s,this.getBufferParams({wireframe:!1}));n.push(t)}else{Object.assign(s,{normal:r.getNormal(),picking:r.getPicking(t.getStructure())});const e=new jo(s,this.getBufferParams({background:this.background,opaqueBack:this.opaqueBack,dullInterior:!1}));if(\"double\"==this.getBufferParams().side){const t=new qo(e);n.push(t)}else n.push(e)}return{bufferList:n,info:i}}updateData(t,e){const i={};if(t.position||t.radius)return this.__forceNewMolsurf=!0,void this.build();t.color&&(i.color=e.info.surface.getColor(this.getColorParams())),t.index&&(i.index=e.info.surface.getFilteredIndex(this.filterSele,e.sview)),e.bufferList[0].setAttributes(i)}setParameters(t,e={},i){return t&&t.filterSele&&(e.index=!0),t&&void 0!==t.colorVolume&&(e.color=!0),t&&t.wireframe&&(t.contour||void 0===t.contour&&this.contour)&&(t.wireframe=!1),super.setParameters(t,e,i),this}getSurfaceParams(t={}){return Object.assign({type:this.surfaceType,probeRadius:this.probeRadius,scaleFactor:this.scaleFactor,smooth:this.smooth&&!this.contour,cutoff:this.cutoff,contour:this.contour,useWorker:this.useWorker,radiusParams:this.getRadiusParams()},t)}getColorParams(){const t=super.getColorParams();return t.volume=this.colorVolume,t}getAtomRadius(){return 0}clear(){super.clear()}dispose(){this.__infoList.forEach((t=>{t&&t.molsurf&&t.molsurf.dispose()})),this.__infoList.length=0,super.dispose()}}Ne.add(\"surface\",Vd);class Gd extends Sh{constructor(t,e,i){super(t,e,i),this.type=\"point\",this.parameters=Object.assign({pointSize:{type:\"number\",precision:1,max:100,min:0,buffer:!0},sizeAttenuation:{type:\"boolean\",buffer:!0},sortParticles:{type:\"boolean\",rebuild:!0},useTexture:{type:\"boolean\",buffer:!0},alphaTest:{type:\"range\",step:.001,max:1,min:0,buffer:!0},forceTransparent:{type:\"boolean\",buffer:!0},edgeBleach:{type:\"range\",step:.001,max:1,min:0,buffer:!0}},this.parameters,{flatShaded:null,wireframe:null,linewidth:null,side:null,roughness:null,metalness:null}),this.init(i)}init(t){var e=t||{};this.pointSize=st(e.pointSize,1),this.sizeAttenuation=st(e.sizeAttenuation,!0),this.sortParticles=st(e.sortParticles,!1),this.useTexture=st(e.useTexture,!1),this.alphaTest=st(e.alphaTest,.5),this.forceTransparent=st(e.forceTransparent,!1),this.edgeBleach=st(e.edgeBleach,0),super.init(e)}createData(t){var e=t.getAtomData(this.getAtomParams({position:!0,color:!0,picking:!0}));return{bufferList:[new Wc(e,this.getBufferParams({pointSize:this.pointSize,sizeAttenuation:this.sizeAttenuation,sortParticles:this.sortParticles,useTexture:this.useTexture,alphaTest:this.alphaTest,forceTransparent:this.forceTransparent,edgeBleach:this.edgeBleach}))]}}updateData(t,e){var i=e.sview.getAtomData(this.getAtomParams(t)),r={};t&&!t.position||Object.assign(r,{position:i.position}),t&&!t.color||Object.assign(r,{color:i.color}),e.bufferList[0].setAttributes(r)}getAtomRadius(){return.1}}Ne.add(\"point\",Gd),Ve.add(\"shader/Ribbon.vert\",\"#define STANDARD\\nuniform float clipNear;\\nuniform vec3 clipCenter;\\n#if defined( NEAR_CLIP ) || defined( RADIUS_CLIP ) || !defined( PICKING )\\nvarying vec3 vViewPosition;\\n#endif\\n#if defined( RADIUS_CLIP )\\nvarying vec3 vClipCenter;\\n#endif\\nattribute vec3 dir;\\nattribute float size;\\n#ifdef PICKING\\n#include unpack_color\\nattribute float primitiveId;\\nvarying vec3 vPickingColor;\\n#else\\n#include color_pars_vertex\\n#ifndef FLAT_SHADED\\nvarying vec3 vNormal;\\n#endif\\n#endif\\n#include common\\nvoid main(void){\\n#ifdef PICKING\\nvPickingColor = unpackColor( primitiveId );\\n#else\\n#include color_vertex\\n#include beginnormal_vertex\\n#include defaultnormal_vertex\\n#ifndef FLAT_SHADED\\nvNormal = normalize( transformedNormal );\\n#endif\\n#endif\\n#include begin_vertex\\ntransformed += normalize( dir ) * size;\\n#include project_vertex\\n#if defined( NEAR_CLIP ) || defined( RADIUS_CLIP ) || !defined( PICKING )\\nvViewPosition = -mvPosition.xyz;\\n#endif\\n#if defined( RADIUS_CLIP )\\nvClipCenter = -( modelViewMatrix * vec4( clipCenter, 1.0 ) ).xyz;\\n#endif\\n#include nearclip_vertex\\n}\");const Ud=new Uint16Array([0,1,2,1,3,2]);function jd(t){return 3*(4*(t.position.length/3-1))}class Hd extends Uo{constructor(t,e={}){super({position:new Float32Array(jd(t)),color:new Float32Array(jd(t)),index:xt(jd(t),jd(t)/3),normal:new Float32Array(jd(t)),picking:t.picking},e),this.vertexShader=\"Ribbon.vert\";const i=t.position.length/3-1,r=4*i,s=3*r;this.addAttributes({dir:{type:\"v3\",value:new Float32Array(s)}}),this.addAttributes({size:{type:\"f\",value:new Float32Array(r)}}),t.primitiveId=Pi(i),this.setAttributes(t),this.makeIndex()}setAttributes(t={}){const e=this.size/4,i=this.geometry.attributes;let r,s,n,o,a,c,l,h,d,u,m,p,f,g,y,b,x,v,w;t.position&&(r=t.position,l=i.position.array,i.position.needsUpdate=!0),t.normal&&(s=t.normal,h=i.normal.array,i.normal.needsUpdate=!0),t.size&&(n=t.size,d=i.size.array,i.size.needsUpdate=!0),t.dir&&(o=t.dir,u=i.dir.array,i.dir.needsUpdate=!0),t.color&&(a=t.color,m=i.color.array,i.color.needsUpdate=!0),t.primitiveId&&(c=t.primitiveId,p=i.primitiveId.array,i.primitiveId.needsUpdate=!0);let A=n?n[0]:null;for(f=0;f{if(!(t.residueCount<4)){i.push(t);var r=new od(t,this.getSplineParams()),s=r.getSubdividedPosition(),n=r.getSubdividedOrientation(),o=r.getSubdividedColor(this.getColorParams()),a=r.getSubdividedPicking(),c=r.getSubdividedSize(this.getRadiusParams());e.push(new Hd({position:s.position,normal:n.binormal,dir:n.normal,color:o.color,size:c.size,picking:a.picking},this.getBufferParams()))}}),t.getSelection()),{bufferList:e,polymerList:i}}updateData(t,e){t=t||{};var i=0,r=e.polymerList.length;for(i=0;i{if(t.residueCount<4||t.isNucleic())return;const s=new Pa(t),n=s.getAxis(this.localAngle,this.centerDist,this.ssBorder,this.getColorParams(),this.getRadiusParams());e+=n.size.length,i.push(n),r.push(s)}),t.getSelection());const s={begin:new Float32Array(3*e),end:new Float32Array(3*e),size:new Float32Array(e),color:new Float32Array(3*e),picking:{}};let n=new Float32Array(e),o=0;i.forEach((function(t){s.begin.set(t.begin,3*o),s.end.set(t.end,3*o),s.size.set(t.size,o),s.color.set(t.color,3*o),n.set(t.picking.array,o),o+=t.size.length})),e&&(s.picking=new Yn(n,t.getStructure()));return{bufferList:[new td({position1:s.begin,position2:s.end,color:s.color,color2:s.color,radius:s.size,picking:s.picking},this.getBufferParams({openEnded:this.openEnded,radialSegments:this.radialSegments,disableImpostor:this.disableImpostor,dullInterior:!0}))],axisList:i,helixbundleList:r,axisData:s}}updateData(t,e){if((t=t||{}).position)this.build();else{var i={};if(t.color||t.radius){var r=0;e.helixbundleList.forEach((i=>{var s=i.getAxis(this.localAngle,this.centerDist,this.ssBorder,this.getColorParams(),this.getRadiusParams());t.color&&e.axisData.color.set(s.color,3*r),(t.radius||t.scale)&&e.axisData.size.set(s.size,r),r+=s.size.length})),t.color&&Object.assign(i,{color:e.axisData.color,color2:e.axisData.color}),(t.radius||t.scale)&&Object.assign(i,{radius:e.axisData.size})}e.bufferList[0].setAttributes(i)}}}Ne.add(\"rocket\",qd);class Xd extends dd{constructor(t,e,i){super(t,e,i),this.type=\"rope\",this.parameters=Object.assign({smooth:{type:\"integer\",max:15,min:0,rebuild:!0}},this.parameters,{aspectRatio:null,smoothSheet:null})}init(t){var e=t||{};e.aspectRatio=1,e.tension=st(e.tension,.5),e.radiusScale=st(e.radiusScale,5),e.smoothSheet=!1,this.smooth=st(e.smooth,2),super.init(e)}getSpline(t){var e=new Ca(t);return new od(t,this.getSplineParams({directional:!1,positionIterator:e.getCenterIterator(this.smooth)}))}}Ne.add(\"rope\",Xd);class Yd extends Sh{constructor(t,e,i){super(t,e,i),this.type=\"spacefill\",this.parameters=Object.assign({sphereDetail:!0,disableImpostor:!0},this.parameters),this.init(i)}init(t){var e=t||{};e.useInteriorColor=st(e.useInteriorColor,!0),super.init(e)}createData(t){return{bufferList:[new Gc(t.getAtomData(this.getAtomParams()),this.getBufferParams({sphereDetail:this.sphereDetail,dullInterior:!0,disableImpostor:this.disableImpostor}))]}}updateData(t,e){var i=e.sview.getAtomData(this.getAtomParams(t)),r={};t&&!t.position||Object.assign(r,{position:i.position}),t&&!t.color||Object.assign(r,{color:i.color}),t&&!t.radius||Object.assign(r,{radius:i.radius}),e.bufferList[0].setAttributes(r)}}function Kd(t){return 3*(t.position.length/3-1)*2}Ne.add(\"spacefill\",Yd);class Zd extends Go{constructor(t,e={}){super({position:new Float32Array(Kd(t)),color:new Float32Array(Kd(t))},e),this.isLine=!0,this.vertexShader=\"Line.vert\",this.fragmentShader=\"Line.frag\",this.setAttributes(t)}setAttributes(t){let e,i,r,s;const n=this.geometry.attributes;if(t.position&&(e=t.position,r=n.position.array,n.position.needsUpdate=!0),t.color&&(i=t.color,s=n.color.array,n.color.needsUpdate=!0),!e&&!i)return void Me.warn(\"TraceBuffer.prototype.setAttributes no data\");let o,a;const c=this.size-1;for(let t=0;t{if(!(t.residueCount<4)){i.push(t);var r=new od(t,this.getSplineParams()),s=r.getSubdividedPosition(),n=r.getSubdividedColor(this.getColorParams());e.push(new Zd(Object.assign({},s,n),this.getBufferParams()))}}),t.getSelection()),{bufferList:e,polymerList:i}}updateData(t,e){t=t||{};var i=0,r=e.polymerList.length;for(i=0;i{t.boundingBox||t.computeBoundingBox(),this.boundingBox.union(t.boundingBox)}))}}const lu=Object.assign({aspectRatio:1.5,radialSegments:50,openEnded:!1,disableImpostor:!1},zo);class hu{constructor(t,e={}){this.group=new m,this.wireframeGroup=new m,this.pickingGroup=new m,this.visible=!0,this.parameters=nt(e,this.defaultParameters),this.splitPosition=new Float32Array(t.position1.length),this.cylinderRadius=new Float32Array(t.radius.length);const r=this.makeAttributes(t),s={radialSegments:this.parameters.radialSegments,openEnded:this.parameters.openEnded,disableImpostor:this.parameters.disableImpostor};this.cylinderBuffer=new td(r.cylinder,s),this.coneBuffer=new au(r.cone,s),this.geometry=new cu([this.cylinderBuffer.geometry,this.coneBuffer.geometry]),this.matrix=st(e.matrix,new i),this.picking=t.picking}get defaultParameters(){return lu}set matrix(t){Go.prototype.setMatrix.call(this,t)}get matrix(){return this.group.matrix.clone()}get pickable(){return!!this.picking}makeAttributes(t={}){const i=this.splitPosition,r=this.cylinderRadius,s=this.parameters.aspectRatio;let n,o;const a={},c={};if(t.radius){for(n=0,o=r.length;n(this._beforeParse(),this._parse(),this._afterParse(),this[this.__objName])))}_parse(){}_beforeParse(){}_afterParse(){De&&Me.log(this[this.__objName])}}class Nu extends Lu{constructor(t,e){var i=e||{};super(t,i),this.firstModelOnly=st(i.firstModelOnly,!1),this.asTrajectory=st(i.asTrajectory,!1),this.cAlphaOnly=st(i.cAlphaOnly,!1),this.structure=new Cc(this.name,this.path),this.structureBuilder=new za(this.structure)}get type(){return\"structure\"}get __objName(){return\"structure\"}}class zu{constructor(t,e,i=\"\",r,s=[]){this.structure=t,this.index=e,this.description=i,this.entityType=function(t){switch(t=t.toLowerCase()){case\"polymer\":return 1;case\"non-polymer\":return 2;case\"macrolide\":return 3;case\"water\":return 4;default:return 0}}(r||\"\"),this.chainIndexList=s,s.forEach((function(i){t.chainStore.entityIndex[i]=e}))}get type(){return function(t){switch(t){case 1:return\"polymer\";case 2:return\"non-polymer\";case 3:return\"macrolide\";case 4:return\"water\";default:return}}(this.entityType)}getEntityType(){return this.entityType}isPolymer(){return 1===this.entityType}isNonPolymer(){return 2===this.entityType}isMacrolide(){return 3===this.entityType}isWater(){return 4===this.entityType}eachChain(t){const e=this.structure.getChainProxy();this.chainIndexList.forEach((function(i){e.index=i,t(e)}))}}const Vu={a:1,b:1,c:1,alpha:90,beta:90,gamma:90,spacegroup:\"P 1\"};class Gu{constructor(t=Vu){this.cartToFrac=new i,this.fracToCart=new i,this.a=t.a,this.b=t.b,this.c=t.c,this.alpha=t.alpha,this.beta=t.beta,this.gamma=t.gamma,this.spacegroup=t.spacegroup;const e=kt(this.alpha),r=kt(this.beta),s=kt(this.gamma),n=Math.cos(e),o=Math.cos(r),a=Math.cos(s),c=Math.sin(r),l=Math.sin(s);if(this.volume=this.a*this.b*this.c*Math.sqrt(1-n*n-o*o-a*a+2*n*o*a),void 0===t.cartToFrac){const t=this.a*this.b*l/this.volume,e=(o*a-n)/(c*l);this.fracToCart.set(this.a,0,0,0,this.b*a,this.b*l,0,0,this.c*o,-this.c*c*e,1/t,0,0,0,0,1).transpose(),this.cartToFrac.getInverse(this.fracToCart)}else this.cartToFrac.copy(t.cartToFrac),this.fracToCart.getInverse(this.cartToFrac)}getPosition(t){const i=new Float32Array(24);if(t.unitcell){const r=t.unitcell,s=t.center.clone().applyMatrix4(r.cartToFrac).floor(),n=new e;let o=0;const a=function(t,e,a){n.set(t,e,a).add(s).applyMatrix4(r.fracToCart).toArray(i,o),o+=3};a(0,0,0),a(1,0,0),a(0,1,0),a(0,0,1),a(1,1,0),a(1,0,1),a(0,1,1),a(1,1,1)}return i}getCenter(t){return function(t,i=new e){const r=t.length;for(let e=0;e0)continue;let e,i,r,s,a,g=0;if(n){if(s=S.split(Wu),g=10===s.length?1:0,D=s[2],p&&\"CA\"!==D)continue;e=parseFloat(s[6-g]),i=parseFloat(s[7-g]),r=parseFloat(s[8-g])}else{if(D=S.substr(12,4).trim(),p&&\"CA\"!==D)continue;e=parseFloat(S.substr(30,8)),i=parseFloat(S.substr(38,8)),r=parseFloat(S.substr(46,8))}if(m){const t=3*b;if(y[t+0]=e,y[t+1]=i,y[t+2]=r,b+=1,x)continue}n?(P=parseInt(s[1]),a=\"\",$=\"H\"===S[0],I=g?\"\":s[4],k=parseInt(s[5-g]),B=\"\",M=s[3],R=\"\",T=1):(P=parseInt(S.substr(6,5),h),l&&99999===P&&(h=16),$=\"H\"===S[0],I=S[21].trim(),k=parseInt(S.substr(22,4),d),l&&9999===k&&(d=16),B=S[26].trim(),M=S.substr(17,4).trim()||\"MOL\",O=parseFloat(S.substr(60,6)),R=S[16].trim(),T=parseFloat(S.substr(54,6)),t||(o?(a=S.substr(76,3).trim(),a in pn&&(a=pn[a])):(a=S.substr(76,2).trim(),I||(I=S.substr(72,4).trim())),E=parseInt((S.substr(79,1)+S.substr(78,1)).trim()))),dt.growIfFull(),dt.atomTypeId[pt]=ht.add(D,a),dt.x[pt]=e,dt.y[pt]=i,dt.z[pt]=r,dt.serial[pt]=P,dt.altloc[pt]=R.charCodeAt(0),dt.occupancy[pt]=isNaN(T)?0:T,n?(dt.partialCharge[pt]=parseFloat(s[9-g]),dt.radius[pt]=parseFloat(s[10-g])):(dt.bfactor[pt]=isNaN(O)?0:O,o&&(dt.partialCharge[pt]=parseFloat(S.substr(70,6))),isFinite(E)&&(dt.formalCharge||dt.addField(\"formalCharge\",1,\"int8\"),dt.formalCharge[pt]=E));const v=qu(k,I,B);!$||K[v]||ju.includes(M)?tt||et===I||(Q+=1,J=Q.toString()):et===I&&rt===M&&(cn.includes(M)||it===k&&st===B)||(Q+=1,J=Q.toString(),it=k,rt=M,st=B),c.addAtom(ft,I,J,M,k,$,void 0,B),U[P]=pt,pt+=1,tt=!1,et=I}else if(\"CONECT\"===C){const t=U[parseInt(S.substr(6,5))],e=[11,16,21,26],i={};if(void 0===t)continue;for(let r=0;r<4;++r){let s=parseInt(S.substr(e[r],5));if(!Number.isNaN(s)&&(s=U[s],void 0!==s))if(t0)continue;const s=e[l].replace(Zu,\"\");if(k&&\"CA\"!==s)continue;const T=parseFloat(e[x]),$=parseFloat(e[v]),O=parseFloat(e[w]);if(I){const e=3*r;if(t[e+0]=T,t[e+1]=$,t[e+2]=O,r+=1,X>0)continue}const R=e[h],E=parseInt(e[-1!==a?a:c]);let F=e[b];F=\"?\"===F?\"\":F;const L=e[o],N=e[d],z=\"H\"===e[p][0],V=e[g],Y=parseFloat(e[A]),K=parseFloat(e[_]);let Z=e[m];if(Z=\".\"===Z?\"\":Z,H.growIfFull(),H.atomTypeId[q]=j.add(s,V),H.x[q]=T,H.y[q]=$,H.z[q]=O,H.serial[q]=parseInt(e[f]),H.bfactor[q]=isNaN(Y)?0:Y,H.occupancy[q]=isNaN(K)?0:K,H.altloc[q]=Z.charCodeAt(0),C.addAtom(X,L,N,R,E,z,void 0,F),De){const t=B[N];void 0!==t&&t!==L&&De&&Me.warn(t,L)}B[N]=L;const Q=e[u];D[Q]||(D[Q]=new Set),D[Q].add(S.chainStore.count-1),q+=1}else{const t=n.match(Ku),e=t.length;N===L.length&&(N=0);for(let i=0;ic*c)return o.growIfFull(),o.atomTypeId[f]=o.atomTypeId[t],o.x[f]=u.x,o.y[f]=u.y,o.z[f]=u.z,o.occupancy[f]=o.occupancy[t],o.serial[f]=f,o.altloc[f]=\"A\".charCodeAt(0),s.addAtom(0,\"\",\"\",\"HET\",1,!0),void(f+=1)}}}))}}(T,S,C),C.finalize(),S.finalizeAtoms(),Wa(S),S.finalizeBonds();else{var Y=function(t,e,i){var r,s,n,o,a=[],c=[],l=t.struct_conf;if(null==l?void 0:l.pdbx_PDB_helix_class)for(em(l,\"id\"),r=0,s=l.beg_auth_seq_id.length;r0){o=o.split(\"(\");var l=c(o[0]),h=c(o[1]);Object.keys(l).forEach((function(t){Object.keys(h).forEach((function(e){var r=new i;r.multiplyMatrices(l[t],h[e]),s[t+\"x\"+e]=r}))}))}else s=c(o);var d=[];for(var u in s)d.push(s[u]);var m=t;/^(0|[1-9][0-9]*)$/.test(m)&&(m=\"BU\"+m);for(var p=a.asym_id_list[e].split(\",\"),f=0,g=p.length;fA){var _=w;w=A,A=_;var S=p;p=x,x=S}if(0!==w&&0!==A)for(var C=0;Cb)continue}d=I.substr(5,5).trim(),u=parseInt(I.substr(0,5)),m=parseInt(I.substr(15,5)),v.growIfFull(),v.atomTypeId[w]=x.add(h),v.x[w]=T,v.y[w]=B,v.z[w]=D,v.serial[w]=m,r.addAtom(A,\"\",\"\",d,u,!1,\"l\"),w+=1}}}(0,i.length,i)})),r.finalize(),i.finalizeAtoms(),Ha(i),Wa(i),i.finalizeBonds(),Ga(i),De&&Me.timeEnd(\"GroParser._parse \"+this.name)}});var om=[\"mmtfVersion\",\"mmtfProducer\",\"unitCell\",\"spaceGroup\",\"structureId\",\"title\",\"depositionDate\",\"releaseDate\",\"experimentalMethods\",\"resolution\",\"rFree\",\"rWork\",\"bioAssemblyList\",\"ncsOperatorList\",\"entityList\",\"groupList\",\"numBonds\",\"numAtoms\",\"numGroups\",\"numChains\",\"numModels\",\"groupsPerChain\",\"chainsPerModel\"].concat([\"xCoordList\",\"yCoordList\",\"zCoordList\",\"groupIdList\",\"groupTypeList\",\"chainIdList\",\"bFactorList\",\"atomIdList\",\"altLocList\",\"occupancyList\",\"secStructList\",\"insCodeList\",\"sequenceIndexList\",\"chainNameList\",\"bondAtomList\",\"bondOrderList\"]);function am(t,e,i){return e?new t(e.buffer,e.byteOffset,e.byteLength/(i||1)):void 0}function cm(t){return am(DataView,t)}function lm(t){return am(Int8Array,t)}function hm(t){return am(Int32Array,t,4)}function dm(t,e){var i=t.length/2;e||(e=new Int16Array(i));for(var r=0,s=0;rn&&++a;e=new Int32Array(a)}for(i=0,r=0;is){for(var n=[],o=0;o0&&(o.biomolDict[t]=e)}const O=a.unitCell;O&&Array.isArray(O)&&O[0]?o.unitcell=new Gu({a:O[0],b:O[1],c:O[2],alpha:O[3],beta:O[4],gamma:O[5],spacegroup:a.spaceGroup}):o.unitcell=void 0,Ka(o,!0),Ya(o,!0),o.finalizeAtoms(),o.finalizeBonds(),Za(o),De&&Me.timeEnd(\"MmtfParser._parse \"+this.name)}});const _m=/\\s+/,Sm={1:1,2:2,3:3,am:1,ar:1,du:1,un:1,nc:0};ze.add(\"mol2\",class extends Nu{get type(){return\"mol2\"}_parse(){De&&Me.time(\"Mol2Parser._parse \"+this.name);const t=this.structure,e=this.structureBuilder,i=this.firstModelOnly,r=this.asTrajectory,s=t.frames;let n,o,a=!1;const c=t.atomMap,l=t.atomStore;l.resize(Math.round(this.streamer.data.length/60)),l.addField(\"partialCharge\",1,\"float32\");let h=0,d=0,u=0,m=-1,p=0,f=0;const g=t.getAtomProxy(),y=t.getAtomProxy();this.streamer.eachChunkOfLines((function(b){!function(b,x,v){for(let w=b;wMOLECULE\"===b?(f=1,d=0,++m):\"@ATOM\"===b?(f=2,u=l.count,r&&(o=0,n=new Float32Array(3*p),s.push(n),m>0&&(a=!0))):f=\"@BOND\"===b?3:0;else if(1===f){if(0===d)t.title=b,t.id=b;else if(1===d){const t=b.split(_m);p=parseInt(t[0])}++d}else if(2===f){const t=b.split(_m);if(i&&m>0)continue;const s=parseFloat(t[2]),d=parseFloat(t[3]),u=parseFloat(t[4]);if(r){const t=3*o;if(n[t+0]=s,n[t+1]=d,n[t+2]=u,o+=1,a)continue}const p=t[0],f=t[1],g=t[5].split(\".\")[0],y=t[6]?parseInt(t[6]):1,x=t[7]?t[7]:\"\",v=t[8]?parseFloat(t[8]):0;l.growIfFull(),l.atomTypeId[h]=c.add(f,g),l.x[h]=s,l.y[h]=d,l.z[h]=u,l.serial[h]=p,l.partialCharge[h]=v,e.addAtom(m,\"\",\"\",x,y,!0),h+=1}else if(3===f){if(i&&m>0)continue;if(r&&m>0)continue;const e=b.split(_m);g.index=parseInt(e[1])-1+u,y.index=parseInt(e[2])-1+u;const s=Sm[e[3]];t.bondStore.addBond(g,y,s)}}}(0,b.length,b)})),e.finalize(),t.finalizeAtoms(),Ha(t),Ya(t,!0),Ka(t,!0),t.finalizeBonds(),ec(t),Ga(t),De&&Me.timeEnd(\"Mol2Parser._parse \"+this.name)}});ze.add(\"pdbqt\",class extends Xu{get type(){return\"pdbqt\"}});ze.add(\"pqr\",class extends Xu{get type(){return\"pqr\"}});const Cm=/> +<(.+)>/;class Pm extends Nu{get type(){return\"sdf\"}_parse(){De&&Me.time(\"SdfParser._parse \"+this.name);const t=this.structure,e=this.structureBuilder,i=this.firstModelOnly,r=this.asTrajectory,s=this.streamer.peekLines(2);t.id=s[0].trim(),t.title=s[1].trim();const n=t.frames;let o,a,c=!1;const l=t.atomMap,h=t.atomStore;h.resize(Math.round(this.streamer.data.length/50)),h.addField(\"formalCharge\",1,\"int8\");const d=t.getAtomProxy(),u=t.getAtomProxy();let m=0,p=0,f=0,g=0;const y=[];let b,x,v,w,A,_,S,C,P,I,k,M,T,B,D=!1,$={};t.extraData.sdf=y;let O=!1,R=!1,E=!1,F=[],L=[];const N=new Map;this.streamer.eachChunkOfLines((function(s){!function(s,z,V){for(let G=s;G-1,O?N.clear():(x=parseInt(s.substr(0,3)),v=parseInt(s.substr(3,3)),w=4,A=w+x,_=A,S=_+v,r&&(a=0,o=new Float32Array(3*x),n.push(o),f>0&&(c=!0)));else if(O&&\"COUNTS\"===F[0])x=parseInt(F[1]),r&&(a=0,o=new Float32Array(3*x),n.push(o),f>0&&(c=!0));else if(O&&2==F.length)\"ATOM\"===F[1]?\"BEGIN\"===F[0]?R=!0:\"END\"===F[0]&&(R=!1):\"BOND\"===F[1]&&(\"BEGIN\"===F[0]?E=!0:\"END\"===F[0]&&(E=!1));else if(R||!O&&p>=w&&p0)continue;let t=0;if(O){if(C=parseFloat(F[2]),P=parseFloat(F[3]),I=parseFloat(F[4]),M=F[1],T=parseInt(F[0]),N.set(T,m),k=M+T,F.length>6){let e=F.slice(6).find((t=>0===t.indexOf(\"CHG=\")));e&&(t=parseInt(e.substring(4)))}}else C=parseFloat(s.substr(0,10)),P=parseFloat(s.substr(10,10)),I=parseFloat(s.substr(20,10)),M=s.substr(31,3).trim(),k=M+(m-g+1);if(r){const t=3*a;if(o[t+0]=C,o[t+1]=P,o[t+2]=I,a+=1,c)continue}h.growIfFull(),h.atomTypeId[m]=l.add(k,M),h.x[m]=C,h.y[m]=P,h.z[m]=I,h.serial[m]=O?T:m,h.formalCharge[m]=t,e.addAtom(f,\"\",\"\",\"HET\",1,!0),m+=1}else if(E||!O&&p>=_&&p0)continue;if(r&&f>0)continue;O?(d.index=N.get(parseInt(F[2])),u.index=N.get(parseInt(F[3])),B=parseInt(F[1])):(d.index=parseInt(s.substr(0,3))-1+g,u.index=parseInt(s.substr(3,3))-1+g,B=parseInt(s.substr(6,3))),t.bondStore.addBond(d,u,B)}else if(\"M CHG\"===s.substr(0,6)){const t=parseInt(s.substr(6,3));for(let e=0,i=10;e\"===s.charAt(0)&&(b=s.match(Cm))?(D=b[1],$[D]=[]):!1!==D&&s&&$[D].push(s);++p}}}(0,s.length,s)})),e.finalize(),t.finalizeAtoms(),t.finalizeBonds(),ec(t),De&&Me.timeEnd(\"SdfParser._parse \"+this.name)}_postProcess(){ec(this.structure)}}ze.add(\"sdf\",Pm),ze.add(\"sd\",Pm),ze.add(\"mol\",Pm);function Im(t,e,i){return parseInt(t.substr(e,i).trim())}class km extends Nu{get type(){return\"prmtop\"}_parse(){De&&Me.time(\"PrmtopParser._parse \"+this.name);const t=this.structure,e=this.structureBuilder,i=t.atomMap,r=t.atomStore;r.addField(\"partialCharge\",1,\"float32\"),r.addField(\"radius\",1,\"float32\");const s=[],n={},o=[\"NATOM\",\"NTYPES\",\"NBONH\",\"MBONA\",\"NTHETH\",\"MTHETA\",\"NPHIH\",\"MPHIA\",\"NHPARM\",\"NPARM\",\"NNB\",\"NRES\",\"NBONA\",\"NTHETA\",\"NPHIA\",\"NUMBND\",\"NUMANG\",\"NPTRA\",\"NATYP\",\"NPHB\",\"IFPERT\",\"NBPER\",\"NGPER\",\"NDPER\",\"MBPER\",\"MGPER\",\"MDPER\",\"IFBOX\",\"NMXRS\",\"IFCAP\",\"NUMEXTRA\",\"NCOPY\"];let a,c,l,h,d;o.forEach((t=>{n[t]=0}));let u,m,p,f,g,y=new Uint8Array(0);this.streamer.eachChunkOfLines((function(t){!function(t,e,i){for(let b=t;b0)return void Me.error(\"dcd format with fixed atoms unsupported, aborting\");const p=n.NATOM,f=4*p;for(let i=0,a=n.NSET;i=1&&(i.timeOffset=(n.ISTART-1)*i.deltaTime),De&&Me.timeEnd(\"DcdParser._parse \"+this.name)}});const Fm={BYTE:1,CHAR:2,SHORT:3,INT:4,FLOAT:5,DOUBLE:6};function Lm(t){switch(Number(t)){case Fm.BYTE:return\"byte\";case Fm.CHAR:return\"char\";case Fm.SHORT:return\"short\";case Fm.INT:return\"int\";case Fm.FLOAT:return\"float\";case Fm.DOUBLE:return\"double\";default:return\"undefined\"}}function Nm(t){switch(Number(t)){case Fm.BYTE:case Fm.CHAR:return 1;case Fm.SHORT:return 2;case Fm.INT:case Fm.FLOAT:return 4;case Fm.DOUBLE:return 8;default:return-1}}function zm(t){switch(String(t)){case\"byte\":return Fm.BYTE;case\"char\":return Fm.CHAR;case\"short\":return Fm.SHORT;case\"int\":return Fm.INT;case\"float\":return Fm.FLOAT;case\"double\":return Fm.DOUBLE;default:return-1}}function Vm(t,e){if(1!==t){const i=new Array(t);for(let r=0;r6,\"non valid type \"+h);const d=t.readUint32();let u=t.readUint32();2===i&&(Om(u>0,\"offsets larger than 4GB not supported\"),u=t.readUint32()),c[0]===e&&(n+=d),s[r]={name:o,dimensions:c,attributes:l,type:Lm(h),size:d,offset:u,record:c[0]===e}}}return{variables:s,recordStep:n}}(t,r.recordId,e);return i.variables=s.variables,i.recordDimension.recordStep=s.recordStep,i}function Xm(t){let e;const i=t.readUint32();if(i===Um)return Om(t.readUint32()!==Um,\"wrong empty tag for list of attributes\"),[];{Om(i!==Wm,\"wrong tag for list of attributes\");const r=t.readUint32();e=new Array(r);for(let i=0;i6,\"non valid type \"+s);const n=t.readUint32(),o=Gm(t,s,n);Rm(t),e[i]={name:r,type:Lm(s),value:o}}}return e}class Ym{constructor(t){const e=new hi(t);e.setBigEndian(),Om(\"CDF\"!==e.readChars(3),\"should start with CDF\");const i=e.readByte();Om(i>2,\"unknown version\"),this.header=qm(e,i),this.buffer=e}get version(){return 1===this.header.version?\"classic format\":\"64-bit offset format\"}get recordDimension(){return this.header.recordDimension}get dimensions(){return this.header.dimensions}get globalAttributes(){return this.header.globalAttributes}get variables(){return this.header.variables}hasDataVariable(t){return-1!==this.header.variables.findIndex((function(e){return e.name===t}))}getDataVariable(t){let e;return e=\"string\"==typeof t?this.header.variables.find((function(e){return e.name===t})):t,Om(void 0===e,\"variable not found\"),this.buffer.seek(e.offset),e.record?function(t,e,i){const r=zm(e.type),s=e.size?e.size/Nm(r):1,n=i.length,o=new Array(n),a=i.recordStep;for(let e=0;e=1&&(e.timeOffset=s[0]),s.length>=2&&(e.deltaTime=s[1]-s[0]),De&&Me.timeEnd(\"NctrajParser._parse \"+this.name)}}ze.add(\"nctraj\",Km),ze.add(\"ncdf\",Km),ze.add(\"nc\",Km);ze.add(\"trr\",class extends $m{get type(){return\"trr\"}get isBinary(){return!0}_parse(){De&&Me.time(\"TrrParser._parse \"+this.name);const t=vt(this.streamer.data),e=new DataView(t),i=this.frames,r=i.coordinates,s=i.boxes,n=i.times;let o=0;for(;;){o+=8;const i=e.getInt32(o);o+=4,o+=i;const a=e.getInt32(o+8),c=e.getInt32(o+12),l=e.getInt32(o+16),h=e.getInt32(o+28),d=e.getInt32(o+32),u=e.getInt32(o+36),m=e.getInt32(o+40);o+=52;const p=a/9,f=3*m;if(8===p?n.push(e.getFloat64(o)):n.push(e.getFloat32(o)),o+=2*p,a){const t=new Float32Array(9);if(8===p)for(let i=0;i<9;++i)t[i]=10*e.getFloat64(o),o+=8;else for(let i=0;i<9;++i)t[i]=10*e.getFloat32(o),o+=4;s.push(t)}if(o+=c,o+=l,h){let i;if(8===p){i=new Float32Array(f);for(let t=0;t>8&65280|i>>24&255}i=new Float32Array(t,o,f);for(let t=0;t=t.byteLength)break}n.length>=1&&(i.timeOffset=n[0]),n.length>=2&&(i.deltaTime=n[1]-n[0]),De&&Me.timeEnd(\"TrrParser._parse \"+this.name)}});const Zm=new Uint32Array([0,0,0,0,0,0,0,0,0,8,10,12,16,20,25,32,40,50,64,80,101,128,161,203,256,322,406,512,645,812,1024,1290,1625,2048,2580,3250,4096,5060,6501,8192,10321,13003,16384,20642,26007,32768,41285,52015,65536,82570,104031,131072,165140,208063,262144,330280,416127,524287,660561,832255,1048576,1321122,1664510,2097152,2642245,3329021,4194304,5284491,6658042,8388607,10568983,13316085,16777216]);function Qm(t){let e=1,i=0;for(;t>=e&&i<32;)i++,e<<=1;return i}const Jm=new Uint8Array(32);function tp(t,e){let i=1,r=0;Jm[0]=1;for(let r=0;r>=8;for(;0!==s;)Jm[t++]=255&s,s>>=8;i=t}let s=1;for(i--;Jm[i]>=s;)r++,s*=2;return r+8*i}function ep(t,e,i,r){const s=(1<=8;)o=o<<8|e[a++],c|=o>>n<0&&(n>n&(1<8;)ip[a++]=ep(t,e,8,o),r-=8;r>0&&(ip[a++]=ep(t,e,r,o));for(let t=i-1;t>0;t--){let e=0;for(let i=a-1;i>=0;i--){e=e<<8|ip[i];const r=e/s[t]|0;ip[i]=r,e-=r*s[t]}n[t]=e}n[0]=ip[0]|ip[1]<<8|ip[2]<<16|ip[3]<<24}ze.add(\"xtc\",class extends $m{get type(){return\"xtc\"}get isBinary(){return!0}_parse(){De&&Me.time(\"XtcParser._parse \"+this.name);const t=vt(this.streamer.data),e=new DataView(t),i=this.frames,r=i.coordinates,s=i.boxes,n=i.times,o=new Int32Array(6),a=new Int32Array(3),c=new Int32Array(3),l=new Uint32Array(3),h=new Float32Array(3),d=new Float32Array(3);let u=0;const m=new Int32Array(3),p=new Uint32Array(m.buffer);for(;;){let i;const f=e.getInt32(u+4);u+=12;const g=3*f;n.push(e.getFloat32(u)),u+=4;const y=new Float32Array(9);for(let t=0;t<9;++t)y[t]=10*e.getFloat32(u),u+=4;if(s.push(y),f<=9){i=new Float32Array(f);for(let t=0;t16777215?(c[0]=Qm(a[0]),c[1]=Qm(a[1]),c[2]=Qm(a[2]),f=0):f=tp(3,a);let y=e.getInt32(u);u+=4;let b=y-1;b=9>b?9:b;let x=Zm[b]/2|0,v=Zm[y]/2|0;l[0]=l[1]=l[2]=Zm[y];let w=4*Math.ceil(e.getInt32(u)/4);u+=4;const A=1/n;let _=0,S=0;const C=new Uint8Array(t,u);for(h[0]=h[1]=h[2]=0;S0){h[0]=h[1]=h[2]=0;for(let t=0;t<_;t+=3){if(rp(m,C,3,y,l,h,p),S++,h[0]+=d[0]-v,h[1]+=d[1]-v,h[2]+=d[2]-v,0===t){let t=h[0];h[0]=d[0],d[0]=t,t=h[1],h[1]=d[1],d[1]=t,t=h[2],h[2]=d[2],d[2]=t,i[r++]=d[0]*A,i[r++]=d[1]*A,i[r++]=d[2]*A}else d[0]=h[0],d[1]=h[1],d[2]=h[2];i[r++]=h[0]*A,i[r++]=h[1]*A,i[r++]=h[2]*A}}else i[r++]=h[0]*A,i[r++]=h[1]*A,i[r++]=h[2]*A;if(y+=t,t<0?(v=x,x=y>9?Zm[y-1]/2|0:0):t>0&&(x=v,v=Zm[y]/2|0),l[0]=l[1]=l[2]=Zm[y],0===l[0]||0===l[1]||0===l[2])return void console.error(\"(xdrfile error) Undefined error.\")}u+=w}for(let t=0;t=t.byteLength)break}n.length>=1&&(i.timeOffset=n[0]),n.length>=2&&(i.deltaTime=n[1]-n[0]),De&&Me.timeEnd(\"XtcParser._parse \"+this.name)}});class sp extends Lu{constructor(t,e){const i=e||{};super(t,i),this.volume=new Eo(this.name,this.path),this.voxelSize=st(i.voxelSize,1)}get type(){return\"volume\"}get __objName(){return\"volume\"}_afterParse(){this.volume.setMatrix(this.getMatrix()),super._afterParse()}getMatrix(){return new i}}const np=/\\s+/,op=/-?\\d+(?:\\.\\d*)?(?:[eE][+-]?\\d+)?/g,ap=.529177210859;class cp extends sp{get type(){return\"cube\"}_parse(){De&&Me.time(\"CubeParser._parse \"+this.name);const t=this.volume,i=this.streamer.peekLines(6),r={},s=ap*this.voxelSize;function n(t,e){var r=i[t].trim().split(np)[e];return parseFloat(r)}r.atomCount=Math.abs(n(2,0)),r.originX=n(2,1)*ap,r.originY=n(2,2)*ap,r.originZ=n(2,3)*ap,r.NVX=n(3,0),r.NVY=n(4,0),r.NVZ=n(5,0),r.basisX=new e(n(3,1),n(3,2),n(3,3)).multiplyScalar(s),r.basisY=new e(n(4,1),n(4,2),n(4,3)).multiplyScalar(s),r.basisZ=new e(n(5,1),n(5,2),n(5,3)).multiplyScalar(s);const o=new Float32Array(r.NVX*r.NVY*r.NVZ);let a=0,c=0;const l=n(2,0)>0?0:1;this.streamer.eachChunkOfLines((function(t){!function(t,e,i){for(let s=t;s=r.atomCount+6+l){const e=t.match(op);for(let t=0,i=e.length;t>8&255}e.xStart=n[0],e.yStart=n[1],e.zStart=n[2],e.xExtent=n[3],e.yExtent=n[4],e.zExtent=n[5],e.xRate=n[6],e.yRate=n[7],e.zRate=n[8];const t=1/n[17],s=t*this.voxelSize;e.xlen=n[9]*s,e.ylen=n[10]*s,e.zlen=n[11]*s,e.alpha=n[12]*t,e.beta=n[13]*t,e.gamma=n[14]*t,i=n[15]/100,r=n[16],e.gamma=n[14]*t}t.header=e,De&&Me.log(e,i,r);const c=new Float32Array(e.xExtent*e.yExtent*e.zExtent);let l=512;const h=Math.ceil(e.xExtent/8),d=Math.ceil(e.yExtent/8),u=Math.ceil(e.zExtent/8);for(var m=0;ms){const t=i[r].trim();if(\"\"!==t){const e=t.split(hp);for(let t=0,i=e.length;t=s&&(p-s)%u!=0&&m=0?i-1:i+e/3)},parseNormalIndex:function(t,e){var i=parseInt(t,10);return 3*(i>=0?i-1:i+e/3)},addVertex:function(t,e,i){var r=this.vertices,s=this.object.geometry.vertices;s.push(r[t+0]),s.push(r[t+1]),s.push(r[t+2]),s.push(r[e+0]),s.push(r[e+1]),s.push(r[e+2]),s.push(r[i+0]),s.push(r[i+1]),s.push(r[i+2])},addVertexLine:function(t){var e=this.vertices,i=this.object.geometry.vertices;i.push(e[t+0]),i.push(e[t+1]),i.push(e[t+2])},addNormal:function(t,e,i){var r=this.normals,s=this.object.geometry.normals;s.push(r[t+0]),s.push(r[t+1]),s.push(r[t+2]),s.push(r[e+0]),s.push(r[e+1]),s.push(r[e+2]),s.push(r[i+0]),s.push(r[i+1]),s.push(r[i+2])},addFace:function(t,e,i,r,s,n,o,a){var c,l=this.vertices.length,h=this.parseVertexIndex(t,l),d=this.parseVertexIndex(e,l),u=this.parseVertexIndex(i,l);if(void 0===r?this.addVertex(h,d,u):(c=this.parseVertexIndex(r,l),this.addVertex(h,d,c),this.addVertex(d,u,c)),void 0!==s){var m=this.normals.length;h=this.parseNormalIndex(s,m),d=s===n?h:this.parseNormalIndex(n,m),u=s===o?h:this.parseNormalIndex(o,m),void 0===r?this.addNormal(h,d,u):(c=this.parseNormalIndex(a,m),this.addNormal(h,d,c),this.addNormal(d,u,c))}},addLineGeometry:function(t){this.object.geometry.type=\"Line\";for(var e=this.vertices.length,i=0,r=t.length;i0?x.setAttribute(\"normal\",new M(new Float32Array(b.normals),3)):x.computeVertexNormals(),y.push(x)}}return y}};ze.add(\"obj\",class extends kp{get type(){return\"obj\"}getLoader(){return new Mp}});const Tp=function(){this.propertyNameMapping={}};Tp.prototype={constructor:Tp,setPropertyNameMapping:function(t){this.propertyNameMapping=t},bin2str:function(t){for(var e=new Uint8Array(t),i=\"\",r=0;r=r.elements[o].count&&(o++,a=0);var h=this.parseASCIIElement(r.elements[o].properties,l);this.handleElement(i,r.elements[o].name,h),a++}}return this.postProcess(i)},postProcess:function(t){if(t.useColor){for(var e=0;e{const s=r.length;for(let n=0;n/g,\"\"),{declaration:e(),root:i()};function e(){if(!s(/^<\\?xml\\s*/))return;const t={attributes:{}};for(;!n()&&!o(\"?>\");){const e=r();if(!e)return t;t.attributes[e.name]=e.value}return s(/\\?>\\s*/),t}function i(){const t=s($p);if(!t)return;const e={name:t[1],attributes:{},children:[]};for(;!(n()||o(\">\")||o(\"?>\")||o(\"/>\"));){const t=r();if(!t)return e;e.attributes[t.name]=t.value}if(s(/^\\s*\\/>\\s*/))return e;let a;for(s(/\\??>\\s*/),e.content=function(){const t=s(Op);return t?t[1]:\"\"}();a=i();)e.children.push(a);return s(/^<\\/[\\w-:.]+>\\s*/),e}function r(){const t=s(Rp);var e;if(t)return{name:t[1],value:(e=t[2],e.replace(Dp,\"\"))}}function s(e){const i=t.match(e);if(i)return t=t.slice(i[0].length),i}function n(){return 0===t.length}function o(e){return 0===t.indexOf(e)}}class Fp extends Lu{constructor(t,e){const i=e||{};super(t,i),this.useDomParser=st(i.useDomParser,!1),this.xml={name:this.name,path:this.path,data:{}}}get type(){return\"xml\"}get __objName(){return\"xml\"}get isXml(){return!0}__xmlParser(t){return Ep(t)}__domParser(t){return(new window.DOMParser).parseFromString(t,\"text/xml\")}_parse(){De&&Me.time(\"XmlParser._parse \"+this.name),this.useDomParser?this.streamer.data instanceof Document?this.xml.data=this.streamer.data:this.xml.data=this.__domParser(this.streamer.asText()):this.xml.data=this.__xmlParser(this.streamer.asText()),De&&Me.timeEnd(\"XmlParser._parse \"+this.name)}}function Lp(t,e){const i=t.getNamedItem(e);return null!==i?i.value:\"\"}function Np(t,e,i=!1){const r=Lp(t,\"icode\").trim(),s=Lp(t,\"chain\").trim(),n=Lp(t,\"altcode\");let o=Lp(t,\"resnum\");return r&&(o+=\"^\"+r),s&&(o+=\":\"+s),e&&(o+=\".\"+e),i&&n.trim()&&(o+=\"%\"+n),o+=\"/\"+(parseInt(Lp(t,\"model\"))-1),o}function zp(t){const e=Lp(t,\"chain\").trim();let i=`[${Lp(t,\"rescode\")}]${Lp(t,\"resnum\")}`;return e&&(i+=`:${e}`),i}function Vp(t,e,i){void 0===t[e]?t[e]=i:t[e]|=i}function Gp(t,e){return null!==t&&t.value===e}function Up(t,e,i){let r=0;const s=e.getElementsByTagName(\"clash\");for(let e=0,i=s.length;e0&&(r+=1);e.getElementsByTagName(\"bond-outlier\").length>0&&(r+=1);return e.getElementsByTagName(\"plane-outlier\").length>0&&(r+=1),Gp(i.getNamedItem(\"rota\"),\"OUTLIER\")&&(r+=1),Gp(i.getNamedItem(\"rama\"),\"OUTLIER\")&&(r+=1),Gp(i.getNamedItem(\"RNApucker\"),\"outlier\")&&(r+=1),r}ze.add(\"xml\",Fp);class jp{constructor(t,e){this.name=t,this.path=e,this.rsrzDict={},this.rsccDict={},this.rciDict={},this.clashDict={},this.clashArray=[],this.geoDict={},this.geoAtomDict={},this.atomDict={},this.clashSele=\"NONE\"}get type(){return\"validation\"}fromXml(t){De&&Me.time(\"Validation.fromXml\");const e=this.rsrzDict,i=this.rsccDict,r=this.rciDict,s=this.clashDict,n=this.clashArray,o=this.geoDict,a=this.geoAtomDict,c=this.atomDict,l=t.getElementsByTagName(\"Entry\");if(1===l.length){const t=l[0].getElementsByTagName(\"chemical_shift_list\");if(1===t.length){const e=t[0].getElementsByTagName(\"random_coil_index\");for(let t=0,i=e.length;t0&&(o[r]=t)}else{const t=e.getElementsByTagName(\"clash\"),i=e.getElementsByTagName(\"mog-bond-outlier\"),n=e.getElementsByTagName(\"mog-angle-outlier\");if(i.length>0||n.length>0||t.length>0){const e={};a[r]=e;for(let i=0,r=t.length;i>>16&65535|0,o=0;0!==i;){i-=o=i>2e3?2e3:i;do{n=n+(s=s+e[r++]|0)|0}while(--o);s%=65521,n%=65521}return s|n<<16|0}ze.add(\"validation\",class extends Fp{constructor(t,e){super(t,e||{}),this.useDomParser=!0,this.validation=new jp(this.name,this.path)}get __objName(){return\"validation\"}get isXml(){return!0}_parse(){super._parse(),De&&Me.time(\"ValidationParser._parse \"+this.name),this.validation.fromXml(this.xml.data),De&&Me.timeEnd(\"ValidationParser._parse \"+this.name)}});var Xp=function(){for(var t,e=[],i=0;i<256;i++){t=i;for(var r=0;r<8;r++)t=1&t?3988292384^t>>>1:t>>>1;e[i]=t}return e}();function Yp(t,e,i,r){var s=Xp,n=r+i;t^=-1;for(var o=r;o>>8^s[255&(t^e[o])];return-1^t}var Kp=30,Zp=12;function Qp(t,e){var i,r,s,n,o,a,c,l,h,d,u,m,p,f,g,y,b,x,v,w,A,_,S,C,P;i=t.state,r=t.next_in,C=t.input,s=r+(t.avail_in-5),n=t.next_out,P=t.output,o=n-(e-t.avail_out),a=n+(t.avail_out-257),c=i.dmax,l=i.wsize,h=i.whave,d=i.wnext,u=i.window,m=i.hold,p=i.bits,f=i.lencode,g=i.distcode,y=(1<>>=v=x>>>24,p-=v,0===(v=x>>>16&255))P[n++]=65535&x;else{if(!(16&v)){if(0==(64&v)){x=f[(65535&x)+(m&(1<>>=v,p-=v),p<15&&(m+=C[r++]<>>=v=x>>>24,p-=v,!(16&(v=x>>>16&255))){if(0==(64&v)){x=g[(65535&x)+(m&(1<c){t.msg=\"invalid distance too far back\",i.mode=Kp;break t}if(m>>>=v,p-=v,A>(v=n-o)){if((v=A-v)>h&&i.sane){t.msg=\"invalid distance too far back\",i.mode=Kp;break t}if(_=0,S=u,0===d){if(_+=l-v,v2;)P[n++]=S[_++],P[n++]=S[_++],P[n++]=S[_++],w-=3;w&&(P[n++]=S[_++],w>1&&(P[n++]=S[_++]))}else{_=n-A;do{P[n++]=P[_++],P[n++]=P[_++],P[n++]=P[_++],w-=3}while(w>2);w&&(P[n++]=P[_++],w>1&&(P[n++]=P[_++]))}break}}break}}while(r>3,m&=(1<<(p-=w<<3))-1,t.next_in=r,t.next_out=n,t.avail_in=r=1&&0===T[w];w--);if(A>w&&(A=w),0===w)return s[n++]=20971520,s[n++]=20971520,a.bits=1,0;for(v=1;v0&&(t===rf||1!==w))return-1;for(B[1]=0,b=1;btf||t===nf&&P>ef)return 1;for(;;){p=b-S,o[x]m?(f=D[$+o[x]],g=k[M+o[x]]):(f=96,g=0),c=1<>S)+(l-=c)]=p<<24|f<<16|g|0}while(0!==l);for(c=1<>=1;if(0!==c?(I&=c-1,I+=c):I=0,x++,0==--T[b]){if(b===w)break;b=e[i+o[x]]}if(b>A&&(I&d)!==h){for(0===S&&(S=A),u+=v,C=1<<(_=b-S);_+Stf||t===nf&&P>ef)return 1;s[h=I&d]=A<<24|_<<16|u-n|0}}return 0!==I&&(s[u+I]=b-S<<24|64<<16|0),a.bits=A,0}var df=1,uf=2,mf=0,pf=-2,ff=1,gf=12,yf=30,bf=852,xf=592;function vf(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function wf(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function Af(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,function(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg=\"\",e.wrap&&(t.adler=1&e.wrap),e.mode=ff,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(bf),e.distcode=e.distdyn=new Int32Array(xf),e.sane=1,e.back=-1,mf):pf}(t)):pf}function _f(t,e){var i,r;return t?(r=new wf,t.state=r,r.window=null,i=function(t,e){var i,r;return t&&t.state?(r=t.state,e<0?(i=0,e=-e):(i=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?pf:(null!==r.window&&r.wbits!==e&&(r.window=null),r.wrap=i,r.wbits=e,Af(t))):pf}(t,e),i!==mf&&(t.state=null),i):pf}var Sf,Cf,Pf=!0;function If(t){if(Pf){var e;for(Sf=new Int32Array(512),Cf=new Int32Array(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(hf(df,t.lens,0,288,Sf,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;hf(uf,t.lens,0,32,Cf,0,t.work,{bits:5}),Pf=!1}t.lencode=Sf,t.lenbits=9,t.distcode=Cf,t.distbits=5}function kf(t,e,i,r){var s,n=t.state;return null===n.window&&(n.wsize=1<=n.wsize?(Wp(n.window,e,i-n.wsize,n.wsize,0),n.wnext=0,n.whave=n.wsize):((s=n.wsize-n.wnext)>r&&(s=r),Wp(n.window,e,i-r,s,n.wnext),(r-=s)?(Wp(n.window,e,i-r,r,0),n.wnext=r,n.whave=n.wsize):(n.wnext+=s,n.wnext===n.wsize&&(n.wnext=0),n.whave>>8&255,i.check=Yp(i.check,I,2,0),l=0,h=0,i.mode=2;break}if(i.flags=0,i.head&&(i.head.done=!1),!(1&i.wrap)||(((255&l)<<8)+(l>>8))%31){t.msg=\"incorrect header check\",i.mode=yf;break}if(8!=(15&l)){t.msg=\"unknown compression method\",i.mode=yf;break}if(h-=4,A=8+(15&(l>>>=4)),0===i.wbits)i.wbits=A;else if(A>i.wbits){t.msg=\"invalid window size\",i.mode=yf;break}i.dmax=1<>8&1),512&i.flags&&(I[0]=255&l,I[1]=l>>>8&255,i.check=Yp(i.check,I,2,0)),l=0,h=0,i.mode=3;case 3:for(;h<32;){if(0===a)break t;a--,l+=r[n++]<>>8&255,I[2]=l>>>16&255,I[3]=l>>>24&255,i.check=Yp(i.check,I,4,0)),l=0,h=0,i.mode=4;case 4:for(;h<16;){if(0===a)break t;a--,l+=r[n++]<>8),512&i.flags&&(I[0]=255&l,I[1]=l>>>8&255,i.check=Yp(i.check,I,2,0)),l=0,h=0,i.mode=5;case 5:if(1024&i.flags){for(;h<16;){if(0===a)break t;a--,l+=r[n++]<>>8&255,i.check=Yp(i.check,I,2,0)),l=0,h=0}else i.head&&(i.head.extra=null);i.mode=6;case 6:if(1024&i.flags&&((m=i.length)>a&&(m=a),m&&(i.head&&(A=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Array(i.head.extra_len)),Wp(i.head.extra,r,n,m,A)),512&i.flags&&(i.check=Yp(i.check,r,m,n)),a-=m,n+=m,i.length-=m),i.length))break t;i.length=0,i.mode=7;case 7:if(2048&i.flags){if(0===a)break t;m=0;do{A=r[n+m++],i.head&&A&&i.length<65536&&(i.head.name+=String.fromCharCode(A))}while(A&&m>9&1,i.head.done=!0),t.adler=i.check=0,i.mode=gf;break;case 10:for(;h<32;){if(0===a)break t;a--,l+=r[n++]<>>=7&h,h-=7&h,i.mode=27;break}for(;h<3;){if(0===a)break t;a--,l+=r[n++]<>>=1)){case 0:i.mode=14;break;case 1:if(If(i),i.mode=20,6===e){l>>>=2,h-=2;break t}break;case 2:i.mode=17;break;case 3:t.msg=\"invalid block type\",i.mode=yf}l>>>=2,h-=2;break;case 14:for(l>>>=7&h,h-=7&h;h<32;){if(0===a)break t;a--,l+=r[n++]<>>16^65535)){t.msg=\"invalid stored block lengths\",i.mode=yf;break}if(i.length=65535&l,l=0,h=0,i.mode=15,6===e)break t;case 15:i.mode=16;case 16:if(m=i.length){if(m>a&&(m=a),m>c&&(m=c),0===m)break t;Wp(s,r,n,m,o),a-=m,n+=m,c-=m,o+=m,i.length-=m;break}i.mode=gf;break;case 17:for(;h<14;){if(0===a)break t;a--,l+=r[n++]<>>=5,h-=5,i.ndist=1+(31&l),l>>>=5,h-=5,i.ncode=4+(15&l),l>>>=4,h-=4,i.nlen>286||i.ndist>30){t.msg=\"too many length or distance symbols\",i.mode=yf;break}i.have=0,i.mode=18;case 18:for(;i.have>>=3,h-=3}for(;i.have<19;)i.lens[k[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,S={bits:i.lenbits},_=hf(0,i.lens,0,19,i.lencode,0,i.work,S),i.lenbits=S.bits,_){t.msg=\"invalid code lengths set\",i.mode=yf;break}i.have=0,i.mode=19;case 19:for(;i.have>>16&255,b=65535&P,!((g=P>>>24)<=h);){if(0===a)break t;a--,l+=r[n++]<>>=g,h-=g,i.lens[i.have++]=b;else{if(16===b){for(C=g+2;h>>=g,h-=g,0===i.have){t.msg=\"invalid bit length repeat\",i.mode=yf;break}A=i.lens[i.have-1],m=3+(3&l),l>>>=2,h-=2}else if(17===b){for(C=g+3;h>>=g)),l>>>=3,h-=3}else{for(C=g+7;h>>=g)),l>>>=7,h-=7}if(i.have+m>i.nlen+i.ndist){t.msg=\"invalid bit length repeat\",i.mode=yf;break}for(;m--;)i.lens[i.have++]=A}}if(i.mode===yf)break;if(0===i.lens[256]){t.msg=\"invalid code -- missing end-of-block\",i.mode=yf;break}if(i.lenbits=9,S={bits:i.lenbits},_=hf(df,i.lens,0,i.nlen,i.lencode,0,i.work,S),i.lenbits=S.bits,_){t.msg=\"invalid literal/lengths set\",i.mode=yf;break}if(i.distbits=6,i.distcode=i.distdyn,S={bits:i.distbits},_=hf(uf,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,S),i.distbits=S.bits,_){t.msg=\"invalid distances set\",i.mode=yf;break}if(i.mode=20,6===e)break t;case 20:i.mode=21;case 21:if(a>=6&&c>=258){t.next_out=o,t.avail_out=c,t.next_in=n,t.avail_in=a,i.hold=l,i.bits=h,Qp(t,u),o=t.next_out,s=t.output,c=t.avail_out,n=t.next_in,r=t.input,a=t.avail_in,l=i.hold,h=i.bits,i.mode===gf&&(i.back=-1);break}for(i.back=0;y=(P=i.lencode[l&(1<>>16&255,b=65535&P,!((g=P>>>24)<=h);){if(0===a)break t;a--,l+=r[n++]<>x)])>>>16&255,b=65535&P,!(x+(g=P>>>24)<=h);){if(0===a)break t;a--,l+=r[n++]<>>=x,h-=x,i.back+=x}if(l>>>=g,h-=g,i.back+=g,i.length=b,0===y){i.mode=26;break}if(32&y){i.back=-1,i.mode=gf;break}if(64&y){t.msg=\"invalid literal/length code\",i.mode=yf;break}i.extra=15&y,i.mode=22;case 22:if(i.extra){for(C=i.extra;h>>=i.extra,h-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=23;case 23:for(;y=(P=i.distcode[l&(1<>>16&255,b=65535&P,!((g=P>>>24)<=h);){if(0===a)break t;a--,l+=r[n++]<>x)])>>>16&255,b=65535&P,!(x+(g=P>>>24)<=h);){if(0===a)break t;a--,l+=r[n++]<>>=x,h-=x,i.back+=x}if(l>>>=g,h-=g,i.back+=g,64&y){t.msg=\"invalid distance code\",i.mode=yf;break}i.offset=b,i.extra=15&y,i.mode=24;case 24:if(i.extra){for(C=i.extra;h>>=i.extra,h-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){t.msg=\"invalid distance too far back\",i.mode=yf;break}i.mode=25;case 25:if(0===c)break t;if(m=u-c,i.offset>m){if((m=i.offset-m)>i.whave&&i.sane){t.msg=\"invalid distance too far back\",i.mode=yf;break}m>i.wnext?(m-=i.wnext,p=i.wsize-m):p=i.wnext-m,m>i.length&&(m=i.length),f=i.window}else f=s,p=o-i.offset,m=i.length;m>c&&(m=c),c-=m,i.length-=m;do{s[o++]=f[p++]}while(--m);0===i.length&&(i.mode=21);break;case 26:if(0===c)break t;s[o++]=i.length,c--,i.mode=21;break;case 27:if(i.wrap){for(;h<32;){if(0===a)break t;a--,l|=r[n++]<=252?6:Of>=248?5:Of>=240?4:Of>=224?3:Of>=192?2:1;function Rf(t){var e,i,r,s,n,o=t.length,a=0;for(s=0;s>>6,e[n++]=128|63&i):i<65536?(e[n++]=224|i>>>12,e[n++]=128|i>>>6&63,e[n++]=128|63&i):(e[n++]=240|i>>>18,e[n++]=128|i>>>12&63,e[n++]=128|i>>>6&63,e[n++]=128|63&i);return e}function Ef(t,e){var i,r,s,n,o=e||t.length,a=new Array(2*o);for(r=0,i=0;i4)a[r++]=65533,i+=n-1;else{for(s&=2===n?31:3===n?15:7;n>1&&i1?a[r++]=65533:s<65536?a[r++]=s:(s-=65536,a[r++]=55296|s>>10&1023,a[r++]=56320|1023&s)}return function(t,e){if(e<65537&&(t.subarray&&Df||!t.subarray&&Bf))return String.fromCharCode.apply(null,Hp(t,e));for(var i=\"\",r=0;rt.length&&(e=t.length),i=e-1;i>=0&&128==(192&t[i]);)i--;return i<0||0===i?e:i+$f[t[i]]>e?i:e}$f[254]=$f[254]=1;var Lf=0,Nf={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"};function zf(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}function Vf(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}var Gf=Object.prototype.toString;function Uf(t){if(!(this instanceof Uf))return new Uf(t);this.options=function(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var i=e.shift();if(i){if(\"object\"!=typeof i)throw new TypeError(i+\"must be non-object\");for(var r in i)i.hasOwnProperty(r)&&(t[r]=i[r])}}return t}({chunkSize:16384,windowBits:0,to:\"\"},t||{});var e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new zf,this.strm.avail_out=0;var i,r,s,n=_f(this.strm,e.windowBits);if(n!==Lf)throw new Error(Nf[n]);this.header=new Vf,i=this.strm,r=this.header,i&&i.state&&(0==(2&(s=i.state).wrap)||(s.head=r,r.done=!1))}Uf.prototype.push=function(t,e){var i,r,s,n,o,a,c=this.strm,l=this.options.chunkSize,h=this.options.dictionary,d=!1;if(this.ended)return!1;r=e===~~e?e:!0===e?4:0,\"string\"==typeof t?c.input=function(t){for(var e=new Uint8Array(t.length),i=0,r=e.length;i0||0===c.avail_out)&&1!==i);return 1===i&&(r=4),4===r?(i=function(t){if(!t||!t.state)return pf;var e=t.state;return e.window&&(e.window=null),t.state=null,mf}(this.strm),this.onEnd(i),this.ended=!0,i===Lf):2!==r||(this.onEnd(Lf),c.avail_out=0,!0)},Uf.prototype.onData=function(t){this.chunks.push(t)},Uf.prototype.onEnd=function(t){t===Lf&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=function(t){var e,i,r,s,n,o;for(r=0,e=0,i=t.length;e({path:t,data:e.data})))}getUrl(t){const e=ri(t);return`${this.baseUrl}file/${e.path}${e.query}`}getCountUrl(t){const e=ri(t);return`${this.baseUrl}traj/numframes/${e.path}${e.query}`}getFrameUrl(t,e){const i=ri(t);return`${this.baseUrl}traj/frame/${e}/${i.path}${i.query}`}getFrameParams(t,e){return`atomIndices=${e.join(\";\")}`}getPathUrl(t,e){const i=ri(t);return`${this.baseUrl}traj/path/${e}/${i.path}${i.query}`}getExt(t){return ri(t).ext}}function ig(t,e){return{type:\"integer\",max:t,min:e}}function rg(t,e,i){return{type:\"number\",precision:t,max:e,min:i}}function sg(t,e,i){return{type:\"range\",step:t,max:e,min:i}}function ng(...t){return{type:\"select\",options:t.reduce(((t,e)=>Object.assign(Object.assign({},t),{[e]:e})),{})}}const og={backgroundColor:{type:\"color\"},quality:ng(\"auto\",\"low\",\"medium\",\"high\"),sampleLevel:sg(1,5,-1),impostor:{type:\"boolean\"},workerDefault:{type:\"boolean\"},rotateSpeed:rg(1,10,0),zoomSpeed:rg(1,10,0),panSpeed:rg(1,10,0),clipNear:sg(1,100,0),clipFar:sg(1,100,0),clipDist:ig(200,0),clipMode:ng(\"scene\",\"camera\"),clipScale:ng(\"relative\",\"absolute\"),fogNear:sg(1,100,0),fogFar:sg(1,100,0),cameraType:ng(\"perspective\",\"orthographic\",\"stereo\"),cameraEyeSep:rg(3,1,.01),cameraFov:sg(1,120,15),lightColor:{type:\"color\"},lightIntensity:rg(2,10,0),ambientColor:{type:\"color\"},ambientIntensity:rg(2,10,0),hoverTimeout:ig(1e4,-1),tooltip:{type:\"boolean\"},mousePreset:ng(...Object.keys(Zo))};const ag=\"2.2.2\";export{zh as AngleRepresentation,hu as ArrowBuffer,La as Assembly,ed as AxesRepresentation,rd as BackboneRepresentation,id as BallAndStickRepresentation,sd as BaseRepresentation,fu as BoxBuffer,Tc as BufferRepresentation,dd as CartoonRepresentation,hl as Collection,zt as Colormaker,Fe as ColormakerRegistry,ll as Component,$l as ComponentCollection,au as ConeBuffer,ud as ContactRepresentation,ui as Counter,td as CylinderBuffer,Le as DatasourceRegistry,De as Debug,Ge as DecompressorRegistry,gd as DihedralHistogramRepresentation,md as DihedralRepresentation,bd as DistanceRepresentation,wu as EllipsoidBuffer,pl as Frames,Ad as HelixorientRepresentation,Bd as HyperballRepresentation,$a as Kdtree,ta as KeyActions,$d as LabelRepresentation,tr as LeftMouseButton,_d as LicoriceRepresentation,Rd as LineRepresentation,We as ListingDatasource,eg as MdsrvDatasource,Te as MeasurementDefaultParams,Uo as MeshBuffer,er as MiddleMouseButton,zd as MolecularSurface,Vd as MolecularSurfaceRepresentation,Ko as MouseActions,Pu as OctahedronBuffer,ze as ParserRegistry,ai as PdbWriter,br as PickingProxy,Wc as PointBuffer,Gd as PointRepresentation,Nr as Queue,dl as RepresentationCollection,nl as RepresentationElement,Ne as RepresentationRegistry,Wd as RibbonRepresentation,ir as RightMouseButton,qd as RocketRepresentation,Xd as RopeRepresentation,Re as ScriptExtensions,ci as SdfWriter,pe as Selection,Mc as Shape,Ll as ShapeComponent,Yd as SpacefillRepresentation,Ts as SpatialHash,Gc as SphereBuffer,Fl as Stage,tg as StaticDatasource,di as StlWriter,Cc as Structure,Tl as StructureComponent,Ml as StructureComponentDefaultParameters,Sh as StructureRepresentation,fl as Superposition,Bl as SurfaceComponent,Bu as TetrahedronBuffer,Eh as TextBuffer,Fu as TorusBuffer,Qd as TraceRepresentation,qe as TrajectoryDatasource,yl as TrajectoryPlayer,Jd as TubeRepresentation,og as UIStageParameters,tu as UnitcellRepresentation,eu as ValidationRepresentation,ag as Version,Ji as Viewer,Eo as Volume,Dl as VolumeComponent,Nh as WidelineBuffer,ni as autoLoad,ic as concatStructures,dt as download,at as flatten,si as getDataInfo,ri as getFileInfo,rt as getQuery,tc as guessElement,Oe as setDebug,Xe as setListingDatasource,Be as setMeasurementDefaultParams,Ye as setTrajectoryDatasource,kl as superpose,ut as throttle,gt as uniqueArray};\n//# sourceMappingURL=ngl.esm.js.map\n","import { Structure } from 'ngl'\nimport { AppModel } from './model'\n\nexport function getOffset(\n model: AppModel,\n rowName: string,\n structure: Structure,\n mouseCol: number,\n startPos: number,\n) {\n const rn = structure.residueStore.count\n const rp = structure.getResidueProxy()\n const pos = model.msaview.relativePxToBp(rowName, mouseCol)\n for (let i = 0; i < rn; ++i) {\n rp.index = i\n if (rp.resno === pos + startPos - 1) {\n return rp\n }\n }\n}\n","import React, { useCallback, useState, useEffect, useRef } from 'react'\nimport { getSnapshot } from 'mobx-state-tree'\nimport { observer } from 'mobx-react'\nimport { Button, Select, MenuItem, TextField } from '@mui/material'\nimport {\n Stage,\n StaticDatasource,\n DatasourceRegistry,\n Component,\n Structure,\n} from 'ngl'\nimport { AppModel } from './model'\nimport { getOffset } from './util'\nimport Annotation from 'ngl/dist/declarations/component/annotation'\n\nDatasourceRegistry.add(\n 'data',\n new StaticDatasource('https://files.rcsb.org/download/'),\n)\nconst ProteinPanel = observer(function ({ model }: { model: AppModel }) {\n const annotations = useRef([])\n const [type, setType] = useState('cartoon')\n const [res, setRes] = useState([])\n const [stage, setStage] = useState()\n const [isMouseHovering, setMouseHovering] = useState(false)\n const { msaview, nglSelection } = model\n const { selectedStructures, mouseCol } = msaview\n const structures = getSnapshot(selectedStructures)\n\n const stageElementRef = useCallback((element: HTMLDivElement) => {\n if (element) {\n const currentStage = new Stage(element)\n setStage(currentStage)\n }\n }, [])\n\n useEffect(() => {\n return () => stage?.dispose()\n }, [stage])\n\n useEffect(() => {\n if (!structures.length || !stage) {\n return\n }\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n ;(async () => {\n // Handle window resizing\n window.addEventListener('resize', () => {\n stage.handleResize()\n })\n\n const res = await Promise.all(\n structures.map(\n selection =>\n stage.loadFile(\n `data://${selection.structure.pdb}.pdb`,\n ) as Promise,\n ),\n )\n setRes(res)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n stage.signals.hovered.add((pickingProxy: any) => {\n if (pickingProxy && (pickingProxy.atom || pickingProxy.bond)) {\n const atom = pickingProxy.atom || pickingProxy.closestBondAtom\n msaview.setMouseoveredColumn(\n atom.resno - structures[0]?.structure.startPos,\n atom.chainname,\n pickingProxy.picker.structure.name,\n )\n }\n })\n })()\n }, [msaview, structures, stage])\n\n useEffect(() => {\n if (stage) {\n for (const elt of res) {\n elt.removeAllRepresentations()\n elt.addRepresentation(type, { sele: nglSelection })\n }\n stage.autoView()\n }\n }, [type, res, stage, nglSelection])\n\n useEffect(() => {\n if (structures.length && !isMouseHovering) {\n res.forEach((elt, index) => {\n if (annotations.current.length) {\n elt.removeAnnotation(annotations.current[index])\n }\n annotations.current = []\n if (mouseCol !== undefined) {\n // @ts-expect-error\n const structure = elt.structure as Structure\n const offset = getOffset(\n model,\n structures[index].id,\n structure,\n mouseCol,\n structures[0].structure.startPos,\n )\n if (offset) {\n const ap = structure.getAtomProxy()\n ap.index = offset.atomOffset\n\n annotations.current.push(\n // @ts-expect-error\n elt.addAnnotation(ap.positionToVector3(), offset.qualifiedName()),\n )\n }\n }\n stage?.viewer.requestRender()\n })\n }\n }, [model, mouseCol, structures, stage?.viewer, res, isMouseHovering])\n\n return selectedStructures.length ? (\n
\n
\n msaview.clearSelectedStructures()}\n variant=\"contained\"\n >\n Clear\n \n\n
\n \n
\n model.setNGLSelection(event.target.value)}\n />\n
\n\n setMouseHovering(true)}\n onMouseLeave={() => setMouseHovering(false)}\n />\n
\n ) : null\n})\n\nexport default ProteinPanel\n"],"names":["value","x","target","output","index","source","nextKey","REVISION","CullFaceNone","CullFaceBack","CullFaceFront","PCFShadowMap","PCFSoftShadowMap","VSMShadowMap","FrontSide","BackSide","DoubleSide","FlatShading","NoBlending","NormalBlending","AdditiveBlending","SubtractiveBlending","MultiplyBlending","CustomBlending","AddEquation","SubtractEquation","ReverseSubtractEquation","MinEquation","MaxEquation","ZeroFactor","OneFactor","SrcColorFactor","OneMinusSrcColorFactor","SrcAlphaFactor","OneMinusSrcAlphaFactor","DstAlphaFactor","OneMinusDstAlphaFactor","DstColorFactor","OneMinusDstColorFactor","SrcAlphaSaturateFactor","NeverDepth","AlwaysDepth","LessDepth","LessEqualDepth","EqualDepth","GreaterEqualDepth","GreaterDepth","NotEqualDepth","MultiplyOperation","MixOperation","AddOperation","NoToneMapping","LinearToneMapping","ReinhardToneMapping","CineonToneMapping","ACESFilmicToneMapping","CustomToneMapping","UVMapping","CubeReflectionMapping","CubeRefractionMapping","EquirectangularReflectionMapping","EquirectangularRefractionMapping","CubeUVReflectionMapping","CubeUVRefractionMapping","RepeatWrapping","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestFilter","NearestMipmapNearestFilter","NearestMipmapLinearFilter","LinearFilter","LinearMipmapNearestFilter","LinearMipmapLinearFilter","UnsignedByteType","ByteType","ShortType","UnsignedShortType","IntType","UnsignedIntType","FloatType","HalfFloatType","UnsignedShort4444Type","UnsignedShort5551Type","UnsignedShort565Type","UnsignedInt248Type","AlphaFormat","RGBFormat","RGBAFormat","LuminanceFormat","LuminanceAlphaFormat","RGBEFormat","DepthFormat","DepthStencilFormat","RedFormat","RedIntegerFormat","RGFormat","RGIntegerFormat","RGBIntegerFormat","RGBAIntegerFormat","RGB_S3TC_DXT1_Format","RGBA_S3TC_DXT1_Format","RGBA_S3TC_DXT3_Format","RGBA_S3TC_DXT5_Format","RGB_PVRTC_4BPPV1_Format","RGB_PVRTC_2BPPV1_Format","RGBA_PVRTC_4BPPV1_Format","RGBA_PVRTC_2BPPV1_Format","RGB_ETC1_Format","RGB_ETC2_Format","RGBA_ETC2_EAC_Format","RGBA_ASTC_4x4_Format","RGBA_ASTC_5x4_Format","RGBA_ASTC_5x5_Format","RGBA_ASTC_6x5_Format","RGBA_ASTC_6x6_Format","RGBA_ASTC_8x5_Format","RGBA_ASTC_8x6_Format","RGBA_ASTC_8x8_Format","RGBA_ASTC_10x5_Format","RGBA_ASTC_10x6_Format","RGBA_ASTC_10x8_Format","RGBA_ASTC_10x10_Format","RGBA_ASTC_12x10_Format","RGBA_ASTC_12x12_Format","RGBA_BPTC_Format","SRGB8_ALPHA8_ASTC_4x4_Format","SRGB8_ALPHA8_ASTC_5x4_Format","SRGB8_ALPHA8_ASTC_5x5_Format","SRGB8_ALPHA8_ASTC_6x5_Format","SRGB8_ALPHA8_ASTC_6x6_Format","SRGB8_ALPHA8_ASTC_8x5_Format","SRGB8_ALPHA8_ASTC_8x6_Format","SRGB8_ALPHA8_ASTC_8x8_Format","SRGB8_ALPHA8_ASTC_10x5_Format","SRGB8_ALPHA8_ASTC_10x6_Format","SRGB8_ALPHA8_ASTC_10x8_Format","SRGB8_ALPHA8_ASTC_10x10_Format","SRGB8_ALPHA8_ASTC_12x10_Format","SRGB8_ALPHA8_ASTC_12x12_Format","LoopOnce","LoopRepeat","LoopPingPong","InterpolateDiscrete","InterpolateLinear","InterpolateSmooth","ZeroCurvatureEnding","ZeroSlopeEnding","WrapAroundEnding","NormalAnimationBlendMode","AdditiveAnimationBlendMode","TrianglesDrawMode","LinearEncoding","sRGBEncoding","GammaEncoding","RGBEEncoding","LogLuvEncoding","RGBM7Encoding","RGBM16Encoding","RGBDEncoding","BasicDepthPacking","RGBADepthPacking","TangentSpaceNormalMap","ObjectSpaceNormalMap","KeepStencilOp","AlwaysStencilFunc","StaticDrawUsage","DynamicDrawUsage","EventDispatcher","type","listener","listeners","listenerArray","event","array","i","l","_lut","MathUtils","d0","d1","d2","d3","min","max","n","m","a1","a2","b1","b2","y","t","low","high","range","degrees","radians","q","a","b","c","order","cos","sin","c2","s2","c13","s13","c1_3","s1_3","c3_1","s3_1","Vector2","scalar","v","w","s","e","minVal","maxVal","length","dx","dy","alpha","v1","v2","offset","attribute","center","angle","Matrix3","n11","n12","n13","n21","n22","n23","n31","n32","n33","te","me","xAxis","yAxis","zAxis","ae","be","a11","a12","a13","a21","a22","a23","a31","a32","a33","b11","b12","b13","b21","b22","b23","b31","b32","b33","d","f","g","h","matrix","throwOnDegenerate","t11","t12","t13","det","detInv","tmp","matrix4","r","tx","ty","sx","sy","rotation","cx","cy","theta","_canvas","ImageUtils","image","canvas","context","textureId","Texture","mapping","wrapS","wrapT","magFilter","minFilter","format","anisotropy","encoding","meta","isRootObject","url","uv","Vector4","z","m11","m12","m13","m21","m22","m23","m31","m32","m33","xx","yy","zz","xy","xz","yz","WebGLRenderTarget","width","height","options","WebGLMultisampleRenderTarget","Quaternion","qa","qb","qm","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","x0","y0","z0","w0","x1","y1","z1","w1","dir","sqrSin","len","tDir","quaternion","euler","update","c1","c3","s1","s3","axis","halfAngle","trace","vFrom","vTo","step","p","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","callback","_vector","Vector3","_quaternion","qx","qy","qz","qw","ix","iy","iz","iw","camera","ax","ay","az","bx","by","bz","denominator","planeNormal","normal","dz","radius","phi","sinPhiRadius","sz","_v1","_m1","Matrix4","_zero","_one","_x","_y","_z","n14","n24","n34","n41","n42","n43","n44","scaleX","scaleY","scaleZ","af","bf","ce","cf","de","df","ac","ad","bc","bd","eye","up","a14","a24","a34","a41","a42","a43","a44","b14","b24","b34","b41","b42","b43","b44","t14","scaleXSq","scaleYSq","scaleZSq","position","scale","x2","y2","z2","wx","wy","wz","invSX","invSY","invSZ","left","right","top","bottom","near","far","_matrix","_quaternion$1","Euler","clamp","newOrder","optionalResult","Layers","channel","layers","_object3DId","_v1$1","_q1","_m1$1","_target","_position","_scale","_quaternion$2","_xAxis","_yAxis","_zAxis","_addedEvent","_removedEvent","Object3D","onRotationChange","onQuaternionChange","distance","vector","parent","object","id","name","children","force","updateParents","updateChildren","serialize","library","element","parameters","shapes","shape","uuids","geometries","extractFromCache","materials","textures","images","cache","values","key","data","recursive","child","Scene","_points","_vector$1","_box","Box3","_v0","_v1$2","_v2","_f0","_f1","_f2","_center","_extents","_triangleNormal","_testAxis","minX","minY","minZ","maxX","maxY","maxZ","points","il","size","halfSize","box","point","geometry","sphere","plane","triangle","axes","satForAxes","v0","extents","j","p0","p1","p2","_box$1","Sphere","optionalCenter","maxRadiusSq","radiusSum","deltaLengthSq","_vector$2","_segCenter","_segDir","_diff","_edge1","_edge2","_normal","Ray","origin","direction","ray","directionDistance","optionalPointOnRay","optionalPointOnSegment","segExtent","a01","b0","s0","sqrDist","extDet","invDet","tca","radius2","thc","t0","t1","distToPoint","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","backfaceCulling","DdN","sign","DdQxE2","DdE1xQ","QdN","_vector1","_vector2","_normalMatrix","Plane","constant","inverseNormalLength","line","startSign","endSign","optionalNormalMatrix","normalMatrix","referencePoint","_v0$1","_v1$3","_v2$1","_v3","_vab","_vac","_vbc","_vap","_vbp","_vcp","Triangle","targetLengthSq","dot00","dot01","dot02","dot11","dot12","denom","invDenom","u","p3","uv1","uv2","uv3","i0","i1","i2","d4","vc","d5","d6","vb","va","_colorKeywords","_hslA","_hslB","Color","hue2rgb","SRGBToLinear","LinearToSRGB","hex","style","handleAlpha","string","color","components","gammaFactor","safeInverse","hue","saturation","lightness","delta","color1","color2","Face3","materialIndex","materialId","Material","newValue","currentValue","isRoot","srcPlanes","dstPlanes","MeshBasicMaterial","_vector$3","_vector2$1","BufferAttribute","itemSize","normalized","index1","index2","colors","vectors","Int8BufferAttribute","Uint8BufferAttribute","Uint8ClampedBufferAttribute","Int16BufferAttribute","Uint16BufferAttribute","Int32BufferAttribute","Uint32BufferAttribute","Float32BufferAttribute","Float64BufferAttribute","DirectGeometry","groups","group","faces","face","vertices","faceVertexUvs","hasFaceVertexUv","hasFaceVertexUv2","morphTargets","morphTargetsLength","morphTargetsPosition","morphNormals","morphNormalsLength","morphTargetsNormal","skinIndices","skinWeights","hasSkinIndices","hasSkinWeights","vertexNormals","vertexColors","vertexUvs","morphTarget","morphNormal","arrayMax","_bufferGeometryId","_m1$2","_obj","_offset","_box$2","_boxMorphTargets","_vector$4","BufferGeometry","start","count","tangent","positions","lineDistances","direct","normals","uvs","uvs2","morphAttributesPosition","morphAttribute","morphTargetsRelative","jl","positionAttribute","normalAttribute","pA","pB","pC","nA","nB","nC","cb","ab","vA","vB","vC","attributes","attributeArray1","attribute2","attributeArray2","attributeOffset","convertBufferAttribute","indices","array2","geometry2","newAttribute","morphAttributes","morphArray","attributeData","hasMorphAttributes","attributeArray","boundingSphere","boundingBox","_inverseMatrix","_ray","_sphere","_vA","_vB","_vC","_tempA","_tempB","_tempC","_morphA","_morphB","_morphC","_uvA","_uvB","_uvC","_intersectionPoint","_intersectionPointWorld","Mesh","material","keys","ml","raycaster","intersects","matrixWorld","intersection","morphPosition","drawRange","groupMaterial","end","checkBufferGeometryIntersection","isMultiMaterial","fl","faceMaterial","fvA","fvB","fvC","checkIntersection","uvs_f","intersect","morphInfluences","influence","_geometryId","_m1$3","_obj$1","_offset$1","Geometry","scope","addFace","areaWeighted","vl","tmpGeo","dstNormalsFace","dstNormalsVertex","faceNormal","materialIndexOffset","vertexOffset","vertices1","vertices2","faces1","faces2","colors1","colors2","vertexCopy","faceCopy","faceVertexNormals","faceVertexColors","faceVertexUvs2","uvsCopy","k","kl","mesh","verticesMap","unique","changes","precision","faceIndicesToRemove","idx","diff","materialIndexSort","uvs1","newUvs1","newUvs2","vertex","normalsHash","colorsHash","uvsHash","hasMaterial","hasFaceUv","hasFaceNormal","hasFaceVertexNormal","hasFaceColor","hasFaceVertexColor","faceType","setBit","getUvIndex","getNormalIndex","getColorIndex","enabled","hash","srcVertexNormal","destVertexNormal","BoxGeometry","depth","widthSegments","heightSegments","depthSegments","BoxBufferGeometry","numberOfVertices","groupStart","buildPlane","udir","vdir","gridX","gridY","segmentWidth","segmentHeight","widthHalf","heightHalf","depthHalf","gridX1","gridY1","vertexCounter","groupCount","cloneUniforms","src","property","mergeUniforms","uniforms","merged","UniformsUtils","default_vertex","default_fragment","ShaderMaterial","extensions","Camera","PerspectiveCamera","fov","aspect","focalLength","vExtentSlope","fullWidth","fullHeight","view","skew","CubeCamera","renderTarget","cameraPX","cameraNX","cameraPY","cameraNY","cameraPZ","cameraNZ","renderer","scene","currentXrEnabled","currentRenderTarget","generateMipmaps","stencil","WebGLCubeRenderTarget","dummy","texture","shader","DataTexture","_sphere$1","_vector$5","Frustum","p4","p5","planes","frustum","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","sprite","negRadius","UniformsLib","WebGLAnimation","isAnimating","animationLoop","requestId","onAnimationFrame","time","frame","WebGLAttributes","gl","capabilities","isWebGL2","buffers","createBuffer","bufferType","usage","buffer","updateBuffer","updateRange","get","remove","PlaneGeometry","PlaneBufferGeometry","width_half","height_half","segment_width","segment_height","alphamap_fragment","alphamap_pars_fragment","alphatest_fragment","aomap_fragment","aomap_pars_fragment","begin_vertex","beginnormal_vertex","bsdfs","bumpmap_pars_fragment","clipping_planes_fragment","clipping_planes_pars_fragment","clipping_planes_pars_vertex","clipping_planes_vertex","color_fragment","color_pars_fragment","color_pars_vertex","color_vertex","common","cube_uv_reflection_fragment","defaultnormal_vertex","displacementmap_pars_vertex","displacementmap_vertex","emissivemap_fragment","emissivemap_pars_fragment","encodings_fragment","encodings_pars_fragment","envmap_fragment","envmap_common_pars_fragment","envmap_pars_fragment","envmap_pars_vertex","envmap_vertex","fog_vertex","fog_pars_vertex","fog_fragment","fog_pars_fragment","gradientmap_pars_fragment","lightmap_fragment","lightmap_pars_fragment","lights_lambert_vertex","lights_pars_begin","envmap_physical_pars_fragment","lights_toon_fragment","lights_toon_pars_fragment","lights_phong_fragment","lights_phong_pars_fragment","lights_physical_fragment","lights_physical_pars_fragment","lights_fragment_begin","lights_fragment_maps","lights_fragment_end","logdepthbuf_fragment","logdepthbuf_pars_fragment","logdepthbuf_pars_vertex","logdepthbuf_vertex","map_fragment","map_pars_fragment","map_particle_fragment","map_particle_pars_fragment","metalnessmap_fragment","metalnessmap_pars_fragment","morphnormal_vertex","morphtarget_pars_vertex","morphtarget_vertex","normal_fragment_begin","normal_fragment_maps","normalmap_pars_fragment","clearcoat_normal_fragment_begin","clearcoat_normal_fragment_maps","clearcoat_pars_fragment","packing","premultiplied_alpha_fragment","project_vertex","dithering_fragment","dithering_pars_fragment","roughnessmap_fragment","roughnessmap_pars_fragment","shadowmap_pars_fragment","shadowmap_pars_vertex","shadowmap_vertex","shadowmask_pars_fragment","skinbase_vertex","skinning_pars_vertex","skinning_vertex","skinnormal_vertex","specularmap_fragment","specularmap_pars_fragment","tonemapping_fragment","tonemapping_pars_fragment","uv_pars_fragment","uv_pars_vertex","uv_vertex","uv2_pars_fragment","uv2_pars_vertex","uv2_vertex","worldpos_vertex","background_frag","background_vert","cube_frag","cube_vert","depth_frag","depth_vert","distanceRGBA_frag","distanceRGBA_vert","equirect_frag","equirect_vert","linedashed_frag","linedashed_vert","meshbasic_frag","meshbasic_vert","meshlambert_frag","meshlambert_vert","meshmatcap_frag","meshmatcap_vert","meshtoon_frag","meshtoon_vert","meshphong_frag","meshphong_vert","meshphysical_frag","meshphysical_vert","normal_frag","normal_vert","points_frag","points_vert","shadow_frag","shadow_vert","sprite_frag","sprite_vert","ShaderChunk","ShaderLib","WebGLBackground","state","objects","premultipliedAlpha","clearColor","clearAlpha","planeMesh","boxMesh","currentBackground","currentBackgroundVersion","currentTonemapping","render","renderList","forceClear","background","xr","session","setClear","WebGLBindingStates","maxVertexAttributes","extension","vaoAvailable","bindingStates","defaultState","createBindingState","currentState","setup","program","updateBuffers","getBindingState","bindVertexArrayObject","needsUpdate","saveCache","wireframe","setupVertexAttributes","createVertexArrayObject","vao","deleteVertexArrayObject","programMap","stateMap","newAttributes","enabledAttributes","attributeDivisors","cachedAttributes","geometryAttributes","cachedAttribute","geometryAttribute","initAttributes","enableAttribute","enableAttributeAndDivisor","meshPerAttribute","disableUnusedAttributes","vertexAttribPointer","stride","programAttributes","materialDefaultAttributeValues","programAttribute","bytesPerElement","dispose","reset","geometryId","programId","releaseStatesOfGeometry","releaseStatesOfProgram","resetDefaultState","WebGLBufferRenderer","info","mode","setMode","renderInstances","primcount","methodName","WebGLCapabilities","maxAnisotropy","getMaxAnisotropy","getMaxPrecision","maxPrecision","logarithmicDepthBuffer","maxTextures","maxVertexTextures","maxTextureSize","maxCubemapSize","maxAttributes","maxVertexUniforms","maxVaryings","maxFragmentUniforms","vertexTextures","floatFragmentTextures","floatVertexTextures","maxSamples","WebGLClipping","globalState","numGlobalPlanes","localClippingEnabled","renderingShadows","viewNormalMatrix","uniform","enableLocalClipping","projectPlanes","resetGlobalState","clipIntersection","clipShadows","fromCache","nGlobal","lGlobal","dstArray","skipTransform","nPlanes","flatSize","viewMatrix","i4","WebGLExtensions","WebGLGeometries","wireframeAttributes","onGeometryDispose","buffergeometry","updateWireframeAttribute","geometryIndex","geometryPosition","version","previousAttribute","getWireframeAttribute","currentAttribute","WebGLIndexedBufferRenderer","setIndex","WebGLInfo","memory","instanceCount","numericalSort","absNumericalSort","WebGLMorphtargets","influencesList","workInfluences","objectInfluences","influences","morphInfluencesSum","morphBaseInfluence","WebGLObjects","updateMap","CubeTexture","DataTexture2DArray","DataTexture3D","emptyTexture","emptyTexture2dArray","emptyTexture3d","emptyCubeTexture","arrayCacheF32","arrayCacheI32","mat4array","mat3array","mat2array","flatten","nBlocks","blockSize","firstElem","arraysEqual","copyArray","allocTexUnits","setValueV1f","setValueV2f","setValueV3f","setValueV4f","setValueM2","elements","setValueM3","setValueM4","setValueT1","unit","setValueT2DArray1","setValueT3D1","setValueT6","setValueV1i","setValueV2i","setValueV3i","setValueV4i","setValueV1ui","getSingularSetter","setValueV1fArray","setValueV1iArray","setValueV2iArray","setValueV3iArray","setValueV4iArray","setValueV2fArray","setValueV3fArray","setValueV4fArray","setValueM2Array","setValueM3Array","setValueM4Array","setValueT1Array","units","setValueT6Array","getPureArraySetter","SingleUniform","activeInfo","addr","PureArrayUniform","StructuredUniform","seq","RePathPart","addUniform","container","uniformObject","parseUniform","path","pathLength","match","matchEnd","idIsIndex","subscript","next","WebGLUniforms","WebGLShader","programIdCount","addLineNumbers","lines","getEncodingComponents","getShaderErrors","status","log","getTexelDecodingFunction","functionName","getTexelEncodingFunction","getToneMappingFunction","toneMapping","toneMappingName","generateExtensions","filterEmptyLine","generateDefines","defines","chunks","fetchAttributeLocations","replaceLightNums","replaceClippingPlaneNums","includePattern","resolveIncludes","includeReplacer","include","deprecatedUnrollLoopPattern","unrollLoopPattern","unrollLoops","loopReplacer","deprecatedLoopReplacer","snippet","generatePrecision","precisionstring","generateShadowMapTypeDefine","shadowMapTypeDefine","generateEnvMapTypeDefine","envMapTypeDefine","generateEnvMapModeDefine","envMapModeDefine","generateEnvMapBlendingDefine","envMapBlendingDefine","WebGLProgram","cacheKey","vertexShader","fragmentShader","gammaFactorDefine","customExtensions","customDefines","prefixVertex","prefixFragment","isGLSL3ShaderMaterial","versionRegex","vertexGlsl","fragmentGlsl","glVertexShader","glFragmentShader","programLog","vertexLog","fragmentLog","runnable","haveDiagnostics","vertexErrors","fragmentErrors","cachedUniforms","WebGLPrograms","programs","shaderIDs","parameterNames","getShaderObject","shaderID","shaderobject","allocateBones","bones","nVertexMatrices","maxBones","getTextureEncodingFromMap","map","getParameters","lights","shadows","nClipPlanes","nClipIntersection","fog","environment","envMap","getProgramCacheKey","acquireProgram","pl","preexistingProgram","releaseProgram","WebGLProperties","properties","painterSortStable","reversePainterSortStable","WebGLRenderList","renderItems","renderItemsIndex","opaque","transparent","defaultProgram","init","getNextRenderItem","groupOrder","renderItem","push","unshift","sort","customOpaqueSort","customTransparentSort","finish","WebGLRenderLists","lists","onSceneDispose","cameras","list","UniformsCache","light","ShadowUniformsCache","nextVersion","shadowCastingLightsFirst","lightA","lightB","WebGLLights","shadowCache","vector3","matrix42","directionalLength","pointLength","spotLength","rectAreaLength","hemiLength","numDirectionalShadows","numPointShadows","numSpotShadows","intensity","shadowMap","shadow","shadowUniforms","WebGLRenderState","lightsArray","shadowsArray","pushLight","pushShadow","shadowLight","setupLights","WebGLRenderStates","renderStates","renderState","MeshDepthMaterial","MeshDistanceMaterial","vsm_frag","vsm_vert","WebGLShadowMap","_renderer","_objects","_frustum","_shadowMapSize","_viewportSize","_viewport","_depthMaterials","_distanceMaterials","_materialCache","shadowSide","shadowMaterialVertical","shadowMaterialHorizonal","fullScreenTri","fullScreenMesh","activeCubeFace","activeMipmapLevel","_state","shadowFrameExtents","pars","viewportCount","vp","viewport","renderObject","VSMPass","getDepthMaterialVariant","useMorphing","useSkinning","useInstancing","getDistanceMaterialVariant","getDepthMaterial","shadowCameraNear","shadowCameraFar","result","getMaterialVariant","customMaterial","keyA","keyB","materialsForVariant","cachedMaterial","shadowCamera","depthMaterial","WebGLState","ColorBuffer","locked","currentColorMask","currentColorClear","colorMask","lock","DepthBuffer","currentDepthMask","currentDepthFunc","currentDepthClear","depthTest","enable","disable","depthMask","depthFunc","StencilBuffer","currentStencilMask","currentStencilFunc","currentStencilRef","currentStencilFuncMask","currentStencilFail","currentStencilZFail","currentStencilZPass","currentStencilClear","stencilTest","stencilMask","stencilFunc","stencilRef","stencilFail","stencilZFail","stencilZPass","colorBuffer","depthBuffer","stencilBuffer","enabledCapabilities","currentProgram","currentBlendingEnabled","currentBlending","currentBlendEquation","currentBlendSrc","currentBlendDst","currentBlendEquationAlpha","currentBlendSrcAlpha","currentBlendDstAlpha","currentPremultipledAlpha","currentFlipSided","currentCullFace","currentLineWidth","currentPolygonOffsetFactor","currentPolygonOffsetUnits","lineWidthAvailable","glVersion","currentTextureSlot","currentBoundTextures","currentScissor","currentViewport","createTexture","emptyTextures","setFlipSided","setCullFace","setBlending","useProgram","equationToGL","factorToGL","blending","blendEquation","blendSrc","blendDst","blendEquationAlpha","blendSrcAlpha","blendDstAlpha","setMaterial","frontFaceCW","flipSided","stencilWrite","setPolygonOffset","cullFace","setLineWidth","polygonOffset","factor","setScissorTest","scissorTest","activeTexture","webglSlot","bindTexture","webglType","webglTexture","boundTexture","unbindTexture","compressedTexImage2D","error","texImage2D","texImage3D","scissor","WebGLTextures","_gl","utils","_videoTextures","useOffscreenCanvas","createCanvas","resizeImage","needsPowerOfTwo","needsNewCanvas","maxSize","floor","isPowerOfTwo","textureNeedsPowerOfTwo","textureNeedsGenerateMipmaps","supportsMips","generateMipmap","textureProperties","getInternalFormat","internalFormatName","glFormat","glType","internalFormat","filterFallback","onTextureDispose","deallocateTexture","onRenderTargetDispose","deallocateRenderTarget","renderTargetProperties","textureUnits","resetTextureUnits","allocateTextureUnit","textureUnit","setTexture2D","slot","updateVideoTexture","uploadTexture","setTexture2DArray","setTexture3D","setTextureCube","initTexture","isCompressed","isDataTexture","cubeImage","glInternalFormat","setTextureParameters","mipmaps","mipmap","mipmapImage","setTextureCubeDynamic","wrappingToGL","filterToGL","textureType","setupFrameBufferTexture","framebuffer","attachment","textureTarget","setupRenderBufferStorage","renderbuffer","isMultisample","depthTexture","samples","getRenderTargetSamples","setupDepthTexture","webglDepthTexture","setupDepthRenderbuffer","isCube","setupRenderTarget","updateRenderTargetMipmap","updateMultisampleRenderTarget","mask","warnedTexture2D","warnedTextureCube","safeSetTexture2D","safeSetTextureCube","WebGLUtils","convert","ArrayCamera","Group","WebXRController","inputSource","referenceSpace","inputPose","gripPose","targetRay","grip","WebXRManager","framebufferScaleFactor","referenceSpaceType","pose","controllers","inputSourcesMap","cameraL","cameraR","cameraVR","_currentDepthNear","_currentDepthFar","controller","onSessionEvent","onSessionEnd","animation","onRequestReferenceSpace","layerInit","baseLayer","updateInputSources","inputSources","cameraLPos","cameraRPos","setProjectionFromUnion","ipd","projL","projR","topFov","bottomFov","leftFov","rightFov","zOffset","xOffset","near2","far2","left2","right2","top2","bottom2","updateCamera","onAnimationFrameCallback","views","cameraVRNeedsUpdate","WebGLMaterials","refreshFogUniforms","refreshMaterialUniforms","pixelRatio","refreshUniformsCommon","refreshUniformsLambert","refreshUniformsToon","refreshUniformsPhong","refreshUniformsPhysical","refreshUniformsStandard","refreshUniformsMatcap","refreshUniformsDepth","refreshUniformsDistance","refreshUniformsNormal","refreshUniformsLine","refreshUniformsDash","refreshUniformsPoints","refreshUniformsSprites","uvScaleMap","uv2ScaleMap","WebGLRenderer","_context","_alpha","_depth","_stencil","_antialias","_premultipliedAlpha","_preserveDrawingBuffer","_powerPreference","_failIfMajorPerformanceCaveat","currentRenderList","currentRenderState","_this","_isContextLost","_framebuffer","_currentActiveCubeFace","_currentActiveMipmapLevel","_currentRenderTarget","_currentFramebuffer","_currentMaterialId","_currentCamera","_currentArrayCamera","_currentViewport","_currentScissor","_currentScissorTest","_width","_height","_pixelRatio","_opaqueSort","_transparentSort","_scissor","_scissorTest","_clipping","_clippingEnabled","_localClippingEnabled","_projScreenMatrix","_vector3","_emptyScene","getTargetPixelRatio","getContext","contextNames","contextAttributes","contextName","onContextLost","onContextRestore","programCache","renderLists","morphtargets","bufferRenderer","indexedBufferRenderer","initGLContext","updateStyle","boolean","method","bits","onMaterialDispose","deallocateMaterial","releaseMaterialProgramReference","programInfo","renderObjectImmediate","setProgram","rangeFactor","dataCount","rangeStart","rangeCount","drawStart","drawEnd","drawCount","lineWidth","compiled","material2","initMaterial","projectObject","opaqueObjects","transparentObjects","renderObjects","sortObjects","overrideMaterial","camera2","materialProperties","lightsStateVersion","programCacheKey","programChange","materialNeedsLights","progUniforms","uniformsList","useCache","refreshProgram","refreshMaterial","refreshLights","p_uniforms","m_uniforms","uCamPos","skeleton","boneMatrices","boneTexture","markUniformsLightsNeedsUpdate","__webglFramebuffer","activeCubeFaceIndex","restore","textureFormat","level","levelScale","srcTexture","dstTexture","WebGL1Renderer","FogExp2","density","Fog","InterleavedBuffer","ib","_vector$6","InterleavedBufferAttribute","interleavedBuffer","SpriteMaterial","_geometry","_intersectPoint","_worldScale","_mvPosition","_alignedPosition","_rotatedPosition","_viewWorldMatrix","_vA$1","_vB$1","_vC$1","_uvA$1","_uvB$1","_uvC$1","Sprite","float32Array","transformVertex","vertexPosition","mvPosition","_v1$4","_v2$2","LOD","levels","SkinnedMesh","bindMatrix","skinWeight","basePosition","skinIndex","weight","boneIndex","_offsetMatrix","_identityMatrix","Skeleton","boneInverses","inverse","bone","Bone","_instanceLocalMatrix","_instanceWorldMatrix","_instanceIntersects","_mesh","InstancedMesh","raycastTimes","instanceId","LineBasicMaterial","_start","_end","_inverseMatrix$1","_ray$1","_sphere$2","Line","threshold","localThreshold","localThresholdSq","vStart","vEnd","interSegment","interRay","nbVertices","_start$1","_end$1","LineSegments","LineLoop","PointsMaterial","_inverseMatrix$2","_ray$2","_sphere$3","_position$1","Points","testPoint","rayPointDistanceSq","intersectPoint","VideoTexture","video","CompressedTexture","CanvasTexture","DepthTexture","WireframeGeometry","edge","edges","edge1","edge2","o","ol","ParametricGeometry","func","slices","stacks","ParametricBufferGeometry","EPS","pu","pv","sliceCount","PolyhedronGeometry","detail","PolyhedronBufferGeometry","vertexBuffer","uvBuffer","subdivide","applyRadius","generateUVs","getVertexByIndex","subdivideFace","cols","aj","bj","rows","pushVertex","azimuth","inclination","correctUVs","correctSeam","centroid","uvA","uvB","uvC","azi","correctUV","TetrahedronGeometry","TetrahedronBufferGeometry","OctahedronGeometry","OctahedronBufferGeometry","IcosahedronGeometry","IcosahedronBufferGeometry","DodecahedronGeometry","DodecahedronBufferGeometry","TubeGeometry","tubularSegments","radialSegments","closed","taper","bufferGeometry","TubeBufferGeometry","frames","P","generateBufferData","generateSegment","generateIndices","N","B","TorusKnotGeometry","tube","heightScale","TorusKnotBufferGeometry","P1","P2","T","calculatePositionOnCurve","cu","su","quOverP","cs","TorusGeometry","arc","TorusBufferGeometry","Earcut","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","triangles","invSize","eliminateHoles","earcutLinked","clockwise","last","signedArea","insertNode","equals","removeNode","filterPoints","again","area","ear","pass","indexCurve","stop","prev","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","zOrder","locallyInside","isValidDiagonal","splitPolygon","queue","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","hx","hy","mx","my","tanMin","tan","sectorContainsSector","sortLinked","tail","numMerges","pSize","qSize","inSize","leftmost","px","py","intersectsPolygon","middleInside","q1","q2","o1","o2","o3","o4","onSegment","num","inside","Node","an","bp","sum","ShapeUtils","contour","pts","holes","removeDupEndPts","addContour","holeIndex","ExtrudeGeometry","ExtrudeBufferGeometry","toJSON","verticesArray","uvArray","addShape","placeholder","curveSegments","steps","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","extrudePath","uvgen","WorldUVGenerator","extrudePts","extrudeByPath","splineTube","binormal","position2","shapePoints","hl","ahole","scalePt2","pt","vec","vlen","flen","getBevelVec","inPt","inPrev","inNext","v_trans_x","v_trans_y","shrink_by","v_prev_x","v_prev_y","v_next_x","v_next_y","v_prev_lensq","collinear0","v_prev_len","v_next_len","ptPrevShift_x","ptPrevShift_y","ptNextShift_x","ptNextShift_y","sf","v_trans_lensq","direction_eq","contourMovements","holesMovements","oneHoleMovements","verticesMovements","bs","vert","buildLidFaces","buildSideFaces","layer","f3","layeroffset","sidewalls","sl","slen1","slen2","f4","addVertex","nextIndex","addUV","vector2","indexA","indexB","indexC","a_x","a_y","b_x","b_y","c_x","c_y","indexD","a_z","b_z","c_z","d_x","d_y","d_z","TextGeometry","text","TextBufferGeometry","font","SphereGeometry","phiStart","phiLength","thetaStart","thetaLength","SphereBufferGeometry","thetaEnd","grid","verticesRow","uOffset","RingGeometry","innerRadius","outerRadius","thetaSegments","phiSegments","RingBufferGeometry","radiusStep","segment","thetaSegmentLevel","LatheGeometry","segments","LatheBufferGeometry","inverseSegments","base","n1","n2","ShapeGeometry","ShapeBufferGeometry","toJSON$1","indexOffset","shapeVertices","shapeHoles","shapeHole","EdgesGeometry","thresholdAngle","thresholdDot","sourceVertices","CylinderGeometry","radiusTop","radiusBottom","openEnded","CylinderBufferGeometry","indexArray","halfHeight","generateTorso","generateCap","slope","indexRow","sinTheta","cosTheta","centerIndexStart","centerIndexEnd","ConeGeometry","ConeBufferGeometry","CircleGeometry","CircleBufferGeometry","Geometries","ShadowMaterial","RawShaderMaterial","MeshStandardMaterial","MeshPhysicalMaterial","MeshPhongMaterial","MeshToonMaterial","MeshNormalMaterial","MeshLambertMaterial","MeshMatcapMaterial","LineDashedMaterial","Materials","AnimationUtils","from","to","forceClone","times","compareTime","nValues","srcOffset","jsonKeys","valuePropertyName","sourceClip","startFrame","endFrame","fps","clip","tracks","track","valueSize","minStartTime","targetClip","referenceFrame","referenceClip","numTracks","referenceTime","referenceTrack","referenceTrackType","targetTrack","lastIndex","referenceValue","startIndex","interpolant","numTimes","valueStart","Interpolant","parameterPositions","sampleValues","sampleSize","resultBuffer","pp","validate_interval","seek","linear_scan","forward_scan","giveUpAt","t1global","mid","CubicInterpolant","iPrev","iNext","tPrev","tNext","halfDt","o0","oP","oN","wP","wN","ppp","sP","sN","LinearInterpolant","offset1","offset0","weight1","weight0","DiscreteInterpolant","KeyframeTrack","interpolation","trackType","json","factoryMethod","message","timeOffset","timeScale","startTime","endTime","nKeys","valid","prevTime","currTime","smoothInterpolation","writeIndex","keep","timeNext","offsetP","offsetN","readOffset","writeOffset","TypedKeyframeTrack","BooleanKeyframeTrack","ColorKeyframeTrack","NumberKeyframeTrack","QuaternionLinearInterpolant","QuaternionKeyframeTrack","StringKeyframeTrack","VectorKeyframeTrack","AnimationClip","duration","blendMode","getTrackTypeForValueTypeName","typeName","parseKeyframeTrack","jsonTracks","frameTime","clipTracks","morphTargetSequence","noLoop","numMorphTargets","objectOrClipArray","clipArray","animationToMorphTargets","pattern","parts","animationMorphTargets","clips","addNonemptyTrack","trackName","animationKeys","propertyName","destTracks","clipName","hierarchyTracks","morphTargetNames","morphTargetName","animationKey","boneName","Cache","file","LoadingManager","onLoad","onProgress","onError","isLoading","itemsLoaded","itemsTotal","urlModifier","handlers","transform","regex","loader","DefaultLoadingManager","Loader","manager","resolve","reject","crossOrigin","resourcePath","requestHeader","loading","FileLoader","cached","dataUriRegex","dataUriRegexResult","request","mimeType","isBase64","response","responseType","callbacks","header","AnimationLoader","animations","CompressedTextureLoader","loaded","loadTexture","texDatas","DataTextureLoader","texData","ImageLoader","onImageLoad","onImageError","CubeTextureLoader","urls","TextureLoader","isJPEG","Curve","optionalTarget","divisions","lengths","current","arcLengths","targetArcLength","comparison","lengthBefore","segmentLength","segmentFraction","t2","pt1","pt2","tangents","binormals","mat","tz","EllipseCurve","aX","aY","xRadius","yRadius","aStartAngle","aEndAngle","aClockwise","aRotation","twoPi","deltaAngle","samePoints","ArcCurve","aRadius","CubicPoly","c0","x3","tension","dt0","dt1","dt2","t3","pz","CatmullRomCurve3","curveType","intPoint","pow","CatmullRom","QuadraticBezierP0","QuadraticBezierP1","QuadraticBezierP2","QuadraticBezier","CubicBezierP0","CubicBezierP1","CubicBezierP2","CubicBezierP3","CubicBezier","CubicBezierCurve","v3","CubicBezierCurve3","LineCurve","LineCurve3","QuadraticBezierCurve","QuadraticBezierCurve3","SplineCurve","Curves","CurvePath","curve","startPoint","endPoint","curveLengths","lens","sums","curves","resolution","Path","aCPx","aCPy","aCP1x","aCP1y","aCP2x","aCP2y","npts","firstPoint","lastPoint","Shape","holesPts","Light","HemisphereLight","skyColor","groundColor","LightShadow","shadowMatrix","projScreenMatrix","lookTarget","lightPositionWorld","viewportIndex","SpotLightShadow","SpotLight","penumbra","decay","power","PointLightShadow","PointLight","OrthographicCamera","scaleW","scaleH","DirectionalLightShadow","DirectionalLight","AmbientLight","RectAreaLight","SphericalHarmonics3","coefficients","coeff","sh","shBasis","LightProbe","MaterialLoader","getTexture","normalScale","LoaderUtils","InstancedBufferGeometry","InstancedBufferAttribute","BufferGeometryLoader","interleavedBufferMap","arrayBufferMap","getInterleavedBuffer","uuid","getArrayBuffer","TYPED_ARRAYS","arrayBuffer","typedArray","bufferAttribute","bufferAttributeConstr","ObjectLoader","metadata","geometryShapes","bufferGeometryLoader","loadImage","currentUrl","parseConstant","TEXTURE_MAPPING","TEXTURE_WRAPPING","TEXTURE_FILTER","getGeometry","getMaterial","instanceMatrix","ImageBitmapLoader","res","blob","imageBitmap","ShapePath","isCCW","noHoles","toShapesNoHoles","inSubpaths","tmpPath","tmpShape","isPointInsidePolygon","inPolygon","polyLen","edgeLowPt","edgeHighPt","edgeDx","edgeDy","perpEdge","isClockWise","subPaths","solid","holesFirst","betterShapeHoles","newShapes","newShapeHoles","mainIdx","tmpPoints","ambiguous","toChange","sIdx","sLen","sho","hIdx","ho","hole_unassigned","s2Idx","tmpHoles","Font","paths","createPaths","chars","line_height","offsetX","offsetY","char","ret","createPath","glyph","cpx","cpy","cpx1","cpy1","cpx2","cpy2","outline","FontLoader","AudioContext","AudioLoader","bufferCopy","audioBuffer","HemisphereLightProbe","sky","ground","AmbientLightProbe","_eyeRight","_eyeLeft","StereoCamera","projectionMatrix","eyeSepHalf","eyeSepOnProjection","ymax","xmin","xmax","Clock","autoStart","newTime","_position$2","_quaternion$3","_scale$1","_orientation","AudioListener","Audio","audioNode","mediaElement","mediaStream","delay","filter","_position$3","_quaternion$4","_scale$2","_orientation$1","PositionalAudio","coneInnerAngle","coneOuterAngle","coneOuterGain","panner","AudioAnalyser","audio","fftSize","PropertyMixer","binding","mixFunction","mixFunctionAdditive","setIdentity","accuIndex","currentWeight","mix","weightAdditive","originalValueOffset","endIndex","targetIndex","workOffset","_RESERVED_CHARS_RE","_reservedRe","_wordChar","_wordCharOrDot","_directoryRe","_nodeRe","_objectRe","_propertyRe","_trackRe","_supportedObjectNames","Composite","targetGroup","optionalParsedPath","parsedPath","PropertyBinding","firstValidIndex","bindings","rootNode","root","matches","results","lastDot","objectName","nodeName","searchNodeSubtree","childNode","subTreeNode","dest","targetArray","sourceArray","targetObject","propertyIndex","objectIndex","nodeProperty","versioning","bindingType","AnimationObjectGroup","indicesByUUID","parsedPaths","nBindings","knownObject","nObjects","nCachedObjects","firstActiveIndex","lastCachedObject","bindingsForPath","lastCached","lastCachedIndex","firstActiveObject","firstActive","lastObject","indicesByPath","lastBindingsIndex","lastBindings","lastBindingsPath","AnimationAction","mixer","localRoot","nTracks","interpolants","interpolantSettings","repetitions","fadeOutAction","warp","fadeInDuration","fadeOutDuration","startEndRatio","endStartRatio","fadeInAction","weightInterpolant","action","startTimeScale","endTimeScale","now","timeScaleInterpolant","deltaTime","timeDirection","timeRunning","clipTime","propertyMixers","interpolantValue","loop","loopCount","pingPong","handle_stop","loopDelta","pending","atStart","atEnd","settings","weightNow","weightThen","AnimationMixer","prototypeAction","rootUuid","bindingsByRoot","bindingsByName","clipUuid","actionsForClip","actions","actionsByClip","knownActions","lastInactiveAction","cacheIndex","knownActionsForClip","lastKnownAction","byClipCacheIndex","actionByRoot","prevIndex","lastActiveIndex","firstInactiveAction","firstInactiveIndex","lastActiveAction","bindingByName","propBinding","lastInactiveBinding","firstInactiveBinding","lastActiveBinding","lastActiveInterpolant","optionalRoot","clipObject","existingAction","newAction","nActions","timeInSeconds","actionsToRemove","Uniform","InstancedInterleavedBuffer","Raycaster","ascSort","intersectObject","coords","Spherical","other","Cylindrical","_vector$7","Box2","_startP","_startEnd","Line3","clampToLine","startEnd2","ImmediateRenderObject","_vector$8","SpotLightHelper","coneLength","coneWidth","_vector$9","_boneMatrix","_matrixWorldInv","getBoneList","boneList","SkeletonHelper","PointLightHelper","sphereSize","_vector$a","_color1","_color2","HemisphereLightHelper","GridHelper","PolarGridHelper","radials","circles","_v1$5","_v2$3","_v3$1","DirectionalLightHelper","_vector$b","_camera","CameraHelper","pointMap","colorFrustum","colorCone","colorUp","colorTarget","colorCross","addLine","addPoint","setPoint","_box$3","BoxHelper","Box3Helper","PlaneHelper","positions2","_axis","_lineGeometry","_coneGeometry","ArrowHelper","headLength","headWidth","AxesHelper","LOD_MIN","LOD_MAX","SIZE_MAX","EXTRA_LOD_SIGMA","TOTAL_LODS","MAX_SAMPLES","ENCODINGS","_flatCamera","_lodPlanes","_sizeLods","_sigmas","_createPlanes","_oldTarget","PHI","INV_PHI","_axisDirections","PMREMGenerator","_getBlurShader","sigma","cubeUVRenderTarget","equirectangular","cubemap","_getCubemapShader","_getEquirectShader","outputTarget","_setViewport","params","_isLDR","_createRenderTarget","tmpMesh","cubeCamera","upSign","forwardSign","outputEncoding","maxComponent","fExp","col","autoClear","poleAxis","lodIn","lodOut","pingPongRenderTarget","targetIn","targetOut","sigmaRadians","blurMaterial","STANDARD_DEVIATIONS","blurMesh","blurUniforms","pixels","radiansPerPixel","sigmaPixels","weights","outputSize","lod","sizeLod","texelSize","cubeFaces","positionSize","uvSize","faceIndexSize","faceIndex","coordinates","fill","_getCommonVertexShader","_getEncodings","construct","getPoint","Spline","filmGauge","DEG2RAD","LAB_CONSTANTS","PI","PITHIRD","RAD2DEG","TWOPI","_average_lrgb","_guess_formats","_guess_formats_sorted","_input","_interpolators","abs","atan2","bezier","blend","blend_f","brewer","burn","chroma","clip_rgb","cmyk2rgb","css2rgb","darken","dodge","each","hcg2rgb","hex2rgb","hsi2rgb","hsl2css","hsl2rgb","hsv2rgb","interpolate","interpolate_hsx","interpolate_lab","interpolate_lrgb","interpolate_num","interpolate_rgb","lab2lch","lab2rgb","lab_xyz","lch2lab","lch2rgb","lighten","limit","luminance_x","multiply","num2rgb","overlay","rgb2cmyk","rgb2css","rgb2hcg","rgb2hex","rgb2hsi","rgb2hsl","rgb2hsv","rgb2lab","rgb2lch","rgb2luminance","rgb2num","rgb2temperature","rgb2xyz","rgb_xyz","rnd","round","screen","sqrt","temperature2rgb","unpack","w3cx11","xyz_lab","xyz_rgb","slice","classToType","ref","obj","strType","args","rgb","ctor","module","exports","arg","chk","len1","ref1","I","I0","I1","lab0","lab1","lab2","lab3","ref2","lab","rotations","gamma","dh","dl","fract","amp","cos_a","sin_a","code","digits","col1","col2","interpol","xyz0","xyz1","xyz","A","cnt","first","xyz2","channels","hxa","str","ref3","ref4","ref5","_c","_g","css","aa","hsl","rgba","L","lum","cur_lum","eps","max_iter","test","lm","kelvin","temp","maxTemp","minTemp","l1","l2","sum_sq","C","L1","L2","c4","dH2","delA","delB","delC","delL","h1","sc","modechan","amount","lch","out","val","_classes","_colorCache","_colors","_correctLightness","_domain","_gamma","_max","_min","_mode","_nacol","_out","_padding","_pos","_spread","_useCache","getClass","getColor","resetCache","setColors","tmap","bypassMap","classes","domain","_m","_o","L0","L_actual","L_diff","L_ideal","pol","numColors","dd","dm","add","visit","ag","ah","ai","ak","al","am","assignments","best","centroids","cluster","clusterSizes","dist","kClusters","limits","max_log","min_log","mindist","nb_iters","newCentroids","pb","pr","ref10","ref11","ref12","ref13","ref14","ref6","ref7","ref8","ref9","repeat","tmpKMeansBreaks","hue0","hue1","lbv","lbv0","lbv1","sat","sat0","sat1","this","global","SignalBinding","signal","isOnce","listenerContext","priority","paramsArr","handlerReturn","validateListener","fnName","Signal","self","cur","signals","re","sprintf","sprintf_format","sprintf_parse","vsprintf","fmt","argv","parse_tree","cursor","tree_length","ph","pad","pad_character","pad_length","is_positive","sprintf_cache","_fmt","arg_names","field_list","replacement_field","field_match","rt","st","nt","ot","ct","lt","mt","ft","gt","yt","bt","xt","vt","wt","At","_t","St","Ct","Pt","It","kt","Mt","Tt","Bt","Dt","$t","Ot","Rt","Et","Ft","Lt","Nt","zt","J.scale","Vt","Gt","Ut","jt","Ht","Wt","qt","Xt","Yt","Kt","Zt","Qt","Jt","ee","ie","se","ne","oe","le","he","ue","pe","et","fe","Fe","ge","ye","xe","ve","we","Ae","_e","Se","Ce","Pe","Ie","ke","Me","Te","De","$e","Re","Ee","Le","Ne","ze","Ve","Ge","Ue","je","He","qe","Ke","Ze","Qe","Je","ti","ei","ii","ri","si","ni","li","hi","ui","tt.Signal","mi","pi","fi","gi","yi","bi","xi","vi","wi","Ai","_i","Si","Ci","Pi","Ii","ki","Mi","Ti","Bi","Di","$i","Oi","Ri","Ei","Fi","Li","Ni","zi","Vi","Gi","Ui","ji","Hi","Wi","qi","Xi","Yi","Ki","Zi","Qi","Ji","D","_","S","M","rr","sr","nr","or","ar","cr","lr","hr","dr","ur","mr","fr","gr","yr","br","vr","wr","Ar","_r","Sr","Cr","Pr","Ir","kr","Mr","Tr","Br","Dr","$r","Or","Rr","Er","Fr","Lr","Nr","zr","Vr","Gr","Ur","jr","Hr","Yr","Wr","qr","Xr","Kr","Zr","Qr","Jr","ts","es","is","rs","ss","ns","os","as","ls","hs","ds","us","ms","ps","fs","gs","ys","xs","vs","ws","As","_s","Ss","Cs","Ps","Is","ks","Ms","Ts","Bs","Ds","$s","Os","Rs","Es","Fs","Ls","Ns","zs","Vs","Gs","Us","js","Hs","Ws","qs","Xs","Ys","Ks","Zs","Qs","Js","tn","en","rn","sn","nn","on","cn","ln","hn","dn","un","mn","pn","fn","gn","yn","bn","xn","vn","wn","An","_n","Sn","Cn","Pn","In","kn","Mn","Tn","Bn","Dn","$n","On","Rn","En","Fn","Nn","Ln","zn","Vn","Gn","$","O","R","E","F","Un","jn","Hn","Wn","Qn","qn","Xn","Yn","Kn","Zn","Jn","eo","io","ro","so","no","oo","ao","co","lo","V","G","U","H","W","X","uo","mo","po","fo","go","yo","bo","xo","vo","wo","Ao","So","Co","Po","Io","ko","Mo","To","Bo","Do","$o","Oo","Ro","Eo","Fo","Lo","No","zo","Vo","Go","Uo","jo","Ho","Wo","qo","Xo","Yo","Ko","Zo","Qo","Jo","ta","ea","ia","ra","sa","na","oa","ca","la","ha","da","ua","ma","pa","fa","ga","ya","ba","xa","wa","Aa","_a","Sa","Ca","Pa","Ia","ka","Ma","Ta","Ba","Da","$a","Oa","Ra","Ea","Fa","La","Na","za","Va","Ga","Ua","ja","Ha","Wa","Ya","Ka","Xa","Za","Qa","Ja","tc","ec","rc","nc","oc","cc","lc","hc","dc","uc","mc","yc","pc","fc","gc","xc","wc","Ac","Sc","Cc","Pc","Ic","kc","Mc","Tc","Bc","Dc","$c","Oc","Rc","Ec","Fc","Lc","Nc","zc","Vc","Gc","Uc","jc","Hc","Wc","qc","Xc","Yc","Kc","Zc","Qc","Jc","tl","el","rl","nl","cl","ll","ul","yl","bl","xl","wl","Al","_l","Sl","Cl","Pl","Il","Ml","Tl","Bl","Dl","$l","Ol","Rl","El","Fl","Ll","Nl","zl","Vl","Gl","Ul","Hl","Wl","ql","Xl","Yl","Kl","Zl","Ql","Jl","th","eh","ih","rh","oh","ch","lh","hh","uh","mh","fh","gh","yh","bh","xh","vh","wh","Ah","_h","Sh","Ch","Ph","Ih","kh","Mh","Th","Bh","Dh","$h","Oh","Rh","Eh","Fh","Lh","Nh","zh","Vh","Gh","Uh","jh","Hh","Wh","qh","Xh","Yh","Kh","Zh","Qh","Jh","td","ed","rd","sd","nd","od","cd","ld","hd","ud","md","pd","fd","gd","yd","xd","vd","wd","Ad","_d","Sd","Cd","Pd","Id","kd","Md","Td","Bd","Dd","it","$d","Od","Rd","Ed","Fd","Ld","Nd","Y","K","Z","Q","J","tt","zd","Vd","Gd","Ud","jd","Hd","Wd","qd","Xd","Yd","Kd","Zd","Qd","Jd","tu","eu","iu","ru","nu","ou","au","lu","hu","du","uu","mu","fu","gu","yu","bu","xu","vu","wu","Au","_u","Su","Cu","Pu","Iu","ku","Mu","Tu","Bu","Du","$u","Ou","Ru","Eu","Fu","Lu","Nu","zu","Vu","Gu","Uu","ju","Hu","Wu","qu","Xu","at","ht","dt","ut","Yu","Ku","Zu","Qu","Ju","tm","em","im","rm","sm","nm","om","cm","hm","um","mm","pm","fm","gm","ym","bm","xm","vm","wm","Am","Sm","Cm","Pm","Im","km","Mm","Tm","Bm","Dm","$m","Om","Rm","Em","Fm","Lm","Nm","zm","Vm","Gm","Um","jm","Hm","Wm","Xm","Ym","Km","Zm","Qm","Jm","tp","ep","ip","rp","sp","np","op","ap","cp","lp","hp","dp","mp","fp","gp","yp","xp","wp","Ap","_p","Sp","Cp","Pp","Ip","kp","Mp","Tp","Bp","Dp","$p","Op","Rp","Ep","Fp","Lp","Np","zp","Vp","Gp","Up","jp","Hp","Wp","qp","Xp","Yp","Kp","Zp","Qp","Jp","tf","ef","rf","nf","of","lf","hf","uf","mf","pf","ff","gf","yf","xf","vf","wf","Af","_f","Sf","Cf","Pf","If","kf","Mf","Tf","Bf","Df","$f","Of","Rf","Ef","Ff","Lf","Nf","zf","Vf","Gf","Uf","jf","Hf","Wf","qf","Xf","Yf","Kf","Zf","Qf","Jf","tg","ig","rg","sg","ng","getOffset","model","rowName","structure","mouseCol","startPos","pos","DatasourceRegistry","StaticDatasource","ProteinPanel","observer","annotations","useRef","setType","useState","setRes","stage","setStage","isMouseHovering","setMouseHovering","msaview","nglSelection","selectedStructures","structures","getSnapshot","stageElementRef","useCallback","currentStage","Stage","useEffect","selection","pickingProxy","atom","elt","jsxs","jsx","Button","Select","MenuItem","TextField"],"mappings":"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AA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAE1BC,GAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAExBC,GAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAEnBC,GAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEnBC,GAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEnBC,GAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAElBC,GAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAElBC,GAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEhBC,GAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEhBC,GAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEjBC,GAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEjBC,GAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEpBC,GAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEpBC,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEdC,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEdC,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEdC,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEdC,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEdC,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEdC,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEdC,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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G,CAAC,IAAI,IAAI,IAAI,EAAE,EAAEC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAEC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAEC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAEC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAEC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAEC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,KAAK,GAAG,EAAE,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,IAAI,CAAC,KAAK,MAAM,IAAI,EAAE,IAAI,CAAC,KAAK,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,IAAI,CAAC,MAAM,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,IAAI,CAAC,MAAM,MAAM,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,GAAG,EAAE,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAEC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAEC,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAEC,GAAG,OAAO,KAAKD,EAAE,EAAEE,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAEC,GAAG,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,EAAEC,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,KAAK,IAAI,EAAEt2C,GAAGo2C,GAAG,OAAOC,EAAE,EAAEE,GAAG,CAAC,MAAM,MAAM,MAAM,MAAM,IAAI,MAAM,MAAM,OAAO,OAAO,KAAK,EAAEC,GAAG,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,MAAM,MAAM,MAAM,MAAM,KAAK,MAAM,MAAM,KAAK,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,MAAM,KAAK,KAAK,MAAM,MAAM,MAAM,KAAK,KAAK,MAAM,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,MAAM,MAAM,MAAM,MAAM,KAAK,MAAM,IAAI,KAAK,MAAM,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,MAAM,MAAM,IAAI,MAAM,KAAK,MAAM,MAAM,KAAK,KAAK,MAAM,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK,MAAM,MAAM,KAAK,MAAM,KAAK,MAAM,MAAM,KAAK,MAAM,MAAM,KAAK,KAAK,MAAM,MAAM,KAAK,MAAM,MAAM,KAAK,KAAK,MAAM,MAAM,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,MAAM,KAAK,MAAM,MAAM,MAAM,IAAI,MAAM,MAAM,IAAI,MAAM,KAAK,KAAK,MAAM,KAAK,MAAM,MAAM,KAAK,MAAM,MAAM,MAAM,MAAM,KAAK,EAAEC,GAAG,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,EAAEC,GAAG,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,KAAK,KAAK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KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAASC,IAAI,CAAC,OAAO,IAAI,WAAW,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE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AAE,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,SAASC,GAAG,EAAE,EAAE,CAAC,IAAIt9G,EAAEwG,EAAE,EAAE,MAAM9D,EAAE,CAAA,EAAG,OAAO,EAAE,QAAS,SAASC,EAAE,CAAC3C,EAAE,EAAE,MAAMU,EAAE,GAAGiC,EAAE,QAAS,SAASA,EAAE,CAACjC,EAAE,EAAEV,GAAG,CAAC,EAAE2C,CAAC,GAAID,EAAE,EAAE8D,GAAG,CAAC,EAAE9F,CAAC,CAAG,EAACgC,CAAC,CAAC,MAAM66G,GAAG,CAAC,SAASD,GAAG,0BAA0B,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,UAAUA,GAAG,uBAAuBD,EAAE,CAAC,EAAE,MAAMG,EAAE,CAAC,YAAYv8G,EAAE0B,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,CAAC,KAAK,KAAK1B,EAAE,KAAK,KAAK0B,EAAE,KAAK,WAAW,EAAE,KAAK,oBAAoB,EAAE,IAAI,KAAK,YAAY46G,GAAG,CAAC,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,KAAK,EAAE,KAAK,KAAK,OAAO,KAAK,MAAM,OAAO,KAAK,IAAI,GAAG,KAAK,EAAE,GAAG,KAAK,EAAE,CAAE,EAAC,KAAK,EAAE,CAAA,EAAG,QAAQt8G,EAAE,EAAEA,GAAG,KAAK,EAAE,EAAEA,EAAE,CAAC,KAAK,EAAEA,CAAC,EAAE,CAAA,EAAG,KAAK,EAAEA,CAAC,EAAE,CAAE,EAAC,KAAK,EAAEA,CAAC,EAAE,GAAG,QAAQ0B,EAAE,EAAEA,GAAG,KAAK,EAAE,EAAEA,EAAE,KAAK,EAAE1B,CAAC,EAAE0B,CAAC,EAAE,EAAE,KAAK,EAAE1B,CAAC,EAAE0B,CAAC,EAAE,EAAE,KAAK,EAAE1B,CAAC,EAAE0B,CAAC,EAAE,CAAC,CAAC,QAAQ1B,EAAE,EAAEA,GAAG,KAAK,EAAE,EAAEA,EAAE,KAAK,EAAEA,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAEA,CAAC,EAAE,CAAC,EAAE,KAAK,QAAQA,EAAE,EAAEA,GAAG,KAAK,EAAE,EAAEA,EAAE,KAAK,EAAE,CAAC,EAAEA,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAEA,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAIA,EAAE,CAAC,OAAO,KAAK,WAAWA,EAAE,KAAK,mBAAmB,CAAC,aAAa,CAAC,MAAMA,EAAE,KAAK,KAAK0B,EAAE,KAAK,KAAK,EAAE,KAAK,YAAY,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,MAAMjC,EAAEO,EAAE,CAAC,EAAEivD,EAAEvtD,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,EAAEjC,CAAC,EAAEwvD,CAAC,CAAC,MAAS,CAAC,MAAM,EAAE,CAAC,GAAGm0C,GAAG,KAAK,4BAA4B,EAAE,SAASrkG,EAAEwG,EAAE,CAAC,OAAOvF,EAAEjB,CAAC,IAAI2C,EAAE6D,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC+9F,IAAIF,GAAG,KAAK,gBAAgB,EAAE,KAAK,aAAY,EAAG,MAAMpjG,EAAE,KAAK,IAAI,CAAC,EAAE0B,EAAE,KAAK,YAAa,EAAC,EAAE,KAAK,oBAAoB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAEjC,EAAE,KAAK,EAAEwvD,EAAE,KAAK,EAAE1uD,EAAE,KAAK,EAAE,IAAIE,EAAEzB,EAAE6F,EAAEH,EAAEwX,EAAE,QAAQxc,EAAE,EAAEA,GAAGuvD,EAAE,EAAEvvD,EAAE,CAACV,EAAES,EAAEC,EAAE,CAAC,EAAEe,EAAE,EAAEf,EAAE,CAAC,EAAEmF,EAAE,EAAEnF,CAAC,EAAEgF,EAAE,EAAEhF,CAAC,EAAEwc,EAAEzc,EAAEC,CAAC,EAAE,QAAQ6F,EAAE,EAAEA,GAAGhF,EAAE,EAAEgF,EAAEV,EAAEU,CAAC,EAAE,KAAK,IAAIvG,EAAEuG,CAAC,EAAEvF,EAAES,EAAE8E,CAAC,EAAE,CAAC,EAAEb,EAAEa,CAAC,EAAE,KAAK,IAAI2W,EAAE3W,EAAE,CAAC,EAAEvF,EAAE0E,EAAEa,EAAE,CAAC,EAAE,CAAC,EAAE2W,EAAE3W,CAAC,EAAE,KAAK,IAAIvG,EAAEuG,EAAE,CAAC,EAAE7D,EAAEhC,EAAE,EAAE6F,EAAE,CAAC,EAAEV,EAAEU,CAAC,EAAEb,EAAEa,CAAC,CAAC,CAAC,CAAC+9F,IAAIF,GAAG,QAAQ,gBAAgB,EAAEE,IAAIF,GAAG,IAAI,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAACE,IAAIF,GAAG,KAAK,iBAAiB,EAAE,KAAK,KAAK,GAAG,KAAK,KAAK,GAAG,MAAMpjG,EAAE,KAAK,YAAa,EAAC,IAAI0B,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,GAAGA,EAAE,IAAI,KAAK,MAAM,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,GAAGA,EAAE,IAAI,KAAK,MAAM,KAAK,EAAE,CAAC,EAAE,CAAC,IAAIA,EAAE,IAAI,KAAK,MAAM,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG4hG,IAAIF,GAAG,IAAI,mBAAmB,KAAK,KAAK,EAAEE,IAAIF,GAAG,IAAI,qBAAqB,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,GAAS1hG,IAAN,IAAQ,KAAK,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE1B,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,EAAE,EAAE,EAAE,EAAE0B,EAAE,KAAK,KAAK,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAE,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAE,KAAK,EAAE,EAAE,EAAE,GAASA,IAAN,IAAQ,KAAK,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,qBAAqB,KAAK,KAAK,KAAK,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,EAAE,EAAEA,EAAE,KAAK,KAAK,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,EAAE,EAAEA,EAAE,KAAK,EAAE,EAAQA,IAAN,IAAQ,KAAK,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,qBAAqB,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,EAAE,EAAEA,EAAE,KAAK,KAAK,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,EAAE,EAAEA,EAAE,KAAK,EAAE,EAAE0hG,GAAG,MAAM,sBAAsB,EAAE,KAAK,EAAE,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,EAAE,EAAEE,IAAIF,GAAG,QAAQ,iBAAiB,EAAEE,IAAIF,GAAG,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,SAASl6E,GAAG,EAAE,EAAEnqB,EAAE,GAAGwG,EAAE,GAAG9D,EAAE,GAAG,CAAC,IAAIhC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAGV,EAAE,CAAC,IAAIA,EAAE,EAAE8F,EAAE,EAAEU,GAAG9D,IAAI1C,EAAE,EAAE,QAAQ,IAAIqjG,GAAG78F,CAAC,CAAC,EAAEV,EAAE,EAAE,QAAQ,IAAIu9F,GAAG3gG,CAAC,CAAC,GAAG,MAAM,EAAE1C,EAAE,YAAW,EAAGmd,EAAErX,EAAE,YAAW,EAAGnF,EAAE,IAAI68G,GAAG,EAAE,KAAK,EAAE,EAAErgG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAItR,EAAEjG,EAAEjF,EAAE,KAAI,EAAGA,EAAE,MAAK,EAAGD,EAAE,EAAE,EAAE,EAAE,EAAEC,EAAE,KAAK,OAAO,MAAMkF,EAAE,CAAA,EAAG7E,EAAE,CAAE,EAAC,QAAQC,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,CAAC,MAAM0B,EAAEhC,EAAE,KAAKM,CAAC,EAAEjB,EAAEW,EAAE,KAAKM,CAAC,EAAE4K,EAAE,EAAEjG,EAAE,EAAQjD,IAAN,IAAQ3B,EAAE,CAAC,EAAE,IAAIA,EAAE,CAAC,EAAE,GAAG6K,EAAE,GAAS7L,IAAN,IAAQ6F,EAAEnF,CAAC,EAAE,IAAImF,EAAEnF,CAAC,EAAE,GAAGkF,EAAE,GAAGlF,GAAGmL,EAAE,GAAGjG,CAAC,CAAC,MAAM,EAAE,CAAE,EAACzQ,EAAE,GAAGqN,EAAExC,EAAE,aAAY,EAAG,EAAE8F,EAAE,aAAY,EAAGpF,EAAE,EAAEV,EAAE,YAAa,SAASiB,EAAE,CAAUA,EAAE,iBAAX,QAA2BA,EAAE,iBAAiBA,EAAE,mBAAmB,IAAI,IAAI4E,EAAEnF,CAAC,IAAI8B,EAAE,MAAMvB,EAAE,mBAAmB,IAAI,EAAE,EAAE,KAAKuB,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,GAAG9B,GAAG,EAAE,CAAC,EAAGA,EAAE,EAAEoF,EAAE,YAAa,SAAS7E,EAAE,CAAUA,EAAE,iBAAX,QAA2BA,EAAE,iBAAiBA,EAAE,mBAAmB,IAAI,IAAID,EAAEN,CAAC,IAAI,EAAE,MAAMO,EAAE,mBAAmB,IAAI,EAAE9L,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAGuL,GAAG,EAAE,CAAC,EAAG,EAAE,IAAI,aAAa,CAAC,EAAE,EAAE,IAAI,aAAavL,CAAC,CAAC,MAAM,EAAE,EAAE,QAAQ,IAAIkuG,GAAG,GAAG78F,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,QAAQ,IAAI68F,GAAG,GAAG3gG,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,IAAImlB,GAAG,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,gBAAe,EAAG,CAAC,CAAC,MAAM41F,GAAG,OAAO,OAAO,CAAC,KAAK,GAAG,gBAAgB,EAAE,EAAEb,EAAE,EAAE,MAAMc,WAAWb,EAAE,CAAC,YAAY57G,EAAE0B,EAAE,EAAE,CAAE,EAAC,CAAC,MAAM1B,EAAE0B,EAAE,OAAO,OAAO,CAAC,KAAKA,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,UAAUA,EAAE,KAAK,SAAS,GAAG,KAAK,QAAQ,OAAO,OAAO,KAAK,QAAQ,CAAC,gBAAgB,IAAI2gG,GAAE,OAAC,kBAAkB,IAAIA,GAAE,OAAC,uBAAuB,IAAIA,GAAE,MAAA,CAAC,EAAE,KAAK,cAAc,KAAK,WAAW,IAAI,EAAE,KAAK,WAAW,SAASriG,EAAE,CAAC,IAAI0B,EAAE,EAAE3C,EAAE,EAAE,MAAMwG,EAAE,CAAE,EAAC,MAAM,CAAC,IAAI,SAASvF,EAAE,CAAC,OAAWuF,EAAE,QAAQvF,CAAC,IAAhB,EAAiB,EAAE,IAAI,SAASA,EAAE,CAAC,OAAOuF,EAAEvF,CAAC,CAAC,EAAE,KAAK,SAASyB,EAAE,CAAC8D,EAAE7D,CAAC,EAAED,EAAEC,GAAG1B,EAAE0B,EAAE,GAAG1B,EAAE,EAAEjB,CAAC,EAAE,IAAI,OAAO,CAAC,OAAOA,CAAC,EAAE,IAAI,MAAM,CAAC,OAAOwG,EAAE,MAAM,EAAE,KAAK,IAAIxG,EAAEiB,CAAC,CAAC,CAAC,EAAE,MAAM,UAAU,CAACjB,EAAE,EAAE2C,EAAE,EAAE6D,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,SAAS,UAAU,CAAC,MAAMvF,EAAE,CAAA,EAAG,MAAM,CAAC,IAAI,SAAS0B,EAAE,CAAC,OAAgB1B,EAAE,KAAK,UAAU0B,CAAC,CAAC,IAA5B,MAA6B,EAAE,IAAI,SAASA,EAAE3C,EAAE,CAACiB,EAAE,KAAK,UAAU0B,CAAC,CAAC,EAAE3C,CAAC,EAAE,IAAI,SAAS2C,EAAE,CAAC,OAAO1B,EAAE,KAAK,UAAU0B,CAAC,CAAC,CAAC,EAAE,IAAI,QAAQ,CAAC,OAAO,OAAO,KAAK1B,CAAC,EAAE,IAAK0B,GAAG1B,EAAE0B,CAAC,EAAG,CAAC,CAAC,EAAC,EAAG,KAAK,wBAAwB,KAAK,kBAAkB,YAAY,CAAC,KAAK,OAAO,QAAQ2hG,GAAG,QAAQ,MAAMA,GAAG,MAAM,eAAe,GAAG,WAAW,MAAM,EAAE,EAAE,EAAE,KAAK,uBAAuB,KAAK,kBAAkB,WAAWA,GAAG,EAAE,EAAE,KAAK,oBAAoB,KAAK,kBAAkB,QAAQA,GAAG,EAAE,EAAE,KAAK,uBAAuB,KAAK,kBAAkB,WAAWA,GAAG,EAAE,EAAE,KAAK,uBAAuB,IAAIlP,GAAG,CAAC,KAAK,wBAAwB,KAAK,uBAAuB,KAAK,oBAAoB,KAAK,sBAAsB,CAAC,EAAE,KAAK,mBAAmB,KAAK,WAAW,eAAe,EAAE,KAAK,UAAU,QAAQ,UAAU,IAAK,IAAI,CAAC,KAAK,sBAAsB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAG,CAAA,CAAC,IAAI,mBAAmB,CAAC,OAAOqoB,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,WAAW,CAAC,cAAcx8G,EAAE,CAAC,KAAK,UAAU,IAAIoiG,GAAGpiG,CAAC,EAAE,KAAK,cAAc,IAAIm8G,GAAG,KAAK,UAAU,KAAK,SAAS,EAAE,KAAK,UAAU,QAAQ,cAAc,IAAK,IAAI,CAAC,KAAK,cAAc,aAAa,KAAK,SAAS,EAAE,KAAK,yBAAyB,KAAK,qBAAqB,CAAC,CAAE,CAAC,aAAan8G,EAAE,CAAC,OAAO,KAAK,WAAW,KAAKA,EAAE,KAAK,UAAU,UAAUA,CAAC,EAAE,IAAI,CAAC,mBAAmBA,EAAE,CAAC,GAAY,KAAK,UAAU,WAAWA,CAAC,IAApC,SAAwCA,EAAE,IAAI,KAAK,WAAW,kBAAkBA,EAAE,CAAC,MAAM0B,EAAE,CAAC,gBAAgB1B,CAAC,EAAE,KAAK,SAAS,QAASA,GAAGA,EAAE,cAAc0B,CAAC,CAAG,EAAC,KAAK,uBAAuB,cAAcA,CAAC,EAAE,KAAK,WAAW,gBAAgB1B,EAAE,KAAK,QAAQ,uBAAuB,SAASA,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,wBAAwB,CAAC,KAAK,SAAS,QAASA,GAAG,CAACA,EAAE,OAAO,CAAC,EAAG,KAAK,uBAAuB,MAAK,CAAE,CAAC,qBAAqB,CAAC,KAAK,SAAS,QAASA,GAAG,CAACA,EAAE,WAAW,aAAa,KAAK,aAAa,CAAC,CAAC,CAAE,CAAC,sBAAsBA,EAAE,CAAC,MAAM,sBAAsBA,CAAC,EAAE,KAAK,uBAAuB,OAAOA,CAAC,CAAC,CAAC,8BAA8B,CAAC,MAAM,6BAA8B,EAAC,KAAK,uBAAuB,cAAc,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,kBAAkBA,EAAE0B,EAAE,GAAG,EAAE,GAAG,CAACA,EAAE,gBAAgB,KAAK,WAAW,gBAAgB,MAAM,EAAE,KAAK,mBAAmB1B,EAAE,KAAK,cAAc0B,EAAE,CAAC,EAAE,OAAO,GAAG,EAAE,QAAQ,kBAAkB,IAAK,IAAI,KAAK,cAAe,CAAA,EAAG,CAAC,CAAC,cAAc1B,EAAE,GAAG0B,EAAE,CAAA,EAAG,CAAC,MAAM,EAAE,SAAS1B,EAAE0B,EAAE3C,EAAE,CAAC,IAAIwG,EAAE,OAAOA,EAAEvF,GAAGA,aAAagtC,GAAG,IAAIgvE,GAAGh8G,EAAE0B,EAAE3C,CAAC,EAAE,CAACiB,GAAG0B,EAAE,OAAO,IAAIomB,GAAG9nB,EAAE0B,EAAE3C,CAAC,EAAEiB,GAAe,OAAOA,GAAnB,WAAqB,IAAIk8G,GAAGl8G,EAAE0B,EAAE3C,CAAC,EAAE,IAAIk9G,GAAGj8G,EAAE0B,EAAE3C,CAAC,EAAEwG,CAAC,EAAEvF,EAAE,KAAK,cAAc0B,CAAC,EAAE,EAAE,IAAIukB,GAAG,KAAK,MAAM,EAAEvkB,CAAC,EAAE,OAAO,KAAK,SAAS,KAAK,CAAC,EAAE,KAAK,QAAQ,gBAAgB,SAAS,CAAC,EAAE,CAAC,CAAC,iBAAiB1B,EAAE,CAAC,MAAM0B,EAAE,KAAK,SAAS,QAAQ1B,CAAC,EAAO0B,IAAL,IAAQ,KAAK,SAAS,OAAOA,EAAE,CAAC,EAAE1B,EAAE,QAAO,EAAG,KAAK,QAAQ,kBAAkB,SAASA,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,SAAS,MAAK,EAAG,QAASA,GAAGA,EAAE,QAAS,CAAA,EAAG,KAAK,SAAS,OAAO,EAAE,KAAK,UAAU,QAAO,EAAG,KAAK,uBAAuB,QAAO,EAAG,MAAM,QAAO,CAAE,CAAC,SAASA,EAAE0B,EAAE,CAAW,OAAO1B,GAAjB,WAAqB0B,EAAE1B,EAAEA,EAAE,IAAI,KAAK,MAAM,kBAAkB,SAAS,KAAK,UAAUA,CAAC,EAAE,KAAK,QAAQA,CAAC,EAAE8+F,EAAGp9F,EAAE,CAAC,CAAC,CAAC,CAAC,oBAAoB1B,EAAE,CAAC,IAAI0B,EAAE,OAAOA,EAAE1B,EAAE,KAAK,cAAc,eAAe,IAAIoiG,GAAGpiG,CAAC,CAAC,EAAE,KAAK,cAAc,YAAY0B,CAAC,CAAC,uBAAuB1B,EAAE,CAAC,OAAOA,GAAa,OAAOA,GAAjB,SAAmB,KAAK,UAAU,WAAW,IAAIoiG,GAAGpiG,CAAC,CAAC,EAAE,KAAK,UAAU,MAAM,CAAC,UAAUA,EAAE0B,EAAE,EAAE,EAAE,CAAC,OAAOwnB,GAAG,KAAK,cAAclpB,EAAE,cAAc0B,EAAE,EAAE,CAAC,EAAE,KAAK,sBAAsB,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,2BAA2B1B,EAAE,CAAC,IAAI0B,EAAE,EAAE,MAAM,EAAE,KAAK,UAAU,aAAa1B,CAAC,EAAE,OAAO,KAAK,mBAAoBA,GAAG,CAAC,GAAGA,EAAE,cAAa,EAAG,CAAC,MAAMuF,EAAEvF,EAAE,KAAK0B,EAAE,KAAK,IAAI6D,EAAE,cAAc,CAAC,EAAE7D,CAAC,CAAC,CAAC,CAAC,EAAGA,CAAC,CAAC,YAAY1B,EAAE,CAAC,MAAM0B,EAAE,KAAK,WAAW,MAAM,GAAG,KAAK,WAAW1B,EAAE,OAAO0B,GAAG,EAAE,CAAC,GAAGA,EAAE,EAAE,CAAC,MAAM1B,EAAE,KAAK,WAAW,KAAKjB,EAAE,KAAK,WAAW,KAAK,KAAI,EAAG,KAAK,SAAS,IAAIA,CAAC,EAAE,KAAK,SAAS,IAAIA,CAAC,EAAE,KAAK,SAAS,IAAIA,EAAEiB,CAAC,EAAM0B,IAAJ,EAAM,KAAK,uBAAuB,cAAc,CAAC,SAAS,KAAK,SAAS,OAAO,OAAQ1B,GAAOA,EAAE,SAAN,CAAc,CAAA,CAAC,EAAM0B,IAAJ,EAAM,KAAK,oBAAoB,cAAc,CAAC,WAAW,KAAK,SAAS,OAAO,OAAQ1B,GAAOA,EAAE,SAAN,CAAY,CAAE,CAAC,EAAM0B,IAAJ,GAAO,KAAK,uBAAuB,cAAc,CAAC,SAAS,KAAK,SAAS,OAAO,OAAQ1B,GAAOA,EAAE,SAAN,CAAc,CAAA,CAAC,CAAC,CAAC,KAAK,WAAW,QAAQ,KAAK,SAAS,MAAM,MAAM,KAAK,WAAW,IAAIA,EAAE,KAAK,GAAG,KAAK,WAAW,KAAKA,EAAE,KAAK,EAAE,KAAK,SAASA,EAAE,MAAM,KAAK,cAAa,CAAE,CAAC,cAAc,CAAC,KAAK,WAAW,MAAK,EAAG,KAAK,SAAS,OAAO,KAAK,wBAAwB,aAAa,MAAM,CAAC,CAAC,cAAc,CAAC,MAAMA,EAAE,KAAK,YAAW,EAAG,KAAK,uBAAuB,cAAc,CAAC,SAASA,EAAE,QAAQ,CAAC,EAAE,KAAK,oBAAoB,cAAc,CAAC,WAAWA,EAAE,KAAK,CAAC,EAAE,KAAK,uBAAuB,cAAc,CAAC,SAASA,EAAE,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,MAAMA,EAAE,KAAK,WAAW,KAAK0B,EAAE,CAAA,EAAG1B,EAAE,QAASA,GAAG,CAAC,MAAMjB,EAAE,KAAK,IAAI,GAAG,KAAK,2BAA2BiB,CAAC,CAAC,EAAE0B,EAAE1B,CAAC,EAAEjB,GAAG,IAAIyhG,GAAG,GAAG,EAAEzhG,CAAC,EAAE,CAAG,EAAC,KAAK,wBAAwB,aAAaiB,EAAE,OAAO,IAAIA,EAAE,KAAK,GAAG,EAAE,MAAM,EAAEA,EAAE,QAAQ,KAAK,wBAAwB,cAAc,CAAC,WAAW0B,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM1B,EAAE,KAAK,SAAS,OAAO,MAAM,CAAC,SAASA,EAAE,OAAQA,GAAOA,EAAE,SAAN,GAAe,MAAMA,EAAE,OAAQA,GAAOA,EAAE,SAAN,CAAY,EAAG,SAASA,EAAE,OAAQA,GAAOA,EAAE,SAAN,CAAY,CAAE,CAAC,CAAC,sBAAsBA,EAAE,CAAC,MAAM0B,EAAE,KAAK,SAAS,EAAEA,EAAE,OAAO,EAAE,SAAS1B,EAAE,CAAC,EAAE,OAAQ0B,GAAGA,EAAE,SAAS1B,CAAC,EAAG,QAASA,GAAG0B,EAAE,IAAI1B,EAAE,QAAQ,KAAM,CAAA,EAAG,GAAG,CAACA,GAAG,EAAEA,IAAI,EAAE,CAAC,GAAG,CAACA,GAAG,EAAEA,IAAI,EAAE,CAAC,GAAG,CAACA,GAAG,EAAEA,IAAI,EAAE,CAAC,EAAE,KAAK,aAAY,CAAE,CAAC,kBAAkBA,EAAE,CAAC,KAAK,SAAS,IAAIA,EAAE,QAAQ,KAAM,CAAA,EAAE,KAAK,aAAY,CAAE,CAAC,eAAeA,EAAE,CAAC,GAAGA,EAAE,OAAO,GAAGA,EAAE,OAAO,EAAE,OAAO,MAAM0B,EAAE1B,EAAE,QAAQ,KAAM,EAAC,KAAK,SAAS,IAAI0B,CAAC,GAAG,KAAK,SAAS,IAAIA,EAAE1B,CAAC,EAAE,KAAK,aAAc,CAAA,CAAC,CAAC+jG,GAAG,IAAI,YAAY0Y,EAAE,EAAE1Y,GAAG,IAAI,gBAAgB0Y,EAAE,EAAE,MAAMC,WAAWd,EAAE,CAAC,YAAY57G,EAAE0B,EAAE,EAAE,CAAA,EAAG,CAAC,MAAM1B,EAAE0B,EAAE,OAAO,OAAO,CAAC,KAAKA,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,QAAQA,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,SAAS,CAAC,kBAAkB1B,EAAE0B,EAAE,GAAG,CAAC,OAAO,KAAK,mBAAmB1B,EAAE,KAAK,QAAQ0B,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,KAAK,QAAQ,WAAW,CAAC,wBAAwB,CAAC,OAAO,KAAK,QAAQ,MAAM,CAAC,SAAS,CAAC,KAAK,QAAQ,UAAU,MAAM,QAAO,CAAE,CAAC,CAACqiG,GAAG,IAAI,UAAU2Y,EAAE,EAAE,MAAMC,WAAWf,EAAE,CAAC,YAAY57G,EAAE0B,EAAE,EAAE,CAAA,EAAG,CAAC,MAAM1B,EAAE0B,EAAE,OAAO,OAAO,CAAC,KAAKA,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,OAAOA,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,QAAQ,CAAC,kBAAkB1B,EAAE0B,EAAE,CAAE,EAAC,CAAC,OAAO,KAAK,mBAAmB1B,EAAE,KAAK,OAAO0B,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,KAAK,OAAO,WAAW,CAAC,wBAAwB,CAAC,OAAO,KAAK,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,OAAO,QAAO,EAAG,MAAM,QAAO,CAAE,CAAC,CAACqiG,GAAG,IAAI,SAAS4Y,EAAE,EAAE,MAAMC,WAAWziD,EAAE,CAAC,kBAAkBn6D,EAAE0B,EAAE,CAAC,OAAO,KAAK,QAAS,GAAG,EAAE,kBAAkB1B,EAAE0B,CAAC,CAAG,CAAA,CAAC,SAAS1B,EAAE,CAAC,OAAO,KAAK,QAAS0B,GAAGA,EAAE,SAAS1B,CAAC,EAAG,CAAC,CAAC,SAAS68G,GAAG,EAAE,EAAE,CAAC,OAAO,aAAa,OAAc,EAAE,KAAK,MAAM,CAAC,IAArB,KAAuB,EAAE,OAAO,CAAC,CAAC,MAAMC,GAAG,IAAIp7G,EAAEq7G,GAAG,CAAC,SAAS,GAAG,QAAQ,SAAS,cAAc,GAAG,YAAY,EAAE,gBAAgB,QAAQ,YAAY,EAAE,UAAU,IAAI,SAAS,EAAE,SAAS,EAAE,QAAQ,IAAI,SAAS,GAAG,SAAS,QAAQ,UAAU,WAAW,QAAQ,GAAG,OAAO,IAAI,UAAU,GAAG,aAAa,GAAG,WAAW,cAAc,WAAW,SAAS,eAAe,EAAE,aAAa,SAAS,iBAAiB,GAAG,aAAa,EAAE,QAAQ,GAAG,YAAY,SAAS,EAAE,MAAMC,EAAE,CAAC,YAAYh9G,EAAE0B,EAAE,CAAE,EAAC,CAAC,KAAK,QAAQ,CAAC,kBAAkB,IAAI2gG,GAAAA,OAAG,kBAAkB,IAAIA,GAAAA,OAAG,eAAe,IAAIA,GAAAA,OAAG,iBAAiB,IAAIA,GAAAA,OAAG,QAAQ,IAAIA,GAAAA,OAAG,QAAQ,IAAIA,GAAAA,MAAE,EAAE,KAAK,MAAM,IAAI0C,GAAG,KAAK,SAAS,CAAE,EAAC,KAAK,kBAAkB,CAAA,EAAG,KAAK,QAAQ,GAAG,KAAK,OAAO,IAAI0C,GAAGznG,CAAC,EAAE,KAAK,OAAO,WAAW,KAAK,QAAQ,SAAS,cAAc,KAAK,EAAE,OAAO,OAAO,KAAK,QAAQ,MAAM,CAAC,QAAQ,OAAO,SAAS,QAAQ,OAAO,UAAU,cAAc,OAAO,gBAAgB,uBAAuB,MAAM,YAAY,QAAQ,MAAM,WAAW,YAAY,CAAC,EAAE,KAAK,OAAO,UAAU,YAAY,KAAK,OAAO,EAAE,KAAK,cAAc,IAAI+nG,GAAG,KAAK,OAAO,SAAS,UAAU,EAAE,KAAK,eAAe,IAAIsB,GAAG,IAAI,EAAE,KAAK,kBAAkB,IAAIX,GAAG,IAAI,EAAE,KAAK,gBAAgB,IAAIttE,GAAG,IAAI,EAAE,KAAK,kBAAkB,IAAI2uE,GAAG,IAAI,EAAE,KAAK,cAAc,IAAIoL,GAAG,IAAI,EAAE,KAAK,YAAY,IAAIG,GAAG,IAAI,EAAE,KAAK,gBAAgB,IAAIC,GAAG,IAAI,EAAE,KAAK,cAAc,IAAIC,GAAG,IAAI,EAAE,KAAK,kBAAkB,IAAIC,GAAG,IAAI,EAAE,KAAK,YAAY,IAAI5f,GAAG,IAAI,EAAE,KAAK,cAAc,KAAK,kBAAkB,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,cAAc,MAAM,EAAE,EAAE,KAAK,cAAc,KAAK,kBAAkB,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,cAAc,MAAM,EAAE,EAAE,KAAK,WAAWkJ,GAAGr9F,EAAEq7G,EAAE,EAAE,KAAK,cAAc,KAAK,UAAU,EAAE,KAAK,OAAO,QAAS,EAAC,CAAC,cAAc/8G,EAAE,CAAE,EAAC,CAACg/F,GAAG,KAAK,WAAWh/F,CAAC,EAAE,MAAM0B,EAAE1B,EAAE,EAAE,KAAK,WAAW,EAAE,KAAK,OAAO,EAAE,KAAK,kBAAkB,OAAgB0B,EAAE,UAAX,QAAoB,KAAK,WAAW,EAAE,OAAO,EAAWA,EAAE,WAAX,QAAqB,KAAK,YAAY,EAAE,QAAQ,EAAWA,EAAE,cAAX,SAAyB,EAAE,YAAY,EAAE,aAAsBA,EAAE,YAAX,SAAuB,EAAE,UAAU,EAAE,WAAoBA,EAAE,WAAX,SAAsB,EAAE,SAAS,EAAE,UAAmBA,EAAE,cAAX,QAAwB,KAAK,cAAc,OAAO,EAAE,WAAW,EAAE,KAAK,cAAc,cAAc,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,OAAO,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,cAAc,EAAE,eAAe,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,KAAK,QAAQ,kBAAkB,SAAS,KAAK,cAAe,CAAA,EAAE,IAAI,CAAC,IAAI1B,EAAE,CAAC,QAAQ,IAAI,YAAYA,CAAC,EAAE,KAAK,QAAQ,KAAKA,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,OAAO,OAAO,CAAE,EAAC,KAAK,UAAU,CAAC,CAAC,0BAA0BA,EAAE,CAAC,GAAGA,aAAay8G,GAAG,CAAC,IAAI/6G,EAAE,EAAE,EAAE1B,EAAE,aAAa,IAAI,EAAE,MAAM,EAAEA,EAAE,UAAU,GAAG,EAAE,WAAW,IAAI,CAAC,MAAMP,EAAE,EAAE,WAAW,IAAIiC,EAAEjC,EAAE,aAAa,CAAC,EAAE,EAAEA,EAAE,gBAAgB,CAAC,EAAE,EAAEA,EAAE,iBAAgB,EAAGO,EAAE,mBAAmB,KAAK,CAAC,MAAM0B,EAAE,EAAE,cAAc,CAAC,EAAE,UAAU,EAAE,EAAE,cAAc,CAAC,EAAE,aAAa,EAAE,EAAE,IAAIjC,EAAEiC,EAAEqhG,KAAKtjG,GAAG,GAAG,MAAMwvD,EAAE,EAAE,UAAU,MAAM,EAAE,aAAa,MAAM,EAAEA,IAAIxvD,GAAG,IAAI,IAAIc,EAAE,YAAYE,EAAE,SAASzB,EAAE,GAAG,GAAO,EAAE,kBAAkB,IAAIojG,GAAG,gBAAgB,CAAC,IAAhD,IAAoD7hG,EAAE,eAAeE,EAAE,WAAWzB,EAAE,IAAIskG,IAAI,QAAQ,IAAI7jG,EAAEiC,EAAE,EAAEutD,CAAC,EAAE,EAAE,EAAE,EAAEjvD,EAAE,kBAAkB,aAAa,CAAC,YAAY,UAAU,YAAY,EAAE,YAAY,IAAI,UAAU,GAAG,YAAY,IAAI,QAAQ,MAAM,CAAC,UAAU,EAAE,GAAGP,EAAE,MAAMA,EAAE,IAAI,CAAC,IAAIiC,EAAE,KAAK,IAAI,EAAE,KAAK,IAAI,GAAG,KAAKjC,EAAE,EAAE,CAAC,EAAEwvD,IAAIvtD,EAAE,KAAK,IAAIA,EAAE,EAAE,GAAG1B,EAAE,kBAAkB,UAAU,CAAC,YAAYO,EAAE,WAAWE,EAAE,aAAazB,EAAE,KAAK,UAAU,YAAY,KAAK,YAAY,IAAI,YAAY0C,EAAE,UAAU,EAAE,CAAC,CAAC,MAAMjC,EAAE,KAAKO,EAAE,kBAAkB,WAAW,CAAC,YAAYO,EAAE,WAAWE,EAAE,aAAazB,EAAE,SAAS,EAAE,CAAC,EAAES,EAAE,IAAIO,EAAE,kBAAkB,WAAW,CAAC,YAAYO,EAAE,WAAWE,EAAE,aAAazB,EAAE,QAAQ,MAAM,gBAAgB,GAAG,YAAY,CAAC,CAAC,EAAES,EAAE,IAAIO,EAAE,kBAAkB,WAAW,CAAC,YAAYO,EAAE,WAAWE,EAAE,aAAazB,EAAE,YAAY,CAAC,CAAC,GAAGgB,EAAE,kBAAkB,UAAU,CAAC,YAAYO,EAAE,WAAWE,EAAE,aAAazB,EAAE,YAAY,GAAG,YAAY,EAAE,QAAQ,MAAM,CAAC,EAAES,EAAE,KAAKO,EAAE,kBAAkB,OAAO,CAAC,YAAYO,EAAE,WAAWE,EAAE,aAAazB,EAAE,QAAQ,MAAM,CAAC,EAAEgB,EAAE,kBAAkB,aAAa,CAAC,KAAK,SAAS,YAAY,UAAU,YAAY,EAAE,YAAY,IAAI,UAAU,GAAG,YAAY,IAAI,QAAQ,MAAM,CAAC,GAAGA,EAAE,UAAU,OAAO,QAAQA,EAAE,cAAe,CAAA,MAAMA,aAAa08G,IAAI18G,aAAa28G,KAAK38G,EAAE,kBAAkB,SAAS,EAAE,KAAK,MAAM,WAAW,KAAK,SAAS,IAAI,CAAC,CAAC,SAASA,EAAE0B,EAAE,CAAE,EAAC,CAAC,MAAM,EAAE,OAAO,OAAO,CAAE,EAAC,KAAK,kBAAkBA,CAAC,EAAE,EAAEgjG,GAAG1kG,CAAC,EAAE,KAAK,KAAK,MAAM,UAAW,EAAC,KAAK,IAAI,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE8+F,EAAG,EAAE,IAAI4F,GAAG1kG,CAAC,EAAE,GAAG,EAAE,IAAIP,EAAE,OAAOA,EAAEmkG,GAAG,aAAa,CAAC,EAAE,QAAQ,OAAO,IAAI,MAAM,kBAAkB,CAAC,iEAAiE,CAAC,EAAEgB,GAAG5kG,EAAE,CAAC,EAAEP,EAAE,KAAMO,GAAG,CAAC,KAAK,IAAI,WAAW,CAAC,GAAG,EAAE,MAAM0B,EAAE,KAAK,uBAAuB1B,EAAE,CAAC,EAAE,OAAO,EAAE,uBAAuB,KAAK,0BAA0B0B,CAAC,EAAE,KAAK,MAAM,UAAS,EAAGA,CAAC,EAAI1B,GAAG,CAAC,KAAK,MAAM,YAAY,MAAM0B,EAAE,wBAAwB1B,CAAC,IAAI,MAAM,KAAK,IAAI0B,CAAC,EAAEA,CAAC,CAAG,CAAA,CAAC,WAAW1B,EAAE,CAAC,MAAM0B,EAAEgjG,GAAG1kG,CAAC,EAAE,KAAK,OAAO,KAAK,IAAI,mBAAmB0B,CAAC,GAAG,EAAEkjG,GAAG5kG,CAAC,EAAE,KAAMA,GAAG,CAAC,KAAK,MAAM,UAAW,EAAC,KAAK,IAAI,mBAAmB0B,CAAC,GAAG,EAAE1B,EAAE,IAAI,IAAI,EAAE,KAAM,IAAI,CAAC,KAAK,MAAM,UAAS,EAAG,KAAK,IAAI,oBAAoB0B,CAAC,GAAG,CAAC,CAAC,EAAG,KAAK,IAAI,kBAAkBA,CAAC,GAAG,CAAC,EAAI1B,GAAG,CAAC,KAAK,MAAM,UAAS,EAAG,MAAMjB,EAAE,mBAAmB2C,CAAC,MAAM1B,CAAC,IAAI,MAAM,KAAK,IAAIjB,CAAC,EAAEA,CAAC,CAAC,CAAE,CAAC,aAAaiB,EAAE,CAACA,GAAG,KAAK,SAAS,KAAKA,CAAC,EAAE,KAAK,QAAQ,eAAe,SAASA,CAAC,GAAGojG,GAAG,KAAK,wCAAwC,CAAC,CAAC,uBAAuBpjG,EAAE0B,EAAE,GAAG,CAAC,MAAM,EAAEqiG,GAAG,IAAI/jG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,KAAKA,EAAE0B,CAAC,EAAE,OAAO,KAAK,aAAa,CAAC,EAAE,CAAC,CAAC0hG,GAAG,KAAK,+BAA+BpjG,EAAE,IAAI,CAAC,CAAC,gBAAgBA,EAAE,CAAC,MAAM0B,EAAE,KAAK,SAAS,QAAQ1B,CAAC,EAAO0B,IAAL,KAAS,KAAK,SAAS,OAAOA,EAAE,CAAC,EAAE1B,EAAE,QAAS,EAAC,KAAK,QAAQ,iBAAiB,SAASA,CAAC,EAAE,CAAC,qBAAqB,CAAC,KAAK,SAAS,QAAQ,QAASA,GAAG,KAAK,gBAAgBA,CAAC,CAAC,CAAE,CAAC,cAAc,CAAC,KAAK,OAAO,aAAY,CAAE,CAAC,QAAQA,EAAE0B,EAAE,CAAC,MAAM,EAAE,KAAK,OAAO,UAAU,IAAI,SAAS,OAAgB1B,IAAT,SAAa,EAAE,MAAM,MAAMA,GAAY0B,IAAT,SAAa,EAAE,MAAM,OAAOA,GAAG,KAAK,aAAc,EAAC,CAAC,iBAAiB1B,EAAE,CAAC,GAAG,EAAE,SAAS,mBAAmB,SAAS,sBAAsB,SAAS,yBAAyB,SAAS,qBAAqB,OAAO,KAAKojG,GAAG,IAAI,0CAA0C,EAAE,MAAM1hG,EAAE,KAAK,SAAS,GAAG,CAAC,OAAO,SAAS,mBAAmB,SAAS,sBAAsB,SAAS,yBAAyB,SAAS,mBAAmB,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,EAAC,GAAIA,EAAE,sBAAsB,CAAC,MAAM1B,EAAE0B,EAAE,sBAAsB1B,EAAE,MAAM,MAAMA,EAAE,QAAQ,aAAa,GAAGA,EAAE,MAAM,OAAOA,EAAE,QAAQ,cAAc,GAAG,SAAS,oBAAoB,mBAAmB,CAAC,EAAE,SAAS,oBAAoB,sBAAsB,CAAC,EAAE,SAAS,oBAAoB,yBAAyB,CAAC,EAAE,SAAS,oBAAoB,qBAAqB,CAAC,EAAE0B,EAAE,aAAY,EAAGA,EAAE,QAAQ,kBAAkB,SAAS,EAAE,CAAC,CAAC,CAAC1B,EAAEA,GAAG,KAAK,OAAO,UAAU,KAAK,sBAAsBA,EAAE,EAAG,EAAC,SAAS,eAAe,SAAS,iBAAiB,SAAS,iBAAiB,SAAS,iBAAgB,EAAG,SAAS,oBAAoB,SAAS,oBAAqB,EAAC,SAAS,sBAAsB,SAAS,qBAAsB,GAAEA,EAAE,QAAQ,YAAYA,EAAE,MAAM,OAAO,GAAGA,EAAE,QAAQ,aAAaA,EAAE,MAAM,QAAQ,GAAGA,EAAE,MAAM,MAAM,OAAO,OAAO,MAAM,KAAKA,EAAE,MAAM,OAAO,OAAO,OAAO,OAAO,KAAKA,EAAE,kBAAkBA,EAAE,kBAAmB,EAACA,EAAE,oBAAoBA,EAAE,sBAAsBA,EAAE,qBAAqBA,EAAE,qBAAsB,EAACA,EAAE,yBAAyBA,EAAE,wBAAuB,EAAG,SAAS,iBAAiB,mBAAmB,CAAC,EAAE,SAAS,iBAAiB,sBAAsB,CAAC,EAAE,SAAS,iBAAiB,yBAAyB,CAAC,EAAE,SAAS,iBAAiB,qBAAqB,CAAC,EAAE,KAAK,aAAc,EAAC,KAAK,QAAQ,kBAAkB,SAAS,EAAE,EAAE,WAAY,UAAU,CAAC0B,EAAE,aAAY,CAAE,EAAG,GAAG,EAAE,CAAC,QAAQ1B,EAAE,CAACA,GAAG,KAAK,cAAc,OAAO,EAAE,EAAE,KAAK,cAAc,MAAM,EAAE,GAAG,KAAK,cAAc,MAAM,EAAE,CAAC,CAAC,QAAQA,EAAE,CAACA,GAAG,KAAK,cAAc,OAAO,EAAE,EAAE,KAAK,cAAc,MAAM,EAAE,GAAG,KAAK,cAAc,MAAM,EAAE,CAAC,CAAC,YAAY,CAAC,KAAK,QAAQ,KAAK,cAAc,MAAM,CAAC,CAAC,YAAY,CAAC,KAAK,QAAQ,KAAK,cAAc,MAAM,CAAC,CAAC,UAAU,CAAC,MAAMA,EAAE,KAAK,WAAW,GAAaA,EAAE,WAAZ,QAAqB,MAAO,GAAE,IAAI0B,EAAE1B,EAAE,SAAS,OAAmBA,EAAE,YAAf,aAA2B0B,EAAE,KAAK,OAAO,mBAAmBA,CAAC,GAAG,EAAEA,CAAC,CAAC,SAAS1B,EAAE,CAAC,GAAa,KAAK,WAAW,WAA1B,QAAmC,OAAO,IAAI0B,EAAE,EAAE,EAAE,EAAe,KAAK,WAAW,YAA7B,YAAwCA,EAAE2+F,GAAGrgG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI0B,EAAE,EAAE,GAAG,EAAE,SAAS1B,EAAE,CAAC,OAAOqgG,GAAGrgG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI0B,EAAE,KAAK,OAAO,mBAAmB1B,EAAE,CAAC,EAAE,EAAE0B,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,cAAc,CAAC,SAASA,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc1B,EAAE,CAAC,MAAM0B,EAAE1B,EAAE,QAAQ88G,EAAE,EAAE,EAAE,KAAK,IAAIp7G,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,EAAE,EAAE,KAAK,IAAIA,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,KAAK,CAAC,EAAE,MAAMjC,EAAEwgG,GAAG,KAAK,OAAO,kBAAkB,GAAG,EAAEhxC,EAAE,KAAK,OAAO,MAAM1uD,EAAE,KAAK,OAAO,OAAOE,EAAEF,EAAE0uD,EAAE,EAAEA,EAAE1uD,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,EAAEE,EAAE,KAAK,IAAIhB,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,WAAW,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,OAAO,WAAW,CAAC,SAAS,CAAC,OAAO,KAAK,cAAc,KAAK,OAAM,CAAE,CAAC,CAAC,UAAUO,EAAE,CAAC,OAAO,KAAK,OAAQ,EAAC,UAAUA,GAAG,IAAI0B,CAAC,CAAC,CAAC,SAAS1B,EAAE,CAAC,KAAK,kBAAkB,SAAS,KAAK,YAAY,KAAK,QAAO,EAAG8+F,EAAG9+F,EAAE,CAAC,CAAC,CAAC,CAAC,UAAUA,EAAE,CAAE,EAAC,CAAC,OAAO,IAAI,QAAS,CAAC0B,EAAE,IAAI,CAAC,KAAK,MAAM,WAAY,IAAI,CAAC,KAAK,MAAM,UAAS,EAAG,KAAK,OAAO,UAAU1B,CAAC,EAAE,KAAMA,GAAG,CAAC,KAAK,MAAM,YAAY0B,EAAE1B,CAAC,CAAC,CAAC,EAAG,MAAOA,GAAG,CAAC,KAAK,MAAM,UAAW,EAAC,EAAEA,CAAC,CAAC,EAAG,CAAC,CAAE,CAAC,CAAE,CAAC,YAAYA,EAAE,CAAC,KAAK,WAAW,SAASA,EAAE,MAAM0B,EAAE,CAAC,YAAY,aAAa,WAAW,YAAY,WAAW,SAAS,cAAc,UAAU,WAAW,KAAK,EAAE,KAAK,mBAAoB,SAAS,EAAE,CAAC,GAAG,CAACA,EAAE,SAAS,EAAE,QAAS,CAAA,EAAE,OAAO,MAAM,EAAE,EAAE,cAAe,EAAC,EAAE,gBAAgB,CAAC1B,EAAE,EAAE,MAAM,CAAC,CAAC,CAAG,CAAA,CAAC,WAAWA,EAAE,CAAC,KAAK,WAAW,QAAQA,EAAE,MAAM0B,EAAE,CAAC,OAAO,UAAU,SAAS,QAAQ,MAAM,EAAE,EAAE,CAAC,YAAY,aAAa,WAAW,YAAY,WAAW,SAAS,cAAc,UAAU,WAAW,KAAK,EAAE,KAAK,mBAAoB,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,cAAe,EAAC,GAAG,CAACA,EAAE,SAAS,EAAE,QAAO,CAAE,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,QAAO,CAAE,EAAE,OAAO,GAAG,CAAC,EAAE,gBAAgB,OAAO,KAAK,EAAE,KAAK,QAAQ1B,EAAE,CAAC,EAAE,QAAQA,EAAE,EAAE,MAAM,CAAC,CAAC,CAAG,CAAA,CAAC,cAAcA,EAAE0B,EAAE,CAAC,KAAK,SAAS,QAAQ,QAAS,GAAG,CAAUA,IAAT,QAAYA,IAAI,EAAE,MAAM1B,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,mBAAmBA,EAAE0B,EAAE,CAAC,KAAK,cAAe,GAAG,CAAC,EAAE,SAAS,MAAO,EAAC,QAAS,GAAG,CAAUA,IAAT,QAAYA,IAAI,EAAE,WAAW1B,EAAE,EAAE,CAAC,CAAC,CAAC,CAAE,CAAG,CAAA,CAAC,oBAAoBA,EAAE,CAAC,MAAM0B,EAAE,CAAE,EAAC,OAAO,KAAK,cAAe,GAAG,EAAW1B,IAAT,QAAY68G,GAAG78G,EAAE,CAAC,IAAI0B,EAAE,KAAK,CAAC,CAAC,GAAI,IAAIk7G,GAAGl7G,CAAC,CAAC,CAAC,sBAAsB1B,EAAE,CAAC,MAAM0B,EAAE,CAAE,EAAC,OAAO,KAAK,cAAe,GAAG,CAAC,EAAE,SAAS1B,GAAG0B,EAAE,KAAK,CAAC,CAAC,CAAC,EAAG,IAAIk7G,GAAGl7G,CAAC,CAAC,CAAC,yBAAyB1B,EAAE,CAAC,MAAM0B,EAAE,GAAG,OAAO,KAAK,mBAAoB,CAAC,EAAE,IAAI,EAAW1B,IAAT,QAAY68G,GAAG78G,EAAE,CAAC,IAAI0B,EAAE,KAAK,CAAC,CAAC,CAAC,EAAG,IAAIyyF,GAAGzyF,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,cAAe1B,GAAGA,EAAE,aAAc,EAAE,WAAW,CAAC,CAAC,eAAe,CAAC,KAAK,cAAeA,GAAGA,EAAE,cAAe,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,KAAK,MAAM,QAAS,EAAC,KAAK,OAAO,QAAO,EAAG,KAAK,cAAc,QAAO,CAAE,CAAC,CAAC,MAAMi9G,WAAWrB,EAAE,CAAC,YAAY57G,EAAE0B,EAAE,EAAE,GAAG,CAAC,MAAM1B,EAAE0B,EAAE,OAAO,OAAO,CAAC,KAAKA,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,MAAMA,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,OAAO,CAAC,kBAAkB1B,EAAE0B,EAAE,CAAA,EAAG,CAAC,OAAO,KAAK,mBAAmB1B,EAAE,KAAK,MAAM0B,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,KAAK,MAAM,WAAW,CAAC,wBAAwB,CAAC,OAAO,KAAK,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,MAAM,QAAS,EAAC,MAAM,QAAS,CAAA,CAAC,CAAC,SAASw7G,GAAG,EAAE,EAAEn+G,EAAEwG,EAAE,CAAC,IAAI9D,EAAEhC,EAAE,UAAU,OAAO,EAAEA,EAAE,EAAE,EAAS8F,IAAP,KAASA,EAAE,OAAO,yBAAyB,EAAExG,CAAC,EAAEwG,EAAE,GAAa,OAAO,SAAjB,UAAsC,OAAO,QAAQ,UAA3B,WAAoC,EAAE,QAAQ,SAAS,EAAE,EAAExG,EAAEwG,CAAC,MAAO,SAAQ,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK9D,EAAE,EAAE,CAAC,KAAK,GAAGhC,EAAE,EAAEgC,EAAE,CAAC,EAAEhC,EAAE,EAAEgC,EAAE,EAAE1C,EAAE,CAAC,EAAE0C,EAAE,EAAE1C,CAAC,IAAI,GAAG,OAAOU,EAAE,GAAG,GAAG,OAAO,eAAe,EAAEV,EAAE,CAAC,EAAE,CAAC,CAACglG,GAAG,IAAI,QAAQkZ,EAAE,EAAE,MAAME,WAAWtc,EAAE,CAAC,YAAY7gG,EAAE,CAAC,MAAMA,CAAC,EAAEA,EAAE,QAAQ,KAAK,WAAW,MAAM,UAAU,KAAK,WAAW,QAAQ8+F,EAAG9+F,EAAE,QAAQ,EAAE,GAAG,KAAK,cAAc,GAAGA,EAAE,UAAU,UAAWA,GAAG,CAAC,KAAK,WAAW,OAAO,CAACA,EAAE,WAAWA,EAAE,OAAO,EAAE,KAAK,cAAcA,EAAE,KAAK,EAAE,KAAK,SAAQ,CAAE,CAAG,CAAA,CAAC,UAAUA,EAAE,CAAC,OAAO,KAAK,cAAcA,EAAE,UAAU,EAAEA,EAAE,KAAK,CAAC,CAAC,CAACk9G,GAAG,CAACtc,EAAE,EAAEuc,GAAG,UAAU,YAAY,IAAI,EAAE5a,GAAG,IAAI,YAAY4a,EAAE,EAAE,MAAMC,WAAWvc,EAAE,CAAC,YAAY7gG,EAAE,CAAC,GAAG,MAAMA,CAAC,EAAEA,EAAE,QAAQ,KAAK,WAAW,MAAM,QAAQ,CAACA,EAAE,OAAO,CAAC,IAAI0B,EAAE,EAAE,IAAI,EAAE,KAAK1B,EAAE,OAAO0B,EAAE,IAAI0gG,GAAGpiG,EAAE,IAAI,GAAGA,EAAE,UAAU,SAAU,SAASA,EAAE,CAAC,MAAM0B,EAAE1B,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE0B,CAAC,EAAE,EAAE,KAAK,IAAI,EAAEA,CAAC,CAAC,EAAGA,CAAC,EAAE,KAAK,WAAW,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,aAAa,KAAK,SAAQ,CAAE,CAAC,UAAU1B,EAAE,CAAC,OAAO,KAAK,aAAaA,EAAE,OAAO,CAAC,CAAC,CAACk9G,GAAG,CAACtc,EAAE,EAAEwc,GAAG,UAAU,YAAY,IAAI,EAAE7a,GAAG,IAAI,UAAU6a,EAAE,EAAE,MAAMC,WAAWxc,EAAE,CAAC,YAAY7gG,EAAE,CAAC,MAAMA,CAAC,EAAE,KAAK,oBAAoB,CAAA,EAAG,KAAK,cAAc,GAAGA,EAAE,QAAQ,KAAK,WAAW,MAAM,YAAYA,EAAE,UAAU,UAAWA,GAAG,CAAC,IAAI0B,EAAE,EAAE,MAAM3C,EAAE,CAAE,EAACiB,EAAE,UAAW,SAASA,EAAE,CAAUjB,EAAEiB,EAAE,OAAO,IAApB,SAAwBjB,EAAEiB,EAAE,OAAO,EAAE0B,EAAEA,GAAG,EAAE,GAAI,KAAK,WAAW,OAAO,CAAC,EAAEA,EAAE,CAAC,EAAE,KAAK,oBAAoB1B,EAAE,KAAK,EAAEjB,EAAE,KAAK,cAAciB,EAAE,KAAK,EAAE,KAAK,SAAQ,CAAE,CAAG,CAAA,CAAC,UAAUA,EAAE,CAAC,MAAM0B,EAAE,KAAK,oBAAoB1B,EAAE,UAAU,EAAE,OAAO,KAAK,cAAcA,EAAE,UAAU,EAAE0B,EAAE1B,EAAE,OAAO,CAAC,CAAC,CAAC,CAACk9G,GAAG,CAACtc,EAAE,EAAEyc,GAAG,UAAU,YAAY,IAAI,EAAE9a,GAAG,IAAI,UAAU8a,EAAE,EAAE,MAAMC,WAAWzc,EAAE,CAAC,YAAY7gG,EAAE,CAAC,MAAMA,CAAC,EAAE,KAAK,cAAc,CAAE,EAACA,EAAE,QAAQ,KAAK,WAAW,MAAM,YAAYA,EAAE,UAAU,UAAWA,GAAG,CAAC,KAAK,WAAW,OAAO,CAACA,EAAE,YAAYA,EAAE,QAAQ,EAAE,KAAK,cAAcA,EAAE,KAAK,EAAE,KAAK,SAAQ,CAAE,CAAC,CAAE,CAAC,UAAUA,EAAE,CAAC,OAAO,KAAK,cAAcA,EAAE,UAAU,EAAEA,EAAE,UAAU,CAAC,CAAC,CAACk9G,GAAG,CAACtc,EAAE,EAAE0c,GAAG,UAAU,YAAY,IAAI,EAAE/a,GAAG,IAAI,aAAa+a,EAAE,EAAE,MAAMx6F,WAAW+9E,EAAE,CAAC,YAAY7gG,EAAE,CAAC,MAAMA,CAAC,EAAE,KAAK,sBAAsB,CAAA,EAAG,KAAK,cAAc,GAAGA,EAAE,QAAQ,KAAK,WAAW,MAAM,YAAYA,EAAE,UAAU,UAAWA,GAAG,CAAC,IAAI0B,EAAE,EAAE,MAAM3C,EAAE,CAAA,EAAGiB,EAAE,UAAW,SAASA,EAAE,CAAUjB,EAAEiB,EAAE,SAAS,IAAtB,SAA0BjB,EAAEiB,EAAE,SAAS,EAAE0B,EAAEA,GAAG,EAAE,GAAI,KAAK,WAAW,OAAO,CAAC,EAAEA,EAAE,CAAC,EAAE,KAAK,sBAAsB1B,EAAE,KAAK,EAAEjB,EAAE,KAAK,cAAciB,EAAE,KAAK,EAAE,KAAK,SAAQ,CAAE,CAAG,CAAA,CAAC,UAAUA,EAAE,CAAC,MAAM0B,EAAE,KAAK,sBAAsB1B,EAAE,UAAU,EAAE,OAAO,KAAK,cAAcA,EAAE,UAAU,EAAE0B,EAAE1B,EAAE,SAAS,CAAC,CAAC,CAAC,CAACk9G,GAAG,CAACtc,EAAE,EAAE99E,GAAG,UAAU,YAAY,IAAI,EAAEy/E,GAAG,IAAI,YAAYz/E,EAAE,EAAE,MAAMy6F,WAAW1c,EAAE,CAAC,YAAY7gG,EAAE,CAAC,MAAMA,CAAC,EAAE,KAAK,SAAS,CAAE,EAAC,KAAK,SAAS,CAAA,EAAGA,EAAE,QAAQ,KAAK,WAAW,MAAM,UAAU,KAAK,UAAU,KAAK,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,KAAK,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM0B,EAAE1B,EAAE,UAAU,WAAW0B,IAAI,KAAK,SAASA,EAAE,SAAS,KAAK,SAASA,EAAE,SAAS,CAAC,UAAU1B,EAAE,CAAC,IAAI0B,EAAE1B,EAAE,MAAM,GAAGA,EAAE,UAAU0B,GAAG,IAAI1B,EAAE,SAASA,EAAE,YAAY0B,GAAG,IAAI1B,EAAE,WAAW0B,GAAG,IAAI1B,EAAE,WAAW,MAAM,EAAE,KAAK,SAAS0B,CAAC,EAAE,GAAY,IAAT,OAAW,OAAO,KAAK,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,SAASA,CAAC,EAAE,OAAgB,IAAT,OAAW,KAAK,UAAU,CAAC,EAAE,OAAO,CAAC,CAACw7G,GAAG,CAACtc,EAAE,EAAE2c,GAAG,UAAU,YAAY,IAAI,EAAEhb,GAAG,IAAI,aAAagb,EAAE,EAAE,MAAMC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,KAAK,IAAI,KAAK,GAAG,KAAK,IAAI,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,CAAC,EAAE,MAAMC,WAAW5c,EAAE,CAAC,YAAY7gG,EAAE,CAAC,MAAMA,CAAC,EAAE,KAAK,MAAM,IAAI0B,EAAE,KAAK,SAAS,CAAA,EAAG1B,EAAE,QAAQ,KAAK,WAAW,MAAM,OAAOA,EAAE,SAAS,KAAK,WAAW,OAAO,CAAC,IAAI,EAAE,GAAG,KAAK,MAAM,KAAK,SAAU,EAAC,KAAK,QAAQ,IAAI,aAAaA,EAAE,UAAU,SAAS,EAAE,MAAMjB,EAAE,CAAA,EAAGiB,EAAE,UAAU,SAAUA,GAAG,CAAC,IAAIuF,EAAE,GAAG,KAAK,QAAQvF,EAAE,KAAK,IAAWuF,EAAEvF,GAAG,gBAAb,KAA2BuF,EAAE,cAAcA,EAAE,cAAci4G,GAAGj4G,EAAE,OAAO,GAAGi4G,GAAGj4G,EAAE,OAAO,EAAEA,EAAE,QAAQ,GAAGi4G,GAAG,SAASj4G,EAAE,QAAQ,IAAI,GAAGvF,EAAE,UAAgBA,EAAE,WAAR,IAAiB,CAA0B,GAAtBA,EAAE,WAAW,GAAYA,EAAE,mBAAmB,CAAC,EAAE,OAAO,MAAMuF,EAAE,SAASvF,EAAEjB,EAAE,IAAI2C,EAAE,CAAC,IAAI6D,EAAE,GAAG9D,EAAE,GAAGhC,EAAE,GAAG,OAAOV,EAAE,IAAI,EAAEiB,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,CAAC,EAAEA,EAAE,eAAgB,SAASA,EAAE,CAAC,GAAG,CAACuF,EAAE,OAAYvF,EAAE,WAAR,KAAkBjB,EAAE,IAAIiB,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,EAAE,KAAKuF,EAAE,KAAK,KAAK9D,GAAUzB,EAAE,WAAT,KAAkBP,GAASO,EAAE,WAAR,MAAmBP,EAAE,GAAGV,EAAE,IAAIiB,CAAC,IAAIjB,EAAE,IAAIiB,CAAC,EAAEyB,EAAE,IAAI,GAAI8D,EAAExG,EAAE0C,GAAGhC,GAAGV,EAAE,UAAW,EAACA,EAAE,eAAe,IAAI,EAAEA,EAAE,IAAIiB,CAAC,EAAEjB,GAAG,MAAM,EAAEiB,CAAC,EAAWuF,IAAT,SAAaxG,EAAE,KAAKwG,CAAC,EAAE,KAAK,SAAS,KAAK,IAAIvF,EAAE,SAAS,EAAE,CAAC,CAAC,EAAG,MAAMuF,EAAEvF,EAAE,UAAU,eAAc,EAAGuF,EAAE,eAAe,IAAI,EAAE,KAAK,OAAO,SAASvF,EAAE,CAAC,MAAM0B,EAAE1B,EAAE,OAAOjB,EAAE,IAAI,aAAa2C,CAAC,EAAE6D,EAAE,IAAI,aAAa7D,CAAC,EAAED,EAAE,IAAI,aAAaC,CAAC,EAAE,QAAQA,EAAE,EAAEA,EAAE1B,EAAE,OAAO0B,IAAI,CAAC,MAAMjC,EAAEO,EAAE0B,CAAC,EAAE3C,EAAE2C,CAAC,EAAEjC,EAAE,EAAE8F,EAAE7D,CAAC,EAAEjC,EAAE,EAAEgC,EAAEC,CAAC,EAAEjC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAEV,EAAE,EAAEwG,EAAE,EAAE9D,EAAE,MAAMC,CAAC,CAAC,EAAE3C,CAAC,EAAE,KAAK,MAAM,IAAI4tG,GAAG,KAAK,OAAOpnG,CAAC,EAAE,KAAK,KAAK,IAAIonG,GAAG3sG,EAAE,UAAU,UAAUuF,CAAC,CAAC,CAAC,cAAcvF,EAAE,CAAC,MAAM0B,EAAE,KAAK,QAAQ,EAAE,KAAK,SAAS,IAAI,EAAE,EAAE,OAAO,KAAK,KAAK,WAAW1B,EAAE,EAAEA,EAAE,EAAEA,EAAE,EAAE,GAAI,CAACA,EAAEjB,IAAI,CAAC,MAAM0C,EAAEC,EAAE1B,CAAC,EAAMyB,IAAJ,IAAQ,GAAGA,EAAE1C,EAAE,CAAC,EAAG,KAAK,MAAM,WAAWiB,EAAE,EAAEA,EAAE,EAAEA,EAAE,EAAE,GAAI,CAACA,EAAE0B,IAAI,CAAC,MAAMD,EAAE,EAAEzB,CAAC,EAAMyB,IAAJ,IAAQ,GAAGA,EAAEC,EAAE,CAAC,EAAG,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,CAACw7G,GAAG,CAACtc,EAAE,EAAE6c,GAAG,UAAU,gBAAgB,IAAI,EAAElb,GAAG,IAAI,gBAAgBkb,EAAE,EAAE,MAAMC,GAAG,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,IAAI,SAAS,GAAG,SAAS,IAAI,SAAS,GAAG,SAAS,IAAI,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAMC,WAAW9c,EAAE,CAAC,YAAY7gG,EAAE,CAACA,EAAE,MAAM8+F,EAAG9+F,EAAE,MAAM09G,GAAG,CAAC,EAAE,MAAM19G,CAAC,CAAC,CAAC,UAAUA,EAAE,CAAC,MAAM0B,EAAE1B,EAAE,QAAQ,OAAY0B,IAAN,IAAQ,KAAK,WAAW,MAAMg8G,GAAGh8G,CAAC,GAAG,QAAQ,CAAC,CAACw7G,GAAG,CAACtc,EAAE,EAAE+c,GAAG,UAAU,YAAY,IAAI,EAAEpb,GAAG,IAAI,UAAUob,EAAE,EAAE,MAAMC,WAAW/c,EAAE,CAAC,YAAY7gG,EAAE,CAAC,MAAMA,CAAC,EAAEA,EAAE,QAAQ,KAAK,WAAW,MAAM,YAAYA,EAAE,SAAS,KAAK,WAAW,OAAO,CAAC,EAAEA,EAAE,UAAU,WAAW,OAAO,CAAC,GAAG,KAAK,iBAAiB,KAAK,SAAQ,CAAE,CAAC,UAAUA,EAAE,CAAC,OAAO,KAAK,iBAAiBA,EAAE,WAAW,CAAC,CAAC,CAACk9G,GAAG,CAACtc,EAAE,EAAEgd,GAAG,UAAU,YAAY,IAAI,EAAErb,GAAG,IAAI,cAAcqb,EAAE,EAAE,MAAMC,WAAWhd,EAAE,CAAC,UAAU7gG,EAAE,CAAC,MAAM0B,EAAE1B,EAAE,OAAO,OAAO0B,EAAEA,EAAE,WAAW,OAAM,CAAE,IAAK,GAAE,MAAO,SAAQ,IAAK,GAAE,MAAO,UAAS,IAAK,GAAE,MAAO,UAAS,IAAK,GAAE,MAAO,SAAQ,QAAQ,MAAO,SAAQ,CAAC,CAAC,CAACw7G,GAAG,CAACtc,EAAE,EAAEid,GAAG,UAAU,YAAY,IAAI,EAAEtb,GAAG,IAAI,aAAasb,EAAE,EAAE,MAAMC,WAAWjd,EAAE,CAAC,YAAY7gG,EAAE,CAAC,MAAMA,CAAC,EAAE,KAAK,YAAY,CAAA,EAAG,KAAK,QAAQ,CAAE,EAAC,MAAM0B,EAAE1B,EAAE,UAAU,WAAW0B,IAAI,KAAK,YAAYA,EAAE,YAAY,KAAK,QAAQA,EAAE,QAAQ,CAAC,UAAU1B,EAAE,CAAC,IAAI0B,EAAE,EAAE1B,EAAE,MAAM,GAAGA,EAAE,UAAU,GAAG,IAAIA,EAAE,SAASA,EAAE,YAAY,GAAG,IAAIA,EAAE,WAAW,GAAG,IAAIA,EAAE,WAAW,MAAM,EAAE,KAAK,YAAY,CAAC,EAAc,IAAT,QAAqC,EAAjB,EAAEA,EAAE,QAAQ,GAAG,EAAM0B,EAAE,WAAW,GAAG,WAAW,GAAG,GAAG,EAAE,cAAc,GAAG,EAAE,aAAa,GAAG,GAAG,YAAY,IAAQA,EAAE,KAAK,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,OAAWA,IAAJ,EAAM,QAAYA,IAAJ,EAAM,SAAaA,IAAJ,EAAM,SAASA,GAAG,EAAE,SAAS,OAAO,CAAC,CAACw7G,GAAG,CAACtc,EAAE,EAAEkd,GAAG,UAAU,YAAY,IAAI,EAAEvb,GAAG,IAAI,aAAaub,EAAE,EAAE,MAAMC,WAAWld,EAAE,CAAC,YAAY7gG,EAAE,CAAC,MAAMA,CAAC,EAAE,KAAK,MAAM,GAAGA,EAAE,QAAQ,KAAK,WAAW,MAAM,UAAU,UAAUA,KAAKkuG,GAAG,KAAK,MAAMluG,CAAC,EAAEkuG,GAAGluG,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,6BAA6BmuG,GAAG,CAAC,EAAE,CAACnuG,EAAE,OAAO,CAAC,IAAIA,EAAE,IAAI0B,EAAE,KAAK,UAAU3C,KAAK,KAAK,MAAM,CAAC,MAAMwG,EAAE,KAAK,MAAMxG,CAAC,EAAEiB,EAAE,KAAK,IAAIA,EAAEuF,CAAC,EAAE7D,EAAE,KAAK,IAAIA,EAAE6D,CAAC,CAAC,CAAC,KAAK,WAAW,OAAO,CAACvF,EAAE,EAAE0B,CAAC,CAAC,CAAC,KAAK,QAAQ,KAAK,SAAU,CAAA,CAAC,UAAU1B,EAAE,CAAC,OAAO,KAAK,QAAQ,KAAK,MAAMA,EAAE,OAAO,GAAG,KAAK,4BAA4B,CAAC,CAAC,CAACk9G,GAAG,CAACtc,EAAE,EAAEmd,GAAG,UAAU,YAAY,IAAI,EAAExb,GAAG,IAAI,iBAAiBwb,EAAE,EAAE,MAAMC,WAAWnd,EAAE,CAAC,YAAY7gG,EAAE,CAAC,MAAMA,CAAC,EAAEA,EAAE,QAAQ,KAAK,WAAW,MAAM,WAAWA,EAAE,SAAS,KAAK,WAAW,OAAO,CAAC,EAAEA,EAAE,UAAU,WAAW,KAAK,GAAG,KAAK,gBAAgB,KAAK,SAAQ,CAAE,CAAC,UAAUA,EAAE,CAAC,OAAO,KAAK,gBAAgBA,EAAE,UAAU,CAAC,CAAC,CAACk9G,GAAG,CAACtc,EAAE,EAAEod,GAAG,UAAU,YAAY,IAAI,EAAEzb,GAAG,IAAI,aAAayb,EAAE,EAAE,MAAMC,WAAWpd,EAAE,CAAC,UAAU7gG,EAAE,CAAC,OAAOA,EAAE,YAAY,aAAc,CAAA,IAAK,GAAE,MAAO,SAAQ,IAAK,GAAE,MAAO,UAAS,IAAK,GAAE,MAAO,UAAS,IAAK,GAAE,MAAO,UAAS,IAAK,GAAE,MAAO,UAAS,IAAK,GAAE,MAAO,SAAQ,QAAQ,MAAO,SAAQ,CAAC,CAAC,CAACk9G,GAAG,CAACtc,EAAE,EAAEqd,GAAG,UAAU,YAAY,IAAI,EAAE1b,GAAG,IAAI,eAAe0b,EAAE,EAAE,MAAMC,WAAWrd,EAAE,CAAC,YAAY7gG,EAAE,CAAC,MAAMA,CAAC,EAAEA,EAAE,QAAQ,KAAK,WAAW,MAAM,QAAQA,EAAE,SAAS,KAAK,WAAW,OAAO,CAAC,EAAE,CAAC,GAAG,KAAK,eAAe,KAAK,SAAU,CAAA,CAAC,UAAUA,EAAE,CAAC,OAAO,KAAK,eAAeA,EAAE,SAAS,CAAC,CAAC,CAACk9G,GAAG,CAACtc,EAAE,EAAEsd,GAAG,UAAU,YAAY,IAAI,EAAE3b,GAAG,IAAI,YAAY2b,EAAE,EAAE,MAAMC,WAAWtd,EAAE,CAAC,YAAY7gG,EAAE,CAAC,MAAMA,CAAC,EAAEA,EAAE,QAAQ,KAAK,WAAW,MAAM,OAAOA,EAAE,SAAS,KAAK,WAAW,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,mBAAmB,KAAK,SAAQ,CAAE,CAAC,UAAUA,EAAE,CAAC,OAAO,KAAK,mBAAmBA,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS20E,IAAI,CAAC,MAAO,UAAS,KAAK,OAAQ,CAAA,CAACuoC,GAAG,CAACtc,EAAE,EAAEud,GAAG,UAAU,YAAY,IAAI,EAAE5b,GAAG,IAAI,gBAAgB4b,EAAE,EAAE,MAAM,WAAWtd,EAAE,CAAC,WAAW,CAAC,OAAOlsB,GAAE,CAAE,CAAC,aAAa,CAAC,OAAOA,GAAE,CAAE,CAAC,eAAe,CAAC,OAAOA,GAAI,CAAA,CAAC,CAACuoC,GAAG,CAACtc,EAAE,EAAE,GAAG,UAAU,YAAY,IAAI,EAAEsc,GAAG,CAACtc,EAAE,EAAE,GAAG,UAAU,cAAc,IAAI,EAAEsc,GAAG,CAACtc,EAAE,EAAE,GAAG,UAAU,gBAAgB,IAAI,EAAE2B,GAAG,IAAI,SAAS,EAAE,EAAE,MAAM6b,WAAWvd,EAAE,CAAC,YAAY7gG,EAAE,CAAC,MAAMA,CAAC,EAAE,KAAK,QAAQ,CAAE,EAACA,EAAE,QAAQ,KAAK,WAAW,MAAM,UAAU,KAAK,SAAS,KAAK,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM0B,EAAE1B,EAAE,UAAU,WAAW0B,IAAI,KAAK,QAAQA,EAAE,QAAQ,CAAC,UAAU1B,EAAE,CAAC,IAAI0B,EAAE,IAAI1B,EAAE,OAAO,IAAIA,EAAE,KAAK,GAAGA,EAAE,YAAY0B,GAAG,IAAI1B,EAAE,WAAW,MAAM,EAAE,KAAK,QAAQ0B,CAAC,EAAE,OAAgB,IAAT,OAAW,KAAK,SAAS,CAAC,EAAE,OAAO,CAAC,CAACw7G,GAAG,CAACtc,EAAE,EAAEwd,GAAG,UAAU,YAAY,IAAI,EAAE7b,GAAG,IAAI,kBAAkB6b,EAAE,EAAE,MAAMlkB,WAAW2G,EAAE,CAAC,YAAY7gG,EAAE,CAAC,MAAMA,CAAC,EAAE,KAAK,cAAc,CAAE,EAACA,EAAE,QAAQ,KAAK,WAAW,MAAM,UAAU,KAAK,WAAW,QAAQ8+F,EAAG9+F,EAAE,QAAQ,EAAE,GAAGA,EAAE,UAAU,UAAWA,GAAG,CAAC,KAAK,WAAW,OAAO,CAACA,EAAE,cAAcA,EAAE,UAAU,EAAE,KAAK,cAAcA,EAAE,KAAK,EAAE,KAAK,UAAU,CAAC,CAAE,CAAC,UAAUA,EAAE,CAAC,OAAO,KAAK,cAAcA,EAAE,UAAU,EAAEA,EAAE,YAAY,CAAC,CAAC,CAACk9G,GAAG,CAACtc,EAAE,EAAE1G,GAAG,UAAU,YAAY,IAAI,EAAEqI,GAAG,IAAI,eAAerI,EAAE,EAAE,MAAMmkB,GAAG,CAAC,IAAI,QAAQ,IAAI,IAAI,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,IAAI,MAAM,IAAI,QAAQ,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,IAAI,QAAQ,IAAI,SAAS,IAAI,SAAS,IAAI,QAAQ,IAAI,QAAQ,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,EAAE,MAAMC,WAAWzd,EAAE,CAAC,UAAU7gG,EAAE,CAAC,OAAOq+G,GAAGr+G,EAAE,OAAO,GAAG,QAAQ,CAAC,CAACk9G,GAAG,CAACtc,EAAE,EAAE0d,GAAG,UAAU,YAAY,IAAI,EAAE/b,GAAG,IAAI,UAAU+b,EAAE,EAAE,MAAMC,GAAG,SAASrqB,GAAG,SAASsqB,GAAG,QAAQC,GAAG,SAASvgB,GAAG,QAAQwgB,GAAG,SAASC,GAAG,SAASC,GAAG,SAASC,GAAG,SAAS,MAAMC,WAAWje,EAAE,CAAC,YAAY7gG,EAAE,CAAC,MAAMA,CAAC,EAAE,KAAK,aAAaA,EAAE,UAAU,gBAAiB,CAAA,CAAC,UAAUA,EAAE,CAAC,MAAM0B,EAAE1B,EAAE,OAAO,EAAE,KAAK,aAAa,OAAY0B,IAAN,IAAQ68G,GAAS78G,IAAN,IAAQwyF,GAASxyF,IAAN,IAAQ88G,GAAS98G,IAAN,KAAeA,IAAN,IAAQ+8G,GAAS/8G,IAAN,IAAQw8F,IAAI,EAAE,MAAMl+F,EAAE,aAAa,EAAE,MAAO,EAAC2+G,GAAG,EAAE,MAAO,EAACC,GAAG,EAAE,eAAeC,GAAG,EAAE,UAAS,GAAUn9G,IAAN,KAAeA,IAAN,IAAQg9G,GAAG,QAAQ,CAAC,CAACxB,GAAG,CAACtc,EAAE,EAAEke,GAAG,UAAU,YAAY,IAAI,EAAEvc,GAAG,IAAI,SAASuc,EAAE,EAAE,MAAMC,WAAWle,EAAE,CAAC,YAAY7gG,EAAE,CAAC,IAAI0B,EAAE,EAAE,MAAM1B,CAAC,EAAEA,EAAE,QAAQ,KAAK,WAAW,MAAM,OAAO,KAAK,UAAiB0B,EAAE,KAAK,WAAW,QAA1B,MAA0CA,IAAT,OAAW,OAAOA,EAAE,SAAS,KAAK,UAAiB,EAAE,KAAK,WAAW,QAA1B,MAA0C,IAAT,OAAW,OAAO,EAAE,SAAS,KAAK,MAAM,KAAK,SAAS,KAAK,UAAU,CAAC,CAAC,UAAU1B,EAAE,CAAC,IAAI0B,EAAE,MAAM,GAAUA,EAAE,KAAK,YAAf,MAAmCA,IAAT,OAAW,OAAOA,EAAE1B,EAAE,KAAK,EAAE,OAAgB,IAAT,OAAW,KAAK,MAAM,CAAC,EAAE,KAAK,WAAW,KAAK,CAAC,UAAUA,EAAE0B,EAAE,CAAC,IAAI,EAAE,MAAM,GAAU,EAAE,KAAK,YAAf,MAAmC,IAAT,OAAW,OAAO,EAAE1B,EAAE,KAAK,EAAE,OAAgB,IAAT,OAAW,KAAK,MAAM,CAAC,EAAE,KAAK,WAAW,KAAK,UAAU,MAAM0B,EAAE1B,EAAE,WAAWA,EAAE,WAAW,KAAK,UAAU,KAAK,SAAS,GAAG,KAAK,WAAW,KAAK,CAAC,CAACk9G,GAAG,CAACtc,EAAE,EAAEme,GAAG,UAAU,YAAY,IAAI,EAAE7B,GAAG,CAACtc,EAAE,EAAEme,GAAG,UAAU,YAAY,IAAI,EAAExc,GAAG,IAAI,gBAAgBwc,EAAE,EAAE,MAAMC,WAAWne,EAAE,CAAC,WAAW,CAAC,OAAO,KAAK,WAAW,KAAK,CAAC,WAAW,CAAC,OAAO,KAAK,WAAW,KAAK,CAAC,YAAY,CAAC,OAAO,KAAK,WAAW,KAAK,CAAC,aAAa,CAAC,OAAO,KAAK,WAAW,KAAK,CAAC,CAACqc,GAAG,CAACtc,EAAE,EAAEoe,GAAG,UAAU,YAAY,IAAI,EAAE9B,GAAG,CAACtc,EAAE,EAAEoe,GAAG,UAAU,YAAY,IAAI,EAAE9B,GAAG,CAACtc,EAAE,EAAEoe,GAAG,UAAU,aAAa,IAAI,EAAE9B,GAAG,CAACtc,EAAE,EAAEoe,GAAG,UAAU,cAAc,IAAI,EAAEzc,GAAG,IAAI,UAAUyc,EAAE,EAAE,MAAMC,WAAWpe,EAAE,CAAC,YAAY7gG,EAAE,CAAC,MAAMA,CAAC,EAAE,KAAK,WAAW,KAAK,SAAU,CAAA,CAAC,YAAYA,EAAE,CAAC,OAAO,KAAK,WAAW,KAAK,WAAW,OAAO,KAAKA,CAAC,CAAC,CAAC,CAAC,CAACk9G,GAAG,CAACtc,EAAE,EAAEqe,GAAG,UAAU,cAAc,IAAI,EAAE1c,GAAG,IAAI,QAAQ0c,EAAE,EAAE,MAAMC,WAAWre,EAAE,CAAC,YAAY7gG,EAAE,CAAC,MAAMA,CAAC,EAAE,KAAK,IAAI,IAAI0B,EAAE,KAAK,WAAW,KAAK,SAAU,CAAA,CAAC,cAAc1B,EAAE,CAAC,MAAM0B,EAAE,KAAK,WAAW,OAAO,GAAG,CAACA,GAAG,CAACA,EAAE,cAAc,OAAO,KAAK,WAAW,MAAM,MAAM,EAAE,KAAK,IAAI,EAAEA,EAAE,KAAK,EAAEA,EAAE,GAAGjC,EAAEiC,EAAE,GAAGutD,EAAE,EAAExvD,EAAE,EAAE,KAAKO,CAAC,EAAE,EAAE,aAAa0B,EAAE,aAAa,EAAE,MAAMnB,EAAE,KAAK,MAAM,EAAE,CAAC,EAAEE,EAAE,KAAK,MAAM,EAAE,CAAC,EAAEzB,EAAE,KAAK,MAAM,EAAE,CAAC,EAAE6F,GAAG7F,EAAES,EAAEgB,GAAG,EAAEF,EAAEmE,EAAEG,EAAE,EAAEqX,EAAErX,EAAE,EAAEnF,EAAEmF,EAAEoqD,EAAErkD,EAAEsR,EAAE,EAAEvX,EAAEjF,EAAE,EAAEkF,EAAEsX,EAAE+yC,EAAElvD,EAAE6E,EAAE,EAAEpE,EAAE,EAAEqE,CAAC,EAAE3Q,EAAE,EAAEwQ,CAAC,EAAEnD,EAAE,EAAE2a,CAAC,EAAE1a,EAAE,EAAE9B,CAAC,EAAEs1F,EAAE,EAAEpqF,CAAC,EAAE+8F,EAAE,EAAEhjG,CAAC,EAAEijG,EAAE,EAAEhjG,CAAC,EAAEkyF,EAAE,EAAE/2F,CAAC,EAAEsyD,EAAE,EAAE,EAAE9xD,EAAEgzF,EAAE,EAAE,EAAE9yF,EAAEwoB,EAAE,EAAE,EAAEjqB,EAAE6oG,EAAEvH,GAAG9/F,EAAEtM,EAAEm+D,CAAC,EAAEY,EAAEqtC,GAAG9+F,EAAEmmG,EAAEt1C,CAAC,EAAEK,GAAE4tC,GAAG/+F,EAAEyzF,EAAE3iC,CAAC,EAAEq1C,EAAEpH,GAAGsH,EAAE9Q,EAAEzkC,CAAC,EAAEu+C,EAAEtQ,GAAGuH,EAAEn1C,GAAE6gC,CAAC,EAAEsd,GAAEvQ,GAAGrtC,EAAEy0C,EAAEnU,CAAC,EAAEud,GAAExQ,GAAGsQ,EAAEC,GAAE5nF,CAAC,EAAE,OAAO,KAAK,WAAW6nF,EAAC,CAAC,CAAC,CAACoM,GAAG,CAACtc,EAAE,EAAEse,GAAG,UAAU,gBAAgB,IAAI,EAAE3c,GAAG,IAAI,SAAS2c,EAAE,EAAE,MAAMC,WAAWlV,EAAE,CAAC,YAAYjqG,EAAE0B,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,CAAE,EAAC,GAAG,MAAM1B,EAAE0B,EAAE,CAAC,EAAE,KAAK,KAAK,YAAY,KAAK,WAAW,OAAO,OAAO,CAAC,WAAW,CAAC,KAAK,SAAS,QAAQu0G,GAAG,KAAK,EAAE,WAAW,CAAC,KAAK,QAAQ,EAAE,WAAW,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,YAAY,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,SAAS,KAAK,gBAAgB,CAAC,KAAK,QAAQ,CAAC,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,IAAI7T,GAAG,EAAE,IAAI,EAAE,KAAK,SAAS,CAAA,EAAG,KAAK,UAAUpiG,EAAE,KAAK,cAAc,KAAK,UAAU,QAAQ,KAAK,SAAS,EAAEA,EAAE,WAAW,CAAC,MAAM0B,EAAE,CAAC,QAAQ,UAAU,GAAG1B,EAAE,SAAS,KAAK,MAAM,EAAE,OAAO,KAAKA,EAAE,UAAU,EAAE,QAAS,SAASA,EAAE,CAAC0B,EAAE1B,CAAC,EAAEA,CAAC,GAAI,KAAK,WAAW,SAAS,CAAC,KAAK,SAAS,QAAQ0B,EAAE,QAAQ,EAAE,CAAC,MAAM,KAAK,WAAW,SAAS,IAAI,CAAC,IAAI,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK1B,EAAE,CAAC,MAAM0B,EAAE1B,GAAG,CAAA,EAAG0B,EAAE,YAAYo9F,EAAGp9F,EAAE,YAAY,SAAS,EAAE,KAAK,UAAUA,EAAE,OAAOA,CAAC,EAAE,KAAK,WAAWo9F,EAAGp9F,EAAE,WAAW,KAAK,EAAE,KAAK,WAAWo9F,EAAGp9F,EAAE,WAAW,CAAE,CAAA,EAAE,KAAK,WAAWo9F,EAAGp9F,EAAE,WAAW,CAAC,EAAE,KAAK,YAAYo9F,EAAGp9F,EAAE,YAAY,CAAC,EAAE,KAAK,SAASo9F,EAAGp9F,EAAE,SAAS,SAAS,EAAE,KAAK,gBAAgBo9F,EAAGp9F,EAAE,gBAAgB,EAAE,EAAWA,EAAE,UAAX,SAAqBA,EAAE,QAAQ,KAAK,cAAc,MAAM,KAAKA,CAAC,EAAE,KAAK,UAAU,QAAQ,cAAc,IAAK,IAAI,CAAC,KAAK,OAAO,CAAC,EAAG,KAAK,MAAK,CAAE,CAAC,UAAU1B,EAAE0B,EAAE,CAAC,MAAM,EAAE,OAAO,KAAKs0G,EAAE,EAAE,OAAgB,OAAOh2G,GAAjB,UAAoB,EAAE,SAASA,EAAE,YAAa,CAAA,EAAE0B,EAAE,WAAW1B,EAAWA,IAAT,SAAa0B,EAAE,WAAW,OAAOA,EAAE,WAAW1B,GAAG,IAAI,CAAC,aAAa,CAAC,MAAMA,EAAc,KAAK,WAAjB,UAA0B,KAAK,gBAAgB,KAAK,SAAS,OAAO,KAAK,UAAU,WAAWA,CAAC,CAAC,CAAC,YAAY,CAAC,IAAIA,EAAE,MAAM0B,EAAE,KAAK,cAAc,EAAE,KAAK,YAAW,EAAG,OAAA1B,EAAE,EAAE,EAAE,aAAa0B,CAAC,EAAEA,EAAE,UAAUqhG,KAAK/iG,GAAG,GAAU0B,EAAE,UAAU,MAAMA,EAAE,aAAa,MAAM,IAAI1B,GAAG,IAAIA,EAAE,KAAK,OAAOA,EAAE,IAAI,SAAS,KAAK,CAAC,QAAQ,CAAC,GAAO,KAAK,cAAc,YAAvB,EAAiC,OAAO,GAAG,CAAC,KAAK,cAAc,UAAW,EAAC,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,WAAW,GAAG,MAAMA,EAAE,KAAK,YAAa,EAAC,GAAGA,EAAEA,EAAE,SAAS,QAAS,CAACA,EAAE0B,IAAI,CAAC,MAAM3C,EAAEiB,EAAE,QAAQ,KAAK,aAAa,EAAE,GAAOjB,EAAE,YAAN,EAAgB,OAAO,MAAMwG,EAAE,KAAK,WAAWxG,EAAE2C,CAAC,EAAE6D,IAAIA,EAAE,MAAMxG,EAAEwG,EAAE,aAAavF,EAAE,gBAAe,EAAG,KAAK,SAAS,KAAKuF,CAAC,EAAE,CAAG,MAAK,CAAC,MAAMvF,EAAE,KAAK,WAAW,KAAK,cAAc,CAAC,EAAEA,IAAIA,EAAE,MAAM,KAAK,cAAc,KAAK,SAAS,KAAKA,CAAC,EAAE,CAAC,CAAC,OAAOA,EAAE,CAAC,CAAC,KAAK,MAAM,KAAK,QAAQ,KAAK,WAAW,KAAK,QAAQ,KAAK,SAAS,QAAS0B,GAAG,CAACA,EAAE,WAAW,OAAO,GAAG,KAAK,WAAW1B,EAAE0B,CAAC,CAAC,EAAG,IAAI,EAAE,OAAO,OAAO,KAAK,UAAU,KAAK1B,CAAC,CAAC,CAAC,WAAWA,EAAE0B,EAAE,CAAC,KAAK,MAAK,CAAE,CAAC,gBAAgB,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,GAAG,MAAM,eAAc,CAAE,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB1B,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,WAAW,MAAM,KAAK,YAAY,KAAK,KAAK,WAAW,KAAK,KAAK,UAAU,CAAC,CAAC,cAAcA,EAAE0B,EAAE,CAAC,OAAO,OAAO,OAAO,CAAC,KAAK1B,EAAE,YAAY,KAAK,eAAgB,EAAC,aAAa,KAAK,iBAAiB,EAAE0B,CAAC,CAAC,CAAC,cAAc1B,EAAE0B,EAAE,CAAC,OAAO,OAAO,OAAO,CAAC,KAAK1B,EAAE,YAAY,KAAK,eAAc,EAAG,aAAa,KAAK,gBAAe,CAAE,EAAE0B,CAAC,CAAC,CAAC,cAAc1B,EAAE,CAAC,OAAG,KAAK,cAAc,QAAQ,MAAMA,EAAE,KAAK,EAAU,IAAIi2G,GAAG,KAAK,gBAAe,CAAE,EAAE,WAAWj2G,CAAC,EAAS,CAAC,CAAC,aAAaA,EAAE0B,EAAE,CAAC,OAAO,KAAK,UAAU,UAAU1B,EAAE0B,CAAC,EAAE,IAAI,CAAC,cAAc1B,EAAE0B,EAAE,CAAA,EAAG,EAAE,GAAG,CAAC,MAAM,EAAE1B,GAAG,CAAA,EAAG,OAAO,KAAK,UAAU,EAAE,OAAO,CAAC,EAAW,EAAE,aAAX,QAAgC,EAAE,aAAX,QAAgC,EAAE,aAAX,QAAgC,EAAE,cAAX,SAAyB0B,EAAE,OAAO,GAAGwhG,IAAI,CAAC,KAAK,kBAAkB,EAAE,KAAc,EAAE,kBAAX,QAA4B,EAAE,kBAAkB,KAAK,kBAA8B,KAAK,WAAjB,WAAoC,EAAE,WAAX,QAAiC,EAAE,WAAd,aAA0B,EAAE,IAAI,MAAM,cAAc,EAAExhG,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,OAAO,OAAO,MAAM,cAAe,EAAC,CAAC,KAAK,KAAK,UAAU,KAAK,UAAU,OAAO,OAAO,gBAAgB,KAAK,eAAe,CAAC,CAAC,CAAC,OAAO1B,EAAE,CAAC,MAAM0B,EAAE,KAAK,OAAO,EAAE,KAAK,WAAW,KAAK,SAAS,QAAS,SAAS1B,EAAE,CAACA,EAAE,WAAW,QAAS,SAASuF,EAAE,CAAC,EAAE,KAAKA,CAAC,EAAE7D,EAAE,IAAI6D,EAAEvF,EAAE,YAAY,CAAC,CAAC,CAAE,CAAG,EAAC,KAAK,cAAc,KAAK,OAAO,EAAEA,EAAG,CAAA,CAAC,OAAO,CAAC,KAAK,SAAS,OAAO,EAAE,MAAM,MAAK,CAAE,CAAC,SAAS,CAAC,KAAK,cAAc,QAAO,EAAG,MAAM,QAAO,CAAE,CAAC,CAAC,MAAMo/G,WAAWD,EAAE,CAAC,YAAYn/G,EAAE0B,EAAE,EAAE,CAAC,MAAM1B,EAAE0B,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,WAAW,OAAO,OAAO,CAAC,aAAa,CAAC,KAAK,SAAS,EAAE,UAAU,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,WAAW,CAAC,KAAK,OAAO,EAAE,gBAAgB,CAAC,KAAK,SAAS,QAAQ,CAAC,aAAa,aAAa,UAAU,YAAY,MAAM,OAAO,EAAE,OAAO,YAAY,EAAE,eAAe,CAAC,KAAK,SAAS,QAAQ,CAAC,OAAO,SAAS,OAAO,QAAQ,EAAE,OAAO,WAAW,EAAE,gBAAgB,CAAC,KAAK,SAAS,QAAQ,CAAC,OAAO,SAAS,KAAK,MAAM,EAAE,OAAO,YAAY,EAAE,SAAS,CAAC,KAAK,UAAU,OAAO,KAAK,EAAE,aAAa,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,IAAI,OAAO,SAAS,EAAE,aAAa,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,IAAI,OAAO,SAAS,EAAE,aAAa,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,IAAI,OAAO,SAAS,EAAE,gBAAgB,CAAC,KAAK,SAAS,QAAQ,CAAC,cAAc,cAAc,gBAAgB,gBAAgB,eAAe,eAAe,cAAc,cAAc,gBAAgB,gBAAgB,eAAe,eAAe,WAAW,WAAW,aAAa,aAAa,YAAY,WAAW,EAAE,QAAQ,EAAE,EAAE,YAAY,CAAC,KAAK,UAAU,OAAO,YAAY,EAAE,iBAAiB,CAAC,KAAK,QAAQ,OAAO,aAAa,EAAE,iBAAiB,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,EAAE,OAAO,aAAa,EAAE,gBAAgB,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,qBAAqB,CAAC,KAAK,QAAQ,OAAO,iBAAiB,EAAE,sBAAsB,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,uBAAuB,CAAC,KAAK,QAAQ,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,OAAO,mBAAmB,EAAE,eAAe,CAAC,KAAK,UAAU,OAAO,WAAW,EAAE,YAAY,CAAC,KAAK,QAAQ,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,UAAU,CAAC,KAAK,UAAU,IAAI,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,WAAW,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,KAAK1B,EAAE,CAAC,MAAM0B,EAAE1B,GAAG,CAAE,EAAC,KAAK,aAAa8+F,EAAGp9F,EAAE,aAAa,EAAE,EAAE,KAAK,UAAUo9F,EAAGp9F,EAAE,UAAU,CAAC,EAAE,KAAK,WAAWo9F,EAAGp9F,EAAE,WAAW,QAAQ,EAAE,KAAK,gBAAgBo9F,EAAGp9F,EAAE,gBAAgB,YAAY,EAAE,KAAK,eAAeo9F,EAAGp9F,EAAE,eAAe,QAAQ,EAAE,KAAK,gBAAgBo9F,EAAGp9F,EAAE,gBAAgB,MAAM,EAAE,KAAK,SAASo9F,EAAGp9F,EAAE,SAAoBmhG,KAAX,QAAa,EAAE,KAAK,aAAa/D,EAAGp9F,EAAE,aAAa,CAAC,EAAE,KAAK,aAAao9F,EAAGp9F,EAAE,aAAa,CAAC,EAAE,KAAK,aAAao9F,EAAGp9F,EAAE,aAAa,EAAE,EAAE,KAAK,gBAAgBo9F,EAAGp9F,EAAE,gBAAgB,aAAa,EAAE,KAAK,YAAYo9F,EAAGp9F,EAAE,YAAY,EAAE,EAAE,KAAK,iBAAiBo9F,EAAGp9F,EAAE,iBAAiB,WAAW,EAAE,KAAK,iBAAiBo9F,EAAGp9F,EAAE,iBAAiB,GAAG,EAAE,KAAK,gBAAgBo9F,EAAGp9F,EAAE,gBAAgB,EAAE,EAAE,KAAK,qBAAqBo9F,EAAGp9F,EAAE,qBAAqB,WAAW,EAAE,KAAK,sBAAsBo9F,EAAGp9F,EAAE,sBAAsB,EAAE,EAAE,KAAK,uBAAuBo9F,EAAGp9F,EAAE,uBAAuB,CAAC,EAAE,KAAK,eAAeo9F,EAAGp9F,EAAE,eAAe,EAAE,EAAE,KAAK,YAAYo9F,EAAGp9F,EAAE,YAAY,CAAC,EAAE,KAAK,UAAUo9F,EAAGp9F,EAAE,UAAU,CAAC,EAAE,MAAM,KAAKA,CAAC,CAAC,CAAC,OAAO1B,EAAE,CAACA,EAAE,SAAS,KAAK,MAAK,EAAG,MAAM,OAAOA,CAAC,CAAC,CAAC,WAAWA,EAAE0B,EAAE,CAAC,MAAM,EAAE,CAAA,EAAG,GAAG1B,GAAG,CAACA,EAAE,WAAW,OAAO,OAAO,EAAE,CAAC,KAAK4lG,GAAG,KAAK,EAAE,KAAK,SAAS,CAAC,CAAC,EAAE,CAAC5lG,GAAGA,EAAE,WAAW,CAAC,MAAMA,EAAE,IAAIyB,GAAE,KAAK,UAAU,EAAE,OAAO,OAAO,EAAE,CAAC,MAAMokG,GAAG,KAAK,EAAE7lG,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,WAAW,cAAc,CAAC,CAAC,CAAC,cAAcA,EAAE0B,EAAE,CAAA,EAAG,EAAE,GAAG,CAAC,OAAO1B,GAAGA,EAAE,YAAY0B,EAAE,UAAU,IAAI1B,IAAIA,EAAE,YAAgBA,EAAE,aAAN,KAAoB0B,EAAE,WAAW,GAAG,EAAE,IAAI,MAAM,cAAc1B,EAAE0B,EAAE,CAAC,EAAE1B,GAAYA,EAAE,UAAX,QAAoB,KAAK,WAAW,cAAc,CAAC,QAAQ,CAAC,CAAC,EAAEA,GAAYA,EAAE,eAAX,QAAyB,KAAK,cAAc,KAAK,OAAO,EAAE,IAAI,CAAC,cAAcA,EAAE0B,EAAE,CAAC,OAAO,MAAM,cAAc1B,EAAE,EAAE,EAAE,KAAK,YAAY,KAAK,WAAW,cAAc,KAAK,cAAc,KAAK,OAAO,EAAE0B,GAAG,KAAK,OAAO,cAAe,EAAC,IAAI,CAAC,qBAAqB1B,EAAE,CAAA,EAAG,CAAC,OAAO,MAAM,gBAAgB,OAAO,OAAO,CAAC,WAAW,KAAK,gBAAgB,UAAU,KAAK,eAAe,WAAW,KAAK,gBAAgB,IAAI,KAAK,SAAS,QAAQ,KAAK,aAAa,QAAQ,KAAK,aAAa,QAAQ,KAAK,aAAa,WAAW,KAAK,gBAAgB,WAAW,KAAK,YAAY,YAAY,KAAK,iBAAiB,YAAY,KAAK,iBAAiB,eAAe,KAAK,gBAAgB,gBAAgB,KAAK,qBAAqB,iBAAiB,KAAK,sBAAsB,kBAAkB,KAAK,uBAAuB,UAAU,KAAK,eAAe,eAAe,GAAG,QAAQ,KAAK,YAAY,EAAEA,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAO,EAAC,CAAC,CAAC,SAASq/G,GAAG,EAAE,EAAE,CAAC,MAAMtgH,EAAE,EAAE,aAAY,EAAGwG,EAAE,IAAI68F,GAAG3gG,EAAE,EAAE,OAAO,GAAOA,IAAJ,EAAM,OAAO,IAAI,aAAa,CAAC,EAAE,MAAMhC,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,WAAY,EAAC,EAAE,IAAI,aAAagC,EAAEhC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,QAAS,SAASiC,EAAE,CAAC,IAAID,EAAE,GAAG,QAAQzC,EAAE,EAAEA,EAAES,EAAET,IAAI,CAAC,MAAMS,EAAEiC,EAAE1C,CAAC,EAAE,GAAa,OAAOS,GAAjB,UAAoB,OAAO,UAAUA,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAIA,CAAC,EAAE,CAACgC,EAAE,GAAG,KAAK,CAAC1C,EAAE,MAAMU,CAAC,KAAK,CAAC8F,EAAE,UAAU9F,CAAC,EAAE,MAAMiC,EAAE,EAAE,eAAe6D,CAAC,EAAE,GAAG,CAAC7D,EAAE,OAAO,CAACD,EAAE,GAAG,KAAK,CAAC1C,EAAE,MAAM2C,EAAE,CAAC,CAAC,CAAC,IAAImD,EAAE,EAAE,EAAE7F,EAAE,EAAE6F,GAAG,EAAE9F,EAAE,EAAE,EAAE8F,GAAG,EAAE9F,EAAE,EAAE,EAAE8F,GAAG,EAAE9F,EAAE,CAAC,CAAC0C,IAAI,GAAG,EAAEhC,EAAE,CAAC,EAAG,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS6/G,GAAG,EAAE,EAAEvgH,EAAEwG,EAAE9D,EAAE,CAAC,MAAMhC,EAAE,KAAK,IAAIgC,CAAC,EAAE,EAAE,KAAK,IAAIA,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE1C,EAAE,CAAC,EAAEU,EAAE8F,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAExG,EAAE,CAAC,EAAEU,EAAE8F,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAExG,EAAE,CAAC,EAAEU,EAAE8F,EAAE,CAAC,EAAE,CAAC,CAAC,SAASg6G,GAAG,EAAE,EAAExgH,EAAEwG,EAAE9D,EAAEhC,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,QAAQgC,EAAE,EAAEA,EAAE1C,EAAE0C,IAAI8D,EAAE9D,CAAC,EAAE,EAAEA,EAAE,EAAE,CAAC,EAAE+9G,GAAGj6G,EAAE9D,EAAEhC,EAAE,EAAEV,CAAC,EAAE,QAAQwG,EAAE,EAAEA,EAAExG,EAAEwG,IAAI,EAAEA,EAAE,EAAE,CAAC,EAAE9D,EAAE8D,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAExG,EAAE,IAAI,CAAC,QAAQA,EAAE,EAAEA,EAAE,EAAEA,IAAIwG,EAAExG,CAAC,EAAE,EAAE,EAAE,EAAEA,CAAC,EAAEygH,GAAGj6G,EAAE9D,EAAEhC,EAAE,EAAE,CAAC,EAAE,QAAQV,EAAE,EAAEA,EAAE,EAAEA,IAAI,EAAE,EAAE,EAAEA,CAAC,EAAE,KAAK,KAAK0C,EAAE1C,CAAC,CAAC,CAAC,CAAC,CAAC,SAASygH,GAAG,EAAE,EAAEzgH,EAAEwG,EAAE9D,EAAE,CAAC1C,EAAE,CAAC,EAAE,EAAEwG,EAAE,CAAC,EAAE,OAAO,iBAAiBA,EAAE,CAAC,EAAE,OAAO,iBAAiB,QAAQ7D,EAAE,EAAEjC,EAAE,EAAEiC,EAAED,EAAEC,IAAI,CAAC,IAAID,GAAG,EAAEC,CAAC,EAAEA,EAAEA,GAAG,EAAE3C,EAAEU,CAAC,CAAC,EAAEV,EAAEU,CAAC,EAAEV,EAAEU,CAAC,KAAK,EAAEiC,EAAE,EAAE3C,EAAEU,CAAC,GAAG,KAAKgC,GAAG8D,EAAE9F,CAAC,GAAGA,IAAIgC,GAAG,EAAEC,CAAC,EAAEA,EAAEA,GAAG,EAAE3C,EAAEU,CAAC,CAAC,EAAEV,EAAEU,CAAC,EAAEV,EAAEU,CAAC,KAAK,EAAEiC,EAAE,EAAE3C,EAAEU,CAAC,GAAGA,IAAIV,EAAEU,CAAC,EAAEiC,EAAE6D,EAAE9F,CAAC,EAAEgC,EAAE8D,EAAE9F,EAAE,CAAC,EAAE,OAAO,gBAAgB,CAAC,QAAQA,EAAE,EAAE,EAAE,EAAEA,EAAEgC,EAAEhC,IAAI,CAAC,KAAK8F,EAAE,EAAE,CAAC,EAAE9F,GAAG,IAAI,EAAEA,CAAC,GAAGA,EAAEV,EAAE,CAAC,IAAIU,EAAEV,EAAE,CAAC,GAAG,EAAEA,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC8kG,GAAG,IAAI,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAq/D,EAAEA,GAAG,IAAI,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAA63C,EAAE,MAAM4b,GAAG,CAAA,EAASC,GAAG,CAAC,KAAK,aAAa,KAAK,GAAG,MAAM,SAAS,QAAQ,SAAS,OAAO,SAAS,QAAQ,EAAE,MAAM,KAAK,OAAO,IAAI,EAAE,MAAMC,EAAE,CAAC,YAAY3/G,EAAE,GAAG,CAAC,KAAK,MAAM,EAAE,KAAK,OAAO,GAAG,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,OAAO,IAAI,KAAK,WAAW++F,GAAG/+F,EAAE0/G,EAAE,EAAE,MAAMh+G,EAAE,KAAK,WAAW,KAAK,OAAOA,EAAE,KAAK,EAAE,KAAK,QAAQA,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,WAAWA,EAAE,KAAK,EAAEA,EAAE,QAAQ,KAAK,MAAMA,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,SAASA,EAAE,MAAM,EAAE,EAAE,KAAK,OAAO,SAAS,cAAc,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAMjC,EAAE,KAAK,QAAQ,KAAK,OAAO,WAAW,IAAI,EAAEA,EAAE,KAAK,GAAGiC,EAAE,KAAK,IAAIA,EAAE,OAAO,IAAIA,EAAE,MAAM,IAAIA,EAAE,IAAI,MAAMA,EAAE,IAAI,GAAGjC,EAAE,UAAU,QAAQA,EAAE,UAAU,OAAOA,EAAE,aAAa,SAASA,EAAE,SAAS,QAAQ,KAAK,UAAU,IAAI,aAAa,EAAE,CAAC,EAAE,KAAK,UAAU,IAAI,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,WAAWiC,EAAE,MAAMA,EAAE,OAAO,CAAC,EAAE,KAAK,QAAQ,SAAS,cAAc,QAAQ,EAAE,KAAK,QAAQ,MAAMA,EAAE,MAAM,KAAK,QAAQ,OAAOA,EAAE,OAAO,KAAK,SAAS,KAAK,QAAQ,WAAW,IAAI,EAAE,KAAK,YAAY,KAAK,IAAI,GAA0B,EAAE,QAAQ1B,EAAE,GAAGA,GAAG,IAAI,EAAEA,EAAE,KAAK,IAAI,OAAO,aAAaA,CAAC,CAAC,EAAE,KAAK,IAAI,GAAwB,EAAE,KAAK,IAAI,GAAyB,EAAE,KAAK,QAAQ,IAAIwyG,GAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,MAAM,GAAG,KAAK,QAAQ,YAAY,EAAE,CAAC,IAAIxyG,EAAE,CAAC,MAAM0B,EAAE,KAAK,WAAW,OAAgB,KAAK,OAAO1B,CAAC,IAAtB,SAA0B,KAAK,KAAKA,CAAC,EAAE,KAAK,SAAS,KAAK,SAAS0B,EAAE,QAAQ,KAAK,SAAS,EAAE,KAAK,UAAU,KAAK,UAAU,KAAK,SAAS,KAAK,SAASA,EAAE,QAAQ,QAAQ,KAAK,iBAAiB,EAAE,KAAK,OAAO1B,CAAC,EAAE,CAAC,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,SAAS,UAAU,KAAK,OAAO,EAAE,EAAE,KAAK,SAAS,KAAK,SAAS,KAAK,SAAS,KAAK,SAAS,KAAK,SAAS,KAAK,QAAQ,EAAE,KAAK,UAAU,KAAK,UAAU,KAAK,OAAOA,CAAC,CAAC,CAAC,IAAIA,EAAE,CAAC,OAAO,KAAK,OAAOA,CAAC,GAAG,KAAK,WAAW,CAAC,KAAKA,EAAE,CAAC,MAAM0B,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAEA,EAAE,QAAQ,EAAE,KAAK,QAAQjC,EAAE,KAAK,SAASwvD,EAAE,EAAE1uD,EAAE,EAAEmB,EAAE,QAAQjB,EAAE,EAAE,YAAYT,CAAC,EAAEhB,EAAE,KAAK,IAAIS,EAAE,KAAK,KAAKgB,EAAE,MAAM,EAAEwuD,EAAE,CAAC,CAAC,EAAEpqD,EAAE7F,EAAE,EAAE,EAAE,UAAU,EAAE,EAAEA,EAAE,CAAC,EAAE,EAAE,SAASgB,EAAEivD,EAAE1uD,CAAC,EAAE,MAAMmE,EAAE,EAAE,aAAa,EAAE,EAAE1F,EAAE,CAAC,EAAEkd,EAAExX,EAAE,KAAK,QAAQ1E,EAAE,EAAEA,EAAE6E,EAAE7E,IAAI,CAAC,MAAM0B,EAAEgD,EAAE,KAAK,EAAE1E,EAAE,CAAC,EAAE,IAAI,KAAK,UAAUA,CAAC,EAAM0B,IAAJ,EAAM,EAAMA,IAAJ,EAAM,OAAO,iBAAiB,KAAK,IAAI,KAAK,IAAI,EAAE,GAAGA,CAAC,EAAE,CAAC,EAAE,KAAK,UAAU1B,CAAC,EAAM0B,IAAJ,EAAM,OAAO,iBAAqBA,IAAJ,EAAM,EAAE,KAAK,IAAI,KAAK,IAAI,EAAEA,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC69G,GAAG,KAAK,UAAUvgH,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAEugH,GAAG,KAAK,UAAUvgH,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,QAAQgB,EAAE,EAAEA,EAAE6E,EAAE7E,IAAI,CAAC,MAAM0B,EAAE,KAAK,UAAU1B,CAAC,EAAE,KAAK,UAAUA,CAAC,EAAEkc,EAAE,EAAElc,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE,KAAK,IAAI,IAAI,KAAK,MAAM,IAAI,KAAK0B,EAAE,KAAK,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,aAAagD,EAAE,EAAE,CAAC,EAAE,KAAK,SAAS1F,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM4gH,GAAG,OAAO,OAAO,CAAC,WAAW,aAAa,UAAU,SAAS,WAAW,OAAO,SAAS,GAAG,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAG,WAAW,cAAc,WAAW,GAAG,YAAY,YAAY,YAAY,IAAI,eAAe,GAAG,gBAAgB,YAAY,iBAAiB,GAAG,kBAAkB,EAAE,iBAAiB,GAAG,UAAU,EAAE,EAAEtL,EAAE,EAAEuL,GAAG,OAAO,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,QAAQ,EAAE,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,YAAY,CAAC,QAAQ,EAAE,EAAE,YAAY,CAAC,QAAQ,EAAE,EAAE,gBAAgB,CAAC,QAAQ,EAAE,EAAE,kBAAkB,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,aAAa,EAAE,CAAC,EAAEtL,EAAE,EAAE,SAASuL,GAAG,EAAE,EAAE,CAAC,MAAM/gH,EAAE,EAAE,SAAS,OAAO,EAAE,IAAIwG,EAAE,EAAE,QAAQ7D,EAAE,EAAEA,EAAE3C,EAAE,EAAE2C,EAAE6D,GAAG,EAAE,KAAK7D,CAAC,EAAE,OAAO,OAAO,EAAE,iBAAiB6D,GAAGxG,GAAGwG,CAAC,CAAC,MAAMw6G,WAAWtF,EAAE,CAAC,YAAYz6G,EAAE0B,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,aAAa,EAAEo+G,GAAG9/G,EAAE0B,CAAC,CAAC,EAAE,MAAM,IAAI,aAAa,EAAEo+G,GAAG9/G,EAAE0B,CAAC,CAAC,EAAE,QAAQ,IAAIkwG,EAAE,EAAElwG,CAAC,EAAE,KAAK,eAAem+G,GAAG,KAAK,kBAAkB,GAAG,KAAK,aAAa,GAAG,KAAK,OAAO,GAAG,KAAK,aAAa,eAAe,KAAK,eAAe,eAAe,KAAK,KAAK7/G,EAAE,KAAK,KAAK,cAAcA,EAAE,SAAS,OAAO,EAAE,KAAK,YAAY,CAAC,YAAY,CAAC,MAAM,IAAI,EAAE,QAAQ,CAAC,MAAM,KAAK,WAAW,OAAO,EAAE,QAAQ,CAAC,MAAM,KAAK,WAAW,OAAO,EAAE,QAAQ,CAAC,MAAM,KAAK,WAAW,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC,MAAM,KAAK,WAAW,UAAU,EAAE,YAAY,CAAC,MAAM,IAAIyB,GAAE,KAAK,WAAW,WAAW,CAAC,EAAE,YAAY,CAAC,MAAM,KAAK,WAAW,WAAW,EAAE,gBAAgB,CAAC,MAAM,IAAIA,GAAE,KAAK,WAAW,eAAe,CAAC,EAAE,kBAAkB,CAAC,MAAM,KAAK,WAAW,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,cAAc,CAAC,cAAc,CAAC,KAAK,KAAK,MAAM,IAAI,EAAE,UAAU,CAAC,KAAK,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,KAAK,cAAczB,CAAC,EAAE,KAAK,cAAc,KAAK,aAAa,CAAC,IAAI,mBAAmB,CAAC,OAAO4/G,EAAE,CAAC,cAAc,CAAC,MAAM,aAAY,EAAG,MAAM5/G,EAAE,KAAK,QAAQ0B,EAAE,KAAK,SAASA,EAAE,YAAY,GAAGA,EAAE,WAAW,YAAY,GAAGA,EAAE,OAAO,GAAGA,EAAE,SAAS,YAAY,MAAM1B,EAAE0B,EAAE,YAAY,GAAG,MAAM,EAAE,KAAK,kBAAkB,EAAE,YAAY,GAAG,EAAE,WAAW,YAAY,GAAG,EAAE,OAAO,GAAG,EAAE,SAAS,YAAY,MAAM1B,EAAE,EAAE,YAAY,GAAG,MAAM,EAAE,KAAK,gBAAgB,EAAE,WAAW,YAAY,GAAG,EAAE,OAAO,GAAG,EAAE,SAAS,YAAY,MAAMA,EAAE,EAAE,YAAY,EAAE,CAAC,cAAcA,EAAE,CAAA,EAAG,CAAC,IAAI0B,EAAE,EAAE,EAAE,EAAEjC,EAAEwvD,EAAE,MAAM1uD,EAAE,KAAK,KAAKE,EAAE,KAAK,SAAS,WAAWT,EAAE,WAAW0B,EAAE1B,EAAE,SAAS,EAAES,EAAE,SAAS,MAAMA,EAAE,SAAS,YAAY,IAAIT,EAAE,OAAO,EAAEA,EAAE,KAAKP,EAAEgB,EAAE,UAAU,MAAMA,EAAE,UAAU,YAAY,IAAIT,EAAE,QAAQ,EAAEA,EAAE,MAAMivD,EAAExuD,EAAE,MAAM,MAAMA,EAAE,MAAM,YAAY,IAAI,MAAMzB,EAAE,KAAK,cAAc,IAAI6F,EAAEH,EAAEwX,EAAExc,EAAEkL,EAAEjG,EAAE,EAAE,QAAQ3E,EAAE,EAAEA,EAAEhB,EAAE,EAAEgB,EAAE,IAAI0E,EAAE,EAAE1E,EAAEkc,EAAE3b,EAAEP,CAAC,EAAE4K,EAAEsR,EAAE,OAAO,KAAK,WAAW,iBAAiBtR,GAAG,GAAGlL,EAAE,EAAEA,EAAEkL,EAAE,EAAElL,EAAE,EAAEiF,EAAE,QAAQpE,EAAE,EAAEA,EAAE,EAAEA,IAAIsE,EAAE,EAAEF,EAAE,EAAE,EAAEpE,EAAEmB,IAAI,EAAEmD,CAAC,EAAEnD,EAAEgD,CAAC,EAAE,EAAEG,EAAE,CAAC,EAAEnD,EAAEgD,EAAE,CAAC,EAAE,EAAEG,EAAE,CAAC,EAAEnD,EAAEgD,EAAE,CAAC,GAAG,IAAIjF,EAAE,EAAEkF,EAAEpE,CAAC,EAAE,EAAEP,CAAC,GAAG,IAAIivD,EAAEpqD,CAAC,EAAE,EAAEH,CAAC,EAAEuqD,EAAEpqD,EAAE,CAAC,EAAE,EAAEH,EAAE,CAAC,EAAEuqD,EAAEpqD,EAAE,CAAC,EAAE,EAAEH,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,UAAU,SAAS1E,EAAE,CAAC,MAAM0B,EAAE,KAAK,UAAU1B,CAAC,EAAE,OAAgBy/G,GAAG/9G,CAAC,IAAb,SAAiB+9G,GAAG/9G,CAAC,EAAE,IAAIi+G,GAAG3/G,CAAC,GAAGy/G,GAAG/9G,CAAC,CAAC,EAAE,CAAC,KAAK,KAAK,WAAW,WAAW,MAAM,KAAK,WAAW,UAAU,OAAO,KAAK,WAAW,WAAW,KAAK,KAAK,WAAW,QAAQ,CAAC,EAAE,KAAK,QAAQ,KAAK,UAAU,OAAO,CAAC,aAAa,CAAC,MAAM1B,EAAE,KAAK,UAAU0B,EAAE,KAAK,KAAK,EAAE,KAAK,WAAW,WAAW,EAAE1B,EAAE,WAAW,KAAK,WAAW,iBAAiB,GAAG,GAAG,EAAE,KAAK,SAAS,WAAWP,EAAE,EAAE,cAAc,MAAMwvD,EAAE,EAAE,QAAQ,MAAM1uD,EAAE,KAAK,cAAc,IAAIE,EAAEzB,EAAE6F,EAAEH,EAAEwX,EAAExc,EAAEkL,EAAEjG,EAAEC,EAAE,EAAE,QAAQnD,EAAE,EAAEA,EAAElB,EAAE,EAAEkB,EAAE,CAAC,IAAIoD,EAAEnD,EAAED,CAAC,EAAEiD,EAAE,EAAEhF,EAAEmF,EAAE,OAAOqX,EAAE,EAAEA,EAAExc,EAAE,EAAEwc,EAAEzb,EAAET,EAAE,IAAI6E,EAAEqX,CAAC,CAAC,EAAExX,GAAGjE,EAAE,EAAE,EAAET,EAAE,WAAW,QAAQ,IAAI2E,EAAE,EAAE,WAAW,KAAK,EAAE3E,EAAE,WAAW,KAAK,EAAE,WAAW,QAAQ,EAAEA,EAAE,WAAW,IAAI,EAAE4K,EAAE,EAAE,SAAS,OAAO,EAAElG,EAAE,EAAE,SAAS,QAAQ,EAAEA,EAAE,EAAE,EAAEkG,GAAG5K,EAAE,WAAW,QAAQ2E,GAAG3E,EAAE,WAAW,QAAQ,KAAK,WAAW,iBAAiBhB,EAAE,EAAE4F,EAAE,EAAEqqD,EAAEjwD,EAAE,CAAC,EAAE,CAACgB,EAAE,WAAW,EAAE4K,EAAE,EAAEqkD,EAAEjwD,EAAE,CAAC,EAAEgB,EAAE,WAAW2E,EAAE,EAAEsqD,EAAEjwD,EAAE,CAAC,EAAE,CAACgB,EAAE,WAAW,EAAE4K,EAAE,EAAEqkD,EAAEjwD,EAAE,CAAC,EAAE,EAAE2F,EAAE,EAAEsqD,EAAEjwD,EAAE,CAAC,EAAE0F,EAAE1E,EAAE,WAAW,EAAE4K,EAAE,EAAE5K,EAAE,WAAW,QAAQ,EAAEivD,EAAEjwD,EAAE,CAAC,EAAEgB,EAAE,WAAW2E,EAAE,EAAEsqD,EAAEjwD,EAAE,CAAC,EAAE0F,EAAE1E,EAAE,WAAW,EAAE4K,EAAE,EAAE5K,EAAE,WAAW,QAAQ,EAAEivD,EAAEjwD,EAAE,CAAC,EAAE,EAAE2F,EAAE,EAAElF,EAAET,EAAE,CAAC,EAAE,GAAGS,EAAET,EAAE,CAAC,EAAE,GAAGS,EAAET,EAAE,CAAC,EAAE,GAAGS,EAAET,EAAE,CAAC,EAAE,GAAG4F,GAAG,GAAGF,EAAE,EAAEwX,EAAE,EAAEA,EAAExc,EAAE,EAAEwc,EAAE,EAAEtX,EAAE,CAACnE,EAAET,EAAE,IAAI6E,EAAEqX,CAAC,CAAC,EAAEld,EAAE,EAAE4F,EAAE,EAAEqqD,EAAEjwD,EAAE,CAAC,EAAE0F,EAAEkG,EAAEqkD,EAAEjwD,EAAE,CAAC,EAAEyB,EAAE,EAAEkE,EAAEsqD,EAAEjwD,EAAE,CAAC,EAAE0F,EAAEkG,EAAEqkD,EAAEjwD,EAAE,CAAC,EAAE,EAAE2F,EAAEsqD,EAAEjwD,EAAE,CAAC,EAAE0F,EAAEjE,EAAE,EAAEmK,EAAEqkD,EAAEjwD,EAAE,CAAC,EAAEyB,EAAE,EAAEkE,EAAEsqD,EAAEjwD,EAAE,CAAC,EAAE0F,EAAEjE,EAAE,EAAEmK,EAAEqkD,EAAEjwD,EAAE,CAAC,EAAE,EAAE2F,EAAE,MAAMjD,EAAE1B,EAAE,WAAW,MAAMjB,EAAEiB,EAAE,WAAW,OAAOuF,EAAE,CAAC9E,EAAE,EAAEiB,EAAEjB,EAAE,EAAE1B,EAAE0B,EAAE,EAAEiB,GAAGjB,EAAE,EAAEA,EAAE,GAAG1B,GAAG0B,EAAE,EAAEA,EAAE,GAAGiB,EAAEjB,EAAE,EAAE1B,GAAG0B,EAAE,EAAEA,EAAE,GAAGiB,GAAGjB,EAAE,EAAEA,EAAE,GAAG1B,CAAC,EAAEU,EAAE,IAAI8F,EAAEvG,CAAC,EAAE0F,GAAGjE,EAAE,EAAE,EAAET,EAAE,WAAW,OAAO,CAAC,CAAC,EAAE,cAAc,YAAY,GAAG,EAAE,QAAQ,YAAY,EAAE,CAAC,WAAWA,EAAE,CAAC,MAAM0B,EAAE,MAAM,WAAW1B,CAAC,EAAE,OAAO,KAAK,WAAW,YAAY0B,EAAE,WAAW,GAAGA,CAAC,CAAC,YAAY1B,EAAE,CAAC,CAACA,GAAYA,EAAE,aAAX,QAAgCA,EAAE,YAAX,QAA+BA,EAAE,aAAX,QAAgCA,EAAE,WAAX,SAAsB,KAAK,YAAW,EAAG,KAAK,YAAW,EAAG,KAAK,QAAQ,YAAY,GAAGA,EAAE,YAAY,KAAK,SAAS,MAAM,YAAYA,CAAC,CAAC,CAAC,CAACgkG,GAAG,IAAI,OAAO+b,EAAE,EAAElc,GAAG,IAAI,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAwhE,EAAEA,GAAG,IAAI,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAA4+B,EAAE,MAAMmc,GAAG,OAAO,OAAO,CAAC,UAAU,CAAC,EAAE1L,EAAE,EAAE2L,GAAG,OAAO,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE1L,EAAE,EAAE,MAAM2L,WAAWzF,EAAE,CAAC,YAAY,EAAEl1G,EAAE,CAAE,EAAC,CAAC,MAAM,EAAEA,CAAC,EAAE,KAAK,eAAe06G,GAAG,KAAK,aAAa,gBAAgB,KAAK,eAAe,gBAAgB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,KAAK,YAAY,CAAC,UAAU,CAAC,MAAM,KAAK,WAAW,SAAS,EAAE,WAAW,CAAC,MAAM,IAAIjgH,EAAC,EAAE,wBAAwB,CAAC,MAAM,IAAIjB,EAAC,CAAC,CAAC,EAAE,KAAK,cAAc,CAAC,UAAU,CAAC,KAAK,KAAK,MAAM,IAAI,EAAE,UAAU,CAAC,KAAK,KAAK,MAAM,IAAI,EAAE,OAAO,CAAC,KAAK,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,KAAK,cAAc,CAAC,EAAE,KAAK,YAAW,CAAE,CAAC,IAAI,mBAAmB,CAAC,OAAOihH,EAAE,CAAC,cAAchgH,EAAE,CAAC,MAAM,cAAcA,CAAC,CAAC,CAAC,CAACgkG,GAAG,IAAI,WAAWkc,EAAE,EAAE,MAAMC,WAAWf,EAAE,CAAC,YAAYp/G,EAAE0B,EAAE,EAAE,CAAC,MAAM1B,EAAE0B,EAAE,CAAC,EAAE,KAAK,KAAK,QAAQ,KAAK,WAAW,OAAO,OAAO,CAAC,WAAW,CAAC,KAAK,SAAS,QAAQ,EAAE,EAAE,cAAc,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,WAAW,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,cAAc,CAAC,KAAK,UAAU,QAAQ,EAAE,CAAC,EAAE,KAAK,UAAU,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK1B,EAAE,CAAC,MAAM0B,EAAE1B,GAAG,CAAA,EAAG0B,EAAE,KAAKo9F,EAAGp9F,EAAE,KAAK,QAAQ,EAAEA,EAAE,QAAQo9F,EAAGp9F,EAAE,QAAQ,EAAE,EAAE,KAAK,WAAWo9F,EAAGp9F,EAAE,WAAW,CAAA,CAAE,EAAE,KAAK,WAAWo9F,EAAGp9F,EAAE,WAAW,EAAE,EAAE,KAAK,cAAco9F,EAAGp9F,EAAE,cAAc,EAAE,EAAE,KAAK,cAAco9F,EAAGp9F,EAAE,cAAc,EAAE,EAAE,MAAM,KAAKA,CAAC,CAAC,CAAC,WAAW1B,EAAE,CAAC,GAAG,CAACA,EAAE,WAAW,CAAC,KAAK,WAAW,OAAO,OAAO,MAAM0B,EAAE,SAAS1B,EAAE0B,EAAE,CAAC,OAAO,SAAS1B,EAAE,CAAC,MAAM0B,EAAE,CAAA,EAAG3C,EAAEiB,EAAE,OAAO,EAAE,QAAQuF,EAAE,EAAEA,EAAExG,EAAEwG,IAAI,CAAC,IAAIxG,EAAE,GAAG,QAAQ2C,EAAE6D,EAAE7D,EAAE6D,EAAE,EAAE7D,GAAG,EAAE1B,EAAE0B,CAAC,IAAI1B,EAAE0B,EAAE,CAAC,GAAG1B,EAAE0B,EAAE,CAAC,IAAI1B,EAAE0B,EAAE,CAAC,GAAG1B,EAAE0B,EAAE,CAAC,IAAI1B,EAAE0B,EAAE,CAAC,IAAI3C,EAAE,IAAIA,GAAG2C,EAAE,KAAK6D,CAAC,CAAC,CAAC,MAAMA,EAAE,IAAI,aAAa,EAAE7D,EAAE,MAAM,EAAE,IAAID,EAAE,EAAE,OAAOC,EAAE,QAAS,SAASA,EAAE,CAACukG,GAAGjmG,EAAEuF,EAAE,EAAE7D,EAAE,EAAED,EAAE,CAAC,EAAEA,GAAG,GAAI8D,CAAC,EAAE85G,GAAGr/G,EAAE0B,CAAC,CAAC,CAAC,EAAE1B,EAAE,KAAK,UAAU,EAAE,EAAE,SAASA,EAAE0B,EAAE,GAAG,CAAC,MAAM3C,EAAE+/F,EAAGp9F,EAAE,UAAU,KAAK,GAAG,EAAE,EAAE6D,EAAEvF,EAAE,OAAO,EAAEyB,EAAE,IAAI,aAAa8D,CAAC,EAAE9F,EAAE,IAAI,aAAa,EAAE8F,CAAC,EAAE0pD,EAAE,IAAI,MAAM1pD,CAAC,EAAEhF,EAAE,IAAI,aAAa,EAAEgF,CAAC,EAAE9E,EAAE,IAAI,aAAa,EAAE8E,CAAC,EAAEvG,EAAE,IAAI,MAAMuG,CAAC,EAAEV,EAAE,IAAI,MAAMU,CAAC,EAAEb,EAAE,IAAI,MAAMa,CAAC,EAAE,IAAI2W,EAAE,EAAE,MAAMxc,EAAE6qG,GAAE,EAAG3/F,EAAE2/F,GAAE,EAAG5lG,EAAE4lG,GAAE,EAAG3lG,EAAE2lG,GAAE,EAAGxqG,EAAEwqG,GAAE,EAAG/pG,EAAE+pG,GAAE,EAAGr2G,EAAEq2G,GAAE,EAAGhpG,EAAEgpG,GAAE,EAAG/oG,EAAE+oG,GAAE,EAAG,QAAQvV,EAAE,EAAEA,EAAEzvF,EAAEyvF,IAAI,CAAC,IAAItzF,EAAE,EAAEszF,EAAE+V,GAAGrrG,EAAEM,EAAE0B,CAAC,EAAEqpG,GAAGngG,EAAE5K,EAAE0B,EAAE,CAAC,EAAEqpG,GAAGpmG,EAAE3E,EAAE0B,EAAE,CAAC,EAAE,IAAI6D,EAAE,EAAEyvF,EAAEgW,GAAGtrG,EAAEa,EAAEgF,CAAC,EAAEylG,GAAGpgG,EAAEnK,EAAE8E,CAAC,EAAEylG,GAAGpgG,EAAErK,EAAEgF,EAAE,CAAC,EAAEylG,GAAGrmG,EAAElE,EAAE8E,EAAE,CAAC,EAAEslG,GAAGjmG,EAAElF,EAAEkL,CAAC,EAAEigG,GAAG9qG,EAAE4E,EAAEiG,CAAC,EAAEygG,GAAGzmG,EAAEA,CAAC,EAAEymG,GAAGtrG,EAAEA,CAAC,EAAE4qG,GAAGnqG,EAAEoE,EAAE7E,CAAC,EAAE,MAAM4nG,GAAEuD,GAAG1qG,CAAC,EAAEonG,GAAEgD,GAAGhmG,EAAE7E,CAAC,EAAE+2F,GAAEr1F,EAAEuzF,CAAC,EAAE,KAAK,MAAM2S,GAAEC,EAAC,EAAE34C,EAAE+lC,CAAC,GAAGwQ,GAAG1O,IAAG,QAAQ,CAAC,EAAE,IAA6BoU,GAAG1qG,CAAC,IAAR,IAAYA,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,GAAGmqG,GAAGz2G,EAAEsM,EAAEoE,CAAC,EAAEymG,GAAGn3G,EAAEA,CAAC,EAAEorH,GAAG/9G,EAAEqJ,EAAEhG,EAAE1Q,EAAE4iG,GAAE,CAAC,EAAEkU,GAAGzpG,EAAE9B,EAAE,EAAEu1F,CAAC,EAAE,MAAM3iC,EAAE,KAAK,KAAKykC,GAAE/3F,CAAC,EAAEw0F,GAAE,IAAI,aAAa,EAAElhC,CAAC,EAAE3tD,EAAEswF,CAAC,EAAEzB,GAAE,MAAMtqE,EAAE,IAAI,aAAa,EAAEopC,CAAC,EAAEw1C,EAAE,IAAI,aAAa,EAAEx1C,CAAC,EAAErzD,EAAEg2F,CAAC,EAAE/rE,EAAEpkB,EAAEmwF,CAAC,EAAE6S,EAAEiD,GAAGtpG,EAAEoJ,EAAEhG,CAAC,EAAE,MAAMquD,EAAE,SAASjzD,GAAE0B,EAAE,CAAC,MAAM3C,GAAE,EAAE2C,EAAE6D,GAAE,EAAE7D,EAAEspG,GAAGpgG,EAAE2oF,GAAEx0F,EAAC,EAAEisG,GAAGxpG,EAAE+xF,GAAEx0F,GAAE,CAAC,EAAEisG,GAAGxpG,EAAEynB,EAAE1jB,EAAC,EAAE+5G,GAAG99G,EAAEoJ,EAAEhG,EAAE1Q,EAAE8L,EAAC,EAAEgrG,GAAGxpG,EAAE+xF,GAAEx0F,GAAE,CAAC,EAAEisG,GAAGxpG,EAAEqmG,EAAEtiG,EAAC,CAAC,EAAE,IAAImtD,EAAE,EAAE,QAAQ1yD,GAAEjB,EAAEiB,GAAE82F,GAAE92F,IAAGjB,EAAEk0D,EAAEjzD,GAAE0yD,CAAC,EAAEA,IAAIO,EAAE6jC,GAAEpkC,CAAC,EAAEx2C,GAAGm2C,CAAC,CAAC,MAAMs1C,EAAE,EAAEzrF,EAAE0rF,EAAE,EAAE1rF,EAAE46E,GAAE,IAAI,aAAa6Q,CAAC,EAAEt1C,EAAE,IAAI,aAAas1C,CAAC,EAAEpU,EAAE,IAAI,aAAaqU,CAAC,EAAE,IAAI3+E,GAAE,EAAE4+E,GAAE,EAAE,QAAQ7nG,EAAE,EAAEA,EAAEuF,EAAEvF,IAAI,CAAC,MAAM0B,EAAE1C,EAAEgB,CAAC,EAAEjB,GAAE8F,EAAE7E,CAAC,EAAEimG,GAAGvkG,EAAEo1F,GAAE,EAAE+Q,GAAEnmG,EAAE,MAAM,EAAEukG,GAAGlnG,GAAEszD,EAAE,EAAEw1C,GAAE9oG,GAAE,MAAM,EAAE8oG,IAAGnmG,EAAE,OAAO,MAAM6D,GAAEb,EAAE1E,CAAC,EAAEimG,GAAG1gG,GAAEguF,EAAE,EAAEtqE,GAAE1jB,GAAE,MAAM,EAAE0jB,IAAG1jB,GAAE,MAAM,CAAC,MAAM,CAAC,cAAc9F,EAAE,UAAUwvD,EAAE,gBAAgB1uD,EAAE,gBAAgBE,EAAE,aAAaq2F,GAAE,aAAazkC,EAAE,eAAekhC,CAAC,CAAC,EAAE7xF,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,cAAc,OAAO,EAAEjC,EAAE,IAAIgC,GAAE,KAAK,UAAU,EAAE,KAAK,WAAW,IAAIs+G,GAAG,CAAC,SAAS,EAAE,cAAc,KAAKna,GAAG,EAAE,KAAK,SAAS,EAAE,MAAMC,GAAG,EAAEpmG,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,qBAAsB,CAAA,EAAE,MAAM,EAAE,IAAIgC,GAAE,KAAK,UAAU,EAAE,OAAO,KAAK,aAAa,IAAIy+G,GAAGrU,GAAG,CAAC,UAAU,EAAE,gBAAgB,UAAU,EAAE,gBAAgB,MAAMhG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,OAAOA,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,gBAAgB,CAAC,UAAU,KAAK,UAAU,QAAQ,KAAK,cAAc,QAAQ,KAAK,WAAW,CAAC,CAAC,EAAE,KAAK,UAAU,EAAE,aAAa,OAAO,EAAE,KAAK,UAAU,IAAIqa,GAAGrU,GAAG,CAAC,UAAU,EAAE,aAAa,UAAU,EAAE,aAAa,MAAMhG,GAAG,KAAK,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,OAAOA,GAAG,KAAK,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,gBAAgB,CAAC,UAAU,KAAK,UAAU,QAAQ,KAAK,WAAW,QAAQ,KAAK,WAAW,CAAC,CAAC,EAAE,KAAK,aAAa,EAAE,eAAe,OAAO,EAAE,KAAK,aAAa,IAAI4O,GAAG,CAAC,SAAS,EAAE,eAAe,MAAM5O,GAAG,KAAK,aAAa,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,gBAAgB,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,WAAW,KAAK,aAAa,KAAK,UAAU,KAAK,YAAY,CAAC,CAAC,CAAC,WAAW7lG,EAAE0B,EAAE,CAAC,MAAM,WAAW1B,EAAE0B,CAAC,EAAE,MAAM,EAAE,CAAE,EAAC,EAAE,GAAGjC,EAAE,CAAA,EAAG,GAAGO,EAAE,MAAM,CAAC,MAAMA,EAAE,IAAIyB,GAAE,KAAK,UAAU,EAAE,OAAO,OAAO,EAAE,CAAC,MAAMokG,GAAG,EAAE,KAAK,EAAE7lG,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,EAAE,OAAO6lG,GAAG,EAAE,KAAK,EAAE7lG,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,OAAO,EAAE,CAAC,MAAM6lG,GAAG,KAAK,UAAU7lG,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,EAAE,OAAO6lG,GAAG,KAAK,UAAU7lG,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,OAAOP,EAAE,CAAC,MAAMomG,GAAG,KAAK,aAAa7lG,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,aAAa,cAAc,CAAC,EAAE,KAAK,UAAU,cAAc,CAAC,EAAE,KAAK,aAAa,cAAcP,CAAC,CAAC,CAAC,cAAcO,EAAE,CAAC,OAAO,MAAM,cAAcA,EAAE,GAAG,EAAE,EAAE,CAACA,GAAYA,EAAE,gBAAX,QAAmCA,EAAE,aAAX,QAAgCA,EAAE,gBAAX,QAA0B,KAAK,cAAc,KAAK,OAAO,EAAEA,GAAGA,EAAE,cAAc,KAAK,aAAa,cAAc,CAAC,QAAQA,EAAE,WAAW,CAAC,EAAE,KAAK,UAAU,cAAc,CAAC,QAAQA,EAAE,WAAW,CAAC,GAAGA,GAAYA,EAAE,UAAX,SAAqB,KAAK,aAAa,cAAc,CAAC,QAAQ,KAAK,WAAW,CAAC,EAAE,KAAK,UAAU,cAAc,CAAC,QAAQ,KAAK,WAAW,CAAC,GAAGA,GAAGA,EAAE,YAAY,KAAK,aAAa,cAAc,CAAC,UAAUA,EAAE,SAAS,CAAC,EAAE,KAAK,UAAU,cAAc,CAAC,UAAUA,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,cAAcA,EAAE0B,EAAE,CAAC,OAAO,MAAM,cAAc1B,EAAE,EAAE,EAAE,KAAK,cAAc,KAAK,aAAa,cAAc,KAAK,eAAe,KAAK,OAAO,EAAE,KAAK,WAAW,KAAK,UAAU,cAAc,KAAK,YAAY,KAAK,OAAO,EAAE,KAAK,cAAc,KAAK,aAAa,cAAc,KAAK,eAAe,KAAK,OAAO,EAAE0B,GAAG,KAAK,OAAO,cAAa,EAAG,IAAI,CAAC,CAACiiG,GAAG,IAAI,QAAQwc,EAAE,EAAE,MAAMC,GAAG,IAAI1+G,EAAE2+G,GAAG,IAAI3+G,EAAE4+G,GAAG,IAAI5+G,EAAE6+G,GAAG,IAAI7+G,EAAE,EAAE,EAAE,CAAC,EAAE8+G,GAAG,OAAO,OAAO,CAAC,eAAe,EAAE,UAAU,EAAE,EAAElM,EAAE,EAAE,SAASmM,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE3hB,EAAG,EAAE,eAAe,EAAE,EAAEv5F,EAAEu5F,EAAG,EAAE,UAAU,EAAE,EAAEr9F,EAAG,IAAI1C,KAAG,cAAc,KAAK,GAAG,CAAC,EAAEU,EAAE,IAAIgzG,GAAE,EAAE,EAAE,EAAE,EAAE,EAAEltG,CAAC,EAAE,OAAO9F,EAAE,aAAagC,CAAC,EAAEhC,CAAC,CAAC,MAAMihH,WAAWxG,EAAE,CAAC,YAAYl6G,EAAE0B,EAAE,GAAG,CAAC,MAAM,SAAS1B,EAAE0B,EAAE,GAAG,CAAC,MAAM3C,EAAE0hH,GAAG/+G,CAAC,EAAE6D,EAAEvF,EAAE,UAAU,OAAOyB,EAAE1C,EAAE,WAAW,SAAS,MAAM,OAAO,EAAEU,EAAE8F,EAAE,EAAE0pD,EAAE,IAAI,aAAa,EAAExvD,EAAEgC,CAAC,EAAE,OAAOskG,GAAGtmG,EAAEgC,EAAE,EAAEwtD,CAAC,EAAE82C,GAAGtmG,EAAEgC,EAAEhC,EAAEgC,EAAEwtD,CAAC,EAAE,CAAC,SAAS,IAAI,aAAa,EAAE1pD,CAAC,EAAE,MAAM,IAAI,aAAa,EAAEA,CAAC,EAAE,YAAY0pD,EAAE,QAAQjvD,EAAE,OAAO,CAAC,EAAEA,EAAE0B,CAAC,EAAEA,EAAE++G,GAAG/+G,CAAC,CAAC,EAAE,KAAK,cAAc,GAAG,MAAM,EAAE1B,EAAE,UAAU,OAAO,EAAEA,EAAE,OAAO,OAAO,KAAK,SAAS,IAAI,aAAa,CAAC,EAAE,KAAK,UAAU,IAAI,aAAa,EAAE,CAAC,EAAE,KAAK,OAAO,IAAI,aAAa,EAAE,CAAC,EAAE,KAAK,MAAM,IAAI,aAAa,EAAE,CAAC,EAAE,KAAK,IAAI,IAAI,aAAa,EAAE,CAAC,EAAE,KAAK,QAAQ,IAAI,aAAa,EAAE,CAAC,EAAE,KAAK,cAAcA,EAAE,EAAE,CAAC,CAAC,IAAI,mBAAmB,CAAC,OAAOwgH,EAAE,CAAC,uBAAuBxgH,EAAE0B,EAAE,EAAE,CAAC2+G,GAAG,UAAU,KAAK,MAAM,CAAC,EAAEC,GAAG,UAAU,KAAK,IAAI,CAAC,EAAEtgH,EAAE,OAAOqgH,GAAGC,GAAGC,EAAE,EAAE,MAAM,EAAE,KAAK,QAAQ7+G,CAAC,EAAE0+G,GAAG,IAAI,EAAE,EAAEC,GAAG,WAAWC,EAAE,CAAC,EAAEtgH,EAAE,MAAMogH,EAAE,CAAC,CAAC,cAAcpgH,EAAE,CAAE,EAAC0B,EAAE,CAAC,MAAM,EAAE,CAAE,EAAC1B,EAAE,WAAWA,EAAE,YAAY0lG,GAAG1lG,EAAE,UAAUA,EAAE,UAAU,KAAK,QAAQ,EAAE0lG,GAAG1lG,EAAE,UAAU,KAAK,SAAS,KAAK,SAAS,EAAE0lG,GAAG,KAAK,SAAS1lG,EAAE,UAAU,KAAK,UAAUA,EAAE,UAAU,MAAM,EAAE,KAAK,MAAM,IAAIA,EAAE,SAAS,EAAE,KAAK,MAAM,IAAI,KAAK,SAASA,EAAE,UAAU,MAAM,EAAE,KAAK,IAAI,IAAI,KAAK,QAAQ,EAAE,KAAK,IAAI,IAAIA,EAAE,UAAU,KAAK,SAAS,MAAM,EAAE,EAAE,SAAS,KAAK,WAAWA,EAAE,OAAOA,EAAE,SAAS,KAAK,OAAO,IAAIA,EAAE,KAAK,EAAE,KAAK,OAAO,IAAIA,EAAE,OAAOA,EAAE,MAAM,MAAM,EAAE,EAAE,MAAM,KAAK,QAAQA,EAAE,SAAS,KAAK,QAAQ,IAAIA,EAAE,MAAM,EAAE,KAAK,QAAQ,IAAIA,EAAE,OAAOA,EAAE,OAAO,MAAM,EAAE,EAAE,OAAO,KAAK,SAAS,MAAM,cAAc,EAAE0B,CAAC,CAAC,CAAC,CAACmiG,GAAG,IAAI,+BAA+B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAA4qD,EAAEA,GAAG,IAAI,+BAA+B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAsmM,EAAE,MAAM8c,GAAG,IAAI,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,EAAEC,GAAG,IAAI,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,MAAMC,WAAWvG,EAAE,CAAC,YAAYt6G,EAAE0B,EAAE,CAAE,EAAC,CAAC,MAAM,KAAK1B,EAAE0B,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,OAAOi/G,EAAE,CAAC,IAAI,gBAAgB,CAAC,OAAOC,EAAE,CAAC,IAAI,oBAAoB,CAAC,MAAO,GAAE,CAAC,IAAI,aAAa,CAAC,MAAO,EAAC,CAAC,IAAI,iBAAiB,CAAC,MAAO,EAAC,CAAC,CAAC,MAAME,GAAG,OAAO,OAAO,CAAC,UAAU,EAAE,EAAExM,EAAE,EAAEyM,GAAG,OAAO,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,EAAExM,EAAE,EAAE,MAAMyM,WAAWH,EAAE,CAAC,YAAY7gH,EAAE0B,EAAE,CAAE,EAAC,CAAC,MAAM1B,EAAE0B,CAAC,EAAE,KAAK,eAAeq/G,GAAG,KAAK,WAAW,GAAG,KAAK,aAAa,wBAAwB,KAAK,eAAe,wBAAwB,KAAK,YAAY,CAAC,uBAAuB,CAAC,MAAM,IAAIhiH,EAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,cAAc,CAAC,UAAU,CAAC,KAAK,KAAK,MAAM,IAAI,EAAE,UAAU,CAAC,KAAK,KAAK,MAAM,IAAI,EAAE,OAAO,CAAC,KAAK,IAAI,MAAM,IAAI,EAAE,OAAO,CAAC,KAAK,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,KAAK,cAAciB,CAAC,EAAE,KAAK,YAAa,CAAA,CAAC,IAAI,mBAAmB,CAAC,OAAO8gH,EAAE,CAAC,WAAW9gH,EAAE,CAAC,MAAM0B,EAAEm/G,GAAG,UAAU,WAAW,KAAK,KAAK7gH,CAAC,EAAE,OAAO,KAAK,WAAW,YAAY0B,EAAE,IAAI,GAAGA,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,gBAAgB,EAAE,EAAE8+G,GAAGM,EAAE,EAAE,MAAMG,GAAG,KAAK,CAAC,YAAY,EAAE,EAAE,CAAA,EAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC/d,IAAI,GAAG,EAAE,gBAAgB,IAAIwd,GAAG,EAAE,CAAC,EAAE,IAAIM,GAAG,EAAE,CAAC,CAAC,CAAC,EAAEhd,GAAG,IAAI,WAAWid,EAAE,EAAE,MAAMC,WAAW/B,EAAE,CAAC,YAAYn/G,EAAE0B,EAAE,EAAE,CAAC,MAAM1B,EAAE0B,EAAE,CAAC,EAAE,KAAK,KAAK,OAAO,KAAK,WAAW,OAAO,OAAO,CAAC,WAAW,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,aAAa,GAAG,eAAe,GAAG,gBAAgB,GAAG,SAAS,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,QAAQ,CAAC,KAAK,UAAU,QAAQ,EAAE,CAAC,EAAE,KAAK,WAAW,CAAC,SAAS,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK1B,EAAE,CAAC,MAAM0B,EAAE1B,GAAG,CAAA,EAAG0B,EAAE,WAAWo9F,EAAGp9F,EAAE,WAAW,EAAE,EAAEA,EAAE,WAAWo9F,EAAGp9F,EAAE,WAAW,YAAY,EAAEA,EAAE,iBAAiBo9F,EAAGp9F,EAAE,iBAAiB,EAAE,EAAE,KAAK,SAASo9F,EAAGp9F,EAAE,SAAS,EAAE,EAAE,KAAK,QAAQo9F,EAAGp9F,EAAE,QAAQ,EAAE,EAAE,MAAM,KAAKA,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI1B,EAAE,MAAM0B,EAAE,KAAK,YAAW,EAAG,OAAOA,IAAI1B,EAAE0B,EAAE,SAAS,CAAC,EAAE,aAAY,GAAI,KAAK,cAAc,iBAAiB1B,CAAC,CAAC,CAAC,YAAYA,EAAE,CAAC,MAAMjB,EAAE,KAAK,iBAAgB,EAAGwG,EAAE,IAAI9D,GAAE,KAAK,UAAU,EAAE,IAAIhC,EAAE,EAAEwvD,EAAE,EAAE,KAAK,WAAWxvD,GAAG,EAAEwvD,GAAG,GAAG,KAAK,UAAUxvD,GAAG,EAAEwvD,GAAG,IAAI,MAAM1uD,EAAE,IAAI,aAAa,EAAEd,CAAC,EAAEgB,EAAEolG,GAAGpmG,EAAE8F,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,EAAEvG,EAAE4mG,GAAGnmG,EAAE,KAAK,UAAU,EAAEoF,EAAE,IAAI,aAAa,EAAEoqD,CAAC,EAAEvqD,EAAE,IAAI,aAAa,EAAEuqD,CAAC,EAAE,EAAE42C,GAAG52C,EAAE1pD,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,EAAE7F,EAAEkmG,GAAG32C,EAAE,KAAK,UAAU,EAAE,IAAIrkD,EAAE,EAAE,GAAG,KAAK,SAAS,CAAC,MAAM5K,EAAE,SAASA,EAAE0B,EAAE,CAAC1B,EAAE,QAAQO,EAAE,EAAEqK,CAAC,EAAElJ,EAAE,QAAQnB,EAAE,EAAEqK,EAAE,CAAC,EAAE5K,EAAE,QAAQ6E,EAAE+F,CAAC,EAAElJ,EAAE,QAAQgD,EAAEkG,CAAC,EAAEA,GAAG,CAAC,EAAE5K,EAAEjB,EAAE,KAAKA,EAAE,IAAI,EAAEiB,EAAEjB,EAAE,KAAKA,EAAE,IAAI,EAAEiB,EAAEjB,EAAE,KAAKA,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,MAAMwG,EAAE,IAAI7D,EAAE,CAAC,IAAID,EAAE,IAAIhC,EAAE,IAAIwvD,EAAE,IAAIxuD,EAAE,IAAIzB,EAAE,IAAIkd,CAAC,EAAEnd,EAAE,0BAA0BiB,CAAC,EAAE,IAAIN,EAAE,EAAEkL,EAAE,MAAMjG,EAAE,SAAS3E,EAAE0B,EAAED,EAAE,CAAC8D,EAAE,KAAKxG,EAAE,MAAM,EAAE,gBAAgBA,EAAE,SAASiB,CAAC,EAAE,gBAAgBjB,EAAE,SAAS2C,CAAC,EAAE,gBAAgB3C,EAAE,SAAS0C,CAAC,EAAE8D,EAAE,QAAQhF,EAAEb,CAAC,EAAEA,GAAG,CAAC,EAAEiF,EAAElD,EAAEhC,EAAEwvD,CAAC,EAAEtqD,EAAElD,EAAEhC,EAAEyc,CAAC,EAAEvX,EAAElD,EAAEzC,EAAEkd,CAAC,EAAEvX,EAAElD,EAAEzC,EAAEiwD,CAAC,EAAEtqD,EAAElE,EAAEzB,EAAEkd,CAAC,EAAEvX,EAAElE,EAAEzB,EAAEiwD,CAAC,EAAEtqD,EAAElE,EAAEhB,EAAEwvD,CAAC,EAAEtqD,EAAElE,EAAEhB,EAAEyc,CAAC,EAAE,IAAItX,EAAEgG,EAAE,MAAM7K,EAAE,SAASC,EAAE0B,EAAE,CAAC6D,EAAE,UAAUhF,EAAE,EAAEqK,EAAE,EAAE5K,CAAC,EAAE,QAAQ6E,EAAED,CAAC,EAAEW,EAAE,UAAUhF,EAAE,EAAEqK,EAAE,EAAElJ,CAAC,EAAE,QAAQgD,EAAEE,CAAC,EAAEA,GAAG,CAAC,EAAE7E,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM4E,EAAE,IAAI8sG,GAAG1yG,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,SAASwB,EAAE,MAAME,EAAE,OAAOzB,EAAE,QAAQ2F,CAAC,EAAE,KAAK,CAAC,UAAUE,EAAE,UAAUH,EAAE,MAAM,EAAE,OAAO,EAAE,OAAOhF,EAAE,QAAQiF,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM3E,EAAE,KAAK,YAAY,KAAK,aAAa,EAAE,KAAK,aAAa,IAAI26G,GAAG36G,EAAE,OAAO,KAAK,gBAAgB,CAAC,aAAa,KAAK,aAAa,gBAAgB,KAAK,gBAAgB,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,eAAe,IAAIihH,GAAGjhH,EAAE,KAAK,KAAK,gBAAgB,CAAC,UAAU,GAAG,eAAe,KAAK,eAAe,gBAAgB,KAAK,gBAAgB,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,SAAS,KAAK,CAAC,MAAM,KAAK,cAAc,WAAW,CAAC,KAAK,aAAa,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC,WAAWA,EAAE,CAAE,CAAA,WAAWA,EAAE0B,EAAE,CAAC,MAAM,EAAE,KAAK,YAAYA,EAAE,KAAK,EAAE,EAAE,CAAA,EAAG,EAAE,CAAE,EAAC1B,GAAG,CAACA,EAAE,WAAW,OAAO,OAAO,EAAE,CAAC,SAAS,EAAE,OAAO,QAAQ,CAAC,EAAE,OAAO,OAAO,EAAE,CAAC,UAAU,EAAE,KAAK,UAAU,UAAU,EAAE,KAAK,SAAS,CAAC,GAAGA,GAAG,CAACA,EAAE,QAAQ,OAAO,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,MAAM,OAAO,EAAE,KAAK,KAAK,CAAC,GAAGA,GAAG,CAACA,EAAE,SAAS,OAAO,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,MAAM,CAAC,EAAE,OAAO,OAAO,EAAE,CAAC,OAAO,EAAE,KAAK,MAAM,CAAC,GAAG,KAAK,aAAa,cAAc,CAAC,EAAE,KAAK,eAAe,cAAc,CAAC,CAAC,CAAC,CAAC2jG,GAAG,IAAI,OAAOud,EAAE,EAAE,MAAM9tG,WAAW+rG,EAAE,CAAC,YAAYn/G,EAAE0B,EAAE,EAAE,CAAC,MAAM1B,EAAE0B,EAAE,CAAC,EAAE,KAAK,KAAK,aAAa,KAAK,WAAW,OAAO,OAAO,CAAC,aAAa,GAAG,eAAe,GAAG,UAAU,GAAG,gBAAgB,GAAG,YAAY,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC,EAAE,SAAS,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,aAAa,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,aAAa,CAAC,KAAK,SAAS,QAAQ,GAAG,QAAQ,CAAC,IAAI,MAAM,UAAU,YAAY,OAAO,QAAQ,CAAC,EAAE,UAAU,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,YAAY,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,UAAU,CAAC,KAAK,UAAU,IAAI,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,UAAU,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK1B,EAAE,CAAC,IAAI0B,EAAE1B,GAAG,GAAG0B,EAAE,WAAWo9F,EAAGp9F,EAAE,WAAW,MAAM,EAAEA,EAAE,WAAWo9F,EAAGp9F,EAAE,WAAW,GAAG,EAAEA,EAAE,iBAAiBo9F,EAAGp9F,EAAE,iBAAiB,EAAE,EAAE,KAAK,YAAYo9F,EAAGp9F,EAAE,YAAY,CAAC,EAAE,KAAK,SAASo9F,EAAGp9F,EAAE,SAAS,EAAE,EAAE,KAAK,aAAao9F,EAAGp9F,EAAE,aAAa,EAAE,EAAE,KAAK,aAAao9F,EAAGp9F,EAAE,aAAa,KAAK,EAAE,KAAK,YAAYo9F,EAAGp9F,EAAE,YAAY,CAAC,EAAE,KAAK,UAAUo9F,EAAGp9F,EAAE,UAAU,EAAE,EAAE,KAAK,UAAUo9F,EAAGp9F,EAAE,UAAU,CAAC,EAAE,MAAM,KAAKA,CAAC,CAAC,CAAC,cAAc1B,EAAE,CAAC,OAAO,KAAK,YAAY,MAAM,cAAcA,CAAC,CAAC,CAAC,cAAcA,EAAE0B,EAAE,CAAC,IAAI,EAAE,MAAM,cAAc1B,EAAE0B,CAAC,EAAE,OAAO,EAAE,aAAa,OAAO,KAAK,YAAY,CAAC,CAAC,YAAY1B,EAAE0B,EAAE,EAAE,CAAC,OAAO1B,EAAE,YAAY,KAAK,cAAc0B,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc1B,EAAE0B,EAAE,CAAC,OAAOA,EAAE,OAAO,OAAO,CAAC,aAAa,KAAK,aAAa,YAAY,KAAK,YAAY,UAAU,KAAK,SAAS,EAAEA,CAAC,EAAE,MAAM,cAAc1B,EAAE0B,CAAC,CAAC,CAAC,YAAY1B,EAAE0B,EAAE,EAAE,CAAC,OAAO1B,EAAE,YAAY,KAAK,cAAc0B,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW1B,EAAE,CAAC,MAAM0B,EAAE,CAAA,EAAG,GAAG,KAAK,SAAS,KAAK,WAAW,IAAIw+G,GAAG,KAAK,YAAYlgH,EAAE,CAAC,SAAS,GAAG,MAAM,GAAG,QAAQ,EAAE,CAAC,EAAE,KAAK,gBAAgB,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,EAAE0B,EAAE,KAAK,KAAK,UAAU,MAAM,CAAC,MAAM,EAAE,IAAIu/G,GAAG,KAAK,YAAYjhH,CAAC,EAAE,KAAK,gBAAgB,CAAC,UAAU,KAAK,UAAU,eAAe,KAAK,eAAe,gBAAgB,KAAK,gBAAgB,aAAa,EAAE,CAAC,CAAC,EAAE,GAAG0B,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,aAAa,CAAC,MAAM3C,EAAE,IAAI47G,GAAG,KAAK,YAAY36G,CAAC,EAAE,KAAK,gBAAgB,CAAC,aAAa,KAAK,aAAa,gBAAgB,KAAK,gBAAgB,aAAa,EAAE,CAAC,CAAC,EAAE0B,EAAE,KAAK3C,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW2C,CAAC,CAAC,CAAC,WAAW1B,EAAE0B,EAAE,CAAS,KAAK,eAAb,OAA2B1B,GAAGA,EAAE,SAASA,EAAE,SAAS,IAAI,MAAM,EAAE,KAAK,YAAY0B,EAAE,MAAM1B,CAAC,EAAE,GAAG,KAAK,SAAS,CAAC,MAAMuF,EAAE,GAAGvF,GAAG,CAACA,EAAE,UAAU,OAAO,OAAOuF,EAAE,CAAC,UAAU,EAAE,UAAU,UAAU,EAAE,SAAS,CAAC,EAAEvF,GAAG,CAACA,EAAE,OAAO,OAAO,OAAOuF,EAAE,CAAC,MAAM,EAAE,MAAM,OAAO,EAAE,MAAM,CAAC,EAAE7D,EAAE,WAAW,CAAC,EAAE,cAAc6D,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA,EAAG,GAAGvF,GAAG,CAACA,EAAE,UAAU,OAAO,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,UAAU,EAAE,SAAS,CAAC,EAAEA,GAAG,CAACA,EAAE,OAAO,OAAO,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,OAAO,EAAE,MAAM,CAAC,EAAEA,GAAG,CAACA,EAAE,QAAQ,OAAO,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE0B,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC,EAAE,CAAC,KAAK,aAAa,CAAC,IAAI,EAAE,KAAK,YAAYA,EAAE,MAAM1B,CAAC,EAAEP,EAAE,CAAE,EAACO,GAAG,CAACA,EAAE,UAAU,OAAO,OAAOP,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAEO,GAAG,CAACA,EAAE,OAAO,OAAO,OAAOP,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAEO,GAAG,CAACA,EAAE,QAAQ,OAAO,OAAOP,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAEiC,EAAE,WAAW,CAAC,EAAE,cAAcjC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAcO,EAAE,CAAE,EAAC,CAAC,IAAI0B,EAAE,GAAG,MAAM,EAAE,GAAG,OAAO1B,EAAE,aAAaA,EAAE,aAAaA,EAAE,aAAa,OAAO,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,EAAEkjG,IAAI,CAAC,KAAK,kBAAkBxhG,EAAE,KAAK,MAAM,cAAc1B,EAAE,EAAE0B,CAAC,EAAE,IAAI,CAAC,CAACiiG,GAAG,IAAI,aAAavwF,EAAE,EAAE,MAAM+tG,WAAW/tG,EAAE,CAAC,YAAYpT,EAAE0B,EAAE,EAAE,CAAC,MAAM1B,EAAE0B,EAAE,CAAC,EAAE,KAAK,KAAK,WAAW,KAAK,WAAW,OAAO,OAAO,CAAA,EAAG,KAAK,WAAW,CAAC,aAAa,KAAK,YAAY,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK1B,EAAE,CAAC,IAAI0B,EAAE1B,GAAG,CAAE,EAAC0B,EAAE,YAAYo9F,EAAGp9F,EAAE,YAAY,CAAC,EAAEA,EAAE,WAAWo9F,EAAGp9F,EAAE,WAAW,GAAG,EAAE,MAAM,KAAKA,CAAC,CAAC,CAAC,cAAc1B,EAAE,CAAC,OAAOA,EAAE,QAAO,EAAG,MAAM,cAAcA,CAAC,EAAE,CAAC,CAAC,YAAYA,EAAE0B,EAAE,EAAE,CAAC,OAAO1B,EAAE,oBAAoB,KAAK,cAAc0B,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY1B,EAAE0B,EAAE,EAAE,CAAC,OAAO1B,EAAE,oBAAoB,KAAK,cAAc0B,EAAE,CAAC,CAAC,CAAC,CAAC,CAACiiG,GAAG,IAAI,WAAWwd,EAAE,EAAE,MAAMC,WAAWhuG,EAAE,CAAC,YAAYpT,EAAE0B,EAAE,EAAE,CAAC,MAAM1B,EAAE0B,EAAE,CAAC,EAAE,KAAK,KAAK,OAAO,KAAK,WAAW,OAAO,OAAO,CAAA,EAAG,KAAK,WAAW,CAAC,aAAa,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK1B,EAAE,CAAC,IAAI0B,EAAE1B,GAAG,CAAE,EAAC0B,EAAE,YAAYo9F,EAAGp9F,EAAE,YAAY,CAAC,EAAEA,EAAE,WAAWo9F,EAAGp9F,EAAE,WAAW,EAAE,EAAE,MAAM,KAAKA,CAAC,CAAC,CAAC,YAAY1B,EAAE0B,EAAE,EAAE,CAAC,OAAO1B,EAAE,gBAAgB,KAAK,cAAc0B,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY1B,EAAE0B,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,cAAcA,EAAE,CAAC,EAAE,OAAO,OAAO,OAAO,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE1B,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC2jG,GAAG,IAAI,OAAOyd,EAAE,EAAE,MAAMC,EAAE,CAAC,YAAYrhH,EAAEjB,EAAE,CAAC,KAAK,EAAEiB,EAAE,KAAK,QAAQjB,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,KAAK,MAAM,KAAK,KAAK,KAAK,IAAI2C,EAAE,KAAK,KAAK,IAAIA,EAAE,KAAK,KAAK,IAAIA,EAAE,KAAK,KAAK,IAAIA,EAAE,KAAK,MAAM,IAAIA,EAAE,KAAK,KAAK,IAAIA,EAAE,KAAK,GAAG,KAAK,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,iBAAiB1B,EAAE0B,EAAE,EAAE,EAAE,EAAEjC,EAAEwvD,EAAE,CAACxvD,EAAEwvD,EAAE,CAAC,EAAEsxC,GAAGvgG,EAAE,EAAE0B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,OAAO,EAAEjC,EAAEwvD,EAAE,CAAC,EAAEsxC,GAAGvgG,EAAE,EAAE0B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,OAAO,EAAEjC,EAAEwvD,EAAE,CAAC,EAAEsxC,GAAGvgG,EAAE,EAAE0B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,OAAO,CAAC,CAAC,iBAAiB1B,EAAE0B,EAAE,EAAE,EAAE,EAAEjC,EAAE,CAACA,EAAE,EAAE8gG,GAAGvgG,EAAE,EAAE0B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,OAAO,EAAEjC,EAAE,EAAE8gG,GAAGvgG,EAAE,EAAE0B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,OAAO,EAAEjC,EAAE,EAAE8gG,GAAGvgG,EAAE,EAAE0B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,OAAO,CAAC,CAAC,oBAAoB1B,EAAE0B,EAAE,EAAE,EAAE,EAAEjC,EAAE,CAAC,QAAQwvD,EAAE,EAAEA,EAAE,KAAK,EAAE,EAAEA,EAAE,CAAC,IAAI1uD,EAAEd,EAAE,EAAEwvD,EAAExuD,EAAE,KAAK,GAAGwuD,EAAE,KAAK,iBAAiBjvD,EAAE0B,EAAE,EAAE,EAAEjB,EAAE,EAAEF,CAAC,CAAC,CAAC,CAAC,mBAAmBP,EAAE0B,EAAE,EAAE,EAAE,EAAEjC,EAAE,CAAC,QAAQwvD,EAAE,EAAEA,EAAE,KAAK,EAAE,EAAEA,EAAE,CAAC,IAAI1uD,EAAE,KAAK,GAAG0uD,EAAExuD,EAAEF,EAAE,KAAK,MAAMvB,EAAEuB,EAAE,KAAK,MAAMsE,EAAEpF,EAAE,EAAEwvD,EAAExuD,EAAE,IAAIA,EAAE,GAAGzB,EAAE,IAAIA,EAAE,GAAG,KAAK,iBAAiBgB,EAAE0B,EAAE,EAAE,EAAEjB,EAAE,KAAK,IAAI,EAAE,KAAK,iBAAiBT,EAAE0B,EAAE,EAAE,EAAE1C,EAAE,KAAK,IAAI,EAAE,KAAK,KAAK,IAAI,KAAK,IAAI,EAAE,UAAW,EAAC,KAAK,KAAK,QAAQ,EAAE6F,CAAC,CAAC,CAAC,CAAC,gBAAgB7E,EAAE0B,EAAE,EAAE,EAAE,EAAE,CAAC,IAAIjC,EAAEwvD,EAAEvtD,EAAE,KAAM,EAACnB,EAAEmB,EAAE,KAAM,EAACjB,EAAEiB,EAAE,KAAI,EAAG,MAAM1C,EAAE0C,EAAE,KAAKmD,EAAE7F,EAAE,EAAE,IAAI0F,EAAE,GAAG,EAAE,QAAQa,EAAE,EAAEA,EAAEV,EAAE,EAAEU,EAAE9F,EAAEwvD,EAAEA,EAAE1uD,EAAEA,EAAEE,EAAEA,EAAEiB,EAAE,KAAM,EAAC1B,EAAE,MAAM,KAAK,CAACP,EAAEwvD,EAAE1uD,EAAEE,EAAE,EAAEiE,CAAC,CAAC,EAAEA,GAAG,EAAE,KAAK,EAAE,IAAIjF,EAAEiC,EAAE,IAAI1C,EAAE,CAAC,EAAEiwD,EAAEvtD,EAAE,IAAI1C,EAAE,CAAC,EAAEuB,EAAEmB,EAAE,IAAI,CAAC,EAAEjB,EAAEiB,EAAE,IAAI,CAAC,EAAE1B,EAAE,MAAM,KAAK,CAACP,EAAEwvD,EAAE1uD,EAAEE,EAAE,EAAEiE,CAAC,CAAC,EAAEA,GAAG,EAAE,KAAK,EAAE,CAAC,YAAY1E,EAAE0B,EAAE,EAAE,EAAE,CAAC1B,EAAE,MAAO,EAAC,KAAK,gBAAgB,KAAK,oBAAoBA,EAAE0B,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE1B,EAAE,KAAK,EAAEP,EAAE,EAAE,KAAK,EAAE,EAAE,IAAIA,GAAG,EAAE,KAAK,GAAG,IAAIwvD,EAAEjvD,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE0B,EAAEjC,CAAC,EAAEwvD,EAAE,EAAEvtD,EAAEjC,EAAE,CAAC,EAAEwvD,EAAE,EAAEvtD,EAAEjC,EAAE,CAAC,EAAEwvD,EAAE,CAAC,CAAC,WAAWjvD,EAAE0B,EAAE,EAAE,EAAE,CAAC1B,EAAE,MAAO,EAAC,KAAK,gBAAgB,KAAK,mBAAmBA,EAAE0B,EAAE,EAAE,CAAC,EAAE,IAAI,GAAG1B,EAAE,KAAK,GAAG,KAAK,EAAE,EAAE,IAAI,GAAG,EAAE,KAAK,GAAGimG,GAAGvkG,EAAEA,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB1B,EAAE0B,EAAE,EAAE,EAAE,EAAEjC,EAAEwvD,EAAE1uD,EAAEE,EAAEzB,EAAE6F,EAAEH,EAAEwX,EAAE,CAAC,QAAQxc,EAAE,EAAEA,EAAE,KAAK,EAAE,EAAEA,EAAE,CAAC,IAAIkL,EAAElG,EAAE,EAAEhF,EAAEwc,IAAItR,GAAG,EAAE,KAAK,IAAI,MAAMjG,EAAE,KAAK,GAAGjF,EAAE,KAAK,iBAAiBM,EAAE0B,EAAE,EAAE,EAAEiD,EAAE,KAAK,IAAI,EAAE,KAAK,iBAAiB,EAAElF,EAAEwvD,EAAE1uD,EAAEoE,EAAE,KAAK,IAAI,EAAE,KAAK,KAAK,WAAW,KAAK,KAAK,KAAK,IAAI,EAAE,YAAY,KAAK,KAAK,UAAUlE,EAAEmK,CAAC,EAAE,KAAK,KAAK,aAAa,KAAK,KAAK,KAAK,IAAI,EAAE,UAAW,EAAC,KAAK,KAAK,QAAQ/F,EAAE+F,CAAC,EAAE,KAAK,MAAM,aAAa,KAAK,KAAK,KAAK,IAAI,EAAE,UAAS,EAAG,KAAK,MAAM,QAAQ5L,EAAE4L,CAAC,CAAC,CAAC,CAAC,kBAAkB5K,EAAE0B,EAAE,EAAE,EAAE,EAAE,CAAC,QAAQjC,EAAE,EAAEA,EAAE,KAAK,EAAE,EAAEA,EAAE,CAAC,IAAIwvD,EAAE,EAAE,EAAExvD,EAAEO,EAAE,KAAK,KAAK,KAAK,EAAE,KAAK,KAAK,UAAU0B,EAAEutD,CAAC,EAAE,KAAK,KAAK,aAAajvD,EAAE,KAAK,IAAI,EAAE,UAAS,EAAG,KAAK,KAAK,QAAQ,EAAEivD,CAAC,EAAE,KAAK,MAAM,aAAa,KAAK,KAAK,KAAK,IAAI,EAAE,UAAW,EAAC,KAAK,MAAM,QAAQ,EAAEA,CAAC,CAAC,CAAC,CAAC,UAAUjvD,EAAE0B,EAAE,EAAE,EAAE,EAAEjC,EAAE,CAAC,KAAK,MAAM,IAAI,EAAE,EAAE,CAAC,EAAE,MAAMwvD,EAAEjvD,EAAE,EAAE,IAAIO,EAAE,GAAG,EAAE,QAAQE,EAAE,EAAEA,EAAEwuD,EAAE,EAAExuD,EAAE,KAAK,kBAAkB,KAAK,KAAKiB,EAAE,EAAE,EAAEnB,CAAC,EAAEA,GAAG,EAAE,KAAK,EAAEd,IAAI,KAAK,kBAAkB,KAAK,KAAKiC,EAAE,EAAE,EAAEnB,CAAC,EAAEA,GAAG,EAAE,KAAK,GAAG,KAAK,KAAK,QAAQ,EAAEA,CAAC,EAAE,KAAK,MAAM,QAAQ,EAAEA,CAAC,CAAC,CAAC,aAAaP,EAAEjB,EAAEwG,EAAE9D,EAAEhC,EAAE,EAAE,EAAE,EAAE,CAACO,EAAE,QAAQjB,EAAE,MAAK,EAAG,MAAM,EAAE,IAAI2C,EAAE,EAAE,IAAIA,EAAEgD,EAAE,IAAIhD,EAAEwa,EAAE,IAAIxa,EAAEhC,EAAE,IAAIgC,EAAE,EAAG,IAAIA,IAAG,KAAK1B,EAAE,KAAM,CAAA,EAAE2E,EAAG,IAAIjD,IAAG,KAAK1B,EAAE,KAAI,CAAE,EAAE,EAAG,IAAI0B,IAAG,KAAK1B,EAAE,KAAM,CAAA,EAAED,EAAE,IAAI2B,EAAElB,EAAG,IAAIkB,IAAG,KAAK3C,EAAE,KAAI,CAAE,EAAE7K,EAAG,IAAIwN,IAAG,KAAK3C,EAAE,KAAM,CAAA,EAAEwC,EAAG,IAAIG,IAAG,KAAK3C,EAAE,KAAI,CAAE,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,CAAC,EAAE,IAAIyC,EAAExB,EAAE,KAAKg1F,EAAExzF,EAAE,EAAEmmG,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE3S,EAAE,EAAE,EAAEt1F,EAAE,KAAK,CAAC,EAAE,EAAE,KAAKiF,CAAC,EAAEA,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK3E,EAAE,KAAI,CAAE,EAAED,EAAE,KAAKS,CAAC,EAAEA,EAAE,KAAKtM,CAAC,EAAEA,EAAE,KAAKqN,CAAC,EAAEA,EAAE,KAAKxC,EAAE,KAAM,CAAA,EAAM,IAAJ,GAAO,EAAE,WAAWgB,EAAEL,CAAC,EAAE,EAAE,WAAWc,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,EAAEA,EAAE,WAAW,EAAE,CAAC,GAAGkE,EAAE,WAAWxQ,EAAEyQ,CAAC,EAAE,EAAE,IAAID,CAAC,EAAE,IAAIA,EAAE,eAAe,EAAE,EAAExQ,EAAE,WAAWyQ,EAAED,CAAC,IAAIA,EAAE,KAAKwX,CAAC,EAAEA,EAAE,WAAW3a,EAAE,CAAC,EAAEmD,EAAE,IAAIwX,CAAC,EAAE,IAAIA,EAAE,eAAe,EAAE,EAAE3a,EAAE,WAAW,EAAE2a,CAAC,GAAG,KAAK,qBAAqBxc,EAAE,EAAEiF,EAAE,EAAE5E,EAAES,EAAEtM,EAAEqN,EAAEgE,EAAE9D,EAAEhC,EAAEkoG,EAAE,CAAC,EAAEA,GAAG,EAAE,KAAK,EAAE,GAAG,IAAIjoG,EAAE,KAAKM,EAAE,IAAIwB,EAAE,CAAC,CAAC,EAAE,EAAE,KAAKxB,EAAE,IAAIwB,EAAE,CAAC,CAAC,EAAEmD,EAAE,KAAK3E,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,KAAKA,EAAE,IAAI,CAAC,CAAC,EAAED,EAAE,KAAKhB,EAAE,IAAIyC,EAAE,CAAC,CAAC,EAAEhB,EAAE,KAAKzB,EAAE,IAAIyC,EAAE,CAAC,CAAC,EAAEtN,EAAE,KAAK6K,EAAE,IAAI,CAAC,CAAC,EAAEwC,EAAE,KAAKxC,EAAE,IAAI,CAAC,CAAC,EAAE2F,EAAE,KAAKwX,CAAC,EAAEA,EAAE,WAAW3a,EAAE,CAAC,EAAEmD,EAAE,IAAIwX,CAAC,EAAE,IAAIA,EAAE,eAAe,EAAE,EAAE3a,EAAE,WAAW,EAAE2a,CAAC,GAAG,KAAK,qBAAqBxc,EAAE,EAAEiF,EAAE,EAAE5E,EAAES,EAAEtM,EAAEqN,EAAEgE,EAAE9D,EAAEhC,EAAEkoG,EAAE,CAAC,EAAEA,GAAG,EAAE,KAAK,GAAG,EAAE,CAAC,KAAK,KAAK,UAAUloG,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,MAAM,UAAUgC,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQq1F,EAAE,EAAEA,EAAE,KAAK,GAAG,EAAEA,EAAE,KAAK,KAAK,QAAQr3F,EAAE,EAAEq3F,CAAC,EAAE,KAAK,MAAM,QAAQr1F,EAAE,EAAEq1F,CAAC,CAAC,MAAM,KAAK,KAAK,QAAQr3F,EAAEkoG,CAAC,EAAE,KAAK,MAAM,QAAQlmG,EAAEkmG,CAAC,CAAC,CAAC,iBAAiB3nG,EAAE0B,EAAE,EAAE,EAAE,EAAE,CAAC,IAAIjC,EAAEwvD,EAAE,IAAIxvD,EAAE,EAAEA,EAAE,KAAK,GAAG,EAAEA,EAAEwvD,EAAE,EAAE,EAAExvD,EAAE,EAAE,MAAM,KAAK,CAACO,EAAE,EAAEivD,CAAC,CAAC,EAAE,IAAIxvD,EAAE,KAAK,GAAGA,EAAE,KAAK,EAAE,EAAEA,EAAEwvD,EAAE,EAAE,EAAExvD,EAAE,EAAE,MAAM,KAAK,CAACiC,EAAE,EAAEutD,CAAC,CAAC,CAAC,CAAC,SAASjvD,EAAE0B,EAAE,EAAE,EAAE,EAAE,CAAC,IAAIjC,EAAEO,EAAE,MAAO,EAACA,EAAE,KAAM,EAAC,IAAIivD,EAAEjvD,EAAE,KAAI,EAAG,QAAQO,EAAEP,EAAE,KAAKS,EAAEF,EAAE,EAAEvB,EAAE,GAAG,EAAE6F,EAAE,EAAEA,EAAEpE,EAAE,EAAEoE,EAAEpF,EAAEwvD,EAAEA,EAAEjvD,EAAE,OAAO,KAAK,iBAAiBP,EAAEwvD,EAAEvtD,EAAE,EAAE1C,CAAC,EAAEA,GAAG,EAAE,KAAK,EAAE,IAAIS,EAAEO,EAAE,IAAIO,EAAE,CAAC,EAAE0uD,EAAEjvD,EAAE,IAAI,CAAC,EAAE,KAAK,iBAAiBP,EAAEwvD,EAAEvtD,EAAE,EAAE1C,CAAC,EAAEA,GAAG,EAAE,KAAK,GAAG,EAAEA,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,CAAC,CAAC,mBAAmBgB,EAAE0B,EAAE,EAAE,EAAE,EAAE,CAAC,IAAIjC,EAAE,IAAIA,EAAE,EAAEA,EAAE,KAAK,GAAG,EAAEA,EAAE,EAAE,EAAEA,CAAC,EAAE,EAAE,MAAM,KAAK,CAACO,CAAC,CAAC,EAAE,IAAIP,EAAE,KAAK,GAAGA,EAAE,KAAK,EAAE,EAAEA,EAAE,EAAE,EAAEA,CAAC,EAAE,EAAE,MAAM,KAAK,CAACiC,CAAC,CAAC,CAAC,CAAC,WAAW1B,EAAE0B,EAAE,EAAE,EAAE,EAAE,CAAC,IAAIjC,EAAEO,EAAE,MAAK,EAAGA,EAAE,KAAI,EAAG,IAAIivD,EAAEjvD,EAAE,KAAI,EAAG,MAAMO,EAAEP,EAAE,KAAKS,EAAEF,EAAE,EAAE,IAAIvB,EAAE,GAAG,EAAE,QAAQ6F,EAAE,EAAEA,EAAEpE,EAAE,EAAEoE,EAAEpF,EAAEwvD,EAAEA,EAAEjvD,EAAE,KAAM,EAAC,KAAK,mBAAmBP,EAAEwvD,EAAEvtD,EAAE,EAAE1C,CAAC,EAAEA,GAAG,KAAK,EAAE,IAAIS,EAAEO,EAAE,IAAIO,EAAE,CAAC,EAAE0uD,EAAEjvD,EAAE,IAAI,CAAC,EAAE,KAAK,mBAAmBP,EAAEwvD,EAAEvtD,EAAE,EAAE1C,CAAC,EAAEA,GAAG,KAAK,GAAG,EAAEA,CAAC,EAAE,EAAEA,EAAE,CAAC,CAAC,CAAC,gBAAgBgB,EAAE0B,EAAE,EAAE,EAAE,EAAE,CAAC,MAAMjC,EAAE,EAAE,MAAM,KAAK,CAACO,CAAC,CAAC,EAAEivD,EAAE,EAAE,MAAM,KAAK,CAACvtD,CAAC,CAAC,EAAE,QAAQ1B,EAAE,EAAEA,EAAE,KAAK,EAAE,EAAEA,EAAE,CAAC,IAAI0B,EAAE1B,EAAE,KAAK,EAAE,EAAE,EAAEA,CAAC,GAAG,EAAE0B,GAAGjC,EAAEiC,EAAEutD,CAAC,CAAC,CAAC,QAAQjvD,EAAE0B,EAAE,EAAE,EAAE,EAAE,CAAC,IAAIjC,EAAEO,EAAE,MAAK,EAAGA,EAAE,KAAI,EAAG,IAAIivD,EAAEjvD,EAAE,KAAI,EAAG,MAAMO,EAAEP,EAAE,KAAKS,EAAEF,EAAE,EAAE,IAAIvB,EAAE,GAAG,EAAE,QAAQ6F,EAAE,EAAEA,EAAEpE,EAAE,EAAEoE,EAAEpF,EAAEwvD,EAAEA,EAAEjvD,EAAE,KAAM,EAAC,KAAK,gBAAgBP,EAAEwvD,EAAEvtD,EAAE,EAAE1C,CAAC,EAAEA,GAAG,KAAK,EAAE,IAAIS,EAAEO,EAAE,IAAIO,EAAE,CAAC,EAAE0uD,EAAEjvD,EAAE,IAAI,CAAC,EAAE,KAAK,gBAAgBP,EAAEwvD,EAAEvtD,EAAE,EAAE1C,CAAC,EAAEA,GAAG,KAAK,GAAG,EAAEA,CAAC,EAAE,EAAEA,EAAE,CAAC,CAAC,CAAC,CAAC,MAAMsiH,EAAE,CAAC,YAAYthH,EAAE0B,EAAE,CAAC,KAAK,QAAQ1B,EAAE,KAAK,KAAKA,EAAE,aAAa,IAAI,EAAE0B,GAAG,CAAE,EAAC,KAAK,YAAY,EAAE,aAAa,GAAG,KAAK,iBAAiB,EAAE,kBAAkB,GAAG,KAAK,OAAO,EAAE,QAAQ,EAAE,KAAK,YAAY,EAAE,aAAa,GAAG,EAAE,QAAQ,KAAK,QAAQ,EAAE,QAAQ,KAAK,QAAQ,KAAK,QAAQ,UAAS,EAAG,GAAG,GAAG,KAAK,aAAa,IAAI2/G,GAAG,KAAK,OAAO,KAAK,OAAO,CAAC,CAAC,gBAAgBrhH,EAAEjB,EAAE,CAAC,MAAMwG,EAAE,KAAK,QAAQ9D,EAAE8D,EAAE,UAAU9F,EAAE8F,EAAE,aAAa,IAAI,EAAE,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC9D,EAAE,aAAc,EAACA,EAAE,aAAc,EAACA,EAAE,aAAc,EAACA,EAAE,aAAc,CAAA,EAAE,EAAE,CAAC,IAAIC,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAIA,CAAC,EAAE,IAAI,EAAED,EAAE,aAAY,EAAGiD,EAAEjD,EAAE,aAAY,EAAG,SAASya,EAAExa,EAAE,CAAC,IAAID,EAAE,EAAE,EAAE,CAAC,EAAE,GAAGA,EAAE,MAAM8D,EAAE,mBAAmB7D,EAAE1B,CAAC,EAAEjB,GAAG2C,EAAE,GAAGA,EAAEjC,GAASgC,EAAE,SAAR,IAAe,CAAC,IAAIlB,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,MAAMgF,EAAE,mBAAmB7D,EAAE,EAAE1B,CAAC,EAAE0E,EAAE,MAAMa,EAAE,mBAAmB7D,EAAE,EAAE1B,CAAC,EAAEO,EAAE,WAAW,EAAEmE,CAAC,EAAE,IAAIjD,CAAC,EAAE,IAAIA,CAAC,EAAE,eAAe,GAAG,EAAE,GAAG,EAAElB,CAAC,CAAC,OAAO,GAAG,EAAEkB,CAAC,CAAC,MAAM,CAAC,KAAKhC,EAAE,KAAK,UAAU,CAAC,IAAIO,EAAEkc,EAAE,CAAC,EAAE,OAAO,GAAG,EAAElc,CAAC,EAAE,IAAIkc,EAAE,MAAM,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,mBAAmBlc,EAAE,CAAC,IAAI0B,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,GAAG,EAAE,aAAa,GAAGA,EAAE,EAAE,EAAE,EAAE,WAAW,GAAG,EAAEA,GAAG,IAAI,EAAE,IAAI,aAAa,CAAC,EAAEjC,EAAE,KAAK,gBAAgB,OAAO,EAAEwvD,EAAEjvD,GAAG,CAAA,EAAGivD,EAAE,UAAU,EAAE,UAAU,IAAI1uD,EAAEgiG,GAAG,UAAUtzC,CAAC,EAAE,OAAO,KAAK,aAAa,SAASxvD,EAAG,SAASO,EAAE0B,EAAE3C,EAAE,CAACwB,EAAE,iBAAiBP,EAAE0B,EAAE3C,CAAC,CAAC,EAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAIiB,EAAE,KAAK,OAAO0B,EAAE,KAAK,QAAQ,GAAGA,EAAE,aAAa,GAAG1B,EAAE,EAAE0B,EAAE,WAAW,GAAG1B,GAAG,IAAI,EAAE0B,EAAE,UAAU,EAAE,KAAK,gBAAgB,OAAO,EAAEjC,EAAE,IAAI,aAAa,CAAC,EAAE,OAAO,KAAK,aAAa,WAAW,EAAG,SAASO,EAAE,CAAC,OAAOA,EAAE,KAAK,EAAGP,EAAE,EAAEiC,EAAE,QAAQ,EAAE,CAAC,QAAQ,IAAI8vG,GAAG/xG,EAAE,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,MAAM,CAAC,SAAS,KAAK,YAAa,CAAA,CAAC,CAAC,0BAA0B,CAAC,MAAMO,EAAE,KAAK,aAAa0B,EAAE,KAAK,WAAW1B,CAAC,EAAE,MAAM,CAAC,QAAQA,EAAE,OAAO0B,EAAE,OAAO,SAASA,EAAE,QAAQ,CAAC,CAAC,kBAAkB1B,EAAE,CAAC,IAAI0B,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,GAAG,EAAE,aAAa,GAAGA,EAAE,EAAE,EAAE,WAAW,GAAGA,GAAG,IAAI,EAAE,IAAI,aAAa,CAAC,EAAEjC,EAAE,KAAK,gBAAgB,OAAO,EAAEwvD,EAAE,IAAIgnD,GAAGj2G,CAAC,EAAE,OAAO,KAAK,aAAa,QAAQP,EAAG,SAASO,EAAE,CAAC,OAAOivD,EAAE,WAAWjvD,CAAC,CAAC,EAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,MAAMA,EAAE,KAAK,OAAO0B,EAAE,KAAK,QAAQ,IAAI,GAAGA,EAAE,aAAa,GAAG1B,EAAE,EAAE,EAAE0B,EAAE,WAAW,GAAG,EAAE1B,GAAG,MAAM,EAAE,IAAI,aAAa,CAAC,EAAE,EAAE,KAAK,kBAAkB,KAAK,gBAAgB,QAAQ,KAAK,WAAW,EAAE,OAAO,KAAK,aAAa,YAAY,EAAE,EAAE,EAAE0B,EAAE,QAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM1B,EAAE,KAAK,OAAO0B,EAAE,KAAK,QAAQ,IAAI,GAAG,KAAK,KAAK,GAAG1B,EAAE,EAAE,EAAE0B,EAAE,WAAW,GAAG,EAAE1B,GAAG,MAAM,EAAE,IAAI,aAAa,CAAC,EAAE,EAAE,KAAK,kBAAkB,KAAK,gBAAgB,QAAQ,KAAK,WAAW,EAAE,OAAO,KAAK,aAAa,WAAW,EAAE,EAAE,EAAE0B,EAAE,QAAQ,EAAE,CAAC,CAAC,WAAW1B,EAAE,CAAC,MAAM0B,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,EAAE,YAAY,EAAE,KAAK,KAAK,IAAIjC,GAAG,EAAE,GAAGiC,EAAE,EAAE,EAAE,EAAE,WAAWjC,GAAG,EAAEiC,GAAG,MAAMutD,EAAE,IAAI,aAAaxvD,CAAC,EAAEc,EAAE,IAAI,aAAad,CAAC,EAAE,GAAG,KAAK,aAAa,CAAC,KAAK,QAAQ,OAAO,CAAC,MAAMiC,EAAE,KAAK,gBAAgB,YAAY,EAAED,EAAE,KAAK,gBAAgB,YAAY,EAAE,KAAK,aAAa,aAAaC,EAAED,EAAEzB,EAAEivD,EAAE1uD,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,MAAM,KAAK,aAAa,UAAU,EAAEP,EAAEivD,EAAE1uD,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO0uD,EAAE,SAAS1uD,CAAC,CAAC,CAAC,CAAC,MAAMwO,GAAG,IAAIrN,EAAE6/G,GAAG,IAAI7/G,EAAE8/G,GAAG,OAAO,OAAO,CAAC,eAAe,EAAE,OAAO,GAAG,YAAY,CAAC,EAAElN,EAAE,EAAE,MAAMmN,WAAWhN,EAAE,CAAC,YAAYz0G,EAAE0B,EAAE,GAAG,CAAC,MAAM,SAAS1B,EAAE0B,EAAE,CAAA,EAAG,CAAC,MAAM3C,EAAE+/F,EAAGp9F,EAAE,eAAe,CAAC,EAAE6D,EAAEu5F,EAAGp9F,EAAE,OAAO,EAAE,EAAED,EAAE8D,EAAExG,EAAE,EAAEU,EAAE8F,EAAExG,EAAE,EAAE,EAAEkwD,EAAEjvD,EAAE,SAAS,OAAO,EAAEO,EAAE0uD,EAAElwD,EAAE,EAAE,EAAE0C,EAAE,EAAEhB,EAAE,GAAGwuD,EAAE,GAAGlwD,EAAE,EAAE,EAAEU,EAAE,EAAE,MAAM,CAAC,SAAS,IAAI,aAAac,CAAC,EAAE,MAAM,IAAI,aAAaA,CAAC,EAAE,MAAMi/F,GAAG/+F,EAAEF,EAAE,CAAC,EAAE,OAAO,IAAI,aAAaA,CAAC,EAAE,QAAQP,EAAE,OAAO,CAAC,EAAEA,EAAE0B,CAAC,EAAEA,CAAC,EAAE,KAAK,YAAY,KAAK,WAAW,OAAO,KAAK,WAAW,eAAe,EAAE,KAAK,aAAa,KAAK,WAAW,OAAO,KAAK,WAAW,eAAe,EAAE,EAAE,KAAK,MAAM1B,EAAE,SAAS,OAAO,EAAEA,EAAE,YAAY8lG,GAAG,KAAK,KAAK,EAAE,KAAK,cAAc9lG,CAAC,EAAE,KAAK,UAAS,CAAE,CAAC,IAAI,mBAAmB,CAAC,OAAOwhH,EAAE,CAAC,cAAcxhH,EAAE,CAAA,EAAG,CAAC,MAAM0B,EAAE,KAAK,WAAW,YAAY,EAAE,KAAK,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,WAAW,eAAejC,EAAE,KAAK,SAAS,WAAW,IAAIwvD,EAAE1uD,EAAEE,EAAEzB,EAAE6F,EAAEH,EAAEwX,EAAExc,EAAEkL,EAAEjG,EAAEC,EAAE7E,EAAES,EAAER,EAAE,WAAWivD,EAAEjvD,EAAE,SAASO,EAAEP,EAAE,OAAOS,EAAET,EAAE,SAAShB,EAAEgB,EAAE,QAAQ0E,EAAE1E,EAAE,KAAKN,EAAED,EAAE,SAAS,MAAMkF,EAAElF,EAAE,OAAO,MAAMA,EAAE,SAAS,YAAY,GAAGA,EAAE,OAAO,YAAY,IAAIO,EAAE,QAAQ6E,EAAE7E,EAAE,MAAM4K,EAAEnL,EAAE,MAAM,MAAMA,EAAE,MAAM,YAAY,IAAIO,EAAE,cAAckc,EAAElc,EAAE,YAAY4E,EAAEnF,EAAE,YAAY,MAAMA,EAAE,YAAY,YAAY,IAAI,IAAIvL,EAAE,EAAEqN,EAAE,EAAEC,EAAE,EAAEwzF,EAAE,EAAE2S,EAAE,EAAEC,EAAE,EAAE9Q,EAAE,EAAEzkC,EAAE,EAAEkhC,EAAE,EAAEtqE,EAAE,EAAE,MAAM4+E,EAAE,GAAG50C,EAAE,CAAA,EAAGP,GAAE,CAAE,EAACg1C,EAAE,CAAA,EAAGkJ,EAAE,CAAE,EAACC,GAAE,CAAA,EAAG,GAAG5hD,EAAE,QAAQjvD,GAAE,EAAEA,GAAE,EAAE,EAAEA,GAAE,CAAC,MAAMjB,EAAEiB,GAAE,EAAE,EAAE,KAAK,GAAG6nG,EAAE7nG,EAAC,EAAE0B,EAAE,KAAK,IAAI3C,CAAC,EAAEk0D,EAAEjzD,EAAC,EAAE,KAAK,IAAIjB,CAAC,EAAE2zD,GAAE1yD,EAAC,EAAE0B,EAAE,KAAK,IAAI3C,EAAE,GAAG,EAAE2oG,EAAE1nG,EAAC,EAAE,KAAK,IAAIjB,EAAE,GAAG,EAAE6xG,EAAE5wG,EAAC,EAAE0B,EAAE,KAAK,IAAI3C,EAAE,GAAG,EAAE8xG,GAAE7wG,EAAC,EAAE,KAAK,IAAIjB,EAAE,GAAG,CAAC,CAAC,QAAQiB,GAAE,EAAEA,GAAE,EAAE,EAAEA,GAAE,CAACD,EAAE,EAAEC,GAAEQ,EAAET,EAAE,EAAEkvD,GAAGjwD,GAAGuB,GAAGE,GAAGiE,IAAIqK,GAAG,IAAI/P,EAAEe,CAAC,EAAEf,EAAEe,EAAE,CAAC,EAAEf,EAAEe,EAAE,CAAC,CAAC,EAAEwB,EAAEhB,EAAER,CAAC,EAAEyB,EAAEjB,EAAER,EAAE,CAAC,EAAEi1F,EAAEz0F,EAAER,EAAE,CAAC,EAAE4nG,EAAElnG,EAAEV,CAAC,EAAE6nG,EAAEnnG,EAAEV,EAAE,CAAC,EAAE+2F,EAAEr2F,EAAEV,EAAE,CAAC,EAAEsyD,EAAEpD,EAAElvD,CAAC,EAAEwzF,EAAEtkC,EAAElvD,EAAE,CAAC,EAAEkpB,EAAEgmC,EAAElvD,EAAE,CAAC,EAAE7L,EAAEwQ,EAAE1E,EAAC,GAAG,QAAQ0B,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,CAAC,MAAM3C,EAAEyB,EAAE,EAAEkB,EAAE,GAAGutD,EAAE,CAAC,MAAMjvD,GAAE,CAAC9L,EAAE2zG,EAAEnmG,CAAC,EAAE6D,GAAErR,EAAE++D,EAAEvxD,CAAC,EAAED,GAAE,CAACvN,EAAEw+D,GAAEhxD,CAAC,EAAEjC,EAAEvL,EAAEwzG,EAAEhmG,CAAC,EAAEutD,GAAE,CAAC/6D,EAAE08G,EAAElvG,CAAC,EAAEnB,EAAErM,EAAE28G,GAAEnvG,CAAC,EAAEhC,EAAEX,CAAC,EAAEszD,EAAEryD,GAAEuB,EAAEgE,GAAEoiG,EAAEjoG,EAAEX,EAAE,CAAC,EAAEw0F,EAAEvzF,GAAEwB,EAAE+D,GAAEqiG,EAAEloG,EAAEX,EAAE,CAAC,EAAEkqB,EAAEjpB,GAAEg1F,EAAEzvF,GAAEuxF,EAAEyqB,GAAG,IAAItyD,GAAE1tD,EAAEhB,EAAEonG,GAAGlmG,GAAEF,EAAE9B,EAAEkoG,GAAG14C,GAAEztD,EAAEjB,EAAEqnG,GAAGnmG,GAAED,EAAE/B,EAAEmoG,GAAG34C,GAAE+lC,EAAEz0F,EAAEu2F,GAAGr1F,GAAEuzF,EAAEv1F,EAAEq3F,EAAE,EAAE,MAAM/nF,EAAE,EAAEpK,EAAE5F,CAAC,EAAEwiH,GAAG,EAAE58G,EAAE5F,EAAE,CAAC,EAAEwiH,GAAG,EAAE58G,EAAE5F,EAAE,CAAC,EAAEwiH,GAAG,CAAC,CAAC18G,IAAI+F,EAAE7L,CAAC,EAAE8F,EAAE9E,CAAC,EAAE6K,EAAE7L,EAAE,CAAC,EAAE8F,EAAE9E,EAAE,CAAC,EAAE6K,EAAE7L,EAAE,CAAC,EAAE8F,EAAE9E,EAAE,CAAC,GAAGmc,IAAItX,EAAE5E,GAAE,EAAE0B,CAAC,EAAEwa,EAAElc,EAAC,EAAE,CAAC,CAACD,EAAE,EAAES,EAAE,EAAE,EAAE,EAAE,QAAQR,GAAE,EAAEA,GAAE,EAAE,EAAEA,GAAE,CAAC,MAAM0B,EAAE3B,EAAE,EAAEC,GAAEuF,EAAE/E,EAAE,EAAER,GAAEivD,GAAGjwD,IAAIU,EAAE6F,CAAC,EAAE7F,EAAEgC,CAAC,EAAEhC,EAAE6F,EAAE,CAAC,EAAE7F,EAAEgC,EAAE,CAAC,EAAEhC,EAAE6F,EAAE,CAAC,EAAE7F,EAAEgC,EAAE,CAAC,EAAEiD,EAAEY,CAAC,EAAEvG,EAAEe,CAAC,EAAE4E,EAAEY,EAAE,CAAC,EAAEvG,EAAEe,EAAE,CAAC,EAAE4E,EAAEY,EAAE,CAAC,EAAEvG,EAAEe,EAAE,CAAC,GAAG8E,IAAI+F,EAAErF,CAAC,EAAEqF,EAAElJ,CAAC,EAAEkJ,EAAErF,EAAE,CAAC,EAAEqF,EAAElJ,EAAE,CAAC,EAAEkJ,EAAErF,EAAE,CAAC,EAAEqF,EAAElJ,EAAE,CAAC,GAAGwa,IAAItX,EAAE,EAAE,EAAE5E,EAAC,EAAE4E,EAAE,EAAE5E,EAAC,EAAE,CAACD,EAAE,GAAG,EAAE,GAAG,EAAES,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQR,GAAE,EAAEA,GAAE,EAAE,EAAEA,GAAE,CAAC,MAAM0B,EAAE3B,EAAE,EAAEC,GAAEP,EAAEe,EAAE,EAAER,GAAEivD,GAAGjwD,IAAIU,EAAED,CAAC,EAAEC,EAAEgC,CAAC,EAAEhC,EAAED,EAAE,CAAC,EAAEC,EAAEgC,EAAE,CAAC,EAAEhC,EAAED,EAAE,CAAC,EAAEC,EAAEgC,EAAE,CAAC,EAAEiD,EAAElF,CAAC,EAAET,EAAE,EAAE,CAAC,EAAE2F,EAAElF,EAAE,CAAC,EAAET,EAAE,EAAE,EAAE,CAAC,EAAE2F,EAAElF,EAAE,CAAC,EAAET,EAAE,EAAE,EAAE,CAAC,GAAG6F,IAAI+F,EAAEnL,CAAC,EAAEmL,EAAElJ,CAAC,EAAEkJ,EAAEnL,EAAE,CAAC,EAAEmL,EAAElJ,EAAE,CAAC,EAAEkJ,EAAEnL,EAAE,CAAC,EAAEmL,EAAElJ,EAAE,CAAC,GAAGwa,IAAItX,GAAG,EAAE,GAAG,EAAE5E,EAAC,EAAE4E,GAAG,EAAE,GAAG,EAAE5E,EAAC,EAAE,CAAC,CAAC,WAAW,CAAC,MAAMA,EAAE,KAAK,SAAS,SAAQ,EAAG,GAAG,CAACA,EAAE,OAAO,KAAKojG,GAAG,MAAM,eAAe,EAAE,MAAM1hG,EAAE1B,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,aAAaP,EAAE,KAAK,WAAW,eAAewvD,EAAE,KAAK,WAAW,eAAe,EAAE,IAAI1uD,EAAEE,EAAE,QAAQT,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,CAAC,MAAMjB,EAAEiB,EAAEP,EAAE,EAAE,EAAE8F,EAAEvF,EAAEP,EAAEgC,GAAGzB,EAAE,GAAGP,EAAE,QAAQO,EAAE,EAAEA,EAAEP,EAAE,EAAEO,EAAES,EAAE1B,EAAE,EAAEiB,EAAE,EAAE0B,EAAEjB,CAAC,EAAE8E,EAAEvF,EAAE0B,EAAEjB,EAAE,CAAC,EAAE8E,GAAGvF,EAAE,GAAGP,EAAEiC,EAAEjB,EAAE,CAAC,EAAEgB,EAAEzB,EAAE0B,EAAEjB,EAAE,CAAC,EAAEgB,EAAEzB,EAAE0B,EAAEjB,EAAE,CAAC,EAAE8E,GAAGvF,EAAE,GAAGP,EAAEiC,EAAEjB,EAAE,CAAC,EAAEgB,GAAGzB,EAAE,GAAGP,CAAC,CAAC,MAAMT,EAAE,CAAC,CAAC,EAAE,QAAQgB,EAAE,EAAEA,EAAEivD,EAAE,EAAE,EAAEjvD,EAAEhB,EAAE,KAAKgB,CAAC,EAAEP,EAAEO,IAAIA,GAAGhB,EAAE,KAAKS,EAAEO,CAAC,EAAES,EAAE,EAAEhB,EAAE,EAAE,EAAEc,EAAE,EAAEd,EAAE,QAAQO,EAAE,EAAEA,EAAEhB,EAAE,OAAO,EAAE,EAAEgB,EAAEA,EAAE,GAAG,GAAG0B,EAAEjB,EAAE,EAAET,EAAE,CAAC,EAAEO,EAAEvB,EAAEgB,EAAE,CAAC,EAAE0B,EAAEjB,EAAE,EAAET,EAAE,CAAC,EAAEO,EAAEvB,EAAEgB,EAAE,CAAC,EAAE0B,EAAEjB,EAAE,EAAET,EAAE,CAAC,EAAEO,EAAEvB,EAAEgB,EAAE,CAAC,IAAI0B,EAAEjB,EAAE,EAAET,EAAE,CAAC,EAAEO,EAAEvB,EAAEgB,EAAE,CAAC,EAAE0B,EAAEjB,EAAE,EAAET,EAAE,CAAC,EAAEO,EAAEvB,EAAEgB,EAAE,CAAC,EAAE0B,EAAEjB,EAAE,EAAET,EAAE,CAAC,EAAEO,EAAEvB,EAAEgB,EAAE,CAAC,GAAGS,EAAE,EAAEhB,EAAE,EAAE,EAAE,EAAE,EAAEc,EAAE,EAAEd,EAAEA,EAAE,QAAQO,EAAE,EAAEA,EAAEhB,EAAE,OAAO,EAAE,EAAEgB,EAAEA,EAAE,GAAG,GAAG0B,EAAEjB,EAAE,EAAET,EAAE,CAAC,EAAEO,EAAEvB,EAAEgB,EAAE,CAAC,EAAE0B,EAAEjB,EAAE,EAAET,EAAE,CAAC,EAAEO,EAAEvB,EAAEgB,EAAE,CAAC,EAAE0B,EAAEjB,EAAE,EAAET,EAAE,CAAC,EAAEO,EAAEvB,EAAEgB,EAAE,CAAC,IAAI0B,EAAEjB,EAAE,EAAET,EAAE,CAAC,EAAEO,EAAEvB,EAAEgB,EAAE,CAAC,EAAE0B,EAAEjB,EAAE,EAAET,EAAE,CAAC,EAAEO,EAAEvB,EAAEgB,EAAE,CAAC,EAAE0B,EAAEjB,EAAE,EAAET,EAAE,CAAC,EAAEO,EAAEvB,EAAEgB,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM65F,WAAWslB,EAAE,CAAC,YAAYn/G,EAAE0B,EAAE,EAAE,CAAC,MAAM1B,EAAE0B,EAAE,CAAC,EAAE,KAAK,KAAK,UAAU,KAAK,WAAW,OAAO,OAAO,CAAC,YAAY,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,KAAK,UAAU,IAAI,GAAG,IAAI,EAAE,QAAQ,EAAE,EAAE,eAAe,CAAC,KAAK,UAAU,IAAI,GAAG,IAAI,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,YAAY,CAAC,KAAK,UAAU,QAAQ,EAAE,CAAC,EAAE,KAAK,UAAU,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK1B,EAAE,CAAC,IAAI0B,EAAE1B,GAAG,GAAG0B,EAAE,YAAYo9F,EAAGp9F,EAAE,YAAY,WAAW,EAAEA,EAAE,WAAWo9F,EAAGp9F,EAAE,WAAW,QAAQ,EAAEA,EAAE,WAAWo9F,EAAGp9F,EAAE,WAAW,QAAQ,EAAEA,EAAE,YAAYo9F,EAAGp9F,EAAE,YAAY,EAAE,EAAEA,EAAE,iBAAiBo9F,EAAGp9F,EAAE,iBAAiB,EAAE,EAAE,KAAK,YAAYo9F,EAAGp9F,EAAE,YAAY,CAAC,EAAE,KAAK,QAAQo9F,EAAGp9F,EAAE,QAAQ,GAAG,EAAE,KAAK,OAAOo9F,EAAGp9F,EAAE,OAAO,EAAE,EAAE,KAAK,YAAYo9F,EAAGp9F,EAAE,YAAY,EAAE,EAAUA,EAAE,UAAV,OAAmB,KAAK,OAAO,EAAE,KAAK,eAAe,GAAcA,EAAE,UAAb,SAAqB,KAAK,OAAO,EAAWA,EAAE,UAAX,OAAmB,KAAK,OAAO,GAAG,KAAK,OAAOo9F,EAAGp9F,EAAE,OAAO,CAAC,EAAE,MAAM,KAAKA,CAAC,CAAC,CAAC,gBAAgB1B,EAAE,CAAC,OAAO,OAAO,OAAO,CAAC,OAAO,KAAK,OAAO,QAAQ,KAAK,QAAQ,YAAgB,KAAK,cAAT,EAAqB,YAAY,KAAK,WAAW,EAAEA,CAAC,CAAC,CAAC,UAAUA,EAAE,CAAC,OAAO,IAAIshH,GAAGthH,EAAE,KAAK,gBAAe,CAAE,CAAC,CAAC,eAAeA,EAAE,CAAC,OAAOA,EAAE,OAAO,EAAE,KAAK,WAAW,CAAC,cAAcA,EAAE,CAAC,OAAOA,EAAE,QAAO,EAAG,MAAM,cAAcA,CAAC,EAAE,CAAC,CAAC,WAAWA,EAAE,CAAC,IAAI0B,EAAE,CAAE,EAAC,EAAE,GAAG,OAAO,KAAK,UAAU,YAAa1B,GAAG,CAAC,GAAGA,EAAE,aAAa,EAAE,OAAO,EAAE,KAAKA,CAAC,EAAE,MAAMuF,EAAE,KAAK,UAAUvF,CAAC,EAAEyB,EAAE,KAAK,eAAezB,CAAC,EAAEP,EAAE8F,EAAE,wBAAwB0pD,EAAE1pD,EAAE,yBAAwB,EAAGhF,EAAEgF,EAAE,mBAAmB,KAAK,eAAgB,CAAA,EAAE9E,EAAE8E,EAAE,uBAAuBvG,EAAEuG,EAAE,kBAAkB,KAAK,gBAAiB,CAAA,EAAE7D,EAAE,KAAK,IAAI+/G,GAAG,OAAO,OAAO,GAAGhiH,EAAEwvD,EAAE1uD,EAAEE,EAAEzB,CAAC,EAAE,KAAK,gBAAgB,CAAC,eAAe,KAAK,eAAe,YAAYyC,EAAE,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,EAAGzB,EAAE,aAAc,CAAA,EAAE,CAAC,WAAW0B,EAAE,YAAY,CAAC,CAAC,CAAC,WAAW1B,EAAE0B,EAAE,CAAC4hG,IAAIF,GAAG,KAAK,KAAK,KAAK,cAAc,EAAEpjG,EAAEA,GAAG,CAAE,EAAC,QAAQ,EAAE,EAAE,EAAE0B,EAAE,YAAY,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAA,EAAGjC,EAAEiC,EAAE,YAAY,CAAC,EAAEutD,EAAE,KAAK,UAAUxvD,CAAC,EAAEc,EAAE,KAAK,eAAed,CAAC,EAAE,GAAG,OAAO,OAAOiC,EAAE,WAAW,CAAC,EAAE,CAAC,YAAYnB,CAAC,CAAC,EAAEP,EAAE,UAAUA,EAAE,OAAO,CAAC,IAAIS,EAAEwuD,EAAE,sBAAqB,EAAGjwD,EAAEiwD,EAAE,yBAA0B,EAACpqD,EAAEoqD,EAAE,kBAAkB,KAAK,gBAAgB1uD,CAAC,CAAC,EAAE,EAAE,SAASE,EAAE,SAAS,EAAE,OAAOzB,EAAE,OAAO,EAAE,SAASA,EAAE,SAAS,EAAE,QAAQA,EAAE,QAAQ,EAAE,KAAK6F,EAAE,IAAI,CAAC,GAAG7E,EAAE,MAAM,CAAC,IAAI0E,EAAEuqD,EAAE,mBAAmB,KAAK,gBAAgB,EAAE,EAAE,MAAMvqD,EAAE,KAAK,CAAC,GAAG1E,EAAE,QAAQ,CAAC,IAAIkc,EAAE+yC,EAAE,qBAAoB,EAAG,EAAE,QAAQ/yC,EAAE,OAAO,CAACxa,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC4hG,IAAIF,GAAG,QAAQ,KAAK,KAAK,cAAc,CAAC,CAAC,cAAcpjG,EAAE,CAAC,IAAI0B,EAAE,GAAG,OAAO1B,GAAGA,EAAE,cAAc0B,EAAE,OAAO,IAAI1B,GAAGA,EAAE,UAAU0B,EAAE,SAAS,IAAI,MAAM,cAAc1B,EAAE0B,EAAE,EAAE,EAAE,IAAI,CAAC,CAACiiG,GAAG,IAAI,UAAU9J,EAAE,EAAE,MAAM6nB,WAAWvC,EAAE,CAAC,YAAYn/G,EAAE0B,EAAE,EAAE,CAAC,MAAM1B,EAAE0B,EAAE,CAAC,EAAE,KAAK,KAAK,UAAU,KAAK,WAAW,OAAO,OAAO,CAAC,aAAa,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,iBAAiB,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,kBAAkB,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,qBAAqB,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,YAAY,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,YAAY,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,iBAAiB,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,kBAAkB,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,SAAS,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,WAAW,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,WAAW,CAAC,KAAK,OAAO,QAAQ,EAAE,EAAE,aAAa,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,eAAe,CAAC,KAAK,UAAU,OAAO,WAAW,EAAE,UAAU,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,KAAK,QAAQ,EAAE,EAAE,UAAU,CAAC,KAAK,SAAS,QAAQ,GAAG,QAAQ,CAAC,GAAG,GAAG,SAAS,WAAW,GAAG,IAAI,CAAC,EAAE,mBAAmB,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,GAAG,QAAQ,EAAE,EAAE,aAAa,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,GAAG,QAAQ,EAAE,EAAE,mBAAmB,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,GAAG,QAAQ,EAAE,EAAE,iBAAiB,CAAC,KAAK,UAAU,IAAI,IAAI,IAAI,EAAE,QAAQ,EAAE,EAAE,iBAAiB,CAAC,KAAK,UAAU,IAAI,IAAI,IAAI,EAAE,QAAQ,EAAE,EAAE,sBAAsB,CAAC,KAAK,UAAU,IAAI,GAAG,IAAI,EAAE,QAAQ,EAAE,EAAE,sBAAsB,CAAC,KAAK,UAAU,IAAI,GAAG,IAAI,EAAE,QAAQ,EAAE,EAAE,kBAAkB,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,GAAG,QAAQ,EAAE,EAAE,oBAAoB,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,GAAG,QAAQ,EAAE,EAAE,mBAAmB,CAAC,KAAK,UAAU,IAAI,IAAI,IAAI,EAAE,QAAQ,EAAE,EAAE,gBAAgB,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,GAAG,QAAQ,EAAE,EAAE,kBAAkB,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,GAAG,QAAQ,EAAE,EAAE,aAAa,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,GAAG,QAAQ,EAAE,EAAE,mBAAmB,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,GAAG,QAAQ,EAAE,EAAE,oBAAoB,CAAC,KAAK,UAAU,IAAI,IAAI,IAAI,EAAE,QAAQ,EAAE,EAAE,aAAa,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,GAAG,QAAQ,EAAE,EAAE,kBAAkB,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,iBAAiB,CAAC,KAAK,UAAU,IAAI,IAAI,IAAI,GAAG,QAAQ,EAAE,EAAE,sBAAsB,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,EAAE,QAAQ,EAAE,EAAE,eAAe,GAAG,gBAAgB,EAAE,EAAE,KAAK,UAAU,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK1B,EAAE,CAAC,IAAI0B,EAAE1B,GAAG,CAAA,EAAG0B,EAAE,WAAWo9F,EAAGp9F,EAAE,WAAW,GAAG,EAAEA,EAAE,iBAAiBo9F,EAAGp9F,EAAE,iBAAiB,EAAE,EAAE,KAAK,aAAao9F,EAAGp9F,EAAE,aAAa,EAAE,EAAE,KAAK,iBAAiBo9F,EAAGp9F,EAAE,iBAAiB,EAAE,EAAE,KAAK,kBAAkBo9F,EAAGp9F,EAAE,kBAAkB,EAAE,EAAE,KAAK,qBAAqBo9F,EAAGp9F,EAAE,qBAAqB,EAAE,EAAE,KAAK,YAAYo9F,EAAGp9F,EAAE,YAAY,EAAE,EAAE,KAAK,YAAYo9F,EAAGp9F,EAAE,YAAY,EAAE,EAAE,KAAK,iBAAiBo9F,EAAGp9F,EAAE,iBAAiB,EAAE,EAAE,KAAK,kBAAkBo9F,EAAGp9F,EAAE,kBAAkB,EAAE,EAAE,KAAK,SAASo9F,EAAGp9F,EAAE,SAAS,EAAE,EAAE,KAAK,WAAWo9F,EAAGp9F,EAAE,WAAW,EAAE,EAAE,KAAK,WAAWo9F,EAAGp9F,EAAE,WAAW,EAAE,EAAE,KAAK,aAAao9F,EAAGp9F,EAAE,aAAa,EAAE,EAAE,KAAK,eAAeo9F,EAAGp9F,EAAE,eAAe,EAAE,EAAE,KAAK,UAAUo9F,EAAGp9F,EAAE,UAAU,CAAC,EAAE,KAAK,UAAUo9F,EAAGp9F,EAAE,UAAU,EAAE,EAAE,KAAK,mBAAmBo9F,EAAGp9F,EAAE,mBAAmB,CAAC,EAAE,KAAK,aAAao9F,EAAGp9F,EAAE,aAAa,GAAG,EAAE,KAAK,mBAAmBo9F,EAAGp9F,EAAE,mBAAmB,GAAG,EAAE,KAAK,iBAAiBo9F,EAAGp9F,EAAE,iBAAiB,EAAE,EAAE,KAAK,iBAAiBo9F,EAAGp9F,EAAE,iBAAiB,EAAE,EAAE,KAAK,sBAAsBo9F,EAAGp9F,EAAE,sBAAsB,EAAE,EAAE,KAAK,sBAAsBo9F,EAAGp9F,EAAE,sBAAsB,EAAE,EAAE,KAAK,kBAAkBo9F,EAAGp9F,EAAE,kBAAkB,GAAG,EAAE,KAAK,oBAAoBo9F,EAAGp9F,EAAE,oBAAoB,CAAC,EAAE,KAAK,mBAAmBo9F,EAAGp9F,EAAE,mBAAmB,EAAE,EAAE,KAAK,gBAAgBo9F,EAAGp9F,EAAE,gBAAgB,CAAC,EAAE,KAAK,kBAAkBo9F,EAAGp9F,EAAE,kBAAkB,CAAC,EAAE,KAAK,aAAao9F,EAAGp9F,EAAE,aAAa,CAAC,EAAE,KAAK,mBAAmBo9F,EAAGp9F,EAAE,mBAAmB,GAAG,EAAE,KAAK,oBAAoBo9F,EAAGp9F,EAAE,oBAAoB,EAAE,EAAE,KAAK,aAAao9F,EAAGp9F,EAAE,aAAa,CAAC,EAAE,KAAK,kBAAkBo9F,EAAGp9F,EAAE,kBAAkB,EAAE,EAAE,KAAK,iBAAiBo9F,EAAGp9F,EAAE,iBAAiB,EAAE,EAAE,KAAK,sBAAsBo9F,EAAGp9F,EAAE,sBAAsB,CAAC,EAAE,MAAM,KAAKA,CAAC,CAAC,CAAC,eAAe,CAAC,MAAO,EAAC,CAAC,eAAe1B,EAAE,CAAC,MAAM0B,EAAE,CAAC,mBAAmB,KAAK,mBAAmB,aAAa,KAAK,aAAa,mBAAmB,KAAK,mBAAmB,iBAAiB,KAAK,iBAAiB,iBAAiB,KAAK,iBAAiB,sBAAsB,KAAK,sBAAsB,sBAAsB,KAAK,sBAAsB,kBAAkB,KAAK,kBAAkB,oBAAoB,KAAK,oBAAoB,mBAAmB,KAAK,mBAAmB,gBAAgB,KAAK,gBAAgB,kBAAkB,KAAK,kBAAkB,aAAa,KAAK,aAAa,mBAAmB,KAAK,mBAAmB,oBAAoB,KAAK,oBAAoB,aAAa,KAAK,aAAa,kBAAkB,KAAK,kBAAkB,iBAAiB,KAAK,iBAAiB,sBAAsB,KAAK,qBAAqB,EAAE,EAAE,CAAC,aAAa,KAAK,aAAa,iBAAiB,KAAK,iBAAiB,kBAAkB,KAAK,kBAAkB,qBAAqB,KAAK,qBAAqB,YAAY,KAAK,YAAY,YAAY,KAAK,YAAY,iBAAiB,KAAK,iBAAiB,kBAAkB,KAAK,kBAAkB,SAAS,KAAK,SAAS,WAAW,KAAK,WAAW,OAAO,KAAK,WAAW,KAAK,YAAY,WAAW,KAAK,UAAU,EAAE,OAAO0vG,GAAGT,GAAG3wG,EAAE0B,CAAC,EAAE1B,EAAE,CAAC,CAAC,CAAC,WAAWA,EAAE,CAAC,MAAM0B,EAAE,KAAK,eAAe1B,CAAC,EAAE,EAAE,CAAC,IAAIihH,GAAGtV,GAAGjqG,CAAC,EAAE,KAAK,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,gBAAgB,KAAK,eAAe,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,aAAa,CAAC,MAAM1B,EAAE,CAAC,KAAK,KAAK,UAAU,KAAK,KAAK,SAAS,EAAE,EAAE,KAAK,IAAI+/G,GAAG,SAAS//G,EAAE0B,EAAE,CAAC,MAAM3C,EAAE2mG,GAAG1lG,EAAE,UAAUA,EAAE,SAAS,EAAEuF,EAAE,CAAA,EAAG9D,EAAEkkG,GAAG3lG,EAAE,UAAUA,EAAE,SAAS,EAAEP,EAAEgC,EAAE,OAAO,EAAE,QAAQzB,EAAE,EAAEA,EAAEP,EAAEO,IAAI,CAAC,MAAMjB,EAAE,EAAEiB,EAAEP,EAAE,KAAK,KAAK,KAAK,IAAIgC,EAAE1C,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI0C,EAAE1C,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI0C,EAAE1C,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO2C,EAAE,KAAM,CAAA,IAAI,WAAW6D,EAAEvF,CAAC,EAAEP,EAAE,QAAQ,CAAC,EAAE,KAA8B,MAAM,IAAI,KAAK8F,EAAEvF,CAAC,GAAGP,EAAE,IAAI,QAAQ,CAAC,EAAE,MAAM,MAAM,QAAQ8F,EAAEvF,CAAC,EAAEP,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAASV,EAAE,KAAK6mG,GAAG7mG,EAAE,OAAO,EAAE2C,EAAE,IAAI,EAAE,MAAM1B,EAAE,MAAM,KAAKuF,CAAC,CAAC,EAAE7D,EAAE1B,CAAC,EAAE,KAAK,gBAAgB,CAAC,UAAU,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC2jG,GAAG,IAAI,UAAU+d,EAAE,EAAE,MAAMC,WAAWvC,EAAE,CAAC,YAAYp/G,EAAE0B,EAAE,EAAE,CAAC,MAAM1B,EAAE0B,EAAE,CAAC,EAAE,KAAK,KAAK,WAAW,KAAK,WAAW,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,SAAS,QAAQ,EAAE,EAAE,WAAW,CAAC,KAAK,UAAU,QAAQ,GAAG,QAAQ,EAAE,EAAE,YAAY,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,aAAa,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,cAAc,CAAC,KAAK,UAAU,QAAQ,EAAE,CAAC,EAAE,KAAK,UAAU,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK1B,EAAE,CAAC,MAAM0B,EAAE1B,GAAG,GAAG0B,EAAE,KAAKo9F,EAAGp9F,EAAE,KAAK,QAAQ,EAAEA,EAAE,QAAQo9F,EAAGp9F,EAAE,QAAQ,EAAE,EAAE,KAAK,SAASo9F,EAAGp9F,EAAE,SAAS,CAAA,CAAE,EAAE,KAAK,WAAWo9F,EAAGp9F,EAAE,WAAW,EAAE,EAAE,KAAK,YAAYo9F,EAAGp9F,EAAE,YAAY,EAAE,EAAE,KAAK,aAAao9F,EAAGp9F,EAAE,aAAa,EAAE,EAAE,KAAK,cAAco9F,EAAGp9F,EAAE,cAAc,EAAE,EAAE,MAAM,KAAKA,CAAC,CAAC,CAAC,WAAW1B,EAAE,CAAC,GAAG,CAACA,EAAE,WAAW,CAAC,KAAK,SAAS,OAAO,OAAO,MAAM0B,EAAE,SAAS1B,EAAE0B,EAAE,CAAA,EAAG,CAAC,MAAM3C,EAAE+/F,EAAGp9F,EAAE,UAAU,KAAK,GAAG,EAAE,EAAE6D,EAAEvF,EAAE,OAAOyB,EAAEzB,EAAE,OAAO,GAAGP,EAAE,IAAI,aAAagC,CAAC,EAAEwtD,EAAE,IAAI,aAAa,EAAExtD,CAAC,EAAElB,EAAE,IAAI,MAAMkB,CAAC,EAAEhB,EAAE,IAAI,MAAMgB,CAAC,EAAEzC,EAAE,IAAI,MAAMyC,CAAC,EAAEoD,EAAE,IAAI,MAAMpD,CAAC,EAAEiD,EAAE,IAAI,MAAMjD,CAAC,EAAE,IAAIya,EAAE,EAAExc,EAAE,EAAEkL,EAAE,EAAE,MAAMjG,EAAE4lG,GAAI,EAAC3lG,EAAE2lG,GAAI,EAACxqG,EAAEwqG,GAAI,EAAC/pG,EAAE+pG,KAAKr2G,EAAEq2G,KAAKhpG,EAAEgpG,KAAK/oG,EAAE+oG,KAAKvV,EAAEuV,KAAK5C,EAAE4C,KAAK3C,EAAE2C,KAAKzT,GAAEyT,KAAKl4C,EAAEk4C,GAAE,EAAGhX,EAAEgX,GAAE,EAAGthF,GAAEshF,GAAE,EAAG1C,GAAE0C,GAAE,EAAG,IAAIt3C,EAAE,EAAE,QAAQP,EAAE,EAAEA,EAAEntD,EAAEmtD,GAAG,GAAG,CAAC,GAAGq4C,GAAGpmG,EAAE3E,EAAE0yD,CAAC,EAAEq4C,GAAGnmG,EAAE5E,EAAE0yD,EAAE,CAAC,EAAEq4C,GAAGhrG,EAAEC,EAAE0yD,EAAE,CAAC,EAAEq4C,GAAGvqG,EAAER,EAAE0yD,EAAE,CAAC,EAAEm4C,GAAG32G,EAAEyQ,EAAEC,CAAC,EAAEimG,GAAGtpG,EAAExB,EAAE6E,CAAC,EAAMsmG,GAAG3pG,CAAC,IAAR,EAAU,SAASspG,GAAGrpG,EAAEhB,EAAET,CAAC,EAAEqrG,GAAGpW,EAAEzzF,EAAE,EAAE,EAAEupG,GAAGnD,EAAE/iG,EAAEowF,CAAC,EAAEqW,GAAGn3G,EAAEA,CAAC,EAAEm3G,GAAG9pG,EAAEA,CAAC,EAAE8pG,GAAG7pG,EAAEA,CAAC,EAAEqpG,GAAG7V,EAAErwF,EAAEgjG,CAAC,EAAE,MAAMpiG,EAAEqlG,GAAG5V,EAAEzzF,CAAC,EAAE,EAAEspG,GAAG7V,EAAEx0F,EAAEmnG,CAAC,EAAE,MAAMlmG,GAAEmpG,GAAG5V,EAAEzzF,CAAC,EAAE,EAAE,GAAG6pG,GAAGpW,EAAEzzF,EAAEqpG,GAAGrpG,EAAErN,CAAC,CAAC,EAAE22G,GAAGjD,EAAE1zG,EAAE8gG,CAAC,EAAEoW,GAAGpW,EAAEzzF,EAAEqpG,GAAGrpG,EAAEC,CAAC,CAAC,EAAEqpG,GAAG/T,GAAEt1F,EAAEwzF,CAAC,EAAMkW,GAAGtD,CAAC,IAAR,GAAesD,GAAGpU,EAAC,IAAR,EAAU,SAASuU,GAAGzD,EAAEA,CAAC,EAAEyD,GAAGvU,GAAEA,EAAC,EAAE,MAAM4Q,EAAEjoG,EAAEwzD,CAAC,EAAEy4C,GAAG9D,EAAE9Q,EAAC,EAAEv2F,EAAE0yD,CAAC,GAAGuyC,GAAGkC,GAAG,QAAQ,CAAC,EAAE,IAAyBiD,GAAG1hF,GAAE2+E,EAAErmG,CAAC,EAAE8pG,GAAGpiF,GAAEA,EAAC,EAAE2hF,GAAG3hF,GAAE6tE,EAAC,EAAE,GAAG2U,GAAGxiF,GAAEA,EAAC,EAAEq2F,GAAGtqB,EAAE2S,EAAEC,EAAE3+E,GAAEy+E,EAAE,CAAC,EAAEsD,GAAGhW,EAAE/lC,EAAE,EAAEgE,CAAC,EAAE,MAAM29C,GAAE,KAAK,KAAKlJ,EAAE3oG,CAAC,EAAE8xG,GAAED,IAAGlvG,EAAE,WAAW,EAAE,GAAGovG,GAAEpvG,EAAE,WAAW,GAAG,EAAEqvG,EAAE,IAAI,aAAa,EAAEF,EAAC,EAAEG,EAAE,IAAI,aAAa,EAAEH,EAAC,EAAE7a,GAAE,IAAI,aAAa,EAAE4a,EAAC,EAAEn+C,GAAE,IAAI,aAAaq+C,EAAC,EAAErwG,EAAEwyD,CAAC,EAAE89C,EAAE/xG,EAAEi0D,CAAC,EAAE+9C,EAAEnsG,EAAEouD,CAAC,EAAE+iC,GAAEtxF,EAAEuuD,CAAC,EAAER,GAAE/wD,EAAE,aAAa6D,GAAGslG,GAAG7V,EAAErwF,EAAE5E,CAAC,EAAEsrG,GAAGrW,EAAEA,CAAC,EAAEoW,GAAG/4C,EAAE2iC,EAAE,EAAE4V,GAAGhD,EAAE5S,CAAC,CAAC,EAAE8V,GAAGz4C,EAAEA,EAAEtyD,CAAC,IAAIqrG,GAAG/4C,EAAEn+D,EAAE,EAAE02G,GAAGhD,EAAE1zG,CAAC,CAAC,EAAE42G,GAAGz4C,EAAEA,EAAEztD,CAAC,GAAGnD,IAAGopG,GAAG7V,EAAEx0F,EAAEoE,CAAC,EAAEymG,GAAGrW,EAAEA,CAAC,EAAEoW,GAAG7X,EAAEyB,EAAE,EAAE4V,GAAG9T,GAAE9B,CAAC,CAAC,EAAE8V,GAAGvX,EAAEA,EAAE3uF,CAAC,IAAIwmG,GAAG7X,EAAE/xF,EAAE,EAAEopG,GAAG9T,GAAEt1F,CAAC,CAAC,EAAEspG,GAAGvX,EAAEA,EAAExzF,CAAC,IAAI+qG,GAAGjD,GAAEF,EAAEC,CAAC,EAAE,IAAIxgG,EAAE,EAAE1F,EAAE,YAAYspG,GAAGrmG,EAAEosG,EAAE3pG,CAAC,EAAE4jG,GAAG34C,EAAE2+C,EAAE5pG,CAAC,EAAEA,GAAG,EAAE4jG,GAAG34C,EAAE0+C,EAAE3pG,CAAC,EAAE4jG,GAAGnD,GAAEmJ,EAAE5pG,CAAC,EAAEA,GAAG,EAAE4jG,GAAG34C,EAAEI,GAAE,CAAC,EAAEu4C,GAAGnD,GAAEp1C,GAAE,CAAC,EAAEu4C,GAAGzlG,EAAExF,EAAE6E,EAAE6tD,GAAE,CAAC,EAAEu4C,GAAGzlG,EAAExF,EAAE6E,EAAE6tD,GAAE,CAAC,EAAEu4C,GAAGnD,GAAEp1C,GAAE,EAAE,EAAEu4C,GAAGrD,EAAEl1C,GAAE,EAAE,IAAIu4C,GAAGrD,EAAEoJ,EAAE3pG,CAAC,EAAE4jG,GAAGnD,GAAEmJ,EAAE5pG,CAAC,EAAEA,GAAG,GAAG,MAAMirG,GAAE,SAASryG,GAAE0B,GAAE,CAAC,MAAM3C,GAAE,EAAE2C,GAAEspG,GAAGrD,EAAE3R,GAAEj3F,EAAC,EAAEisG,GAAGnD,GAAE7R,GAAEj3F,GAAE,CAAC,EAAEisG,GAAGnD,GAAEkJ,EAAE3pG,CAAC,EAAEk4G,GAAGzX,GAAEF,EAAEC,EAAE3+E,GAAEjpB,EAAC,EAAEgrG,GAAGnD,GAAE7R,GAAEj3F,GAAE,CAAC,EAAEisG,GAAGnD,GAAEmJ,EAAE5pG,CAAC,EAAEA,GAAG,CAAC,EAAE,IAAIkrG,GAAE,EAAE,QAAQtyG,GAAEjB,EAAEiB,GAAE0nG,EAAE1nG,IAAGjB,EAAEszG,GAAEryG,GAAEsyG,IAAG,EAAED,GAAE3K,EAAE4K,IAAG,EAAE5wG,EAAE,YAAYspG,GAAGnD,GAAEkJ,EAAE,GAAGF,GAAE,EAAE,EAAE7F,GAAGzX,EAAEyd,EAAE,GAAGH,GAAE,EAAE,EAAE7F,GAAGzX,EAAEwd,EAAE,GAAGF,GAAE,EAAE,EAAE7F,GAAGxqG,EAAEwwG,EAAE,GAAGH,GAAE,EAAE,EAAE7F,GAAGzX,EAAE9gC,GAAE,EAAE,EAAEu4C,GAAGnD,GAAEp1C,GAAE,EAAE,EAAEu4C,GAAGvpG,GAAEmD,EAAE7E,EAAE0yD,GAAE,EAAE,EAAEu4C,GAAGvpG,GAAEmD,EAAE7E,EAAE0yD,GAAE,EAAE,EAAEu4C,GAAGnD,GAAEp1C,GAAE,EAAE,EAAEu4C,GAAGrD,EAAEl1C,GAAE,EAAE,IAAIu4C,GAAGnD,GAAEkJ,EAAE3pG,CAAC,EAAE4jG,GAAGrD,EAAEqJ,EAAE5pG,CAAC,EAAEA,GAAG,GAAG8U,GAAG,EAAE20F,GAAEnxG,GAAG,EAAEkxG,GAAEhmG,GAAGkmG,GAAE79C,GAAG,CAAC,CAAC,MAAMy0C,GAAEz0C,EAAE29C,GAAE,IAAI,aAAa10F,CAAC,EAAE20F,GAAE,IAAI,aAAa30F,CAAC,EAAE40F,EAAE,IAAI,aAAapxG,CAAC,EAAEqxG,GAAE,IAAI,aAAanmG,CAAC,EAAE,IAAIomG,EAAE,EAAEhb,EAAE,EAAEvjC,EAAE,EAAE,QAAQzyD,EAAE,EAAEA,EAAE0nG,GAAE1nG,IAAI,CAAC,MAAM0B,GAAEjB,EAAET,CAAC,EAAEjB,EAAEC,EAAEgB,CAAC,EAAEuF,GAAEV,EAAE7E,CAAC,EAAEyB,GAAEiD,EAAE1E,CAAC,EAAEimG,GAAGvkG,GAAEkvG,GAAE,EAAEI,EAAEtvG,GAAE,MAAM,EAAEukG,GAAGlnG,EAAE8xG,GAAE,EAAEG,EAAEjyG,EAAE,MAAM,EAAEknG,GAAG1gG,GAAEurG,EAAE,EAAE9a,EAAEzwF,GAAE,MAAM,EAAE0gG,GAAGxkG,GAAEsvG,GAAE,EAAEt+C,EAAEhxD,GAAE,MAAM,EAAEuvG,GAAGtvG,GAAE,OAAOs0F,GAAGzwF,GAAE,OAAOktD,GAAGhxD,GAAE,MAAM,CAAC,MAAM,CAAC,cAAcwtD,EAAE,SAAS,EAAE,EAAEy4C,EAAC,EAAE,UAAUnnG,EAAE,MAAM,EAAEmnG,EAAC,EAAE,cAAckJ,GAAE,cAAcC,GAAE,cAAcE,GAAE,eAAeD,CAAC,CAAC,EAAEuO,GAAGr/G,EAAE,KAAK,QAAQ,EAAE,CAAC,WAAW,KAAK,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE0B,EAAE,UAAU,OAAO,EAAE,IAAID,GAAE,KAAK,UAAU,EAAE,KAAK,WAAW,IAAIs+G,GAAG,CAAC,SAASr+G,EAAE,cAAc,KAAKkkG,GAAG,EAAE,KAAK,SAAS,EAAE,MAAMC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAKnkG,EAAE,SAAS,EAAE,KAAK,qBAAsB,CAAA,EAAE,MAAMjC,EAAE,IAAIgC,GAAE,KAAK,UAAU,EAAE,KAAK,WAAWC,EAAE,cAAc,OAAO,EAAE,MAAM,EAAEmkG,GAAG,KAAK,WAAWpmG,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,EAAE,OAAO,KAAK,WAAW,IAAIygH,GAAGrU,GAAG,CAAC,UAAUnqG,EAAE,cAAc,UAAUA,EAAE,cAAc,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,gBAAgB,CAAC,UAAU,KAAK,UAAU,QAAQ,KAAK,YAAY,QAAQ,KAAK,WAAW,CAAC,CAAC,EAAE,KAAK,YAAYA,EAAE,cAAc,OAAO,EAAE,KAAK,YAAY,IAAI+yG,GAAG,CAAC,SAAS/yG,EAAE,cAAc,MAAMmkG,GAAG,KAAK,YAAYpmG,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,CAAC,EAAE,KAAK,gBAAgB,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,EAAE,KAAK,aAAaiC,EAAE,eAAe,OAAO,EAAE,KAAK,aAAa,IAAI+yG,GAAG,CAAC,SAAS/yG,EAAE,eAAe,MAAMmkG,GAAG,KAAK,aAAapmG,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,CAAC,EAAE,KAAK,gBAAgB,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,WAAW,KAAK,WAAW,KAAK,YAAY,KAAK,YAAY,CAAC,CAAC,CAAC,WAAWO,EAAE0B,EAAE,CAAC,MAAM,WAAW1B,EAAE0B,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAA,EAAGjC,EAAE,CAAE,EAAC,GAAGO,EAAE,MAAM,CAAC,MAAMA,EAAE,IAAIyB,GAAE,KAAK,UAAU,EAAE,OAAO,OAAO,EAAE,CAAC,MAAMokG,GAAG,KAAK,WAAW7lG,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,EAAE,OAAO6lG,GAAG,KAAK,WAAW7lG,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,OAAO,EAAE,CAAC,MAAM6lG,GAAG,KAAK,YAAY7lG,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,OAAOP,EAAE,CAAC,MAAMomG,GAAG,KAAK,aAAa7lG,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,WAAW,cAAc,CAAC,EAAE,KAAK,YAAY,cAAc,CAAC,EAAE,KAAK,aAAa,cAAcP,CAAC,CAAC,CAAC,cAAcO,EAAE,CAAC,OAAO,MAAM,cAAcA,EAAE,GAAG,EAAE,EAAE,CAACA,GAAYA,EAAE,cAAX,QAAiCA,EAAE,gBAAX,QAAmCA,EAAE,eAAX,QAAyB,KAAK,cAAc,KAAK,OAAO,EAAEA,GAAGA,EAAE,aAAa,KAAK,WAAW,cAAc,CAAC,QAAQA,EAAE,WAAW,CAAC,EAAEA,GAAYA,EAAE,UAAX,QAAoB,KAAK,WAAW,cAAc,CAAC,QAAQ,KAAK,WAAW,CAAC,EAAEA,GAAGA,EAAE,WAAW,KAAK,WAAW,cAAc,CAAC,UAAUA,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,cAAcA,EAAE0B,EAAE,CAAC,OAAO,MAAM,cAAc1B,EAAE,EAAE,EAAE,KAAK,YAAY,KAAK,WAAW,cAAc,KAAK,aAAa,KAAK,OAAO,EAAE,KAAK,aAAa,KAAK,YAAY,cAAc,KAAK,cAAc,KAAK,OAAO,EAAE,KAAK,cAAc,KAAK,aAAa,cAAc,KAAK,eAAe,KAAK,OAAO,EAAE0B,GAAG,KAAK,OAAO,cAAe,EAAC,IAAI,CAAC,CAACiiG,GAAG,IAAI,WAAWge,EAAE,EAAE,SAASC,GAAG,EAAE,EAAE,CAAC,SAAS7iH,EAAEiB,EAAE0B,EAAE,CAAC,OAAOA,KAAK1B,CAAC,CAAC,MAAMuF,EAAE,OAAO,OAAO,CAAE,EAAC,CAAC,EAAE,UAAUvF,KAAKuF,EAAExG,EAAEwG,EAAEvF,CAAC,GAAGjB,EAAE,EAAEiB,CAAC,IAAIuF,EAAEvF,CAAC,EAAE8+F,EAAG,EAAE9+F,CAAC,EAAEuF,EAAEvF,CAAC,CAAC,GAAG,OAAOuF,CAAC,CAAC,SAASs8G,GAAG,EAAE,EAAE,CAAC,MAAM9iH,EAAE,IAAI0C,GAAE,CAAC,EAAE8D,EAAE,IAAI,aAAa,EAAE,CAAC,EAAE,OAAOsgG,GAAG,EAAE9mG,EAAE,EAAEA,EAAE,EAAEA,EAAE,EAAEwG,CAAC,EAAEA,CAAC,CAAC,MAAMu8G,WAAW3C,EAAE,CAAC,YAAYn/G,EAAE0B,EAAE,EAAE,CAAC,MAAM1B,EAAE0B,EAAE,CAAC,EAAE,KAAK,KAAK,qBAAqB,KAAK,WAAW,OAAO,OAAO,CAAC,eAAe,CAAC,KAAK,SAAS,QAAQ,EAAE,EAAE,0BAA0B,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,qBAAqB,CAAC,KAAK,UAAU,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,KAAK,UAAU,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK1B,EAAE,CAAC,MAAM0B,EAAE1B,GAAG,CAAE,EAAC,EAAE4hH,GAAG,CAAC,wBAAwB,OAAO,uBAAuB,QAAQ,sBAAsB,UAAU,oBAAoB,QAAQ,mBAAmB,OAAO,sBAAsB,OAAO,EAAElgH,CAAC,EAAE,OAAO,OAAO,KAAK,CAAC,EAAE,MAAM,EAAEkgH,GAAG,CAAC,eAAe,CAAE,EAAC,iBAAiB,EAAE,wBAAwB,GAAG,wBAAwB,EAAE,0BAA0B,GAAG,wBAAwB,EAAE,0BAA0B,GAAG,iBAAiB,GAAG,eAAe,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,EAAElgH,CAAC,EAAE,OAAO,OAAO,KAAK,CAAC,EAAE,KAAK,eAAe,QAAS1B,GAAG,CAAC,MAAM0B,EAAEkgH,GAAG,EAAE5hH,CAAC,EAAE,OAAO,OAAOA,EAAE0B,CAAC,CAAC,CAAC,EAAGA,EAAE,KAAKo9F,EAAGp9F,EAAE,KAAK,QAAQ,EAAEA,EAAE,QAAQo9F,EAAGp9F,EAAE,QAAQ,EAAE,EAAEA,EAAE,WAAWo9F,EAAGp9F,EAAE,WAAW,MAAM,EAAEA,EAAE,WAAWo9F,EAAGp9F,EAAE,WAAW,GAAG,EAAE,MAAM,KAAKA,CAAC,CAAC,CAAC,uCAAuC,CAAC,OAAO,KAAK,gBAAgB,CAAC,UAAU,KAAK,wBAAwB,QAAQ,KAAK,0BAA0B,QAAQ,KAAK,yBAAyB,CAAC,CAAC,CAAC,+BAA+B,CAAC,OAAO,KAAK,gBAAgB,CAAC,UAAU,KAAK,eAAe,QAAQ,KAAK,iBAAiB,QAAQ,KAAK,gBAAgB,CAAC,CAAC,CAAC,qCAAqC,CAAC,OAAO,KAAK,gBAAgB,CAAC,QAAQ,KAAK,wBAAwB,QAAQ,KAAK,uBAAuB,CAAC,CAAC,CAAC,8BAA8B,CAAC,OAAO,KAAK,gBAAgB,CAAC,QAAQ,GAAG,QAAQ,KAAK,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW1B,EAAE,CAAC,GAAG,CAACA,EAAE,WAAW,CAAC,KAAK,eAAe,OAAO,OAAO,KAAK,eAAe,QAAS0B,GAAGA,EAAE,cAAc29G,GAAGr/G,EAAE,CAAC0B,EAAE,QAAQ,CAAC,GAAI,MAAMA,EAAE,KAAK,qBAAqB,SAAS1B,EAAE,CAAC,OAAO,KAAK,KAAKA,CAAC,CAAC,EAAE,SAASA,EAAE,CAAC,OAAOA,CAAC,EAAE,SAAS,EAAEA,EAAE,CAAC,MAAM0B,EAAE1B,EAAE,IAAKA,GAAGA,EAAE,MAAQ,EAACjB,EAAE,IAAI,aAAasnG,GAAG3kG,CAAC,CAAC,EAAE,IAAI6D,EAAE,EAAE,QAAQ7D,EAAE,EAAEA,EAAE1B,EAAE,OAAO0B,IAAI3C,EAAE,IAAIiB,EAAE0B,CAAC,EAAE6D,CAAC,EAAEA,GAAGvF,EAAE0B,CAAC,EAAE,OAAO,OAAO3C,CAAC,CAAC,SAAS,EAAEiB,EAAE0B,EAAE,CAAC,OAAO,IAAIw+G,GAAG,CAAC,UAAU,EAAElgH,EAAE,IAAKA,GAAGA,EAAE,YAAa,EAAE,UAAU,EAAEA,EAAE,IAAKA,GAAGA,EAAE,UAAW,EAAE,MAAM,EAAEA,EAAE,IAAKA,GAAGA,EAAE,WAAa,CAAA,EAAE,OAAO,EAAEA,EAAE,IAAKA,GAAGA,EAAE,SAAS,CAAE,CAAC,EAAE0B,CAAC,CAAC,CAAC,SAAS,EAAE1B,EAAE0B,EAAE,CAAC,OAAO,IAAI+yG,GAAG,CAAC,SAAS,EAAEz0G,EAAE,IAAKA,GAAGA,EAAE,UAAW,EAAE,MAAM,EAAEA,EAAE,IAAKA,GAAGA,EAAE,eAAgB,CAAC,EAAE0B,CAAC,CAAC,CAAC,KAAK,eAAe,QAAS1B,GAAGA,EAAE,mBAAmBA,EAAE,aAAa,IAAI0B,CAAC,CAAC,EAAG,MAAMjC,EAAE,CAAA,EAAG,QAAQO,EAAE,EAAEA,EAAE,KAAK,eAAe,OAAOA,IAAI,CAAC,IAAI0B,EAAE3C,EAAE,KAAK,eAAeiB,CAAC,EAAEjB,EAAE,aAAa,QAAQ,IAAI2C,EAAEqgH,GAAGhjH,CAAC,GAAY2C,IAAT,QAAYjC,EAAE,KAAKiC,CAAC,CAAC,CAAC,OAAO,KAAK,+BAA+B,EAAEjC,EAAE,IAAKO,GAAGA,EAAE,wBAAwB,EAAG,KAAK,sCAAqC,CAAE,EAAE,KAAK,8BAA8B,EAAEP,EAAE,IAAKO,GAAGA,EAAE,yBAA0B,KAAK,uCAAuC,EAAE,KAAK,yBAAyB,EAAEP,EAAE,IAAKO,GAAGA,EAAE,kBAAkB,EAAG,KAAK,8BAA6B,CAAE,EAAE,KAAK,wBAAwB,EAAEP,EAAE,IAAKO,GAAGA,EAAE,mBAAoB,KAAK,+BAA+B,EAAE,KAAK,uBAAuB,EAAEP,EAAE,IAAKO,GAAGA,EAAE,gBAAkB,EAAC,KAAK,oCAAqC,CAAA,EAAE,KAAK,qBAAqB,EAAEP,EAAE,IAAKO,GAAGA,EAAE,cAAgB,EAAC,KAAK,6BAA8B,CAAA,EAAE,KAAK,oBAAoB,EAAEP,EAAE,IAAKO,GAAGA,EAAE,aAAe,EAAC,KAAK,6BAA8B,CAAA,EAAE,CAAC,WAAW,CAAA,EAAG,OAAO,KAAK,+BAA+B,KAAK,8BAA8B,KAAK,yBAAyB,KAAK,wBAAwB,KAAK,uBAAuB,KAAK,qBAAqB,KAAK,mBAAmB,CAAC,CAAC,CAAC,cAAcA,EAAE,CAAC,OAAO,MAAM,cAAcA,EAAE,GAAG,EAAE,EAAEA,GAAYA,EAAE,4BAAX,QAAsC,KAAK,cAAc,KAAK,OAAO,EAAE,IAAI,CAAC,cAAcA,EAAE0B,EAAE,CAAC,OAAO,MAAM,cAAc1B,EAAE,EAAE,EAAE,KAAK,gCAAgC,KAAK,+BAA+B,cAAc,KAAK,yBAAyB,EAAE,KAAK,+BAA+B,KAAK,8BAA8B,cAAc,KAAK,yBAAyB,EAAE0B,GAAG,KAAK,OAAO,gBAAgB,IAAI,CAAC,CAAC,SAASqgH,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,cAAchjH,EAAE,EAAE,mBAAmBwG,EAAExG,EAAE,QAAQ,IAAI,IAAI,EAAEA,EAAE,OAAO0C,EAAE,CAAC,UAAU,IAAI,aAAa,EAAE8D,EAAE,CAAC,EAAE,eAAes8G,GAAG,EAAE,sBAAsB,EAAEt8G,CAAC,CAAC,EAAE9F,EAAE,CAAC,UAAU,IAAI,aAAa,EAAEV,EAAE,OAAO,CAAC,EAAE,eAAe8iH,GAAG,EAAE,oBAAoB,EAAE9iH,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,UAAU,IAAI,aAAa,EAAEA,EAAE,OAAO,CAAC,EAAE,eAAe8iH,GAAG,EAAE,mBAAmB,EAAE9iH,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,YAAY,IAAI,aAAa,EAAEA,EAAE,MAAM,EAAE,UAAU,IAAI,aAAa,EAAEA,EAAE,MAAM,EAAE,YAAY8iH,GAAG,EAAE,wBAAwB9iH,EAAE,MAAM,EAAE,UAAU8iH,GAAG,EAAE,wBAAwB9iH,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,YAAY,IAAI,aAAa,EAAEA,EAAE,MAAM,EAAE,UAAU,IAAI,aAAa,EAAEA,EAAE,MAAM,EAAE,YAAY8iH,GAAG,EAAE,wBAAwB9iH,EAAE,MAAM,EAAE,UAAU8iH,GAAG,EAAE,wBAAwB9iH,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,YAAY,IAAI,aAAa,CAAC,EAAE,UAAU,IAAI,aAAa,CAAC,EAAE,YAAY8iH,GAAG,EAAE,uBAAuB9iH,EAAE,MAAM,EAAE,UAAU8iH,GAAG,EAAE,uBAAuB9iH,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,YAAY,IAAI,aAAa,CAAC,EAAE,UAAU,IAAI,aAAa,CAAC,EAAE,YAAY8iH,GAAG,EAAE,sBAAsB9iH,EAAE,MAAM,EAAE,UAAU8iH,GAAG,EAAE,sBAAsB9iH,EAAE,MAAM,CAAC,EAAE2F,EAAE6lG,GAAI,EAACruF,EAAEquF,GAAI,EAAC7qG,EAAE6qG,GAAI,EAAC,EAAEA,GAAI,EAAC5lG,EAAE4lG,GAAI,EAAC,EAAEA,GAAI,EAACxqG,EAAEwqG,GAAI,EAAC/pG,EAAE+pG,GAAI,EAACr2G,EAAEq2G,GAAI,EAAChpG,EAAEgpG,GAAI,EAAC/oG,EAAE+oG,GAAI,EAACvV,EAAEuV,GAAI,EAAC5C,EAAE4C,GAAI,EAAC,EAAEA,GAAI,EAACzT,EAAEyT,GAAI,EAACl4C,EAAEk4C,KAAKhX,EAAE,CAAC7uF,EAAEwX,EAAExc,EAAE,CAAC,EAAE,QAAQM,GAAE,EAAEA,GAAEuzF,EAAE,OAAOvzF,KAAI+qG,GAAGxX,EAAEvzF,EAAC,EAAE,EAAE,EAAEA,EAAC,EAAoD,GAA/C6qG,GAAGlmG,EAAED,EAAEwX,CAAC,EAAE2uF,GAAG,EAAEnrG,EAAEwc,CAAC,EAAE2uF,GAAGrqG,EAAE,EAAEd,CAAC,EAAMwrG,GAAG,CAAC,IAAR,IAAoBE,GAAGtU,EAAE,EAAE,EAAE,EAAEgU,GAAG52G,EAAEgoB,EAAE46E,CAAC,EAAEuU,GAAG1mG,EAAEA,CAAC,EAAE0mG,GAAG,EAAE,CAAC,EAAEA,GAAG7qG,EAAEA,CAAC,EAAEirG,GAAG1rG,EAAE,CAAC,EAAEqrG,GAAGtU,EAAE/2F,EAAE6qG,GAAG7qG,EAAE4E,CAAC,CAAC,EAAEkmG,GAAGtpG,EAAEoD,EAAEmyF,CAAC,EAAEsU,GAAGtU,EAAE,EAAE8T,GAAG,EAAEpqG,CAAC,CAAC,EAAEqqG,GAAGrpG,EAAEhB,EAAEs2F,CAAC,EAAMoU,GAAG3pG,CAAC,IAAR,GAAe2pG,GAAG1pG,CAAC,IAAR,GAAU,OAAO6pG,GAAG9pG,EAAEA,CAAC,EAAE8pG,GAAG7pG,EAAEA,CAAC,EAAE,MAAMynB,EAAE,KAAK,KAAK2hF,GAAGrpG,EAAEC,CAAC,CAAC,EAAEmpG,GAAG3V,EAAEj1F,EAAEwB,CAAC,EAAEopG,GAAGhD,EAAE,EAAEnmG,CAAC,EAAE6pG,GAAGrW,EAAEA,CAAC,EAAEqW,GAAG1D,EAAEA,CAAC,EAAE,IAAIE,EAAE5+E,EAAE2hF,GAAG5V,EAAExzF,CAAC,EAAE,IAAIqmG,EAAE,CAAC5+E,GAAG6hF,GAAG,EAAE52G,EAAEqN,CAAC,EAAE,MAAM0xD,EAAE,KAAK,IAAI,MAAM,KAAKl0D,CAAC,EAAE2zD,EAAE,EAAE,KAAK,GAAG3zD,EAAE,OAAO,SAAS2oG,GAAE1nG,GAAE0B,GAAE6D,EAAE9D,EAAEhC,GAAE,CAAC,MAAMwvD,GAAE,EAAEvtD,GAAE,EAAEspG,GAAG92G,EAAE8L,GAAEivD,EAAC,EAAE,MAAM1uD,GAAE,OAAOxB,EAAE2C,EAAC,CAAC,EAAEuxD,EAAEm4C,GAAGtU,EAAEvxF,EAAEhF,EAAC,EAAE6qG,GAAG/4C,EAAE5wD,EAAElB,EAAC,EAAE++G,GAAG,EAAEprH,EAAE4iG,EAAEzkC,EAAE3wD,GAAEjC,EAAC,EAAEurG,GAAG,EAAEhrG,GAAEivD,GAAE,CAAC,EAAEqwD,GAAG,EAAEprH,EAAE4iG,EAAEzkC,GAAG3wD,GAAE,GAAGjC,EAAC,EAAEurG,GAAG,EAAEhrG,GAAEivD,GAAE,CAAC,CAAC,CAAC,SAAS2hD,EAAE5wG,GAAE0B,GAAE6D,EAAE9D,EAAEhC,GAAE,CAACwmG,GAAG/xG,EAAE,EAAE,YAAY,EAAE,EAAEqR,EAAErR,EAAE,MAAM,EAAEorH,GAAGxoB,EAAE5iG,EAAEuN,EAAEhC,GAAE,EAAE,EAAEizD,CAAC,EAAEuzC,GAAGnP,EAAE,EAAE,UAAU,EAAE,EAAEvxF,EAAErR,EAAE,MAAM,EAAE+xG,GAAG/xG,EAAE,EAAE,YAAY,EAAE,EAAEqR,EAAErR,EAAE,MAAM,EAAEorH,GAAGxoB,EAAE5iG,EAAEuN,EAAEhC,GAAEooG,CAAC,EAAE5B,GAAGnP,EAAE,EAAE,UAAU,EAAE,EAAEvxF,EAAErR,EAAE,MAAM,EAAE,QAAQ8L,GAAE,EAAEA,GAAEjB,EAAE,OAAOiB,KAAIimG,GAAG/xG,EAAEwN,GAAE,YAAY,EAAE,EAAE1B,GAAE9L,EAAE,MAAM,EAAEorH,GAAGxoB,EAAE5iG,EAAEuN,EAAEhC,GAAE,EAAEizD,EAAE1yD,EAAC,EAAEimG,GAAGnP,EAAEp1F,GAAE,UAAU,EAAE,EAAE1B,GAAE82F,EAAE,MAAM,EAAE,QAAQp1F,GAAE,EAAEA,GAAE3C,EAAE,OAAO2C,KAAIgmG,GAAE1nG,GAAE,UAAU0B,GAAED,EAAEhC,GAAEizD,CAAC,CAAC,CAAC,MAAMm+C,EAAE,EAAE,KAAK,GAAGtrG,EAAE,QAAQvF,GAAE,EAAEA,GAAEuF,EAAEvF,KAAI,CAAC,MAAM0B,GAAE,EAAE1B,GAAE,EAAEgrG,GAAG92G,EAAEuN,EAAE,UAAUC,EAAC,EAAE49G,GAAG,EAAEprH,EAAEqN,EAAEyzF,EAAEh1F,GAAE6wG,CAAC,EAAE7F,GAAG,EAAEvpG,EAAE,UAAUC,GAAE,CAAC,EAAE49G,GAAG,EAAEprH,EAAEqN,EAAEyzF,GAAGh1F,GAAE,GAAG6wG,CAAC,EAAE7F,GAAG,EAAEvpG,EAAE,UAAUC,GAAE,CAAC,CAAC,CAAC,OAAO0pG,GAAGtU,EAAE,EAAE,IAAI,EAAEgU,GAAG52G,EAAEA,EAAE4iG,CAAC,EAAE8Z,EAAEnxG,EAAE,EAAE,EAAE8B,EAAEyzF,CAAC,EAAEoW,GAAGtU,EAAE,EAAE,GAAG,EAAEgU,GAAG52G,EAAEA,EAAE4iG,CAAC,EAAE8Z,EAAE,EAAE,EAAE,EAAEpvG,EAAEmmG,CAAC,EAAE,CAAC,iBAAiBlmG,EAAE,eAAehC,EAAE,cAAc,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,CAAC,CAACkkG,GAAG,IAAI,qBAAqBme,EAAE,EAAE,MAAM7yG,WAAWmwG,EAAE,CAAC,YAAYp/G,EAAE0B,EAAE,EAAE,CAAC,MAAM1B,EAAE0B,EAAE,CAAC,EAAE,KAAK,KAAK,WAAW,KAAK,WAAW,OAAO,OAAO,CAAC,eAAe,GAAG,UAAU,GAAG,gBAAgB,GAAG,UAAU,CAAC,KAAK,SAAS,QAAQ,GAAG,QAAQ,CAAC,GAAG,GAAG,SAAS,WAAW,GAAG,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,SAAS,CAAC,KAAK,SAAS,QAAQ,EAAE,CAAC,EAAE,KAAK,UAAU,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK1B,EAAE,CAAC,MAAM0B,EAAE1B,GAAG,CAAE,EAAC0B,EAAE,UAAUo9F,EAAGp9F,EAAE,UAAU,CAAC,EAAEA,EAAE,WAAWo9F,EAAGp9F,EAAE,WAAW,MAAM,EAAEA,EAAE,WAAWo9F,EAAGp9F,EAAE,WAAW,EAAE,EAAE,KAAK,UAAUo9F,EAAGp9F,EAAE,UAAU,EAAE,EAAE,KAAK,YAAYo9F,EAAGp9F,EAAE,YAAY,EAAE,EAAE,KAAK,SAASo9F,EAAGp9F,EAAE,SAAS,EAAE,EAAE,MAAM,KAAKA,CAAC,CAAC,CAAC,gBAAgB1B,EAAE0B,EAAE,CAAC,IAAI,EAAEA,EAAE,OAAO,MAAM,EAAE,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,aAAa,EAAE,CAAC,EAAE,MAAMjC,EAAE,IAAI2iG,GAAGnzC,EAAE,IAAImzC,GAAG7hG,EAAE,IAAIwc,GAAGtc,EAAET,EAAE,eAAehB,EAAEgB,EAAE,aAAY,EAAG,IAAI6E,EAAE,EAAE,MAAMH,EAAE1E,EAAE,WAAU,EAAG0B,EAAE,QAAS,CAACA,EAAE3C,IAAI,CAAC,IAAImd,EAAExa,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,GAAa,OAAOwa,GAAjB,UAAoB,OAAO,UAAUA,CAAC,GAAa,OAAO,GAAjB,UAAoB,OAAO,UAAU,CAAC,EAAE,CAAC,GAAG,CAACxX,EAAE,IAAIwX,CAAC,GAAG,CAACxX,EAAE,IAAI,CAAC,EAAE,OAAO,KAAKG,GAAG,GAAGpE,EAAE,MAAMyb,EAAEld,EAAE,MAAM,CAAC,KAAK,CAACS,EAAE,UAAUyc,CAAC,EAAE+yC,EAAE,UAAU,CAAC,EAAE,IAAIrkD,EAAE5K,EAAE,eAAeP,CAAC,EAAEkF,EAAE3E,EAAE,eAAeivD,CAAC,EAAE,GAAG,CAACrkD,EAAE,QAAQ,CAACjG,EAAE,OAAO,OAAO,KAAKE,GAAG,GAAGpE,EAAE,MAAMmK,EAAE,CAAC,EAAE5L,EAAE,MAAM2F,EAAE,CAAC,CAAC,CAACpE,EAAE,QAAQE,EAAEzB,EAAE,CAAC,EAAED,GAAG8F,EAAE,IAAID,EAAEnE,EAAE,WAAWzB,CAAC,EAAE,OAAO,KAAK,UAAW,CAAA,IAAI,WAAW,EAAED,CAAC,EAAE6F,EAAE,QAAQ,CAAC,EAAE,KAA8B,MAAM,IAAI,KAAK,EAAE7F,CAAC,GAAG6F,EAAE,IAAI,QAAQ,CAAC,EAAE,MAAM,MAAM,QAAQ,EAAE7F,CAAC,EAAE6F,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI7E,EAAE,EAAEhB,EAAE,EAAEgB,EAAE,CAAC,GAAGU,EAAE,EAAEzB,EAAE,GAAG,EAAE,EAAEe,EAAE,CAAC,GAAGU,EAAE,EAAEzB,EAAE,GAAG,EAAE,EAAEe,EAAE,CAAC,GAAGU,EAAE,EAAEzB,EAAE,GAAG,CAAC,CAAG,EAAC6F,EAAE,IAAI,GAAGA,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,GAAG,IAAIqX,EAAE,IAAI6wF,GAAGxsG,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ2b,EAAE,UAAU3b,CAAC,CAAC,CAAC,YAAYP,EAAE0B,EAAE,EAAE,CAAC,MAAM,EAAE1B,EAAE,YAAY,KAAK,cAAc0B,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,IAAIohE,GAAG,EAAE,QAAQ,MAAM,EAAE,QAAQ,UAAU,EAAE,SAAS,GAAG,CAAC,CAAC,WAAW9iE,EAAE,CAAC,GAAG,CAACA,EAAE,WAAW,CAAC,KAAK,SAAS,OAAO,OAAO,MAAM0B,EAAE,KAAK,SAAS,OAAO,EAAE,IAAID,GAAE,KAAK,UAAU,EAAE,EAAE,KAAK,gBAAgBzB,EAAE,KAAK,QAAQ,EAAE,KAAK,WAAW,IAAI+/G,GAAG,CAAC,SAAS,EAAE,SAAS,KAAKna,GAAGlkG,EAAE,KAAK,SAAS,EAAE,MAAMmkG,GAAGnkG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,qBAAoB,CAAE,EAAE,MAAMjC,EAAE,CAAC,QAAQ,EAAE,QAAQ,UAAU,EAAE,SAAS,EAAE,EAAE,KAAK,YAAYO,EAAE,CAAC,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,KAAK,WAAW,EAAEP,CAAC,EAAE,OAAO,KAAK,YAAY,KAAK,eAAe,IAAIwhH,GAAG,EAAE,KAAK,gBAAgB,CAAC,UAAU,KAAK,UAAU,eAAe,KAAK,eAAe,gBAAgB,KAAK,gBAAgB,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,eAAe,IAAIf,GAAGtU,GAAG,CAAC,EAAE,KAAK,gBAAgB,CAAC,UAAU,KAAK,UAAU,QAAQ,KAAK,YAAY,QAAQ,KAAK,WAAW,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,UAAU,EAAE,UAAU,SAAS,EAAE,SAAS,WAAW,CAAC,KAAK,WAAW,KAAK,cAAc,CAAC,CAAC,CAAC,WAAW5rG,EAAE0B,EAAE,CAAC,MAAM,WAAW1B,EAAE0B,CAAC,EAAE,MAAM,EAAE,CAAC,QAAQA,EAAE,QAAQ,UAAUA,EAAE,SAAS,EAAE,EAAE,KAAK,YAAYA,EAAE,MAAM1B,EAAE,CAAC,EAAE,EAAE,CAAE,EAACA,GAAG,CAACA,EAAE,OAAO,OAAO,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,OAAO,EAAE,MAAM,CAAC,EAAEA,GAAG,CAACA,EAAE,QAAQ,OAAO,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,KAAK,eAAe,cAAc,CAAC,CAAC,CAAC,cAAcA,EAAE,CAAC,OAAO,MAAM,cAAcA,EAAE,GAAG,EAAE,EAAE,KAAK,cAAcA,GAAGA,EAAE,aAAa,KAAK,eAAe,cAAc,CAAC,QAAQA,EAAE,WAAW,CAAC,EAAEA,GAAYA,EAAE,UAAX,QAAoB,KAAK,eAAe,cAAc,CAAC,QAAQ,KAAK,WAAW,CAAC,EAAEA,GAAGA,EAAE,WAAW,KAAK,eAAe,cAAc,CAAC,UAAUA,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,SAASgiH,GAAG,EAAE,CAAC,MAAO,IAAG,EAAE,SAAS,OAAO,GAAG,CAAC,CAACre,GAAG,IAAI,WAAW10F,EAAE,EAAE,MAAMgzG,GAAG,OAAO,OAAO,CAAC,MAAM,EAAE,MAAM,MAAM,EAAE3N,EAAE,EAAE,MAAM4N,WAAW1N,EAAE,CAAC,YAAYx0G,EAAE0B,EAAE,CAAA,EAAG,CAAC,MAAM,CAAC,SAAS,IAAI,aAAasgH,GAAGhiH,CAAC,CAAC,EAAE,MAAM,IAAI,aAAagiH,GAAGhiH,CAAC,CAAC,CAAC,EAAE0B,CAAC,EAAE,KAAK,OAAO,GAAG,KAAK,aAAa,YAAY,KAAK,eAAe,YAAY,MAAM,EAAE,IAAID,GAAE,KAAK,WAAW,KAAK,EAAE,EAAE,KAAK,SAAS,WAAWokG,GAAGmc,GAAGhiH,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,KAAK,EAAE,KAAK,cAAcA,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,OAAOiiH,EAAE,CAAC,cAAcjiH,EAAE,GAAG,CAAC,MAAM0B,EAAE,KAAK,SAAS,WAAW,IAAI,EAAE,EAAE,EAAE1B,EAAE,UAAUA,EAAE,SAAS,EAAEA,EAAE,SAAS,EAAEA,EAAE,OAAO,EAAE0B,EAAE,SAAS,MAAMA,EAAE,SAAS,YAAY,IAAI,MAAMjC,EAAE,KAAK,KAAK,EAAEwvD,EAAE,KAAK,WAAW,MAAM,GAAG,GAAG,EAAE,QAAQjvD,EAAE,EAAEA,EAAEP,EAAEO,IAAI,CAAC,MAAM0B,EAAE,EAAE1B,EAAE,EAAEP,EAAE,EAAEO,EAAE,EAAE0B,EAAE,CAAC,EAAE,EAAEjC,EAAE,CAAC,EAAE,EAAEiC,EAAE,CAAC,EAAE,EAAEjC,EAAE,CAAC,EAAE,EAAEiC,EAAE,CAAC,EAAE,EAAEjC,EAAE,CAAC,EAAE,EAAEiC,EAAE,CAAC,EAAE,EAAEjC,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAEwvD,EAAE,EAAEvtD,EAAE,CAAC,EAAE,EAAEjC,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAEwvD,EAAE,EAAEvtD,EAAE,CAAC,EAAE,EAAEjC,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAEwvD,CAAC,CAAC,CAAC,CAAC,MAAMkzD,WAAWhD,EAAE,CAAC,YAAYn/G,EAAE0B,EAAE,EAAE,CAAC,MAAM1B,EAAE0B,EAAE,CAAC,EAAE,KAAK,KAAK,cAAc,KAAK,WAAW,OAAO,OAAO,CAAC,aAAa,GAAG,gBAAgB,EAAE,EAAE,KAAK,UAAU,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK1B,EAAE,CAAC,MAAM0B,EAAE1B,GAAG,CAAE,EAAC0B,EAAE,YAAYo9F,EAAGp9F,EAAE,YAAY,QAAQ,EAAEA,EAAE,WAAWo9F,EAAGp9F,EAAE,WAAW,MAAM,EAAEA,EAAE,WAAWo9F,EAAGp9F,EAAE,WAAW,GAAG,EAAEA,EAAE,YAAYo9F,EAAGp9F,EAAE,YAAY,CAAC,EAAEA,EAAE,iBAAiBo9F,EAAGp9F,EAAE,iBAAiB,EAAE,EAAE,MAAM,KAAKA,CAAC,CAAC,CAAC,WAAW1B,EAAE,CAAC,MAAM0B,EAAE,GAAG,EAAE,CAAA,EAAG,OAAO,KAAK,UAAU,YAAa1B,GAAG,CAAC,GAAGA,EAAE,aAAa,EAAE,OAAO,EAAE,KAAKA,CAAC,EAAE,MAAMuF,EAAE,IAAIoxG,GAAG32G,CAAC,EAAEyB,EAAE8D,EAAE,cAAc9F,EAAE8F,EAAE,SAAS,KAAK,eAAgB,CAAA,EAAE0pD,EAAE1pD,EAAE,QAAQ,KAAK,gBAAiB,CAAA,EAAEhF,EAAEgF,EAAE,WAAY,EAAC7D,EAAE,KAAK,IAAIi5G,GAAG,CAAC,SAASl5G,EAAE,OAAO,MAAMhC,EAAE,MAAM,OAAOwvD,EAAE,KAAK,QAAQ1uD,EAAE,OAAO,EAAE,KAAK,gBAAgB,CAAC,aAAa,KAAK,aAAa,gBAAgB,KAAK,gBAAgB,aAAa,EAAE,CAAC,CAAC,EAAE,IAAI2hH,GAAG,CAAC,SAASzgH,EAAE,OAAO,OAAOA,EAAE,IAAI,EAAE,KAAK,gBAAgB,CAAC,MAAM,UAAU,MAAM,CAAC,CAAC,CAAC,EAAE,IAAIygH,GAAG,CAAC,SAASzgH,EAAE,OAAO,OAAOA,EAAE,MAAM,EAAE,KAAK,gBAAgB,CAAC,MAAM,aAAa,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAGzB,EAAE,cAAc,EAAE,CAAC,WAAW0B,EAAE,YAAY,CAAC,CAAC,CAAC,WAAW1B,EAAE0B,EAAE,CAAC4hG,IAAIF,GAAG,KAAK,KAAK,KAAK,cAAc,EAAEpjG,EAAEA,GAAG,CAAE,EAAC,QAAQ,EAAE,EAAE,EAAE0B,EAAE,YAAY,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM6D,EAAE,EAAE,EAAE9D,EAAE,CAAA,EAAGhC,EAAEiC,EAAE,YAAY,CAAC,EAAEutD,EAAE,IAAI0nD,GAAGl3G,CAAC,EAAE,GAAGO,EAAE,SAAS,CAAC,MAAMA,EAAEivD,EAAE,YAAW,EAAG,OAAO,OAAOxtD,EAAE,CAAC,SAASzB,EAAE,MAAM,CAAC,EAAE0B,EAAE,WAAW6D,EAAE,CAAC,EAAE,cAAc,CAAC,SAASvF,EAAE,OAAO,OAAOA,EAAE,IAAI,CAAC,EAAE0B,EAAE,WAAW6D,EAAE,CAAC,EAAE,cAAc,CAAC,SAASvF,EAAE,OAAO,OAAOA,EAAE,MAAM,CAAC,CAAC,CAAC0B,EAAE,WAAW6D,CAAC,EAAE,cAAc9D,CAAC,CAAC,CAAC6hG,IAAIF,GAAG,QAAQ,KAAK,KAAK,cAAc,CAAC,CAAC,CAACO,GAAG,IAAI,cAAcwe,EAAE,EAAE,MAAMC,WAAWhvG,EAAE,CAAC,YAAYpT,EAAE0B,EAAE,EAAE,CAAC,MAAM1B,EAAE0B,EAAE,CAAC,EAAE,KAAK,KAAK,WAAW,KAAK,WAAW,OAAO,OAAO,CAAE,EAAC,KAAK,WAAW,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK1B,EAAE,CAAC,IAAI0B,EAAE1B,GAAG,CAAE,EAAC0B,EAAE,YAAY,EAAE,MAAM,KAAKA,CAAC,CAAC,CAAC,CAACiiG,GAAG,IAAI,WAAWye,EAAE,EAAEve,GAAG,IAAI,qCAAqC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAw8G,EAAEA,GAAG,IAAI,qCAAqC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAmuO,EAAE,MAAMwe,GAAG,IAAI,aAAa,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAEC,GAAG,IAAI,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,MAAMC,WAAWjI,EAAE,CAAC,YAAYt6G,EAAE0B,EAAE,CAAE,EAAC,CAAC,MAAM,KAAK1B,EAAE0B,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,OAAO2gH,EAAE,CAAC,IAAI,gBAAgB,CAAC,OAAOC,EAAE,CAAC,IAAI,oBAAoB,CAAC,MAAO,GAAE,CAAC,IAAI,aAAa,CAAC,MAAO,EAAC,CAAC,IAAI,iBAAiB,CAAC,MAAO,EAAC,CAAC,CAAC,MAAME,GAAG,OAAO,OAAO,CAAC,OAAO,GAAG,EAAElO,EAAE,EAAEmO,GAAG,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAElO,EAAE,EAAE,MAAMmO,WAAWH,EAAE,CAAC,YAAYviH,EAAE0B,EAAE,GAAG,CAAC,MAAM1B,EAAE0B,CAAC,EAAE,KAAK,eAAe+gH,GAAG,KAAK,WAAW,GAAG,KAAK,aAAa,8BAA8B,KAAK,eAAe,8BAA8B,KAAK,YAAY,CAAC,0BAA0B,CAAC,MAAM,IAAI1jH,EAAC,EAAE,iCAAiC,CAAC,MAAM,IAAIA,EAAC,EAAE,gCAAgC,CAAC,MAAM,IAAIA,EAAC,EAAE,OAAO,CAAC,MAAM,KAAK,WAAW,MAAM,CAAC,CAAC,EAAE,KAAK,cAAc,CAAC,UAAU,CAAC,KAAK,KAAK,MAAM,IAAI,EAAE,UAAU,CAAC,KAAK,KAAK,MAAM,IAAI,EAAE,OAAO,CAAC,KAAK,IAAI,MAAM,IAAI,EAAE,OAAO,CAAC,KAAK,IAAI,MAAM,IAAI,EAAE,QAAQ,CAAC,KAAK,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,KAAK,cAAciB,CAAC,EAAE,KAAK,YAAa,CAAA,CAAC,IAAI,mBAAmB,CAAC,OAAOwiH,EAAE,CAAC,CAAC,OAAO,OAAO,CAAC,gBAAgB,EAAE,EAAEhC,GAAGgC,EAAE,EAAE,MAAMG,GAAG,KAAK,CAAC,YAAY,EAAE,EAAE,CAAE,EAAC,CAAC,MAAM,CAACzf,IAAI,GAAG,EAAE,iBAAiB,EAAE,OAAO,SAASljG,EAAE0B,EAAE,CAAC,MAAM3C,EAAEiB,EAAE,OAAOuF,EAAE,IAAI,aAAaxG,CAAC,EAAE,QAAQ0C,EAAE,EAAEA,EAAE1C,EAAE0C,IAAI8D,EAAE9D,CAAC,EAAE,KAAK,IAAIzB,EAAEyB,CAAC,EAAEC,EAAED,CAAC,CAAC,EAAE,OAAO8D,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,IAAIm7G,GAAG,EAAE,CAAC,GAAG,IAAIgC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,MAAME,WAAWR,EAAE,CAAC,YAAYpiH,EAAE0B,EAAE,EAAE,CAAC,MAAM1B,EAAE0B,EAAE,CAAC,EAAE,KAAK,KAAK,YAAY,KAAK,WAAW,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC,EAAE,KAAK,WAAW,CAAC,aAAa,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK1B,EAAE,CAAC,IAAI0B,EAAE1B,GAAG,CAAE,EAAC0B,EAAE,YAAYo9F,EAAGp9F,EAAE,YAAY,EAAE,EAAEA,EAAE,WAAWo9F,EAAGp9F,EAAE,WAAW,KAAK,EAAEA,EAAE,iBAAiBo9F,EAAGp9F,EAAE,iBAAiB,EAAE,EAAE,KAAK,OAAOo9F,EAAGp9F,EAAE,OAAO,GAAG,EAAE,MAAM,KAAKA,CAAC,CAAC,CAAC,cAAc1B,EAAE0B,EAAE,CAAC,OAAO1B,GAAG,CAACA,EAAE,SAAS0B,EAAE,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAEA,CAAC,GAAG,MAAM,cAAc1B,EAAE0B,CAAC,CAAC,CAAC,WAAW1B,EAAE,CAAC,IAAI0B,EAAE,IAAIi5G,GAAG36G,EAAE,YAAY,KAAK,cAAe,CAAA,EAAE,KAAK,gBAAgB,CAAC,aAAa,KAAK,aAAa,gBAAgB,KAAK,gBAAgB,aAAa,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,SAAS,IAAI,aAAa,EAAEA,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC0B,EAAE,IAAIihH,GAAG3iH,EAAE,YAAY,KAAK,cAAa,CAAE,EAAE,KAAK,gBAAgB,CAAC,OAAO,KAAK,OAAO,eAAe,KAAK,eAAe,gBAAgB,KAAK,gBAAgB,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAWA,EAAE0B,EAAE,CAAC,IAAI,EAAEA,EAAE,MAAM,YAAY,KAAK,cAAe,CAAA,EAAE,EAAEA,EAAE,MAAM,YAAY,KAAK,cAAa,CAAE,EAAE,EAAE,CAAA,EAAGjC,EAAE,CAAE,EAAC,GAAG,CAACO,GAAGA,EAAE,SAAS,CAAC,OAAO,OAAO,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,IAAIivD,EAAE,EAAE,UAAU1uD,EAAE,EAAE,UAAU,OAAO,OAAOd,EAAE,CAAC,SAASimG,GAAGz2C,EAAE1uD,EAAE,KAAK,QAAQ,EAAE,UAAU0uD,EAAE,UAAU1uD,CAAC,CAAC,CAAC,CAACP,GAAG,CAACA,EAAE,QAAQ,OAAO,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,OAAOP,EAAE,CAAC,MAAM,EAAE,MAAM,OAAO,EAAE,MAAM,CAAC,GAAGO,GAAG,CAACA,EAAE,SAAS,OAAO,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,OAAOP,EAAE,CAAC,OAAO,EAAE,OAAO,QAAQ,EAAE,OAAO,CAAC,GAAGiC,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC,EAAEA,EAAE,WAAW,CAAC,EAAE,cAAcjC,CAAC,CAAC,CAAC,CAACkkG,GAAG,IAAI,YAAYif,EAAE,EAAE,MAAMC,EAAE,CAAC,YAAY7iH,EAAE0B,EAAE,CAAE,EAAC,EAAE,GAAG,CAAC,KAAK,KAAK1B,EAAE,KAAK,KAAK0B,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAE,CAAC,UAAU1B,EAAE,CAAC,IAAI0B,EAAE,OAAO,KAAK,KAAM,CAAA,IAAI,WAAWA,EAAE1B,EAAE,SAAS,MAAM,IAAI,YAAY0B,EAAE,GAAG1B,EAAE,KAAK,GAAG,MAAM,IAAI,YAAY0B,EAAE1B,EAAE,UAAU,QAAQ,CAAC,EAAE,MAAM,IAAI,UAAU0B,EAAE1B,EAAE,QAAQ,QAAQ,CAAC,EAAE,MAAM,IAAI,SAAS0B,EAAE,GAAG1B,EAAE,MAAM,GAAG,MAAM,IAAI,UAAU0B,EAAE1B,EAAE,QAAQ,MAAM,IAAI,OAAO0B,EAAE,GAAG1B,EAAE,QAAQ,IAAIA,EAAE,KAAK,GAAG,MAAM,IAAI,UAAU0B,EAAE1B,EAAE,QAAQ,MAAM,IAAI,QAAQ0B,EAAE,GAAG1B,EAAE,KAAK,GAAG,MAAM,IAAI,MAAM0B,EAAE,GAAG0sG,GAAGpuG,EAAE,QAAQ,YAAa,CAAA,GAAGA,EAAE,OAAO,GAAGA,EAAE,KAAK,GAAG,MAAM,IAAI,UAAU,MAAM,EAAEouG,GAAGpuG,EAAE,QAAQ,YAAW,CAAE,EAAE0B,EAAE,GAAG,CAAC1B,EAAE,QAAQ,GAAG,CAAC,GAAGA,EAAE,KAAK,GAAG,IAAIA,EAAE,OAAO,IAAIA,EAAE,KAAK,GAAGA,EAAE,OAAO,GAAG,MAAM,IAAI,OAAO0B,EAAE,KAAK,KAAK1B,EAAE,KAAK,EAAE,MAAM,IAAI,SAAS,GAAG,CAAC0B,EAAEohH,GAAAA,QAAG,KAAK,OAAO9iH,CAAC,CAAC,OAAOA,EAAE,CAAC,KAAK,cAAc,KAAK,YAAY,GAAG,QAAQ,IAAIA,EAAE,OAAO,EAAE,CAAC,MAAM,QAAQ0B,EAAE1B,EAAE,eAAe,CAAC,OAAgB0B,IAAT,OAAW,GAAGA,CAAC,CAAC,CAACmhH,GAAG,MAAM,CAAC,GAAG,GAAG,SAAS,YAAY,UAAU,aAAa,UAAU,YAAY,QAAQ,WAAW,OAAO,SAAS,QAAQ,UAAU,KAAK,oBAAoB,QAAQ,eAAe,MAAM,aAAa,IAAI,uBAAuB,QAAQ,gCAAgC,KAAK,OAAO,OAAO,SAAS,UAAU,gBAAgB,EAAE,MAAME,WAAW5D,EAAE,CAAC,YAAYn/G,EAAE0B,EAAE,EAAE,CAAC,MAAM1B,EAAE0B,EAAE,CAAC,EAAE,KAAK,KAAK,QAAQ,KAAK,WAAW,OAAO,OAAO,CAAC,UAAU,CAAC,KAAK,SAAS,QAAQmhH,GAAG,MAAM,QAAQ,EAAE,EAAE,UAAU,CAAC,KAAK,SAAS,QAAQ,EAAE,EAAE,YAAY,CAAC,KAAK,OAAO,QAAQ,EAAE,EAAE,cAAc,CAAC,KAAK,SAAS,QAAQ,CAAC,KAAK,OAAO,QAAQ,SAAS,EAAE,QAAQ,EAAE,EAAE,WAAW,CAAC,KAAK,SAAS,QAAQ,CAAC,aAAa,aAAa,UAAU,YAAY,MAAM,OAAO,EAAE,OAAO,EAAE,EAAE,UAAU,CAAC,KAAK,SAAS,QAAQ,CAAC,OAAO,SAAS,OAAO,QAAQ,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,KAAK,SAAS,QAAQ,CAAC,OAAO,SAAS,KAAK,MAAM,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,IAAI,OAAO,EAAE,EAAE,QAAQ,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,IAAI,OAAO,EAAE,EAAE,QAAQ,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,IAAI,OAAO,EAAE,EAAE,WAAW,CAAC,KAAK,SAAS,QAAQ,CAAC,cAAc,cAAc,gBAAgB,gBAAgB,eAAe,eAAe,cAAc,cAAc,gBAAgB,gBAAgB,eAAe,eAAe,WAAW,WAAW,aAAa,aAAa,YAAY,WAAW,EAAE,QAAQ,EAAE,EAAE,WAAW,CAAC,KAAK,UAAU,OAAO,EAAE,EAAE,YAAY,CAAC,KAAK,QAAQ,OAAO,EAAE,EAAE,YAAY,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,EAAE,OAAO,EAAE,EAAE,eAAe,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,gBAAgB,CAAC,KAAK,QAAQ,OAAO,EAAE,EAAE,iBAAiB,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,kBAAkB,CAAC,KAAK,QAAQ,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,UAAU,CAAC,KAAK,UAAU,OAAO,EAAE,CAAC,EAAE,KAAK,WAAW,CAAC,KAAK,KAAK,WAAW,KAAK,UAAU,KAAK,UAAU,KAAK,UAAU,KAAK,UAAU,KAAK,QAAQ,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK7iH,EAAE,CAAC,MAAM0B,EAAE1B,GAAG,CAAA,EAAG,KAAK,UAAU8+F,EAAGp9F,EAAE,UAAU,KAAK,EAAE,KAAK,UAAUo9F,EAAGp9F,EAAE,UAAU,CAAA,CAAE,EAAE,KAAK,YAAYo9F,EAAGp9F,EAAE,YAAY,EAAE,EAAE,KAAK,cAAco9F,EAAGp9F,EAAE,cAAc,MAAM,EAAE,KAAK,WAAWo9F,EAAGp9F,EAAE,WAAW,YAAY,EAAE,KAAK,UAAUo9F,EAAGp9F,EAAE,UAAU,QAAQ,EAAE,KAAK,WAAWo9F,EAAGp9F,EAAE,WAAW,MAAM,EAAE,KAAK,QAAQo9F,EAAGp9F,EAAE,QAAQ,CAAC,EAAE,KAAK,QAAQo9F,EAAGp9F,EAAE,QAAQ,CAAC,EAAE,KAAK,QAAQo9F,EAAGp9F,EAAE,QAAQ,EAAE,EAAE,KAAK,WAAWo9F,EAAGp9F,EAAE,WAAW,aAAa,EAAE,KAAK,WAAWo9F,EAAGp9F,EAAE,WAAW,EAAE,EAAE,KAAK,YAAYo9F,EAAGp9F,EAAE,YAAY,WAAW,EAAE,KAAK,YAAYo9F,EAAGp9F,EAAE,YAAY,GAAG,EAAE,KAAK,eAAeo9F,EAAGp9F,EAAE,eAAe,EAAE,EAAE,KAAK,gBAAgBo9F,EAAGp9F,EAAE,gBAAgB,WAAW,EAAE,KAAK,iBAAiBo9F,EAAGp9F,EAAE,iBAAiB,EAAE,EAAE,KAAK,kBAAkBo9F,EAAGp9F,EAAE,kBAAkB,CAAC,EAAE,KAAK,UAAUo9F,EAAGp9F,EAAE,UAAU,EAAE,EAAE,MAAM,KAAKA,CAAC,CAAC,CAAC,YAAY1B,EAAE0B,EAAE,CAAC,MAAM,EAAE,KAAK,cAAcA,CAAC,EAAE,EAAE,IAAImhH,GAAG,KAAK,UAAU,KAAK,UAAU,KAAK,WAAW,EAAE,IAAI,EAAEpjH,EAAEwvD,EAAE1uD,EAAEE,EAAEzB,EAAE6F,EAAE,GAAY,KAAK,gBAAd,OAA4B,CAAC,MAAMpE,EAAET,EAAE,YAAY,CAAC,EAAE,EAAES,EAAE,SAAShB,EAAEgB,EAAE,OAAOwuD,EAAExuD,EAAE,MAAMiB,GAAG,CAACA,EAAE,OAAOnB,EAAE,CAAA,EAAGP,EAAE,SAAUA,GAAGO,EAAE,KAAK,EAAE,UAAUP,CAAC,CAAC,GAAI,SAAqB,KAAK,gBAAjB,UAA+B,CAAC0B,GAAG,CAACA,EAAE,WAAWjB,EAAE,CAAE,GAAEiB,GAAG,CAACA,EAAE,QAAQmD,EAAE,CAAA,GAAInD,GAAG,CAACA,EAAE,SAAS1C,EAAE,CAAA,GAAI0C,GAAG,CAACA,EAAE,OAAOnB,EAAE,CAAE,GAAE,EAAE,cAAc,EAAE,YAAY,UAAUP,EAAE,aAAY,GAAI,MAAM0E,EAAE69F,GAAG,UAAU,EAAE,WAAW,EAAErmF,EAAE,IAAI+5F,GAAG,EAAE,YAAY,EAAEv2G,EAAEM,EAAE,aAAY,EAAG,IAAI4K,EAAE,EAAE5K,EAAE,YAAaA,GAAG,CAAC,MAAMjB,EAAE,EAAE6L,EAAE5K,EAAE,aAAaA,EAAE,aAAaN,EAAE,MAAMM,EAAE,eAAe0B,GAAG,CAACA,EAAE,UAAUhC,EAAE,gBAAgBe,EAAE1B,CAAC,IAAIW,EAAE,MAAMM,EAAE,WAAW0B,GAAG,CAACA,EAAE,UAAU1B,EAAE,gBAAgBS,EAAE1B,CAAC,GAAG2C,GAAG,CAACA,EAAE,OAAOgD,EAAE,iBAAiBhF,EAAEmF,EAAE9F,CAAC,EAAE2C,GAAG,CAACA,EAAE,SAAS1C,EAAE4L,CAAC,EAAEsR,EAAE,WAAWxc,CAAC,GAAGgC,GAAG,CAACA,EAAE,MAAMnB,EAAE,KAAK,EAAE,UAAUb,CAAC,CAAC,EAAE,EAAEkL,CAAC,GAAIlJ,GAAG,CAACA,EAAE,WAAW,EAAE,IAAI,aAAajB,CAAC,GAAGiB,GAAG,CAACA,EAAE,QAAQutD,EAAE,IAAI,aAAapqD,CAAC,GAAGnD,GAAG,CAACA,EAAE,SAASjC,EAAE,IAAI,aAAaT,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,KAAKS,EAAE,MAAMwvD,EAAE,KAAK1uD,CAAC,CAAC,CAAC,WAAWP,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI+/G,GAAG,KAAK,YAAY//G,EAAE,CAAC,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,EAAE,CAAC,EAAE,KAAK,gBAAgB,CAAC,WAAW,KAAK,WAAW,UAAU,KAAK,UAAU,WAAW,KAAK,WAAW,QAAQ,KAAK,QAAQ,QAAQ,KAAK,QAAQ,QAAQ,KAAK,QAAQ,WAAW,KAAK,WAAW,WAAW,KAAK,WAAW,YAAY,KAAK,YAAY,YAAY,KAAK,YAAY,eAAe,KAAK,eAAe,gBAAgB,KAAK,gBAAgB,iBAAiB,KAAK,iBAAiB,kBAAkB,KAAK,kBAAkB,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAWA,EAAE0B,EAAE,CAACA,EAAE,WAAW,CAAC,EAAE,cAAc,KAAK,YAAYA,EAAE,MAAM1B,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAO,EAAC,CAAC,CAAC,SAASgjH,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,aAAajkH,EAAE,EAAE,WAAU,EAAGwG,EAAE,EAAE,aAAc,EAAC,OAAOxG,EAAE,QAAS,SAASiB,EAAE,CAACuF,EAAE,MAAMvF,EAAE,EAAE,MAAMuF,EAAE,UAAU,EAAE,EAAE,MAAMA,EAAE,UAAU,CAAC,CAAG,EAAC,CAAC,CAACo+F,GAAG,IAAI,QAAQof,EAAE,EAAE,MAAME,WAAW9D,EAAE,CAAC,YAAYn/G,EAAE0B,EAAE,EAAE,CAAC,MAAM1B,EAAE0B,EAAE,CAAC,EAAE,KAAK,KAAK,OAAO,KAAK,WAAW,OAAO,OAAO,CAAC,aAAa,CAAC,KAAK,SAAS,QAAQ,GAAG,QAAQ,CAAC,IAAI,MAAM,UAAU,YAAY,OAAO,QAAQ,CAAC,EAAE,YAAY,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,UAAU,CAAC,KAAK,UAAU,IAAI,GAAG,IAAI,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,QAAQ,CAAC,KAAK,SAAS,QAAQ,GAAG,QAAQ,CAAC,IAAI,MAAM,KAAK,OAAO,IAAI,KAAK,CAAC,EAAE,UAAU,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,WAAW,CAAC,WAAW,KAAK,KAAK,KAAK,UAAU,KAAK,UAAU,KAAK,UAAU,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK1B,EAAE,CAAC,IAAI0B,EAAE1B,GAAG,CAAE,EAAC,KAAK,aAAa8+F,EAAGp9F,EAAE,aAAa,KAAK,EAAE,KAAK,YAAYo9F,EAAGp9F,EAAE,YAAY,CAAC,EAAE,KAAK,UAAUo9F,EAAGp9F,EAAE,UAAU,CAAC,EAAE,KAAK,MAAMo9F,EAAGp9F,EAAE,MAAM,EAAE,EAAE,KAAK,QAAQo9F,EAAGp9F,EAAE,QAAQ,MAAM,EAAE,KAAK,UAAUo9F,EAAGp9F,EAAE,UAAU,EAAE,EAAE,MAAM,KAAKA,CAAC,CAAC,CAAC,cAAc1B,EAAE,CAAC,MAAM,GAAE,CAAC,cAAcA,EAAE0B,EAAE,CAAC,OAAOA,EAAE,OAAO,OAAO,CAAC,aAAa,KAAK,aAAa,YAAY,KAAK,YAAY,aAAa,CAAC,KAAK,OAAO,KAAK,GAAG,MAAM,CAAC,CAAC,EAAEA,CAAC,EAAE,MAAM,cAAc1B,EAAE0B,CAAC,CAAC,CAAC,WAAW1B,EAAE0B,EAAE,CAAC,GAAG1B,GAAG,CAACA,EAAE,UAAU,CAACA,EAAE,MAAM,OAAO,MAAM,EAAE,CAAA,EAAY,KAAK,UAAd,QAAuB,OAAO,OAAO,EAAE,CAAC,QAAQgjH,GAAGthH,CAAC,CAAC,CAAC,EAAE,MAAM,EAAEA,EAAE,YAAY,KAAK,cAAc1B,EAAE,CAAC,CAAC,EAAE,EAAE,CAAA,EAAGP,EAAE,EAAE,SAASwvD,EAAE,EAAE,MAAM1uD,EAAE,EAAE,QAAQE,GAAGhB,GAAGwvD,GAAG,OAAOjwD,EAAE,EAAEyB,EAAE,IAAIoE,EAAE,IAAI,aAAa,CAAC,EAAEH,EAAE,IAAI,aAAa,CAAC,EAAEwX,EAAE,IAAI,aAAa,CAAC,EAAExc,EAAE,IAAI,aAAa,CAAC,EAAEkL,EAAE,EAAEjG,EAAE,IAAI,aAAa,CAAC,EAAE3E,GAAG,CAACA,EAAE,WAAW6E,EAAE,EAAE,UAAU,IAAI,aAAa7F,CAAC,EAAE0F,EAAE,EAAE,UAAU,IAAI,aAAa1F,CAAC,EAAE4L,EAAE,KAAK,UAAU,GAAG5K,GAAG,CAACA,EAAE,QAAQkc,EAAE,EAAE,MAAM,IAAI,aAAald,CAAC,EAAEU,EAAE,EAAE,OAAO,IAAI,aAAaV,CAAC,GAAGgB,GAAG,CAACA,EAAE,UAAU2E,EAAE,IAAI,aAAa,EAAE,EAAE,QAAQ,MAAM,MAAM,GAAG,QAAQjD,EAAE,EAAEA,EAAEjB,EAAEiB,IAAI,CAAC,MAAM3C,EAAE,EAAE2C,EAAE6D,EAAE,EAAExG,EAAE,GAAG,CAACiB,GAAGA,EAAE,SAAS,CAAC,MAAMA,EAAEP,EAAEV,CAAC,EAAE2C,EAAEjC,EAAEV,EAAE,CAAC,EAAE0C,EAAEhC,EAAEV,EAAE,CAAC,EAAE8F,EAAEU,CAAC,EAAEvF,EAAE4K,EAAE/F,EAAEU,EAAE,CAAC,EAAE7D,EAAEmD,EAAEU,EAAE,CAAC,EAAE9D,EAAEiD,EAAEa,CAAC,EAAEvF,EAAE4K,EAAElG,EAAEa,EAAE,CAAC,EAAE7D,EAAEgD,EAAEa,EAAE,CAAC,EAAE9D,EAAEoD,EAAEU,EAAE,CAAC,EAAEvF,EAAE6E,EAAEU,EAAE,CAAC,EAAE7D,EAAEkJ,EAAE/F,EAAEU,EAAE,CAAC,EAAE9D,EAAEiD,EAAEa,EAAE,CAAC,EAAEvF,EAAE0E,EAAEa,EAAE,CAAC,EAAE7D,EAAEkJ,EAAElG,EAAEa,EAAE,CAAC,EAAE9D,EAAEoD,EAAEU,EAAE,CAAC,EAAEvF,EAAE6E,EAAEU,EAAE,CAAC,EAAE7D,EAAEmD,EAAEU,EAAE,CAAC,EAAE9D,EAAEmJ,EAAElG,EAAEa,EAAE,CAAC,EAAEvF,EAAE0E,EAAEa,EAAE,CAAC,EAAE7D,EAAEgD,EAAEa,EAAE,CAAC,EAAE9D,EAAEmJ,CAAC,CAAC,GAAG,CAAC5K,GAAGA,EAAE,MAAM,CAAC,MAAMA,EAAEuF,EAAE,EAAE,QAAQ7D,EAAE6D,EAAE7D,EAAE1B,EAAE0B,GAAG,EAAEwa,EAAExa,CAAC,EAAEhC,EAAEgC,CAAC,EAAEutD,EAAElwD,CAAC,EAAEmd,EAAExa,EAAE,CAAC,EAAEhC,EAAEgC,EAAE,CAAC,EAAEutD,EAAElwD,EAAE,CAAC,EAAEmd,EAAExa,EAAE,CAAC,EAAEhC,EAAEgC,EAAE,CAAC,EAAEutD,EAAElwD,EAAE,CAAC,CAAC,CAACiB,GAAG,CAACA,EAAE,UAAU2E,EAAE5F,CAAC,EAAE4F,EAAE5F,EAAE,CAAC,EAAE4F,EAAE5F,EAAE,CAAC,EAAEwB,EAAE,MAAMmB,CAAC,EAAE,CAAC,OAAO1B,GAAG,CAACA,EAAE,UAAU,EAAE,QAAQ,IAAIwxG,GAAG7sG,EAAEpE,EAAE,SAAS,GAAG,CAAC,CAAC,WAAWP,EAAE,CAAC,MAAM0B,EAAE,CAAC,SAAS,GAAG,MAAM,GAAG,QAAQ,EAAE,EAAE,EAAE,CAAA,EAAG,GAAG,KAAK,MAAM,CAAC,MAAM,EAAE1B,EAAE,YAAY,KAAK,cAAc0B,CAAC,CAAC,EAAE,EAAE,IAAIw+G,GAAG,EAAE,KAAK,gBAAgB,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,GAAW,KAAK,UAAb,MAAqB,CAAC,MAAM,EAAE,IAAIA,GAAG,KAAK,WAAWx+G,EAAE1B,CAAC,EAAE,KAAK,gBAAgB,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,WAAWA,EAAE0B,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,MAAM,CAAC,MAAM,EAAEA,EAAE,MAAM,YAAY,KAAK,cAAc1B,CAAC,CAAC,EAAE,EAAE,GAAGA,GAAG,CAACA,EAAE,UAAU,OAAO,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,UAAU,EAAE,SAAS,CAAC,EAAEA,GAAG,CAACA,EAAE,OAAO,OAAO,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,OAAO,EAAE,MAAM,CAAC,EAAE0B,EAAE,WAAW,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,GAAW,KAAK,UAAb,MAAqB,CAAC,MAAM,EAAE,KAAK,WAAW1B,EAAE0B,EAAE,KAAK,EAAE,EAAE,CAAE,EAAC1B,GAAG,CAACA,EAAE,UAAU,OAAO,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,UAAU,EAAE,SAAS,CAAC,EAAEA,GAAG,CAACA,EAAE,OAAO,OAAO,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,OAAO,EAAE,MAAM,CAAC,EAAE0B,EAAE,WAAW,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc1B,EAAE,CAAC,IAAI0B,EAAE,CAAA,EAAG,OAAO1B,IAAIA,EAAE,aAAaA,EAAE,YAAY,OAAO,OAAO0B,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,MAAM,cAAc1B,EAAE0B,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,SAASwhH,GAAG,EAAE,EAAEnkH,EAAEwG,EAAE9D,EAAE,CAAC,MAAMhC,EAAE,IAAI8F,EAAEA,GAAG,YAAY,EAAE,EAAExG,GAAG0C,EAAEA,GAAG,EAAE,EAAE,SAAS,EAAEzB,EAAEuF,EAAE9F,EAAE,CAAC,QAAQO,EAAE,EAAEuF,GAAGxG,EAAEU,GAAGgC,CAAC,CAAC,MAAM,CAAC,KAAKhC,EAAE,MAAM,EAAE,IAAI,SAASO,EAAE0B,EAAE3C,KAAKwG,EAAE,CAAC,MAAMhF,EAAE,EAAEP,EAAE0B,EAAE3C,CAAC,EAAE,QAAQiB,EAAE,EAAEA,EAAEyB,EAAE,EAAEzB,EAAEP,EAAEc,EAAEP,CAAC,EAAEuF,EAAEvF,CAAC,CAAC,EAAE,QAAQ,SAASA,EAAE0B,EAAE3C,EAAEwG,EAAE,CAAE,EAAChF,EAAE,EAAE,CAAC,MAAME,EAAE,EAAET,EAAE0B,EAAE3C,CAAC,EAAE,QAAQiB,EAAE,EAAEA,EAAEyB,EAAE,EAAEzB,EAAEuF,EAAEhF,EAAEP,CAAC,EAAEP,EAAEgB,EAAET,CAAC,CAAC,EAAE,UAAU,SAASA,EAAE0B,EAAE3C,EAAEwG,EAAEhF,EAAE,EAAE,CAAC,MAAME,EAAE,EAAET,EAAE0B,EAAE3C,CAAC,EAAE,QAAQiB,EAAE,EAAEA,EAAEyB,EAAE,EAAEzB,EAAEP,EAAEgB,EAAET,CAAC,EAAEuF,EAAEhF,EAAEP,CAAC,CAAC,EAAE,KAAK,SAASA,EAAE,CAACP,EAAE,IAAIO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAASmjH,GAAG,EAAE,EAAEpkH,EAAE,CAAC,IAAIwG,EAAEuuG,GAAG,CAAC,EAAEryG,EAAE6oG,GAAG,CAAC,EAAM,EAAE,SAAN,IAAe7oG,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAEA,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAIhC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEiF,EAAEwX,EAAExc,EAAE,EAAEiF,EAAE,EAAE5E,EAAES,EAAEtM,EAAEqN,EAAEE,EAAE,CAAC,EAAED,EAAEC,EAAE,CAAC,EAAE,SAASuzF,EAAEh1F,EAAE0B,EAAE3C,GAAE0C,GAAEuzF,EAAE,CAACv1F,EAAEiC,GAAG,IAAI,EAAE3C,IAAG,EAAE,EAAEi2F,GAAG,GAAG,IAAI2S,EAAE,EAAE,QAAQC,MAAKriG,EAAEoiG,EAAE,KAAK,IAAIA,EAAEC,EAAC,EAAE,IAAI9Q,GAAEid,GAAGxyG,EAAEC,EAAEmmG,EAAE,EAAE3nG,EAAEP,EAAE,CAAC,EAAE,EAAEq3F,GAAE,IAAI,CAAC,EAAE,EAAEA,GAAE,IAAI,CAAC,EAAE,EAAEA,GAAE,IAAI,CAAC,EAAEpyF,EAAEoyF,GAAE,OAAO56E,EAAE46E,GAAE,KAAK,EAAEA,GAAE,YAAYp3F,EAAE,GAAG,EAAE,CAAA,EAAG6zF,EAAEvzF,CAAC,EAAE2E,EAAElF,EAAE,EAAE,EAAEgC,IAAGhC,EAAE,EAAEM,EAAE,IAAI,WAAW,EAAE,EAAE,CAAC,EAAEC,IAAIQ,EAAE,IAAI,aAAa,EAAE,EAAE,CAAC,GAAG,IAAItM,EAAE,IAAI,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,IAAIyzG,EAAE,EAAE,EAAE,EAAE7Q,EAAE,EAAEzkC,EAAE,CAAC,IAAI,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,WAAW,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,SAASkhC,EAAEvzF,EAAE,CAAC,IAAI0B,EAAE3C,GAAE0C,GAAElB,EAAEE,EAAEzB,GAAE6F,GAAEH,GAAEwX,EAAEvX,GAAE,QAAQC,KAAKW,EAAE,GAAG7D,EAAE,WAAWkD,CAAC,EAAE,CAAClF,EAAEkF,CAAC,EAAE,CAAC,IAAI5F,IAAG6F,GAAE7E,GAAG0B,EAAEjC,GAAG,EAAE,GAAGiC,EAAE,EAAE,IAAImD,GAAEH,GAAE,KAAK,MAAMG,EAAC,EAAE,EAAEqX,EAAE,IAAI,WAAWxX,GAAEA,EAAC,EAAEC,GAAE,EAAE5F,GAAE,EAAEA,GAAE2F,GAAE,EAAE3F,GAAE,IAAI0C,GAAE,EAAEA,GAAEiD,GAAE,EAAEjD,IAAGlB,EAAExB,GAAEA,GAAE0C,GAAEA,IAAGzC,GAAEkd,EAAEvX,EAAC,EAAE,IAAIlE,EAAE,KAAK,KAAKzB,GAAEuB,CAAC,EAAE2b,EAAEvX,EAAC,EAAE,KAAK,MAAMlE,CAAC,GAAG,EAAEkE,GAAE,EAAEC,CAAC,EAAEF,GAAEhF,EAAEkF,CAAC,EAAEsX,CAAC,CAAC,CAAC,SAAS+M,EAAElqB,EAAE,CAAC,IAAIwG,EAAE9D,GAAEhC,GAAEc,EAAEmE,EAAEC,GAAEnE,GAAEe,GAAEC,EAAEwzF,GAAE4S,EAAE9Q,EAAEzkC,EAAEkhC,EAAEtqE,GAAE4+E,EAAE50C,GAAEP,GAAEg1C,GAAE,EAAE3oG,EAAE6xG,EAAE7xG,EAAEwG,EAAE,KAAK,MAAM,GAAG,GAAG,EAAEmiG,EAAC,EAAExrF,EAAE,CAAC,EAAE,EAAEza,GAAE,KAAK,MAAM,GAAG,GAAG,EAAEimG,GAAE,CAAC,EAAExrF,EAAE,CAAC,EAAE,EAAEzc,GAAE,KAAK,MAAM,GAAG,GAAG,EAAEioG,GAAE,CAAC,EAAExrF,EAAE,CAAC,EAAE,EAAE,IAAI20F,EAAEC,GAAE,EAAEF,CAAC,EAAEG,GAAErxG,EAAEoxG,EAAC,EAAEE,EAAE,EAAEhb,GAAE,EAAE,EAAEvjC,GAAE,EAAEq+C,EAAC,EAAE,IAAI9b,GAAE,EAAEA,GAAEviC,GAAE,EAAEuiC,GAAE,IAAI4S,EAAE,EAAEA,EAAEn1C,GAAE,EAAEm1C,EAAE,CAAC,IAASiJ,EAAEE,GAAEC,CAAC,KAAX,IAAc,IAAInJ,EAAE,GAAGA,EAAE,EAAE,EAAEA,EAAE,IAAI50C,GAAE,GAAGA,GAAE,EAAE,EAAEA,GAAE,IAAIP,GAAE,GAAGA,GAAE,EAAE,EAAEA,GAAE,GAAOm1C,IAAJ,GAAW50C,KAAJ,GAAWP,KAAJ,GAAM,IAAIlyD,GAAEqnG,EAAE7S,GAAExzF,EAAEkxD,GAAEk1C,EAAE9Q,EAAE,EAAEA,GAAG+Z,EAAE,EAAE/Z,EAAE,GAAGvD,EAAE9xF,IAAGF,GAAEu1F,EAAE7jC,IAAGhqC,GAAExpB,GAAE+B,EAAE,GAAG6wD,EAAE9sD,EAAE/E,IAAG,GAAG+yF,EAAE,GAAGtqE,GAAE,GAAGopC,GAAG,GAAGkhC,GAAG,GAAGtqE,IAAG,GAAG,CAAC,IAAI7hB,GAAEirD,EAAE2jC,GAAEzC,EAAE,EAAEtqE,GAAE,GAAG,EAAE,GAAGlpB,EAAEqH,EAAC,EAAEugG,GAAG,GAAG5nG,EAAEqH,EAAC,EAAEugG,EAAE,CAAC,IAAI0K,GAAEn+G,EAAEkT,EAAC,EAAEirG,KAAI3K,IAAGlnG,GAAEA,GAAEe,GAAEA,GAAEC,EAAEA,GAAGjB,EAAEgF,EAAE/E,GAAE,KAAK,MAAM,GAAG,GAAG,EAAE6xG,EAAC,EAAEn2F,EAAE,CAAC,EAAE,GAAG3b,GAAGmE,EAAEjD,GAAEF,GAAE,KAAK,MAAM,GAAG,GAAG,EAAE8wG,GAAE,CAAC,EAAEn2F,EAAE,CAAC,EAAE,GAAGxX,GAAGC,GAAElF,GAAE+B,EAAE,KAAK,MAAM,GAAG,GAAG,EAAE6wG,GAAE,CAAC,EAAEn2F,EAAE,CAAC,EAAE,GAAGvX,KAAIzQ,EAAEkT,EAAC,EAAErI,EAAE,OAAOgB,EAAEqH,EAAC,GAAGugG,EAAEzzG,EAAEkT,EAAC,EAAErI,OAAOgB,EAAEqH,EAAC,GAAGugG,CAAC,GAACqJ,GAAG,CAAC,CAAC,SAASnJ,EAAEnmG,EAAE,CAAC,IAAI3C,EAAEwG,GAAE,IAAI,QAAQ,KAAK,uBAAuB,EAAExG,EAAE,EAAEwG,GAAExF,EAAE,OAAOhB,EAAEwG,GAAE,EAAExG,EAAEgB,EAAEhB,CAAC,EAAE,EAAE2C,IAAIlB,EAAEzB,CAAC,EAAE,IAAI,IAAI7K,EAAE6K,CAAC,EAAE,IAAI,IAAIA,EAAE,EAAEwG,GAAE,EAAE,OAAO,EAAExG,EAAEwG,GAAE,EAAExG,EAAEkqB,EAAElqB,CAAC,EAAE,IAAIA,EAAE,EAAEwG,GAAExF,EAAE,OAAOhB,EAAEwG,GAAE,EAAExG,EAAEgB,EAAEhB,CAAC,EAAE4oG,IAAI5nG,EAAEhB,CAAC,GAAG,GAAG,QAAQ,QAAQ,uBAAuB,CAAC,CAAC,SAASk0D,EAAEl0D,EAAE,CAAC,IAAIwG,EAAE9D,GAAEhC,GAAEc,EAAEmE,EAAEC,GAAEnE,GAAEe,GAAEC,EAAEwzF,GAAE2S,EAAE7Q,EAAEzkC,EAAEkhC,EAAEtqE,GAAE4+E,EAAE50C,GAAEP,GAAEg1C,GAAEkJ,EAAE,EAAE7xG,EAAE8xG,EAAE9xG,EAAE+xG,GAAE,EAAEvrG,EAAE,KAAK,MAAM,GAAG,GAAG,EAAEqrG,CAAC,EAAE10F,EAAE,CAAC,EAAE,EAAEza,GAAE,KAAK,MAAM,GAAG,GAAG,EAAEmvG,EAAE,CAAC,EAAE10F,EAAE,CAAC,EAAE,EAAEzc,GAAE,KAAK,MAAM,GAAG,GAAG,EAAEmxG,EAAE,CAAC,EAAE10F,EAAE,CAAC,EAAE,EAAE,IAAI60F,GAAE,EAAEF,CAAC,EAAEG,EAAE,EAAE,EAAE,IAAI3+C,EAAE,EAAEq1C,GAAE,EAAEqJ,EAAC,EAAE1+C,EAAEq1C,GAAE,EAAEr1C,EAAE,IAAIkhC,EAAE,EAAEA,EAAEmU,GAAE,EAAEnU,EAAE,CAAC,GAAQ7zF,EAAEqxG,EAAC,EAAED,EAAC,IAAX,IAAa,IAAIjJ,EAAE,GAAGA,EAAE,EAAE,EAAEA,EAAE,IAAI50C,GAAE,GAAGA,GAAE,EAAE,EAAEA,GAAE,IAAIP,GAAE,GAAGA,GAAE,EAAE,EAAEA,GAAE,GAAOm1C,IAAJ,GAAW50C,KAAJ,GAAWP,KAAJ,GAAM,IAAIlyD,GAAEqnG,EAAEx1C,EAAE7wD,EAAEkxD,GAAE6gC,EAAEtqE,GAAE,EAAEA,IAAGvpB,EAAEqxG,EAAC,EAAED,EAAC,EAAE,EAAE7nF,GAAE,GAAG0+E,EAAElmG,IAAGF,GAAE0nB,GAAEgqC,IAAG6jC,EAAEr3F,GAAE+B,EAAE,GAAGwzF,GAAEzvF,EAAE/E,IAAG,GAAGmnG,EAAE,GAAG7Q,EAAE,GAAG9B,IAAG,GAAG2S,GAAG,GAAG7Q,GAAG,GAAG,CAAC,IAAId,GAAEhB,GAAEgc,EAAErJ,EAAE,EAAE7Q,EAAE,GAAG/2F,EAAEi2F,EAAC,EAAE,GAAG,GAAG,EAAE,CAAC,IAAIvjC,GAAEv+D,EAAE8hG,EAAC,EAAEx1F,GAAEA,GAAEe,GAAEA,GAAEC,EAAEA,GAAGjB,EAAE,KAAK,MAAM,GAAG,GAAG,EAAEkyD,EAAC,EAAEv2C,EAAE,CAAC,EAAE,GAAG3b,GAAGmE,EAAE,KAAK,MAAM,GAAG,GAAG,EAAE+tD,GAAE,CAAC,EAAEv2C,EAAE,CAAC,EAAE,GAAGxX,GAAGC,GAAE,KAAK,MAAM,GAAG,GAAG,EAAE8tD,GAAE,CAAC,EAAEv2C,EAAE,CAAC,EAAE,GAAGvX,KAAIzQ,EAAE8hG,EAAC,EAAEj3F,EAAE,OAAOgB,EAAEi2F,EAAC,GAAG,EAAE,IAAI9hG,EAAE8hG,EAAC,EAAEj3F,EAAE,GAAC+xG,IAAG,CAAC,CAAC,SAASp+C,GAAG,CAAC,IAAI1yD,EAAE0B,EAAE3C,GAAEwG,GAAE,QAAQ,KAAK,4BAA4B,EAAE,IAAI9D,EAAEhC,EAAEyjH,GAAG,EAAE,EAAE,EAAE,YAAY,CAAC,EAAEj0D,GAAE,EAAE,EAAEvqD,GAAEC,EAAEA,EAAEuX,GAAE,EAAE,IAAIlc,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,IAAI0B,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,IAAI3C,GAAE,EAAEA,GAAE,EAAE,EAAEA,GAAEgB,EAAE0B,EAAEzB,EAAEivD,GAAEvtD,EAAE,EAAE3C,EAAC,GAAG,CAAC,EAAEgB,EAAE0B,CAAC,EAAEkmG,GAAG5nG,EAAE0B,CAAC,EAAEq1F,IAAIr3F,EAAE,IAAIO,EAAE0B,EAAE3C,GAAEiB,EAAE0B,EAAE3C,EAAC,EAAEyB,EAAEiB,CAAC,EAAE,EAAE1B,EAAE0B,CAAC,GAAG,EAAEya,IAAG,GAAG,IAAIxc,EAAE,IAAI,WAAW,EAAEwc,EAAC,EAAEtR,GAAE,EAAErJ,EAAE,IAAI,WAAW,EAAE2a,EAAC,EAAE1a,EAAE,EAAE,IAAIxB,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,IAAI0B,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,IAAI3C,GAAE,EAAEA,GAAE,EAAE,EAAEA,GAAEgB,EAAE0B,EAAEzB,EAAEivD,GAAEvtD,EAAE,EAAE3C,EAAC,EAAE+3F,IAAIp3F,EAAEkL,EAAC,EAAE5K,EAAEN,EAAEkL,GAAE,CAAC,EAAElJ,EAAEhC,EAAEkL,GAAE,CAAC,EAAE7L,GAAE6L,IAAG,EAAE7K,EAAE0B,CAAC,GAAG,CAACq1F,GAAG,EAAG,KAAIt1F,EAAEkmG,GAAEhoG,EAAED,EAAEmL,GAAErJ,CAAC,EAAEqJ,GAAE,EAAE5K,EAAE,EAAEuF,GAAE/D,EAAExB,EAAEuF,GAAEvF,GAAG,EAAEyB,EAAEwtD,GAAE1tD,EAAEvB,CAAC,EAAE,EAAEuB,EAAEvB,EAAE,CAAC,EAAEuB,EAAEvB,EAAE,CAAC,EAAED,EAAE0B,CAAC,GAAG,CAACq1F,EAAEt2F,EAAEiB,CAAC,GAAG,OAAOiD,KAAIhF,EAAEkL,EAAC,EAAErJ,EAAEvB,CAAC,EAAEN,EAAEkL,GAAE,CAAC,EAAErJ,EAAEvB,EAAE,CAAC,EAAEN,EAAEkL,GAAE,CAAC,EAAErJ,EAAEvB,EAAE,CAAC,EAAE4K,IAAG,SAASA,GAAE,GAAG,IAAIoqF,EAAE3iC,EAAE,EAAE,EAAEkhC,GAAE,IAAI,YAAY,CAAC,EAAE,IAAIvzF,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,IAAI0B,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,IAAI3C,GAAE,EAAEA,GAAE,EAAE,EAAEA,GAAEgB,EAAE0B,EAAEzB,EAAEivD,GAAEvtD,EAAE,EAAE3C,EAAC,GAAG,CAAC+3F,EAAE/2F,EAAE0B,CAAC,EAAEkmG,IAAI5nG,EAAE0B,CAAC,EAAE,GAAG,EAAE1B,EAAE0B,CAAC,EAAE,GAAGjB,EAAEiB,CAAC,GAAG4wD,KAAKtyD,EAAE0B,CAAC,GAAGq1F,EAAE,GAAG/2F,EAAE0B,CAAC,EAAE,IAAIhC,EAAE,QAAQO,EAAE0B,EAAE3C,GAAEw0F,EAAC,EAAEyB,EAAEzB,GAAE,CAAC,EAAEtkC,GAAEskC,GAAE,CAAC,EAAE,EAAEA,GAAE,CAAC,EAAEr/F,EAAEuN,CAAC,EAAEvN,EAAE8gG,CAAC,KAAK,QAAQ,QAAQ,4BAA4B,CAAC,CAAC,SAAS0S,GAAE1nG,EAAE0B,EAAE3C,GAAEwG,GAAE,CAAC,IAAI9D,EAAEhC,EAAEwvD,GAAE1uD,GAAEmE,GAAEwX,EAAExc,GAAEkL,EAAEjG,EAAEC,EAAE1Q,EAAEqN,GAAEC,EAAE,IAAI,YAAY,CAAC,EAAEwzF,GAAE,EAAE,GAAOj2F,KAAJ,EAAM,OAAOi2F,GAAE,IAAIzB,GAAE,GAAGtqE,GAAE,GAAG4+E,EAAE,GAAG50C,EAAE,EAAE,EAAE,IAAIvzD,GAAE,EAAEiF,EAAE5F,GAAEW,GAAEiF,EAAEjF,IAAG,EAAE,IAAI+B,EAAEzB,EAAEN,EAAC,EAAED,EAAEO,EAAEN,GAAE,CAAC,EAAEuvD,GAAEjvD,EAAEN,GAAE,CAAC,EAAEgC,EAAE,QAAQD,EAAEhC,EAAEwvD,GAAEztD,CAAC,EAAEoJ,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE2oF,GAAE9xF,GAAGF,GAAE8wD,EAAEznD,CAAC,GAAG,CAAC,EAAEqe,GAAExpB,EAAE8B,GAAE,CAAC,EAAEsmG,EAAE54C,GAAE1tD,GAAE,CAAC,EAAEgyF,GAAE,GAAGA,GAAE,IAAItqE,GAAE,GAAGA,GAAE,IAAI4+E,EAAE,GAAGA,EAAE,KAAK9nG,EAAE7L,EAAEq/F,GAAEtgC,EAAE,EAAEhqC,GAAE4+E,CAAC,EAAEF,GAAG,EAAE5nG,EAAE7L,CAAC,EAAE,IAAIwN,EAAE,UAAU6xF,GAAEtqE,GAAE4+E,EAAErmG,CAAC,EAAEoD,GAAGrE,GAAEgzF,GAAE/xF,EAAE,CAAC,GAAGjB,IAAGmE,GAAEukB,GAAEznB,EAAE,CAAC,GAAGkD,IAAGwX,EAAE2rF,EAAErmG,EAAE,CAAC,GAAG0a,EAAE1b,EAAEtM,CAAC,EAAE0Q,EAAE7E,EAAE7L,CAAC,GAAG,EAAE6L,EAAE7L,CAAC,GAAG4iG,EAAEvxF,GAAEyvF,EAAC,EAAEzB,GAAEhuF,GAAEyvF,GAAE,CAAC,EAAE/rE,GAAE1jB,GAAEyvF,GAAE,CAAC,EAAE6S,EAAE7S,IAAG,GAAGj1F,EAAE7L,CAAC,EAAEyzG,GAAG5nG,EAAE7L,CAAC,EAAE,IAAI0Q,GAAGrE,GAAEgzF,GAAE/xF,EAAE,CAAC,GAAGjB,IAAGmE,GAAEukB,GAAEznB,EAAE,CAAC,GAAGkD,IAAGwX,EAAE2rF,EAAErmG,EAAE,CAAC,GAAG0a,GAAG1b,EAAEtM,CAAC,IAAIwN,EAAE,UAAU6xF,GAAEtqE,GAAE4+E,EAAErmG,CAAC,EAAEhB,EAAEtM,CAAC,EAAE0Q,EAAE7E,EAAE7L,CAAC,EAAE4iG,IAAI/2F,EAAE7L,CAAC,GAAG4iG,EAAEvxF,GAAEyvF,EAAC,EAAEzB,GAAEhuF,GAAEyvF,GAAE,CAAC,EAAE/rE,GAAE1jB,GAAEyvF,GAAE,CAAC,EAAE6S,EAAE7S,IAAG,KAAK,IAAIt1F,GAAE,EAAEiF,EAAE5F,GAAEW,GAAEiF,EAAEjF,IAAG,EAAE,IAAI+B,EAAEzB,EAAEN,EAAC,EAAED,EAAEO,EAAEN,GAAE,CAAC,EAAEuvD,GAAEjvD,EAAEN,GAAE,CAAC,EAAEgC,EAAE,QAAQD,EAAEhC,EAAEwvD,GAAEztD,CAAC,EAAEoJ,EAAE,EAAEA,EAAE,GAAGA,IAAI2oF,GAAE9xF,GAAGF,GAAE8wD,EAAEznD,CAAC,GAAG,CAAC,EAAEqe,GAAExpB,EAAE8B,GAAE,CAAC,EAAEsmG,EAAE54C,GAAE1tD,GAAE,CAAC,EAAEgyF,GAAE,GAAGA,GAAE,IAAItqE,GAAE,GAAGA,GAAE,IAAI4+E,EAAE,GAAGA,EAAE,KAAK9nG,EAAE7L,EAAEq/F,GAAEtgC,EAAE,EAAEhqC,GAAE4+E,CAAC,EAAEF,GAAG,EAAE5nG,EAAE7L,CAAC,EAAE,IAAIwN,EAAE,UAAU6xF,GAAEtqE,GAAE4+E,EAAErmG,CAAC,EAAEoD,GAAGrE,GAAEgzF,GAAE/xF,EAAE,CAAC,GAAGjB,IAAGmE,GAAEukB,GAAEznB,EAAE,CAAC,GAAGkD,IAAGwX,EAAE2rF,EAAErmG,EAAE,CAAC,GAAG0a,EAAE1b,EAAEtM,CAAC,EAAE0Q,EAAE7E,EAAE7L,CAAC,GAAG,EAAE6L,EAAE7L,CAAC,GAAG4iG,EAAEvxF,GAAEyvF,EAAC,EAAEzB,GAAEhuF,GAAEyvF,GAAE,CAAC,EAAE/rE,GAAE1jB,GAAEyvF,GAAE,CAAC,EAAE6S,EAAE7S,IAAG,GAAGj1F,EAAE7L,CAAC,EAAEyzG,GAAG5nG,EAAE7L,CAAC,EAAE,IAAI0Q,GAAGrE,GAAEgzF,GAAE/xF,EAAE,CAAC,GAAGjB,IAAGmE,GAAEukB,GAAEznB,EAAE,CAAC,GAAGkD,IAAGwX,EAAE2rF,EAAErmG,EAAE,CAAC,GAAG0a,GAAG1b,EAAEtM,CAAC,IAAIwN,EAAE,UAAU6xF,GAAEtqE,GAAE4+E,EAAErmG,CAAC,EAAEhB,EAAEtM,CAAC,EAAE0Q,EAAE7E,EAAE7L,CAAC,EAAE4iG,IAAI/2F,EAAE7L,CAAC,GAAG4iG,EAAEvxF,GAAEyvF,EAAC,EAAEzB,GAAEhuF,GAAEyvF,GAAE,CAAC,EAAE/rE,GAAE1jB,GAAEyvF,GAAE,CAAC,EAAE6S,EAAE7S,IAAG,KAAK,IAAIt1F,GAAE,EAAEiF,EAAE5F,GAAEW,GAAEiF,EAAEjF,IAAG,EAAE,IAAI+B,EAAEzB,EAAEN,EAAC,EAAED,EAAEO,EAAEN,GAAE,CAAC,EAAEuvD,GAAEjvD,EAAEN,GAAE,CAAC,EAAEgC,EAAE,QAAQD,EAAEhC,EAAEwvD,GAAEztD,CAAC,EAAEoJ,EAAE,GAAGA,EAAE,GAAGA,IAAI2oF,GAAE9xF,GAAGF,GAAE8wD,EAAEznD,CAAC,GAAG,CAAC,EAAEqe,GAAExpB,EAAE8B,GAAE,CAAC,EAAEsmG,EAAE54C,GAAE1tD,GAAE,CAAC,EAAEgyF,GAAE,GAAGA,GAAE,IAAItqE,GAAE,GAAGA,GAAE,IAAI4+E,EAAE,GAAGA,EAAE,KAAK9nG,EAAE7L,EAAEq/F,GAAEtgC,EAAE,EAAEhqC,GAAE4+E,CAAC,EAAEF,GAAG,EAAE5nG,EAAE7L,CAAC,EAAE,IAAIwN,EAAE,UAAU6xF,GAAEtqE,GAAE4+E,EAAErmG,CAAC,EAAEoD,GAAGrE,GAAEgzF,GAAE/xF,EAAE,CAAC,GAAGjB,IAAGmE,GAAEukB,GAAEznB,EAAE,CAAC,GAAGkD,IAAGwX,EAAE2rF,EAAErmG,EAAE,CAAC,GAAG0a,EAAE1b,EAAEtM,CAAC,EAAE0Q,EAAE7E,EAAE7L,CAAC,GAAG,EAAE6L,EAAE7L,CAAC,GAAG4iG,EAAEvxF,GAAEyvF,EAAC,EAAEzB,GAAEhuF,GAAEyvF,GAAE,CAAC,EAAE/rE,GAAE1jB,GAAEyvF,GAAE,CAAC,EAAE6S,EAAE7S,IAAG,GAAGj1F,EAAE7L,CAAC,EAAEyzG,GAAG5nG,EAAE7L,CAAC,EAAE,IAAI0Q,GAAGrE,GAAEgzF,GAAE/xF,EAAE,CAAC,GAAGjB,IAAGmE,GAAEukB,GAAEznB,EAAE,CAAC,GAAGkD,IAAGwX,EAAE2rF,EAAErmG,EAAE,CAAC,GAAG0a,GAAG1b,EAAEtM,CAAC,IAAIwN,EAAE,UAAU6xF,GAAEtqE,GAAE4+E,EAAErmG,CAAC,EAAEhB,EAAEtM,CAAC,EAAE0Q,EAAE7E,EAAE7L,CAAC,EAAE4iG,IAAI/2F,EAAE7L,CAAC,GAAG4iG,EAAEvxF,GAAEyvF,EAAC,EAAEzB,GAAEhuF,GAAEyvF,GAAE,CAAC,EAAE/rE,GAAE1jB,GAAEyvF,GAAE,CAAC,EAAE6S,EAAE7S,IAAG,KAAK,OAAOA,EAAC,CAAC,KAAK,UAAU,SAAStzF,EAAE6D,EAAE9D,GAAEhC,GAAEwvD,EAAE,CAAC,QAAQ,KAAK,sBAAsB,EAAE,IAAI1uD,EAAUmB,IAAR,MAAUszF,EAAEz0F,EAAEgF,EAAE9D,GAAEhC,GAAEwvD,CAAC,EAAE44C,EAAEtnG,CAAC,EAAE,UAAU,CAAC,IAAIP,GAAE0B,EAAE3C,GAAEwG,EAAE,EAAE,EAAE,IAAIvF,GAAE,EAAEA,GAAE,EAAE,EAAEA,GAAE,IAAI0B,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,IAAI3C,GAAE,EAAEA,GAAE,EAAE,EAAEA,GAAE,CAAC,IAAI0C,EAAEzB,GAAEuF,EAAExG,GAAE,EAAE2C,EAAE,GAAG3B,EAAE0B,CAAC,EAAEkmG,EAAE,QAAQloG,EAAE,EAAEA,EAAE,IAAI,CAAC,IAAIwvD,EAAEjvD,GAAEqyD,EAAE5yD,CAAC,EAAE,CAAC,EAAEc,GAAEmB,EAAE2wD,EAAE5yD,CAAC,EAAE,CAAC,EAAEiF,EAAE3F,GAAEszD,EAAE5yD,CAAC,EAAE,CAAC,EAAE,GAAGwvD,EAAE,IAAIA,EAAE,GAAGvqD,EAAE,IAAIA,EAAE,GAAGnE,GAAE,IAAIA,GAAE,GAAG,EAAER,EAAEkvD,EAAE1pD,EAAEb,EAAE,EAAEnE,EAAC,EAAEonG,GAAG,CAAC5nG,EAAE0B,CAAC,GAAGq1F,EAAE,KAAK,CAACr3F,GAAG,CAAC,CAAC,EAAC,EAAUiC,IAAP,MAAkBA,IAAR,OAAWgxD,IAAYhxD,IAAR,QAAY6xF,EAAE,EAAE,EAAE,UAAU,CAAC,IAAI7xF,GAAE3C,EAAE,IAAI2C,GAAE,EAAE3C,EAAEgB,EAAE,OAAO2B,GAAE3C,EAAE,EAAE2C,GAAE3B,EAAE2B,EAAC,GAAG,CAAC,EAAE,IAAIA,GAAE,EAAE3C,EAAE,EAAE,OAAO,EAAE2C,GAAE3C,EAAE,EAAE2C,GAAEuxD,EAAEvxD,EAAC,CAAC,EAAC,GAAI,SAAS1B,GAAE,CAAC,IAAI0B,EAAE3C,GAAEgB,EAAE,OAAO,GAAWC,KAAR,MAAU,IAAI0B,EAAE,EAAEA,EAAE3C,GAAE,EAAE2C,EAAE3B,EAAE2B,CAAC,GAAG,CAACo1F,EAAE/2F,EAAE2B,CAAC,EAAE3B,EAAE2B,CAAC,EAAE,EAAE,EAAE,UAAiB1B,KAAP,KAAS,IAAI0B,EAAE,EAAEA,EAAE3C,GAAE,EAAE2C,EAAE3B,EAAE2B,CAAC,GAAG,CAAC,EAAE3B,EAAE2B,CAAC,EAAEo1F,IAAI/2F,EAAE2B,CAAC,GAAG,GAAG3B,EAAE2B,CAAC,GAAG,CAACo1F,EAAE/2F,EAAE2B,CAAC,EAAE3B,EAAE2B,CAAC,EAAE,EAAE,EAAE,UAAkB1B,KAAR,MAAU,IAAI0B,EAAE,EAAEA,EAAE3C,GAAE,EAAE2C,EAAE3B,EAAE2B,CAAC,EAAEo1F,GAAG/2F,EAAE2B,CAAC,EAAE,EAAE3B,EAAE2B,CAAC,GAAG,CAACo1F,EAAE/2F,EAAE2B,CAAC,EAAEo1F,GAAG,EAAE/2F,EAAE2B,CAAC,EAAE,KAAK3B,EAAE2B,CAAC,GAAG,GAAG3B,EAAE2B,CAAC,EAAE3B,EAAE2B,CAAC,EAAE,EAAE,EAAE,UAAkB1B,KAAR,MAAU,IAAI0B,EAAE,EAAEA,EAAE3C,GAAE,EAAE2C,EAAE3B,EAAE2B,CAAC,GAAG,CAACo1F,EAAE/2F,EAAE2B,CAAC,EAAE3B,EAAE2B,CAAC,EAAE,EAAE,EAAE,CAAC,EAAEA,CAAC,EAAE,QAAQgD,GAAE,EAAEwX,GAAEhoB,EAAE,OAAOwQ,GAAEwX,GAAE,EAAExX,GAAExQ,EAAEwQ,EAAC,EAAE3F,EAAE7K,EAAEwQ,EAAC,CAAC,EAAE,OAAO,QAAQ,QAAQ,sBAAsB,EAAE,CAAC,KAAK3E,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU7L,CAAC,CAAC,EAAE,KAAK,WAAW,SAAS8L,EAAE0B,EAAE3C,GAAEwG,GAAE9D,EAAEhC,EAAEwvD,GAAE,CAAC,IAAI1uD,GAAE,KAAK,UAAUP,EAAE0B,EAAE3C,GAAEwG,GAAE9D,CAAC,EAAE,OAAO,IAAIwyG,GAAG1zG,GAAE,KAAKA,GAAE,GAAGA,GAAE,GAAGA,GAAE,GAAGA,GAAE,SAAS,EAAE,WAAW,EAAEd,EAAE,OAAOiF,EAAEuqD,EAAC,CAAC,CAAC,CAAC,SAASm0D,GAAG,EAAE,EAAErkH,EAAEwG,EAAE9D,EAAEhC,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAEgC,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAEiD,EAAEjF,EAAE,CAAC,EAAEyc,EAAEzc,EAAE,CAAC,EAAEC,EAAED,EAAE,CAAC,EAAE,SAAS,EAAEO,GAAE0B,GAAE,CAAC,OAAO,KAAK,OAAO1B,GAAE0B,IAAG,CAAC,CAAC,CAAC,QAAQiD,EAAE,EAAE5E,EAAES,EAAE,EAAEkE,EAAE,CAAC,EAAE,EAAExQ,EAAE,EAAEgoB,EAAE,CAAC,EAAE,EAAE3a,EAAE,EAAE7B,EAAE,CAAC,EAAE,EAAE8B,EAAEhB,EAAEtM,EAAEqN,EAAEyzF,EAAE9gG,EAAEqN,EAAEomG,EAAE,CAAE,EAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI7Q,GAAGnyF,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE5E,EAAEhB,EAAE,CAAC,GAAG,EAAE4F,EAAE,CAAC,EAAEzQ,EAAE,EAAE,EAAE,CAAC,GAAGqN,EAAE,EAAExB,EAAE,CAAC,GAAY4nG,EAAE7Q,CAAC,IAAZ,OAAc6Q,EAAE7Q,CAAC,EAAE,CAAC,CAAC,EAAE6Q,EAAE7Q,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAIzkC,EAAE,IAAI,YAAY7wD,CAAC,EAAE+xF,EAAE,IAAI,YAAY/xF,CAAC,EAAEynB,EAAE,IAAI,YAAY,CAAC,EAAE4+E,EAAE,EAAE50C,EAAE,EAAE,IAAI,EAAE,EAAE,EAAEzxD,EAAE,IAAI,CAAC,IAAIkxD,EAAEL,EAAE,CAAC,EAAEw1C,EAAEH,GAAEC,EAAE,CAAC,EAAE,GAAYD,KAAT,OAAW,QAAQkJ,EAAE,EAAEA,EAAElJ,GAAE,OAAOkJ,IAAI3nF,EAAE4+E,CAAC,EAAEH,GAAEkJ,CAAC,EAAE/I,IAAI,IAAIgJ,EAAEhJ,EAAEn1C,EAAE6gC,EAAE,CAAC,EAAEsd,EAAEA,EAAE59C,IAAIA,EAAE49C,EAAE,CAAC,MAAM,CAAC,oBAAoB,GAAG59C,EAAE,EAAE,YAAY,SAASxxD,GAAEhC,GAAEwvD,EAAE1uD,EAAEmE,GAAE,CAAC,QAAQwX,GAAE,EAAExc,GAAE,EAAE+B,GAAE,CAAC,EAAEkD,EAAE,EAAElF,GAAE,CAAC,EAAEmF,GAAE,EAAEqqD,EAAE,CAAC,EAAElvD,EAAE,KAAK,IAAI,EAAEL,GAAE,CAAC,EAAE8B,EAAE,KAAK,IAAI,EAAEmD,EAAE,CAAC,EAAEgjG,EAAE,KAAK,IAAI,EAAE/iG,GAAE,CAAC,EAAEgjG,EAAE,KAAK,IAAIpnG,EAAEd,GAAE,CAAC,EAAEo3F,GAAE,KAAK,IAAI5iG,EAAEyQ,EAAE,CAAC,EAAEkjG,EAAE,KAAK,IAAItmG,EAAEqD,GAAE,CAAC,EAAEquD,GAAElzD,EAAEkzD,GAAE20C,EAAE,EAAE30C,GAAE,QAAQP,GAAEO,GAAE+hC,EAAE0S,GAAElmG,EAAEkmG,GAAE5Q,GAAE,EAAE4Q,GAAE,QAAQkJ,EAAElJ,GAAEnmG,EAAEsvG,EAAElJ,EAAEkJ,EAAEhJ,EAAE,EAAEgJ,EAAE,QAAQC,GAAEp+C,GAAEk+C,EAAEC,EAAEE,GAAE1+C,EAAEy+C,EAAC,EAAEE,EAAED,GAAExd,EAAEud,EAAC,EAAE9a,GAAE+a,GAAE/a,GAAEgb,EAAEhb,KAAI,CAAC,IAAIvjC,GAAExpC,EAAE+sE,EAAC,EAAE5uF,GAAE,EAAEqrD,EAAC,EAAEhxD,GAAE4wG,GAAE,EAAE5/C,EAAC,EAAEhzD,GAAE6yG,GAAEvzG,EAAE0zD,EAAC,EAAExD,EAAEsjD,GAAEhtG,EAAEktD,EAAC,EAAElyD,EAAE6G,GAAEA,GAAEirG,GAAEA,GAAEC,GAAEA,IAAGC,GAAEA,KAAI7tG,GAAEwX,IAAG,EAAE+M,EAAE+sE,EAAC,EAAE,CAACtxF,GAAEwX,EAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAASmnG,GAAG,EAAE,EAAEtkH,EAAE,CAAC,MAAMwG,EAAE,EAAE,OAAO9D,EAAE,IAAI,aAAa8D,CAAC,EAAE9F,EAAE,IAAI,aAAa8F,CAAC,EAAE,EAAE,IAAI,aAAaA,CAAC,EAAE,QAAQ7D,GAAE,EAAEA,GAAE6D,EAAE7D,KAAI,CAAC,MAAM3C,EAAE,EAAE2C,GAAED,EAAEC,EAAC,EAAE,EAAE3C,CAAC,EAAEU,EAAEiC,EAAC,EAAE,EAAE3C,EAAE,CAAC,EAAE,EAAE2C,EAAC,EAAE,EAAE3C,EAAE,CAAC,CAAC,CAAC,IAAI,EAAEurG,GAAG,CAAC,EAAM,EAAE,SAAN,IAAe,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE5lG,EAAEwX,EAAExc,EAAE,EAAEiF,EAAE,EAAE5E,EAAES,EAAEtM,EAAEqN,EAAEC,EAAEwzF,EAAE2S,EAAE,EAAE7Q,EAAEzkC,EAAEkhC,EAAEtqE,EAAE,GAAG,MAAM4+E,EAAE,IAAI,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE50C,EAAE,IAAI,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,EAAEP,EAAE,IAAI,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,EAAEg1C,GAAE,IAAI,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAIkJ,EAAE,SAASC,EAAE7wG,GAAEjB,EAAEwB,GAAEsnG,EAAE,CAACnoG,EAAEo/F,EAAG9+F,GAAE,GAAG,EAAE,EAAE8+F,EAAG//F,EAAE,CAAC,EAAE4F,EAAEm6F,EAAGv+F,GAAE,EAAE,EAAE,EAAEu+F,EAAG+I,EAAE,EAAE,EAAE,EAAE,IAAI,aAAatiG,CAAC,EAAEb,EAAE,IAAI,aAAaa,CAAC,EAAE,QAAQvF,EAAE,EAAEA,EAAE,EAAE,OAAO,EAAEA,EAAE,CAAC,IAAIizD,EAAE,EAAEjzD,CAAC,EAAEN,EAAE,EAAEM,CAAC,EAAEizD,EAAEvuD,EAAE1E,CAAC,EAAEizD,EAAEA,CAAC,CAAC/2C,EAAE,EAAE,QAAQlc,EAAE,EAAEA,EAAE,EAAE,OAAO,EAAEA,EAAE,EAAEA,CAAC,EAAEkc,IAAIA,EAAE,EAAElc,CAAC,IAAI,UAAU,CAAC,MAAMA,EAAE+zG,GAAG,EAAE,EAAE73F,EAAE,EAAE,CAAC,EAAE,EAAElc,EAAE,YAAYD,EAAEC,EAAE,IAAIQ,EAAER,EAAE,OAAO4wG,EAAE,KAAK,IAAI,EAAE,EAAE,KAAK,MAAMlxG,EAAE,CAAC,CAAC,EAAExL,EAAE0xG,GAAG7lG,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,KAAK,EAAEwB,EAAE,IAAI,WAAWrN,EAAE,MAAM,EAAEsN,EAAE,IAAI,aAAazB,EAAE,CAAC,CAAC,EAAEi1F,EAAE,IAAI,aAAaj1F,EAAE,CAAC,CAAC,EAAE4nG,EAAE,IAAI,aAAa5nG,EAAE,CAAC,CAAC,EAAE+wG,GAAEtvG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEsvG,GAAE9b,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE8b,GAAEnJ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAC,EAAG,UAAU,CAAC,IAAI3nG,EAAE,EAAE0B,EAAE,EAAE,KAAK,GAAG,EAAEo1F,EAAE,IAAI,aAAa,CAAC,EAAE,EAAE,IAAI,aAAa,CAAC,EAAE,QAAQ/3F,GAAE,EAAEA,GAAE,EAAEA,KAAI+3F,EAAE/3F,EAAC,EAAE,KAAK,IAAIiB,CAAC,EAAE,EAAEjB,EAAC,EAAE,KAAK,IAAIiB,CAAC,EAAEA,GAAG0B,CAAC,EAAC,EAAG2wD,EAAE+wD,GAAG3hH,EAAEhC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAKyc,CAAC,EAAEq3E,EAAE,IAAI,WAAWlhC,EAAE,mBAAmB,EAAEppC,EAAE,EAAE,CAAC,SAAS6nF,GAAE9wG,GAAE0B,EAAE3C,GAAE,CAAC,QAAQwG,EAAE,EAAEA,EAAEvF,GAAE,OAAOuF,IAAIvF,GAAEuF,CAAC,EAAE7D,EAAE3C,GAAEwG,CAAC,CAAC,SAASwrG,GAAE/wG,GAAE0B,EAAE3C,GAAEwG,EAAE9D,EAAE,CAAC,IAAIhC,EAAE,GAAQwpB,IAAL,GAAO,CAAC,GAAGxpB,EAAEwpB,EAAExpB,IAAI8F,GAAG9F,IAAIgC,GAAGuvG,EAAEvxG,EAAEO,GAAE0B,EAAE3C,EAAC,EAAE,OAAOU,EAAEwpB,EAAE,EAAE,CAAC,IAAIgmC,EAAE,EAAE,IAAIxvD,EAAE8zF,EAAEtkC,CAAC,EAAExvD,GAAG,GAAG,CAAC,GAAGA,IAAI8F,GAAG9F,IAAIgC,GAAGuvG,EAAEvxG,EAAEO,GAAE0B,EAAE3C,EAAC,EAAE,OAAOkqB,EAAExpB,EAAEA,EAAEA,EAAE8zF,EAAE,EAAEtkC,CAAC,CAAC,CAAC,OAAOhmC,EAAE,GAAG,EAAE,CAAC,SAAS+nF,EAAEtvG,GAAE3C,EAAEwG,GAAE9D,EAAE,CAAC,IAAIhC,EAAE,EAAEiC,GAAEutD,EAAEvqD,EAAEhD,EAAC,EAAEnB,EAAE,EAAEd,CAAC,EAAEV,EAAE0B,GAAE,EAAEhB,EAAE,CAAC,EAAE8F,GAAEvG,EAAE,EAAES,EAAE,CAAC,EAAEgC,EAAE,OAAOlB,EAAEA,EAAEE,GAAEA,GAAEzB,EAAEA,EAAEiwD,CAAC,CAAC,SAAS+mC,GAAG,CAAC,QAAQh2F,GAAE,EAAEA,GAAEuF,EAAEvF,KAAI,CAAC,IAAI0B,EAAED,EAAEzB,EAAC,EAAEjB,GAAEU,EAAEO,EAAC,EAAEO,EAAE,EAAEP,EAAC,EAAEhB,EAAE,EAAEgB,EAAC,EAAEkc,EAAExX,EAAE1E,EAAC,EAAEqyD,EAAE,YAAY3wD,EAAE3C,GAAEwB,EAAEvB,EAAEu0F,CAAC,EAAE,QAAQ7zF,EAAE,KAAK,KAAKV,EAAE,CAAC,EAAE4F,GAAE,KAAK,MAAM,GAAGlD,EAAE,EAAE,CAAC,EAAE,EAAElB,EAAE,KAAK,MAAM,GAAGzB,GAAE,EAAE,CAAC,EAAE,EAAE6oG,GAAE,KAAK,MAAM,GAAGrnG,EAAE,EAAE,CAAC,EAAE,EAAEu2F,GAAE,KAAK,IAAI,EAAElyF,GAAElF,CAAC,EAAEupB,GAAE,KAAK,IAAI,EAAEzoB,EAAEd,CAAC,EAAEmoG,EAAE,KAAK,IAAI,EAAED,GAAEloG,CAAC,EAAEuzD,EAAE,KAAK,IAAIlzD,EAAE,CAAC,EAAE6E,GAAElF,EAAE,CAAC,EAAEgzD,GAAE,KAAK,IAAI3yD,EAAE,CAAC,EAAES,EAAEd,EAAE,CAAC,EAAEgoG,GAAE,KAAK,IAAI3nG,EAAE,CAAC,EAAE6nG,GAAEloG,EAAE,CAAC,EAAEkxG,EAAE9Z,GAAE8Z,EAAE39C,EAAE29C,IAAI,QAAQC,GAAErvG,EAAEovG,CAAC,EAAElvG,EAAEovG,GAAE/wG,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE6wG,EAAEI,GAAE/nF,GAAE+nF,GAAEt+C,GAAEs+C,KAAI,QAAQhb,GAAEhB,EAAEgc,EAAC,EAAEjyG,GAAE0zD,GAAEo+C,GAAEA,GAAE7a,GAAEA,GAAE5uF,GAAE0pG,GAAE/wG,EAAE,CAAC,EAAEixG,GAAEqB,GAAExK,EAAEwK,GAAE3K,GAAE2K,KAAI,CAAC,IAAIC,GAAE3K,EAAE0K,EAAC,EAAE9xG,EAAEgyG,GAAE9/C,GAAE6/C,GAAEA,GAAE,GAAGC,GAAEr2F,EAAE,CAAC,IAAInF,GAAEs7F,GAAEjrG,GAAElT,EAAE6iB,EAAC,EAAE,IAAI7iB,EAAE6iB,EAAC,EAAE,CAAC7iB,EAAE6iB,EAAC,GAAG,IAAIy7F,GAAE,KAAK,KAAKD,EAAC,EAAEE,GAAEzzG,EAAEwzG,GAAElyG,GAAEuwG,GAAE4B,GAAEC,GAAE1c,GAAEyc,GAAE6Q,GAAEhR,GAAEG,GAAE,GAAQ1B,GAAEzwG,IAAGoB,EAAEgxG,IAAG3zG,GAAEukH,IAAG/iH,EAAEP,GAAE,EAAE,IAA1B,GAA4B,CAAC,IAAIujH,GAAEvkH,EAAEwzG,GAAE+Q,GAAErvH,EAAE6iB,EAAC,IAAI7iB,EAAE6iB,EAAC,EAAEwsG,GAAE5+G,IAAIpD,EAAEwV,EAAC,EAAE/W,IAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAASyyD,GAAEzyD,GAAE0B,EAAE,CAAC,IAAI3C,GAAE,EAAEiB,EAAC,EAAEuF,EAAE,EAAE7D,CAAC,EAAEnB,EAAEsnG,EAAE,CAAC,EAAEpmG,EAAEC,CAAC,EAAED,EAAEzB,EAAC,EAAEhB,EAAE6oG,EAAE,CAAC,EAAEpoG,EAAEiC,CAAC,EAAEjC,EAAEO,EAAC,EAAE0E,EAAEmjG,EAAE,CAAC,EAAE,EAAEnmG,CAAC,EAAE,EAAE1B,EAAC,EAAEkc,GAAE3b,EAAEA,EAAEvB,EAAEA,EAAE0F,EAAEA,EAAEhF,EAAE,KAAK,KAAKwc,EAAC,EAAE1b,GAAEzB,KAAIA,GAAEA,GAAEW,EAAEA,EAAE6F,EAAEA,IAAI,EAAExG,GAAEW,IAAI2rG,GAAGxD,EAAEA,CAAC,EAAE,SAAS7nG,GAAE0B,GAAE,CAAC1B,GAAE,CAAC,EAAEA,GAAE,CAAC,EAAEA,GAAE,CAAC,EAAE,EAAM0B,GAAE,CAAC,IAAP,EAAS1B,GAAE,CAAC,GAAG0B,GAAE,CAAC,EAAEA,GAAE,CAAC,GAAG,CAACA,GAAE,CAAC,EAAMA,GAAE,CAAC,IAAP,EAAS1B,GAAE,CAAC,GAAG0B,GAAE,CAAC,EAAEA,GAAE,CAAC,GAAG,CAACA,GAAE,CAAC,EAAMA,GAAE,CAAC,IAAP,IAAW1B,GAAE,CAAC,GAAG0B,GAAE,CAAC,EAAEA,GAAE,CAAC,GAAG,CAACA,GAAE,CAAC,EAAE,EAAEgxD,EAAEm1C,CAAC,EAAEwD,GAAG34C,EAAEA,CAAC,EAAEi4C,GAAGjD,GAAEG,EAAEn1C,CAAC,EAAE24C,GAAG3D,GAAEA,EAAC,EAAE,IAAIr1C,GAAE,KAAK,KAAKtzD,GAAEA,GAAEyB,GAAEA,EAAC,EAAE4qG,GAAG14C,EAAEA,EAAEL,EAAC,EAAE+4C,GAAG1D,GAAEA,GAAEr1C,EAAC,EAAE+4C,GAAGvD,EAAEA,EAAErnG,EAAC,EAAEyyD,EAAE,CAAC,EAAE40C,EAAE,CAAC,EAAEpmG,EAAEzB,EAAC,EAAEizD,EAAE,CAAC,EAAE40C,EAAE,CAAC,EAAEpoG,EAAEO,EAAC,EAAEizD,EAAE,CAAC,EAAE40C,EAAE,CAAC,EAAE,EAAE7nG,EAAC,EAAEipB,EAAE,GAAG,QAAQsqE,GAAEqd,EAAEC,EAAE,EAAEA,EAAE,EAAEA,IAAI,CAAC,IAAIC,EAAEha,EAAE+Z,CAAC,EAAEG,GAAE,EAAEH,CAAC,EAAE7a,GAAE/iC,EAAE,CAAC,EAAE69C,EAAEp+C,EAAE,CAAC,EAAEs+C,GAAEtJ,GAAE,CAAC,EAAEj1C,EAAEQ,EAAE,CAAC,EAAE69C,EAAEp+C,EAAE,CAAC,EAAEs+C,GAAEtJ,GAAE,CAAC,EAAEtgG,GAAE6rD,EAAE,CAAC,EAAE69C,EAAEp+C,EAAE,CAAC,EAAEs+C,GAAEtJ,GAAE,CAAC,EAAE,GAAQqJ,GAAE/a,GAAEvjC,EAAErrD,GAAEpH,GAAE0B,CAAC,IAAhB,GAAkB,QAAQ2wG,GAAE,KAAK,MAAM,GAAGrc,GAAE,EAAE,CAAC,EAAE,EAAEsc,GAAE,KAAK,MAAM,GAAG7/C,EAAE,EAAE,CAAC,EAAE,EAAE8/C,GAAE,KAAK,MAAM,GAAGnrG,GAAE,EAAE,CAAC,EAAE,EAAE2P,GAAE,KAAK,IAAI,EAAEs7F,GAAE9e,EAAC,EAAEif,GAAE,KAAK,IAAI,EAAEF,GAAE/e,EAAC,EAAEkf,GAAE,KAAK,IAAI,EAAEF,GAAEhf,EAAC,EAAEjzF,GAAE,KAAK,IAAIP,EAAE,CAAC,EAAEsyG,GAAE9e,GAAE,CAAC,EAAEmf,GAAE,KAAK,IAAI3yG,EAAE,CAAC,EAAEuyG,GAAE/e,GAAE,CAAC,EAAE+vB,GAAE,KAAK,IAAIvjH,EAAE,CAAC,EAAEwyG,GAAEhf,GAAE,CAAC,EAAEgwB,GAAExsG,GAAEwsG,GAAEjjH,GAAEijH,KAAI,CAAChjH,EAAEy1F,GAAEx0F,EAAE+hH,EAAC,EAAE,QAAQC,GAAEzjH,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEwjH,GAAEE,GAAEjR,GAAEiR,GAAE/Q,GAAE+Q,KAAI,QAAQC,GAAEnjH,EAAEA,GAAGvB,EAAEyzD,EAAEuiC,EAAEyuB,EAAC,GAAGzkH,EAAE2kH,GAAGH,GAAEzjH,EAAE,CAAC,EAAE0jH,GAAEphB,GAAGoQ,GAAEpQ,GAAGihB,GAAEjhB,KAAK,CAACnmF,GAAEwnG,IAAGh/G,EAAE0C,GAAEugG,EAAEtF,EAAE,GAAG39F,EAAE,IAAIo+G,GAAGzgB,GAAGshB,GAAG9kB,GAAG3qG,EAAE4uH,EAAE,EAAE,GAAGjkB,GAAG,GAAG3iF,GAAE2iF,GAAGA,KAAK3qG,EAAE4uH,EAAE,EAAE,KAAK,KAAK5mG,EAAC,EAAEvX,GAAG,CAAC,MAAM5F,GAAEwB,EAAEsnG,EAAE,CAAC,EAAE7oG,EAAE6oG,EAAE,CAAC,EAAEnjG,EAAEmjG,EAAE,CAAC,EAAEtmG,EAAEuhH,EAAE,EAAE/jH,GAAE,EAAE2C,EAAE1B,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAASoH,GAAEpH,GAAE0B,EAAEnB,GAAE,CAAC,QAAQ,KAAK,qBAAqB,EAAE,QAAQ,KAAK,gBAAgB,EAAEswG,EAAE7wG,GAAE0B,EAAEnB,EAAC,EAAE,QAAQ,QAAQ,gBAAgB,EAAE,QAAQ,KAAK,yBAAyB,EAAEy1F,EAAC,EAAG,QAAQ,QAAQ,yBAAyB,EAAE,QAAQ,KAAK,wBAAwB,EAAE,UAAU,CAAC,QAAQh2F,EAAE,EAAEA,EAAEuF,EAAEvF,IAAI,CAACqyD,EAAE,YAAY5wD,EAAEzB,CAAC,EAAEP,EAAEO,CAAC,EAAE,EAAEA,CAAC,EAAE,EAAEA,CAAC,EAAEuzF,CAAC,EAAE,QAAQ7xF,EAAE,EAAE3C,EAAEw0F,EAAE7xF,CAAC,EAAE3C,GAAG,GAAGiB,EAAEjB,GAAG0zD,GAAEzyD,EAAEjB,CAAC,EAAEA,EAAEw0F,EAAE,EAAE7xF,CAAC,CAAC,CAAC,EAAC,EAAG,QAAQ,QAAQ,wBAAwB,EAAE,UAAU,CAAC,QAAQ1B,EAAE,EAAEA,EAAE9L,EAAE,OAAO8L,IAAI9L,EAAE8L,CAAC,EAAE,IAAI9L,EAAE8L,CAAC,EAAE,EAAE,EAAG,EAAC,UAAU,CAAC,QAAQA,EAAE,EAAEA,EAAEuB,EAAE,OAAOvB,IAAIuB,EAAEvB,CAAC,EAAEjB,EAAEwC,EAAEvB,CAAC,CAAC,CAAC,EAAC,EAAG,QAAQ,QAAQ,qBAAqB,CAAC,CAAC,KAAK,WAAW,SAASA,GAAE0B,EAAE3C,GAAEwG,EAAE9D,EAAEhC,EAAEwvD,EAAE,CAAC,OAAO7nD,GAAE1F,EAAE3C,GAAE0C,CAAC,EAAE,IAAIwyG,GAAG//G,EAAE6L,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEwB,CAAC,EAAE,WAAWG,EAAE,GAAG,OAAOlB,EAAEyuD,CAAC,CAAC,CAAC,CAAC00C,GAAG,IAAI,OAAOsf,EAAE,EAAE,OAAO,OAAOE,GAAG,CAAC,OAAO,CAACpP,GAAGD,GAAGG,GAAG3J,GAAG4Y,EAAE,CAAC,CAAC,EAAE,OAAO,OAAOG,GAAG,CAAC,OAAO,CAACtP,GAAGE,GAAGrO,GAAG0E,GAAGc,GAAGT,GAAGU,GAAG+X,GAAGtkB,CAAE,CAAC,CAAC,EAAE2E,GAAG,IAAI,UAAW,SAAS,EAAE,EAAE,CAAC,MAAM1kG,EAAE,EAAE,KAAK,KAAKwG,EAAE,EAAE,KAAK,OAAO,GAAGxG,GAAGwG,EAAE,CAAC,MAAMvF,EAAE,IAAWuF,EAAE,OAAT,KAAc89G,GAAGF,IAAIpkH,EAAE,UAAUA,EAAE,WAAWA,EAAE,SAAS,EAAE,WAAWwG,EAAE,KAAKA,EAAE,YAAYA,EAAE,YAAYA,EAAE,OAAO,GAAGA,EAAE,OAAOA,EAAE,OAAO,EAAE,EAAE,CAACvF,EAAE,SAAS,OAAOA,EAAE,MAAM,MAAM,EAAEA,EAAE,QAAQ,EAAE,KAAKA,EAAE,OAAO,MAAM,EAAEA,EAAE,WAAW,EAAE,KAAKA,EAAE,UAAU,MAAM,EAAE,EAAE,CAAC,GAAGA,EAAE,EAAEuF,CAAC,EAAE,CAAC,CAAC,CAAC,EAAG,CAAC49G,GAAGE,EAAE,CAAC,EAAE,MAAMO,EAAE,CAAC,YAAY5jH,EAAE,CAAC,KAAK,UAAUA,CAAC,CAAC,aAAaA,EAAE,CAAC,OAAO,KAAK,UAAU,YAAY,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO,GAAG,MAAM,EAAE,EAAE,aAAa8+F,EAAG9+F,EAAE,aAAa,CAAC,KAAK,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAaA,EAAE0B,EAAE,CAAC,IAAI,EAAE,IAAIsyG,GAAGtyG,EAAE,KAAK,GAAG1B,CAAC,EAAE,OAAO,EAAE,KAAK,KAAK0B,EAAE,KAAK,EAAE,KAAK,YAAYA,EAAE,YAAY,EAAE,KAAK,YAAYA,EAAE,YAAY,EAAE,KAAK,OAAOA,EAAE,OAAO,EAAE,KAAK,OAAOA,EAAE,OAAO,CAAC,CAAC,WAAW1B,EAAE,CAAC,MAAM0B,EAAE1B,GAAG,CAAA,EAAG,EAAE,KAAK,aAAaA,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,OAAOP,EAAE,EAAE,MAAMwvD,EAAE,IAAWvtD,EAAE,OAAT,KAAc2hH,GAAGF,IAAI,EAAE,EAAE1jH,CAAC,EAAE,WAAWiC,EAAE,KAAKA,EAAE,YAAYA,EAAE,YAAYA,EAAE,OAAO,GAAGA,EAAE,OAAOA,EAAE,OAAO,EAAE,OAAO,KAAK,aAAautD,EAAEvtD,CAAC,CAAC,CAAC,iBAAiB1B,EAAE0B,EAAE,CAAC,MAAM,EAAE,OAAO,OAAO,GAAG1B,CAAC,EAAE,GAAG,OAAO,eAAe,QAAQ,EAAE,CAAU,KAAK,SAAd,SAAuB,KAAK,OAAO,IAAIkqG,GAAG,SAAS,GAAG,MAAM,EAAE,KAAK,aAAalqG,CAAC,EAAE,EAAE,EAAE,SAASP,EAAE,EAAE,OAAOwvD,EAAE,EAAE,MAAM1uD,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,WAAWd,EAAE,UAAUwvD,CAAC,EAAE,OAAO,CAAC,EAAExuD,EAAE,CAAC,EAAE,OAAOhB,EAAE,OAAOwvD,EAAE,MAAM,EAAE,KAAK,OAAO,KAAK1uD,EAAEE,EAAGT,GAAG,CAAC0B,EAAE,KAAK,aAAa1B,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,EAAIA,GAAG,CAAC,QAAQ,KAAK,kEAAkEA,CAAC,EAAE,KAAK,OAAO,UAAS,EAAG,KAAK,OAAO,OAAO,MAAMuF,EAAE,KAAK,WAAW,CAAC,EAAE7D,EAAE6D,CAAC,CAAC,CAAG,CAAA,KAAK,CAAC,MAAMvF,EAAE,KAAK,WAAW,CAAC,EAAE0B,EAAE1B,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,QAAQ,KAAK,OAAO,WAAW,CAAC,CAAC,MAAM6jH,WAAW1E,EAAE,CAAC,YAAYn/G,EAAE0B,EAAE,EAAE,CAAC,MAAM1B,EAAE0B,EAAE,CAAC,EAAE,KAAK,KAAK,UAAU,KAAK,WAAW,OAAO,OAAO,CAAC,YAAY,CAAC,KAAK,SAAS,QAAQ,GAAG,QAAQ,CAAC,IAAI,MAAM,IAAI,MAAM,GAAG,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,KAAK,UAAU,UAAU,EAAE,IAAI,GAAG,IAAI,EAAE,QAAQ,EAAE,EAAE,YAAY,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,WAAW,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,WAAW,CAAC,KAAK,UAAU,OAAO,EAAE,EAAE,WAAW,CAAC,KAAK,OAAO,QAAQ,EAAE,EAAE,YAAY,CAAC,KAAK,QAAQ,EAAE,UAAU,CAAC,KAAK,UAAU,QAAQ,EAAE,CAAC,EAAE,KAAK,WAAW,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,EAAE,KAAK,WAAW,CAAA,EAAG,KAAK,UAAU,QAAQ,UAAU,IAAK,IAAI,CAAC,KAAK,kBAAkB,EAAE,CAAG,EAAC,KAAK,aAAa,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK1B,EAAE,CAAC,MAAM0B,EAAE1B,GAAG,CAAA,EAAG0B,EAAE,YAAYo9F,EAAGp9F,EAAE,YAAY,SAAS,EAAEA,EAAE,WAAWo9F,EAAGp9F,EAAE,WAAW,QAAQ,EAAEA,EAAE,eAAeo9F,EAAGp9F,EAAE,eAAe,EAAE,EAAE,KAAK,YAAYo9F,EAAGp9F,EAAE,YAAY,IAAI,EAAE,KAAK,YAAYo9F,EAAGp9F,EAAE,YAAY,GAAG,EAAE,KAAK,OAAOo9F,EAAGp9F,EAAE,OAAO,CAAC,EAAE,KAAK,YAAYo9F,EAAGp9F,EAAE,YAAY,CAAC,EAAE,KAAK,OAAOo9F,EAAGp9F,EAAE,OAAO,CAAC,EAAE,KAAK,QAAQo9F,EAAGp9F,EAAE,QAAQ,EAAE,EAAE,KAAK,WAAWo9F,EAAGp9F,EAAE,WAAW,EAAE,EAAE,KAAK,WAAWo9F,EAAGp9F,EAAE,WAAW,EAAE,EAAE,KAAK,WAAWo9F,EAAGp9F,EAAE,WAAW,EAAE,EAAE,KAAK,YAAYo9F,EAAGp9F,EAAE,YAAY,MAAM,EAAE,KAAK,UAAUo9F,EAAGp9F,EAAE,UAAU,EAAE,EAAE,MAAM,KAAK1B,CAAC,CAAC,CAAC,YAAYA,EAAEjB,EAAEwG,EAAE,CAAC,IAAI9D,EAAE,KAAK,WAAW1C,CAAC,EAAE,GAAG0C,IAAIA,EAAE,CAAA,EAAG,KAAK,WAAW1C,CAAC,EAAE0C,GAAGA,EAAE,SAASA,EAAE,OAAOzB,EAAE,UAAU,OAAOuF,EAAExG,CAAC,MAAM,CAAC,GAAG,KAAK,WAAW,CAAC,MAAM0C,EAAEzB,EAAE,UAAU,QAAQ,IAAIoiG,GAAG,KAAK,UAAU,CAAC,EAAE3iG,EAAEgC,EAAE,YAAY,QAAQ,IAAIC,CAAC,EAAEutD,EAAE,KAAK,IAAIxvD,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,EAAEc,EAAEP,EAAE,sBAAsByB,EAAE,OAAOwtD,EAAE,EAAE,CAAC,EAAE,IAAQjvD,EAAEA,EAAE,QAAQ,IAAIoiG,GAAGpiG,EAAE,0BAA0BO,EAAE,CAAC,EAAE,aAAY,CAAE,CAAC,GAAG,YAA3E,EAAqF,OAAO,KAAKgF,EAAExG,CAAC,CAAC,CAAC0C,EAAE,KAAKzB,EAAE,UAAU,OAAOyB,EAAE,QAAQ,IAAImiH,GAAG5jH,CAAC,EAAE,MAAMP,EAAE,KAAK,iBAAgB,EAAG,EAAEO,GAAG,CAACyB,EAAE,QAAQzB,EAAEuF,EAAExG,CAAC,CAAC,EAAE,KAAK,UAAU0C,EAAE,QAAQ,iBAAiBhC,EAAE,CAAC,EAAE,EAAEgC,EAAE,QAAQ,WAAWhC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQO,EAAE,CAAC,IAAI,KAAK,mBAAmB,KAAK,SAAS,KAAK,UAAU,QAAQ,KAAK,kBAAkB,KAAK,UAAU,KAAK,kBAAkB,KAAK,KAAK,WAAW,QAASA,GAAG,CAACA,GAAGA,EAAE,SAASA,EAAE,QAAQ,QAAS,CAAA,GAAI,KAAK,WAAW,OAAO,GAAO,KAAK,cAAc,YAAvB,EAAiC,OAAO,KAAKA,EAAC,EAAG,MAAM0B,EAAE,IAAI,CAAC,KAAK,OAAO,KAAK,UAAU,OAAO,KAAK,gBAAgB,KAAK,UAAU,KAAK,iBAAgB,CAAE,EAAE,KAAK,kBAAkB,GAAG1B,GAAG,EAAE,EAAc,KAAK,WAAjB,UAA0B,KAAK,gBAAgB,KAAK,SAAS,EAAE,KAAK,UAAU,WAAW,CAAC,EAAE,EAAE,EAAE,SAAS,QAAS,CAACA,EAAEjB,IAAI,CAAC,MAAM0C,EAAEzB,EAAE,QAAQ,KAAK,aAAa,EAAE,KAAK,YAAYyB,EAAE1C,EAAGiB,GAAG,CAACA,IAAI,EAAE,SAAS,OAAO,GAAG0B,EAAC,CAAE,CAAC,CAAE,CAAG,EAAC,KAAK,YAAY,KAAK,cAAc,EAAEA,CAAC,CAAC,CAAC,WAAW1B,EAAE0B,EAAE,CAAC,MAAM,EAAE,KAAK,WAAWA,CAAC,EAAE,EAAE,EAAE,QAAQ,GAAG,CAAC,EAAE,OAAO,MAAM,EAAE,CAAC,SAAS,EAAE,YAAW,EAAG,MAAM,EAAE,SAAS,KAAK,eAAgB,CAAA,EAAE,MAAM,EAAE,iBAAiB,KAAK,WAAW1B,CAAC,CAAC,EAAEP,EAAE,CAAA,EAAG,GAAG,EAAE,QAAQ,CAAC,MAAMO,EAAE,IAAI80G,GAAG,EAAE,KAAK,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC,EAAEr1G,EAAE,KAAKO,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,EAAE,CAAC,OAAO,EAAE,UAAW,EAAC,QAAQ,EAAE,WAAWA,EAAE,aAAY,CAAE,CAAC,CAAC,EAAE,MAAM0B,EAAE,IAAIgzG,GAAG,EAAE,KAAK,gBAAgB,CAAC,WAAW,KAAK,WAAW,WAAW,KAAK,WAAW,aAAa,EAAE,CAAC,CAAC,EAAE,GAAa,KAAK,gBAAiB,EAAC,MAAjC,SAAsC,CAAC,MAAM10G,EAAE,IAAI60G,GAAGnzG,CAAC,EAAEjC,EAAE,KAAKO,CAAC,CAAC,MAAMP,EAAE,KAAKiC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAWjC,EAAE,KAAK,CAAC,CAAC,CAAC,WAAWO,EAAE0B,EAAE,CAAC,MAAM,EAAE,GAAG,GAAG1B,EAAE,UAAUA,EAAE,OAAO,OAAO,KAAK,kBAAkB,GAAG,KAAK,KAAK,MAAK,EAAGA,EAAE,QAAQ,EAAE,MAAM0B,EAAE,KAAK,QAAQ,SAAS,KAAK,eAAgB,CAAA,GAAG1B,EAAE,QAAQ,EAAE,MAAM0B,EAAE,KAAK,QAAQ,iBAAiB,KAAK,WAAWA,EAAE,KAAK,GAAGA,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,cAAc1B,EAAE0B,EAAE,GAAG,EAAE,CAAC,OAAO1B,GAAGA,EAAE,aAAa0B,EAAE,MAAM,IAAI1B,GAAYA,EAAE,cAAX,SAAyB0B,EAAE,MAAM,IAAI1B,GAAGA,EAAE,YAAYA,EAAE,SAAkBA,EAAE,UAAX,QAAoB,KAAK,WAAWA,EAAE,UAAU,IAAI,MAAM,cAAcA,EAAE0B,EAAE,CAAC,EAAE,IAAI,CAAC,iBAAiB1B,EAAE,CAAE,EAAC,CAAC,OAAO,OAAO,OAAO,CAAC,KAAK,KAAK,YAAY,YAAY,KAAK,YAAY,YAAY,KAAK,YAAY,OAAO,KAAK,QAAQ,CAAC,KAAK,QAAQ,OAAO,KAAK,OAAO,QAAQ,KAAK,QAAQ,UAAU,KAAK,UAAU,aAAa,KAAK,gBAAiB,CAAA,EAAEA,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAMA,EAAE,MAAM,eAAgB,EAAC,OAAOA,EAAE,OAAO,KAAK,YAAYA,CAAC,CAAC,eAAe,CAAC,MAAO,EAAC,CAAC,OAAO,CAAC,MAAM,MAAO,CAAA,CAAC,SAAS,CAAC,KAAK,WAAW,QAASA,GAAG,CAACA,GAAGA,EAAE,SAASA,EAAE,QAAQ,QAAO,CAAE,CAAC,EAAG,KAAK,WAAW,OAAO,EAAE,MAAM,QAAO,CAAE,CAAC,CAAC2jG,GAAG,IAAI,UAAUkgB,EAAE,EAAE,MAAMC,WAAW3E,EAAE,CAAC,YAAYn/G,EAAE0B,EAAE,EAAE,CAAC,MAAM1B,EAAE0B,EAAE,CAAC,EAAE,KAAK,KAAK,QAAQ,KAAK,WAAW,OAAO,OAAO,CAAC,UAAU,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,IAAI,IAAI,EAAE,OAAO,EAAE,EAAE,gBAAgB,CAAC,KAAK,UAAU,OAAO,EAAE,EAAE,cAAc,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,WAAW,CAAC,KAAK,UAAU,OAAO,EAAE,EAAE,UAAU,CAAC,KAAK,QAAQ,KAAK,KAAK,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,iBAAiB,CAAC,KAAK,UAAU,OAAO,EAAE,EAAE,WAAW,CAAC,KAAK,QAAQ,KAAK,KAAK,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,WAAW,CAAC,WAAW,KAAK,UAAU,KAAK,UAAU,KAAK,KAAK,KAAK,UAAU,KAAK,UAAU,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK1B,EAAE,CAAC,IAAI0B,EAAE1B,GAAG,GAAG,KAAK,UAAU8+F,EAAGp9F,EAAE,UAAU,CAAC,EAAE,KAAK,gBAAgBo9F,EAAGp9F,EAAE,gBAAgB,EAAE,EAAE,KAAK,cAAco9F,EAAGp9F,EAAE,cAAc,EAAE,EAAE,KAAK,WAAWo9F,EAAGp9F,EAAE,WAAW,EAAE,EAAE,KAAK,UAAUo9F,EAAGp9F,EAAE,UAAU,EAAE,EAAE,KAAK,iBAAiBo9F,EAAGp9F,EAAE,iBAAiB,EAAE,EAAE,KAAK,WAAWo9F,EAAGp9F,EAAE,WAAW,CAAC,EAAE,MAAM,KAAKA,CAAC,CAAC,CAAC,WAAW1B,EAAE,CAAC,IAAI0B,EAAE1B,EAAE,YAAY,KAAK,cAAc,CAAC,SAAS,GAAG,MAAM,GAAG,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI+6G,GAAGr5G,EAAE,KAAK,gBAAgB,CAAC,UAAU,KAAK,UAAU,gBAAgB,KAAK,gBAAgB,cAAc,KAAK,cAAc,WAAW,KAAK,WAAW,UAAU,KAAK,UAAU,iBAAiB,KAAK,iBAAiB,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW1B,EAAE0B,EAAE,CAAC,IAAI,EAAEA,EAAE,MAAM,YAAY,KAAK,cAAc1B,CAAC,CAAC,EAAE,EAAE,GAAGA,GAAG,CAACA,EAAE,UAAU,OAAO,OAAO,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAEA,GAAG,CAACA,EAAE,OAAO,OAAO,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE0B,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,GAAE,CAAC,CAACiiG,GAAG,IAAI,QAAQmgB,EAAE,EAAEjgB,GAAG,IAAI,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAA6jC,EAAE,MAAMkgB,GAAG,IAAI,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,SAASC,GAAG,EAAE,CAAC,MAAO,IAAG,GAAG,EAAE,SAAS,OAAO,EAAE,GAAG,CAAC,MAAMC,WAAWxP,EAAE,CAAC,YAAYz0G,EAAE0B,EAAE,CAAE,EAAC,CAAC,MAAM,CAAC,SAAS,IAAI,aAAasiH,GAAGhkH,CAAC,CAAC,EAAE,MAAM,IAAI,aAAagkH,GAAGhkH,CAAC,CAAC,EAAE,MAAMw/F,GAAGwkB,GAAGhkH,CAAC,EAAEgkH,GAAGhkH,CAAC,EAAE,CAAC,EAAE,OAAO,IAAI,aAAagkH,GAAGhkH,CAAC,CAAC,EAAE,QAAQA,EAAE,OAAO,EAAE0B,CAAC,EAAE,KAAK,aAAa,cAAc,MAAM,EAAE1B,EAAE,SAAS,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,cAAc,CAAC,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,EAAEA,EAAE,YAAY8lG,GAAG,CAAC,EAAE,KAAK,cAAc9lG,CAAC,EAAE,KAAK,UAAW,CAAA,CAAC,cAAcA,EAAE,CAAA,EAAG,CAAC,MAAM0B,EAAE,KAAK,KAAK,EAAE,EAAE,KAAK,SAAS,WAAW,IAAI,EAAE,EAAEjC,EAAEwvD,EAAE1uD,EAAEE,EAAEzB,EAAE6F,EAAEH,EAAEwX,EAAExc,EAAEkL,EAAEjG,EAAEC,EAAE7E,EAAES,EAAEtM,EAAEqN,EAAEC,EAAExB,EAAE,WAAW,EAAEA,EAAE,SAAShB,EAAE,EAAE,SAAS,MAAM,EAAE,SAAS,YAAY,IAAIgB,EAAE,SAAS,EAAEA,EAAE,OAAO6E,EAAE,EAAE,OAAO,MAAM,EAAE,OAAO,YAAY,IAAI7E,EAAE,OAAOP,EAAEO,EAAE,KAAK0E,EAAE,EAAE,KAAK,MAAM,EAAE,KAAK,YAAY,IAAI1E,EAAE,MAAMivD,EAAEjvD,EAAE,IAAIkc,EAAE,EAAE,IAAI,MAAM,EAAE,IAAI,YAAY,IAAIlc,EAAE,QAAQO,EAAEP,EAAE,MAAMN,EAAE,EAAE,MAAM,MAAM,EAAE,MAAM,YAAY,IAAIM,EAAE,cAAcS,EAAET,EAAE,YAAY4K,EAAE,EAAE,YAAY,MAAM,EAAE,YAAY,YAAY,IAAI,IAAIoqF,EAAEv1F,EAAEA,EAAE,CAAC,EAAE,KAAK,IAAIkF,EAAE,EAAEA,EAAEjD,EAAE,EAAEiD,EAAE,CAAC,IAAIpD,EAAE,EAAEoD,EAAE5E,EAAE,EAAE4E,EAAE,EAAEzQ,EAAE,EAAEyQ,EAAE,IAAI3F,EAAEe,CAAC,EAAEf,EAAEe,EAAE,CAAC,EAAE,EAAEwB,CAAC,EAAEvC,EAAEe,EAAE,CAAC,EAAEf,EAAEe,EAAE,CAAC,EAAE,EAAEwB,EAAE,CAAC,EAAEvC,EAAEe,EAAE,CAAC,EAAEf,EAAEe,EAAE,CAAC,EAAE,EAAEwB,EAAE,CAAC,EAAEvC,EAAEe,EAAE,CAAC,EAAEf,EAAEe,EAAE,CAAC,EAAE,EAAEwB,EAAE,CAAC,EAAEvC,EAAEe,EAAE,CAAC,EAAEf,EAAEe,EAAE,EAAE,EAAE,EAAEwB,EAAE,CAAC,EAAEvC,EAAEe,EAAE,CAAC,EAAEf,EAAEe,EAAE,EAAE,EAAE,EAAEwB,EAAE,CAAC,GAAG,IAAIsD,EAAE9E,CAAC,EAAE8E,EAAE9E,EAAE,CAAC,EAAE,CAAC,EAAEwB,CAAC,EAAEsD,EAAE9E,EAAE,CAAC,EAAE8E,EAAE9E,EAAE,CAAC,EAAE,CAAC,EAAEwB,EAAE,CAAC,EAAEsD,EAAE9E,EAAE,CAAC,EAAE8E,EAAE9E,EAAE,CAAC,EAAE,CAAC,EAAEwB,EAAE,CAAC,EAAEsD,EAAE9E,EAAE,CAAC,EAAE8E,EAAE9E,EAAE,CAAC,EAAE,CAAC,EAAEwB,EAAE,CAAC,EAAEsD,EAAE9E,EAAE,CAAC,EAAE8E,EAAE9E,EAAE,EAAE,EAAE,CAAC,EAAEwB,EAAE,CAAC,EAAEsD,EAAE9E,EAAE,CAAC,EAAE8E,EAAE9E,EAAE,EAAE,EAAE,CAAC,EAAEwB,EAAE,CAAC,GAAGqD,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAEpE,EAAET,EAAE,EAAE6E,EAAErE,IAAIb,EAAEc,CAAC,EAAED,EAAEgB,CAAC,EAAE7B,EAAEc,EAAE,CAAC,EAAED,EAAEgB,EAAE,CAAC,EAAE7B,EAAEc,EAAE,CAAC,EAAED,EAAEgB,EAAE,CAAC,GAAGd,IAAImK,EAAE1W,EAAE0Q,CAAC,EAAEnE,EAAEkE,CAAC,GAAGlF,IAAI+B,EAAE/B,EAAEkF,CAAC,EAAEqwF,IAAIv1F,EAAEkF,CAAC,GAAGD,EAAExQ,CAAC,EAAE8gG,EAAEtwF,EAAExQ,EAAE,CAAC,EAAE8gG,EAAEtwF,EAAExQ,EAAE,CAAC,EAAEsN,EAAEkD,EAAExQ,EAAE,CAAC,EAAEsN,IAAIkD,EAAExQ,CAAC,EAAEsN,EAAEkD,EAAExQ,EAAE,CAAC,EAAEsN,EAAEkD,EAAExQ,EAAE,CAAC,EAAEsN,EAAEkD,EAAExQ,EAAE,CAAC,EAAEsN,GAAGwzF,EAAExzF,GAAGytD,IAAI/yC,EAAEnc,CAAC,EAAEkvD,EAAE1tD,CAAC,EAAE2a,EAAEnc,EAAE,CAAC,EAAEkvD,EAAE1tD,EAAE,CAAC,EAAE2a,EAAEnc,EAAE,CAAC,EAAEkvD,EAAE1tD,EAAE,CAAC,EAAE2a,EAAEnc,EAAE,CAAC,EAAE,CAACkvD,EAAE1tD,CAAC,EAAE2a,EAAEnc,EAAE,CAAC,EAAE,CAACkvD,EAAE1tD,EAAE,CAAC,EAAE2a,EAAEnc,EAAE,CAAC,EAAE,CAACkvD,EAAE1tD,EAAE,CAAC,EAAE2a,EAAEnc,EAAE,CAAC,EAAEkvD,EAAE1tD,EAAE,CAAC,EAAE2a,EAAEnc,EAAE,CAAC,EAAEkvD,EAAE1tD,EAAE,CAAC,EAAE2a,EAAEnc,EAAE,CAAC,EAAEkvD,EAAE1tD,EAAE,CAAC,EAAE2a,EAAEnc,EAAE,CAAC,EAAE,CAACkvD,EAAE1tD,EAAE,CAAC,EAAE2a,EAAEnc,EAAE,EAAE,EAAE,CAACkvD,EAAE1tD,EAAE,CAAC,EAAE2a,EAAEnc,EAAE,EAAE,EAAE,CAACkvD,EAAE1tD,EAAE,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,MAAMvB,EAAE,KAAK,SAAS,SAAQ,EAAG,GAAG,CAACA,EAAE,OAAO,KAAKojG,GAAG,MAAM,eAAe,EAAE,MAAM1hG,EAAE1B,EAAE,MAAM,EAAE0B,EAAE,OAAO,EAAE,EAAE,QAAQ1B,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,CAAC,MAAMjB,EAAE,EAAEiB,EAAEuF,EAAE,EAAEvF,EAAE0B,EAAE,IAAIqiH,GAAGhlH,CAAC,EAAE,QAAQiB,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE0B,EAAE3C,EAAEiB,CAAC,GAAGuF,CAAC,CAAC,CAAC,CAAC,MAAM2+G,WAAW/E,EAAE,CAAC,YAAYn/G,EAAE0B,EAAE,EAAE,CAAC,MAAM1B,EAAE0B,EAAE,CAAC,EAAE,KAAK,KAAK,SAAS,KAAK,WAAW,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,UAAU,IAAI,GAAG,IAAI,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,YAAY,CAAC,KAAK,UAAU,QAAQ,EAAE,CAAC,EAAE,KAAK,WAAW,CAAC,KAAK,KAAK,UAAU,KAAK,UAAU,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK1B,EAAE,CAAC,IAAI0B,EAAE1B,GAAG,GAAG0B,EAAE,YAAYo9F,EAAGp9F,EAAE,YAAY,WAAW,EAAEA,EAAE,WAAWo9F,EAAGp9F,EAAE,WAAW,QAAQ,EAAEA,EAAE,WAAWo9F,EAAGp9F,EAAE,WAAW,QAAQ,EAAEA,EAAE,YAAYo9F,EAAGp9F,EAAE,YAAY,CAAC,EAAUA,EAAE,UAAV,MAAkB,KAAK,OAAO,EAAaA,EAAE,UAAb,SAAqB,KAAK,OAAO,EAAWA,EAAE,UAAX,OAAmB,KAAK,OAAO,GAAG,KAAK,OAAOo9F,EAAGp9F,EAAE,OAAO,CAAC,EAAE,KAAK,QAAQo9F,EAAGp9F,EAAE,QAAQ,GAAG,EAAE,KAAK,YAAYo9F,EAAGp9F,EAAE,YAAY,EAAE,EAAE,MAAM,KAAKA,CAAC,CAAC,CAAC,gBAAgB1B,EAAE,CAAC,OAAO,OAAO,OAAO,CAAC,OAAO,KAAK,OAAO,QAAQ,KAAK,QAAQ,YAAY,GAAG,YAAY,KAAK,WAAW,EAAEA,CAAC,CAAC,CAAC,cAAcA,EAAE,CAAC,OAAOA,EAAE,QAAO,EAAG,MAAM,cAAcA,CAAC,EAAE,CAAC,CAAC,WAAWA,EAAE,CAAC,IAAI0B,EAAE,CAAE,EAAC,EAAE,GAAG,OAAO,KAAK,UAAU,YAAa1B,GAAG,CAAC,GAAG,EAAEA,EAAE,aAAa,GAAG,CAAC,EAAE,KAAKA,CAAC,EAAE,IAAIuF,EAAE,IAAI+7G,GAAGthH,EAAE,KAAK,gBAAe,CAAE,EAAEyB,EAAE8D,EAAE,sBAAqB,EAAG9F,EAAE8F,EAAE,yBAAwB,EAAG0pD,EAAE1pD,EAAE,mBAAmB,KAAK,gBAAgB,EAAEhF,EAAEgF,EAAE,qBAAsB,EAAC9E,EAAE8E,EAAE,kBAAkB,KAAK,gBAAe,CAAE,EAAE7D,EAAE,KAAK,IAAIuiH,GAAG,CAAC,SAASxiH,EAAE,SAAS,OAAOhC,EAAE,SAAS,IAAIA,EAAE,OAAO,MAAMwvD,EAAE,MAAM,KAAKxuD,EAAE,KAAK,QAAQF,EAAE,OAAO,EAAE,KAAK,gBAAe,CAAE,CAAC,CAAC,CAAC,EAAGP,EAAE,aAAc,CAAA,EAAE,CAAC,WAAW0B,EAAE,YAAY,CAAC,CAAC,CAAC,WAAW1B,EAAE0B,EAAE,CAAC1B,EAAEA,GAAG,CAAA,EAAG,IAAI,EAAE,EAAE,EAAE0B,EAAE,YAAY,OAAO,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAA,EAAGjC,EAAE,IAAI6hH,GAAG5/G,EAAE,YAAY,CAAC,EAAE,KAAK,gBAAe,CAAE,EAAE,GAAG1B,EAAE,SAAS,CAAC,IAAIivD,EAAExvD,EAAE,sBAAqB,EAAGc,EAAEd,EAAE,yBAA0B,EAAC,OAAO,OAAO,EAAE,CAAC,SAASwvD,EAAE,SAAS,OAAO1uD,EAAE,SAAS,IAAIA,EAAE,MAAM,CAAC,CAAC,CAAC,GAAGP,EAAE,QAAQA,EAAE,MAAM,CAAC,IAAIS,EAAEhB,EAAE,kBAAkB,KAAK,gBAAe,CAAE,EAAE,OAAO,OAAO,EAAE,CAAC,KAAKgB,EAAE,IAAI,CAAC,CAAC,CAAC,GAAGT,EAAE,MAAM,CAAC,IAAIhB,EAAES,EAAE,mBAAmB,KAAK,eAAgB,CAAA,EAAE,OAAO,OAAO,EAAE,CAAC,MAAMT,EAAE,KAAK,CAAC,CAAC,CAAC0C,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc1B,EAAE,CAAC,IAAI0B,EAAE,CAAE,EAAC,OAAO1B,GAAGA,EAAE,SAAS,OAAO,OAAO0B,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,MAAM,cAAc1B,EAAE0B,EAAE,EAAE,EAAE,IAAI,CAAC,CAACiiG,GAAG,IAAI,SAASugB,EAAE,EAAE,MAAMC,WAAWhF,EAAE,CAAC,YAAYn/G,EAAE0B,EAAE,EAAE,CAAC,MAAM1B,EAAE0B,EAAE,CAAC,EAAE,KAAK,KAAK,SAAS,KAAK,WAAW,OAAO,OAAO,CAAC,WAAW,CAAC,KAAK,UAAU,IAAI,IAAI,IAAI,EAAE,QAAQ,EAAE,EAAE,WAAW,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,EAAE,QAAQ,EAAE,EAAE,SAAS,CAAC,KAAK,UAAU,QAAQ,EAAE,EAAE,eAAe,GAAG,UAAU,GAAG,gBAAgB,EAAE,EAAE,KAAK,UAAU,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK1B,EAAE,CAAC,IAAI0B,EAAE1B,GAAG,CAAE,EAAC0B,EAAE,YAAYo9F,EAAGp9F,EAAE,YAAY,QAAQ,EAAEA,EAAE,WAAWo9F,EAAGp9F,EAAE,WAAW,GAAG,EAAEA,EAAE,YAAYo9F,EAAGp9F,EAAE,YAAY,CAAC,EAAEA,EAAE,UAAUo9F,EAAGp9F,EAAE,UAAU,EAAE,EAAEA,EAAE,iBAAiBo9F,EAAGp9F,EAAE,iBAAiB,EAAE,EAAE,KAAK,WAAWo9F,EAAGp9F,EAAE,WAAW,EAAE,EAAE,KAAK,WAAWo9F,EAAGp9F,EAAE,WAAW,GAAG,EAAE,KAAK,SAASo9F,EAAGp9F,EAAE,SAAS,EAAE,EAAE,MAAM,KAAKA,CAAC,CAAC,CAAC,WAAW1B,EAAE,CAAC,IAAI0B,EAAE,EAAE,MAAM,EAAE,CAAE,EAAC,EAAE,CAAA,EAAG,KAAK,UAAU,YAAa1B,GAAG,CAAC,GAAGA,EAAE,aAAa,GAAGA,EAAE,UAAW,EAAC,OAAO,MAAMyB,EAAE,IAAIm1G,GAAG52G,CAAC,EAAEP,EAAEgC,EAAE,QAAQ,KAAK,WAAW,KAAK,WAAW,KAAK,SAAS,KAAK,eAAgB,EAAC,KAAK,gBAAiB,CAAA,EAAEC,GAAGjC,EAAE,KAAK,OAAO,EAAE,KAAKA,CAAC,EAAE,EAAE,KAAKgC,CAAC,CAAC,EAAGzB,EAAE,aAAY,CAAE,EAAE,MAAM,EAAE,CAAC,MAAM,IAAI,aAAa,EAAE0B,CAAC,EAAE,IAAI,IAAI,aAAa,EAAEA,CAAC,EAAE,KAAK,IAAI,aAAaA,CAAC,EAAE,MAAM,IAAI,aAAa,EAAEA,CAAC,EAAE,QAAQ,CAAE,CAAA,EAAE,IAAIjC,EAAE,IAAI,aAAaiC,CAAC,EAAEutD,EAAE,EAAE,SAAE,QAAS,SAASjvD,EAAE,CAAC,EAAE,MAAM,IAAIA,EAAE,MAAM,EAAEivD,CAAC,EAAE,EAAE,IAAI,IAAIjvD,EAAE,IAAI,EAAEivD,CAAC,EAAE,EAAE,KAAK,IAAIjvD,EAAE,KAAKivD,CAAC,EAAE,EAAE,MAAM,IAAIjvD,EAAE,MAAM,EAAEivD,CAAC,EAAExvD,EAAE,IAAIO,EAAE,QAAQ,MAAMivD,CAAC,EAAEA,GAAGjvD,EAAE,KAAK,MAAM,CAAC,EAAG0B,IAAI,EAAE,QAAQ,IAAI8vG,GAAG/xG,EAAEO,EAAE,aAAc,CAAA,GAAS,CAAC,WAAW,CAAC,IAAIihH,GAAG,CAAC,UAAU,EAAE,MAAM,UAAU,EAAE,IAAI,MAAM,EAAE,MAAM,OAAO,EAAE,MAAM,OAAO,EAAE,KAAK,QAAQ,EAAE,OAAO,EAAE,KAAK,gBAAgB,CAAC,UAAU,KAAK,UAAU,eAAe,KAAK,eAAe,gBAAgB,KAAK,gBAAgB,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC,WAAWjhH,EAAE0B,EAAE,CAAC,IAAI1B,EAAEA,GAAG,IAAI,SAAS,KAAK,MAAK,MAAO,CAAC,IAAI,EAAE,CAAA,EAAG,GAAGA,EAAE,OAAOA,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE0B,EAAE,gBAAgB,QAAS3C,GAAG,CAAC,IAAI0C,EAAE1C,EAAE,QAAQ,KAAK,WAAW,KAAK,WAAW,KAAK,SAAS,KAAK,eAAgB,EAAC,KAAK,gBAAiB,CAAA,EAAEiB,EAAE,OAAO0B,EAAE,SAAS,MAAM,IAAID,EAAE,MAAM,EAAE,CAAC,GAAGzB,EAAE,QAAQA,EAAE,QAAQ0B,EAAE,SAAS,KAAK,IAAID,EAAE,KAAK,CAAC,EAAE,GAAGA,EAAE,KAAK,MAAM,CAAG,EAACzB,EAAE,OAAO,OAAO,OAAO,EAAE,CAAC,MAAM0B,EAAE,SAAS,MAAM,OAAOA,EAAE,SAAS,KAAK,CAAC,GAAG1B,EAAE,QAAQA,EAAE,QAAQ,OAAO,OAAO,EAAE,CAAC,OAAO0B,EAAE,SAAS,IAAI,CAAC,CAAC,CAACA,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAACiiG,GAAG,IAAI,SAASwgB,EAAE,EAAE,MAAMC,WAAWvqB,EAAE,CAAC,YAAY75F,EAAE0B,EAAE,EAAE,CAAC,MAAM1B,EAAE0B,EAAE,CAAC,EAAE,KAAK,KAAK,OAAO,KAAK,WAAW,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,UAAU,IAAI,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,WAAW,CAAC,YAAY,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK1B,EAAE,CAAC,IAAI0B,EAAE1B,GAAG,CAAA,EAAG0B,EAAE,YAAY,EAAEA,EAAE,QAAQo9F,EAAGp9F,EAAE,QAAQ,EAAE,EAAEA,EAAE,YAAYo9F,EAAGp9F,EAAE,YAAY,CAAC,EAAEA,EAAE,YAAY,GAAG,KAAK,OAAOo9F,EAAGp9F,EAAE,OAAO,CAAC,EAAE,MAAM,KAAKA,CAAC,CAAC,CAAC,UAAU1B,EAAE,CAAC,IAAI0B,EAAE,IAAIi1G,GAAG32G,CAAC,EAAE,OAAO,IAAIshH,GAAGthH,EAAE,KAAK,gBAAgB,CAAC,YAAY,GAAG,iBAAiB0B,EAAE,kBAAkB,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAACiiG,GAAG,IAAI,OAAOygB,EAAE,EAAE,MAAMC,WAAWlF,EAAE,CAAC,YAAYn/G,EAAE0B,EAAE,EAAE,CAAC,MAAM1B,EAAE0B,EAAE,CAAC,EAAE,KAAK,KAAK,YAAY,KAAK,WAAW,OAAO,OAAO,CAAC,aAAa,GAAG,gBAAgB,EAAE,EAAE,KAAK,UAAU,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK1B,EAAE,CAAC,IAAI0B,EAAE1B,GAAG,CAAE,EAAC0B,EAAE,iBAAiBo9F,EAAGp9F,EAAE,iBAAiB,EAAE,EAAE,MAAM,KAAKA,CAAC,CAAC,CAAC,WAAW1B,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI26G,GAAG36G,EAAE,YAAY,KAAK,eAAe,EAAE,KAAK,gBAAgB,CAAC,aAAa,KAAK,aAAa,aAAa,GAAG,gBAAgB,KAAK,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAWA,EAAE0B,EAAE,CAAC,IAAI,EAAEA,EAAE,MAAM,YAAY,KAAK,cAAc1B,CAAC,CAAC,EAAE,EAAE,GAAGA,GAAG,CAACA,EAAE,UAAU,OAAO,OAAO,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAEA,GAAG,CAACA,EAAE,OAAO,OAAO,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAEA,GAAG,CAACA,EAAE,QAAQ,OAAO,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE0B,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS4iH,GAAG,EAAE,CAAC,MAAO,IAAG,EAAE,SAAS,OAAO,EAAE,GAAG,CAAC,CAAC3gB,GAAG,IAAI,YAAY0gB,EAAE,EAAE,MAAME,WAAW/P,EAAE,CAAC,YAAYx0G,EAAE0B,EAAE,CAAE,EAAC,CAAC,MAAM,CAAC,SAAS,IAAI,aAAa4iH,GAAGtkH,CAAC,CAAC,EAAE,MAAM,IAAI,aAAaskH,GAAGtkH,CAAC,CAAC,CAAC,EAAE0B,CAAC,EAAE,KAAK,OAAO,GAAG,KAAK,aAAa,YAAY,KAAK,eAAe,YAAY,KAAK,cAAc1B,CAAC,CAAC,CAAC,cAAcA,EAAE,CAAC,IAAI0B,EAAE,EAAE,EAAE,EAAE,MAAMjC,EAAE,KAAK,SAAS,WAAW,GAAGO,EAAE,WAAW0B,EAAE1B,EAAE,SAAS,EAAEP,EAAE,SAAS,MAAMA,EAAE,SAAS,YAAY,IAAIO,EAAE,QAAQ,EAAEA,EAAE,MAAM,EAAEP,EAAE,MAAM,MAAMA,EAAE,MAAM,YAAY,IAAI,CAACiC,GAAG,CAAC,EAAE,OAAO,KAAK0hG,GAAG,KAAK,6CAA6C,EAAE,IAAIn0C,EAAE1uD,EAAE,MAAME,EAAE,KAAK,KAAK,EAAE,QAAQT,EAAE,EAAEA,EAAES,EAAE,EAAET,EAAEivD,EAAE,EAAEjvD,EAAEO,EAAE,EAAEP,EAAE,EAAE0B,IAAI,EAAEnB,CAAC,EAAEmB,EAAEutD,CAAC,EAAE,EAAE1uD,EAAE,CAAC,EAAEmB,EAAEutD,EAAE,CAAC,EAAE,EAAE1uD,EAAE,CAAC,EAAEmB,EAAEutD,EAAE,CAAC,EAAE,EAAE1uD,EAAE,CAAC,EAAEmB,EAAEutD,EAAE,CAAC,EAAE,EAAE1uD,EAAE,CAAC,EAAEmB,EAAEutD,EAAE,CAAC,EAAE,EAAE1uD,EAAE,CAAC,EAAEmB,EAAEutD,EAAE,CAAC,GAAG,IAAI,EAAE1uD,CAAC,EAAE,EAAE0uD,CAAC,EAAE,EAAE1uD,EAAE,CAAC,EAAE,EAAE0uD,EAAE,CAAC,EAAE,EAAE1uD,EAAE,CAAC,EAAE,EAAE0uD,EAAE,CAAC,EAAE,EAAE1uD,EAAE,CAAC,EAAE,EAAE0uD,EAAE,CAAC,EAAE,EAAE1uD,EAAE,CAAC,EAAE,EAAE0uD,EAAE,CAAC,EAAE,EAAE1uD,EAAE,CAAC,EAAE,EAAE0uD,EAAE,CAAC,EAAE,CAAC,CAAC,MAAMu1D,WAAWrF,EAAE,CAAC,YAAYn/G,EAAE0B,EAAE,EAAE,CAAC,MAAM1B,EAAE0B,EAAE,CAAC,EAAE,KAAK,KAAK,QAAQ,KAAK,WAAW,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,UAAU,IAAI,GAAG,IAAI,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,YAAY,CAAC,KAAK,UAAU,QAAQ,EAAE,CAAC,EAAE,KAAK,WAAW,CAAC,WAAW,KAAK,KAAK,KAAK,UAAU,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK1B,EAAE,CAAC,IAAI0B,EAAE1B,GAAG,GAAG0B,EAAE,YAAYo9F,EAAGp9F,EAAE,YAAY,WAAW,EAAEA,EAAE,WAAWo9F,EAAGp9F,EAAE,WAAW,QAAQ,EAAUA,EAAE,UAAV,MAAkB,KAAK,OAAO,EAAaA,EAAE,UAAb,SAAqB,KAAK,OAAO,EAAWA,EAAE,UAAX,OAAmB,KAAK,OAAO,GAAG,KAAK,OAAOo9F,EAAGp9F,EAAE,OAAO,CAAC,EAAE,KAAK,QAAQo9F,EAAGp9F,EAAE,QAAQ,GAAG,EAAE,KAAK,YAAYo9F,EAAGp9F,EAAE,YAAY,EAAE,EAAE,MAAM,KAAKA,CAAC,CAAC,CAAC,gBAAgB1B,EAAE,CAAC,OAAO,OAAO,OAAO,CAAC,OAAO,KAAK,OAAO,QAAQ,KAAK,QAAQ,YAAY,GAAG,YAAY,KAAK,WAAW,EAAEA,CAAC,CAAC,CAAC,cAAcA,EAAE,CAAC,OAAOA,EAAE,QAAS,EAAC,GAAG,CAAC,CAAC,WAAWA,EAAE,CAAC,IAAI0B,EAAE,GAAG,EAAE,CAAA,EAAG,OAAO,KAAK,UAAU,YAAa1B,GAAG,CAAC,GAAG,EAAEA,EAAE,aAAa,GAAG,CAAC,EAAE,KAAKA,CAAC,EAAE,IAAIuF,EAAE,IAAI+7G,GAAGthH,EAAE,KAAK,gBAAe,CAAE,EAAEyB,EAAE8D,EAAE,sBAAqB,EAAG9F,EAAE8F,EAAE,mBAAmB,KAAK,eAAc,CAAE,EAAE7D,EAAE,KAAK,IAAI6iH,GAAG,OAAO,OAAO,CAAE,EAAC9iH,EAAEhC,CAAC,EAAE,KAAK,gBAAiB,CAAA,CAAC,CAAC,CAAC,EAAGO,EAAE,cAAc,EAAE,CAAC,WAAW0B,EAAE,YAAY,CAAC,CAAC,CAAC,WAAW1B,EAAE0B,EAAE,CAAC1B,EAAEA,GAAG,CAAA,EAAG,IAAI,EAAE,EAAE,EAAE0B,EAAE,YAAY,OAAO,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAA,EAAGjC,EAAE,IAAI6hH,GAAG5/G,EAAE,YAAY,CAAC,EAAE,KAAK,gBAAiB,CAAA,EAAE,GAAG1B,EAAE,SAAS,CAAC,IAAIivD,EAAExvD,EAAE,sBAAuB,EAAC,OAAO,OAAO,EAAE,CAAC,SAASwvD,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAGjvD,EAAE,MAAM,CAAC,IAAIO,EAAEd,EAAE,mBAAmB,KAAK,eAAgB,CAAA,EAAE,OAAO,OAAO,EAAE,CAAC,MAAMc,EAAE,KAAK,CAAC,CAAC,CAACmB,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc1B,EAAE,CAAC,IAAI0B,EAAE,CAAA,EAAG,OAAO1B,GAAGA,EAAE,SAAS,OAAO,OAAO0B,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,MAAM,cAAc1B,EAAE0B,EAAE,EAAE,EAAE,IAAI,CAAC,CAACiiG,GAAG,IAAI,QAAQ6gB,EAAE,EAAE,MAAMC,WAAW5qB,EAAE,CAAC,YAAY75F,EAAE0B,EAAE,EAAE,CAAC,MAAM1B,EAAE0B,EAAE,CAAC,EAAE,KAAK,KAAK,OAAO,KAAK,WAAW,OAAO,OAAO,GAAG,KAAK,WAAW,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK1B,EAAE,CAAC,IAAI0B,EAAE1B,GAAG,CAAE,EAAC0B,EAAE,YAAY,EAAEA,EAAE,YAAYo9F,EAAGp9F,EAAE,YAAY,CAAC,EAAUA,EAAE,UAAV,QAAoB,KAAK,eAAe,GAAG,MAAM,KAAKA,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,MAAM,gBAAgB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAACiiG,GAAG,IAAI,OAAO8gB,EAAE,EAAE,MAAMC,WAAWvF,EAAE,CAAC,YAAYn/G,EAAE0B,EAAE,EAAE,CAAC,MAAM1B,EAAE0B,EAAE,CAAC,EAAE,KAAK,KAAK,WAAW,KAAK,WAAW,OAAO,OAAO,CAAC,WAAW,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,aAAa,GAAG,eAAe,GAAG,gBAAgB,EAAE,EAAE,KAAK,WAAW,CAAC,SAAS,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK1B,EAAE,CAAC,MAAM0B,EAAE1B,GAAG,CAAA,EAAG,IAAI,EAAE,GAAG,KAAK,UAAU,WAAW,EAAE,KAAK,KAAK,KAAK,UAAU,SAAS,MAAM,EAAE,KAAK0B,EAAE,WAAWo9F,EAAGp9F,EAAE,WAAW,CAAC,EAAEA,EAAE,WAAWo9F,EAAGp9F,EAAE,WAAW,QAAQ,EAAEA,EAAE,iBAAiBo9F,EAAGp9F,EAAE,iBAAiB,EAAE,EAAE,MAAM,KAAKA,CAAC,CAAC,CAAC,gBAAgB1B,EAAE,CAAC,OAAOA,EAAE,SAAS,QAAQA,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAMA,EAAE,KAAK,cAAc,aAAc,EAAC,GAAG,CAACA,EAAE,SAAS,OAAO,MAAM0B,EAAE,KAAK,gBAAgB1B,CAAC,EAAE,KAAK,aAAa,IAAI26G,GAAGj5G,EAAE,OAAO,KAAK,gBAAgB,CAAC,aAAa,KAAK,aAAa,gBAAgB,KAAK,gBAAgB,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,eAAe,IAAIu/G,GAAGv/G,EAAE,KAAK,KAAK,gBAAgB,CAAC,UAAU,GAAG,eAAe,KAAK,eAAe,gBAAgB,KAAK,gBAAgB,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,SAAS,KAAK,CAAC,MAAM,KAAK,cAAc,WAAW,CAAC,KAAK,aAAa,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW1B,EAAE,CAAA,CAAE,WAAWA,EAAE0B,EAAE,CAAC,MAAM,EAAEA,EAAE,MAAM,aAAc,EAAC,GAAG,CAAC,EAAE,SAAS,OAAO,MAAM,EAAE,KAAK,gBAAgB,CAAC,EAAE,EAAE,CAAE,EAACjC,EAAE,CAAA,EAAGO,GAAG,CAACA,EAAE,WAAW,OAAO,OAAO,EAAE,CAAC,SAAS,EAAE,OAAO,QAAQ,CAAC,EAAE,OAAO,OAAOP,EAAE,CAAC,UAAU,EAAE,KAAK,UAAU,UAAU,EAAE,KAAK,SAAS,CAAC,GAAGO,GAAG,CAACA,EAAE,QAAQ,OAAO,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO,OAAOP,EAAE,CAAC,MAAM,EAAE,KAAK,MAAM,OAAO,EAAE,KAAK,MAAM,CAAC,GAAGO,GAAG,CAACA,EAAE,SAAS,OAAO,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,MAAM,CAAC,EAAE,OAAO,OAAOP,EAAE,CAAC,OAAO,EAAE,KAAK,MAAM,CAAC,GAAG,KAAK,aAAa,cAAc,CAAC,EAAE,KAAK,eAAe,cAAcA,CAAC,CAAC,CAAC,CAACkkG,GAAG,IAAI,WAAW+gB,EAAE,EAAE,MAAMC,WAAWxF,EAAE,CAAC,YAAYn/G,EAAE0B,EAAE,EAAE,CAAC,MAAM1B,EAAE0B,EAAE,CAAC,EAAE,KAAK,KAAK,aAAa,KAAK,WAAW,OAAO,OAAO,CAAA,EAAG,KAAK,WAAW,CAAC,WAAW,KAAK,WAAW,KAAK,YAAY,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK1B,EAAE,CAAC,MAAM0B,EAAE1B,GAAG,CAAE,EAAC0B,EAAE,WAAWo9F,EAAGp9F,EAAE,WAAW,SAAS,EAAEA,EAAE,iBAAiBo9F,EAAGp9F,EAAE,iBAAiB,EAAE,EAAE,MAAM,KAAKA,CAAC,CAAC,CAAC,WAAW1B,EAAE,CAAC,GAAG,CAACA,EAAE,WAAW,OAAO,MAAM0B,EAAE1B,EAAE,WAAW,aAAa,CAAC,UAAUA,EAAE,MAAM,KAAK,UAAU,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,IAAIihH,GAAGv/G,EAAE,KAAK,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACiiG,GAAG,IAAI,aAAaghB,EAAE,EAAE,MAAMC,GAAG,IAAIljH,EAAEmjH,GAAG,IAAInjH,EAAE0xD,GAAG,IAAI1xD,EAAEojH,GAAG,IAAIpjH,EAAE,EAAE,EAAE,CAAC,EAAQqjH,GAAG,OAAO,OAAO,CAAC,eAAe,GAAG,UAAU,EAAE,EAAEzQ,EAAE,EAAE,MAAM0Q,WAAW9K,EAAE,CAAC,YAAYl6G,EAAE0B,EAAE,CAAA,EAAG,CAAC,MAAM,CAAC,SAAS,IAAI,aAAa1B,EAAE,UAAU,MAAM,EAAE,MAAMA,EAAE,MAAM,QAAQA,EAAE,OAAO,EAAE0B,EAAE,SAAS1B,EAAE,GAAG,CAAC,MAAM0B,EAAE,IAAIpB,GAAE,EAAE,EAAEw+F,EAAG9+F,EAAE,eAAe,EAAE,EAAE,EAAE8+F,EAAG9+F,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO0B,EAAE,aAAc,IAAI3C,KAAG,cAAc,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE2C,CAAC,EAAEA,CAAC,CAAC,EAAE,KAAK,cAAc,GAAG,KAAK,UAAU,IAAI,aAAa1B,EAAE,UAAU,MAAM,EAAE,KAAK,cAAcA,EAAE,EAAE,CAAC,CAAC,IAAI,mBAAmB,CAAC,OAAO+kH,EAAE,CAAC,uBAAuB/kH,EAAE0B,EAAE,EAAE,CAACmjH,GAAG,UAAU,KAAK,WAAW,CAAC,EAAEzxD,GAAG,UAAU,KAAK,WAAW,CAAC,EAAEpzD,EAAE,OAAO6kH,GAAGzxD,GAAG0xD,EAAE,EAAE,MAAM,EAAE,KAAK,QAAQpjH,CAAC,EAAEkjH,GAAG,IAAI,EAAE,EAAEC,GAAG,WAAWzxD,EAAE,CAAC,EAAEpzD,EAAE,MAAM4kH,EAAE,CAAC,CAAC,cAAc5kH,EAAE,CAAA,EAAG0B,EAAE,CAAC1B,EAAE,WAAWA,EAAE,YAAY0lG,GAAG1lG,EAAE,UAAUA,EAAE,UAAU,KAAK,SAAS,EAAE,KAAK,WAAWA,EAAE,UAAU,KAAK,WAAWA,EAAE,UAAUA,EAAE,SAAS,KAAK,WAAWA,EAAE,SAAS,KAAK,QAAQA,EAAE,QAAQ,MAAM,cAAcA,EAAE0B,CAAC,CAAC,CAAC,CAACsiG,GAAG,IAAI,OAAOghB,EAAE,EAAE,MAAM7xD,EAAE,CAAC,YAAYnzD,EAAE,CAAA,EAAG,CAAC,KAAK,aAAaA,CAAC,CAAC,oBAAoB,CAAC,KAAK,YAAY,KAAK,YAAY,MAAO,EAAC,KAAK,YAAY,IAAIO,GAAE,KAAK,aAAa,QAASP,GAAG,CAACA,EAAE,aAAaA,EAAE,mBAAoB,EAAC,KAAK,YAAY,MAAMA,EAAE,WAAW,CAAC,CAAG,CAAA,CAAC,CAAC,MAAMilH,GAAG,OAAO,OAAO,CAAC,YAAY,IAAI,eAAe,GAAG,UAAU,GAAG,gBAAgB,EAAE,EAAE3Q,EAAE,EAAE,MAAM4Q,EAAE,CAAC,YAAYllH,EAAE0B,EAAE,CAAA,EAAG,CAAC,KAAK,MAAM,IAAIhC,GAAE,KAAK,eAAe,IAAIA,GAAE,KAAK,aAAa,IAAIA,GAAE,KAAK,QAAQ,GAAG,KAAK,WAAWq/F,GAAGr9F,EAAE,KAAK,iBAAiB,EAAE,KAAK,cAAc,IAAI,aAAa1B,EAAE,UAAU,MAAM,EAAE,KAAK,eAAe,IAAI,aAAaA,EAAE,OAAO,MAAM,EAAE,MAAMuF,EAAE,KAAK,eAAevF,CAAC,EAAEyB,EAAE,CAAC,eAAe,KAAK,WAAW,eAAe,UAAU,KAAK,WAAW,UAAU,gBAAgB,KAAK,WAAW,eAAe,EAAE,KAAK,eAAe,IAAIw/G,GAAG17G,EAAE,SAAS9D,CAAC,EAAE,KAAK,WAAW,IAAIujH,GAAGz/G,EAAE,KAAK9D,CAAC,EAAE,KAAK,SAAS,IAAI0xD,GAAG,CAAC,KAAK,eAAe,SAAS,KAAK,WAAW,QAAQ,CAAC,EAAE,KAAK,OAAO2rC,EAAGp9F,EAAE,OAAO,IAAI3C,EAAC,EAAE,KAAK,QAAQiB,EAAE,OAAO,CAAC,IAAI,mBAAmB,CAAC,OAAOilH,EAAE,CAAC,IAAI,OAAOjlH,EAAE,CAACw0G,GAAG,UAAU,UAAU,KAAK,KAAKx0G,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,OAAO,KAAK,MAAM,OAAO,MAAO,CAAA,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,OAAO,CAAC,eAAeA,EAAE,GAAG,CAAC,MAAMjB,EAAE,KAAK,cAAcwG,EAAE,KAAK,eAAe9D,EAAE,KAAK,WAAW,YAAY,IAAIhC,EAAE,EAAE,MAAM,EAAE,CAAA,EAAG,EAAE,CAAE,EAAC,GAAGO,EAAE,OAAO,CAAC,IAAIP,EAAE,EAAE,EAAE8F,EAAE,OAAO9F,EAAE,EAAE,EAAEA,EAAE8F,EAAE9F,CAAC,EAAEO,EAAE,OAAOP,CAAC,EAAEgC,EAAE,EAAE,OAAO8D,EAAE,EAAE,OAAOvF,EAAE,MAAM,CAAC,GAAGA,EAAE,WAAWA,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI0B,EAAE,EAAE,IAAIA,EAAEgD,EAAE,IAAIhD,EAAEwa,EAAE,IAAIxa,EAAE,IAAIjC,EAAE,EAAE,EAAEV,EAAE,OAAOU,EAAE,EAAEA,GAAG,EAAE,CAAC,EAAE,UAAUO,EAAE,UAAUP,CAAC,EAAE,EAAE,UAAUO,EAAE,UAAUP,CAAC,EAAEiF,EAAE,WAAW,EAAE,CAAC,EAAE,MAAMhD,EAAEgD,EAAE,OAAQ,EAACuqD,EAAE1pD,EAAE9F,EAAE,CAAC,EAAEgC,EAAE,EAAElB,EAAE,KAAK,IAAImB,EAAEutD,CAAC,EAAEvqD,EAAE,UAAUnE,CAAC,EAAE2b,EAAE,KAAK,CAAC,EAAE,IAAIxX,CAAC,EAAEwX,EAAE,QAAQnd,EAAEU,CAAC,CAAC,CAAC,EAAE,UAAUO,EAAE,UAAU,EAAE,UAAUjB,EAAE,EAAE,UAAUA,EAAE,EAAE,UAAUiB,EAAE,SAAS,CAAC,OAAOA,EAAE,QAAQ,EAAE,MAAMA,EAAE,MAAM,EAAE,OAAOA,EAAE,MAAM,EAAE,MAAMA,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,IAAIN,KAAG,IAAI,KAAK,eAAe,QAAS,EAAC,KAAK,WAAW,QAAS,CAAA,CAAC,CAAC,kBAAkB,CAAC,OAAO,IAAIA,KAAG,IAAI,KAAK,eAAe,iBAAkB,EAAC,KAAK,WAAW,iBAAkB,CAAA,CAAC,CAAC,gBAAgB,CAAC,OAAO,IAAIA,KAAG,IAAI,KAAK,eAAe,eAAgB,EAAC,KAAK,WAAW,eAAgB,CAAA,CAAC,CAAC,cAAcM,EAAE,GAAG,CAAC,MAAM0B,EAAE,KAAK,eAAe1B,CAAC,EAAE,KAAK,eAAe,cAAc0B,EAAE,QAAQ,EAAE,KAAK,WAAW,cAAcA,EAAE,IAAI,CAAC,CAAC,cAAc1B,EAAE,CAAE,EAAC,EAAEA,EAAE,OAAO,OAAO,CAAE,EAACA,CAAC,IAAaA,EAAE,SAAX,SAAoB,KAAK,OAAOA,EAAE,QAAQ,OAAOA,EAAE,OAAOA,GAAYA,EAAE,YAAX,SAAuB,KAAK,WAAW,UAAUA,EAAE,UAAU,KAAK,cAAc,KAAK,OAAO,GAAG,KAAK,eAAe,cAAcA,CAAC,EAAE,KAAK,WAAW,cAAcA,CAAC,CAAC,CAAC,cAAcA,EAAE,CAACw0G,GAAG,UAAU,cAAc,KAAK,KAAKx0G,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,eAAe,QAAS,EAAC,KAAK,WAAW,QAAS,CAAA,CAAC,CAACgkG,GAAG,IAAI,QAAQkhB,EAAE,EAAE,MAAMC,GAAG,IAAIzjH,EAAE0jH,GAAG,IAAI1jH,EAAE2jH,GAAG,IAAI3jH,EAAE+tD,GAAG,IAAI/tD,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM4jH,WAAWpL,EAAE,CAAC,YAAYl6G,EAAE0B,EAAE,CAAE,EAAC,CAAC,MAAM1B,EAAE0B,EAAE,IAAIgxG,GAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,cAAc,GAAG,KAAK,cAAc1yG,EAAE,EAAE,CAAC,CAAC,uBAAuBA,EAAE0B,EAAE,EAAE,CAAC0jH,GAAG,UAAU,KAAK,YAAY,CAAC,EAAEC,GAAG,UAAU,KAAK,WAAW,CAAC,EAAErlH,EAAE,OAAOyvD,GAAG21D,GAAGC,EAAE,EAAEF,GAAG,IAAI,KAAK,MAAMzjH,CAAC,EAAE2jH,GAAG,SAASD,GAAG,QAAQ,EAAEplH,EAAE,MAAMmlH,EAAE,CAAC,CAAC,cAAcnlH,EAAE,CAAA,EAAG0B,EAAE,CAAC1B,EAAE,OAAO,KAAK,MAAMA,EAAE,MAAMA,EAAE,aAAa,KAAK,YAAYA,EAAE,YAAYA,EAAE,YAAY,KAAK,WAAWA,EAAE,WAAW,MAAM,cAAcA,EAAE0B,CAAC,CAAC,CAAC,CAACsiG,GAAG,IAAI,MAAMshB,EAAE,EAAE,MAAMC,GAAG,IAAI7jH,EAAE8jH,GAAG,IAAI9jH,EAAE+jH,GAAG,IAAI/jH,EAAEgkH,GAAG,IAAIhkH,EAAE,EAAE,EAAE,CAAC,EAAEikH,GAAG,OAAO,OAAO,CAAC,aAAa,CAAC,EAAErR,EAAE,EAAE,MAAMsR,WAAW1L,EAAE,CAAC,YAAYl6G,EAAE0B,EAAE,CAAA,EAAG,CAAC,MAAM1B,EAAE0B,EAAE,IAAI2wG,GAAE,EAAEvT,EAAGp9F,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,cAAc,GAAG,KAAK,cAAc1B,EAAE,EAAE,CAAC,CAAC,IAAI,mBAAmB,CAAC,OAAO2lH,EAAE,CAAC,uBAAuB3lH,EAAE0B,EAAE,EAAE,CAAC8jH,GAAG,UAAU,KAAK,WAAW,CAAC,EAAEC,GAAG,UAAU,KAAK,WAAW,CAAC,EAAEzlH,EAAE,OAAO0lH,GAAGF,GAAGC,EAAE,EAAEF,GAAG,IAAI,KAAK,QAAQ7jH,CAAC,EAAE+jH,GAAG,OAAQ,EAACD,GAAG,OAAQ,CAAA,EAAExlH,EAAE,MAAMulH,EAAE,CAAC,CAAC,cAAcvlH,EAAE,CAAA,EAAG0B,EAAE,CAAC1B,EAAE,SAAS,KAAK,QAAQA,EAAE,QAAQA,EAAE,YAAY,KAAK,WAAWA,EAAE,WAAWA,EAAE,YAAY,KAAK,WAAWA,EAAE,WAAW,MAAM,cAAcA,EAAE0B,CAAC,CAAC,CAAC,CAACsiG,GAAG,IAAI,YAAY4hB,EAAE,EAAE,MAAMC,GAAG,IAAInkH,EAAEokH,GAAG,IAAIpkH,EAAEqkH,GAAG,IAAIrkH,EAAEskH,GAAG,IAAItkH,EAAE,EAAE,EAAE,CAAC,EAAE,MAAMukH,WAAW/L,EAAE,CAAC,YAAYl6G,EAAE0B,EAAE,CAAA,EAAG,CAAC,MAAM1B,EAAE0B,EAAE,IAAI4hH,GAAE,EAAE,CAAC,CAAC,EAAE,KAAK,cAAc,GAAG,KAAK,cAActjH,EAAE,EAAE,CAAC,CAAC,uBAAuBA,EAAE0B,EAAE,EAAE,CAACokH,GAAG,UAAU,KAAK,YAAY,CAAC,EAAEC,GAAG,UAAU,KAAK,WAAW,CAAC,EAAE/lH,EAAE,OAAOgmH,GAAGF,GAAGC,EAAE,EAAEF,GAAG,IAAI,KAAK,MAAMnkH,CAAC,EAAEqkH,GAAG,OAAM,EAAGD,GAAG,OAAM,CAAE,EAAE9lH,EAAE,MAAM6lH,EAAE,CAAC,CAAC,cAAc7lH,EAAE,CAAE,EAAC0B,EAAE,CAAC1B,EAAE,OAAO,KAAK,MAAMA,EAAE,MAAMA,EAAE,aAAa,KAAK,YAAYA,EAAE,YAAYA,EAAE,YAAY,KAAK,WAAWA,EAAE,WAAW,MAAM,cAAcA,EAAE0B,CAAC,CAAC,CAAC,CAACsiG,GAAG,IAAI,aAAaiiB,EAAE,EAAE,MAAMC,GAAG,IAAIxkH,EAAEykH,GAAG,IAAIzkH,EAAE0kH,GAAG,IAAI1kH,EAAE2kH,GAAG,IAAI3kH,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM4kH,WAAWpM,EAAE,CAAC,YAAYl6G,EAAE0B,EAAE,CAAE,EAAC,CAAC,MAAM1B,EAAE0B,EAAE,IAAI6hH,GAAE,EAAE,CAAC,CAAC,EAAE,KAAK,cAAc,GAAG,KAAK,cAAcvjH,EAAE,EAAE,CAAC,CAAC,uBAAuBA,EAAE0B,EAAE,EAAE,CAACykH,GAAG,UAAU,KAAK,YAAY,CAAC,EAAEC,GAAG,UAAU,KAAK,WAAW,CAAC,EAAEpmH,EAAE,OAAOqmH,GAAGF,GAAGC,EAAE,EAAEF,GAAG,IAAI,KAAK,MAAMxkH,CAAC,EAAE0kH,GAAG,OAAQ,EAACD,GAAG,OAAQ,CAAA,EAAEnmH,EAAE,MAAMkmH,EAAE,CAAC,CAAC,cAAclmH,EAAE,CAAA,EAAG0B,EAAE,CAAC1B,EAAE,OAAO,KAAK,MAAMA,EAAE,MAAMA,EAAE,aAAa,KAAK,YAAYA,EAAE,YAAYA,EAAE,YAAY,KAAK,WAAWA,EAAE,WAAW,MAAM,cAAcA,EAAE0B,CAAC,CAAC,CAAC,CAACsiG,GAAG,IAAI,cAAcsiB,EAAE,EAAE,MAAMC,GAAG,IAAI7kH,EAAE8kH,GAAG,IAAI9kH,EAAE+kH,GAAG,IAAI/kH,EAAEglH,GAAG,IAAIhlH,EAAE,EAAE,EAAE,CAAC,EAAEilH,GAAG,OAAO,OAAO,CAAC,YAAY,GAAG,eAAe,GAAG,gBAAgB,EAAE,EAAErS,EAAE,EAAE,MAAMsS,WAAW1M,EAAE,CAAC,YAAYl6G,EAAE0B,EAAE,CAAE,EAAC,CAAC,MAAM1B,EAAE0B,EAAE,IAAI8hH,GAAE,EAAE1kB,EAAGp9F,EAAE,YAAY,EAAE,EAAEo9F,EAAGp9F,EAAE,eAAe,EAAE,EAAEo9F,EAAGp9F,EAAE,gBAAgB,EAAE,CAAC,CAAC,EAAE,KAAK,cAAc,GAAG,KAAK,cAAc1B,EAAE,EAAE,CAAC,CAAC,IAAI,mBAAmB,CAAC,OAAO2mH,EAAE,CAAC,uBAAuB3mH,EAAE0B,EAAE,EAAE,CAAC8kH,GAAG,UAAU,KAAK,WAAW,CAAC,EAAEC,GAAG,UAAU,KAAK,WAAW,CAAC,EAAEzmH,EAAE,OAAO0mH,GAAGF,GAAGC,EAAE,EAAE,MAAM,EAAE,KAAK,QAAQ/kH,CAAC,EAAE6kH,GAAG,IAAI,EAAE,EAAE,CAAC,EAAEvmH,EAAE,MAAMumH,EAAE,CAAC,CAAC,cAAcvmH,EAAE,CAAA,EAAG0B,EAAE,CAAC1B,EAAE,SAAS,KAAK,QAAQA,EAAE,QAAQA,EAAE,YAAY,KAAK,WAAWA,EAAE,WAAWA,EAAE,YAAY,KAAK,WAAWA,EAAE,WAAW,MAAM,cAAcA,EAAE0B,CAAC,CAAC,CAAC,CAACsiG,GAAG,IAAI,QAAQ4iB,EAAE,EAAE,MAAMC,EAAE,CAAC,YAAY7mH,EAAE0B,EAAE,CAAC,IAAI,EAAEA,GAAG,CAAA,EAAG,KAAK,SAAS1B,EAAE,KAAK,KAAK8+F,EAAG,EAAE,KAAK,EAAE,EAAE,KAAK,KAAKA,EAAG,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,KAAI,EAAG,KAAM,KAAK,KAAK,aAAY,EAAG,KAAK,OAAM,EAAG,KAAK,YAAW,EAAG,KAAK,KAAK,SAAS,EAAI,CAAA,CAAC,QAAQ,EAAE,cAAc,CAAE,CAAA,aAAa,CAACwE,IAAIF,GAAG,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM0jB,WAAWD,EAAE,CAAC,YAAY7mH,EAAE0B,EAAE,CAAC,IAAI,EAAEA,GAAG,CAAE,EAAC,MAAM1B,EAAE,CAAC,EAAE,KAAK,eAAe8+F,EAAG,EAAE,eAAe,EAAE,EAAE,KAAK,aAAaA,EAAG,EAAE,aAAa,EAAE,EAAE,KAAK,WAAWA,EAAG,EAAE,WAAW,EAAE,EAAE,KAAK,UAAU,IAAI4a,GAAG,KAAK,KAAK,KAAK,IAAI,EAAE,KAAK,iBAAiB,IAAIhC,GAAG,KAAK,SAAS,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,WAAW,CAAC,CAAC,MAAMqP,EAAE,CAAC,YAAY/mH,EAAE0B,EAAE,EAAE,GAAG,EAAE,EAAE,CAAE,EAAC,CAAC,KAAK,UAAU1B,EAAE,KAAK,MAAM0B,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,SAAS1B,EAAE,CAAC,OAAOA,EAAEA,EAAE,cAAe,CAAA,IAAI,UAAU,MAAO,GAAE,IAAI,cAAc,MAAO,GAAE,IAAI,YAAY,MAAO,GAAE,IAAI,QAAQ,MAAO,GAAE,QAAQ,MAAO,EAAC,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,eAAe,EAAE,EAAE,QAAS,SAASjB,EAAE,CAACiB,EAAE,WAAW,YAAYjB,CAAC,EAAE2C,CAAC,CAAC,CAAE,CAAC,IAAI,MAAM,CAAC,OAAO,SAAS1B,EAAE,CAAC,OAAOA,EAAC,CAAE,IAAK,GAAE,MAAM,UAAU,IAAK,GAAE,MAAM,cAAc,IAAK,GAAE,MAAM,YAAY,IAAK,GAAE,MAAM,QAAQ,QAAQ,MAAM,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC,eAAe,CAAC,OAAO,KAAK,UAAU,CAAC,WAAW,CAAC,OAAW,KAAK,aAAT,CAAmB,CAAC,cAAc,CAAC,OAAW,KAAK,aAAT,CAAmB,CAAC,aAAa,CAAC,OAAW,KAAK,aAAT,CAAmB,CAAC,SAAS,CAAC,OAAW,KAAK,aAAT,CAAmB,CAAC,UAAUA,EAAE,CAAC,MAAM0B,EAAE,KAAK,UAAU,cAAe,EAAC,KAAK,eAAe,QAAS,SAAS,EAAE,CAACA,EAAE,MAAM,EAAE1B,EAAE0B,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,MAAMslH,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,WAAW,KAAK,EAAE,MAAMC,EAAE,CAAC,YAAYjnH,EAAEgnH,GAAG,CAAC,KAAK,WAAW,IAAIjoH,GAAE,KAAK,WAAW,IAAIA,GAAE,KAAK,EAAEiB,EAAE,EAAE,KAAK,EAAEA,EAAE,EAAE,KAAK,EAAEA,EAAE,EAAE,KAAK,MAAMA,EAAE,MAAM,KAAK,KAAKA,EAAE,KAAK,KAAK,MAAMA,EAAE,MAAM,KAAK,WAAWA,EAAE,WAAW,MAAM0B,EAAEu+F,GAAG,KAAK,KAAK,EAAE16F,EAAE06F,GAAG,KAAK,IAAI,EAAEx+F,EAAEw+F,GAAG,KAAK,KAAK,EAAExgG,EAAE,KAAK,IAAIiC,CAAC,EAAE,EAAE,KAAK,IAAI6D,CAAC,EAAE,EAAE,KAAK,IAAI9D,CAAC,EAAE,EAAE,KAAK,IAAI8D,CAAC,EAAE,EAAE,KAAK,IAAI9D,CAAC,EAAE,GAAG,KAAK,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,EAAEhC,EAAEA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE,EAAE,CAAC,EAAWO,EAAE,aAAX,OAAsB,CAAC,MAAMA,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,OAAO0B,GAAG,EAAE,EAAEjC,IAAI,EAAE,GAAG,KAAK,WAAW,IAAI,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,EAAEiC,EAAE,EAAE1B,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,UAAS,EAAG,KAAK,WAAW,WAAW,KAAK,UAAU,CAAC,MAAM,KAAK,WAAW,KAAKA,EAAE,UAAU,EAAE,KAAK,WAAW,WAAW,KAAK,UAAU,CAAC,CAAC,YAAYA,EAAE,CAAC,MAAMjB,EAAE,IAAI,aAAa,EAAE,EAAE,GAAGiB,EAAE,SAAS,CAAC,MAAMuF,EAAEvF,EAAE,SAASyB,EAAEzB,EAAE,OAAO,MAAO,EAAC,aAAauF,EAAE,UAAU,EAAE,MAAO,EAAC9F,EAAE,IAAIiC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,SAAS1B,EAAE0B,EAAEnB,EAAE,CAACd,EAAE,IAAIO,EAAE0B,EAAEnB,CAAC,EAAE,IAAIkB,CAAC,EAAE,aAAa8D,EAAE,UAAU,EAAE,QAAQxG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAOA,CAAC,CAAC,UAAUiB,EAAE,CAAC,OAAO,SAASA,EAAE,EAAE,IAAI0B,EAAE,CAAC,MAAM,EAAE1B,EAAE,OAAO,QAAQ0B,EAAE,EAAEA,EAAE,EAAEA,GAAG,EAAE,EAAE,GAAG1B,EAAE0B,CAAC,EAAE,EAAE,GAAG1B,EAAE0B,EAAE,CAAC,EAAE,EAAE,GAAG1B,EAAE0B,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,YAAY1B,CAAC,CAAC,CAAC,CAAC,QAAQA,EAAEjB,EAAE,CAAA,EAAG,CAAC,MAAMwG,EAAEu5F,EAAG//F,EAAE,WAAW,QAAQ,EAAEU,EAAEq/F,EAAG//F,EAAE,OAAO,KAAK,KAAK,KAAK,MAAM,EAAE,GAAG,EAAEkwD,EAAE,IAAIxtD,GAAE8D,CAAC,EAAEhF,EAAE,IAAImB,EAAEjB,EAAE,KAAK,YAAYT,CAAC,EAAEhB,EAAE6mG,GAAG,EAAE52C,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,EAAEpqD,EAAE+gG,GAAG,EAAEnmG,CAAC,EAAEiF,EAAE,IAAI,aAAa,EAAE,EAAE,EAAE,IAAI,aAAa,EAAE,EAAEhF,EAAEmmG,GAAG,GAAG52C,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,EAAErkD,EAAEg7F,GAAG,GAAGnmG,CAAC,EAAE,IAAIkF,EAAE,EAAE,SAASC,EAAE5E,EAAE0B,EAAE,CAACnB,EAAE,UAAUE,EAAE,EAAET,CAAC,EAAE,QAAQ0E,EAAEC,CAAC,EAAEpE,EAAE,UAAUE,EAAE,EAAEiB,CAAC,EAAE,QAAQ,EAAEiD,CAAC,EAAEA,GAAG,CAAC,CAACC,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAE,MAAM7E,EAAE,IAAIgyG,GAAG,KAAK/xG,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,SAASS,EAAE,MAAMzB,EAAE,OAAO6F,EAAE,QAAQ9E,CAAC,EAAE,KAAK,CAAC,UAAU2E,EAAE,UAAU,EAAE,MAAMhF,EAAE,OAAOA,EAAE,OAAOkL,EAAE,QAAQ7K,CAAC,CAAC,CAAC,CAAC,CAAC,MAAMmnH,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,EAAEC,GAAG,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,EAAEC,GAAG,CAAC,SAAS,WAAW,QAAQ,WAAW,UAAU,KAAK,aAAa,WAAW,eAAe,EAAEC,GAAG,MAAM,SAASC,GAAG,EAAE,EAAEvoH,EAAE,CAAC,IAAIwG,EAAE,GAAG,CAAC,GAAG,OAAO,IAAIA,GAAG,IAAI,CAAC,IAAIxG,IAAIwG,GAAG,IAAIxG,CAAC,IAAIwG,CAAC,CAAC,MAAMgiH,WAAWT,EAAE,CAAC,YAAY9mH,EAAE0B,EAAE,CAAC,MAAM,EAAEA,GAAG,CAAA,EAAG,MAAM1B,EAAE,CAAC,EAAE,KAAK,IAAI8+F,EAAG,EAAE,IAAI,EAAE,EAAE,KAAK,WAAWA,EAAG,EAAE,WAAW,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,QAAQ,CAACwE,IAAIF,GAAG,KAAK,oBAAoB,KAAK,IAAI,EAAE,IAAIpjG,EAAE,GAAG,MAAM0B,EAAE,KAAK,SAAS,UAAU,CAAC,EAAE,CAAC,EAAE6D,EAAE7D,EAAE,OAAO,GAAG,CAAC,EAAED,EAAEC,EAAE,OAAO,GAAG,CAAC,EAAE6D,IAAI9D,GAAGA,EAAE,SAASzB,EAAE,IAAI,MAAMP,EAAU,KAAK,OAAb,MAAkB,EAAY,KAAK,OAAf,QAAoB,EAAE,KAAK,UAAU,EAAE,KAAK,iBAAiB,EAAE,KAAK,IAAI,IAAI,EAAE,GAAGiF,EAAE,GAAG,MAAMwX,EAAE,KAAK,eAAexc,EAAE,KAAK,aAAa,EAAE,KAAK,WAAWiF,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,IAAI5E,EAAES,EAAEtM,EAAE,GAAG,MAAMqN,EAAE,EAAE,WAAW,IAAIC,EAAEwzF,EAAE2S,EAAE,EAAE7Q,EAAEzkC,EAAEkhC,EAAEtqE,EAAE4+E,EAAE50C,EAAEP,EAAEg1C,GAAEkJ,EAAEC,EAAEC,GAAEC,GAAEC,EAAEhb,EAAEvjC,GAAErrD,GAAEirG,GAAEC,EAAEC,GAAE,GAAG,MAAMx7F,EAAE,GAAGy7F,EAAE,CAAA,EAAG,EAAE,CAAE,EAAC,IAAIlyG,EAAEoyG,GAAE,MAAM4Q,EAAE,CAAA,EAAGC,GAAE,CAAE,EAACC,GAAE,GAAG,IAAIC,GAAEC,EAAEC,EAAGthB,GAAGygB,GAAGjkB,EAAGC,GAAG,MAAMC,GAAG,GAAG,IAAIC,GAAG,MAAMwoB,GAAG,CAAC,QAAQ,CAAE,EAAC,OAAO,EAAE,EAAEvoB,GAAGuoB,GAAG,QAAQtoB,GAAGsoB,GAAG,OAAOC,GAAG,EAAE,QAAQC,GAAG,EAAE,UAAUA,GAAG,OAAO,KAAK,MAAM,KAAK,SAAS,KAAK,OAAO,EAAE,CAAC,GAAGjoH,GAAG,IAAIioH,GAAG,SAAS,gBAAgB,EAAE,SAAS,EAAEjoH,GAAGioH,GAAG,SAAS,SAAS,EAAE,SAAS,EAAE,MAAMC,GAAG,EAAE,eAAexoB,GAAG,EAAE,aAAY,EAAG,IAAI7kC,GAAG,EAAE8kC,GAAG,EAAEC,GAAG,GAAG,KAAK,SAAS,iBAAkB,SAAS39F,GAAE,EAAE,SAASA,GAAE6D,GAAE9D,GAAE,CAAC,QAAQ+lH,GAAG9lH,GAAE8lH,GAAGjiH,GAAE,EAAEiiH,GAAG,GAAG,EAAE/lH,GAAE+lH,EAAE,EAAE1wB,EAAE,EAAE,OAAO,EAAE,CAAC,EAAaA,IAAX,UAAyBA,IAAX,SAAa,CAAC,GAAGuI,KAAK3/F,GAAGxL,GAAG6L,EAAE,IAAI,aAAa,EAAE2nH,GAAG,KAAK,EAAE/iH,EAAE,KAAK5E,CAAC,GAAGA,EAAE,GAAGS,EAAE,GAAG0b,IAAIq2F,GAAE,CAAA,GAAIkR,GAAE,EAAEC,EAAED,GAAE,SAAU,EAACE,EAAG,GAAGtkB,GAAG,IAAInjF,GAAGkjF,GAAG,EAAE,SAAS,IAAI19F,GAAE3C,GAAEwG,GAAE9D,GAAElB,GAAEqE,EAAE,EAAE,GAAGnF,EAAE,CAAC,GAAGgC,GAAE,EAAE,MAAM4lH,EAAE,EAAEziH,EAAOnD,GAAE,SAAP,GAAc,EAAE,EAAEimG,GAAEjmG,GAAE,CAAC,EAAE,GAAUimG,KAAP,KAAS,SAAShmG,GAAE,WAAWD,GAAE,EAAEmD,CAAC,CAAC,EAAE7F,GAAE,WAAW0C,GAAE,EAAEmD,CAAC,CAAC,EAAEW,GAAE,WAAW9D,GAAE,EAAEmD,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG8iG,GAAE,EAAE,OAAO,GAAG,CAAC,EAAE,KAAM,EAAC,GAAUA,KAAP,KAAS,SAAShmG,GAAE,WAAW,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE3C,GAAE,WAAW,EAAE,OAAO,GAAG,CAAC,CAAC,EAAEwG,GAAE,WAAW,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG7F,EAAE,CAAC,MAAMM,GAAE,EAAEQ,EAAE,GAAGT,EAAEC,GAAE,CAAC,EAAE0B,GAAE3B,EAAEC,GAAE,CAAC,EAAEjB,GAAEgB,EAAEC,GAAE,CAAC,EAAEuF,GAAE/E,GAAG,EAAEtM,EAAE,QAAQ,CAACuL,GAAG4yD,EAAE,SAAS5wD,GAAE,CAAC,CAAC,EAAElB,GAAE,GAAGqwG,EAAQ,EAAE,CAAC,IAAT,IAAWrd,EAAE3uF,EAAE,GAAGnD,GAAE,CAAC,EAAEwnB,EAAE,SAASxnB,GAAE,EAAEmD,CAAC,CAAC,EAAE8tD,EAAE,GAAGm1C,EAAEpmG,GAAE,CAAC,EAAEqvG,GAAE,GAAG79C,EAAE,IAAIZ,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,GAAWA,IAAR,QAAY,EAAE,IAAIu+C,EAAQ,EAAE,CAAC,IAAT,IAAWrd,EAAE,EAAE,EAAE,EAAE,KAAI,EAAGtqE,EAAE,SAAS,EAAE,OAAO,GAAG,CAAC,EAAEvkB,CAAC,EAAE,GAAUukB,IAAP,OAAWvkB,EAAE,IAAIguD,EAAE,EAAE,EAAE,EAAE,KAAI,EAAGm1C,EAAE,EAAE,OAAO,GAAG,CAAC,EAAE,QAAQ,MAAMgJ,EAAE,WAAW,EAAE,OAAO,GAAG,CAAC,CAAC,EAAEC,GAAE,EAAE,EAAE,EAAE,KAAM,EAAC79C,EAAE,WAAW,EAAE,OAAO,GAAG,CAAC,CAAC,EAAEjzD,IAAI,GAAGO,GAAE,EAAE,OAAO,GAAG,CAAC,EAAE,OAAOA,MAAKwuG,KAAKxuG,GAAEwuG,GAAGxuG,EAAC,KAAKA,GAAE,EAAE,OAAO,GAAG,CAAC,EAAE,OAAOgzF,IAAIA,EAAE,EAAE,OAAO,GAAG,CAAC,EAAE,KAAM,IAAGwd,GAAE,UAAU,EAAE,OAAO,GAAG,CAAC,EAAE,EAAE,OAAO,GAAG,CAAC,GAAG,KAAI,CAAE,IAAI2W,GAAG,WAAU,EAAGA,GAAG,WAAWptD,EAAE,EAAEmtD,GAAG,IAAI/f,GAAEnnG,EAAC,EAAEmnH,GAAG,EAAEptD,EAAE,EAAE54D,GAAEgmH,GAAG,EAAEptD,EAAE,EAAEv7D,GAAE2oH,GAAG,EAAEptD,EAAE,EAAE/0D,GAAEmiH,GAAG,OAAOptD,EAAE,EAAEjI,EAAEq1D,GAAG,OAAOptD,EAAE,EAAEw2C,GAAE,WAAW,CAAC,EAAE4W,GAAG,UAAUptD,EAAE,EAAE,MAAMrH,CAAC,EAAE,EAAEA,EAAExzD,GAAGioH,GAAG,cAAcptD,EAAE,EAAE,WAAW74D,GAAE,EAAEmD,CAAC,CAAC,EAAE8iH,GAAG,OAAOptD,EAAE,EAAE,WAAW74D,GAAE,GAAGmD,CAAC,CAAC,IAAI8iH,GAAG,QAAQptD,EAAE,EAAE,MAAMu2C,CAAC,EAAE,EAAEA,EAAE,IAAI6W,GAAG,cAAcptD,EAAE,EAAE,WAAW,EAAE,OAAO,GAAG,CAAC,CAAC,GAAG,SAASy2C,EAAC,IAAI2W,GAAG,cAAcA,GAAG,SAAS,eAAe,EAAE,MAAM,EAAEA,GAAG,aAAaptD,EAAE,EAAEy2C,KAAI,MAAMxvG,GAAE+lH,GAAGr+F,EAAEsqE,EAAE7gC,CAAC,EAAE,CAACk+C,GAAG2S,GAAEhiH,EAAC,GAAG4lH,GAAG,SAAStf,CAAC,EAAE8b,GAAIthB,KAAK9O,IAAIkwB,IAAG,EAAEC,EAAED,GAAE,YAAYphB,KAAK9O,GAAGsL,IAAKgJ,IAAI4G,GAAG,SAAS5G,CAAC,GAAGib,KAAK75F,GAAG61E,KAAKpsC,KAAK+wD,IAAG,EAAEC,EAAED,GAAE,SAAU,EAACX,GAAG75F,EAAE41E,EAAGgJ,EAAE/I,GAAGpsC,GAAG,EAAE,QAAQ0sC,GAAG7L,EAAEmwB,EAAE7b,EAAE5+E,EAAE2nF,EAAE,OAAOl+C,CAAC,EAAE6/C,GAAElgD,CAAC,EAAEiI,GAAGA,IAAI,EAAEqpD,EAAG,GAAGthB,GAAG9O,CAAC,SAAoBuD,IAAX,SAAa,CAAC,MAAM92F,GAAEuyG,GAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE7wG,GAAE,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE3C,GAAE,GAAG,GAAYiB,KAAT,OAAW,SAAS,QAAQuF,GAAE,EAAEA,GAAE,EAAE,EAAEA,GAAE,CAAC,IAAI9D,GAAE,SAAS,EAAE,OAAOC,GAAE6D,EAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,MAAM9D,EAAC,IAAIA,GAAE8wG,GAAE9wG,EAAC,EAAWA,KAAT,QAAY,GAAGzB,GAAEyB,IAAGkmH,GAAG,MAAM3nH,GAAEm/F,GAAG,MAAM19F,KAAIkmH,GAAG,MAAMlmH,GAAE09F,GAAG,MAAMn/F,IAAYjB,GAAE0C,EAAC,IAAZ,OAAc,EAAE,UAAU,UAAU1C,GAAE0C,EAAC,CAAC,GAAG,MAAM,CAAC,MAAMzB,EAAE2nH,GAAG,MAAM,IAAIxoB,GAAG,MAAeqT,EAAExyG,CAAC,IAAZ,SAAgBwyG,EAAExyG,CAAC,EAAE,GAAGjB,GAAE0C,EAAC,EAAE,EAAE,UAAU,MAAM,EAAE,UAAU,QAAQkmH,GAAGxoB,GAAG,CAAC,EAAE,CAAC,CAAC,SAAoBrI,IAAX,SAAa,CAACka,EAAE,EAAE,EAAE,EAAE,KAAM,EAAChb,EAAE,SAAS,EAAE,OAAO,GAAG,CAAC,CAAC,EAAEvjC,GAAE,EAAE,EAAE,EAAE,OAAOrrD,GAAE,EAAE,EAAE,EAAE,OAAOirG,GAAE,SAAS,EAAE,OAAO,GAAG,CAAC,CAAC,EAAEC,EAAE,EAAE,EAAE,EAAE,KAAM,EAAC,IAAItyG,GAAE,SAAS,EAAE,OAAO,GAAG,CAAC,CAAC,EAAEA,IAAGknH,GAAGlnH,EAAC,GAAGknH,GAAG,CAAC,GAAG,WAAW,CAAC,EAAEjoB,GAAG,KAAK,CAAC+R,EAAEhb,EAAEvjC,GAAErrD,GAAEirG,GAAEC,EAAEtyG,EAAC,CAAC,CAAC,SAAoB82F,IAAX,SAAaka,EAAE,EAAE,EAAE,EAAE,KAAM,EAAChb,EAAE,SAAS,EAAE,OAAO,GAAG,CAAC,CAAC,EAAEvjC,GAAE,EAAE,EAAE,EAAE,OAAOrrD,GAAE,EAAE,EAAE,EAAE,OAAOirG,GAAE,SAAS,EAAE,OAAO,GAAG,CAAC,CAAC,EAAEC,EAAE,EAAE,EAAE,EAAE,KAAI,EAAGpT,GAAG,KAAK,CAAC8R,EAAEhb,EAAEvjC,GAAErrD,GAAEirG,GAAEC,CAAC,CAAC,UAAqBxb,IAAX,SAAawsB,EAAE,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,eAA0BxsB,IAAX,SAAa,CAAC,MAAM92F,GAAE,EAAE,EAAE,EAAE,KAAM,EAACA,KAAIg/F,KAAKD,GAAG/+F,EAAC,EAAE,CAAA,EAAGg/F,GAAGh/F,IAAG++F,GAAG/+F,EAAC,EAAE,KAAK,GAAG,EAAE,OAAO,EAAE,EAAE,KAAI,EAAG,MAAMqnH,EAAE,CAAC,CAAC,SAAoBvwB,IAAX,SAAa,CAAC,MAAM92F,GAAE,EAAE,OAAO,GAAG,CAAC,EAAE,KAAI,EAAG0B,GAAE,EAAE,EAAE,EAAE,KAAI,EAAG3C,GAAE,EAAE,EAAE,EAAE,KAAI,EAAGwG,GAAE,SAAS,EAAE,OAAO,GAAG,CAAC,EAAE,MAAM,EAAE9D,GAAE6lH,GAAG/hH,GAAE7D,GAAE3C,EAAC,EAAEwkH,GAAE9hH,EAAC,EAAE,CAAC,QAAQzB,GAAE,UAAU0B,GAAE,QAAQ3C,GAAE,MAAMwG,EAAC,CAAC,SAAoBuxF,IAAX,SAAa,CAAC,MAAM92F,GAAE,EAAE,OAAO,GAAG,EAAE,EAAE,KAAM,EAAC0B,GAAE1B,GAAE,QAAQ,GAAG,EAAEjB,GAAEiB,GAAE,UAAU,EAAE0B,EAAC,EAAE,IAAI6D,GAAE6hH,GAAG,SAASroH,EAAC,GAAG2zG,GAAE3zG,GAAEwG,GAAEvF,GAAE,UAAU0B,GAAE,CAAC,GAAG6D,GAAEvF,GAAEuF,GAAEA,GAAE,QAAQ,KAAK,EAAE,EAAamtG,KAAX,UAAcpyG,EAAE,CAAC,UAAU,CAAE,EAAC,KAAK,EAAE,EAAE,EAAE,KAAKA,CAAC,GAAgBoyG,KAAb,YAAgBpyG,EAAE,OAAOA,EAAE,MAAM,KAAKA,EAAE,MAAMiF,IAAamtG,KAAV,SAAa,MAAM,UAAU,KAAK,MAAMpyG,EAAE,UAAUiF,GAAE,MAAM,SAAS,CAAC,CAAC,SAAS,EAAE,WAAW,KAAK,EAAE,CAAC,MAAMvF,GAAE,EAAE,cAAc,EAAE,WAAW,MAAM,CAAC,EAAEwjH,GAAExjH,GAAE,SAAS,EAAEA,GAAE,MAAMyjH,IAAG,EAAEC,EAAED,GAAE,WAAWE,EAAG,EAAE,SAAoB7sB,IAAX,UAAsB,EAAE,OAAO,EAAE,CAAC,IAApB,OAAuB,GAAoB,EAAE,OAAO,GAAG,EAAE,IAA/B,eAAiC,CAAC,IAAI92F,GAAE,EAAE,OAAO,EAAE,EAAE,KAAM,EAAC,oBAAoB,KAAKA,EAAC,IAAIA,GAAE,KAAKA,IAAGwB,EAAE,IAAIg2G,GAAGx3G,EAAC,EAAEuB,EAAEvB,EAAC,EAAEwB,CAAC,SAAmB,EAAE,OAAO,GAAG,CAAC,IAAvB,QAAyB,CAAC,MAAMxB,GAAE,EAAE,MAAM,KAAK,EAAE0B,GAAE,SAAS,EAAE,EAAE,CAAC,EAAE,EAAMA,KAAJ,IAAQimG,EAAE,IAAI5oG,GAAEi2F,EAAE,WAAW,KAAK2S,CAAC,GAAG,MAAMpiG,GAAEoiG,EAAE,SAASpiG,GAAE,EAAE7D,EAAC,EAAE,WAAW1B,GAAE,CAAC,CAAC,EAAEuF,GAAE,EAAE7D,EAAC,EAAE,WAAW1B,GAAE,CAAC,CAAC,EAAEuF,GAAE,EAAE7D,EAAC,EAAE,WAAW1B,GAAE,CAAC,CAAC,EAAEuF,GAAE,GAAG7D,EAAC,EAAE,WAAW1B,GAAE,CAAC,CAAC,CAAC,SAA4C,EAAE,OAAO,GAAG,EAAE,IAAjD,kCAAuF,EAAE,OAAO,GAAG,EAAE,IAAjD,iCAAmD,CAAW,EAAE,OAAO,GAAG,CAAC,IAAvB,UAA2Bg1F,EAAExzF,EAAE,WAAW,MAAMxB,GAAE,EAAE,OAAO,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,QAAQ0B,GAAE,EAAE3C,GAAEiB,GAAE,OAAO0B,GAAE3C,GAAE,EAAE2C,GAAE,CAAC,MAAM3C,GAAEiB,GAAE0B,EAAC,EAAE,KAAM,EAAC3C,IAAGi2F,EAAE,UAAU,KAAKj2F,EAAC,CAAC,CAAC,UAAqB+3F,IAAX,SAAa,EAAE,GAAG,EAAE,OAAO,GAAG,CAAC,UAAqBA,IAAX,SAAa,EAAE,QAAQ,EAAE,MAAM,IAAI,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE,eAA0BA,IAAX,SAAauI,GAAG,WAAsBvI,IAAX,UAAsB,EAAE,KAAI,IAAd,MAAiB,CAAC,GAAGuI,GAAG,SAAS3/F,GAAG,CAACxL,IAAIyQ,EAAE,KAAK,IAAI,aAAa5E,CAAC,CAAC,EAAE7L,EAAE,IAAIkrG,IAAI,EAAEC,GAAG,EAAE,SAAmB,EAAE,OAAO,EAAE,CAAC,IAAtB,QAAwB,CAAC,GAAS,EAAE,EAAE,IAAV,IAAY,SAAS,GAAG,CAAC79F,GAAWA,EAAE,OAAV,MAAe,CAAC,MAAMxB,GAAE,MAAMwB,EAAE,IAAIg2G,GAAGx3G,EAAC,EAAEuB,EAAEvB,EAAC,EAAEwB,EAAEwzF,EAAExzF,EAAE,SAAS,CAAC,MAAMxB,GAAE,EAAE,MAAM,KAAK,EAAE0B,GAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAMA,KAAJ,IAAQimG,EAAE,IAAI5oG,GAAEi2F,EAAE,WAAW,KAAK2S,CAAC,GAAG,MAAMpiG,GAAEoiG,EAAE,SAASpiG,GAAE,EAAE7D,EAAC,EAAE,WAAW1B,GAAE,CAAC,CAAC,EAAEuF,GAAE,EAAE7D,EAAC,EAAE,WAAW1B,GAAE,CAAC,CAAC,EAAEuF,GAAE,EAAE7D,EAAC,EAAE,WAAW1B,GAAE,CAAC,CAAC,EAAEuF,GAAE,GAAG7D,EAAC,EAAE,WAAW1B,GAAE,CAAC,CAAC,CAAC,SAAmB,EAAE,OAAO,EAAE,CAAC,IAAtB,QAAwB,CAAC+W,EAAE,QAAQA,EAAE,MAAM,IAAIhY,IAAG,MAAMiB,GAAE,EAAE,MAAM,KAAK,EAAE0B,GAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE6D,GAAEwR,EAAE,MAAM,SAASxR,GAAE,EAAE7D,EAAC,EAAE,WAAW1B,GAAE,CAAC,CAAC,EAAEuF,GAAE,EAAE7D,EAAC,EAAE,WAAW1B,GAAE,CAAC,CAAC,EAAEuF,GAAE,EAAE7D,EAAC,EAAE,WAAW1B,GAAE,CAAC,CAAC,EAAEuF,GAAE,GAAG7D,EAAC,EAAE,WAAW1B,GAAE,CAAC,CAAC,CAAC,SAAmB,EAAE,OAAO,EAAE,CAAC,IAAtB,QAAwB,CAAC+W,EAAE,QAAQA,EAAE,MAAM,IAAIhY,IAAG,MAAMiB,GAAE,EAAE,MAAM,KAAK,EAAE0B,GAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE6D,GAAEwR,EAAE,MAAM,SAASxR,GAAE,EAAE7D,EAAC,EAAE,WAAW1B,GAAE,CAAC,CAAC,EAAEuF,GAAE,EAAE7D,EAAC,EAAE,WAAW1B,GAAE,CAAC,CAAC,EAAEuF,GAAE,EAAE7D,EAAC,EAAE,WAAW1B,GAAE,CAAC,CAAC,EAAEuF,GAAE,GAAG7D,EAAC,EAAE,WAAW1B,GAAE,CAAC,CAAC,CAAC,SAAoB82F,IAAX,SAAa,CAAC,MAAM92F,GAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE0B,GAAE,WAAW,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE3C,GAAE,WAAW,EAAE,OAAO,GAAG,CAAC,CAAC,EAAEwG,GAAE,WAAW,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE9D,GAAE,WAAW,EAAE,OAAO,GAAG,CAAC,CAAC,EAAEhC,EAAE,WAAW,EAAE,OAAO,GAAG,CAAC,CAAC,EAAEwvD,GAAE,EAAE,OAAO,GAAG,EAAE,EAAE,OAAO1uD,GAAE,IAAI,aAAa,CAAC,EAAEA,GAAE,CAAC,EAAEP,GAAEO,GAAE,CAAC,EAAEmB,GAAEnB,GAAE,CAAC,EAAExB,GAAE,EAAE,KAAKwB,EAAC,EAAM6+F,KAAJ,IAASroF,EAAE,EAAE/W,GAAE+W,EAAE,EAAErV,GAAEqV,EAAE,EAAEhY,GAAEgY,EAAE,MAAMxR,GAAEwR,EAAE,KAAKtV,GAAEsV,EAAE,MAAMtX,EAAEsX,EAAE,WAAWk4C,GAAE,CAAC,GAAE,EAAEvtD,GAAE,OAAOA,EAAC,CAAC,GAAI,EAAE,WAAW,MAAM,GAAG,EAAE,OAAO,GAAG,GAAG,CAAC,EAAE,UAAW,SAAS1B,GAAE,CAACA,GAAE,YAAY,EAAE,CAAC,EAAG,EAAE,QAAS,SAASA,GAAE0B,GAAE,CAAC,MAAM3C,GAAEiB,GAAE,UAAU,IAAK,SAASA,GAAE,CAAC,OAAOwjH,GAAExjH,EAAC,CAAC,GAAI,EAAE,WAAW,KAAK,IAAI+mH,GAAG,EAAErlH,GAAE1B,GAAE,KAAK,UAAUjB,EAAC,CAAC,CAAC,CAAC,EAAG,IAAIiB,GAAE,EAAE,OAAO,MAAM0B,GAAE,EAAE,gBAAe,EAAG3C,GAAE,CAAE,EAAC,EAAE,UAAW,SAASiB,GAAE,CAACA,GAAE,cAAc,KAAK0B,GAAE,MAAM1B,GAAE,cAAcjB,GAAE2C,GAAE,OAAO,IAAI3C,GAAE2C,GAAE,OAAO,EAAE,CAAE,GAAE3C,GAAE2C,GAAE,OAAO,EAAE,KAAK1B,GAAE,KAAK,EAAE,CAAG,EAAC,OAAO,KAAKjB,EAAC,EAAE,QAAS,SAAS2C,GAAE,CAAC,MAAM6D,GAAExG,GAAE2C,EAAC,EAAE,IAAID,GAAE,cAAchC,GAAE6jH,EAAE5hH,EAAC,GAAGA,GAAE+sG,GAAG,SAAS/sG,EAAC,IAAIjC,GAAE,QAAQgC,GAAE,SAAS,EAAE,WAAW,KAAK,IAAIslH,GAAG,EAAE/mH,GAAEP,GAAEgC,GAAE8D,EAAC,CAAC,EAAEvF,IAAG,CAAC,CAAG,CAAA,CAAU+W,EAAE,IAAX,OAAa,EAAE,SAAS,IAAIkwG,GAAGlwG,CAAC,EAAE,EAAE,SAAS,QAAQkoF,GAAG,QAAQC,GAAG,SAASyY,GAAG,EAAE6P,EAAE,EAAE,EAAE,cAAe,EAACxnH,GAAG+3G,GAAG,CAAC,EAAEC,GAAG,EAAE,KAAK,UAAU,EAAE,EAAE,cAAe,EAAC/Y,GAAG,QAAQC,GAAG,QAAQ0Y,GAAG,CAAC,EAAEQ,GAAG,CAAC,EAAE9U,IAAIF,GAAG,QAAQ,oBAAoB,KAAK,IAAI,CAAC,CAAC,CAACQ,GAAG,IAAI,MAAM2jB,EAAE,EAAE3jB,GAAG,IAAI,OAAO2jB,EAAE,EAAE3jB,GAAG,IAAI,MAAM2jB,EAAE,EAAE,MAAMK,GAAG,MAAMC,GAAG,6CAA6CC,GAAG,KAAKC,GAAG,iBAAiBC,GAAG,WAAW,SAASC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,GAAS,EAAE,CAAC,IAAT,KAAkB,EAAE,CAAC,IAAT,IAAW,EAAE,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,SAASC,GAAG,EAAE,EAAE,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC,GAAG,OAAO,KAAK,CAAC,EAAE,QAAS,SAASxmH,EAAE,CAAC,EAAEA,CAAC,EAAE,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,SAASymH,GAAG,EAAE,CAAC,OAAY,IAAN,GAAO,CAAC,SAASC,GAAG,EAAE,EAAE,CAAC,OAAOD,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,SAASE,GAAG,EAAE,CAAC,OAAO,EAAE,cAAe,CAAA,IAAI,IAAI,IAAI,OAAO,MAAO,GAAE,IAAI,OAAO,MAAO,GAAE,IAAI,OAAO,MAAO,GAAE,IAAI,OAAO,MAAO,EAAC,CAAC,MAAO,EAAC,CAAC,MAAMC,WAAWxB,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC1jB,GAAG,KAAK,oBAAoB,KAAK,IAAI,EAAE,IAAIpjG,EAAEuF,EAAE9D,EAAEhC,EAAEwvD,EAAE1uD,EAAEE,EAAEzB,EAAE6F,EAAEH,EAAE,EAAEhF,EAAEkL,EAAEjG,EAAEC,EAAE7E,EAAES,EAAE,EAAE,EAAEgB,EAAEwzF,EAAE2S,EAAEC,EAAE,KAAK,UAAU9Q,EAAE,KAAK,iBAAiBzkC,EAAE,KAAK,eAAekhC,EAAE,KAAK,aAAatqE,EAAE,KAAK,WAAW4+E,EAAED,EAAE,OAAO30C,EAAE,CAAA,EAAGP,EAAE,CAAE,EAACg1C,EAAE,CAAA,EAAGkJ,GAAE,GAAGC,EAAE,KAAKC,EAAE,GAAGC,GAAE,GAAGC,GAAE,GAAGhb,EAAE,GAAGvjC,EAAE,KAAKrrD,GAAE,KAAKirG,GAAE,KAAKC,GAAE,KAAKC,EAAE,CAAA,EAAGx7F,GAAE6wF,EAAE,QAAQ4K,EAAE5K,EAAE,UAAU4K,EAAE,OAAO,KAAK,SAAS,KAAK,OAAO,GAAG,EAAE,IAAIC,EAAEnyG,EAAE,EAAEoyG,EAAE,EAAE,GAAG,KAAK,SAAS,iBAAkB,SAAShxG,EAAE,EAAE,SAASA,GAAE3C,GAAEukH,GAAE,CAAC,QAAQC,EAAE7hH,GAAE6hH,EAAExkH,GAAE,EAAEwkH,EAAE,GAAG9hH,EAAE6hH,GAAEC,CAAC,IAAI9jH,EAAEgC,EAAE,KAAM,IAAGmvG,IAAGG,KAAUtxG,EAAE,CAAC,IAAT,IAAW,GAAaA,EAAE,UAAU,EAAE,CAAC,IAAzB,QAA2BwzD,EAAE,KAAKxzD,EAAE,UAAU,CAAC,EAAE,KAAM,UAAeA,EAAE,CAAC,IAAT,IAAWmxG,IAAGG,IAAGt+C,IAAIujC,EAAE,SAASvjC,EAAE,GAAGujC,EAAEvjC,CAAC,EAAE,KAAKo+C,CAAC,EAAEp+C,GAAG,GAAQ4/C,KAAL,GAAOp/C,EAAE7rD,EAAC,EAAEypG,EAAE59C,EAAE7rD,EAAC,EAAEirG,EAAC,EAAExB,EAAED,GAAE,GAAGC,EAAE,OAAOD,GAAE,GAAGC,EAAEpxG,EAAE,UAAU,CAAC,WAAqBA,IAAV,QAAYsxG,GAAE,GAAGC,GAAE,GAAGhb,EAAE,OAAO,EAAEuc,EAAE,OAAO,EAAE9/C,EAAE,UAAgBhzD,EAAE,CAAC,IAAT,IAAW,CAAC,IAAI+jH,EAAEC,GAAEC,GAAE,GAAG3S,IAAG,CAACC,KAAID,GAAE,IAAIA,GAAE0S,IAAGD,EAAE/jH,EAAE,MAAM,GAAG,GAAG,CAAC,EAAE,UAAU,CAAC,EAAEikH,GAAEF,EAAE,CAAC,EAAMA,EAAE,SAAN,GAAcE,GAAE,GAAGzwD,EAAEwwD,EAAC,IAAIxwD,EAAEwwD,EAAC,EAAE,CAAA,GAAIztB,EAAE,KAAK/iC,EAAEwwD,EAAC,CAAC,IAAIxwD,EAAEwwD,EAAC,IAAIxwD,EAAEwwD,EAAC,EAAE,IAAIxwD,EAAEwwD,EAAC,EAAEC,EAAC,EAAEpgB,IAAIF,GAAG,KAAKqgB,GAAEC,GAAE,gBAAgB,GAAGzwD,EAAEwwD,EAAC,EAAEC,EAAC,EAAE,CAAE,EAAC1tB,EAAE,KAAK/iC,EAAEwwD,EAAC,EAAEC,EAAC,CAAC,EAAEnR,EAAE,KAAKmR,EAAC,IAAIt8G,GAAEq8G,GAAEpR,GAAEqR,GAAEpR,GAAE,OAAO,CAAC,IAAIqR,EAAGlkH,EAAE,MAAMooH,EAAE,EAAExlB,GAAGshB,EAAG,CAAC,EAAEb,GAAGa,EAAG,CAAC,EAAEF,IAAGD,EAAEnhB,GAAG,MAAM,GAAG,GAAG,CAAC,EAAE,UAAU,CAAC,EAAEqhB,GAAEF,EAAE,CAAC,EAAMA,EAAE,SAAN,GAAcE,GAAE,GAAGzwD,EAAEwwD,EAAC,EAAEX,KAAK7vD,EAAEwwD,EAAC,IAAIxwD,EAAEwwD,EAAC,EAAE,CAAA,GAAIxwD,EAAEwwD,EAAC,EAAEC,EAAC,EAAEpgB,IAAIF,GAAG,KAAKqgB,GAAEC,GAAE,gBAAgB,EAAEzwD,EAAEwwD,EAAC,EAAEC,EAAC,EAAEZ,IAAIA,KAAKhS,EAAE,IAAI1pG,GAAEq8G,GAAEpR,GAAEqR,EAAC,CAAC,SAAS9S,GAAEC,GAAGpvG,UAAUsvG,GAAE,CAAC,GAAG,CAACtxG,EAAE,SAAS,GAAiB2H,KAAd,YAAgB,CAAC,MAAM1F,GAAEjC,EAAE,MAAMmoH,EAAE,EAAEtV,KAAIrjD,EAAEsjD,EAAE,QAAQ,cAAc,EAAEhyG,EAAEgyG,EAAE,QAAQ,aAAa,EAAE9xG,EAAE8xG,EAAE,QAAQ,cAAc,EAAEvzG,EAAEuzG,EAAE,QAAQ,eAAe,EAAE1tG,EAAE0tG,EAAE,QAAQ,eAAe,EAAE7tG,EAAE6tG,EAAE,QAAQ,eAAe,EAAE,EAAEA,EAAE,QAAQ,iBAAiB,EAAE7yG,EAAE6yG,EAAE,QAAQ,cAAc,EAAE,EAAEA,EAAE,QAAQ,SAAS,EAAE,EAAEA,EAAE,QAAQ,SAAS,EAAE/wG,EAAE+wG,EAAE,QAAQ,SAAS,EAAE5tG,EAAE4tG,EAAE,QAAQ,IAAI,EAAE3tG,EAAE2tG,EAAE,QAAQ,aAAa,EAAE3nG,EAAE2nG,EAAE,QAAQ,WAAW,EAAEvd,EAAEud,EAAE,QAAQ,gBAAgB,EAAExyG,EAAEwyG,EAAE,QAAQ,oBAAoB,EAAE/xG,EAAE+xG,EAAE,QAAQ,mBAAmB,EAAE5K,EAAE4K,EAAE,QAAQ,WAAW,EAAED,GAAE,GAAGG,EAAE,SAAS/wG,GAAE3B,CAAC,CAAC,EAAEwzF,IAAIvzF,EAAE,CAAE,EAACuF,EAAE,IAAI,MAAMxG,GAAE,SAAS2C,GAAE3B,CAAC,CAAC,EAAE,GAAG0yG,IAAI1zG,KAAIw0F,IAAQmf,IAAJ,GAAO7K,EAAE,KAAK,IAAI,aAAa7nG,CAAC,CAAC,EAAEA,EAAE,IAAI,aAAa,EAAEwyG,EAAE,KAAK,EAAE3K,EAAE,KAAK7nG,CAAC,EAAEuF,EAAE,GAAGmtG,GAAG,GAAGD,EAAE1zG,GAAEszD,GAAGqgD,EAAE,EAAE,SAAS,MAAMjxG,GAAEC,GAAE1C,CAAC,EAAE,QAAQ8oH,GAAG,EAAE,EAAE,GAAG7+F,GAAUxnB,KAAP,KAAS,SAAS,MAAMwxD,GAAE,WAAWvxD,GAAE,CAAC,CAAC,EAAEkvG,GAAE,WAAWlvG,GAAE,CAAC,CAAC,EAAEmvG,GAAE,WAAWnvG,GAAEF,CAAC,CAAC,EAAE,GAAG+xF,EAAE,CAAC,MAAM7xF,GAAE,EAAE6D,EAAE,GAAGvF,EAAE0B,GAAE,CAAC,EAAEuxD,GAAEjzD,EAAE0B,GAAE,CAAC,EAAEkvG,GAAE5wG,EAAE0B,GAAE,CAAC,EAAEmvG,GAAEtrG,GAAG,EAAEmtG,EAAE,EAAE,QAAQ,CAAC,MAAM5B,GAAEpvG,GAAEmD,CAAC,EAAEksG,GAAE,SAASrvG,GAAOnB,IAAL,GAAOA,EAAEE,CAAC,CAAC,EAAE,IAAIuwG,GAAEtvG,GAAElB,CAAC,EAAEwwG,GAAQA,KAAN,IAAQ,GAAGA,GAAE,MAAMhb,GAAEt0F,GAAEutD,CAAC,EAAEwD,GAAE/wD,GAAEgD,CAAC,EAAE0C,GAAQ1F,GAAEkJ,CAAC,EAAE,CAAC,IAAZ,IAAcynG,GAAE3wG,GAAEkD,CAAC,EAAE0+G,GAAE,WAAW5hH,GAAEszF,CAAC,CAAC,EAAEuuB,GAAE,WAAW7hH,GAAEimG,CAAC,CAAC,EAAE,IAAI6b,GAAE9hH,GAAEhC,CAAC,EAAE,GAAG8jH,GAAQA,KAAN,IAAQ,GAAGA,GAAEhR,EAAE,WAAU,EAAGA,EAAE,WAAWlyG,CAAC,EAAEyW,GAAE,IAAItV,GAAE4wG,EAAC,EAAEG,EAAE,EAAElyG,CAAC,EAAE2yD,GAAEu/C,EAAE,EAAElyG,CAAC,EAAEswG,GAAE4B,EAAE,EAAElyG,CAAC,EAAEuwG,GAAE2B,EAAE,OAAOlyG,CAAC,EAAE,SAASoB,GAAEiD,CAAC,CAAC,EAAE6tG,EAAE,QAAQlyG,CAAC,EAAE,MAAMgjH,EAAC,EAAE,EAAEA,GAAE9Q,EAAE,UAAUlyG,CAAC,EAAE,MAAMijH,EAAC,EAAE,EAAEA,GAAE/Q,EAAE,OAAOlyG,CAAC,EAAEkjH,GAAE,WAAW,CAAC,EAAE1sB,EAAE,QAAQ4b,EAAE1c,GAAEvjC,GAAEq+C,GAAEC,GAAE3pG,GAAE,OAAO4pG,EAAC,EAAE1N,GAAG,CAAC,MAAMtjG,GAAE0yD,EAAED,EAAC,EAAWzyD,KAAT,QAAYA,KAAIg2F,IAAGsN,IAAIF,GAAG,KAAKpjG,GAAEg2F,EAAC,CAAC,CAACtjC,EAAED,EAAC,EAAEujC,GAAE,MAAMytB,GAAE/hH,GAAE,CAAC,EAAEgmG,EAAE+b,EAAC,IAAI/b,EAAE+b,EAAC,EAAE,IAAI,KAAK/b,EAAE+b,EAAC,EAAE,IAAI7b,EAAE,WAAW,MAAM,CAAC,EAAEtnG,GAAG,CAAC,KAAK,CAAC,MAAMN,GAAEP,EAAE,MAAMooH,EAAE,EAAEnmH,GAAE1B,GAAE,OAAOyyD,IAAIujC,EAAE,SAASvjC,EAAE,GAAG,QAAQ1zD,GAAE,EAAEA,GAAE2C,GAAE,EAAE3C,GAAEi3F,EAAEvjC,EAAE1zD,EAAC,EAAE,KAAKiB,GAAEjB,EAAC,CAAC,EAAE0zD,GAAG/wD,EAAC,CAACsvG,GAAE,EAAE,SAAevxG,EAAE,CAAC,IAAT,KAAkBA,EAAEA,EAAE,OAAO,CAAC,IAAlB,IAAoB,CAAC,MAAMO,GAAEP,EAAE,UAAU,EAAEA,EAAE,OAAO,CAAC,EAAO4yG,KAAL,GAAOp/C,EAAE7rD,EAAC,EAAEpH,GAAEizD,EAAE7rD,EAAC,EAAEirG,EAAC,EAAEryG,EAAC,MAAM8wG,EAAOuB,KAAL,GAAOp/C,EAAE7rD,EAAC,EAAE3H,EAAEwzD,EAAE7rD,EAAC,EAAEirG,EAAC,EAAE5yG,EAAE6jG,IAAIF,GAAG,IAAI,kCAAkC3jG,CAAC,OAAOmxG,GAAE,GAAGG,GAAE,GAAGD,EAAE,GAAG9a,EAAE,OAAO,EAAEvjC,EAAE,KAAKrrD,GAAE,KAAKirG,GAAE,KAAKC,GAAE,KAAKC,EAAE,OAAO,CAAC,GAAE,EAAE7wG,EAAE,OAAOA,CAAC,CAAC,GAAIuxD,EAAE,WAAWA,EAAE,gBAAgB,CAACA,EAAE,QAAQ,SAASjzD,EAAE0B,GAAE3C,GAAE,CAAC,MAAMwG,GAAE7D,GAAE,UAAUD,EAAEC,GAAE,QAAQ,IAAIjC,EAAEwvD,GAAE,MAAM1uD,GAAEP,EAAE,UAAUS,EAAET,EAAE,eAAehB,GAAEgB,EAAE,eAAeO,KAAIA,GAAE,OAAOmB,GAAE,MAAMnB,GAAE,KAAK,OAAO,QAAQwnH,GAAG,EAAE,GAAGxnH,GAAE,KAAKmB,GAAE,GAAGnB,GAAE,GAAG,KAAM,EAAC,QAAQwnH,GAAG,EAAE,IAAI,IAAIljH,GAAE,CAAA,EAAG,GAAGpE,EAAE,CAAC,IAAIiE,GAAEwX,GAAExc,GAAEkL,GAAE,IAAIs9G,GAAGznH,EAAE,SAAS,EAAEwuD,GAAExuD,EAAE,QAAQ,OAAOhB,EAAE,EAAEA,EAAEwvD,GAAE,EAAExvD,EAAE8F,GAAE,WAAY,EAACb,GAAEjE,EAAE,QAAQhB,CAAC,EAAE,QAAQqoH,GAAG,EAAE,EAAE5rG,GAAEzb,EAAE,YAAYhB,CAAC,EAAEoF,GAAEH,EAAC,EAAEjF,EAAE8F,GAAE,WAAW9F,CAAC,EAAEgC,EAAE,IAAIiD,GAAEwX,EAAC,EAAE3W,GAAE,EAAE9F,CAAC,EAAEgB,EAAE,cAAchB,CAAC,EAAE8F,GAAE,EAAE9F,CAAC,EAAEgB,EAAE,cAAchB,CAAC,EAAE8F,GAAE,EAAE9F,CAAC,EAAEgB,EAAE,cAAchB,CAAC,EAAE8F,GAAE,OAAO9F,CAAC,EAAEA,EAAEC,GAAEe,EAAE,uBAAuBhB,CAAC,EAAEmL,GAAEnK,EAAE,uBAAuBA,EAAE,uBAAuBhB,CAAC,EAAE,EAAEV,GAAE,QAAQ,EAAE,GAAG,GAAGW,GAAEkL,GAAE,EAAE,EAAE,IAAInL,EAAE,EAAEA,EAAEwvD,GAAE,EAAExvD,EAAE,CAAC,IAAIkF,GAAElF,EAAEwvD,GAAE1pD,GAAE,WAAU,EAAGb,GAAEjE,EAAE,QAAQhB,CAAC,EAAE,QAAQqoH,GAAG,EAAE,EAAE5rG,GAAEzb,EAAE,YAAYhB,CAAC,EAAE8F,GAAE,WAAWZ,EAAC,EAAElD,EAAE,IAAIiD,GAAEwX,EAAC,EAAE3W,GAAE,EAAEZ,EAAC,EAAElE,EAAE,yBAAyBhB,CAAC,EAAE8F,GAAE,EAAEZ,EAAC,EAAElE,EAAE,yBAAyBhB,CAAC,EAAE8F,GAAE,EAAEZ,EAAC,EAAElE,EAAE,yBAAyBhB,CAAC,EAAE8F,GAAE,OAAOZ,EAAC,EAAEA,GAAEjF,GAAEe,EAAE,uBAAuBhB,CAAC,EAAEmL,GAAEnK,EAAE,uBAAuBA,EAAE,uBAAuBhB,CAAC,EAAE,EAAEV,GAAE,QAAQ,EAAE,GAAG,GAAGW,GAAEkL,GAAE,EAAE,CAAC,CAAC,CAAC,GAAGnK,GAAGzB,GAAE,CAAC,IAAI4F,GAAE7E,GAAES,GAAE0nH,GAAGlpH,GAAE,SAAS,EAAEiwD,GAAEjwD,GAAE,QAAQ,OAAO,IAAI9K,GAAEuM,EAAE,QAAQ,OAAOc,GAAEG,GAAE,aAAc,EAACF,GAAEE,GAAE,aAAc,EAAC,IAAIjC,EAAE,EAAEA,EAAEwvD,GAAE,EAAExvD,EAAEmF,GAAE5F,GAAE,UAAUS,CAAC,EAAE,QAAQqoH,GAAG,EAAE,EAAE/nH,GAAEf,GAAE,UAAUS,CAAC,EAAE,QAAQqoH,GAAG,EAAE,EAAEtnH,GAAE6nH,GAAGrpH,GAAE,YAAYS,CAAC,CAAC,EAAE8B,GAAE,MAAMsD,GAAED,EAAC,EAAEpD,GAAE,MAAMqD,GAAE9E,EAAC,EAAE2B,GAAE,UAAU,WAAY,EAACA,GAAE,UAAU,QAAQH,GAAEC,GAAEhB,EAAC,EAAEe,GAAE,OAAOrN,GAAEsN,GAAE,OAAOtN,GAAEwN,GAAE,UAAU,WAAU,EAAGA,GAAE,UAAU,QAAQH,GAAEC,GAAEhB,EAAC,CAAC,CAAC,GAAEyyD,EAAE20C,EAAE9Q,CAAC,EAAEA,EAAE,SAAU,EAAC8Q,EAAE,cAAe,EAACA,EAAE,cAAe,EAAC4Q,GAAG5Q,CAAC,UAAU30C,EAAE,uBAAuBA,EAAE,iBAAiBA,EAAE,mBAAmB,SAASjzD,EAAEuF,GAAE9D,GAAE,CAAC,IAAIhC,GAAEwvD,EAAE1pD,GAAE,UAAUhF,EAAEgF,GAAE,QAAQvF,EAAE,OAAOuF,GAAE,GAAGvF,EAAE,KAAKuF,GAAE,KAAKvF,EAAE,MAAMuF,GAAE,SAAS,IAAI0hH,GAAG,CAAC,EAAE,WAAWjnH,EAAE,aAAa,EAAE,EAAE,WAAWA,EAAE,aAAa,EAAE,EAAE,WAAWA,EAAE,aAAa,EAAE,MAAM,WAAWA,EAAE,gBAAgB,EAAE,KAAK,WAAWA,EAAE,eAAe,EAAE,MAAM,WAAWA,EAAE,gBAAgB,EAAE,WAAWioH,GAAGjoH,EAAE,+BAA+B,CAAC,CAAC,CAAC,EAAE,MAAMS,GAAE,IAAIiB,EAAE1C,GAAE,IAAI0C,EAAEmD,EAAE7E,EAAE,sBAAsB,OAAO0E,GAAE,GAAG,QAAQhD,GAAE,EAAEA,GAAEmD,EAAE,EAAEnD,GAAE,CAACutD,EAAE,WAAU,EAAG,MAAMlwD,GAAEiB,EAAE,gBAAgB0B,EAAC,EAAEmD,GAAE7E,EAAE,sBAAsB0B,EAAC,EAAE,IAAIwa,GAAExX,GAAEG,EAAC,EAAE,GAAG,CAACqX,GAAE,CAAC,MAAMlc,GAAE6E,GAAE,MAAMmjH,EAAE,EAAEtjH,GAAEG,EAAC,EAAEqX,IAAUzc,GAAQO,IAAN,KAAQ,OAAOA,GAAE,CAAC,KAA5B,MAAyCP,KAAT,OAAWA,GAAEoF,EAAC,CAACoqD,EAAE,WAAWvtD,EAAC,EAAEnB,EAAE,IAAIxB,GAAEmd,EAAC,EAAEzb,GAAE,IAAIT,EAAE,kBAAkB0B,EAAC,EAAE1B,EAAE,kBAAkB0B,EAAC,EAAE1B,EAAE,kBAAkB0B,EAAC,CAAC,EAAEjB,GAAE,aAAa8E,GAAE,SAAS,UAAU,EAAEvG,GAAE,IAAIyB,EAAC,EAAEwuD,EAAE,EAAEvtD,EAAC,EAAEjB,GAAE,EAAEwuD,EAAE,EAAEvtD,EAAC,EAAEjB,GAAE,EAAEwuD,EAAE,EAAEvtD,EAAC,EAAEjB,GAAE,EAAET,EAAE,sBAAsBivD,EAAE,UAAUvtD,EAAC,EAAE,WAAW1B,EAAE,oBAAoB0B,EAAC,CAAC,GAAGutD,EAAE,OAAOvtD,EAAC,EAAEA,GAAED,GAAE,QAAQ,EAAE,GAAG,GAAG,MAAM,EAAE,EAAE,CAAC,CAACzC,GAAE,aAAa6F,CAAC,EAAEU,GAAE,OAAOvG,GAAEo5G,GAAG7yG,EAAC,EAAE,MAAM2W,GAAE,IAAIxa,EAAEhC,GAAE,IAAIgC,EAAEkJ,GAAErF,GAAE,WAAW,UAAU,SAAS,CAAC,EAAE,WAAW,IAAIZ,GAAEE,EAAE,SAASD,GAAE5E,GAAE,CAAC,OAAOO,EAAE,IAAI0uD,EAAE,WAAWjvD,EAAC,CAAC,EAAE,QAAQ,CAAC,MAAMD,GAAE,IAAIhB,GAAE,QAAQiB,GAAE,EAAEA,GAAE6E,EAAE,EAAE7E,GAAE,CAAC,MAAM0B,GAAEkD,GAAE5E,EAAC,EAAES,GAAE,IAAIwuD,EAAE,EAAEjvD,EAAC,EAAEivD,EAAE,EAAEjvD,EAAC,EAAEivD,EAAE,EAAEjvD,EAAC,CAAC,EAAE4K,GAAE,QAAS,SAAS7L,GAAE,CAAC,GAAG,CAACgB,GAAE,OAAOhB,EAAC,EAAE,CAACmd,GAAE,KAAKzb,EAAC,EAAEyb,GAAE,aAAand,EAAC,EAAE,QAAQA,GAAE,EAAEA,GAAE8F,EAAE,EAAE9F,GAAE,CAACW,GAAE,IAAIuvD,EAAE,EAAElwD,EAAC,EAAEkwD,EAAE,EAAElwD,EAAC,EAAEkwD,EAAE,EAAElwD,EAAC,CAAC,EAAE,MAAMwG,GAAE2W,GAAE,kBAAkBxc,EAAC,EAAED,GAAEmF,GAAE7F,EAAC,EAAE2C,GAAEnB,GAAEd,GAAE,GAAGgB,GAAEhB,GAAE,GAAG,GAAG8F,GAAEhF,GAAEA,IAAGgF,GAAE9E,GAAEA,GAAE,OAAOwuD,EAAE,WAAY,EAACA,EAAE,WAAWtqD,EAAC,EAAEsqD,EAAE,WAAWjvD,EAAC,EAAEivD,EAAE,EAAEtqD,EAAC,EAAEuX,GAAE,EAAE+yC,EAAE,EAAEtqD,EAAC,EAAEuX,GAAE,EAAE+yC,EAAE,EAAEtqD,EAAC,EAAEuX,GAAE,EAAE+yC,EAAE,UAAUtqD,EAAC,EAAEsqD,EAAE,UAAUjvD,EAAC,EAAEivD,EAAE,OAAOtqD,EAAC,EAAEA,GAAEsqD,EAAE,OAAOtqD,EAAC,EAAE,GAAkBlD,GAAE,QAAQ,EAAE,GAAG,GAAG,MAAM,EAAE,EAAE,EAAE,KAAKkD,IAAG,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,GAAEsuD,EAAE20C,EAAE9Q,CAAC,EAAEA,EAAE,WAAW8Q,EAAE,gBAAgBoQ,GAAGpQ,CAAC,EAAEA,EAAE,oBAAoB,CAAC,IAAI0b,GAAE,SAAStjH,EAAE0B,GAAE3C,GAAE,CAAC,IAAIwG,GAAE9D,EAAEhC,EAAEwvD,GAAE1uD,GAAE,GAAGE,EAAE,CAAA,EAAGzB,GAAEgB,EAAE,YAAY,GAAShB,IAAN,MAAeA,GAAE,qBAAqB,IAAIkpH,GAAGlpH,GAAE,IAAI,EAAEuG,GAAE,EAAE9D,EAAEzC,GAAE,gBAAgB,OAAOuG,GAAE9D,EAAE,EAAE8D,GAAE,CAAC,IAAIV,GAAE,SAAS7F,GAAE,qBAAqBuG,EAAC,CAAC,EAAE,OAAO,MAAMV,EAAC,IAAIpF,EAAET,GAAE,sBAAsBuG,EAAC,EAAE0pD,GAAEjwD,GAAE,sBAAsBuG,EAAC,EAAEhF,GAAE,KAAK,CAACxB,GAAEC,GAAE,kBAAkBuG,EAAC,CAAC,EAAE,SAASvG,GAAE,gBAAgBuG,EAAC,CAAC,EAAE6iH,GAAG3oH,EAAE,EAAE,EAAEV,GAAEC,GAAE,kBAAkBuG,EAAC,CAAC,EAAE,SAASvG,GAAE,gBAAgBuG,EAAC,CAAC,EAAE6iH,GAAGn5D,GAAE,EAAE,GAAGi4D,GAAGriH,EAAC,GAAGqiH,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,IAAIxiH,GAAE1E,EAAE,mBAAmB,GAAG0E,GAAE,IAAIwjH,GAAGxjH,GAAE,IAAI,EAAEa,GAAE,EAAE9D,EAAEiD,GAAE,gBAAgB,OAAOa,GAAE9D,EAAE,EAAE8D,GAAE9F,EAAEiF,GAAE,sBAAsBa,EAAC,EAAE0pD,GAAEvqD,GAAE,sBAAsBa,EAAC,EAAE9E,EAAE,KAAK,CAAC1B,GAAE2F,GAAE,kBAAkBa,EAAC,CAAC,EAAE,SAASb,GAAE,gBAAgBa,EAAC,CAAC,EAAE6iH,GAAG3oH,EAAE,EAAE,EAAEV,GAAE2F,GAAE,kBAAkBa,EAAC,CAAC,EAAE,SAASb,GAAE,gBAAgBa,EAAC,CAAC,EAAE6iH,GAAGn5D,GAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAACjwD,IAAG,CAAC0F,KAAI,CAAC,QAAQnE,GAAE,OAAOE,CAAC,CAAC,EAAEwyD,EAAE,EAAEP,CAAC,EAAE,GAAG,SAAS1yD,EAAE0B,GAAE6D,GAAE,CAAC,IAAI9D,GAAE,CAAA,EAAGhC,EAAEiC,GAAE,WAAW,GAAG1B,EAAE,sBAAsB,CAAC,IAAIivD,EAAEjvD,EAAE,sBAAsBkoH,GAAGj5D,EAAE,IAAI,EAAEA,EAAE,GAAG,QAAS,SAASjvD,GAAE0B,GAAE,CAAC,IAAI6D,GAAE,IAAIxG,GAAEU,GAAE8F,GAAE,SAAS9F,GAAE,CAAC,EAAE,WAAWwvD,EAAE,cAAc,EAAEvtD,EAAC,CAAC,EAAEjC,GAAE,CAAC,EAAE,WAAWwvD,EAAE,cAAc,EAAEvtD,EAAC,CAAC,EAAEjC,GAAE,CAAC,EAAE,WAAWwvD,EAAE,cAAc,EAAEvtD,EAAC,CAAC,EAAEjC,GAAE,CAAC,EAAE,WAAWwvD,EAAE,cAAc,EAAEvtD,EAAC,CAAC,EAAEjC,GAAE,CAAC,EAAE,WAAWwvD,EAAE,cAAc,EAAEvtD,EAAC,CAAC,EAAEjC,GAAE,CAAC,EAAE,WAAWwvD,EAAE,cAAc,EAAEvtD,EAAC,CAAC,EAAEjC,GAAE,CAAC,EAAE,WAAWwvD,EAAE,cAAc,EAAEvtD,EAAC,CAAC,EAAEjC,GAAE,CAAC,EAAE,WAAWwvD,EAAE,cAAc,EAAEvtD,EAAC,CAAC,EAAEjC,GAAE,EAAE,EAAE,WAAWwvD,EAAE,cAAc,EAAEvtD,EAAC,CAAC,EAAEjC,GAAE,CAAC,EAAE,WAAWwvD,EAAE,WAAW,EAAEvtD,EAAC,CAAC,EAAEjC,GAAE,CAAC,EAAE,WAAWwvD,EAAE,WAAW,EAAEvtD,EAAC,CAAC,EAAEjC,GAAE,EAAE,EAAE,WAAWwvD,EAAE,WAAW,EAAEvtD,EAAC,CAAC,EAAE6D,GAAE,UAAW,EAAC9D,GAAEzB,EAAC,EAAEuF,EAAC,CAAC,CAAE,CAAC,GAAGvF,EAAE,yBAAyB,CAAC,IAAIO,GAAEP,EAAE,yBAAyBkoH,GAAG3nH,GAAE,aAAa,EAAE,IAAIE,GAAE,SAAST,GAAE,CAAC,IAAI0B,GAAE,CAAE,EAAC,OAAO1B,GAAE,QAAQ,SAAS,EAAE,EAAE,MAAM,GAAG,EAAE,QAAS,SAASA,GAAE,CAAC,GAAGA,GAAE,SAAS,GAAG,EAAE,QAAQjB,GAAEiB,GAAE,MAAM,GAAG,EAAEuF,GAAE,SAASxG,GAAE,CAAC,CAAC,EAAEU,GAAE,SAASV,GAAE,CAAC,CAAC,EAAEwG,IAAG9F,GAAE,EAAE8F,GAAE7D,GAAE6D,EAAC,EAAE9D,GAAE8D,EAAC,OAAO7D,GAAE1B,EAAC,EAAEyB,GAAEzB,EAAC,CAAC,CAAC,EAAG0B,EAAC,EAAEnB,GAAE,YAAY,QAAS,SAASP,GAAE0B,GAAE,CAAC,IAAID,GAAE,CAAA,EAAGwtD,GAAE1uD,GAAE,gBAAgBmB,EAAC,EAAE,QAAQ,eAAe,EAAE,EAAE,GAAGutD,GAAE,SAAS,IAAI,GAAGA,GAAE,QAAQ,GAAG,EAAE,EAAE,CAACA,GAAEA,GAAE,MAAM,GAAG,EAAE,IAAIjwD,GAAEyB,GAAEwuD,GAAE,CAAC,CAAC,EAAEpqD,GAAEpE,GAAEwuD,GAAE,CAAC,CAAC,EAAE,OAAO,KAAKjwD,EAAC,EAAE,QAAS,SAASgB,GAAE,CAAC,OAAO,KAAK6E,EAAC,EAAE,QAAS,SAASnD,GAAE,CAAC,IAAI6D,GAAE,IAAIxG,GAAEwG,GAAE,iBAAiBvG,GAAEgB,EAAC,EAAE6E,GAAEnD,EAAC,CAAC,EAAED,GAAEzB,GAAE,IAAI0B,EAAC,EAAE6D,EAAC,CAAC,CAAE,CAAG,CAAA,MAAM9D,GAAEhB,GAAEwuD,EAAC,EAAE,IAAIvqD,GAAE,CAAA,EAAG,QAAQwX,MAAKza,GAAEiD,GAAE,KAAKjD,GAAEya,EAAC,CAAC,EAAE,IAAIxc,GAAEM,GAAE,oBAAoB,KAAKN,EAAC,IAAIA,GAAE,KAAKA,IAAG,QAAQkL,GAAErK,GAAE,aAAamB,EAAC,EAAE,MAAM,GAAG,EAAEiD,GAAE,EAAEC,GAAEgG,GAAE,OAAOjG,GAAEC,GAAE,EAAED,GAAEiG,GAAEjG,EAAC,EAAEY,GAAEqF,GAAEjG,EAAC,CAAC,EAAWlF,EAAEC,EAAC,IAAZ,SAAgBD,EAAEC,EAAC,EAAE,IAAI83G,GAAG93G,EAAC,GAAGD,EAAEC,EAAC,EAAE,QAAQgF,GAAEkG,EAAC,CAAC,CAAG,CAAA,CAAC,GAAG5K,EAAE,gBAAgB,CAAC,IAAIhB,EAAEgB,EAAE,gBAAgBkoH,GAAGlpH,EAAE,IAAI,EAAE,IAAI6F,GAAE,MAAMpF,EAAEoF,EAAC,EAAE,IAAI2yG,GAAG3yG,EAAC,EAAE,IAAIH,GAAEjF,EAAEoF,EAAC,EAAE,QAAO,EAAG7F,EAAE,GAAG,QAAS,SAASgB,GAAE0B,GAAE,CAAC,GAAa1C,EAAE,KAAK0C,EAAC,IAAlB,QAAoB,CAAC,IAAI6D,GAAE,IAAIxG,GAAE0C,GAAE8D,GAAE,SAAS9D,GAAE,CAAC,EAAE,WAAWzC,EAAE,cAAc,EAAE0C,EAAC,CAAC,EAAED,GAAE,CAAC,EAAE,WAAWzC,EAAE,cAAc,EAAE0C,EAAC,CAAC,EAAED,GAAE,CAAC,EAAE,WAAWzC,EAAE,cAAc,EAAE0C,EAAC,CAAC,EAAED,GAAE,CAAC,EAAE,WAAWzC,EAAE,cAAc,EAAE0C,EAAC,CAAC,EAAED,GAAE,CAAC,EAAE,WAAWzC,EAAE,cAAc,EAAE0C,EAAC,CAAC,EAAED,GAAE,CAAC,EAAE,WAAWzC,EAAE,cAAc,EAAE0C,EAAC,CAAC,EAAED,GAAE,CAAC,EAAE,WAAWzC,EAAE,cAAc,EAAE0C,EAAC,CAAC,EAAED,GAAE,CAAC,EAAE,WAAWzC,EAAE,cAAc,EAAE0C,EAAC,CAAC,EAAED,GAAE,EAAE,EAAE,WAAWzC,EAAE,cAAc,EAAE0C,EAAC,CAAC,EAAED,GAAE,CAAC,EAAE,WAAWzC,EAAE,WAAW,EAAE0C,EAAC,CAAC,EAAED,GAAE,CAAC,EAAE,WAAWzC,EAAE,WAAW,EAAE0C,EAAC,CAAC,EAAED,GAAE,EAAE,EAAE,WAAWzC,EAAE,WAAW,EAAE0C,EAAC,CAAC,EAAE6D,GAAE,UAAW,EAACb,GAAE,WAAW,KAAKa,EAAC,CAAC,CAAC,GAAQb,GAAE,WAAW,SAAjB,GAAyB,OAAOjF,EAAEoF,EAAC,CAAC,CAAC,MAAMqX,GAAE,CAAE,EAAC,GAAGlc,EAAE,KAAK,CAAC,MAAMjB,GAAEiB,EAAE,KAAKuF,GAAE,WAAWxG,GAAE,QAAQ,EAAE0C,GAAE,WAAW1C,GAAE,QAAQ,EAAEU,GAAE,WAAWV,GAAE,QAAQ,EAAEkwD,GAAE,IAAI,aAAa,CAAC,EAAEA,GAAE,CAAC,EAAE1pD,GAAE0pD,GAAE,CAAC,EAAExtD,GAAEwtD,GAAE,CAAC,EAAExvD,GAAEiC,GAAE,MAAM,KAAKutD,EAAC,EAAE/yC,GAAE,EAAE3W,GAAE2W,GAAE,EAAEza,GAAEya,GAAE,EAAEzc,GAAEyc,GAAE,MAAM,WAAWnd,GAAE,WAAW,EAAEmd,GAAE,KAAK,WAAWnd,GAAE,UAAU,EAAEmd,GAAE,MAAM,WAAWnd,GAAE,WAAW,CAAC,CAACiB,EAAE,WAAWkc,GAAE,WAAW+rG,GAAGjoH,EAAE,SAAS,sBAAsB,CAAC,GAAG,IAAIN,GAAE,IAAIX,GAAE,GAAGiB,EAAE,oBAAoB,CAAC,IAAI4K,GAAE5K,EAAE,oBAAoB2E,GAAEjF,GAAE,SAASiF,GAAE,CAAC,EAAE,WAAWiG,GAAE,aAAa,CAAC,EAAEjG,GAAE,CAAC,EAAE,WAAWiG,GAAE,aAAa,CAAC,EAAEjG,GAAE,CAAC,EAAE,WAAWiG,GAAE,aAAa,CAAC,EAAEjG,GAAE,CAAC,EAAE,WAAWiG,GAAE,aAAa,CAAC,EAAEjG,GAAE,CAAC,EAAE,WAAWiG,GAAE,aAAa,CAAC,EAAEjG,GAAE,CAAC,EAAE,WAAWiG,GAAE,aAAa,CAAC,EAAEjG,GAAE,CAAC,EAAE,WAAWiG,GAAE,aAAa,CAAC,EAAEjG,GAAE,CAAC,EAAE,WAAWiG,GAAE,aAAa,CAAC,EAAEjG,GAAE,EAAE,EAAE,WAAWiG,GAAE,aAAa,CAAC,EAAEjG,GAAE,CAAC,EAAE,WAAWiG,GAAE,iBAAiB,CAAC,EAAEjG,GAAE,CAAC,EAAE,WAAWiG,GAAE,iBAAiB,CAAC,EAAEjG,GAAE,EAAE,EAAE,WAAWiG,GAAE,iBAAiB,CAAC,EAAElL,GAAE,UAAW,EAACwc,GAAE,MAAMxc,EAAC,CAAC,IAAIkF,GAAE,IAAI7F,GAAE,GAAGiB,EAAE,WAAW,CAAC,IAAID,GAAEC,EAAE,WAAWQ,GAAEoE,GAAE,SAASpE,GAAE,CAAC,EAAE,WAAWT,GAAE,2BAA2B,CAAC,EAAES,GAAE,CAAC,EAAE,WAAWT,GAAE,2BAA2B,CAAC,EAAES,GAAE,CAAC,EAAE,WAAWT,GAAE,2BAA2B,CAAC,EAAES,GAAE,CAAC,EAAE,WAAWT,GAAE,2BAA2B,CAAC,EAAES,GAAE,CAAC,EAAE,WAAWT,GAAE,2BAA2B,CAAC,EAAES,GAAE,CAAC,EAAE,WAAWT,GAAE,2BAA2B,CAAC,EAAES,GAAE,CAAC,EAAE,WAAWT,GAAE,2BAA2B,CAAC,EAAES,GAAE,CAAC,EAAE,WAAWT,GAAE,2BAA2B,CAAC,EAAES,GAAE,EAAE,EAAE,WAAWT,GAAE,2BAA2B,CAAC,EAAES,GAAE,CAAC,EAAE,WAAWT,GAAE,wBAAwB,CAAC,EAAES,GAAE,CAAC,EAAE,WAAWT,GAAE,wBAAwB,CAAC,EAAES,GAAE,EAAE,EAAE,WAAWT,GAAE,wBAAwB,CAAC,EAAE6E,GAAE,YAAYsX,GAAE,MAAMtX,EAAC,CAAUsX,GAAE,IAAX,OAAaxa,GAAE,SAAS,IAAIulH,GAAG/qG,EAAC,EAAExa,GAAE,SAAS,MAAM,EAAEuxD,EAAE20C,EAAEl1C,CAAC,EAAE,SAAS1yD,EAAE0B,GAAE3C,GAAE,CAAC,IAAIwG,GAAEvF,EAAE,YAAY,GAAGuF,GAAE,CAAC2iH,GAAG3iH,GAAE,IAAI,EAAE,QAAQ9D,EAAE,KAAKhC,EAAEiC,GAAE,aAAY,EAAGutD,GAAEvtD,GAAE,eAAenB,GAAE,CAAA,EAAGE,EAAE,EAAEzB,GAAEuG,GAAE,GAAG,OAAO9E,EAAEzB,GAAE,EAAEyB,EAAE,CAAC,IAAIoE,GAAEU,GAAE,aAAa9E,CAAC,EAAE,GAAcoE,KAAX,UAAyBA,KAAX,UAAyBA,KAAX,UAAwBU,GAAE,eAAe9E,CAAC,IAA5B,SAAyC8E,GAAE,eAAe9E,CAAC,IAA5B,QAA8B,CAAC,IAAIiE,GAAEa,GAAE,wBAAwB9E,CAAC,EAAEyb,GAAE3W,GAAE,wBAAwB9E,CAAC,EAAEf,GAAE6F,GAAE,kBAAkB9E,CAAC,GAAG0nH,GAAGzjH,EAAC,EAAE,IAAIA,GAAE,IAAI,IAAI3F,GAAEwG,GAAE,oBAAoB9E,CAAC,CAAC,EAAE,IAAI8E,GAAE,oBAAoB9E,CAAC,EAAE,QAAQgB,EAAE,EAAE,GAAG0mH,GAAGjsG,EAAC,EAAE,IAAIA,GAAE,IAAItR,GAAErK,GAAEb,EAAC,EAAE,GAAG,CAACkL,GAAE,CAAC,IAAIjG,GAAE,IAAIy9F,GAAG1iG,EAAC,EAAE,GAAGiF,GAAE,UAAU,MAAM,CAAC2+F,IAAIF,GAAG,KAAK,mCAAmC1jG,EAAC,EAAE,QAAQ,CAACkL,GAAElJ,GAAE,eAAeiD,EAAC,EAAEpE,GAAEb,EAAC,EAAEkL,EAAC,CAAC,IAAIhG,GAAEW,GAAE,wBAAwB9E,CAAC,EAAEV,GAAEwF,GAAE,wBAAwB9E,CAAC,EAAED,GAAE+E,GAAE,kBAAkB9E,CAAC,GAAG0nH,GAAGvjH,EAAC,EAAE,IAAIA,GAAE,IAAI,IAAI7F,GAAEwG,GAAE,oBAAoB9E,CAAC,CAAC,EAAE,IAAI8E,GAAE,oBAAoB9E,CAAC,EAAE,QAAQgB,EAAE,EAAE,GAAG0mH,GAAGpoH,EAAC,EAAE,IAAIA,GAAE,IAAI7L,GAAEqM,GAAEC,EAAC,EAAE,GAAG,CAACtM,GAAE,CAAC,IAAIqN,GAAE,IAAI6gG,GAAG5hG,EAAC,EAAE,GAAGe,GAAE,UAAU,MAAM,CAAC+hG,IAAIF,GAAG,KAAK,mCAAmC5iG,EAAC,EAAE,QAAQ,CAACtM,GAAEwN,GAAE,eAAeH,EAAC,EAAEhB,GAAEC,EAAC,EAAEtM,EAAC,CAAC,IAAIsN,GAAEoJ,GAAE,OAAOoqF,GAAE9gG,GAAE,OAAO,GAAGsN,GAAEwzF,GAAE,CAAC,IAAI2S,GAAEnmG,GAAEA,GAAEwzF,GAAEA,GAAE2S,GAAE,IAAIC,GAAEh9F,GAAEA,GAAE1W,GAAEA,GAAE0zG,EAAC,CAAC,GAAOpmG,KAAJ,GAAWwzF,KAAJ,EAAM,QAAQ8B,GAAE,EAAEA,GAAE9B,GAAE,EAAE8B,GAAEr3F,EAAE,MAAMmL,GAAEksF,GAAEt1F,EAAC,EAAEytD,GAAE,MAAM/6D,GAAE4iG,EAAC,EAAEr3F,GAAGwvD,GAAEvtD,GAAE,UAAU,QAAQjC,EAAEwvD,GAAEo5D,GAAG9iH,GAAE,iBAAiB9E,CAAC,CAAC,CAAC,EAAE2iG,GAAG,IAAI,gCAAgC,OAAOE,IAAIF,GAAG,KAAK,qBAAqB1jG,GAAEc,EAAC,CAAC,CAAC,CAAC,CAAC,EAAEyyD,EAAE20C,EAAEl1C,CAAC,EAAE,SAAS1yD,EAAE0B,GAAE3C,GAAE,CAAC,GAAGiB,EAAE,OAAO,CAACkoH,GAAGloH,EAAE,OAAO,IAAI,EAAE,QAAQuF,GAAEvF,EAAE,OAAOyB,EAAE8D,GAAE,GAAG,OAAO9F,EAAE,EAAEA,EAAEgC,EAAE,EAAEhC,EAAE,CAAC,IAAIwvD,GAAE1pD,GAAE,iBAAiB9F,CAAC,EAAEc,GAAEgF,GAAE,KAAK9F,CAAC,EAAEgB,EAAE,MAAM,KAAK1B,GAAEwG,GAAE,GAAG9F,CAAC,CAAC,CAAC,EAAEiC,GAAE,WAAWjC,CAAC,EAAE,IAAIsnH,GAAGrlH,GAAEjC,EAAEwvD,GAAE1uD,GAAEE,CAAC,CAAC,CAAC,CAAC,EAAEwyD,EAAE20C,EAAEF,CAAC,EAAEz0C,EAAE,QAAQA,EAAE,OAAO,QAAQ20C,EAAE,MAAM30C,EAAE,OAAO,MAAM,OAAO,QAAQ80D,GAAG,EAAE,GAAG90D,EAAE,OAAOA,EAAE,MAAM,KAAK20C,EAAE,GAAG30C,EAAE,MAAM,GAAG,OAAO,QAAQ80D,GAAG,EAAE,GAAG90D,EAAE,4BAA4B,CAAC,GAAGA,EAAE,4BAA4B,cAAc,CAACi1D,GAAGj1D,EAAE,4BAA4B,eAAe,EAAE,MAAMjzD,EAAEizD,EAAE,4BAA4B,cAAc,OAAOk1D,EAAE,EAAEnoH,EAAE,SAAS4nG,EAAE,OAAO,YAAY5nG,EAAE,CAAC,EAAE,CAAC,GAAGizD,EAAE,qBAAqB,8BAA8B,CAACi1D,GAAGj1D,EAAE,qBAAqB,+BAA+B,EAAE,MAAMjzD,EAAEizD,EAAE,qBAAqB,8BAA8B,OAAOk1D,EAAE,EAAEnoH,EAAE,SAAS4nG,EAAE,OAAO,eAAe5nG,EAAE,CAAC,EAAE,CAAC,SAASizD,EAAE,iBAAiB,CAAC,GAAGA,EAAE,iBAAiB,KAAK,CAACi1D,GAAGj1D,EAAE,iBAAiB,MAAM,EAAE,MAAMjzD,EAAEizD,EAAE,iBAAiB,KAAK,OAAOk1D,EAAE,EAAEnoH,EAAE,SAAS4nG,EAAE,OAAO,YAAY5nG,EAAE,CAAC,EAAE,CAAC,GAAGizD,EAAE,iBAAiB,cAAc,CAACi1D,GAAGj1D,EAAE,iBAAiB,eAAe,EAAE,MAAMjzD,EAAEizD,EAAE,iBAAiB,cAAc,OAAOk1D,EAAE,EAAEnoH,EAAE,SAAS4nG,EAAE,OAAO,eAAe5nG,EAAE,CAAC,EAAE,CAAC,CAACizD,EAAE,QAAQA,EAAE,OAAO,kBAAkBk1D,GAAGl1D,EAAE,OAAO,iBAAiB,IAAI20C,EAAE,OAAO,WAAW,WAAW30C,EAAE,OAAO,iBAAiB,GAAGA,EAAE,QAAQA,EAAE,OAAO,eAAek1D,GAAGl1D,EAAE,OAAO,aAAa,IAAI20C,EAAE,OAAO,WAAW,WAAW30C,EAAE,OAAO,aAAa,GAAGA,EAAE,QAAQA,EAAE,OAAO,oBAAoBk1D,GAAGl1D,EAAE,OAAO,kBAAkB,IAAI20C,EAAE,OAAO,MAAM,WAAW30C,EAAE,OAAO,kBAAkB,GAAGA,EAAE,QAAQA,EAAE,OAAO,oBAAoBk1D,GAAGl1D,EAAE,OAAO,kBAAkB,IAAI20C,EAAE,OAAO,MAAM,WAAW30C,EAAE,OAAO,kBAAkB,GAAGA,EAAE,OAAOA,EAAE,MAAM,SAASi1D,GAAGj1D,EAAE,MAAM,QAAQ,EAAE20C,EAAE,OAAO,oBAAoB30C,EAAE,MAAM,OAAO,IAAK,SAASjzD,EAAE,CAAC,OAAOA,EAAE,QAAQ+nH,GAAG,EAAE,CAAC,CAAG,GAAEjxB,EAAE,SAAQ,EAAG8Q,EAAE,cAAa,EAAGoQ,GAAGpQ,CAAC,EAAEA,EAAE,cAAa,EAAG0b,GAAE3L,GAAG/P,EAAE0b,EAAC,EAAE1L,GAAGhQ,CAAC,EAAEwQ,GAAGxQ,CAAC,EAAEA,EAAE,UAAU,IAAI30C,CAAC,CAACqwC,IAAIF,GAAG,QAAQ,oBAAoB,KAAK,IAAI,CAAC,CAAC,CAACQ,GAAG,IAAI,MAAM0kB,EAAE,EAAE1kB,GAAG,IAAI,OAAO0kB,EAAE,EAAE1kB,GAAG,IAAI,QAAQ0kB,EAAE,EAAE1kB,GAAG,IAAI,MAAM,cAAckjB,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,QAAQ,CAACxjB,IAAIF,GAAG,KAAK,oBAAoB,KAAK,IAAI,EAAE,IAAI,EAAE,EAAErkG,EAAE,KAAK,UAAUwG,EAAE,KAAK,iBAAiB9D,EAAE,KAAK,eAAehC,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAEV,EAAE,OAAO,EAAEA,EAAE,MAAM,EAAE,KAAK,SAAS,UAAU,CAAC,EAAEA,EAAE,MAAM,EAAE,CAAC,EAAE,KAAI,EAAG,IAAI,EAAE2F,EAAEwX,EAAExc,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,GAAG,EAAE,GAAGiF,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE5E,EAAE,SAAS,EAAE,CAAC,CAAC,EAAES,EAAET,EAAE,EAAE7L,EAAE6K,EAAE,QAAQwC,EAAExC,EAAE,UAAUwC,EAAE,OAAOxB,CAAC,EAAE,IAAIyB,EAAE,EAAEwzF,EAAE,EAAE2S,EAAE,EAAE,KAAK,SAAS,iBAAkB,SAAS5oG,EAAE,EAAE,SAASA,EAAEC,EAAE4oG,EAAE,CAAC,QAAQ9Q,EAAE/3F,EAAE+3F,EAAE93F,EAAE,EAAE83F,EAAE,CAAC,IAAIzkC,EAAE,EAAEs1C,EAAE,EAAEpU,EAAEqU,EAAE9Q,CAAC,EAAE,GAAGvD,GAAE,GAAGlhC,EAAE7xD,GAAG,EAAEf,IAAI,EAAE,IAAI,aAAa,EAAEM,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,WAAWsyD,EAAE7xD,GAAG,EAAQ,GAAG6xD,EAAE7xD,GAAGA,EAAE,EAAE,CAAC,IAAI,EAAE+yF,EAAE,OAAO,MAAM,KAAK,EAAEsU,GAAE,IAAI,aAAa,CAAC,EAAE,GAAGA,GAAE,CAAC,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC,EAAEA,GAAE,CAAC,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC,EAAEA,GAAE,CAAC,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,KAAKA,EAAC,EAAEpmG,EAAE,MAAM,GAAGuzF,GAAG,CAAC,KAAK,CAAC,GAAG,EAAEzB,EAAE,OAAO,GAAG,CAAC,EAAE,KAAM,EAAC,GAAU,IAAP,KAAS,SAAS,IAAItgC,EAAE,GAAG,WAAWsgC,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE7gC,EAAE,GAAG,WAAW6gC,EAAE,OAAO5uF,EAAE,CAAC,CAAC,EAAE+iG,GAAE,GAAG,WAAWnU,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG9zF,EAAE,CAAC,IAAImxG,GAAE,EAAE,EAAE,GAAG,EAAEA,GAAE,CAAC,EAAE39C,EAAE,EAAE29C,GAAE,CAAC,EAAEl+C,EAAE,EAAEk+C,GAAE,CAAC,EAAElJ,GAAE,GAAG,EAAEr1C,EAAE7xD,EAAE,QAAQ,CAACkE,EAAE6uF,EAAE,OAAO,EAAE,CAAC,EAAE,KAAI,EAAGr3E,EAAE,SAASq3E,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE7zF,EAAE,SAAS6zF,EAAE,OAAO,GAAG,CAAC,CAAC,EAAEhyF,EAAE,WAAU,EAAGA,EAAE,WAAWC,CAAC,EAAEtN,EAAE,IAAI,CAAC,EAAEqN,EAAE,EAAEC,CAAC,EAAEyxD,EAAE1xD,EAAE,EAAEC,CAAC,EAAEkxD,EAAEnxD,EAAE,EAAEC,CAAC,EAAEkmG,GAAEnmG,EAAE,OAAOC,CAAC,EAAE9B,EAAE6F,EAAE,QAAQyvF,EAAE,GAAG,GAAGtwF,EAAEwX,EAAE,GAAG,GAAG,EAAE1a,GAAG,CAAC,EAAC,CAAC,GAAE,EAAEzC,EAAE,OAAOA,CAAC,CAAC,CAAG,EAACwG,EAAE,SAAU,EAACxG,EAAE,cAAe,EAACg5G,GAAGh5G,CAAC,EAAEi5G,GAAGj5G,CAAC,EAAEA,EAAE,cAAe,EAAC64G,GAAG74G,CAAC,EAAEukG,IAAIF,GAAG,QAAQ,oBAAoB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,IAAImlB,GAAG,CAAC,cAAc,eAAe,WAAW,aAAa,cAAc,QAAQ,iBAAiB,cAAc,sBAAsB,aAAa,QAAQ,QAAQ,kBAAkB,kBAAkB,aAAa,YAAY,WAAW,WAAW,YAAY,YAAY,YAAY,iBAAiB,gBAAgB,EAAE,OAAO,CAAC,aAAa,aAAa,aAAa,cAAc,gBAAgB,cAAc,cAAc,aAAa,aAAa,gBAAgB,gBAAgB,cAAc,oBAAoB,gBAAgB,eAAe,eAAe,CAAC,EAAE,SAASjuB,GAAG,EAAE,EAAEv7F,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,YAAYA,GAAG,EAAE,EAAE,MAAM,CAAC,SAASypH,GAAG,EAAE,CAAC,OAAOluB,GAAG,SAAS,CAAC,CAAC,CAAC,SAAShE,GAAG,EAAE,CAAC,OAAOgE,GAAG,UAAU,CAAC,CAAC,CAAC,SAASmuB,GAAG,EAAE,CAAC,OAAOnuB,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC,SAASR,GAAG,EAAE,EAAE,CAAC,IAAI/6F,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,WAAWA,CAAC,GAAG,QAAQwG,EAAE,EAAE9D,EAAE,EAAE8D,EAAExG,EAAE,EAAEwG,EAAE9D,GAAG,EAAE,EAAE8D,CAAC,EAAE,EAAE9D,CAAC,GAAG,EAAE,EAAEA,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,SAASinH,GAAG,EAAE,EAAE,CAAC,IAAI3pH,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,WAAWA,CAAC,GAAG,QAAQwG,EAAE,EAAE9D,EAAE,EAAE8D,EAAExG,EAAE,EAAEwG,EAAE9D,GAAG,EAAE,EAAE8D,CAAC,EAAE,EAAE9D,CAAC,GAAG,GAAG,EAAEA,EAAE,CAAC,GAAG,GAAG,EAAEA,EAAE,CAAC,GAAG,EAAE,EAAEA,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,SAASknH,GAAG,EAAE,EAAE5pH,EAAE,CAAC,IAAIwG,EAAE,EAAE,OAAO9D,EAAE,EAAE,EAAE1C,IAAIA,EAAE,IAAI,aAAawG,CAAC,GAAG,QAAQ9F,EAAE,EAAEA,EAAE8F,EAAE,EAAE9F,EAAEV,EAAEU,CAAC,EAAE,EAAEA,CAAC,EAAEgC,EAAE,OAAO1C,CAAC,CAAC,SAAS6pH,GAAG,EAAE,EAAE,CAAC,IAAI7pH,EAAEwG,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI9D,EAAE,EAAE,IAAI1C,EAAE,EAAEwG,EAAE,EAAE,OAAOxG,EAAEwG,EAAExG,GAAG,EAAE0C,GAAG,EAAE1C,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY0C,CAAC,CAAC,CAAC,IAAIhC,EAAE,EAAE,IAAIV,EAAE,EAAEwG,EAAE,EAAE,OAAOxG,EAAEwG,EAAExG,GAAG,EAAE,QAAQ,EAAE,EAAEA,CAAC,EAAE,EAAE,EAAEA,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEU,CAAC,EAAE,EAAE,EAAEA,EAAE,OAAO,CAAC,CAAC,SAASopH,GAAG,EAAE,EAAE,CAAC,IAAI9pH,EAAE,EAAE,OAAO,IAAI,EAAE,IAAI,EAAE,YAAYA,CAAC,GAAGA,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,QAAQwG,EAAE,EAAEA,EAAExG,EAAE,EAAEwG,EAAE,EAAEA,CAAC,EAAE,EAAEA,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,SAASujH,GAAG,EAAE,EAAE,CAAC,IAAI/pH,EAAEwG,EAAE9D,EAAE,aAAa,UAAU,IAAI,MAAMhC,EAAE,CAACgC,EAAE,EAAE,EAAE,EAAE,OAAO,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,IAAI1C,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,EAAEA,CAAC,EAAE0C,GAAG,EAAE1C,CAAC,EAAEU,GAAG,EAAE,EAAE,EAAE,IAAI,WAAW,CAAC,CAAC,CAAC,IAAIV,EAAE,EAAEwG,EAAE,EAAExG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAEA,CAAC,IAAI0C,GAAG,EAAE1C,CAAC,IAAIU,GAAG,GAAG,EAAEV,CAAC,EAAE,EAAEA,EAAE,GAAG,EAAEA,CAAC,EAAE,EAAEA,EAAE,EAAEwG,CAAC,EAAE,EAAE,EAAEA,CAAC,CAAC,OAAO,CAAC,CAAC,SAASwjH,GAAG,EAAE,EAAEhqH,EAAE,CAAC,OAAO4pH,GAAGG,GAAG,EAAEL,GAAG1pH,CAAC,CAAC,EAAE,EAAEA,CAAC,CAAC,CAAC,SAASiqH,GAAG,EAAE,EAAEjqH,EAAE,CAAC,IAAIwG,EAAEujH,GAAG,EAAEL,GAAG1pH,CAAC,CAAC,EAAE,OAAO,SAASiB,EAAE0B,EAAE3C,EAAE,CAAC,OAAO4pH,GAAGE,GAAG7oH,EAAEyoH,GAAG1pH,CAAC,CAAC,EAAE2C,EAAE3C,CAAC,CAAC,EAAEwG,EAAE,EAAE+0F,GAAG,aAAa/0F,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS0jH,GAAG,EAAE,CAAC,IAAI,EAAE,EAAElqH,EAAE,IAAI,SAAS,EAAE,MAAM,EAAE,SAASwG,EAAEvF,EAAE,CAAC,QAAQ0B,EAAE,CAAA,EAAG3C,EAAE,EAAEA,EAAEiB,EAAEjB,IAAK2C,EAAE,EAAG,CAAA,EAAE,IAAI,OAAOA,CAAC,CAAC,SAASD,EAAE1C,EAAE,CAAC,IAAIwG,EAAE,EAAE,SAAS,EAAE,EAAExG,CAAC,EAAE,OAAO,GAAGA,EAAEwG,CAAC,CAAC,SAAS9F,EAAEV,EAAE,CAAC,IAAIwG,EAAE,EAAE,SAAS,EAAE,EAAExG,CAAC,EAAE,GAAGA,EAAE,IAAI0C,EAAE,MAAM,GAAG1C,EAAE0C,EAAE,CAAC,QAAQhC,EAAE,GAAGwvD,EAAE,EAAEA,EAAE1pD,EAAE,OAAO0pD,GAAGxtD,EAAEhC,EAAE,KAAK,OAAO,aAAa,MAAM,KAAK8F,EAAE,SAAS0pD,EAAEA,EAAExtD,CAAC,CAAC,CAAC,EAAE,OAAOhC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,OAAO,aAAa,MAAM,KAAK8F,CAAC,CAAC,CAAC,SAAS,EAAEvF,EAAE,CAAC,QAAQ0B,EAAE,IAAI,MAAM1B,CAAC,EAAEjB,EAAE,EAAEA,EAAEiB,EAAEjB,IAAI2C,EAAE3C,CAAC,EAAE,EAAG,EAAC,OAAO2C,CAAC,CAAC,SAAS,GAAG,CAAC,IAAInB,EAAEE,EAAEzB,EAAE,EAAE,CAAC,EAAE,GAAO,MAAIA,GAAG,OAAO,IAAIA,EAAE,IAAS,IAAIA,IAAV,IAAa,OAAO,IAAIuG,EAAE9E,EAAE,GAAGzB,CAAC,EAAE,IAAS,IAAIA,IAAV,IAAa,OAAO,IAAI,EAAEyB,EAAE,GAAGzB,CAAC,EAAE,IAAS,IAAIA,IAAV,IAAa,OAAO,IAAIS,EAAEgB,EAAE,GAAGzB,CAAC,EAAE,IAAS,IAAIA,IAAV,IAAa,OAAOuB,EAAExB,EAAE,QAAQ,CAAC,EAAE,IAAIwB,EAAE,OAAOvB,EAAC,CAAE,IAAK,KAAI,OAAO,IAAI,KAAK,IAAK,KAAI,OAAO,IAAI,GAAG,IAAK,KAAI,OAAO,IAAI,GAAG,IAAK,KAAI,OAAOyB,EAAE1B,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE0C,EAAEhB,CAAC,EAAE,IAAK,KAAI,OAAOA,EAAE1B,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE0C,EAAEhB,CAAC,EAAE,IAAK,KAAI,OAAOA,EAAE1B,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE0C,EAAEhB,CAAC,EAAE,IAAK,KAAI,OAAOF,EAAExB,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,EAAEwB,EAAE,IAAK,KAAI,OAAOA,EAAExB,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,EAAEwB,EAAE,IAAK,KAAI,OAAOA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAEA,EAAE,IAAK,KAAI,OAAOA,EAAExB,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,EAAEwB,EAAE,IAAK,KAAI,OAAOA,EAAExB,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,EAAEwB,EAAE,IAAK,KAAI,OAAOA,EAAExB,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAEwB,EAAE,IAAK,KAAI,OAAOA,EAAExB,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,EAAEwB,EAAE,IAAK,KAAI,OAAOA,EAAExB,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,EAAEwB,EAAE,IAAK,KAAI,OAAOE,EAAE1B,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,EAAEU,EAAEgB,CAAC,EAAE,IAAK,KAAI,OAAOA,EAAE1B,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,EAAEU,EAAEgB,CAAC,EAAE,IAAK,KAAI,OAAOA,EAAE1B,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,EAAEU,EAAEgB,CAAC,EAAE,IAAK,KAAI,OAAOA,EAAE1B,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE0B,CAAC,EAAE,IAAK,KAAI,OAAOA,EAAE1B,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE0B,CAAC,EAAE,IAAK,KAAI,OAAOA,EAAE1B,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,EAAEwG,EAAE9E,CAAC,EAAE,IAAK,KAAI,OAAOA,EAAE1B,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,EAAEwG,EAAE9E,CAAC,CAAC,CAAC,MAAM,IAAI,MAAM,kBAAkBzB,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,SAASkqH,GAAG,EAAE,EAAEnqH,EAAEwG,EAAE,CAAC,OAAO,EAAG,CAAA,IAAK,GAAE,OAAO,SAASvF,EAAE0B,EAAE,CAAC,IAAI3C,EAAEiB,EAAE,OAAO0B,IAAIA,EAAE,IAAI,aAAa3C,EAAE,CAAC,GAAG,QAAQwG,EAAEijH,GAAG9mH,CAAC,EAAED,EAAE+mH,GAAGxoH,CAAC,EAAEP,EAAE,EAAEwvD,EAAE,EAAE1uD,EAAExB,EAAE,EAAEU,EAAEc,EAAE,EAAEd,EAAEwvD,GAAG,EAAE1pD,EAAE,WAAW0pD,EAAExtD,EAAE,WAAWwtD,CAAC,EAAE,EAAE,EAAE,OAAOvtD,CAAC,EAAE,CAAC,EAAE,IAAK,GAAE,OAAO40F,GAAG,CAAC,EAAE,IAAK,GAAE,OAAOwD,GAAG,CAAC,EAAE,IAAK,GAAE,OAAO4uB,GAAG,CAAC,EAAE,IAAK,GAAE,OAAOpuB,GAAG,WAAW,CAAC,EAAE,IAAK,GAAE,OAAOsuB,GAAGF,GAAG,CAAC,EAAE,IAAI,WAAW3pH,CAAC,CAAC,EAAE,IAAK,GAAE,OAAO6pH,GAAGF,GAAG,CAAC,CAAC,EAAE,IAAK,GAAE,OAAOG,GAAGD,GAAGF,GAAG,CAAC,CAAC,EAAEjnH,CAAC,EAAE,IAAK,GAAE,OAAO,SAASzB,EAAE0B,EAAE3C,EAAE,CAAC,OAAO4pH,GAAGC,GAAG5oH,EAAEyoH,GAAG1pH,CAAC,CAAC,EAAE2C,EAAE3C,CAAC,CAAC,EAAE2pH,GAAG,CAAC,EAAEA,GAAGnjH,CAAC,EAAE,CAAC,CAAC,EAAE,IAAK,IAAG,OAAOyjH,GAAGlvB,GAAG,CAAC,EAAE4uB,GAAGnjH,CAAC,EAAE,CAAC,CAAC,EAAE,IAAK,IAAG,OAAOojH,GAAG7uB,GAAG,CAAC,EAAE4uB,GAAGnjH,CAAC,EAAE,CAAC,CAAC,EAAE,IAAK,IAAG,OAAOwjH,GAAGjvB,GAAG,CAAC,EAAE4uB,GAAGnjH,CAAC,EAAE,CAAC,CAAC,EAAE,IAAK,IAAG,OAAOwjH,GAAGzyB,GAAG,CAAC,EAAEoyB,GAAGnjH,CAAC,EAAE,CAAC,CAAC,EAAE,IAAK,IAAG,OAAOujH,GAAGhvB,GAAG,CAAC,CAAC,EAAE,IAAK,IAAG,OAAOgvB,GAAGxyB,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI70F,CAAC,CAAC,SAAS0nH,GAAG,EAAE,EAAE,CAAC,IAAIpqH,GAAG,EAAE,GAAG,IAAI,aAAawG,EAAE,CAAE,EAAC,OAAOgjH,GAAG,QAAS,SAAS7mH,EAAE,CAAC,IAAI,EAAEjC,EAAEwvD,EAAE1uD,EAAEE,EAAEzB,EAAE,CAAC,CAACD,GAAQA,EAAE,QAAQ2C,CAAC,IAAhB,GAAkBmD,EAAE,EAAEnD,CAAC,EAAE1C,GAAY6F,IAAT,SAAaA,aAAa,WAAWU,EAAE7D,CAAC,EAAEwnH,GAAG,MAAM,MAAMzpH,EAAE+oH,GAAG,EAAE3jH,CAAC,EAAEoqD,EAAExvD,EAAE,SAAS,CAAC,EAAEc,EAAEd,EAAE,SAAS,CAAC,EAAEgB,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAACwuD,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE1uD,EAAEE,CAAC,EAAG,EAAC8E,EAAE7D,CAAC,EAAEmD,EAAE,CAAG,EAACU,CAAC,CAAC,MAAM6jH,GAAG,CAAC,EAAE,IAAkB,EAAE,IAAkB,EAAE,IAAkB,EAAE,IAAkB,EAAE,IAAkB,EAAE,GAAkB,EAAE,IAAkB,EAAE,IAAkB,KAAK,GAAgB,EAAExlB,GAAG,IAAI,OAAO,cAAckjB,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAEvhH,EAAE9D,EAAEhC,EAAE6jG,IAAIF,GAAG,KAAK,qBAAqB,KAAK,IAAI,EAAE,MAAMn0C,EAAE,KAAK,UAAU1uD,EAAE4oH,GAAGF,GAAG,KAAK,SAAS,IAAI,CAAC,EAAE,IAAIxoH,EAAEzB,EAAE6F,EAAEH,EAAE,EAAEhF,EAAE,GAAG,CAAC,iBAAiB,cAAc,aAAa,QAAQ,QAAQ,qBAAqB,EAAE,QAAS,SAASM,EAAE,CAAUO,EAAEP,CAAC,IAAZ,SAAgBivD,EAAE,OAAOjvD,CAAC,EAAEO,EAAEP,CAAC,EAAE,GAAIivD,EAAE,GAAG1uD,EAAE,YAAY0uD,EAAE,MAAM1uD,EAAE,MAAM0uD,EAAE,UAAU,SAAS,eAAe,EAAE,MAAM,EAAE,KAAK,gBAAgB,KAAK,aAAa,CAAC,IAAI,EAAE,EAAEvqD,EAAEnE,EAAE,eAAe,CAAC,EAAEsE,EAAE,EAAE,EAAE,EAAE,EAAEH,EAAE,EAAE,EAAE,EAAE,EAAEG,GAAGtE,EAAE,eAAe,CAAC,EAAE,IAAIvB,EAAE,EAAE,EAAE,EAAE,EAAE6F,EAAE,EAAE,EAAE,EAAE,EAAEpF,EAAEc,EAAE,UAAUA,EAAE,cAAc,CAAC,CAAC,EAAEvB,GAAGS,EAAE,aAAa,OAAOgB,EAAEF,EAAE,SAASb,EAAE,CAACgF,CAAC,CAAC,MAAMjE,EAAEF,EAAE,SAASvB,EAAEuB,EAAE,SAASsE,EAAEtE,EAAE,UAAUmE,EAAEnE,EAAE,UAAU,EAAEA,EAAE,UAAUb,EAAEa,EAAE,eAAe,GAAGE,GAAGoE,EAAE,KAAK,aAAa,IAAI,EAAE,EAAE,EAAEtE,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,MAAMmB,EAAE,IAAI,aAAa,EAAE1C,CAAC,EAAED,GAAEC,EAAE,EAAE,IAAIuG,EAAE,EAAEA,EAAEvG,EAAE,EAAEuG,EAAE,CAAC,MAAMvF,GAAE,EAAEuF,EAAE9D,EAAE8D,EAAExG,GAAE2C,EAAE1B,EAAC,EAAEO,EAAE,WAAWkB,CAAC,EAAEC,EAAE1B,GAAE,CAAC,EAAEO,EAAE,WAAWkB,CAAC,EAAEC,EAAE1B,GAAE,CAAC,EAAEO,EAAE,WAAWkB,CAAC,CAAC,CAACwtD,EAAE,OAAO,KAAKvtD,CAAC,CAAC,CAAC,MAAMkJ,EAAE,IAAI,YAAYnK,CAAC,EAAEkE,EAAE,IAAI,YAAYlE,CAAC,EAAEmE,EAAE,IAAI,WAAWnE,CAAC,EAAEV,EAAE,IAAI,YAAYf,CAAC,EAAEwB,EAAE,IAAI,UAAUxB,CAAC,EAAE,EAAE,IAAI,YAAY6F,CAAC,EAAE,EAAE,IAAI,YAAYA,CAAC,EAAErD,EAAE,IAAI,YAAYqD,CAAC,EAAEmwF,EAAE,IAAI,YAAYtwF,CAAC,EAAEijG,EAAE,IAAI,YAAYjjG,CAAC,EAAEkjG,EAAE,IAAI,YAAYljG,CAAC,EAAEoyF,EAAE,IAAI,YAAY,CAAC,EAAEzkC,EAAE,IAAI,YAAY,CAAC,EAAE,IAAIkhC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM7xF,EAAEhC,EAAE,CAAC,EAAE,IAAIo3F,EAAE,CAAC,EAAEvD,EAAElhC,EAAE,CAAC,EAAE3wD,EAAE6D,EAAE,EAAEA,EAAE7D,EAAE,EAAE6D,EAAEyvF,EAAEzvF,EAAEguF,CAAC,EAAE,EAAEA,GAAG7xF,CAAC,CAAC,MAAMunB,EAAE1oB,EAAE,eAAe,IAAIsnG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAEnjG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,MAAMhD,EAAEunB,EAAE,CAAC,EAAE,IAAI0+E,EAAE,CAAC,EAAEE,EAAED,EAAE,CAAC,EAAElmG,EAAE6D,EAAE,EAAEA,EAAE7D,EAAE,EAAE6D,EAAE,EAAEA,EAAEsiG,CAAC,EAAE,EAAEA,GAAGnmG,CAAC,CAAC,IAAIuxD,EAAE,EAAEP,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE7tD,EAAE,EAAE,EAAE,EAAE,EAAE,CAACpF,EAAEc,EAAE,UAAUA,EAAE,cAAc,CAAC,CAAC,EAAE,MAAMmB,EAAEjC,EAAE,aAAa,OAAOV,GAAEU,EAAE,iBAAiBwvD,GAAExvD,EAAE,aAAagB,EAAEhB,EAAE,cAAc,IAAI8F,EAAE,EAAE9D,EAAEhB,EAAE,OAAO8E,EAAE9D,EAAE,EAAE8D,EAAEqF,EAAE8nD,CAAC,EAAEO,EAAEhE,GAAE,EAAE1pD,CAAC,EAAEZ,EAAE+tD,CAAC,EAAEO,EAAEhE,GAAE,EAAE1pD,EAAE,CAAC,EAAEX,EAAE8tD,CAAC,EAAEjyD,EAAE8E,CAAC,EAAEmtD,GAAG,EAAE,IAAI,EAAE,CAAC,EAAEO,EAAEzxD,EAAE,CAAC,EAAEE,EAAE6D,EAAE,EAAEA,EAAE7D,EAAE,EAAE6D,EAAExF,EAAEkzD,CAAC,EAAE,EAAEzyD,EAAEyyD,CAAC,EAAEl0D,GAAEwG,CAAC,EAAE0tD,GAAG,CAAC,CAAC,MAAMy0C,EAAEnnG,EAAE,aAAa,GAAGmnG,EAAE,IAAInnG,EAAE,eAAeqE,EAAE,IAAIrE,EAAE,cAAcmyD,CAAC,EAAE,EAAE,EAAE,EAAEg1C,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,MAAMhmG,EAAEgmG,EAAE,CAAC,EAAE3oG,GAAE2oG,EAAE,EAAE,CAAC,EAAEhmG,EAAE1C,GAAGD,GAAEC,IAAI4L,EAAE8nD,CAAC,EAAEhxD,EAAEiD,EAAE+tD,CAAC,EAAE3zD,GAAE2zD,GAAG,EAAE,CAACzD,EAAE,UAAU,OAAOrqD,EAAE,OAAOqqD,EAAE,UAAU,MAAMyD,EAAEzD,EAAE,UAAU,WAAWrkD,EAAEqkD,EAAE,UAAU,WAAWtqD,EAAEsqD,EAAE,UAAU,UAAUrqD,EAAEqqD,EAAE,UAAU,OAAOjwD,EAAEiwD,EAAE,UAAU,MAAMjwD,EAAEiwD,EAAE,UAAU,aAAalvD,EAAEkvD,EAAE,UAAU,WAAW,IAAI,YAAYjwD,CAAC,EAAEiwD,EAAE,UAAU,EAAE1uD,EAAE,WAAW,SAAS,EAAEvB,CAAC,EAAEiwD,EAAE,UAAU,EAAE1uD,EAAE,WAAW,SAAS,EAAEvB,CAAC,EAAEiwD,EAAE,UAAU,EAAE1uD,EAAE,WAAW,SAAS,EAAEvB,CAAC,EAAEiwD,EAAE,UAAU,OAAO1uD,EAAE,WAAW,SAAS,EAAEvB,CAAC,EAAEiwD,EAAE,UAAU,QAAQ1uD,EAAE,YAAY,SAAS,EAAEvB,CAAC,EAAEiwD,EAAE,UAAU,OAAO1uD,EAAE,WAAW,SAAS,EAAEvB,CAAC,EAAEiwD,EAAE,UAAU,UAAU1uD,EAAE,cAAc,SAAS,EAAEvB,CAAC,EAAEiwD,EAAE,UAAU,aAAazuD,EAAEyuD,EAAE,aAAa,OAAOpqD,EAAEoqD,EAAE,aAAa,MAAMpqD,EAAEoqD,EAAE,aAAa,WAAW,EAAEA,EAAE,aAAa,cAAc1uD,EAAE,cAAc0uD,EAAE,aAAa,WAAW,EAAEA,EAAE,aAAa,UAAUztD,EAAEytD,EAAE,aAAa,MAAM1uD,EAAE,YAAY,SAAS,EAAEsE,CAAC,EAAEoqD,EAAE,aAAa,OAAO1uD,EAAE,cAAc,SAAS,EAAEsE,CAAC,EAAEoqD,EAAE,aAAa,QAAQ1uD,EAAE,YAAY,SAAS,EAAEsE,CAAC,EAAEoqD,EAAE,WAAW,OAAOvqD,EAAEuqD,EAAE,WAAW,MAAMvqD,EAAEuqD,EAAE,WAAW,YAAY,IAAI,YAAYvqD,CAAC,EAAEuqD,EAAE,WAAW,WAAW+lC,EAAE/lC,EAAE,WAAW,cAAc04C,EAAE14C,EAAE,WAAW,aAAa24C,EAAE34C,EAAE,WAAW,UAAU1uD,EAAE,cAAc,SAAS,EAAE,EAAEmE,CAAC,EAAEuqD,EAAE,WAAW,QAAQ1uD,EAAE,YAAY,SAAS,EAAE,EAAEmE,CAAC,EAAEuqD,EAAE,WAAW,OAAO,EAAEA,EAAE,WAAW,MAAM,EAAEA,EAAE,WAAW,YAAY6nC,EAAE7nC,EAAE,WAAW,WAAWoD,EAAE,IAAIu+C,GAAE,CAAA,EAAG,IAAI,EAAE,EAAE,EAAErwG,EAAE,UAAU,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,MAAMmB,EAAEnB,EAAE,UAAU,CAAC,EAAExB,GAAE,CAAE,EAAC,IAAIwG,EAAE,EAAE9D,EAAEC,EAAE,aAAa,OAAO6D,EAAE9D,EAAE,EAAE8D,EAAE,CAAC,MAAMvF,EAAE0B,EAAE,YAAY6D,CAAC,EAAE,YAAW,EAAG9D,GAAEC,EAAE,aAAa6D,CAAC,EAAExG,GAAE,KAAKkwD,EAAE,QAAQ,IAAIxtD,GAAEzB,CAAC,CAAC,CAAC,CAAC,MAAMP,GAAEiC,EAAE,aAAa,YAAa,EAACjB,EAAEgtG,GAAG,SAAShuG,EAAC,EAAET,EAAE0C,EAAE,cAAc,OAAOmD,GAAE,IAAI,MAAM7F,CAAC,EAAE0F,GAAE,IAAI,MAAM1F,CAAC,EAAE,IAAIuG,EAAE,EAAEA,EAAEvG,EAAE,EAAEuG,EAAEV,GAAEU,CAAC,EAAE7D,EAAE,aAAa,EAAE6D,CAAC,EAAEb,GAAEa,CAAC,EAAE7D,EAAE,aAAa,EAAE6D,EAAE,CAAC,EAAE,MAAM2W,GAAE,CAAC,aAAarX,GAAE,aAAaH,GAAE,WAAWhD,EAAE,aAAa,EAAEkvG,GAAE,CAAC,EAAE3hD,EAAE,WAAW,IAAIvtD,EAAE,UAAU3C,GAAE0B,EAAEhB,GAAEyc,EAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAErX,EAAE,EAAE,EAAE,EAAE,EAAEoqD,EAAE,aAAa,cAAc,CAAC,EAAE2hD,GAAE3hD,EAAE,aAAa,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAEA,EAAE,UAAU,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,MAAMvtD,EAAEutD,EAAE,UAAU,aAAa,CAAC,EAAElwD,GAAEkwD,EAAE,WAAW,KAAKA,EAAE,aAAa,cAAcvtD,CAAC,CAAC,EAAE6D,GAAE0pD,EAAE,aAAa,WAAWvtD,CAAC,EAAEutD,EAAE,UAAU,WAAW,CAAC,EAAElwD,GAAE,eAAe,EAAEwG,EAAC,CAAC,CAAC,GAAGhF,EAAE,cAAc,CAAC,MAAMxB,EAAEwB,EAAE,cAAc,OAAO,IAAI,EAAE,EAAE,EAAE0uD,EAAE,aAAa,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,MAAMvtD,GAAE0nH,GAAGn6D,EAAE,aAAa,OAAO,EAAElwD,CAAC,CAAC,EAAW2C,KAAT,SAAautD,EAAE,aAAa,OAAO,CAAC,EAAEvtD,GAAE,CAAC,CAAC,GAAGnB,EAAE,YAAYA,EAAE,WAAW,QAAS,SAASP,EAAE0B,GAAE,CAACutD,EAAE,WAAWvtD,EAAC,EAAE,IAAIqlH,GAAG93D,EAAEvtD,GAAE1B,EAAE,YAAYA,EAAE,KAAKA,EAAE,cAAc,CAAC,CAAG,EAACO,EAAE,iBAAiBA,EAAE,gBAAgB,QAAS,SAASP,EAAE0B,GAAE,CAAC,MAAM6D,GAAE7D,GAAE,EAAED,EAAE,IAAI+1G,GAAG,GAAGjyG,EAAC,EAAE0pD,EAAE,WAAW,KAAK1pD,EAAC,EAAE9D,EAAE,IAAIhC,EAAE,CAAE,EAACO,EAAE,cAAc,QAAS,SAASA,GAAE,CAAC,MAAM0B,GAAG,IAAI3C,KAAG,UAAUiB,GAAE,MAAM,EAAE,UAAW,EAACuF,GAAEvF,GAAE,eAAe,IAAK,SAASA,GAAE,CAAC,IAAI0B,EAAE,GAAG,QAAQ3C,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,CAAC,MAAMwG,EAAEhF,EAAE,cAAc,EAAEP,GAAEjB,CAAC,EAAE,GAAG,CAACwG,EAAE,MAAM7D,GAAG,OAAO,aAAa6D,CAAC,CAAC,CAAC,OAAO7D,CAAC,CAAG,EAACutD,EAAExvD,EAAE8F,GAAE,UAAU,EAAE0pD,EAAEA,EAAE,WAAW,KAAKvtD,EAAC,EAAEjC,EAAE8F,GAAE,SAAQ,CAAE,EAAE9D,EAAE,QAAQ,CAACC,EAAC,EAAE6D,EAAC,CAAC,CAAG,CAAA,GAAIhF,EAAE,gBAAgB,CAAC,MAAMP,EAAE,MAAM0B,GAAE,IAAI81G,GAAGx3G,CAAC,EAAEuF,GAAE7D,GAAE,QAAO,EAAGnB,EAAE,gBAAgB,QAAS,SAASP,EAAE,CAAC,MAAM0B,EAAG,IAAI3C,KAAG,UAAUiB,CAAC,EAAE,UAAS,EAAGuF,GAAE,WAAW,KAAK7D,CAAC,CAAC,GAAI6D,GAAE,WAAW,OAAO,IAAI0pD,EAAE,WAAWjvD,CAAC,EAAE0B,GAAE,CAAC,MAAMmvG,EAAEtwG,EAAE,SAASswG,GAAG,MAAM,QAAQA,CAAC,GAAGA,EAAE,CAAC,EAAE5hD,EAAE,SAAS,IAAIg4D,GAAG,CAAC,EAAEpW,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,MAAMA,EAAE,CAAC,EAAE,KAAKA,EAAE,CAAC,EAAE,MAAMA,EAAE,CAAC,EAAE,WAAWtwG,EAAE,UAAU,CAAC,EAAE0uD,EAAE,SAAS,OAAOipD,GAAGjpD,EAAE,EAAE,EAAEgpD,GAAGhpD,EAAE,EAAE,EAAEA,EAAE,cAAe,EAACA,EAAE,cAAe,EAACmpD,GAAGnpD,CAAC,EAAEq0C,IAAIF,GAAG,QAAQ,qBAAqB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM/J,GAAG,MAAMgwB,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAEzlB,GAAG,IAAI,OAAO,cAAckjB,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,MAAM,CAAC,QAAQ,CAACxjB,IAAIF,GAAG,KAAK,qBAAqB,KAAK,IAAI,EAAE,MAAM,EAAE,KAAK,UAAU,EAAE,KAAK,iBAAiBrkG,EAAE,KAAK,eAAewG,EAAE,KAAK,aAAa9D,EAAE,EAAE,OAAO,IAAIhC,EAAE,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,OAAO,KAAK,MAAM,KAAK,SAAS,KAAK,OAAO,EAAE,CAAC,EAAE,EAAE,SAAS,gBAAgB,EAAE,SAAS,EAAE,IAAI,EAAE,EAAEiF,EAAE,EAAEwX,EAAE,EAAExc,EAAE,GAAG,EAAE,EAAEiF,EAAE,EAAE,MAAM,EAAE,EAAE,aAAY,EAAG5E,EAAE,EAAE,aAAc,EAAC,KAAK,SAAS,iBAAkB,SAASS,EAAE,EAAE,SAASA,EAAEtM,EAAEqN,EAAE,CAAC,QAAQC,EAAEhB,EAAEgB,EAAEtN,EAAE,EAAEsN,EAAE,CAAC,MAAMhB,EAAEe,EAAEC,CAAC,EAAE,KAAI,EAAG,GAAQhB,IAAL,IAAcA,EAAE,CAAC,IAAT,KAAW,GAASA,EAAE,CAAC,IAAT,IAAiCA,IAAtB,qBAAyBmE,EAAE,EAAED,EAAE,EAAE,EAAEhF,GAAqBc,IAAlB,iBAAqBmE,EAAE,EAAEuX,EAAE,EAAE,MAAM3W,IAAI,EAAE,EAAE9F,EAAE,IAAI,aAAa,EAAE,CAAC,EAAEgC,EAAE,KAAKhC,CAAC,EAAEC,EAAE,IAAI,EAAE,MAAMiF,EAAoBnE,IAAlB,gBAAoB,EAAE,UAAcmE,IAAJ,EAAM,CAAC,GAAOD,IAAJ,EAAM,EAAE,MAAMlE,EAAE,EAAE,GAAGA,UAAckE,IAAJ,EAAM,CAAC,MAAM1E,EAAEQ,EAAE,MAAM64F,EAAE,EAAE,EAAE,SAASr5F,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE0E,CAAC,SAAaC,IAAJ,EAAM,CAAC,MAAM3E,EAAEQ,EAAE,MAAM64F,EAAE,EAAE,GAAGt6F,GAAGW,EAAE,EAAE,SAAS,MAAM+B,EAAE,WAAWzB,EAAE,CAAC,CAAC,EAAE0E,EAAE,WAAW1E,EAAE,CAAC,CAAC,EAAEkc,EAAE,WAAWlc,EAAE,CAAC,CAAC,EAAE,GAAGuF,EAAE,CAAC,MAAMvF,EAAE,EAAE,EAAE,GAAGP,EAAEO,EAAE,CAAC,EAAEyB,EAAEhC,EAAEO,EAAE,CAAC,EAAE0E,EAAEjF,EAAEO,EAAE,CAAC,EAAEkc,EAAE,GAAG,EAAE,EAAE,QAAQ,CAAC,MAAMtR,EAAE5K,EAAE,CAAC,EAAE2E,EAAE3E,EAAE,CAAC,EAAE4E,EAAE5E,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,EAAED,EAAEC,EAAE,CAAC,EAAE,SAASA,EAAE,CAAC,CAAC,EAAE,EAAE9L,GAAE8L,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,GAAGuB,EAAEvB,EAAE,CAAC,EAAE,WAAWA,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,WAAY,EAAC,EAAE,WAAW,CAAC,EAAE,EAAE,IAAI2E,EAAEC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAEnD,EAAE,EAAE,EAAE,CAAC,EAAEiD,EAAE,EAAE,EAAE,CAAC,EAAEwX,EAAE,EAAE,OAAO,CAAC,EAAEtR,EAAE,EAAE,cAAc,CAAC,EAAErJ,EAAE,EAAE,QAAQ7B,EAAE,GAAG,GAAGxL,GAAE6L,EAAE,EAAE,EAAE,GAAG,CAAC,SAAa4E,IAAJ,EAAM,CAAoB,GAAhB5F,GAAGW,EAAE,GAAc6F,GAAG7F,EAAE,EAAE,SAAS,MAAMgC,EAAElB,EAAE,MAAM64F,EAAE,EAAE,EAAE,MAAM,SAAS33F,EAAE,CAAC,CAAC,EAAE,EAAEwa,EAAEnc,EAAE,MAAM,SAAS2B,EAAE,CAAC,CAAC,EAAE,EAAEwa,EAAE,MAAMza,EAAE4nH,GAAG3nH,EAAE,CAAC,CAAC,EAAE,EAAE,UAAU,QAAQ,EAAE3B,EAAE0B,CAAC,CAAC,EAAC,CAAC,GAAE,EAAEjB,EAAE,OAAOA,CAAC,CAAC,CAAC,EAAG,EAAE,SAAQ,EAAG,EAAE,cAAa,EAAGu3G,GAAG,CAAC,EAAEE,GAAG,EAAE,EAAE,EAAEC,GAAG,EAAE,EAAE,EAAE,EAAE,cAAa,EAAGM,GAAG,CAAC,EAAEZ,GAAG,CAAC,EAAEtU,IAAIF,GAAG,QAAQ,qBAAqB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAEQ,GAAG,IAAI,QAAQ,cAAc2jB,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,OAAO,CAAC,CAAC,EAAE3jB,GAAG,IAAI,MAAM,cAAc2jB,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,MAAM+B,GAAG,YAAY,MAAMC,WAAWzC,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,QAAQ,CAACxjB,IAAIF,GAAG,KAAK,oBAAoB,KAAK,IAAI,EAAE,MAAMpjG,EAAE,KAAK,UAAU0B,EAAE,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,UAAU,CAAC,EAAE1B,EAAE,GAAG,EAAE,CAAC,EAAE,KAAI,EAAGA,EAAE,MAAM,EAAE,CAAC,EAAE,KAAM,EAAC,MAAMP,EAAEO,EAAE,OAAO,IAAIivD,EAAE1uD,EAAEE,EAAE,GAAG,MAAMzB,EAAEgB,EAAE,QAAQ6E,EAAE7E,EAAE,UAAU6E,EAAE,OAAO,KAAK,MAAM,KAAK,SAAS,KAAK,OAAO,EAAE,CAAC,EAAEA,EAAE,SAAS,eAAe,EAAE,MAAM,EAAE,MAAMH,EAAE1E,EAAE,aAAY,EAAGkc,EAAElc,EAAE,aAAc,EAAC,IAAIN,EAAE,EAAEkL,EAAE,EAAEjG,EAAE,EAAEC,EAAE,EAAE,MAAM7E,EAAE,CAAE,EAAC,IAAIS,EAAEtM,EAAEqN,EAAEC,EAAEwzF,EAAE2S,EAAEC,EAAE9Q,EAAEzkC,EAAEkhC,EAAEtqE,EAAE4+E,EAAE50C,EAAEP,GAAEg1C,EAAE,GAAGkJ,EAAE,CAAE,EAAC5wG,EAAE,UAAU,IAAID,EAAE,IAAI8wG,GAAE,GAAGC,GAAE,GAAGC,EAAE,GAAGC,EAAE,CAAE,EAAChb,GAAE,CAAA,EAAG,MAAMvjC,GAAE,IAAI,IAAI,KAAK,SAAS,iBAAkB,SAAShxD,GAAE,EAAE,SAASA,EAAE2F,GAAEirG,EAAE,CAAC,QAAQC,EAAE7wG,EAAE6wG,EAAElrG,GAAE,EAAEkrG,EAAE,CAAC,MAAM7wG,EAAE4wG,EAAEC,CAAC,EAAE,GAAGzB,IAAGpvG,IAAIuvG,EAAEvvG,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,EAAEu0F,GAAE,SAASgb,EAAE,CAAC,GAAGhb,GAAE,GAAGgb,CAAC,EAAEhb,GAAE,IAAUgb,EAAEA,EAAE,OAAO,CAAC,IAAlB,KAAqBA,EAAE,IAAK,EAAChb,GAAEgb,MAAM,CAAC,GAAYvvG,EAAE,OAAO,EAAE,CAAC,IAArB,OAAuBmJ,EAAE,GAAG,EAAEjG,EAAEC,EAAEC,EAAE,MAAM9E,EAAE,KAAK6wG,CAAC,EAAEA,EAAE,GAAGlJ,EAAE,GAAGmJ,GAAE,WAAejmG,IAAJ,EAAMimG,GAAEpvG,EAAE,QAAQ,QAAQ,EAAE,GAAGovG,GAAEp+C,GAAE,SAASv+D,EAAE,SAASuN,EAAE,OAAO,EAAE,CAAC,CAAC,EAAEF,EAAE,SAASE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAED,EAAE,EAAEwzF,EAAExzF,EAAEtN,EAAEyzG,EAAE3S,EAAE4S,EAAED,EAAEpmG,EAAE,IAAIhB,EAAE,EAAE0uD,EAAE,IAAI,aAAa,EAAE/6D,CAAC,EAAEuL,EAAE,KAAKwvD,CAAC,EAAEtqD,EAAE,IAAIlE,EAAE,cAAcowG,IAAcG,EAAE,CAAC,IAAd,SAAgB98G,EAAE,SAAS88G,EAAE,CAAC,CAAC,EAAE,IAAIzwG,EAAE,EAAE0uD,EAAE,IAAI,aAAa,EAAE/6D,CAAC,EAAEuL,EAAE,KAAKwvD,CAAC,EAAEtqD,EAAE,IAAIlE,EAAE,aAAaowG,IAAMG,EAAE,QAAL,EAAqBA,EAAE,CAAC,IAAZ,OAAwBA,EAAE,CAAC,IAAb,QAAeF,GAAE,GAAWE,EAAE,CAAC,IAAX,QAAeF,GAAE,IAAaE,EAAE,CAAC,IAAZ,SAA0BA,EAAE,CAAC,IAAb,QAAeD,EAAE,GAAWC,EAAE,CAAC,IAAX,QAAeD,EAAE,aAAaD,IAAG,CAACD,IAAGjmG,GAAGpJ,GAAGoJ,EAAEoqF,EAAE,CAAC,GAAG,GAAGrwF,EAAE,EAAE,SAAS,IAAI3E,EAAE,EAAE,GAAG6wG,IAAG,GAAG/Z,EAAE,WAAWka,EAAE,CAAC,CAAC,EAAE3+C,EAAE,WAAW2+C,EAAE,CAAC,CAAC,EAAEzd,EAAE,WAAWyd,EAAE,CAAC,CAAC,EAAEnJ,EAAEmJ,EAAE,CAAC,EAAE/9C,EAAE,SAAS+9C,EAAE,CAAC,CAAC,EAAEv+C,GAAE,IAAIQ,EAAEvzD,CAAC,EAAEupB,EAAE4+E,EAAE50C,EAAE+9C,EAAE,OAAO,EAAE,CAAC,IAAItvG,GAAEsvG,EAAE,MAAM,CAAC,EAAE,KAAMhxG,GAAOA,EAAE,QAAQ,MAAM,IAApB,CAAuB,EAAC0B,KAAI1B,EAAE,SAAS0B,GAAE,UAAU,CAAC,CAAC,EAAE,OAAOo1F,EAAE,WAAWr1F,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE4wD,EAAE,WAAW5wD,EAAE,OAAO,GAAG,EAAE,CAAC,EAAE8xF,EAAE,WAAW9xF,EAAE,OAAO,GAAG,EAAE,CAAC,EAAEomG,EAAEpmG,EAAE,OAAO,GAAG,CAAC,EAAE,KAAM,EAACwnB,EAAE4+E,GAAGnoG,EAAEkF,EAAE,GAAG,GAAG,EAAE,CAAC,MAAM5E,GAAE,EAAEO,EAAE,GAAG0uD,EAAEjvD,GAAE,CAAC,EAAE82F,EAAE7nC,EAAEjvD,GAAE,CAAC,EAAEqyD,EAAEpD,EAAEjvD,GAAE,CAAC,EAAEuzF,EAAEhzF,GAAG,EAAEE,EAAE,QAAQ,CAACoE,EAAE,aAAaA,EAAE,WAAWnF,CAAC,EAAEV,EAAE,IAAIiqB,EAAE4+E,CAAC,EAAEhjG,EAAE,EAAEnF,CAAC,EAAEo3F,EAAEjyF,EAAE,EAAEnF,CAAC,EAAE2yD,EAAExtD,EAAE,EAAEnF,CAAC,EAAE6zF,EAAE1uF,EAAE,OAAOnF,CAAC,EAAEmxG,GAAE59C,EAAEvzD,EAAEmF,EAAE,aAAanF,CAAC,EAAEM,EAAE0B,EAAE,QAAQiD,EAAE,GAAG,GAAG,MAAM,EAAE,EAAE,EAAEjF,GAAG,CAAC,SAASqxG,GAAG,CAACF,IAAGjmG,GAAG+8F,GAAG/8F,EAAEg9F,EAAE,CAAoB,GAAhB,GAAGjjG,EAAE,GAAc,GAAGA,EAAE,EAAE,SAASksG,IAAGnsG,EAAE,MAAM+tD,GAAE,IAAI,SAASu+C,EAAE,CAAC,CAAC,CAAC,EAAE90F,EAAE,MAAMu2C,GAAE,IAAI,SAASu+C,EAAE,CAAC,CAAC,CAAC,EAAEt+C,GAAE,SAASs+C,EAAE,CAAC,CAAC,IAAItsG,EAAE,MAAM,SAASjD,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAEmD,EAAEsX,EAAE,MAAM,SAASza,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAEmD,EAAE8tD,GAAE,SAASjxD,EAAE,OAAO,EAAE,CAAC,CAAC,GAAGzB,EAAE,UAAU,QAAQ0E,EAAEwX,EAAEw2C,EAAC,CAAC,SAAoBjxD,EAAE,OAAO,EAAE,CAAC,IAAvB,SAAyB,CAAC,MAAMzB,EAAE,SAASyB,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,QAAQC,GAAE,EAAE3C,EAAE,GAAG2C,GAAE1B,EAAE,EAAE0B,GAAE3C,GAAG,EAAE,CAAC,MAAMiB,GAAE,SAASyB,EAAE,OAAO1C,EAAE,CAAC,CAAC,EAAE,EAAE6F,EAAElD,GAAE,SAASD,EAAE,OAAO1C,EAAE,EAAE,CAAC,CAAC,EAAE8F,EAAE,aAAa7E,EAAC,EAAE0B,EAAC,CAAC,MAAWD,EAAE,OAAO,CAAC,IAAhB,MAAoBjB,EAAEiB,EAAE,MAAM6nH,EAAE,IAAI5hB,EAAElnG,EAAE,CAAC,EAAEowG,EAAElJ,CAAC,EAAE,CAAA,GAASA,IAAL,IAAQjmG,GAAGmvG,EAAElJ,CAAC,EAAE,KAAKjmG,CAAC,EAAE,EAAEmJ,CAAC,CAAC,CAAC,GAAE,EAAEnJ,GAAE,OAAOA,EAAC,CAAC,CAAC,EAAGC,EAAE,SAAQ,EAAG1B,EAAE,cAAa,EAAGA,EAAE,cAAa,EAAGw4G,GAAGx4G,CAAC,EAAEsjG,IAAIF,GAAG,QAAQ,oBAAoB,KAAK,IAAI,CAAC,CAAC,cAAc,CAACoV,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC5U,GAAG,IAAI,MAAM2lB,EAAE,EAAE3lB,GAAG,IAAI,KAAK2lB,EAAE,EAAE3lB,GAAG,IAAI,MAAM2lB,EAAE,EAAE,SAASC,GAAG,EAAE,EAAEzqH,EAAE,CAAC,OAAO,SAAS,EAAE,OAAO,EAAEA,CAAC,EAAE,KAAM,CAAA,CAAC,CAAC,MAAM0qH,WAAW3C,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,QAAQ,CAAC,QAAQ,CAACxjB,IAAIF,GAAG,KAAK,uBAAuB,KAAK,IAAI,EAAE,MAAMpjG,EAAE,KAAK,UAAU0B,EAAE,KAAK,iBAAiB,EAAE1B,EAAE,QAAQ,EAAEA,EAAE,UAAU,EAAE,SAAS,gBAAgB,EAAE,SAAS,EAAE,EAAE,SAAS,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,CAAE,EAACP,EAAE,GAAGwvD,EAAE,CAAC,QAAQ,SAAS,QAAQ,QAAQ,SAAS,SAAS,QAAQ,QAAQ,SAAS,QAAQ,MAAM,OAAO,QAAQ,SAAS,QAAQ,SAAS,SAAS,QAAQ,QAAQ,OAAO,SAAS,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,WAAW,OAAO,EAAE,IAAI1uD,EAAEE,EAAEzB,EAAE6F,EAAEH,EAAEuqD,EAAE,QAASjvD,GAAG,CAACP,EAAEO,CAAC,EAAE,CAAC,CAAC,EAAG,IAAIkc,EAAExc,EAAEkL,EAAEjG,EAAEC,EAAE7E,EAAE,IAAI,WAAW,CAAC,EAAE,KAAK,SAAS,iBAAkB,SAASC,EAAE,EAAE,SAASA,EAAE0B,EAAE3C,EAAE,CAAC,QAAQyB,EAAER,EAAEQ,EAAEkB,EAAE,EAAElB,EAAE,CAAC,MAAMR,EAAEjB,EAAEyB,CAAC,EAAEkB,EAAE1B,EAAE,OAAO,GAAG0B,GAAK,CAAA1B,EAAE,WAAW,SAAS,GAAQ,GAAGA,EAAE,WAAW,OAAO,EAAE,CAAC,MAAM0B,EAAE1B,EAAE,OAAO,CAAC,EAAE,OAAO2E,EAAE,EAAYjD,IAAV,QAAYkJ,EAAE,EAAelJ,IAAb,WAAekJ,EAAE,EAAgBlJ,IAAd,YAAgBkJ,EAAE,EAAalJ,IAAX,SAAakJ,EAAE,EAAWlJ,IAAT,OAAWkJ,EAAE,EAAoBlJ,IAAlB,gBAAoBkJ,EAAE,EAAsBlJ,IAApB,kBAAsBkJ,EAAE,EAAyBlJ,IAAvB,sBAA0BkD,EAAE,EAAEgG,EAAE,GAA8BlJ,IAA3B,0BAA8BkD,EAAEnF,EAAE,MAAMmL,EAAE,GAAGA,EAAYlJ,IAAV,QAAY,EAAE,MAAM,SAAakJ,IAAJ,EAAM,EAAE,KAAKlJ,CAAC,UAAckJ,IAAJ,EAAM,CAAC,MAAMlJ,EAAE,KAAK,IAAIiD,EAAE,GAAG,EAAE,EAAE,QAAQ5F,GAAE,EAAE4F,EAAEjD,EAAE,EAAE3C,GAAE,EAAE4F,EAAElF,EAAEwvD,EAAEtqD,CAAC,CAAC,EAAE,SAAS3E,EAAE,OAAO,EAAEjB,GAAE,CAAC,EAAE,KAAM,CAAA,EAAEwB,EAAE,IAAI,MAAMd,EAAE,KAAK,EAAEgB,EAAE,IAAI,aAAahB,EAAE,KAAK,EAAET,EAAE,IAAI,aAAaS,EAAE,KAAK,EAAE,EAAE,OAAOA,EAAE,KAAK,EAAE,MAAMV,EAAEU,EAAE,MAAMA,EAAE,MAAMoF,EAAE,IAAI,YAAY9F,CAAC,EAAE2F,EAAE,IAAI,YAAY3F,CAAC,EAAEgB,EAAE,IAAI,WAAWhB,CAAC,EAAEmd,EAAE,IAAI,MAAMzc,EAAE,IAAI,EAAEC,EAAE,IAAI,YAAYD,EAAE,IAAI,CAAC,SAAamL,IAAJ,EAAM,CAAC,MAAMlJ,EAAE,KAAK,IAAIiD,EAAE,GAAGlF,EAAE,KAAK,EAAE,QAAQV,EAAE,EAAE4F,EAAEjD,EAAE,EAAE3C,EAAE,EAAE4F,EAAEpE,EAAEoE,CAAC,EAAE3E,EAAE,OAAO,EAAEjB,EAAE,CAAC,EAAE,MAAM,SAAa6L,IAAJ,EAAM,CAAC,MAAMlJ,EAAE,KAAK,IAAIiD,EAAE,EAAElF,EAAE,KAAK,EAAE,QAAQV,EAAE,EAAE4F,EAAEjD,EAAE,EAAE3C,EAAE,EAAE4F,EAAElE,EAAEkE,CAAC,EAAE,WAAW3E,EAAE,OAAO,GAAGjB,EAAE,EAAE,CAAC,EAAE,OAAO,SAAa6L,IAAJ,GAAY,GAAOA,IAAJ,EAAM,CAAC,MAAMlJ,EAAE,KAAK,IAAIiD,EAAE,GAAGlF,EAAE,IAAI,EAAE,QAAQV,EAAE,EAAE4F,EAAEjD,EAAE,EAAE3C,EAAE,EAAE4F,EAAEuX,EAAEvX,CAAC,EAAE3E,EAAE,OAAO,EAAEjB,EAAE,CAAC,EAAE,KAAM,CAAA,SAAa6L,IAAJ,EAAM,CAAC,MAAMlJ,EAAE,KAAK,IAAIiD,EAAE,GAAGlF,EAAE,IAAI,EAAE,QAAQV,EAAE,EAAE4F,EAAEjD,EAAE,EAAE3C,EAAE,EAAE4F,EAAEjF,EAAEiF,CAAC,EAAE6kH,GAAGxpH,EAAE,EAAEjB,EAAE,CAAC,CAAC,SAAa6L,IAAJ,EAAM,CAAC,MAAMlJ,EAAE,KAAK,IAAIiD,EAAE,GAAG,EAAElF,EAAE,KAAK,EAAE,QAAQV,EAAE,EAAE4F,EAAEjD,EAAE,EAAE3C,EAAE,EAAE4F,EAAE,CAAC,MAAMjD,GAAEiD,EAAE,EAAMjD,KAAJ,IAAQmD,EAAED,CAAC,EAAE4kH,GAAGxpH,EAAE,EAAEjB,EAAE,CAAC,EAAE,GAAO2C,KAAJ,IAAQgD,EAAEE,CAAC,EAAE4kH,GAAGxpH,EAAE,EAAEjB,EAAE,CAAC,EAAE,EAAEgB,EAAE6E,CAAC,EAAE,EAAE,EAAEA,EAAE,CAAC,SAAagG,IAAJ,EAAM,CAAC,MAAMlJ,EAAE,KAAK,IAAIiD,EAAE,GAAG,EAAElF,EAAE,KAAK,EAAE,QAAQV,EAAE,EAAE4F,EAAEjD,EAAE,EAAE3C,EAAE,EAAE4F,EAAE,CAAC,MAAMjD,GAAEiD,EAAE,EAAMjD,KAAJ,IAAQmD,EAAED,CAAC,EAAE4kH,GAAGxpH,EAAE,EAAEjB,EAAE,CAAC,EAAE,GAAO2C,KAAJ,IAAQgD,EAAEE,CAAC,EAAE4kH,GAAGxpH,EAAE,EAAEjB,EAAE,CAAC,EAAE,EAAEgB,EAAE6E,CAAC,EAAE,EAAE,EAAEA,EAAE,CAAC,SAAagG,IAAJ,EAAM,CAAC,MAAMlJ,EAAE,KAAK,IAAIiD,EAAE,EAAElF,EAAE,KAAK,EAAE,QAAQV,EAAE,EAAE4F,EAAEjD,EAAE,EAAE3C,EAAE,EAAE4F,EAAE3F,EAAE2F,CAAC,EAAE,WAAW3E,EAAE,OAAO,GAAGjB,EAAE,EAAE,CAAC,CAAC,GAAC,CAAC,GAAE,EAAEiB,EAAE,OAAOA,CAAC,CAAC,CAAG,EAACA,EAAE,MAAM,EAAE,KAAK,GAAG,EAAE,MAAMQ,EAAEf,EAAE,MAAM,IAAIvL,EAAE,EAAEqN,EAAE2a,EAAE,CAAC,EAAE1a,EAAE,EAAE,QAAQxB,EAAE,EAAEA,EAAEQ,EAAE,EAAER,EAAEA,EAAE,IAAIN,EAAExL,EAAE,CAAC,IAAI,EAAEA,EAAEqN,EAAE2a,EAAEhoB,CAAC,EAAEsN,EAAEtN,EAAE,GAAG,EAAE,WAAW8L,CAAC,EAAE,EAAE,IAAIO,EAAEP,CAAC,CAAC,EAAE,EAAE,OAAOA,CAAC,EAAEA,EAAE,EAAE0B,EAAE,QAAQ,EAAE,GAAG,GAAGH,EAAEC,EAAE,EAAE,EAAE,EAAE,cAAc,IAAIf,CAAC,EAAE,EAAE,OAAO,IAAIzB,CAAC,EAAEgB,EAAE,UAAU,OAAOD,EAAE,OAAOC,EAAE,UAAU,MAAMD,EAAE,OAAOC,EAAE,UAAU,WAAW6E,EAAE7E,EAAE,UAAU,WAAW0E,EAAE1E,EAAE,UAAU,UAAUD,EAAE2B,EAAE,WAAW1B,EAAE,cAAa,EAAGA,EAAE,cAAa,EAAGi4G,GAAGj4G,EAAE,EAAE,EAAEk4G,GAAGl4G,EAAE,GAAG,EAAE,EAAE+3G,GAAG/3G,EAAE,EAAE,EAAEw4G,GAAGx4G,CAAC,EAAEsjG,IAAIF,GAAG,QAAQ,uBAAuB,KAAK,IAAI,CAAC,CAAC,CAACQ,GAAG,IAAI,SAAS6lB,EAAE,EAAE7lB,GAAG,IAAI,QAAQ6lB,EAAE,EAAE,MAAMC,GAAG,MAAMC,GAAG,gBAAgB/lB,GAAG,IAAI,MAAM,cAAckjB,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,QAAQ,CAACxjB,IAAIF,GAAG,KAAK,oBAAoB,KAAK,IAAI,EAAE,MAAM,EAAE,KAAK,UAAU,EAAE,KAAK,iBAAiBrkG,EAAE,EAAE,QAAQwG,EAAE,EAAE,UAAUA,EAAE,SAAS,gBAAgB,EAAE,SAAS,EAAE,MAAM9D,EAAE,CAAA,EAAG,IAAIhC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEiF,EAAE,EAAEwX,EAAE,EAAExc,EAAE,EAAE,KAAK,SAAS,iBAAkB,SAASM,EAAE,EAAE,SAASA,EAAE4K,EAAEjG,EAAE,CAAC,QAAQC,EAAE5E,EAAE4E,EAAEgG,EAAE,EAAEhG,EAAE,CAAC,MAAM5E,EAAE2E,EAAEC,CAAC,EAAE,OAAO,GAAG5E,GAAE,GAAOP,IAAJ,EAAM,CAAC,MAAMgC,EAAEzB,EAAE,MAAM0pH,EAAE,EAAEjqH,EAAE,SAASgC,EAAE,CAAC,CAAC,EAAEhB,EAAEgB,EAAE,CAAC,EAAEzC,EAAE,SAASyC,EAAE,CAAC,CAAC,EAAEoD,EAAEpD,EAAE,CAAC,EAAE/B,EAAE+B,EAAE,CAAC,EAAEmJ,EAAE,WAAWnJ,EAAE,CAAC,CAAC,EAAEhB,IAAI,IAAI,EAAEq3G,GAAG57F,CAAC,EAAE,EAAEA,GAAG3W,EAAE,WAAU,EAAGA,EAAE,WAAWb,CAAC,EAAE3F,EAAE,IAAIW,CAAC,EAAE6F,EAAE,OAAOb,CAAC,EAAEjF,EAAE8F,EAAE,cAAcb,CAAC,EAAEkG,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE/F,EAAE7F,EAAE,EAAE,EAAE0F,GAAG,EAAE,EAAEjE,CAAC,SAAahB,IAAJ,EAAM,CAAC,MAAMiC,EAAE1B,EAAE,MAAM0pH,EAAE,EAAE,QAAQ1pH,EAAE,EAAEjB,EAAE2C,EAAE,OAAO1B,EAAEjB,EAAEiB,GAAG,EAAE,EAAEN,CAAC,EAAE,SAASgC,EAAE1B,CAAC,CAAC,EAAE,EAAE,EAAEN,CAAC,EAAE,SAASgC,EAAE1B,EAAE,CAAC,CAAC,EAAE,EAAE,EAAEN,CAAC,EAAE,EAAEA,GAAG,CAAC,SAAaD,IAAJ,EAAMgC,EAAE,KAAKzB,EAAE,QAAQ2pH,GAAG,EAAE,EAAE,KAAI,CAAE,UAAclqH,IAAJ,GAAY,GAAOA,IAAJ,GAAY,GAAOA,IAAJ,EAAY,GAAGO,EAAE,SAAS,QAAQ,EAAE,CAACP,EAAE,EAAE,MAAMiC,EAAE,SAAS1B,EAAE,MAAM0pH,EAAE,EAAE,CAAC,CAAC,EAAEnkH,EAAE,OAAO7D,CAAC,CAAC,SAAS1B,EAAE,SAAS,QAAQ,EAAE,CAACP,EAAE,EAAE,MAAMiC,EAAE,SAAS1B,EAAE,MAAM0pH,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,YAAYhoH,CAAC,EAAE,EAAE,IAAI,YAAYA,CAAC,EAAE,EAAE,IAAI,WAAWA,CAAC,CAAC,MAAM1B,EAAE,SAAS,SAAS,EAAEP,EAAE,EAAEO,EAAE,SAAS,SAAS,EAAEP,EAAE,EAAEO,EAAE,SAAS,OAAO,EAAEP,EAAE,EAAEO,EAAE,SAAS,SAAS,IAAIP,EAAE,UAAQA,EAAE,MAAM,CAAC,GAAE,EAAEO,EAAE,OAAOA,CAAC,CAAC,CAAC,EAAG,EAAE,MAAMyB,EAAE,KAAK,GAAG,EAAE,EAAE,UAAU,OAAO,EAAE,OAAO,EAAE,UAAU,MAAM/B,EAAE,EAAE,UAAU,WAAW,EAAE,EAAE,UAAU,WAAW,EAAE,EAAE,UAAU,UAAU,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgBu4G,GAAG,EAAE,EAAE,EAAEC,GAAG,EAAE,GAAG,EAAE,EAAEM,GAAG,CAAC,EAAElV,IAAIF,GAAG,QAAQ,oBAAoB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,MAAMwmB,GAAG,aAAaC,GAAG,MAAMjmB,GAAG,IAAI,MAAM,cAAckjB,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,QAAQ,CAACxjB,IAAIF,GAAG,KAAK,oBAAoB,KAAK,IAAI,EAAE,MAAM,EAAE,KAAK,UAAU,EAAE,KAAK,iBAAiBrkG,EAAE,EAAE,QAAQwG,EAAE,EAAE,UAAU9D,EAAE,EAAE,UAAUA,EAAE,SAAS,gBAAgB,EAAE,SAAS,EAAE,MAAMhC,EAAE,CAAE,EAAC,EAAE,GAAG,IAAI,EAAE,EAAE,KAAK,SAAS,iBAAkB,SAASiC,EAAE,EAAE,SAASA,EAAE3C,EAAEwG,EAAE,CAAC,QAAQ9D,EAAEC,EAAED,EAAE1C,EAAE,EAAE0C,EAAE,CAAC,MAAMC,EAAE6D,EAAE9D,CAAC,EAAE,IAAI1C,EAAE2C,EAAE,KAAM,EAAC,GAAG,CAAC3C,GAASA,EAAE,CAAC,IAAT,KAAkBA,EAAE,CAAC,IAAT,IAAW,SAAS,GAAGA,EAAE,WAAW,UAAU,EAAE,MAAM,IAAI,MAAM,4CAA4C,EAAE,MAAMC,EAAE0C,EAAE,MAAMkoH,EAAE,EAAE,GAAU5qH,IAAP,KAAS,CAAC,MAAMgB,EAAEhB,EAAE,CAAC,EAAmBgB,IAAjB,gBAAoB,EAAE,EAAE,EAAE,CAAC,MAAM,GAAG,MAAM,CAAA,CAAE,GAAG,EAAYA,IAAV,QAAY,EAAYA,IAAV,QAAY,EAAaA,IAAX,SAAa,EAAgBA,IAAd,YAAgB,EAAE,OAAO,QAAQ,CAAC,MAAM6E,EAAE9F,EAAE,QAAQ,GAAG,EAAE,GAAQ8F,IAAL,KAAS9F,EAAEA,EAAE,UAAU,EAAE8F,CAAC,EAAE,KAAM,GAAM,IAAJ,EAAM,CAAC,MAAM7E,EAAEjB,EAAE,MAAM8qH,EAAE,EAAE,CAAC,EAAE,EAAE7pH,CAAC,EAAE,CAAC,SAAa,IAAJ,EAAM,CAAC,MAAMA,EAAEjB,EAAE,MAAM8qH,EAAE,EAAE,EAAE,MAAM,KAAK,CAAC,SAAS7pH,EAAE,CAAC,CAAC,EAAEA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,WAAWA,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAa,IAAJ,EAAM,CAAC,MAAMA,EAAEjB,EAAE,MAAM8qH,EAAE,EAAE,EAAE,MAAM,KAAK,CAAC,SAAS7pH,EAAE,CAAC,CAAC,EAAE,SAASA,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAa,IAAJ,EAAM,EAAE,MAAMjB,UAAc,IAAJ,EAAM,CAAC,MAAMiB,EAAEjB,EAAE,MAAM8qH,EAAE,EAAEpqH,EAAE,KAAK,CAACO,EAAE,CAAC,EAAE,SAASA,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,EAAE0B,EAAE,OAAOA,CAAC,CAAC,CAAG,EAAC,IAAI,EAAE,EAAE,EAAE,EAAEjC,EAAE,QAAS,SAASO,EAAE,CAAC,KAAK,CAAC0B,EAAE3C,CAAC,EAAEiB,EAAEuF,EAAE,EAAE7D,CAAC,EAAE,GAAG3C,EAAEwG,EAAE,MAAM,OAAO,GAAGxG,EAAEwG,EAAE,MAAM,MAAM,GAAI9D,EAAE,OAAO,CAAC,EAAE8D,EAAE,OAAO,CAAC,EAAE,IAAIb,EAAEwX,EAAE,EAAExc,EAAE,EAAE,EAAE,EAAEiF,EAAE,EAAE,EAAE,EAAE5E,EAAE,EAAEN,EAAE,QAAS,SAASO,EAAE,CAAC,KAAK,CAACP,EAAEc,CAAC,EAAEP,EAAES,EAAE,EAAEhB,CAAC,EAAET,EAAE84G,GAAGnzG,CAAC,EAAE,QAAQ3E,EAAE,EAAEA,EAAEO,EAAE,EAAEP,EAAE,CAAC0E,EAAE,GAAG,MAAM1E,EAAEyuG,GAAG,SAAShvG,CAAC,EAAET,EAAE84G,GAAG,CAAC,EAAEr3G,EAAE,MAAM,QAAS,SAAS8E,EAAE,CAAC,KAAK,CAAC9F,EAAEwvD,EAAE1uD,EAAEE,CAAC,EAAE8E,EAAE9F,IAAIiF,GAAG,EAAEhF,EAAE+B,EAAE,WAAWya,CAAC,EAAEnd,EAAE,IAAIwB,CAAC,EAAEkB,EAAE,OAAOya,CAAC,EAAEA,EAAE,EAAEza,EAAE,cAAcya,CAAC,EAAEzb,EAAE,EAAE,QAAQ,EAAEzB,EAAEgB,EAAEivD,EAAEvvD,EAAE,EAAE,EAAE,EAAE,EAAEwc,EAAExX,EAAEjF,CAAC,CAAG,EAACgB,EAAE,MAAM,QAAS,SAAST,EAAE,CAACuF,EAAE,WAAW,CAAC,EAAExF,EAAEC,EAAE,CAAC,EAAE,EAAEuF,EAAE,WAAW,CAAC,EAAExF,EAAEC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAI,EAAE,EAAED,GAAGU,EAAE,MAAM,MAAM,CAAC,EAAEkE,CAAC,GAAIY,EAAE,MAAM,EAAE,EAAE,SAAU,EAAC,EAAE,cAAe,EAAC,EAAE,cAAe,EAAC0yG,GAAG,EAAE,EAAE,EAAEC,GAAG,EAAE,GAAG,EAAE,EAAEM,GAAG,CAAC,EAAElV,IAAIF,GAAG,QAAQ,oBAAoB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM0mB,WAAWjD,EAAE,CAAC,YAAY7mH,EAAE0B,EAAE,CAAC,MAAM1B,EAAE0B,CAAC,EAAE,KAAK,OAAO,IAAIsrC,GAAG,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,YAAY,CAAC,IAAI,WAAW,CAAC,MAAM,QAAQ,CAAC,CAAC,SAAS+8E,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,IAAI,UAAU,iCAAiC,CAAC,CAAC,CAAC,SAASC,GAAG,EAAE,CAAC,EAAE,OAAO,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,SAASC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,aAAalrH,EAAE,EAAE,UAAU,CAAC,EAAE,OAAOirH,GAAG,CAAC,EAAEjrH,CAAC,CAAC6kG,GAAG,IAAI,MAAM,cAAckmB,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,QAAQ,CAACxmB,IAAIF,GAAG,KAAK,oBAAoB,KAAK,IAAI,EAAE,MAAM,EAAE3D,GAAG,KAAK,SAAS,IAAI,EAAE,EAAE,IAAI,SAAS,CAAC,EAAE1gG,EAAE,KAAK,OAAOwG,EAAExG,EAAE,YAAY0C,EAAE1C,EAAE,MAAMU,EAAE,CAAE,EAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,GAAQ,EAAE,CAAC,IAAR,GAAU,CAAC,MAAMV,EAAE,EAAE,WAAW,QAAQiB,EAAE,EAAEA,EAAEjB,EAAEiB,GAAG,EAAE,EAAE,WAAWA,EAAE,EAAE,WAAWA,CAAC,EAAE,EAAE,CAAC,CAAM,EAAE,CAAC,IAAR,IAAWojG,GAAG,MAAM,oCAAoC,EAAW,OAAO,aAAa,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,IAApF,QAAuFA,GAAG,MAAM,+BAA+B,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG1+F,EAAE,GAAO,EAAE,EAAE,IAAR,IAAY,EAAE,GAAO,EAAE,EAAE,IAAR,IAAY,EAAE,IAAQ,EAAE,EAAE,IAAR,IAAYA,EAAE,KAAKjF,EAAE,KAAK,EAAE,CAAC,EAAEA,EAAE,OAAO,EAAE,CAAC,EAAEA,EAAE,MAAM,EAAE,CAAC,EAAEA,EAAE,MAAM,EAAE,EAAE,EAAEA,EAAE,MAAM,EAAE,EAAE,WAAW,GAAG,CAAC,EAAE,EAAE,WAAW,GAAG,CAAC,EAAO,EAAE,EAAE,IAAT,IAAY2jG,GAAG,MAAM,kCAAkC,EAAE,EAAE,EAAE,GAAG,EAAE,MAAMlnF,EAAE,EAAE,SAAS,EAAE,CAAC,EAAExc,EAAE,EAAE,EAAE,IAAIwc,EAAE,GAAG,IAAI,GAAGknF,GAAG,MAAM,mCAAmC,EAAE3jG,EAAE,MAAM6/F,GAAG,IAAI,WAAW,EAAE5/F,EAAEwc,CAAC,CAAC,EAAE,EAAE,SAASxc,EAAEwc,EAAE,EAAE,EAAE,CAAC,IAAIA,GAAGknF,GAAG,MAAM,iCAAiC,EAAE,EAAE,EAAElnF,EAAE,EAAM,EAAE,SAAS,EAAE,CAAC,IAAlB,GAAqBknF,GAAG,MAAM,mCAAmC,EAAE3jG,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,EAAM,EAAE,SAAS,EAAE,EAAE,CAAC,IAApB,GAAuB2jG,GAAG,MAAM,iCAAiC,EAAE,EAAE,EAAE,EAAE,EAAE3jG,EAAE,MAAM,EAAE,OAAO,KAAK2jG,GAAG,MAAM,mDAAmD,EAAE,MAAM,EAAE3jG,EAAE,MAAMkF,EAAE,EAAE,EAAE,QAAQ5F,EAAE,EAAEwB,EAAEd,EAAE,KAAKV,EAAEwB,EAAE,EAAExB,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAMiB,EAAE,IAAI,aAAa,CAAC,EAAEA,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,EAAEA,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,EAAEyB,EAAE,KAAKzB,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,MAAMP,EAAE,IAAI,aAAa,EAAE,CAAC,EAAE,QAAQ8F,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,IAAIZ,GAAGy+F,GAAG,MAAM,oCAAoCrkG,EAAEwG,CAAC,EAAE,GAAG,EAAE,MAAM9D,EAAE,IAAI,aAAa,EAAE,EAAE,CAAC,EAAE,QAAQzB,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAEP,EAAE,EAAEO,EAAEuF,CAAC,EAAE9D,EAAEzB,CAAC,EAAE,GAAG2E,EAAE,EAAE,SAAS,EAAE,CAAC,IAAIA,GAAGy+F,GAAG,MAAM,kCAAkCrkG,EAAEwG,CAAC,EAAE,GAAG,CAAC,CAAIA,EAAE,KAAK9F,CAAC,EAAEiF,IAAG,GAAG,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,CAACjF,EAAE,QAAQV,EAAE,UAAU,kBAAkBU,EAAE,OAAOA,EAAE,QAAQ,IAAIV,EAAE,YAAYU,EAAE,OAAO,GAAGV,EAAE,WAAWukG,IAAIF,GAAG,QAAQ,oBAAoB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM8mB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAASC,GAAG,EAAE,CAAC,OAAO,OAAO,CAAC,EAAG,CAAA,KAAKD,GAAG,KAAK,MAAM,OAAO,KAAKA,GAAG,KAAK,MAAM,OAAO,KAAKA,GAAG,MAAM,MAAM,QAAQ,KAAKA,GAAG,IAAI,MAAM,MAAM,KAAKA,GAAG,MAAM,MAAM,QAAQ,KAAKA,GAAG,OAAO,MAAM,SAAS,QAAQ,MAAM,WAAW,CAAC,CAAC,SAASE,GAAG,EAAE,CAAC,OAAO,OAAO,CAAC,EAAG,CAAA,KAAKF,GAAG,KAAK,KAAKA,GAAG,KAAK,MAAO,GAAE,KAAKA,GAAG,MAAM,MAAO,GAAE,KAAKA,GAAG,IAAI,KAAKA,GAAG,MAAM,MAAO,GAAE,KAAKA,GAAG,OAAO,MAAO,GAAE,QAAQ,MAAM,EAAE,CAAC,CAAC,SAASG,GAAG,EAAE,CAAC,OAAO,OAAO,CAAC,EAAC,CAAE,IAAI,OAAO,OAAOH,GAAG,KAAK,IAAI,OAAO,OAAOA,GAAG,KAAK,IAAI,QAAQ,OAAOA,GAAG,MAAM,IAAI,MAAM,OAAOA,GAAG,IAAI,IAAI,QAAQ,OAAOA,GAAG,MAAM,IAAI,SAAS,OAAOA,GAAG,OAAO,QAAQ,MAAM,EAAE,CAAC,CAAC,SAASI,GAAG,EAAE,EAAE,CAAC,GAAO,IAAJ,EAAM,CAAC,MAAMvrH,EAAE,IAAI,MAAM,CAAC,EAAE,QAAQwG,EAAE,EAAEA,EAAE,EAAEA,IAAIxG,EAAEwG,CAAC,EAAE,EAAG,EAAC,OAAOxG,CAAC,CAAC,OAAO,GAAG,CAAC,SAASwrH,GAAG,EAAE,EAAExrH,EAAE,CAAC,OAAO,EAAG,CAAA,KAAKmrH,GAAG,KAAK,OAAO,EAAE,UAAUnrH,CAAC,EAAE,KAAKmrH,GAAG,KAAK,OAAO,SAASlqH,EAAE,CAAC,OAAOA,EAAE,WAAWA,EAAE,OAAO,CAAC,IAA3B,EAAoCA,EAAE,UAAU,EAAEA,EAAE,OAAO,CAAC,EAASA,CAAC,EAAE,EAAE,UAAUjB,CAAC,CAAC,EAAE,KAAKmrH,GAAG,MAAM,OAAOI,GAAGvrH,EAAE,EAAE,UAAU,KAAK,CAAC,CAAC,EAAE,KAAKmrH,GAAG,IAAI,OAAOI,GAAGvrH,EAAE,EAAE,UAAU,KAAK,CAAC,CAAC,EAAE,KAAKmrH,GAAG,MAAM,OAAOI,GAAGvrH,EAAE,EAAE,YAAY,KAAK,CAAC,CAAC,EAAE,KAAKmrH,GAAG,OAAO,OAAOI,GAAGvrH,EAAE,EAAE,YAAY,KAAK,CAAC,CAAC,EAAE,QAAQ,OAAO,KAAKgrH,GAAG,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,MAAMS,GAAG,EAAEC,GAAG,GAAGC,GAAG,GAAGC,GAAG,GAAG,SAAS/hH,GAAG,EAAE,EAAE,CAAC,MAAM7J,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAY,CAAA,CAAC,EAAEA,EAAE,QAAQ,EAAE,MAAMwG,EAAE,SAASvF,EAAE,CAAC,IAAI0B,EAAE3C,EAAEwG,EAAE,MAAM9D,EAAEzB,EAAE,WAAY,EAAC,GAAGyB,IAAI+oH,GAAG,OAAOT,GAAG/pH,EAAE,WAAY,IAAGwqH,GAAG,wCAAwC,EAAE,GAAG,CAACT,GAAGtoH,IAAIgpH,GAAG,kCAAkC,EAAE,MAAMhrH,EAAEO,EAAE,WAAY,EAAC0B,EAAE,IAAI,MAAMjC,CAAC,EAAE,QAAQgC,EAAE,EAAEA,EAAEhC,EAAEgC,IAAI,CAAC,MAAMhC,EAAEwqH,GAAGjqH,CAAC,EAAEivD,EAAEjvD,EAAE,aAAiBivD,IAAJ,IAAQlwD,EAAE0C,EAAE8D,EAAE9F,GAAGiC,EAAED,CAAC,EAAE,CAAC,KAAKhC,EAAE,KAAKwvD,CAAC,CAAC,CAAC,MAAM,CAAC,WAAWvtD,EAAE,SAAS3C,EAAE,WAAWwG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAExG,EAAE,gBAAgB,GAAGwG,EAAE,SAASxG,EAAE,gBAAgB,KAAKwG,EAAE,WAAWxG,EAAE,WAAWwG,EAAE,WAAWxG,EAAE,iBAAiB6rH,GAAG,CAAC,EAAE,MAAMnpH,EAAE,SAASzB,EAAE0B,EAAE3C,EAAE,CAAC,MAAMwG,EAAEvF,EAAE,WAAU,EAAG,IAAIyB,EAAEhC,EAAE,EAAE,GAAG8F,IAAIilH,GAAG,OAAOT,GAAG/pH,EAAE,WAAU,IAAKwqH,GAAG,uCAAuC,EAAE,CAAA,EAAG,CAACT,GAAGxkH,IAAImlH,GAAG,iCAAiC,EAAE,MAAMz7D,EAAEjvD,EAAE,WAAU,EAAGyB,EAAE,IAAI,MAAMwtD,CAAC,EAAE,QAAQ1pD,EAAE,EAAEA,EAAE0pD,EAAE1pD,IAAI,CAAC,MAAM0pD,EAAEg7D,GAAGjqH,CAAC,EAAEO,EAAEP,EAAE,WAAY,EAACS,EAAE,IAAI,MAAMF,CAAC,EAAE,QAAQmB,EAAE,EAAEA,EAAEnB,EAAEmB,IAAIjB,EAAEiB,CAAC,EAAE1B,EAAE,WAAU,EAAG,MAAMhB,EAAE4rH,GAAG5qH,CAAC,EAAE6E,EAAE7E,EAAE,WAAU,EAAG+pH,GAAGllH,EAAE,GAAGA,EAAE,EAAE,kBAAkBA,CAAC,EAAE,MAAMH,EAAE1E,EAAE,WAAU,EAAG,IAAIkc,EAAElc,EAAE,WAAU,EAAOjB,IAAJ,IAAQgrH,GAAG7tG,EAAE,EAAE,uCAAuC,EAAEA,EAAElc,EAAE,WAAU,GAAIS,EAAE,CAAC,IAAIiB,IAAIjC,GAAGiF,GAAGjD,EAAE8D,CAAC,EAAE,CAAC,KAAK0pD,EAAE,WAAWxuD,EAAE,WAAWzB,EAAE,KAAKmrH,GAAGtlH,CAAC,EAAE,KAAKH,EAAE,OAAOwX,EAAE,OAAOzb,EAAE,CAAC,IAAIiB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAUD,EAAE,WAAWhC,CAAC,CAAC,EAAE,EAAE8F,EAAE,SAAS,CAAC,EAAE,OAAOxG,EAAE,UAAU0C,EAAE,UAAU1C,EAAE,gBAAgB,WAAW0C,EAAE,WAAW1C,CAAC,CAAC,SAAS6rH,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM7rH,EAAE,EAAE,WAAU,EAAG,GAAGA,IAAIyrH,GAAG,OAAOT,GAAG,EAAE,WAAU,IAAKS,GAAG,wCAAwC,EAAE,CAAE,EAAC,CAACT,GAAGhrH,IAAI4rH,GAAG,kCAAkC,EAAE,MAAMplH,EAAE,EAAE,WAAY,EAAC,EAAE,IAAI,MAAMA,CAAC,EAAE,QAAQxG,EAAE,EAAEA,EAAEwG,EAAExG,IAAI,CAAC,MAAMwG,EAAE0kH,GAAG,CAAC,EAAExoH,EAAE,EAAE,WAAY,EAACsoH,GAAGtoH,EAAE,GAAGA,EAAE,EAAE,kBAAkBA,CAAC,EAAE,MAAMhC,EAAE,EAAE,WAAY,EAACwvD,EAAEs7D,GAAG,EAAE9oH,EAAEhC,CAAC,EAAEuqH,GAAG,CAAC,EAAE,EAAEjrH,CAAC,EAAE,CAAC,KAAKwG,EAAE,KAAK4kH,GAAG1oH,CAAC,EAAE,MAAMwtD,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM47D,EAAE,CAAC,YAAY7qH,EAAE,CAAC,MAAM0B,EAAE,IAAIojG,GAAG9kG,CAAC,EAAE0B,EAAE,aAAY,EAAGqoH,GAAWroH,EAAE,UAAU,CAAC,IAArB,MAAuB,uBAAuB,EAAE,MAAM,EAAEA,EAAE,WAAWqoH,GAAG,EAAE,EAAE,iBAAiB,EAAE,KAAK,OAAOnhH,GAAGlH,EAAE,CAAC,EAAE,KAAK,OAAOA,CAAC,CAAC,IAAI,SAAS,CAAC,OAAW,KAAK,OAAO,UAAhB,EAAwB,iBAAiB,sBAAsB,CAAC,IAAI,iBAAiB,CAAC,OAAO,KAAK,OAAO,eAAe,CAAC,IAAI,YAAY,CAAC,OAAO,KAAK,OAAO,UAAU,CAAC,IAAI,kBAAkB,CAAC,OAAO,KAAK,OAAO,gBAAgB,CAAC,IAAI,WAAW,CAAC,OAAO,KAAK,OAAO,SAAS,CAAC,gBAAgB1B,EAAE,CAAC,OAAW,KAAK,OAAO,UAAU,UAAW,SAAS0B,EAAE,CAAC,OAAOA,EAAE,OAAO1B,CAAC,CAAG,IAAtE,EAAsE,CAAC,gBAAgBA,EAAE,CAAC,IAAI0B,EAAE,OAAOA,EAAY,OAAO1B,GAAjB,SAAmB,KAAK,OAAO,UAAU,KAAM,SAAS0B,EAAE,CAAC,OAAOA,EAAE,OAAO1B,CAAC,CAAC,EAAGA,EAAE+pH,GAAYroH,IAAT,OAAW,oBAAoB,EAAE,KAAK,OAAO,KAAKA,EAAE,MAAM,EAAEA,EAAE,OAAO,SAAS1B,EAAE0B,EAAE3C,EAAE,CAAC,MAAMwG,EAAE8kH,GAAG3oH,EAAE,IAAI,EAAED,EAAEC,EAAE,KAAKA,EAAE,KAAK0oH,GAAG7kH,CAAC,EAAE,EAAE9F,EAAEV,EAAE,OAAOkwD,EAAE,IAAI,MAAMxvD,CAAC,EAAEc,EAAExB,EAAE,WAAW,QAAQ2C,EAAE,EAAEA,EAAEjC,EAAEiC,IAAI,CAAC,MAAM3C,EAAEiB,EAAE,OAAOivD,EAAEvtD,CAAC,EAAE6oH,GAAGvqH,EAAEuF,EAAE9D,CAAC,EAAEzB,EAAE,KAAKjB,EAAEwB,CAAC,CAAC,CAAC,OAAO0uD,CAAC,EAAE,KAAK,OAAOvtD,EAAE,KAAK,OAAO,eAAe,EAAE,SAAS1B,EAAE0B,EAAE,CAAC,MAAM3C,EAAEsrH,GAAG3oH,EAAE,IAAI,EAAE6D,EAAE7D,EAAE,KAAK0oH,GAAGrrH,CAAC,EAAE0C,EAAE,IAAI,MAAM8D,CAAC,EAAE,QAAQ7D,EAAE,EAAEA,EAAE6D,EAAE7D,IAAID,EAAEC,CAAC,EAAE6oH,GAAGvqH,EAAEjB,EAAE,CAAC,EAAE,OAAO0C,CAAC,EAAE,KAAK,OAAOC,CAAC,CAAC,CAAC,CAAC,MAAMopH,WAAWhB,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,QAAQ,CAACxmB,IAAIF,GAAG,KAAK,uBAAuB,KAAK,IAAI,EAAE,MAAMpjG,EAAE,IAAI6qH,GAAG,KAAK,SAAS,IAAI,EAAEnpH,EAAE,KAAK,OAAO,EAAEA,EAAE,YAAY,EAAEA,EAAE,MAAM,EAAEA,EAAE,MAAM1B,EAAE,gBAAgB,aAAa,EAAE,QAAS,SAASA,EAAE,CAAC,EAAE,KAAK,IAAI,aAAaA,CAAC,CAAC,CAAC,CAAC,EAAGA,EAAE,gBAAgB,cAAc,GAAGA,EAAE,gBAAgB,cAAc,EAAE,QAAS,SAASA,EAAE,CAAC,EAAE,KAAK,IAAI,aAAaA,CAAC,CAAC,CAAC,CAAG,EAACA,EAAE,gBAAgB,MAAM,GAAGA,EAAE,gBAAgB,MAAM,EAAE,QAAS,SAASA,EAAE,CAAC,EAAE,KAAKA,CAAC,CAAC,GAAI,EAAE,QAAQ,IAAI0B,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,QAAQ,IAAIA,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG4hG,IAAIF,GAAG,QAAQ,uBAAuB,KAAK,IAAI,CAAC,CAAC,CAACQ,GAAG,IAAI,SAASknB,EAAE,EAAElnB,GAAG,IAAI,OAAOknB,EAAE,EAAElnB,GAAG,IAAI,KAAKknB,EAAE,EAAElnB,GAAG,IAAI,MAAM,cAAckmB,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,QAAQ,CAACxmB,IAAIF,GAAG,KAAK,oBAAoB,KAAK,IAAI,EAAE,MAAM,EAAE3D,GAAG,KAAK,SAAS,IAAI,EAAE,EAAE,IAAI,SAAS,CAAC,EAAE1gG,EAAE,KAAK,OAAOwG,EAAExG,EAAE,YAAY0C,EAAE1C,EAAE,MAAMU,EAAEV,EAAE,MAAM,IAAI,EAAE,EAAE,OAAO,CAAC,GAAG,EAAE,MAAMA,EAAE,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,GAAGA,EAAE,MAAMwB,EAAE,EAAE,SAAS,EAAE,CAAC,EAAEE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAEzB,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE6F,EAAE,EAAE,SAAS,EAAE,EAAE,EAAEH,EAAE,EAAE,SAAS,EAAE,EAAE,EAAEwX,EAAE,EAAE,SAAS,EAAE,EAAE,EAAExc,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,GAAG,MAAMkL,EAAErK,EAAE,EAAEoE,EAAE,EAAEjF,EAAE,GAAOkL,IAAJ,EAAMnL,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,EAAEA,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,GAAG,EAAEmL,EAAErK,EAAE,CAAC,MAAMP,EAAE,IAAI,aAAa,CAAC,EAAE,GAAO4K,IAAJ,EAAM,QAAQ7L,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAEiB,EAAEjB,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,GAAG,MAAO,SAAQA,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAEiB,EAAEjB,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,GAAG,EAAE0C,EAAE,KAAKzB,CAAC,CAAC,CAAC,GAAG,GAAGS,EAAE,GAAGzB,EAAE6F,EAAE,CAAC,IAAI9F,EAAE,GAAO6L,IAAJ,EAAM,CAAC7L,EAAE,IAAI,aAAa4F,CAAC,EAAE,QAAQ3E,EAAE,EAAEA,EAAE2E,EAAE,EAAE3E,EAAEjB,EAAEiB,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM0B,EAAE,IAAI,YAAY,EAAE,EAAEiD,CAAC,EAAE,QAAQ3E,EAAE,EAAEA,EAAE2E,EAAE,EAAE3E,EAAE,CAAC,MAAMjB,EAAE2C,EAAE1B,CAAC,EAAE0B,EAAE1B,CAAC,GAAG,IAAIjB,IAAI,IAAI,MAAMA,IAAI,EAAEA,GAAG,EAAE,MAAMA,GAAG,GAAG,GAAG,CAACA,EAAE,IAAI,aAAa,EAAE,EAAE4F,CAAC,EAAE,QAAQ3E,EAAE,EAAEA,EAAE2E,EAAE,EAAE3E,EAAEjB,EAAEiB,CAAC,GAAG,GAAG,GAAG,CAAC,CAACuF,EAAE,KAAKxG,CAAC,CAAC,CAAC,GAAG,GAAG2F,EAAE,GAAGwX,EAAE,GAAG,EAAE,WAAW,KAAK,CAACzc,EAAE,QAAQ,IAAIV,EAAE,WAAWU,EAAE,CAAC,GAAGA,EAAE,QAAQ,IAAIV,EAAE,UAAUU,EAAE,CAAC,EAAEA,EAAE,CAAC,GAAG6jG,IAAIF,GAAG,QAAQ,oBAAoB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM2nB,GAAG,IAAI,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,SAAS,SAAS,QAAQ,CAAC,EAAE,SAASC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAEjsH,EAAE,EAAE,KAAK,GAAG,GAAGA,EAAE,IAAIA,IAAI,IAAI,EAAE,OAAOA,CAAC,CAAC,MAAMksH,GAAG,IAAI,WAAW,EAAE,EAAE,SAASC,GAAG,EAAE,EAAE,CAAC,IAAInsH,EAAE,EAAEwG,EAAE,EAAE0lH,GAAG,CAAC,EAAE,EAAE,QAAQ1lH,EAAE,EAAEA,EAAE,EAAEA,IAAI,CAAC,IAAIvF,EAAEyB,EAAE,EAAE,IAAIzB,EAAE,EAAEA,EAAEjB,EAAEiB,IAAIyB,GAAGwpH,GAAGjrH,CAAC,EAAE,EAAEuF,CAAC,EAAE0lH,GAAGjrH,CAAC,EAAE,IAAIyB,EAAEA,IAAI,EAAE,KAASA,IAAJ,GAAOwpH,GAAGjrH,GAAG,EAAE,IAAIyB,EAAEA,IAAI,EAAE1C,EAAEiB,CAAC,CAAC,IAAIyB,EAAE,EAAE,IAAI1C,IAAIksH,GAAGlsH,CAAC,GAAG0C,GAAG8D,IAAI9D,GAAG,EAAE,OAAO8D,EAAE,EAAExG,CAAC,CAAC,SAASosH,GAAG,EAAE,EAAEpsH,EAAEwG,EAAE,CAAC,MAAM9D,GAAG,GAAG1C,GAAG,EAAE,IAAIU,EAAE8F,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,KAAKxG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAGU,GAAGV,EAAE,EAAEA,GAAG,EAAE,OAAOA,EAAE,IAAIU,EAAEV,IAAIU,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAGA,GAAGV,EAAE,GAAG,GAAGU,GAAG,GAAGV,GAAG,GAAG,GAAG0C,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAEhC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM2rH,GAAG,IAAI,WAAW,EAAE,EAAE,SAASC,GAAG,EAAE,EAAEtsH,EAAEwG,EAAE9D,EAAEhC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,IAAI2rH,GAAG,CAAC,EAAE,EAAEA,GAAG,CAAC,EAAE,EAAEA,GAAG,CAAC,EAAE,EAAE7lH,EAAE,GAAG6lH,GAAG,GAAG,EAAED,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE5lH,GAAG,EAAEA,EAAE,IAAI6lH,GAAG,GAAG,EAAED,GAAG,EAAE,EAAE5lH,EAAE,CAAC,GAAG,QAAQvF,EAAEjB,EAAE,EAAEiB,EAAE,EAAEA,IAAI,CAAC,IAAI0B,EAAE,EAAE,QAAQ3C,EAAE,EAAE,EAAEA,GAAG,EAAEA,IAAI,CAAC2C,EAAEA,GAAG,EAAE0pH,GAAGrsH,CAAC,EAAE,MAAMwG,EAAE7D,EAAED,EAAEzB,CAAC,EAAE,EAAEorH,GAAGrsH,CAAC,EAAEwG,EAAE7D,GAAG6D,EAAE9D,EAAEzB,CAAC,CAAC,CAACP,EAAEO,CAAC,EAAE0B,CAAC,CAACjC,EAAE,CAAC,EAAE2rH,GAAG,CAAC,EAAEA,GAAG,CAAC,GAAG,EAAEA,GAAG,CAAC,GAAG,GAAGA,GAAG,CAAC,GAAG,EAAE,CAACxnB,GAAG,IAAI,MAAM,cAAckmB,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,QAAQ,CAACxmB,IAAIF,GAAG,KAAK,oBAAoB,KAAK,IAAI,EAAE,MAAM,EAAE3D,GAAG,KAAK,SAAS,IAAI,EAAE,EAAE,IAAI,SAAS,CAAC,EAAE1gG,EAAE,KAAK,OAAOwG,EAAExG,EAAE,YAAY0C,EAAE1C,EAAE,MAAMU,EAAEV,EAAE,MAAM,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,IAAI,YAAY,CAAC,EAAE,EAAE,IAAI,aAAa,CAAC,EAAE2F,EAAE,IAAI,aAAa,CAAC,EAAE,IAAIwX,EAAE,EAAE,MAAMxc,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,IAAI,YAAYA,EAAE,MAAM,EAAE,OAAO,CAAC,IAAIX,EAAE,MAAM4F,EAAE,EAAE,SAASuX,EAAE,CAAC,EAAEA,GAAG,GAAG,MAAMtX,EAAE,EAAED,EAAElF,EAAE,KAAK,EAAE,WAAWyc,CAAC,CAAC,EAAEA,GAAG,EAAE,MAAMnc,EAAE,IAAI,aAAa,CAAC,EAAE,QAAQC,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAED,EAAEC,CAAC,EAAE,GAAG,EAAE,WAAWkc,CAAC,EAAEA,GAAG,EAAE,GAAGza,EAAE,KAAK1B,CAAC,EAAE4E,GAAG,EAAE,CAAC5F,EAAE,IAAI,aAAa4F,CAAC,EAAE,QAAQ3E,EAAE,EAAEA,EAAE2E,EAAE,EAAE3E,EAAEjB,EAAEiB,CAAC,EAAE,EAAE,WAAWkc,CAAC,EAAEA,GAAG,CAAC,KAAK,CAACxc,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAEgF,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,EAAE3F,EAAE,IAAI,aAAa6F,CAAC,EAAE,IAAIW,EAAE,EAAE,MAAM9D,EAAE,EAAE,SAASya,CAAC,EAAEA,GAAG,EAAE,MAAMzc,EAAE,EAAE,WAAWyc,CAAC,EAAE,IAAIvX,EAAEuX,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,SAASA,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,SAASA,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,SAASA,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,SAASA,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,SAASA,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,SAASA,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAEA,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE8uG,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAEA,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAEA,GAAG,EAAE,CAAC,CAAC,EAAErmH,EAAE,GAAGA,EAAEumH,GAAG,EAAE,CAAC,EAAE,IAAInrH,EAAE,EAAE,SAASmc,CAAC,EAAEA,GAAG,EAAE,IAAI1b,EAAET,EAAE,EAAES,EAAE,EAAEA,EAAE,EAAEA,EAAE,IAAItM,EAAE62H,GAAGvqH,CAAC,EAAE,EAAE,EAAEe,EAAEwpH,GAAGhrH,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEgrH,GAAGhrH,CAAC,EAAE,IAAIyB,EAAE,EAAE,KAAK,KAAK,EAAE,SAAS0a,CAAC,EAAE,CAAC,EAAEA,GAAG,EAAE,MAAM84E,EAAE,EAAEv1F,EAAE,IAAIkoG,EAAE,EAAEC,EAAE,EAAE,MAAM9Q,EAAE,IAAI,WAAW,EAAE56E,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE0rF,EAAEnmG,GAAG,CAAKkD,IAAJ,GAAO,EAAE,CAAC,EAAEwmH,GAAGzrH,EAAEo3F,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEq0B,GAAGzrH,EAAEo3F,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEq0B,GAAGzrH,EAAEo3F,EAAE,EAAE,CAAC,EAAE,CAAC,GAAGu0B,GAAG3rH,EAAEo3F,EAAE,EAAEnyF,EAAE,EAAE,EAAE,CAAC,EAAEijG,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,EAAEljG,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI1E,GAAE,EAAE,GAAOmrH,GAAGzrH,EAAEo3F,EAAE,EAAE,CAAC,IAAd,IAAkB6Q,EAAEwjB,GAAGzrH,EAAEo3F,EAAE,EAAE,CAAC,EAAE92F,GAAE2nG,EAAE,EAAEA,GAAG3nG,GAAEA,MAAK2nG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ3nG,EAAE,EAAEA,EAAE2nG,EAAE3nG,GAAG,EAAE,CAAC,GAAGqrH,GAAG3rH,EAAEo3F,EAAE,EAAE/2F,EAAE,EAAE,EAAE,CAAC,EAAE6nG,IAAI,EAAE,CAAC,GAAGljG,EAAE,CAAC,EAAEnD,EAAE,EAAE,CAAC,GAAGmD,EAAE,CAAC,EAAEnD,EAAE,EAAE,CAAC,GAAGmD,EAAE,CAAC,EAAEnD,EAAMvB,IAAJ,EAAM,CAAC,IAAIA,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE0E,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE1E,EAAEA,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE0E,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE1E,EAAEA,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE0E,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE1E,EAAEjB,EAAEwG,GAAG,EAAEb,EAAE,CAAC,EAAEswF,EAAEj2F,EAAEwG,GAAG,EAAEb,EAAE,CAAC,EAAEswF,EAAEj2F,EAAEwG,GAAG,EAAEb,EAAE,CAAC,EAAEswF,CAAC,MAAMtwF,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE3F,EAAEwG,GAAG,EAAE,EAAE,CAAC,EAAEyvF,EAAEj2F,EAAEwG,GAAG,EAAE,EAAE,CAAC,EAAEyvF,EAAEj2F,EAAEwG,GAAG,EAAE,EAAE,CAAC,EAAEyvF,CAAC,CAAC,MAAMj2F,EAAEwG,GAAG,EAAE,EAAE,CAAC,EAAEyvF,EAAEj2F,EAAEwG,GAAG,EAAE,EAAE,CAAC,EAAEyvF,EAAEj2F,EAAEwG,GAAG,EAAE,EAAE,CAAC,EAAEyvF,EAAE,GAAGj1F,GAAGC,GAAEA,GAAE,GAAGuB,EAAErN,EAAEA,EAAE6L,EAAE,EAAEgrH,GAAGhrH,EAAE,CAAC,EAAE,EAAE,EAAE,GAAGC,GAAE,IAAI9L,EAAEqN,EAAEA,EAAEwpH,GAAGhrH,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAEgrH,GAAGhrH,CAAC,EAAM,EAAE,CAAC,IAAP,GAAc,EAAE,CAAC,IAAP,GAAc,EAAE,CAAC,IAAP,EAAS,OAAO,KAAK,QAAQ,MAAM,kCAAkC,CAAC,CAACmc,GAAG1a,CAAC,CAAC,QAAQxB,EAAE,EAAEA,EAAE4E,EAAE5E,IAAIjB,EAAEiB,CAAC,GAAG,GAAG,GAAGuF,EAAE,KAAKxG,CAAC,EAAEmd,GAAG,EAAE,WAAW,KAAK,CAACzc,EAAE,QAAQ,IAAIV,EAAE,WAAWU,EAAE,CAAC,GAAGA,EAAE,QAAQ,IAAIV,EAAE,UAAUU,EAAE,CAAC,EAAEA,EAAE,CAAC,GAAG6jG,IAAIF,GAAG,QAAQ,oBAAoB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,MAAMkoB,WAAWzE,EAAE,CAAC,YAAY7mH,EAAE0B,EAAE,CAAC,MAAM,EAAEA,GAAG,CAAE,EAAC,MAAM1B,EAAE,CAAC,EAAE,KAAK,OAAO,IAAIk0G,GAAG,KAAK,KAAK,KAAK,IAAI,EAAE,KAAK,UAAUpV,EAAG,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,WAAW,CAAC,MAAM,QAAQ,CAAC,aAAa,CAAC,KAAK,OAAO,UAAU,KAAK,UAAS,CAAE,EAAE,MAAM,aAAa,CAAC,WAAW,CAAC,OAAO,IAAI//F,EAAC,CAAC,CAAC,MAAMwsH,GAAG,MAAMC,GAAG,oCAAoCC,GAAG,cAAc,MAAMC,WAAWJ,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAChoB,IAAIF,GAAG,KAAK,qBAAqB,KAAK,IAAI,EAAE,MAAMpjG,EAAE,KAAK,OAAOjB,EAAE,KAAK,SAAS,UAAU,CAAC,EAAEwG,EAAE,GAAG9D,EAAEgqH,GAAG,KAAK,UAAU,SAAShsH,EAAEO,EAAE0B,EAAE,CAAC,IAAI6D,EAAExG,EAAEiB,CAAC,EAAE,KAAI,EAAG,MAAMurH,EAAE,EAAE7pH,CAAC,EAAE,OAAO,WAAW6D,CAAC,CAAC,CAACA,EAAE,UAAU,KAAK,IAAI9F,EAAE,EAAE,CAAC,CAAC,EAAE8F,EAAE,QAAQ9F,EAAE,EAAE,CAAC,EAAEgsH,GAAGlmH,EAAE,QAAQ9F,EAAE,EAAE,CAAC,EAAEgsH,GAAGlmH,EAAE,QAAQ9F,EAAE,EAAE,CAAC,EAAEgsH,GAAGlmH,EAAE,IAAI9F,EAAE,EAAE,CAAC,EAAE8F,EAAE,IAAI9F,EAAE,EAAE,CAAC,EAAE8F,EAAE,IAAI9F,EAAE,EAAE,CAAC,EAAE8F,EAAE,OAAO,IAAI7D,EAAEjC,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,CAAC,EAAE,eAAegC,CAAC,EAAE8D,EAAE,OAAO,IAAI7D,EAAEjC,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,CAAC,EAAE,eAAegC,CAAC,EAAE8D,EAAE,OAAO,IAAI7D,EAAEjC,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,CAAC,EAAE,eAAegC,CAAC,EAAE,MAAM,EAAE,IAAI,aAAa8D,EAAE,IAAIA,EAAE,IAAIA,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE9F,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,SAAS,iBAAkB,SAASO,EAAE,EAAE,SAASA,EAAE0B,EAAE3C,EAAE,CAAC,QAAQ0C,EAAEzB,EAAEyB,EAAEC,EAAE,EAAED,EAAE,CAAC,MAAMzB,EAAEjB,EAAE0C,CAAC,EAAE,OAAO,GAAQzB,IAAL,IAAQ,GAAGuF,EAAE,UAAU,EAAE,EAAE,CAAC,MAAM7D,EAAE1B,EAAE,MAAMwrH,EAAE,EAAE,QAAQxrH,EAAE,EAAEjB,EAAE2C,EAAE,OAAO1B,EAAEjB,EAAE,EAAEiB,EAAE,EAAE,CAAC,EAAE,WAAW0B,EAAE1B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAE,EAAEA,EAAE,OAAOA,CAAC,CAAC,CAAG,EAACA,EAAE,OAAOuF,EAAEvF,EAAE,QAAQ,EAAEuF,EAAE,IAAIA,EAAE,IAAIA,EAAE,GAAG,EAAE+9F,IAAIF,GAAG,QAAQ,qBAAqB,KAAK,IAAI,CAAC,CAAC,WAAW,CAAC,MAAMpjG,EAAE,KAAK,OAAO,OAAO0B,EAAE,IAAI3C,GAAE,OAAO2C,EAAE,SAAU,IAAI3C,KAAG,gBAAgBiB,EAAE,QAAQA,EAAE,QAAQA,EAAE,OAAO,CAAC,EAAE0B,EAAE,SAAU,IAAI3C,KAAG,UAAUiB,EAAE,OAAOA,EAAE,OAAOA,EAAE,MAAM,CAAC,EAAE0B,CAAC,CAAC,CAACkiG,GAAG,IAAI,MAAM8nB,EAAE,EAAE9nB,GAAG,IAAI,OAAO8nB,EAAE,EAAE,MAAMC,WAAWL,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAChoB,IAAIF,GAAG,KAAK,qBAAqB,KAAK,IAAI,EAAE,MAAMpjG,EAAE,KAAK,OAAO0B,EAAE,GAAG,IAAI,EAAE,EAAE,MAAM,EAAE+9F,GAAG,KAAK,SAAS,IAAI,EAAEhgG,EAAE,IAAI,WAAW,CAAC,EAAEwvD,EAAE,IAAI,WAAW,CAAC,EAAE1uD,EAAE,OAAO,aAAa,MAAM,KAAK0uD,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,GAAG1uD,EAAE,WAAW,KAAK,EAAEmB,EAAE,OAAO,SAASnB,EAAE,OAAO,GAAG,CAAC,CAAC,EAAEmB,EAAE,OAAO,SAASnB,EAAE,OAAO,GAAG,CAAC,CAAC,EAAEmB,EAAE,OAAO,SAASnB,EAAE,OAAO,GAAG,CAAC,CAAC,EAAEmB,EAAE,QAAQ,SAASnB,EAAE,OAAO,GAAG,CAAC,CAAC,EAAEmB,EAAE,QAAQ,SAASnB,EAAE,OAAO,GAAG,CAAC,CAAC,EAAEmB,EAAE,QAAQ,SAASnB,EAAE,OAAO,GAAG,CAAC,CAAC,EAAEmB,EAAE,MAAM,SAASnB,EAAE,OAAO,GAAG,CAAC,CAAC,EAAEmB,EAAE,MAAM,SAASnB,EAAE,OAAO,GAAG,CAAC,CAAC,EAAEmB,EAAE,MAAM,SAASnB,EAAE,OAAO,GAAG,CAAC,CAAC,EAAEmB,EAAE,KAAK,WAAWnB,EAAE,OAAO,GAAG,EAAE,CAAC,EAAE,KAAK,UAAUmB,EAAE,KAAK,WAAWnB,EAAE,OAAO,GAAG,EAAE,CAAC,EAAE,KAAK,UAAUmB,EAAE,KAAK,WAAWnB,EAAE,OAAO,GAAG,EAAE,CAAC,EAAE,KAAK,UAAUmB,EAAE,MAAM,WAAWnB,EAAE,OAAO,IAAI,EAAE,CAAC,EAAEmB,EAAE,KAAK,WAAWnB,EAAE,OAAO,IAAI,EAAE,CAAC,EAAEmB,EAAE,MAAM,WAAWnB,EAAE,OAAO,IAAI,EAAE,CAAC,EAAE,EAAE,WAAWA,EAAE,OAAO,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,SAASA,EAAE,OAAO,IAAI,CAAC,CAAC,EAAEmB,EAAE,MAAM,IAAI,WAAWnB,EAAE,OAAO,IAAI,EAAE,CAAC,MAAM,CAAC,GAASd,EAAE,EAAE,IAAV,IAAY,QAAQO,EAAE,EAAE0B,EAAEjC,EAAE,OAAOO,EAAE0B,EAAE,EAAE1B,EAAE,CAAC,MAAM0B,EAAEjC,EAAEO,CAAC,EAAEP,EAAEO,CAAC,GAAG,IAAI0B,IAAI,EAAEA,GAAG,EAAE,GAAG,CAACA,EAAE,OAAOjC,EAAE,CAAC,EAAEiC,EAAE,OAAOjC,EAAE,CAAC,EAAEiC,EAAE,OAAOjC,EAAE,CAAC,EAAEiC,EAAE,QAAQjC,EAAE,CAAC,EAAEiC,EAAE,QAAQjC,EAAE,CAAC,EAAEiC,EAAE,QAAQjC,EAAE,CAAC,EAAEiC,EAAE,MAAMjC,EAAE,CAAC,EAAEiC,EAAE,MAAMjC,EAAE,CAAC,EAAEiC,EAAE,MAAMjC,EAAE,CAAC,EAAE,MAAMO,EAAE,EAAEP,EAAE,EAAE,EAAEgC,EAAEzB,EAAE,KAAK,UAAU0B,EAAE,KAAKjC,EAAE,CAAC,EAAEgC,EAAEC,EAAE,KAAKjC,EAAE,EAAE,EAAEgC,EAAEC,EAAE,KAAKjC,EAAE,EAAE,EAAEgC,EAAEC,EAAE,MAAMjC,EAAE,EAAE,EAAEO,EAAE0B,EAAE,KAAKjC,EAAE,EAAE,EAAEO,EAAE0B,EAAE,MAAMjC,EAAE,EAAE,EAAEO,EAAE,EAAEP,EAAE,EAAE,EAAE,IAAI,EAAEA,EAAE,EAAE,EAAEiC,EAAE,MAAMjC,EAAE,EAAE,EAAEO,CAAC,CAACA,EAAE,OAAO0B,EAAE4hG,IAAIF,GAAG,IAAI1hG,EAAE,EAAE,CAAC,EAAE,MAAMjB,EAAE,IAAI,aAAaiB,EAAE,QAAQA,EAAE,QAAQA,EAAE,OAAO,EAAE,IAAI1C,EAAE,IAAI,MAAM6F,EAAE,KAAK,KAAKnD,EAAE,QAAQ,CAAC,EAAEgD,EAAE,KAAK,KAAKhD,EAAE,QAAQ,CAAC,EAAEwa,EAAE,KAAK,KAAKxa,EAAE,QAAQ,CAAC,EAAE,QAAQhC,EAAE,EAAEA,EAAEwc,EAAE,EAAExc,EAAE,QAAQkL,EAAE,EAAEA,EAAElG,EAAE,EAAEkG,EAAE,QAAQjG,EAAE,EAAEA,EAAEE,EAAE,EAAEF,EAAE,QAAQC,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,QAAQ7E,EAAE,EAAEL,EAAEkF,EAAEpE,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,QAAQtM,EAAE,EAAE0W,EAAEpK,EAAEe,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,CAAC,IAAIC,EAAE,EAAEmD,EAAEpD,EAAE,GAAG,EAAEC,EAAEE,EAAE,SAASxN,EAAEwN,EAAE,SAAS3B,EAAE2B,EAAE,SAAS,CAAC1C,GAAG,EAAEuC,EAAE,KAAK,CAACd,GAAGe,EAAEE,EAAE,QAAQxN,GAAGwN,EAAE,QAAQ3B,CAAC,GAAGkvD,EAAEjwD,CAAC,EAAE,GAAG,EAAE,EAAEA,CAAC,CAACgB,EAAE,QAAQS,EAAEiB,EAAE,QAAQA,EAAE,QAAQA,EAAE,OAAO,EAAEA,EAAE,OAAO1B,EAAE,SAAS,OAAO,OAAO,OAAO0B,EAAE,KAAK,EAAE4hG,IAAIF,GAAG,QAAQ,qBAAqB,KAAK,IAAI,CAAC,CAAC,WAAW,CAAC,MAAMpjG,EAAE,KAAK,OAAO,OAAO0B,EAAE,CAAC1B,EAAE,KAAK,EAAE,CAAC,EAAEuF,EAAE,CAACvF,EAAE,KAAK,KAAK,IAAI,KAAK,GAAG,IAAIA,EAAE,KAAK,EAAEA,EAAE,KAAK,KAAK,IAAI,KAAK,GAAG,IAAIA,EAAE,KAAK,EAAE,CAAC,EAAEyB,EAAE,CAACzB,EAAE,KAAK,KAAK,IAAI,KAAK,GAAG,IAAIA,EAAE,IAAI,EAAEA,EAAE,MAAM,KAAK,IAAI,KAAK,GAAG,IAAIA,EAAE,KAAK,EAAE,KAAK,IAAI,KAAK,GAAG,IAAIA,EAAE,KAAK,EAAE,KAAK,IAAI,KAAK,GAAG,IAAIA,EAAE,IAAI,GAAG,KAAK,IAAI,KAAK,GAAG,IAAIA,EAAE,KAAK,EAAE,CAAC,EAAEyB,EAAE,CAAC,EAAE,KAAK,KAAKzB,EAAE,KAAKA,EAAE,KAAK,KAAK,IAAI,KAAK,GAAG,IAAIA,EAAE,IAAI,EAAE,KAAK,IAAI,KAAK,GAAG,IAAIA,EAAE,IAAI,EAAEyB,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,EAAE,MAAMhC,EAAE,CAAC,CAAA,EAAGiC,EAAE6D,EAAE9D,CAAC,EAAE,EAAE,CAAC,EAAEzB,EAAE,MAAMA,EAAE,MAAMA,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,IAAIjB,GAAE,OAAO,EAAE,IAAIU,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAEA,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAEA,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAEA,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAEA,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAEA,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAEA,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAEA,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAEA,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,SAAU,IAAIV,KAAG,cAAckhG,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,SAAU,IAAIlhG,KAAG,gBAAgB,CAACiB,EAAE,OAAOA,EAAE,OAAOA,EAAE,MAAM,CAAC,EAAE,EAAE,SAAU,IAAIjB,KAAG,UAAU,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC6kG,GAAG,IAAI,OAAO+nB,EAAE,EAAE/nB,GAAG,IAAI,OAAO+nB,EAAE,EAAE,MAAMC,GAAG,MAAM,MAAMC,WAAWP,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAChoB,IAAIF,GAAG,KAAK,mBAAmB,KAAK,IAAI,EAAE,MAAMpjG,EAAE,KAAK,OAAO0B,EAAE,KAAK,SAAS,UAAU,EAAE,EAAE,EAAE,KAAK,iBAAiBA,CAAC,EAAE,EAAE,KAAK,OAAO,OAAO,EAAE,EAAE,cAAcjC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAGwvD,EAAE,IAAI,aAAaxvD,CAAC,EAAE,IAAIc,EAAE,EAAEE,EAAE,EAAE,KAAK,SAAS,iBAAkB,SAAST,EAAE,EAAE,SAASA,EAAE0B,EAAE3C,EAAE,CAAC,QAAQwG,EAAEvF,EAAEuF,EAAE7D,EAAE,EAAE6D,EAAE,CAAC,GAAGhF,EAAEd,GAAGgB,EAAE,EAAE,CAAC,MAAMT,EAAEjB,EAAEwG,CAAC,EAAE,KAAM,EAAC,GAAQvF,IAAL,GAAO,CAAC,MAAM0B,EAAE1B,EAAE,MAAM4rH,EAAE,EAAE,QAAQ5rH,EAAE,EAAEjB,EAAE2C,EAAE,OAAO1B,EAAEjB,EAAE,EAAEiB,EAAEivD,EAAE1uD,CAAC,EAAE,WAAWmB,EAAE1B,CAAC,CAAC,EAAE,EAAEO,CAAC,CAAC,CAAC,EAAEE,CAAC,CAAC,GAAE,EAAET,EAAE,OAAOA,CAAC,CAAC,CAAG,EAACA,EAAE,QAAQivD,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAEq0C,IAAIF,GAAG,QAAQ,mBAAmB,KAAK,IAAI,CAAC,CAAC,iBAAiBpjG,EAAE,CAAC,MAAM0B,EAAE,GAAG,EAAE1B,EAAE,OAAO,IAAI,EAAE,EAAE,EAAE,EAAEP,EAAE,EAAE,QAAQwvD,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,CAAC,IAAIlwD,EAAE,MAAMwB,EAAEP,EAAEivD,CAAC,EAAE,GAAG1uD,EAAE,WAAW,UAAU,EAAExB,EAAEwB,EAAE,MAAMqrH,EAAE,EAAElqH,EAAE,GAAG,SAAS3C,EAAE,CAAC,CAAC,EAAE2C,EAAE,GAAG,SAAS3C,EAAE,CAAC,CAAC,EAAE2C,EAAE,GAAG,SAAS3C,EAAE,CAAC,CAAC,UAAUwB,EAAE,WAAW,QAAQ,EAAExB,EAAEwB,EAAE,MAAMqrH,EAAE,EAAElqH,EAAE,KAAK,WAAW3C,EAAE,CAAC,CAAC,EAAE2C,EAAE,KAAK,WAAW3C,EAAE,CAAC,CAAC,EAAE2C,EAAE,KAAK,WAAW3C,EAAE,CAAC,CAAC,UAAUwB,EAAE,WAAW,OAAO,EAAExB,EAAEwB,EAAE,MAAMqrH,EAAE,EAAMnsH,IAAJ,EAAMiC,EAAE,GAAG,WAAW3C,EAAE,CAAC,CAAC,EAAE,KAAK,UAAcU,IAAJ,EAAMiC,EAAE,GAAG,WAAW3C,EAAE,CAAC,CAAC,EAAE,KAAK,UAAcU,IAAJ,IAAQiC,EAAE,GAAG,WAAW3C,EAAE,CAAC,CAAC,EAAE,KAAK,WAAWU,GAAG,UAAUc,EAAE,WAAW,UAAU,EAAE,CAAC,EAAE0uD,EAAE,GAAG1uD,EAAE,OAAO,EAAE,KAAK,CAAC,GAAGA,EAAE,OAAO,CAAC,CAAC,OAAO,KAAK,OAAO,OAAOmB,EAAE,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM1B,EAAE,KAAK,OAAO,OAAO0B,EAAE,IAAI3C,GAAE,OAAO2C,EAAE,SAAU,IAAI3C,KAAG,cAAckhG,GAAG,EAAE,CAAC,CAAC,EAAEv+F,EAAE,SAAU,IAAI3C,KAAG,gBAAgB,CAACiB,EAAE,KAAKA,EAAE,KAAKA,EAAE,IAAI,CAAC,EAAE0B,EAAE,SAAU,IAAI3C,KAAG,UAAU,CAACiB,EAAE,GAAGA,EAAE,GAAGA,EAAE,EAAE,CAAC,EAAE0B,CAAC,CAAC,CAACkiG,GAAG,IAAI,KAAKioB,EAAE,EAAEjoB,GAAG,IAAI,QAAQ,cAAcioB,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,OAAO,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,QAAQ,CAACvoB,IAAIF,GAAG,KAAK,sBAAsB,KAAK,IAAI,EAAE,MAAM,EAAE3D,GAAG,KAAK,SAAS,IAAI,EAAE,EAAE,SAASz/F,EAAE0B,EAAE,SAAS3C,EAAE;AAAA,EAAK,CAAC,IAAIwG,EAAE,GAAG9D,EAAE,CAAE,EAAC,QAAQhC,EAAE,EAAEA,EAAEO,EAAE,OAAOP,GAAGiC,EAAE,CAAC,MAAMutD,EAAEqwC,GAAGt/F,EAAE,SAASP,EAAEA,EAAEiC,CAAC,CAAC,EAAEnB,EAAE0uD,EAAE,YAAYlwD,CAAC,EAAE,GAAQwB,IAAL,GAAOgF,GAAG0pD,MAAM,CAAC,MAAMjvD,EAAEuF,EAAE0pD,EAAE,OAAO,EAAE1uD,CAAC,EAAEkB,EAAEA,EAAE,OAAOzB,EAAE,MAAMjB,CAAC,CAAC,EAAEwG,EAAEhF,IAAI0uD,EAAE,OAAOlwD,EAAE,OAAO,GAAGkwD,EAAE,OAAO1uD,EAAExB,EAAE,MAAM,CAAC,CAAC,CAAC,OAAWwG,IAAL,IAAQ9D,EAAE,KAAK8D,CAAC,EAAE9D,CAAC,EAAE,IAAI,WAAW,EAAE,EAAE,GAAG,CAAC,EAAE1C,EAAE,KAAK,iBAAiB,CAAC,EAAEwG,EAAE,KAAK,OAAO,OAAO9D,EAAE1C,EAAE,gBAAgBU,EAAE8F,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAG,EAAE,IAAI,SAAS,CAAC,EAAE,EAAE,IAAI,aAAa9F,CAAC,EAAE,QAAQO,EAAE,EAAEA,EAAEP,EAAE,EAAEO,EAAE,EAAEA,CAAC,EAAE,EAAE,WAAW,EAAEA,EAAEyB,EAAE,EAAE,EAAE,KAAK,OAAO,QAAQ,EAAE8D,EAAE,GAAGA,EAAE,GAAGA,EAAE,EAAE,EAAE+9F,IAAIF,GAAG,QAAQ,sBAAsB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,MAAMj0F,WAAWm8G,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAChoB,IAAIF,GAAG,KAAK,oBAAoB,KAAK,IAAI,EAAE,MAAMpjG,EAAE,KAAK,OAAO0B,EAAE,CAAE,EAAC,EAAE+9F,GAAG,KAAK,SAAS,IAAI,EAAE,EAAE,IAAI,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,aAAa,EAAE,EAAE,EAAE,EAAEhgG,EAAE,IAAI,SAAS,CAAC,EAAE,GAAGiC,EAAE,IAAI,OAAO,aAAajC,EAAE,SAAS,GAAG,EAAEA,EAAE,SAAS,GAAG,EAAEA,EAAE,SAAS,GAAG,EAAEA,EAAE,SAAS,GAAG,CAAC,EAAEiC,EAAE,OAAO,CAACjC,EAAE,SAAS,GAAG,EAAEA,EAAE,SAAS,GAAG,CAAC,EAAOiC,EAAE,OAAO,CAAC,IAAf,IAAuBA,EAAE,OAAO,CAAC,IAAf,GAAiB,CAAC,MAAM1B,EAAE,EAAE,WAAW,QAAQ0B,EAAE,EAAEA,EAAE1B,EAAE0B,GAAG,EAAEjC,EAAE,WAAWiC,EAAEjC,EAAE,WAAWiC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAIutD,EAAE,GAAGvtD,EAAE,GAAG,EAAE,CAAC,EAAEA,EAAE,GAAG,EAAE,CAAC,EAAEA,EAAE,GAAG,EAAE,CAAC,EAAEA,EAAE,KAAK,EAAE,CAAC,EAAEA,EAAE,QAAQ,EAAE,CAAC,EAAEA,EAAE,QAAQ,EAAE,CAAC,EAAEA,EAAE,QAAQ,EAAE,CAAC,EAAEA,EAAE,GAAG,EAAE,CAAC,EAAEA,EAAE,GAAG,EAAE,CAAC,EAAEA,EAAE,GAAG,EAAE,CAAC,EAAEA,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,UAAUA,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,UAAUA,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,UAAUA,EAAE,MAAM,EAAE,EAAE,EAAEA,EAAE,KAAK,EAAE,EAAE,EAAEA,EAAE,MAAM,EAAE,EAAE,EAAEA,EAAE,KAAK,EAAE,EAAE,EAAEA,EAAE,KAAK,EAAE,EAAE,EAAEA,EAAE,KAAK,EAAE,EAAE,EAAEA,EAAE,KAAK,EAAE,EAAE,EAAEA,EAAE,KAAK,EAAE,EAAE,EAAEA,EAAE,MAAM,EAAE,EAAE,EAAEA,EAAE,KAAK,EAAE,EAAE,EAAEA,EAAE,OAAO,EAAE,EAAE,EAAEA,EAAE,OAAO,EAAE,EAAE,EAAEA,EAAE,QAAQ,EAAE,EAAE,EAAEA,EAAE,QAAQ,EAAE,EAAE,EAAEA,EAAE,QAAQ,EAAE,EAAE,EAAEA,EAAE,KAAK,EAAE,EAAE,EAAE1B,EAAE,OAAO0B,EAAMA,EAAE,OAAN,EAAWutD,EAAE,IAAI,aAAa,EAAE,KAAKvtD,EAAE,OAAOA,EAAE,GAAGA,EAAE,GAAGA,EAAE,EAAE,UAAcA,EAAE,OAAN,GAAY,GAAGutD,EAAE,IAAI,aAAa,IAAI,UAAU,EAAE,KAAKvtD,EAAE,OAAOA,EAAE,GAAGA,EAAE,GAAGA,EAAE,EAAE,CAAC,EAAS,EAAE,EAAE,IAAX,MAAoB,EAAE,EAAE,IAAV,IAAY,CAAC,MAAM1B,GAAG0B,EAAE,KAAKA,EAAE,MAAM,IAAI3C,EAAE,IAAI2C,EAAE,KAAKA,EAAE,KAAK1B,GAAG,QAAQ0B,EAAE,EAAE6D,EAAE0pD,EAAE,OAAOvtD,EAAE6D,EAAE,EAAE7D,EAAEutD,EAAEvtD,CAAC,EAAE1B,EAAEivD,EAAEvtD,CAAC,EAAE3C,CAAC,OAAOqkG,GAAG,MAAM,yBAAyB1hG,EAAE,IAAI,EAAE1B,EAAE,QAAQivD,EAAEvtD,EAAE,GAAGA,EAAE,GAAGA,EAAE,EAAE,EAAMA,EAAE,OAAN,GAAY1B,EAAE,SAAS0B,EAAE,KAAKA,EAAE,KAAKA,EAAE,MAAMA,EAAE,IAAI,EAAE4hG,IAAIF,GAAG,QAAQ,oBAAoB,KAAK,IAAI,CAAC,CAAC,WAAW,CAAC,MAAMpjG,EAAE,KAAK,OAAO,OAAOuF,EAAE,CAACvF,EAAE,KAAK,EAAE,CAAC,EAAEyB,EAAE,CAACzB,EAAE,KAAK,KAAK,IAAI,KAAK,GAAG,IAAIA,EAAE,KAAK,EAAEA,EAAE,KAAK,KAAK,IAAI,KAAK,GAAG,IAAIA,EAAE,KAAK,EAAE,CAAC,EAAEP,EAAE,CAACO,EAAE,KAAK,KAAK,IAAI,KAAK,GAAG,IAAIA,EAAE,IAAI,EAAEA,EAAE,MAAM,KAAK,IAAI,KAAK,GAAG,IAAIA,EAAE,KAAK,EAAE,KAAK,IAAI,KAAK,GAAG,IAAIA,EAAE,KAAK,EAAE,KAAK,IAAI,KAAK,GAAG,IAAIA,EAAE,IAAI,GAAG,KAAK,IAAI,KAAK,GAAG,IAAIA,EAAE,KAAK,EAAE,CAAC,EAAEP,EAAE,CAAC,EAAE,KAAK,KAAKO,EAAE,KAAKA,EAAE,KAAK,KAAK,IAAI,KAAK,GAAG,IAAIA,EAAE,IAAI,EAAE,KAAK,IAAI,KAAK,GAAG,IAAIA,EAAE,IAAI,EAAEP,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,EAAE,MAAMwvD,EAAE,CAAC,CAAA,EAAG1pD,EAAE9D,EAAEhC,CAAC,EAAEc,EAAE,CAAC,EAAEP,EAAE,GAAGA,EAAE,GAAGA,EAAE,EAAE,EAAES,EAAE,CAAC,EAAET,EAAE,KAAKA,EAAE,KAAKA,EAAE,IAAI,EAAEhB,EAAE,IAAID,GAAE,OAAOC,EAAE,IAAIiwD,EAAExuD,EAAE,CAAC,CAAC,EAAE,CAAC,EAAEF,EAAEE,EAAE,CAAC,CAAC,EAAEwuD,EAAExuD,EAAE,CAAC,CAAC,EAAE,CAAC,EAAEF,EAAEE,EAAE,CAAC,CAAC,EAAEwuD,EAAExuD,EAAE,CAAC,CAAC,EAAE,CAAC,EAAEF,EAAEE,EAAE,CAAC,CAAC,EAAE,EAAEwuD,EAAExuD,EAAE,CAAC,CAAC,EAAE,CAAC,EAAEF,EAAEE,EAAE,CAAC,CAAC,EAAEwuD,EAAExuD,EAAE,CAAC,CAAC,EAAE,CAAC,EAAEF,EAAEE,EAAE,CAAC,CAAC,EAAEwuD,EAAExuD,EAAE,CAAC,CAAC,EAAE,CAAC,EAAEF,EAAEE,EAAE,CAAC,CAAC,EAAE,EAAEwuD,EAAExuD,EAAE,CAAC,CAAC,EAAE,CAAC,EAAEF,EAAEE,EAAE,CAAC,CAAC,EAAEwuD,EAAExuD,EAAE,CAAC,CAAC,EAAE,CAAC,EAAEF,EAAEE,EAAE,CAAC,CAAC,EAAEwuD,EAAExuD,EAAE,CAAC,CAAC,EAAE,CAAC,EAAEF,EAAEE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAEzB,EAAE,YAAY,IAAI0C,EAAE1B,EAAE,QAAQA,EAAE,QAAQA,EAAE,OAAO,CAAC,EAAEhB,EAAE,SAAU,IAAID,KAAG,gBAAgBiB,EAAE,QAAQA,EAAE,QAAQA,EAAE,OAAO,CAAC,EAAEhB,CAAC,CAAC,CAAC4kG,GAAG,IAAI,MAAMz0F,EAAE,EAAEy0F,GAAG,IAAI,OAAOz0F,EAAE,EAAEy0F,GAAG,IAAI,MAAMz0F,EAAE,EAAE,MAAM28G,GAAG,MAAM,SAAS5mD,GAAG,EAAE,CAAC,OAAO,EAAE,KAAM,EAAC,MAAM4mD,EAAE,EAAE,IAAI,UAAU,CAAC,CAAC,MAAMC,WAAWT,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAChoB,IAAIF,GAAG,KAAK,sBAAsB,KAAK,IAAI,EAAE,MAAMpjG,EAAE,KAAK,OAAO0B,EAAE,KAAK,SAAS,UAAU,CAAC,EAAE,EAAE,CAAE,EAAC,IAAI,EAAE,EAAEA,EAAE,CAAC,EAAE,WAAW,SAAS,EAAE,SAASA,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAEjC,EAAEylE,GAAGxjE,EAAE,CAAC,CAAC,EAAE,EAAE,GAAGjC,EAAE,CAAC,EAAE,EAAE,KAAKA,EAAE,CAAC,EAAE,EAAE,KAAKA,EAAE,CAAC,EAAE,EAAE,GAAGA,EAAE,CAAC,EAAE,EAAE,KAAKA,EAAE,CAAC,EAAE,EAAE,KAAKA,EAAE,CAAC,EAAE,EAAE,GAAGA,EAAE,CAAC,EAAE,EAAE,KAAKA,EAAE,CAAC,EAAE,EAAE,KAAKA,EAAE,CAAC,EAAE,MAAMwvD,EAAEiW,GAAGxjE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAEutD,EAAE,CAAC,EAAE,KAAK,UAAU,EAAE,EAAEA,EAAE,CAAC,EAAE,KAAK,UAAU,EAAE,EAAEA,EAAE,CAAC,EAAE,KAAK,UAAU,EAAE,MAAMA,EAAE,CAAC,EAAE,EAAE,KAAKA,EAAE,CAAC,EAAE,EAAE,MAAMA,EAAE,CAAC,EAAE,MAAM1uD,EAAE,EAAE,KAAK,EAAE,KAAK,EAAEE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAEzB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE6F,EAAEtE,EAAEE,EAAEzB,EAAE0F,EAAE,IAAI,aAAaG,CAAC,EAAEqX,EAAE,KAAK,KAAK,EAAE3b,EAAEE,EAAE,CAAC,EAAE,IAAIf,EAAE,EAAEkL,EAAE,EAAE,KAAK,SAAS,iBAAkB,SAAS5K,EAAE,EAAE,SAASA,EAAE0B,EAAE6D,EAAE,CAAC,QAAQ9F,EAAEO,EAAEP,EAAEiC,EAAE,EAAEjC,EAAE,CAAC,MAAMO,EAAEuF,EAAE9F,CAAC,EAAE,GAAGmL,GAAG,IAAIA,EAAE,GAAGsR,GAAG,GAAGxc,EAAEmF,EAAE,QAAQnD,EAAE,EAAE3C,EAAE,EAAE2C,EAAE3C,EAAE,EAAE2C,EAAE,CAAC,MAAM3C,EAAE,WAAWiB,EAAE,OAAO,GAAG0B,EAAE,EAAE,CAAC,EAAE,GAAG,MAAM3C,CAAC,EAAE,MAAM2F,EAAEhF,GAAG,EAAEX,CAAC,SAASW,IAAImF,EAAE,CAAC,MAAMnD,EAAE1B,EAAE,KAAM,EAAC,GAAG0B,GAAaA,IAAV,QAAY,CAAC,MAAMA,EAAEwjE,GAAGllE,CAAC,EAAE,EAAE,KAAK0B,EAAE,CAAC,EAAE,EAAE,OAAOA,EAAE,CAAC,CAAC,CAAC,CAAC,EAAEkJ,CAAC,CAAC,GAAE,EAAE5K,EAAE,OAAOA,CAAC,CAAC,CAAC,EAAGA,EAAE,OAAO,EAAEA,EAAE,QAAQ0E,EAAEnE,EAAEE,EAAEzB,CAAC,EAAM,EAAE,OAAN,GAAgB,EAAE,SAAN,GAAcgB,EAAE,SAAS,OAAO,OAAO,EAAE,KAAK,EAAE,MAAM,EAAEsjG,IAAIF,GAAG,QAAQ,sBAAsB,KAAK,IAAI,CAAC,CAAC,WAAW,CAAC,MAAMpjG,EAAE,KAAK,OAAO,OAAO0B,EAAE,CAAC1B,EAAE,EAAE,EAAE,CAAC,EAAEuF,EAAE,CAACvF,EAAE,EAAE,KAAK,IAAI,KAAK,GAAG,IAAIA,EAAE,KAAK,EAAEA,EAAE,EAAE,KAAK,IAAI,KAAK,GAAG,IAAIA,EAAE,KAAK,EAAE,CAAC,EAAEyB,EAAE,CAACzB,EAAE,EAAE,KAAK,IAAI,KAAK,GAAG,IAAIA,EAAE,IAAI,EAAEA,EAAE,GAAG,KAAK,IAAI,KAAK,GAAG,IAAIA,EAAE,KAAK,EAAE,KAAK,IAAI,KAAK,GAAG,IAAIA,EAAE,KAAK,EAAE,KAAK,IAAI,KAAK,GAAG,IAAIA,EAAE,IAAI,GAAG,KAAK,IAAI,KAAK,GAAG,IAAIA,EAAE,KAAK,EAAE,CAAC,EAAEyB,EAAE,CAAC,EAAE,KAAK,KAAKzB,EAAE,EAAEA,EAAE,EAAE,KAAK,IAAI,KAAK,GAAG,IAAIA,EAAE,IAAI,EAAE,KAAK,IAAI,KAAK,GAAG,IAAIA,EAAE,IAAI,EAAEyB,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,EAAE,MAAMhC,EAAE,CAAC,CAAE,EAACiC,EAAE6D,EAAE9D,CAAC,EAAE,EAAE,CAAC,EAAEzB,EAAE,GAAGA,EAAE,GAAGA,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,IAAIjB,GAAE,OAAO,EAAE,IAAIU,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAEA,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAEA,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAEA,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAEA,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAEA,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAEA,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAEA,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAEA,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,SAAU,IAAIV,KAAG,gBAAgBiB,EAAE,KAAKA,EAAE,KAAKA,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAASgsH,GAAG,EAAE,EAAEjtH,EAAE,CAAC,IAAIwG,EAAE9D,EAAEhC,EAAE,GAAG,IAAI,GAAG,IAAIV,GAAG,IAAI,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEA,GAAG,EAAE,GAAG,EAAEA,GAAG,EAAE,EAAE,GAAG,EAAEA,GAAG,GAAG,EAAE,GAAG,GAAG,OAAO,EAAE,EAAG,CAAA,IAAK,GAAEwG,EAAExG,EAAE0C,EAAE,EAAEhC,EAAE,EAAE,MAAM,IAAK,GAAE8F,EAAE,EAAE9D,EAAE1C,EAAEU,EAAE,EAAE,MAAM,IAAK,GAAE8F,EAAE,EAAE9D,EAAE1C,EAAEU,EAAE,EAAE,MAAM,IAAK,GAAE8F,EAAE,EAAE9D,EAAE,EAAEhC,EAAEV,EAAE,MAAM,IAAK,GAAEwG,EAAE,EAAE9D,EAAE,EAAEhC,EAAEV,EAAE,MAAM,IAAK,GAAEwG,EAAExG,EAAE0C,EAAE,EAAEhC,EAAE,CAAC,CAAC,MAAM,CAAC8F,EAAE9D,EAAEhC,CAAC,CAAC,CAACmkG,GAAG,IAAI,QAAQmoB,EAAE,EAAEnoB,GAAG,IAAI,MAAMmoB,EAAE,EAAE,MAAME,GAAG,CAAC,IAAID,GAAG,EAAE,IAAI,GAAG,EAAE,OAAOA,GAAG,GAAG,IAAI,GAAG,EAAE,KAAKA,GAAG,GAAG,IAAI,GAAG,EAAE,OAAOA,GAAG,GAAG,IAAI,GAAG,EAAE,KAAKA,GAAG,GAAG,IAAI,GAAG,EAAE,MAAMA,GAAG,IAAI,GAAG,GAAG,EAAE,IAAIA,GAAG,IAAI,IAAI,GAAG,EAAE,KAAKA,GAAG,IAAI,IAAI,EAAE,EAAE,IAAIA,GAAG,IAAI,GAAG,EAAE,EAAE,KAAKA,GAAG,IAAI,GAAG,GAAG,EAAE,OAAOA,GAAG,IAAI,GAAG,GAAG,EAAE,QAAQA,GAAG,IAAI,GAAG,GAAG,EAAE,QAAQA,GAAG,IAAI,IAAI,GAAG,EAAE,KAAKA,GAAG,IAAI,GAAG,GAAG,EAAE,MAAMA,GAAG,GAAG,GAAG,GAAG,EAAE,MAAMA,GAAG,IAAI,GAAG,GAAG,EAAE,SAASA,GAAG,IAAI,GAAG,GAAG,EAAE,UAAUA,GAAG,GAAG,GAAG,GAAG,EAAE,WAAWA,GAAG,GAAG,GAAG,GAAG,EAAE,UAAUA,GAAG,IAAI,GAAG,GAAG,EAAE,SAASA,GAAG,IAAI,GAAG,GAAG,EAAE,UAAUA,GAAG,IAAI,GAAG,GAAG,EAAE,MAAMA,GAAG,EAAE,EAAE,GAAG,EAAE,KAAKA,GAAG,EAAE,EAAE,EAAE,EAAE,MAAMA,GAAG,GAAG,GAAG,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE7zD,GAAG,SAAS+zD,GAAG,6BAA6B55E,GAAG,WAAW65E,GAAG,iBAAiBC,GAAG,WAAW,SAASC,GAAG,EAAE,CAAC,IAAI,EAAEttH,EAAEwG,EAAE9D,EAAE,CAAA,EAAG,MAAMhC,GAAG,EAAE,EAAE,QAAQ2sH,GAAG,GAAG,GAAG,MAAMF,EAAE,EAAE,QAAQlsH,EAAE,EAAEA,EAAEP,EAAE,OAAO,EAAEO,EAAE,CAAC,MAAMivD,EAAExvD,EAAEO,CAAC,EAAE,GAASivD,EAAE,CAAC,IAAT,IAAW,EAAEA,EAAE,UAAU,EAAEA,EAAE,OAAO,CAAC,MAAM,CAAC,MAAMjvD,EAAEivD,EAAE,MAAM,GAAG,EAAMjvD,EAAE,SAAN,IAAyBA,EAAE,CAAC,IAAb,QAAejB,EAAEktH,GAAGjsH,EAAE,CAAC,CAAC,EAAYA,EAAE,CAAC,IAAb,QAAeuF,EAAE,SAASvF,EAAE,CAAC,CAAC,EAAaA,EAAE,CAAC,IAAd,UAAiByB,EAAE,KAAKzB,EAAE,CAAC,EAAE,QAAQsyC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,UAAUvzC,EAAE,YAAY0C,EAAE,UAAU8D,CAAC,CAAC,CAAC,SAAS+mH,GAAG,EAAE,CAAC,MAAM,GAAG,EAAE,EAAE,KAAM,GAAE,QAAQ,GAAG,EAAEvtH,EAAE,EAAE,QAAQ,GAAG,EAAEwG,EAAE,EAAE,OAAOxG,EAAE,CAAC,EAAE,MAAMo5D,EAAE,EAAE12D,EAAE,EAAE,OAAO,EAAE,EAAE1C,EAAE,CAAC,EAAEU,EAAE,CAAC,WAAW8F,EAAEA,EAAE,OAAO,CAAC,CAAC,EAAE,WAAWA,EAAEA,EAAE,OAAO,CAAC,CAAC,EAAE,WAAWA,EAAEA,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,QAAQvF,EAAE,EAAEA,GAAGuF,EAAE,OAAOvF,IAAI,CAAC,MAAM0B,EAAE6D,EAAEA,EAAE,OAAOvF,CAAC,EAAE0B,KAAKuqH,KAAK,EAAEA,GAAG1mH,EAAEA,EAAE,OAAOvF,CAAC,CAAC,GAAG0B,EAAE,WAAW,OAAO,IAAI,EAAE,SAASA,EAAE,UAAU,CAAC,CAAC,GAAGA,EAAE,WAAW,IAAI,IAAI,EAAE,WAAWA,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,GAAGA,EAAE,WAAW,GAAG,IAAI,EAAE,IAAIA,EAAE,WAAW,GAAG,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,MAAMD,EAAE,SAAShC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAC,SAAS8sH,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,QAAQ,GAAG,EAAExtH,EAAE,EAAE,QAAQ,GAAG,EAAE,OAAO,EAAE,UAAe,IAAL,GAAO,EAAE,EAAE,EAAOA,IAAL,GAAOA,EAAE,MAAM,EAAE,KAAM,CAAA,CAAC,SAASytH,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,QAAQ,GAAG,EAAE,OAAW,IAAL,GAAO,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,SAASC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG1tH,EAAE,GAAGwG,EAAE,CAAA,EAAG,MAAM9D,GAAG,EAAE,EAAE,QAAQ2qH,GAAG,GAAG,GAAG,MAAMF,EAAE,EAAE,QAAQlsH,EAAE,EAAEA,EAAEyB,EAAE,OAAO,EAAEzB,EAAE,CAAC,MAAMP,EAAEgC,EAAEzB,CAAC,EAAE,GAASP,EAAE,CAAC,IAAT,IAAW,EAAEA,EAAE,UAAU,EAAEA,EAAE,OAAO,CAAC,MAAM,CAAC,MAAMO,EAAEP,EAAE,MAAM,GAAG,EAAMO,EAAE,SAAN,EAAwBA,EAAE,CAAC,IAAd,SAAgBjB,EAAE,KAAKiB,EAAE,CAAC,EAAE,QAAQsyC,GAAG,EAAE,CAAC,EAAE/sC,EAAEvF,EAAE,CAAC,CAAC,EAAEA,EAAE,CAAC,EAAE,QAAQsyC,GAAG,EAAE,EAAE/sC,EAAEvF,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,WAAWuF,EAAE,aAAaxG,CAAC,CAAC,CAAC6kG,GAAG,IAAI,MAAM,cAAcijB,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,UAAU,CAAC,QAAQ,CAACvjB,IAAIF,GAAG,KAAK,oBAAoB,KAAK,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,SAAS,OAAO,SAAS,OAAO,UAAU,OAAO,QAAQ,OAAO,MAAM,CAAA,EAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAE,EAAC,aAAa,CAAA,EAAG,WAAW,GAAG,gBAAgB,CAAA,EAAG,SAAS,CAAE,EAAC,YAAY,CAAA,EAAG,UAAU,CAAE,EAAC,YAAY,EAAE,EAAE,IAAIrkG,EAAEwG,EAAE,KAAK,SAAS,EAAE,IAAI9D,EAAEhC,EAAEwvD,EAAE1uD,EAAEE,EAAEzB,EAAE6F,EAAEH,EAAE,EAAEhF,EAAEkL,EAAEjG,EAAEC,EAAE7E,EAAES,EAAE,EAAE,EAAEgB,EAAEwzF,EAAE2S,EAAEC,EAAE9Q,EAAEzkC,EAAE,GAAGkhC,EAAE,GAAGtqE,EAAE,GAAG4+E,EAAE,GAAG50C,EAAE,KAAKP,EAAE,KAAKg1C,EAAE,GAAGkJ,GAAE,GAAGC,EAAE,GAAGC,EAAE,GAAGC,GAAE,GAAGC,GAAE,GAAG,GAAG,KAAK,SAAS,iBAAkB,SAAStvG,EAAE,EAAE,SAASA,EAAEs0F,GAAEvjC,GAAE,CAAC,QAAQ,EAAE/wD,EAAE,EAAEs0F,GAAE,EAAE,EAAE,CAAC,MAAMt0F,GAAE+wD,GAAE,CAAC,EAAE,GAAS/wD,GAAE,CAAC,IAAT,MAAa2wD,EAAE,GAAGppC,EAAE,GAAGy+E,EAAE,GAAGmJ,EAAE,GAAGE,GAAE,GAAGC,GAAE,IAAItvG,GAAE,GAAGA,GAAE,WAAW,UAAU,EAAE,CAAC,GAAG,CAAC,UAAUjB,EAAE,SAASzB,EAAE,YAAY6F,CAAC,EAAEwnH,GAAG3qH,EAAC,EAAE2wD,EAAE,GAAGkhC,EAAE,GAAG9zF,EAAE,CAAE,EAACwvD,EAAE,CAAA,EAAG1uD,EAAE,CAAE,EAACkB,EAAEhB,EAAE1B,IAAI8F,EAAEA,EAAE,OAAO9F,CAAC,GAAGwG,IAAIV,EAAEA,EAAE,OAAOU,CAAC,GAAG,EAAE,SAAS,KAAK,CAAC,KAAKvG,EAAE,YAAY6F,EAAE,WAAWpF,EAAE,cAAcwvD,EAAE,WAAW1uD,CAAC,CAAC,CAAC,SAASmB,GAAE,WAAW,aAAa,EAAE,CAAC,GAAG,CAAC,YAAYD,EAAE,SAAShC,EAAE,UAAUwvD,EAAE,UAAU1uD,CAAC,EAAE8rH,GAAG3qH,EAAC,EAAED,GAAGA,EAAE,QAAS,SAASC,GAAE,CAAC,EAAE,WAAWA,EAAC,IAAI,EAAE,WAAWA,EAAC,EAAE,CAAC,OAAO,GAAG,QAAQ,EAAE,EAAE,CAAC,EAAGunB,EAAE,GAAG4+E,EAAE,GAAG50C,EAAE,KAAKP,EAAE,KAAK7tD,EAAE,CAAA,EAAGH,EAAE,CAAE,EAAC,EAAE,CAAA,EAAGhF,EAAE,CAAE,EAACkL,EAAE,GAAGjG,EAAE,CAAA,EAAGlE,EAAEF,EAAEvB,EAAE,CAAA,EAAGiwD,GAAGjwD,EAAE,KAAKiwD,CAAC,EAAElwD,IAAI0C,EAAEA,EAAE,OAAO1C,CAAC,GAAGwG,IAAI9D,EAAEA,EAAE,OAAO8D,CAAC,GAAG,EAAE,YAAY,KAAK,CAAC,KAAK9F,EAAE,YAAYgC,EAAE,YAAYoD,EAAE,YAAYH,EAAE,eAAe,EAAE,eAAehF,EAAE,YAAYkL,EAAE,YAAYjG,EAAE,MAAM3F,CAAC,CAAC,CAAC,SAAS0C,GAAE,WAAW,WAAW,EAAE,CAAC,GAAG,CAAC,SAASD,EAAE,UAAUhC,EAAE,YAAYwvD,CAAC,EAAEo9D,GAAG3qH,EAAC,EAAEutD,GAAGA,EAAE,QAAS,SAASvtD,EAAE,CAAC,EAAE,WAAWA,CAAC,IAAI,EAAE,WAAWA,CAAC,EAAE,CAAC,OAAO,GAAG,QAAQ,EAAE,EAAE,CAAC,EAAGgmG,EAAE,GAAGkJ,GAAE,GAAGpwG,EAAE,GAAGoE,EAAE,CAAA,EAAG,EAAE,CAAE,EAAC,EAAE,CAAA,EAAG7E,EAAEN,EAAEV,IAAIkwD,EAAEA,EAAE,OAAOlwD,CAAC,GAAGwG,IAAI0pD,EAAEA,EAAE,OAAO1pD,CAAC,GAAG,EAAE,UAAU,KAAK,CAAC,KAAK9D,EAAE,YAAYwtD,EAAE,WAAWzuD,EAAE,YAAYoE,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC,SAASlD,GAAE,WAAW,aAAa,GAAGA,GAAE,WAAW,eAAe,EAAE,CAAC,GAAG,CAAC,YAAYD,EAAE,SAAShC,EAAE,UAAUwvD,CAAC,EAAEo9D,GAAG3qH,EAAC,EAAED,GAAGA,EAAE,QAAS,SAASC,EAAE,CAAC,EAAE,WAAWA,CAAC,IAAI,EAAE,WAAWA,CAAC,EAAE,CAAC,OAAO,GAAG,QAAQ,EAAE,EAAE,CAAC,EAAGmvG,EAAE,GAAGC,EAAE,GAAG9b,EAAE,GAAG2S,EAAE,CAAA,EAAGC,EAAE,CAAE,EAAC9Q,EAAE,CAAA,EAAGt1F,EAAEytD,EAAElwD,IAAI0C,EAAEA,EAAE,OAAO1C,CAAC,GAAGwG,IAAI9D,EAAEA,EAAE,OAAO8D,CAAC,GAAG,EAAE,YAAY,KAAK,CAAC,KAAK9F,EAAE,YAAYgC,EAAE,WAAWuzF,EAAE,cAAc2S,EAAE,WAAWC,EAAE,WAAW9Q,CAAC,CAAC,CAAC,SAASp1F,GAAE,WAAW,OAAO,EAAEqvG,GAAE,GAAG,EAAE,MAAM,KAAKrvG,GAAE,OAAO,CAAC,CAAC,UAAUA,GAAE,WAAW,UAAU,EAAEsvG,GAAE,GAAG,EAAE,SAAS,KAAKtvG,GAAE,OAAO,CAAC,CAAC,UAAU2wD,EAAE,CAAC,GAAG,CAAC,MAAMryD,EAAE,MAAMjB,EAAE,SAASwG,CAAC,EAAE+mH,GAAG5qH,EAAC,EAAQ1B,IAAN,IAAQA,EAAEuzF,EAAEA,EAAEvzF,EAAWjB,IAAT,SAAaA,EAAE0C,GAAGhC,EAAE,KAAKO,CAAC,EAAEivD,EAAE,KAAK,GAAG1pD,CAAC,EAAEhF,EAAE,KAAK,GAAGxB,CAAC,CAAC,SAASkqB,EAAE,CAAC,IAAIjpB,EAAE0B,GAAE,QAAQ,UAAU;AAAA,EAAK,EAAE,MAAM,IAAI,EAAE,QAAQ0F,GAAE,EAAEA,GAAEpH,EAAE,OAAOoH,KAAI,CAAC,IAAI1F,EAAE1B,EAAEoH,EAAC,EAAE,CAAC,MAAMrI,EAAE,MAAMwG,EAAE,MAAM9D,GAAE,SAAShC,EAAE,YAAYwvD,EAAC,EAAEq9D,GAAG5qH,CAAC,EAAQ3C,IAAN,IAAQA,EAAE8oG,EAAEA,EAAE9oG,EAAWwG,IAAT,SAAaA,EAAE9E,GAAGwuD,IAAUgE,IAAP,OAAWxxD,IAAGzC,EAAE,KAAKyC,EAAC,EAAEoD,EAAE,KAAKgjG,CAAC,EAAE,EAAE,KAAK,GAAG50C,CAAC,EAAEroD,EAAE,KAAK,GAAG8nD,CAAC,EAAEhuD,EAAE,KAAK3F,CAAC,EAAEW,EAAE,KAAK,GAAGD,CAAC,EAAEkF,EAAE,KAAK,GAAGY,CAAC,GAAGsiG,EAAE9oG,EAAEk0D,EAAExzD,EAAEizD,EAAEntD,CAAC,CAAC,SAASmiG,EAAE,CAAC,GAAG,CAAC,MAAM1nG,EAAE,OAAOjB,EAAE,MAAMwG,EAAE,SAAS9D,CAAC,EAAE6qH,GAAG5qH,EAAC,EAAQ1B,IAAN,IAAQA,EAAE4wG,GAAEA,GAAE5wG,EAAWjB,IAAT,SAAaA,EAAE,GAAYwG,IAAT,SAAaA,EAAExF,GAAGS,EAAE,KAAKR,CAAC,EAAE4E,EAAE,KAAK7F,CAAC,EAAE,EAAE,KAAK,GAAG0C,CAAC,EAAE,EAAE,KAAK,GAAG8D,CAAC,CAAC,SAASsrG,EAAE,CAAC,GAAG,CAAC,MAAM7wG,EAAE,MAAMjB,EAAE,SAASwG,EAAE,gBAAgB9D,CAAC,EAAE6qH,GAAG5qH,EAAC,EAAQ1B,IAAN,IAAQA,EAAE8wG,EAAEA,EAAE9wG,EAAWjB,IAAT,SAAaA,EAAEyC,GAAGwzF,EAAE,KAAKh1F,CAAC,EAAE2nG,EAAE,KAAK,GAAGpiG,CAAC,EAAEqiG,EAAE,KAAKnmG,CAAC,EAAEq1F,EAAE,KAAK,GAAG/3F,CAAC,CAAC,SAASgyG,GAAE,EAAE,MAAM,KAAKrvG,EAAC,UAAUsvG,GAAE,EAAE,SAAS,KAAKtvG,EAAC,UAAUA,GAAE,WAAW,WAAW,EAAE,EAAE,SAAS,SAASA,GAAE,OAAO,CAAC,EAAE,MAAM,UAAUA,GAAE,WAAW,WAAW,EAAE,EAAE,SAAS,WAAWA,GAAE,WAAW,UAAU,EAAE,EAAE,SAAS,EAAE6qH,GAAG7qH,EAAC,UAAUA,GAAE,WAAW,UAAU,EAAE,EAAE,QAAQ6qH,GAAG7qH,EAAC,UAAUA,GAAE,WAAW,QAAQ,EAAE,CAAC,GAAG,CAAC,UAAU6D,EAAE,WAAW9D,EAAE,aAAahC,CAAC,EAAEgtH,GAAG/qH,EAAC,EAAE,EAAE,UAAU6D,CAAC,IAAI,EAAE,UAAUA,CAAC,EAAE,CAAC,SAAS,GAAG,QAAQ,EAAE,EAAExG,EAAEU,GAAGV,GAAGA,EAAE,QAAS,SAAS2C,EAAE,CAAC,EAAE,WAAWA,CAAC,IAAI,EAAE,WAAWA,CAAC,EAAE,CAAC,OAAO,GAAG,QAAQ,EAAE,EAAE,CAAC,EAAG,QAAQA,KAAKD,EAAE,EAAE,UAAU8D,CAAC,EAAE7D,CAAC,EAAED,EAAEC,CAAC,CAAC,SAASA,GAAE,WAAW,WAAW,EAAE,CAAC,KAAK,CAAC,UAAU3C,EAAE,WAAW0C,EAAE,aAAahC,CAAC,EAAEgtH,GAAG/qH,EAAC,EAAE,EAAE,aAAa3C,CAAC,IAAI,EAAE,aAAaA,CAAC,EAAE,CAAC,SAAS,GAAG,QAAQ,EAAE,EAAEwG,EAAE9F,GAAG8F,GAAGA,EAAE,QAAS,SAAS7D,EAAE,CAAC,EAAE,WAAWA,CAAC,IAAI,EAAE,WAAWA,CAAC,EAAE,CAAC,OAAO,GAAG,QAAQ,EAAE,EAAE,CAAG,EAAC,QAAQA,KAAKD,EAAE,EAAE,aAAa1C,CAAC,EAAE2C,CAAC,EAAED,EAAEC,CAAC,CAAC,SAASA,GAAE,WAAW,SAAS,EAAE,CAAC,MAAM3C,EAAEwtH,GAAG7qH,EAAC,EAAE6D,EAAEinH,GAAG9qH,EAAC,EAAE,EAAE,WAAW3C,CAAC,IAAI,EAAE,WAAWA,CAAC,EAAE,CAAC,OAAO,GAAG,QAAQ,EAAE,GAAUwG,IAAP,KAAS,EAAE,WAAWxG,CAAC,EAAE,QAAQ,GAAWwG,IAAR,MAAU,EAAE,WAAWxG,CAAC,EAAE,QAAQ,GAAcwG,IAAX,WAAe,EAAE,WAAWxG,CAAC,EAAE,OAAO,GAAG,SAAS2C,GAAE,WAAW,cAAc,EAAE,CAAC,KAAK,CAAC,UAAU3C,EAAE,WAAWwG,CAAC,EAAEknH,GAAG/qH,EAAC,EAAE,EAAE,gBAAgB3C,CAAC,EAAE,CAAC,GAAG,OAAO,KAAKwG,CAAC,EAAE,CAAC,EAAE,QAAQ4mH,GAAG,EAAE,CAAC,CAAC,MAAM,QAAQ,IAAIzqH,EAAC,OAAO2wD,EAAE,GAAGppC,EAAE,GAAGy+E,EAAE,GAAGmJ,EAAE,EAAE,CAAC,GAAE,EAAEnvG,EAAE,OAAOA,CAAC,CAAC,CAAC,EAAG,EAAE,KAAK,EAAE,MAAM,KAAK;AAAA,CAAI,EAAE,KAAI,EAAG,EAAE,QAAQ,EAAE,SAAS,KAAK;AAAA,CAAI,EAAE,KAAM,EAAC,EAAE,YAAY,CAAC,IAAI3C,EAAE,CAAE,EAAC,EAAE,YAAY,QAAS,SAASiB,EAAE,CAACjB,EAAE,KAAK,SAASiB,GAAE,CAAC,GAAG,CAAC,WAAW0B,GAAE,cAAc3C,GAAE,WAAWwG,EAAE,WAAW9D,EAAC,EAAEzB,GAAEP,EAAE,CAAE,EAACwvD,EAAE,GAAG1uD,EAAE,CAAE,EAACE,EAAE,CAAA,EAAG,QAAQT,GAAE,EAAEA,GAAEyB,GAAE,OAAO,EAAEzB,KAAI,CAAC,IAAIhB,EAAE,EAAEgB,GAAE6E,GAAE,EAAE7E,GAAEyB,GAAEzC,EAAE,CAAC,GAAGyC,GAAEzC,EAAE,CAAC,IAAIS,EAAE,KAAKiC,GAAE1C,CAAC,CAAC,EAAES,EAAE,KAAKiC,GAAE1C,EAAE,CAAC,CAAC,EAAES,EAAE,KAAKiC,GAAE1C,EAAE,CAAC,CAAC,EAAEyB,EAAE,KAAKgB,GAAEzC,CAAC,CAAC,EAAEyB,EAAE,KAAKgB,GAAEzC,EAAE,CAAC,CAAC,EAAEyB,EAAE,KAAKgB,GAAEzC,EAAE,CAAC,CAAC,EAAEiwD,EAAE,KAAKlwD,GAAE8F,EAAC,CAAC,EAAEoqD,EAAE,KAAKlwD,GAAE8F,GAAE,CAAC,CAAC,EAAEoqD,EAAE,KAAKlwD,GAAE8F,GAAE,CAAC,CAAC,EAAEoqD,EAAE,KAAKlwD,GAAE8F,GAAE,CAAC,CAAC,EAAEoqD,EAAE,KAAKlwD,GAAE8F,GAAE,CAAC,CAAC,EAAEoqD,EAAE,KAAKlwD,GAAE8F,GAAE,CAAC,CAAC,EAAEoqD,EAAE,KAAKlwD,GAAE8F,GAAE,CAAC,CAAC,EAAEoqD,EAAE,KAAKlwD,GAAE8F,GAAE,CAAC,CAAC,EAAEoqD,EAAE,KAAKlwD,GAAE8F,GAAE,CAAC,CAAC,EAAEtE,EAAE,KAAKgF,EAAEV,EAAC,CAAC,EAAEtE,EAAE,KAAKgF,EAAEV,GAAE,CAAC,CAAC,EAAEtE,EAAE,KAAKgF,EAAEV,GAAE,CAAC,CAAC,EAAEtE,EAAE,KAAKgF,EAAEV,GAAE,CAAC,CAAC,EAAEtE,EAAE,KAAKgF,EAAEV,GAAE,CAAC,CAAC,EAAEtE,EAAE,KAAKgF,EAAEV,GAAE,CAAC,CAAC,EAAEtE,EAAE,KAAKgF,EAAEV,GAAE,CAAC,CAAC,EAAEtE,EAAE,KAAKgF,EAAEV,GAAE,CAAC,CAAC,EAAEtE,EAAE,KAAKgF,EAAEV,GAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK7E,GAAE,KAAK,YAAYA,GAAE,YAAY,WAAWP,EAAE,cAAcwvD,EAAE,WAAWxuD,EAAE,WAAWF,CAAC,CAAC,EAAE,SAASP,GAAE,CAAC,GAAG,CAAC,WAAWjB,GAAE,cAAcwG,GAAE,WAAW9D,EAAE,WAAWhC,EAAC,EAAEO,GAAEivD,EAAE,GAAG,QAAQjvD,EAAE,EAAEA,EAAE,GAAGjB,GAAE,OAAO,GAAG,EAAEiB,EAAEivD,EAAEjvD,CAAC,EAAEjB,GAAEiB,EAAE,EAAE,KAAK,MAAMA,EAAE,CAAC,CAAC,EAAE,IAAIO,EAAE,GAAG,QAAQP,EAAE,EAAEA,EAAE,GAAGP,GAAE,OAAO,GAAG,EAAEO,EAAEO,EAAEP,CAAC,EAAEP,GAAEO,EAAE,EAAE,KAAK,MAAMA,EAAE,CAAC,CAAC,EAAE,IAAIS,EAAE,CAAE,EAAC,QAAQT,EAAE,EAAEA,EAAE,GAAGuF,GAAE,OAAO,EAAE,GAAG,EAAEvF,EAAES,EAAET,CAAC,EAAEuF,GAAEvF,EAAE,EAAE,KAAK,MAAMA,EAAE,CAAC,CAAC,EAAE,IAAIhB,EAAE,CAAE,EAAC,QAAQgB,EAAE,EAAEA,EAAE,GAAGyB,EAAE,OAAO,EAAE,GAAG,EAAEzB,EAAEhB,EAAEgB,CAAC,EAAEyB,EAAEzB,EAAE,EAAE,KAAK,MAAMA,EAAE,CAAC,CAAC,EAAE,IAAI6E,GAAE,GAAG,QAAQ7E,EAAE,EAAEA,EAAES,EAAE,OAAO,EAAE,EAAET,EAAE6E,GAAE,KAAK,IAAInD,EAAEjB,EAAE,EAAET,CAAC,EAAES,EAAE,EAAET,CAAC,EAAE,EAAES,EAAE,EAAET,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,KAAKA,GAAE,KAAK,YAAYA,GAAE,YAAY,WAAWivD,EAAE,cAAcxuD,EAAE,WAAWF,EAAE,WAAWvB,CAAC,CAAC,EAAEgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAG,EAAE,YAAYjB,CAAC,CAACukG,IAAIF,GAAG,QAAQ,oBAAoB,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,MAAMspB,WAAW7F,EAAE,CAAC,YAAY7mH,EAAE0B,EAAE,CAAC,MAAM1B,EAAE0B,CAAC,EAAE,KAAK,OAAO,KAAK,UAAS,EAAG,KAAK,QAAQ,IAAIsyG,GAAG,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,SAAS,CAAC,IAAI,WAAW,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,IAAIh0G,EAAE,KAAK,OAAO,MAAM,KAAK,SAAS,QAAQ,EAAE,KAAK,QAAQ,aAAaA,CAAC,CAAC,CAAC,CAAC,MAAM2sH,GAAG,UAAU,CAAC,KAAK,OAAO,CAAC,eAAe,qDAAqD,eAAe,sDAAsD,WAAW,sCAAsC,YAAY,kDAAkD,eAAe,sFAAsF,sBAAsB,0HAA0H,mBAAmB,8FAA8F,eAAe,gBAAgB,kBAAkB,oBAAoB,yBAAyB,WAAW,qBAAqB,UAAU,CAAC,EAAEA,GAAG,UAAU,CAAC,YAAYA,GAAG,QAAQ,SAAS,EAAE,CAAC,KAAK,KAAK,CAAC,EAAE,mBAAmB,UAAU,CAAC,IAAI,EAAE,CAAC,QAAQ,GAAG,OAAO,CAAA,EAAG,SAAS,CAAE,EAAC,QAAQ,CAAA,EAAG,YAAY,SAAS3sH,EAAE0B,EAAE,CAAC,GAAG,KAAK,QAAa,KAAK,OAAO,kBAAjB,GAAiC,OAAO,KAAK,OAAO,KAAK1B,EAAE,KAAK,KAAK,OAAO,gBAAqB0B,IAAL,IAAQ,KAAK,OAAO,CAAC,KAAK1B,GAAG,GAAG,SAAS,CAAC,SAAS,CAAA,EAAG,QAAQ,CAAE,CAAA,EAAE,gBAAqB0B,IAAL,EAAM,EAAE,KAAK,QAAQ,KAAK,KAAK,MAAM,CAAC,EAAE,iBAAiB,SAAS1B,EAAE0B,EAAE,CAAC,IAAI,EAAE,SAAS1B,EAAE,EAAE,EAAE,MAAO,IAAG,GAAG,EAAE,EAAE,EAAE,EAAE0B,EAAE,EAAE,EAAE,iBAAiB,SAAS1B,EAAE0B,EAAE,CAAC,IAAI,EAAE,SAAS1B,EAAE,EAAE,EAAE,MAAO,IAAG,GAAG,EAAE,EAAE,EAAE,EAAE0B,EAAE,EAAE,EAAE,UAAU,SAAS1B,EAAE0B,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,SAAS,EAAE,KAAK,OAAO,SAAS,SAAS,EAAE,KAAK,EAAE1B,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAEA,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAEA,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE0B,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAEA,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAEA,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,SAAS1B,EAAE,CAAC,IAAI0B,EAAE,KAAK,SAAS,EAAE,KAAK,OAAO,SAAS,SAAS,EAAE,KAAKA,EAAE1B,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK0B,EAAE1B,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK0B,EAAE1B,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,SAASA,EAAE0B,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,QAAQ,EAAE,KAAK,OAAO,SAAS,QAAQ,EAAE,KAAK,EAAE1B,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAEA,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAEA,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE0B,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAEA,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAEA,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,SAAS1B,EAAE0B,EAAE,EAAE,EAAE,EAAEjC,EAAEwvD,EAAE1uD,EAAE,CAAC,IAAIE,EAAEzB,EAAE,KAAK,SAAS,OAAO6F,EAAE,KAAK,iBAAiB7E,EAAEhB,CAAC,EAAE0F,EAAE,KAAK,iBAAiBhD,EAAE1C,CAAC,EAAEkd,EAAE,KAAK,iBAAiB,EAAEld,CAAC,EAAE,GAAY,IAAT,OAAW,KAAK,UAAU6F,EAAEH,EAAEwX,CAAC,GAAGzb,EAAE,KAAK,iBAAiB,EAAEzB,CAAC,EAAE,KAAK,UAAU6F,EAAEH,EAAEjE,CAAC,EAAE,KAAK,UAAUiE,EAAEwX,EAAEzb,CAAC,GAAY,IAAT,OAAW,CAAC,IAAIf,EAAE,KAAK,QAAQ,OAAOmF,EAAE,KAAK,iBAAiB,EAAEnF,CAAC,EAAEgF,EAAE,IAAIjF,EAAEoF,EAAE,KAAK,iBAAiBpF,EAAEC,CAAC,EAAEwc,EAAE,IAAI+yC,EAAEpqD,EAAE,KAAK,iBAAiBoqD,EAAEvvD,CAAC,EAAW,IAAT,OAAW,KAAK,UAAUmF,EAAEH,EAAEwX,CAAC,GAAGzb,EAAE,KAAK,iBAAiBF,EAAEb,CAAC,EAAE,KAAK,UAAUmF,EAAEH,EAAEjE,CAAC,EAAE,KAAK,UAAUiE,EAAEwX,EAAEzb,CAAC,EAAE,CAAC,EAAE,gBAAgB,SAAST,EAAE,CAAC,KAAK,OAAO,SAAS,KAAK,OAAO,QAAQ0B,EAAE,KAAK,SAAS,OAAO,EAAE,EAAE,EAAE1B,EAAE,OAAO,EAAE,EAAE,IAAI,KAAK,cAAc,KAAK,iBAAiBA,EAAE,CAAC,EAAE0B,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,GAAG,EAAE,EAAE,CAAC,EAAE,MAAM,SAAS,EAAE,CAAC,IAAI,EAAE3C,EAAEwG,EAAE,KAAK,qBAA0B,EAAE,QAAQ;AAAA,CAAM,IAArB,KAAyB,EAAE,EAAE,QAAQ,QAAQ;AAAA,CAAI,GAAQ,EAAE,QAAQ;AAAA,CAAM,IAArB,KAAyB,EAAE,EAAE,QAAQ,QAAQ,EAAE,GAAG,IAAI9D,EAAE,EAAE,MAAM;AAAA,CAAI,EAAEhC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA,EAAG,EAAc,MAAM,GAAG,UAArB,WAA8B,IAAI,EAAE,EAAEV,EAAE0C,EAAE,OAAO,EAAE1C,EAAE,IAAI,GAAGU,EAAEgC,EAAE,CAAC,GAAOhC,EAAE,EAAEA,EAAE,WAAWA,EAAE,QAAQ,SAAhC,IAA+C,EAAEA,EAAE,OAAO,CAAC,KAAnB,KAAsB,GAAS,IAAN,KAAS,IAAU,EAAEA,EAAE,OAAO,CAAC,KAAnB,MAA+B,EAAE,KAAK,OAAO,eAAe,KAAKA,CAAC,KAA3C,KAA8C8F,EAAE,SAAS,KAAK,WAAW,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,UAAgB,IAAN,MAAiB,EAAE,KAAK,OAAO,eAAe,KAAK9F,CAAC,KAA3C,KAA8C8F,EAAE,QAAQ,KAAK,WAAW,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,UAAgB,IAAN,KAAgB,KAAK,OAAO,WAAW,KAAK9F,CAAC,IAApC,KAAsC,MAAM,IAAI,MAAM,sCAAsCA,EAAE,GAAG,UAAgB,IAAN,KAAQ,IAAW,EAAE,KAAK,OAAO,sBAAsB,KAAKA,CAAC,KAAlD,KAAqD8F,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,UAAiB,KAAK,OAAO,eAAe,KAAK9F,CAAC,IAAxC,KAAgD,IAAW,EAAE,KAAK,OAAO,mBAAmB,KAAKA,CAAC,KAA/C,KAAkD8F,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAW,EAAE,KAAK,OAAO,YAAY,KAAK9F,CAAC,KAAxC,KAA2C,MAAM,IAAI,MAAM,0BAA0BA,EAAE,GAAG,EAAE8F,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAe,IAAN,IAAQ,CAAC,IAAI,EAAE9F,EAAE,UAAU,CAAC,EAAE,OAAO,MAAM,GAAG,EAAEiF,EAAE,CAAA,EAAGwX,EAAE,CAAE,EAAC,GAAQzc,EAAE,QAAQ,GAAG,IAAlB,GAAoBiF,EAAE,MAAO,SAAQhF,EAAE,EAAE,EAAE,EAAE,OAAOA,EAAE,EAAEA,IAAI,CAAC,IAAIiF,EAAE,EAAEjF,CAAC,EAAE,MAAM,GAAG,EAAOiF,EAAE,CAAC,IAAR,IAAWD,EAAE,KAAKC,EAAE,CAAC,CAAC,EAAOA,EAAE,CAAC,IAAR,IAAWuX,EAAE,KAAKvX,EAAE,CAAC,CAAC,CAAC,CAACY,EAAE,gBAAgBb,EAAEwX,CAAC,CAAC,UAAiB,EAAE,KAAK,OAAO,eAAe,KAAKzc,CAAC,KAA3C,KAA8C,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,KAAM,EAAC8F,EAAE,YAAY,CAAC,CAAC,SAAS,MAAK,OAAO,qBAAqB,KAAK9F,CAAC,GAAQ,GAAG,MAAK,OAAO,yBAAyB,KAAKA,CAAC,GAAQ,GAAU,KAAK,OAAO,kBAAkB,KAAKA,CAAC,IAA3C,KAA6C,CAAC,GAAUA,IAAP,KAAS,SAAS,MAAM,IAAI,MAAM,qBAAqBA,EAAE,GAAG,CAAC,IAAC,IAAIM,EAAE,GAAG,IAAI,EAAE,EAAEhB,EAAEwG,EAAE,QAAQ,OAAO,EAAExG,EAAE,IAAI,CAAC,IAAIyB,EAAE+E,EAAE,QAAQ,CAAC,EAAE,SAAS,GAAO/E,EAAE,SAAS,SAAf,EAAsB,CAAC,IAAItM,EAAE,IAAI+0B,GAAE/0B,EAAE,aAAa,WAAW,IAAI2zG,GAAE,IAAI,aAAarnG,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAEA,EAAE,QAAQ,OAAO,EAAEtM,EAAE,aAAa,SAAS,IAAI2zG,GAAE,IAAI,aAAarnG,EAAE,OAAO,EAAE,CAAC,CAAC,EAAEtM,EAAE,qBAAoB,EAAG6L,EAAE,KAAK7L,CAAC,CAAC,CAAC,CAAC,OAAO6L,CAAC,CAAC,EAAE6jG,GAAG,IAAI,MAAM,cAAc8oB,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,WAAW,CAAC,OAAO,IAAIC,EAAE,CAAC,CAAC,EAAE,MAAMC,GAAG,UAAU,CAAC,KAAK,oBAAoB,CAAA,CAAE,EAAEA,GAAG,UAAU,CAAC,YAAYA,GAAG,uBAAuB,SAAS,EAAE,CAAC,KAAK,oBAAoB,CAAC,EAAE,QAAQ,SAAS,EAAE,CAAC,QAAQ,EAAE,IAAI,WAAW,CAAC,EAAE7tH,EAAE,GAAGwG,EAAE,EAAEA,EAAE,EAAE,WAAWA,IAAIxG,GAAG,OAAO,aAAa,EAAEwG,CAAC,CAAC,EAAE,OAAOxG,CAAC,EAAE,QAAQ,SAAS,EAAE,CAAC,OAAgB,KAAK,YAAY,KAAK,QAAQ,CAAC,CAAC,EAAE,SAA5C,OAAkD,EAAE,MAAM,SAAS,EAAE,CAAC,OAAO,aAAa,YAAY,KAAK,QAAQ,CAAC,EAAE,KAAK,WAAW,KAAK,QAAQ,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,KAAK,WAAW,CAAC,CAAC,EAAE,YAAY,SAAS,EAAE,CAAC,IAAI,EAAE,GAAGA,EAAE,EAAEwG,EAAE,2BAA2B,KAAK,CAAC,EAASA,IAAP,OAAW,EAAEA,EAAE,CAAC,EAAExG,EAAEwG,EAAE,CAAC,EAAE,QAAmF,QAAvE9D,EAAEhC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,SAAS,GAAG,SAAS,CAAA,EAAG,aAAaV,CAAC,EAAE2F,EAAE,EAAE,MAAM;AAAA,CAAI,EAAUwX,EAAE,EAAEA,EAAExX,EAAE,OAAOwX,IAAI,CAAC,IAAIxc,EAAEgF,EAAEwX,CAAC,EAAE,IAASxc,EAAEA,EAAE,KAAI,KAAd,GAAkB,OAAOD,GAAG,EAAEC,EAAE,MAAM,KAAK,GAAG,MAAO,EAACA,EAAE,EAAE,KAAK,GAAG,EAAED,GAAG,IAAI,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,IAAI,UAAU,EAAE,SAAS,KAAKC,CAAC,EAAE,MAAM,IAAI,UAAmB+B,IAAT,QAAY,EAAE,SAAS,KAAKA,CAAC,GAAGA,EAAE,CAAE,GAAE,KAAK,EAAE,CAAC,EAAEA,EAAE,MAAM,SAAS,EAAE,CAAC,CAAC,EAAEA,EAAE,WAAW,GAAG,MAAM,IAAI,WAAWA,EAAE,WAAW,MAAM,EAAE,EAAE,EAAE,KAAK,oBAAoB,EAAE,QAAiB,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,OAAzB,QAA+B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,GAAG,EAAC,EAAG,MAAM,QAAQ,QAAQ,IAAI,YAAYhC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAgBgC,IAAT,QAAY,EAAE,SAAS,KAAKA,CAAC,EAAE,CAAC,EAAE,iBAAiB,SAAS,EAAE,EAAE,CAAC,OAAO,GAAG,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ,IAAI,SAAS,IAAI,MAAM,IAAI,OAAO,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,OAAO,SAAS,CAAC,EAAE,IAAI,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,OAAO,WAAW,CAAC,CAAC,CAAC,EAAE,kBAAkB,SAAS,EAAE,EAAE,CAAC,QAAQ1C,EAAE,EAAE,MAAM,KAAK,EAAEwG,EAAE,CAAE,EAAC9D,EAAE,EAAEA,EAAE,EAAE,OAAOA,IAAI,GAAY,EAAEA,CAAC,EAAE,OAAd,OAAmB,CAAC,QAAQhC,EAAE,CAAE,EAAC,EAAE,KAAK,iBAAiBV,EAAE,MAAK,EAAG,EAAE0C,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,IAAIhC,EAAE,KAAK,KAAK,iBAAiBV,EAAE,MAAO,EAAC,EAAE0C,CAAC,EAAE,QAAQ,CAAC,EAAE8D,EAAE,EAAE9D,CAAC,EAAE,IAAI,EAAEhC,CAAC,MAAM8F,EAAE,EAAE9D,CAAC,EAAE,IAAI,EAAE,KAAK,iBAAiB1C,EAAE,MAAO,EAAC,EAAE0C,CAAC,EAAE,IAAI,EAAE,OAAO8D,CAAC,EAAE,WAAW,SAAS,EAAE,CAAC,IAAI,EAAExG,EAAE,IAAI6xG,GAAErrG,EAAE,KAAK,YAAY,CAAC,EAAE9D,EAAE,IAAW,EAAE,yBAAyB,KAAK,CAAC,KAAzC,OAA8CA,EAAE,EAAE,CAAC,GAAG,IAAIhC,EAAEgC,EAAE,MAAM;AAAA,CAAI,EAAE,EAAE,EAAE,EAAE,EAAE1C,EAAE,SAAS,GAAG,QAAQ,EAAE,EAAE,EAAEU,EAAE,OAAO,IAAI,CAAC,IAAI,EAAEA,EAAE,CAAC,EAAE,IAAS,EAAE,EAAE,KAAM,KAAhB,GAAkB,CAAC,GAAG8F,EAAE,SAAS,CAAC,EAAE,QAAQ,IAAI,EAAE,GAAG,IAAI,EAAE,KAAK,kBAAkBA,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,EAAE,KAAK,cAAcxG,EAAEwG,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,KAAK,YAAYxG,CAAC,CAAC,EAAE,YAAY,SAAS,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,MAAM,OAAO,IAAI,EAAE,MAAM,CAAC,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,mBAAmB,EAAE,CAAC,OAAO,EAAE,sBAAuB,EAAC,CAAC,EAAE,cAAc,SAAS,EAAEA,EAAEwG,EAAE,CAAC,GAAcxG,IAAX,UAAc,GAAG,EAAE,SAAS,KAAK,IAAI2C,EAAE6D,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,CAAC,EAAE,QAAQA,GAAG,UAAUA,GAAG,SAASA,EAAE,CAAC,EAAE,SAAS,GAAG,IAAI9F,EAAE,IAAIgC,GAAEhC,EAAE,OAAO8F,EAAE,IAAI,IAAIA,EAAE,MAAM,IAAIA,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,KAAK9F,CAAC,CAAC,UAAmBV,IAAT,OAAW,CAAC,IAAIkwD,EAAE1pD,EAAE,eAAmB0pD,EAAE,SAAN,EAAa,EAAE,MAAM,KAAK,IAAIw0D,GAAEx0D,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,CAAC,EAAMA,EAAE,SAAN,GAAc,EAAE,MAAM,KAAK,IAAIw0D,GAAEx0D,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,EAAE,IAAIw0D,GAAEx0D,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,SAAS,EAAE,EAAElwD,EAAEwG,EAAE,CAAC,OAAOxG,GAAG,IAAI,OAAO,IAAI,OAAO,MAAM,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,QAAQ,IAAI,QAAQ,MAAM,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,IAAI,QAAQ,IAAI,QAAQ,MAAM,CAAC,EAAE,SAAS,EAAEwG,CAAC,EAAE,CAAC,EAAE,IAAI,SAAS,IAAI,SAAS,MAAM,CAAC,EAAE,UAAU,EAAEA,CAAC,EAAE,CAAC,EAAE,IAAI,QAAQ,IAAI,MAAM,MAAM,CAAC,EAAE,SAAS,EAAEA,CAAC,EAAE,CAAC,EAAE,IAAI,SAAS,IAAI,OAAO,MAAM,CAAC,EAAE,UAAU,EAAEA,CAAC,EAAE,CAAC,EAAE,IAAI,UAAU,IAAI,QAAQ,MAAM,CAAC,EAAE,WAAW,EAAEA,CAAC,EAAE,CAAC,EAAE,IAAI,UAAU,IAAI,SAAS,MAAM,CAAC,EAAE,WAAW,EAAEA,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,SAAS,EAAE,EAAExG,EAAEwG,EAAE,CAAC,QAAQ9D,EAAEhC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAEV,EAAE,OAAO,IAAI,GAAYA,EAAE,CAAC,EAAE,OAAd,OAAmB,CAAC,IAAI,EAAE,CAAA,EAAG,GAAG0C,EAAE,KAAK,WAAW,EAAE,EAAE,EAAE1C,EAAE,CAAC,EAAE,UAAUwG,CAAC,GAAG,CAAC,EAAE,GAAG9D,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAIA,EAAE,KAAK,WAAW,EAAE,EAAE,EAAE1C,EAAE,CAAC,EAAE,SAASwG,CAAC,EAAE,EAAE,KAAK9D,EAAE,CAAC,CAAC,EAAE,GAAGA,EAAE,CAAC,EAAEhC,EAAEV,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM0C,EAAE,KAAK,WAAW,EAAE,EAAE,EAAE1C,EAAE,CAAC,EAAE,KAAKwG,CAAC,EAAE9F,EAAEV,EAAE,CAAC,EAAE,IAAI,EAAE0C,EAAE,CAAC,EAAE,GAAGA,EAAE,CAAC,EAAE,MAAM,CAAChC,EAAE,CAAC,CAAC,EAAE,YAAY,SAAS,EAAE,CAAC,QAAQ,EAAEV,EAAE,IAAI6xG,GAAErrG,EAAE,KAAK,YAAY,KAAK,QAAQ,CAAC,CAAC,EAAE9D,EAA2B8D,EAAE,SAA3B,uBAAkC9F,EAAE,IAAI,SAAS,EAAE8F,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE,SAAS,OAAO,IAAI,QAAQ,EAAE,EAAE,EAAEA,EAAE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,kBAAkB9F,EAAE,EAAE8F,EAAE,SAAS,CAAC,EAAE,WAAW9D,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,KAAK,cAAc1C,EAAEwG,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,YAAYxG,CAAC,CAAC,CAAC,EAAE6kG,GAAG,IAAI,MAAM,cAAc8oB,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,WAAW,CAAC,OAAO,IAAIE,EAAE,CAAC,CAAC,EAAEhpB,GAAG,IAAI,MAAM,cAAcijB,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,MAAM9nH,EAAE,GAAG,CAAA,EAAG,MAAM,EAAEA,CAAC,EAAE,KAAK,UAAU+/F,EAAG//F,EAAE,UAAU,GAAG,EAAE,KAAK,QAAQ+/F,EAAG//F,EAAE,QAAQ,GAAG,EAAE,KAAK,YAAY+/F,EAAG//F,EAAE,YAAY,EAAE,EAAE,KAAK,MAAM,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,YAAY,CAAA,EAAG,KAAK,CAAE,CAAA,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,MAAM,KAAK,EAAE,IAAI,OAAO,OAAO,KAAK,UAAU,MAAM,EAAE,IAAIA,EAAE,EAAE,KAAK,SAAS,iBAAkBwG,GAAG,CAAC,MAAM9D,EAAE8D,EAAE,OAAO,QAAQ9F,EAAE,EAAEA,EAAEgC,EAAE,EAAEhC,EAAE,CAAC,MAAMgC,EAAE8D,EAAE9F,CAAC,EAAE,KAAI,EAAG,GAAGgC,EAAE,WAAW,KAAK,OAAO,EAAE,SAAS,MAAMwtD,EAAExtD,EAAE,MAAM,CAAC,EAAM1C,IAAJ,EAAM,KAAK,MAAM,YAAYkwD,EAAExtD,GAAG,EAAE,KAAKwtD,CAAC,EAAE,EAAElwD,CAAC,CAAC,CAAG,CAAA,CAAC,CAAC,EAAE6kG,GAAG,IAAI,OAAO,cAAcijB,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,MAAM9nH,EAAE,GAAG,CAAA,EAAG,MAAM,EAAEA,CAAC,EAAE,KAAK,OAAO+/F,EAAG//F,EAAE,OAAO,EAAE,EAAE,KAAK,KAAK,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,CAAE,CAAA,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,SAAS,SAAU,GAAE,KAAK,OAAO,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,SAAS,OAAM,CAAE,EAAE,KAAK,KAAK,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,EAAE6kG,GAAG,IAAI,UAAU,cAAcijB,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,CAAE,CAAA,EAAE,KAAK,QAAQ,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,SAAS,CAAC,IAAI,WAAW,CAAC,MAAM,SAAS,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,QAAQ,CAACvjB,IAAIF,GAAG,KAAK,wBAAwB,KAAK,IAAI,EAAE,KAAK,QAAQ,KAAK6lB,GAAG,KAAK,SAAS,IAAI,EAAE3lB,IAAIF,GAAG,QAAQ,wBAAwB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAEQ,GAAG,IAAI,SAAS,cAAcijB,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,CAAE,CAAA,EAAE,KAAK,OAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,WAAW,CAAC,MAAM,QAAQ,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,QAAQ,CAACvjB,IAAIF,GAAG,KAAK,uBAAuB,KAAK,IAAI,EAAE,KAAK,OAAO,KAAK,IAAIynB,GAAG,KAAK,SAAS,IAAI,EAAEvnB,IAAIF,GAAG,QAAQ,uBAAuB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,MAAMypB,WAAWhG,EAAE,CAAC,YAAY7mH,EAAE0B,EAAE,CAAC,MAAM1B,EAAE0B,CAAC,EAAE,KAAK,KAAK,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,KAAK,KAAK,KAAK,SAAS,OAAM,CAAE,CAAC,CAACkiG,GAAG,IAAI,MAAMipB,EAAE,EAAEjpB,GAAG,IAAI,OAAOipB,EAAE,EAAE,MAAMC,GAAG,eAAeC,GAAG,kBAAkBC,GAAG,WAAWC,GAAG,2CAA2C,SAASC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,KAAM,EAAC,QAAQ,mBAAmB,EAAE,EAAE,CAAC,YAAY,EAAG,EAAC,KAAKnuH,EAAG,CAAA,EAAE,SAAS,GAAG,CAAC,GAAG,CAAC0C,EAAE,YAAY,EAAE,OAAO,MAAMzB,EAAE,CAAC,WAAW,CAAA,CAAE,EAAE,KAAK,CAACP,EAAG,GAAE,CAAC,EAAE,IAAI,GAAG,CAAC,MAAMiC,EAAE6D,EAAG,EAAC,GAAG,CAAC7D,EAAE,OAAO1B,EAAEA,EAAE,WAAW0B,EAAE,IAAI,EAAEA,EAAE,KAAK,CAAC,OAAOD,EAAE,QAAQ,EAAEzB,CAAC,CAAC,SAASjB,GAAG,CAAC,MAAMiB,EAAEyB,EAAEsrH,EAAE,EAAE,GAAG,CAAC/sH,EAAE,OAAO,MAAM0B,EAAE,CAAC,KAAK1B,EAAE,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA,CAAE,EAAE,KAAK,EAAEP,KAAK,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,MAAMO,EAAEuF,EAAC,EAAG,GAAG,CAACvF,EAAE,OAAO0B,EAAEA,EAAE,WAAW1B,EAAE,IAAI,EAAEA,EAAE,KAAK,CAAC,GAAGyB,EAAE,YAAY,EAAE,OAAOC,EAAE,IAAInB,EAAE,IAAIkB,EAAE,SAAS,EAAEC,EAAE,QAAQ,UAAU,CAAC,MAAM1B,EAAEyB,EAAEurH,EAAE,EAAE,OAAOhtH,EAAEA,EAAE,CAAC,EAAE,EAAE,EAAG,EAACO,EAAExB,EAAG,GAAE2C,EAAE,SAAS,KAAKnB,CAAC,EAAE,OAAOkB,EAAE,kBAAkB,EAAEC,CAAC,CAAC,SAAS6D,GAAG,CAAC,MAAMvF,EAAEyB,EAAEwrH,EAAE,EAAE,IAAIvrH,EAAE,GAAG1B,EAAE,MAAM,CAAC,KAAKA,EAAE,CAAC,EAAE,OAAO0B,EAAE1B,EAAE,CAAC,EAAE0B,EAAE,QAAQorH,GAAG,EAAE,EAAE,CAAC,CAAC,SAASrrH,EAAEC,EAAE,CAAC,MAAM3C,EAAE,EAAE,MAAM2C,CAAC,EAAE,GAAG3C,EAAE,OAAO,EAAE,EAAE,MAAMA,EAAE,CAAC,EAAE,MAAM,EAAEA,CAAC,CAAC,SAASU,GAAG,CAAC,OAAW,EAAE,SAAN,CAAY,CAAC,SAAS,EAAEiC,EAAE,CAAC,OAAW,EAAE,QAAQA,CAAC,IAAf,CAAgB,CAAC,CAAC,MAAMyrH,WAAWtG,EAAE,CAAC,YAAY7mH,EAAE0B,EAAE,CAAC,MAAM,EAAEA,GAAG,CAAE,EAAC,MAAM1B,EAAE,CAAC,EAAE,KAAK,aAAa8+F,EAAG,EAAE,aAAa,EAAE,EAAE,KAAK,IAAI,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,CAAA,CAAE,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,YAAY9+F,EAAE,CAAC,OAAOktH,GAAGltH,CAAC,CAAC,CAAC,YAAYA,EAAE,CAAC,OAAO,IAAI,OAAO,YAAW,gBAAgBA,EAAE,UAAU,CAAC,CAAC,QAAQ,CAACsjG,IAAIF,GAAG,KAAK,oBAAoB,KAAK,IAAI,EAAE,KAAK,aAAa,KAAK,SAAS,gBAAgB,SAAS,KAAK,IAAI,KAAK,KAAK,SAAS,KAAK,KAAK,IAAI,KAAK,KAAK,YAAY,KAAK,SAAS,OAAQ,CAAA,EAAE,KAAK,IAAI,KAAK,KAAK,YAAY,KAAK,SAAS,OAAM,CAAE,EAAEE,IAAIF,GAAG,QAAQ,oBAAoB,KAAK,IAAI,CAAC,CAAC,CAAC,SAASgqB,GAAG,EAAE,EAAE,CAAC,MAAMruH,EAAE,EAAE,aAAa,CAAC,EAAE,OAAcA,IAAP,KAASA,EAAE,MAAM,EAAE,CAAC,SAASsuH,GAAG,EAAE,EAAEtuH,EAAE,GAAG,CAAC,MAAMwG,EAAE6nH,GAAG,EAAE,OAAO,EAAE,KAAM,EAAC3rH,EAAE2rH,GAAG,EAAE,OAAO,EAAE,OAAO3tH,EAAE2tH,GAAG,EAAE,SAAS,EAAE,IAAI,EAAEA,GAAG,EAAE,QAAQ,EAAE,OAAO7nH,IAAI,GAAG,IAAIA,GAAG9D,IAAI,GAAG,IAAIA,GAAG,IAAI,GAAG,IAAI,GAAG1C,GAAGU,EAAE,KAAM,IAAG,GAAG,IAAIA,GAAG,GAAG,KAAK,SAAS2tH,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,SAASE,GAAG,EAAE,CAAC,MAAM,EAAEF,GAAG,EAAE,OAAO,EAAE,KAAI,EAAG,IAAIruH,EAAE,IAAIquH,GAAG,EAAE,SAAS,CAAC,IAAIA,GAAG,EAAE,QAAQ,CAAC,GAAG,OAAO,IAAIruH,GAAG,IAAI,CAAC,IAAIA,CAAC,CAAC,SAASwuH,GAAG,EAAE,EAAExuH,EAAE,CAAU,EAAE,CAAC,IAAZ,OAAc,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,GAAGA,CAAC,CAAC,SAASyuH,GAAG,EAAE,EAAE,CAAC,OAAc,IAAP,MAAU,EAAE,QAAQ,CAAC,CAAC,SAASC,GAAG,EAAE,EAAE1uH,EAAE,CAAC,IAAIwG,EAAE,EAAE,MAAM9D,EAAE,EAAE,qBAAqB,OAAO,EAAE,QAAQC,EAAE,EAAE3C,EAAE0C,EAAE,OAAOC,EAAE3C,EAAE,EAAE2C,EAAE,GAAG,EAAE0rH,GAAG3rH,EAAEC,CAAC,EAAE,WAAW,KAAK,CAAC,EAAE,CAAC6D,GAAG,EAAE,KAAK,CAAC,SAAE,qBAAqB,eAAe,EAAE,OAAO,IAAIA,GAAG,GAAG,EAAE,qBAAqB,cAAc,EAAE,OAAO,IAAIA,GAAG,GAAU,EAAE,qBAAqB,eAAe,EAAE,OAAO,IAAIA,GAAG,GAAGioH,GAAGzuH,EAAE,aAAa,MAAM,EAAE,SAAS,IAAIwG,GAAG,GAAGioH,GAAGzuH,EAAE,aAAa,MAAM,EAAE,SAAS,IAAIwG,GAAG,GAAGioH,GAAGzuH,EAAE,aAAa,WAAW,EAAE,SAAS,IAAIwG,GAAG,GAAGA,CAAC,CAACq+F,GAAG,IAAI,MAAMupB,EAAE,EAAE,MAAMO,EAAE,CAAC,YAAY1tH,EAAE0B,EAAE,CAAC,KAAK,KAAK1B,EAAE,KAAK,KAAK0B,EAAE,KAAK,SAAS,GAAG,KAAK,SAAS,CAAE,EAAC,KAAK,QAAQ,CAAA,EAAG,KAAK,UAAU,GAAG,KAAK,WAAW,CAAE,EAAC,KAAK,QAAQ,CAAA,EAAG,KAAK,YAAY,GAAG,KAAK,SAAS,CAAE,EAAC,KAAK,UAAU,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,YAAY,CAAC,QAAQ1B,EAAE,CAACsjG,IAAIF,GAAG,KAAK,oBAAoB,EAAE,MAAM1hG,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,UAAUjC,EAAE,KAAK,WAAWwvD,EAAE,KAAK,QAAQ1uD,EAAE,KAAK,YAAYE,EAAE,KAAK,SAASzB,EAAEgB,EAAE,qBAAqB,OAAO,EAAE,GAAOhB,EAAE,SAAN,EAAa,CAAC,MAAMgB,EAAEhB,EAAE,CAAC,EAAE,qBAAqB,qBAAqB,EAAE,GAAOgB,EAAE,SAAN,EAAa,CAAC,MAAM0B,EAAE1B,EAAE,CAAC,EAAE,qBAAqB,mBAAmB,EAAE,QAAQA,EAAE,EAAEjB,EAAE2C,EAAE,OAAO1B,EAAEjB,EAAE,EAAEiB,EAAE,CAAC,MAAMjB,EAAE2C,EAAE1B,CAAC,EAAE,WAAW,EAAEstH,GAAGvuH,CAAC,CAAC,EAAE,WAAWquH,GAAGruH,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM8F,EAAE7E,EAAE,qBAAqB,kBAAkB,EAAE0E,EAAE,CAAA,EAAGwX,EAAE,CAAE,EAAConF,IAAIF,GAAG,KAAK,8BAA8B,EAAE,QAAQ79F,EAAE,EAAE0pD,EAAEpqD,EAAE,OAAOU,EAAE0pD,EAAE,EAAE1pD,EAAE,CAAC,MAAM0pD,EAAEpqD,EAAEU,CAAC,EAAEhF,EAAE0uD,EAAE,WAAWjwD,EAAEquH,GAAG9sH,CAAC,EAASA,EAAE,aAAa,MAAM,IAA5B,OAAgCmB,EAAE1C,CAAC,EAAE,WAAWouH,GAAG7sH,EAAE,MAAM,CAAC,GAAUA,EAAE,aAAa,MAAM,IAA5B,OAAgC,EAAEvB,CAAC,EAAE,WAAWouH,GAAG7sH,EAAE,MAAM,CAAC,GAAG,MAAMb,EAAEM,EAAE,gBAAgB,MAAM,EAAEN,EAAE,MAAMV,EAAEuB,EAAE,aAAab,CAAC,EAAE,MAAMkL,EAAEqkD,EAAE,qBAAqB,OAAO,EAAE,QAAQjvD,EAAE,EAAE0B,EAAEkJ,EAAE,OAAO5K,EAAE0B,EAAE,EAAE1B,EAAE,CAAC,MAAM0B,EAAEkJ,EAAE5K,CAAC,EAAE,WAAWjB,EAAEquH,GAAG1rH,EAAE,MAAM,EAAE,GAAS62G,GAAGx5G,CAAC,IAAV,IAAY,CAAC,MAAMiB,EAAEotH,GAAG1rH,EAAE,KAAK,EAAE6D,EAAE8nH,GAAG9sH,EAAExB,EAAE,EAAE,EAAE,GAAG0B,EAAE8E,CAAC,EAAE,GAAYb,EAAE1E,CAAC,IAAZ,OAAc0E,EAAE1E,CAAC,EAAE,CAAC,MAAMuF,EAAE,KAAKvG,CAAC,MAAM,CAAC,MAAM0C,EAAEgD,EAAE1E,CAAC,EAAE0B,EAAE,OAAO1C,IAAI0C,EAAE,MAAM6D,EAAE7D,EAAE,KAAK1C,EAAEkd,EAAE,KAAKxa,EAAE,KAAK1C,CAAC,EAAE,EAAEgB,CAAC,EAAE0B,EAAEjC,EAAE,KAAKiC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC4hG,IAAIF,GAAG,QAAQ,8BAA8B,EAAE,QAAQpjG,EAAE,EAAE0B,EAAEmD,EAAE,OAAO7E,EAAE0B,EAAE,EAAE1B,EAAE,CAAC,MAAM0B,EAAEmD,EAAE7E,CAAC,EAAEjB,EAAE2C,EAAE,WAAW6D,EAAE6nH,GAAGruH,EAAE,MAAM,EAAE,GAASquH,GAAGruH,EAAE,KAAK,IAAhB,IAAkB,CAAC,MAAMiB,EAAEytH,GAAG,EAAE/rH,EAAE3C,CAAC,EAAEiB,EAAE,IAAIivD,EAAE1pD,CAAC,EAAEvF,EAAE,KAAK,CAAC,MAAMA,EAAE0B,EAAE,qBAAqB,OAAO,EAAE3C,EAAE2C,EAAE,qBAAqB,kBAAkB,EAAEjC,EAAEiC,EAAE,qBAAqB,mBAAmB,EAAE,GAAG3C,EAAE,OAAO,GAAGU,EAAE,OAAO,GAAGO,EAAE,OAAO,EAAE,CAAC,MAAM0B,EAAE,CAAE,EAACnB,EAAEgF,CAAC,EAAE7D,EAAE,QAAQ3C,EAAE,EAAEwG,EAAEvF,EAAE,OAAOjB,EAAEwG,EAAE,EAAExG,EAAE,CAAC,MAAMwG,EAAEvF,EAAEjB,CAAC,EAAE,WAAW,EAAEquH,GAAG7nH,EAAE,KAAK,CAAC,GAAGgoH,GAAG7rH,EAAE0rH,GAAG7nH,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQvF,EAAE,EAAEuF,EAAExG,EAAE,OAAOiB,EAAEuF,EAAE,EAAEvF,EAAGotH,GAAGruH,EAAEiB,CAAC,EAAE,WAAW,OAAO,EAAE,MAAM,GAAG,EAAE,QAAS,SAASA,EAAE,CAACutH,GAAG7rH,EAAE1B,EAAE,CAAC,CAAC,GAAI,QAAQA,EAAE,EAAEjB,EAAEU,EAAE,OAAOO,EAAEjB,EAAE,EAAEiB,EAAGotH,GAAG3tH,EAAEO,CAAC,EAAE,WAAW,OAAO,EAAE,MAAM,GAAG,EAAE,QAAS,SAASA,EAAE,CAACutH,GAAG7rH,EAAE1B,EAAE,CAAC,CAAC,CAAG,CAAC,CAAC,CAAC,CAAC,KAAK,UAAUkc,EAAE,OAAOA,EAAE,KAAK,MAAM,EAAE,OAAOonF,IAAIF,GAAG,QAAQ,oBAAoB,CAAC,CAAC,aAAapjG,EAAE,CAACsjG,IAAIF,GAAG,KAAK,yBAAyB,EAAE,MAAMrkG,EAAEiB,GAAG,CAAE,EAACuF,EAAExG,EAAE,UAAUU,EAAE8F,EAAE,QAAQ0pD,EAAE,IAAIxtD,GAAEq9F,EAAG//F,EAAE,MAAM,SAAS,CAAC,EAAEwB,EAAEgF,EAAE,aAAc,EAAC9E,EAAE8E,EAAE,aAAc,EAACvG,EAAE,IAAI0C,EAAEmD,EAAE,IAAInD,EAAEgD,EAAE,IAAIhD,EAAE,EAAE,KAAK,WAAWhC,EAAE,EAAE,OAAOkL,EAAE,IAAI,aAAa,EAAElL,CAAC,EAAEiF,EAAE,IAAI,aAAa,EAAEjF,CAAC,EAAEkF,EAAEihG,GAAGnmG,EAAEuvD,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,EAAElvD,EAAE,IAAI,aAAaL,CAAC,EAAEc,EAAE,IAAI,aAAad,CAAC,EAAE4jG,IAAIF,GAAG,KAAK,kCAAkC,EAAE,MAAM,EAAE,KAAK,SAAS79F,EAAE,SAAU,SAASvF,EAAE,CAAC,MAAM0B,EAAE,SAAS1B,EAAE,CAAC,MAAM0B,EAAE1B,EAAE,QAAQjB,EAAEiB,EAAE,UAAUuF,EAAEvF,EAAE,SAASyB,EAAEzB,EAAE,OAAO,IAAIP,EAAEO,EAAE,MAAM,GAAG,OAAO0B,IAAIjC,GAAG,IAAIiC,GAAG3C,IAAIU,GAAG,IAAIV,GAAGwG,IAAI9F,GAAG,IAAI8F,GAAG9D,IAAIhC,GAAG,IAAIgC,GAAGhC,GAAG,IAAIO,EAAE,WAAWP,CAAC,EAAEO,CAAC,EAAO,EAAE0B,CAAC,IAAR,KAAY,EAAEA,CAAC,EAAE1B,EAAE,MAAM,CAAC,EAAGsjG,IAAIF,GAAG,QAAQ,kCAAkC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,QAAS,SAASpjG,EAAE0B,EAAE,CAAC,GAAGnB,EAAE,MAAM,EAAEP,EAAE,KAAK,EAAES,EAAE,MAAM,EAAET,EAAE,KAAK,EAAWO,EAAE,QAAX,QAA2BE,EAAE,QAAX,QAAkB,CAAChB,EAAE,MAAMc,EAAE,MAAME,EAAE,KAAK,EAAE,OAAOzB,EAAE,WAAWyB,EAAEF,CAAC,EAAE,UAAUA,EAAE,GAAG,EAAEsE,EAAE,KAAKtE,CAAC,EAAE,IAAIvB,CAAC,EAAEA,EAAE,WAAWuB,EAAEE,CAAC,EAAE,UAAUA,EAAE,GAAG,EAAEiE,EAAE,KAAKjE,CAAC,EAAE,IAAIzB,CAAC,EAAE,MAAMD,EAAEwB,EAAE,WAAWE,CAAC,EAAE,EAAE8E,EAAE,KAAK,KAAKhF,EAAE,IAAIA,EAAE,IAAIxB,EAAEA,CAAC,EAAE0C,EAAE,KAAK,KAAKhB,EAAE,IAAIA,EAAE,IAAI1B,EAAEA,CAAC,EAAE8F,EAAE,QAAQ+F,EAAE,EAAE,CAAC,EAAElG,EAAE,QAAQC,EAAE,EAAE,CAAC,EAAE5E,EAAE,CAAC,GAAGwF,EAAE9D,GAAG,EAAEjB,EAAE,CAAC,EAAEkB,EAAE,EAAE,CAAC,CAAC,EAAG4hG,IAAIF,GAAG,QAAQ,yBAAyB,EAAE,CAAC,UAAUx4F,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,UAAUjG,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,MAAMC,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,OAAOA,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,OAAO7E,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,IAAI4xG,GAAGnxG,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK+E,CAAC,CAAC,CAAC,CAAC,CAAC,SAASooH,GAAG,EAAE,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,SAASC,GAAG,EAAE,EAAE7uH,EAAEwG,EAAE9D,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS1C,EAAEA,EAAEwG,CAAC,EAAE9D,CAAC,MAAO,SAAQhC,EAAE,EAAEA,EAAE8F,EAAE9F,IAAI,EAAEgC,EAAEhC,CAAC,EAAE,EAAEV,EAAEU,CAAC,CAAC,CAAC,SAASouH,GAAG,EAAE,EAAE9uH,EAAEwG,EAAE,CAAC,QAAQ9D,EAAE,MAAM,EAAE,EAAEhC,EAAE,IAAI,GAAG,MAAM,EAAE,EAAE,EAAMV,IAAJ,GAAO,CAACA,GAAG,EAAEA,EAAE,IAAI,IAAIA,EAAE,GAAGU,EAAEA,GAAGgC,EAAEA,EAAE,EAAE8D,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG9D,GAAG,MAAMhC,GAAG,KAAK,CAAC,OAAOgC,EAAEhC,GAAG,GAAG,CAAC,CAACmkG,GAAG,IAAI,aAAa,cAAcupB,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,CAAE,CAAA,EAAE,KAAK,aAAa,GAAG,KAAK,WAAW,IAAIO,GAAG,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,YAAY,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,OAAM,EAAGpqB,IAAIF,GAAG,KAAK,2BAA2B,KAAK,IAAI,EAAE,KAAK,WAAW,QAAQ,KAAK,IAAI,IAAI,EAAEE,IAAIF,GAAG,QAAQ,2BAA2B,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI0qB,GAAG,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAA,EAAG/uH,EAAE,EAAEA,EAAE,IAAIA,IAAI,CAAC,EAAEA,EAAE,QAAQwG,EAAE,EAAEA,EAAE,EAAEA,IAAI,EAAE,EAAE,EAAE,WAAW,IAAI,EAAE,IAAI,EAAE,EAAExG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAG,EAAC,SAASgvH,GAAG,EAAE,EAAEhvH,EAAEwG,EAAE,CAAC,IAAI9D,EAAEqsH,GAAGruH,EAAE8F,EAAExG,EAAE,GAAG,GAAG,QAAQ,EAAEwG,EAAE,EAAE9F,EAAE,IAAI,EAAE,IAAI,EAAEgC,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,IAAIusH,GAAG,GAAGC,GAAG,GAAG,SAASC,GAAG,EAAE,EAAE,CAAC,IAAInvH,EAAEwG,EAAE9D,EAAEhC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEiF,EAAEwX,EAAExc,EAAE,EAAEiF,EAAE,EAAE5E,EAAES,EAAEtM,EAAEqN,EAAEC,EAAEwzF,EAAE2S,EAAE,EAAE7Q,EAAEzkC,EAAEtzD,EAAE,EAAE,MAAMwG,EAAE,EAAE,QAAQuxF,EAAE,EAAE,MAAMr1F,EAAE8D,GAAG,EAAE,SAAS,GAAG9F,EAAE,EAAE,SAAS4yD,EAAE,EAAE,OAAO,EAAE5yD,GAAG,EAAE,EAAE,WAAW,EAAEA,GAAG,EAAE,UAAU,KAAK,EAAEV,EAAE,KAAK,EAAEA,EAAE,MAAM,EAAEA,EAAE,MAAM2F,EAAE3F,EAAE,MAAMmd,EAAEnd,EAAE,OAAOW,EAAEX,EAAE,KAAK,EAAEA,EAAE,KAAK4F,EAAE5F,EAAE,QAAQ,EAAEA,EAAE,SAASgB,GAAG,GAAGhB,EAAE,SAAS,EAAEyB,GAAG,GAAGzB,EAAE,UAAU,EAAEiB,EAAE,EAAE,CAAC,EAAE,KAAKN,GAAGo3F,EAAEvxF,GAAG,GAAG,EAAE,GAAG,EAAE7F,GAAGo3F,EAAEvxF,GAAG,GAAG,EAAE,GAAG,GAAGrR,EAAEyQ,EAAEjF,EAAEK,CAAC,EAAE2B,EAAE,OAAO,CAAC,GAAGhC,KAAK6B,EAAErN,IAAI,GAAG,GAAGqN,GAAOA,EAAErN,IAAI,GAAG,OAAd,EAAmBm+D,EAAE5yD,GAAG,EAAE,MAAMvL,MAAM,CAAC,GAAG,EAAE,GAAGqN,GAAG,CAAC,GAAO,KAAGA,GAAG,CAACrN,EAAEyQ,GAAG,MAAMzQ,IAAIwL,GAAG,GAAG6B,GAAG,EAAE,EAAE,SAASG,CAAC,CAAC,GAAG,GAAGH,EAAE,CAACxC,EAAE,KAAKkvH,GAAG,MAAMjuH,CAAC,CAAC,EAAE,IAAI,8BAA8BjB,EAAE,KAAKivH,GAAG,MAAMhuH,CAAC,CAACwB,EAAE,MAAMtN,GAAGqN,GAAG,MAAM,EAAEA,IAAI7B,GAAGo3F,EAAEvxF,GAAG,GAAG,EAAE,GAAG,GAAG/D,GAAG9B,GAAG,GAAG6B,GAAG,EAAE7B,KAAK6B,EAAE,GAAGA,GAAG,EAAE,KAAK7B,GAAGo3F,EAAEvxF,GAAG,GAAG,EAAE,GAAG,EAAE7F,GAAGo3F,EAAEvxF,GAAG,GAAG,EAAE,GAAG,GAAGrR,EAAE,EAAEwL,EAAEc,CAAC,EAAEzB,EAAE,OAAO,CAAC,GAAGW,KAAK6B,EAAErN,IAAI,GAAG,GAAGqN,EAAE,EAAE,IAAIA,EAAErN,IAAI,GAAG,MAAM,CAAC,GAAO,KAAGqN,GAAG,CAACrN,EAAE,GAAG,MAAMA,IAAIwL,GAAG,GAAG6B,GAAG,EAAE,EAAE,SAASxC,CAAC,CAAC,EAAE,IAAI,wBAAwBA,EAAE,KAAKivH,GAAG,MAAMhuH,CAAC,CAAC,GAAGg1F,EAAE,MAAM9gG,EAAE,GAAGqN,GAAG,MAAM7B,GAAGo3F,EAAEvxF,GAAG,GAAG,GAAG,GAAG,GAAGhE,IAAI7B,GAAGo3F,EAAEvxF,GAAG,GAAG,EAAE,GAAG,KAAKyvF,GAAGt1F,GAAG,GAAG6B,GAAG,GAAG,EAAE,CAAC,EAAE,IAAI,gCAAgCxC,EAAE,KAAKivH,GAAG,MAAMhuH,CAAC,CAAC,GAAGN,KAAK6B,EAAE,GAAGA,EAAEyzF,GAAGzzF,EAAE9B,EAAE,GAAG,CAAC,IAAI8B,EAAEyzF,EAAEzzF,GAAG,GAAGxC,EAAE,KAAK,CAAC,EAAE,IAAI,gCAAgCA,EAAE,KAAKivH,GAAG,MAAMhuH,CAAC,CAAC,GAAG2nG,EAAE,EAAE,EAAEzrF,EAAMxX,IAAJ,GAAO,GAAGijG,GAAG,EAAEpmG,EAAEA,EAAEC,EAAE,CAACA,GAAGD,EAAE,GAAG8wD,EAAE5yD,GAAG,EAAEyc,EAAEyrF,GAAG,QAAQ,EAAEpmG,GAAGomG,EAAEloG,EAAEu1F,EAAE,EAAE3iC,CAAC,UAAU3tD,EAAEnD,GAAG,GAAGomG,GAAG,EAAEjjG,EAAEnD,GAAGA,GAAGmD,GAAGlD,EAAE,CAACA,GAAGD,EAAE,GAAG8wD,EAAE5yD,GAAG,EAAEyc,EAAEyrF,GAAG,QAAQ,EAAEpmG,GAAG,GAAGomG,EAAE,EAAEjjG,EAAElD,EAAE,CAACA,GAAGD,EAAEmD,EAAE,GAAG2tD,EAAE5yD,GAAG,EAAEyc,EAAEyrF,GAAG,QAAQ,EAAEpmG,GAAGomG,EAAEloG,EAAEu1F,EAAE,EAAE3iC,CAAC,CAAC,UAAUs1C,GAAGjjG,EAAEnD,EAAEA,EAAEC,EAAE,CAACA,GAAGD,EAAE,GAAG8wD,EAAE5yD,GAAG,EAAEyc,EAAEyrF,GAAG,QAAQ,EAAEpmG,GAAGomG,EAAEloG,EAAEu1F,EAAE,EAAE3iC,CAAC,CAAC,KAAK7wD,EAAE,GAAG6wD,EAAE5yD,GAAG,EAAE,EAAEkoG,GAAG,EAAEt1C,EAAE5yD,GAAG,EAAE,EAAEkoG,GAAG,EAAEt1C,EAAE5yD,GAAG,EAAE,EAAEkoG,GAAG,EAAEnmG,GAAG,EAAEA,IAAI6wD,EAAE5yD,GAAG,EAAE,EAAEkoG,GAAG,EAAEnmG,EAAE,IAAI6wD,EAAE5yD,GAAG,EAAE,EAAEkoG,GAAG,GAAG,KAAK,CAACA,EAAEloG,EAAEu1F,EAAE,GAAG3iC,EAAE5yD,GAAG,EAAE4yD,EAAEs1C,GAAG,EAAEt1C,EAAE5yD,GAAG,EAAE4yD,EAAEs1C,GAAG,EAAEt1C,EAAE5yD,GAAG,EAAE4yD,EAAEs1C,GAAG,EAAEnmG,GAAG,QAAQA,EAAE,GAAGA,IAAI6wD,EAAE5yD,GAAG,EAAE4yD,EAAEs1C,GAAG,EAAEnmG,EAAE,IAAI6wD,EAAE5yD,GAAG,EAAE4yD,EAAEs1C,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAOpiG,EAAE9D,GAAGhC,EAAE,GAAG8F,GAAG/D,EAAE,GAAG,EAAE9B,IAAI,IAAI,GAAG8B,GAAG,IAAI,EAAE,EAAE,QAAQ+D,EAAE,EAAE,SAAS9F,EAAE,EAAE,SAAS8F,EAAE9D,EAAEA,EAAE8D,EAAE,EAAE,GAAGA,EAAE9D,GAAG,EAAE,UAAUhC,EAAE,EAAE,EAAEA,EAAE,IAAI,KAAKA,EAAE,GAAGV,EAAE,KAAKW,EAAEX,EAAE,KAAK,CAAC,CAAC,IAAIovH,GAAG,GAAGC,GAAG,IAAIC,GAAG,IAAIC,GAAG,EAAEzyD,GAAG,EAAE0yD,GAAG,EAAEC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,EAAEhgH,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAEG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,EAAE,CAAC,EAAE8/G,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,SAASC,GAAG,EAAE,EAAE3vH,EAAEwG,EAAE9D,EAAEhC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,EAAEiF,EAAEwX,EAAExc,EAAE,EAAEiF,EAAE,EAAE5E,EAAE,EAAE,KAAKS,EAAE,EAAEtM,EAAE,EAAEqN,EAAE,EAAEC,EAAE,EAAEwzF,EAAE,EAAE2S,EAAE,EAAE,EAAE,EAAE7Q,EAAE,EAAEzkC,EAAE,EAAEkhC,EAAE,EAAEtqE,EAAE,KAAK4+E,EAAE,EAAE50C,EAAE,IAAI,YAAYk7D,GAAG,CAAC,EAAEz7D,EAAE,IAAI,YAAYy7D,GAAG,CAAC,EAAEzmB,GAAE,KAAKkJ,EAAE,EAAE,IAAIpwG,EAAE,EAAEA,GAAG2tH,GAAG3tH,IAAIyyD,EAAEzyD,CAAC,EAAE,EAAE,IAAItM,EAAE,EAAEA,EAAEqR,EAAErR,IAAI++D,EAAE,EAAEl0D,EAAE7K,CAAC,CAAC,IAAI,IAAI8gG,EAAEj1F,EAAEyB,EAAE2sH,GAAG3sH,GAAG,GAAOyxD,EAAEzxD,CAAC,IAAP,EAASA,IAAI,CAAC,GAAGwzF,EAAExzF,IAAIwzF,EAAExzF,GAAOA,IAAJ,EAAM,OAAOC,EAAEhC,GAAG,EAAE,SAASgC,EAAEhC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI8B,EAAE,EAAEA,EAAEC,GAAOyxD,EAAE1xD,CAAC,IAAP,EAASA,IAAI,CAAC,IAAIyzF,EAAEzzF,IAAIyzF,EAAEzzF,GAAGu1F,EAAE,EAAEt2F,EAAE,EAAEA,GAAG2tH,GAAG3tH,IAAI,GAAGs2F,IAAI,GAAGA,GAAG7jC,EAAEzyD,CAAC,GAAG,EAAE,MAAM,GAAG,GAAGs2F,EAAE,IAAI,IAAIw3B,IAAQ9sH,IAAJ,GAAO,MAAM,GAAG,IAAIkxD,EAAE,CAAC,EAAE,EAAElyD,EAAE,EAAEA,EAAE2tH,GAAG3tH,IAAIkyD,EAAElyD,EAAE,CAAC,EAAEkyD,EAAElyD,CAAC,EAAEyyD,EAAEzyD,CAAC,EAAE,IAAItM,EAAE,EAAEA,EAAEqR,EAAErR,IAAQ,EAAE6K,EAAE7K,CAAC,IAAT,IAAa,EAAEw+D,EAAE,EAAE3zD,EAAE7K,CAAC,CAAC,GAAG,EAAEA,GAAG,GAAG,IAAIo6H,IAAIrlG,EAAEy+E,GAAE,EAAEhoG,EAAE,IAAI,IAAIm8D,IAAI5yC,EAAEulG,GAAG3mB,GAAG,IAAIH,GAAEl5F,GAAGoiG,GAAG,IAAIlxG,EAAE,MAAMupB,EAAEta,GAAG+4F,GAAE+mB,GAAG/uH,EAAE,IAAI6zF,EAAE,EAAEr/F,EAAE,EAAEsM,EAAEe,EAAE2a,EAAEzc,EAAEkoG,EAAE3S,EAAE,EAAE,EAAE,EAAE,GAAGtwF,GAAG2tD,EAAE,GAAG2iC,GAAG,EAAE,IAAIn5B,IAAIxJ,EAAE+7D,IAAI,IAAIG,IAAIl8D,EAAEg8D,GAAG,MAAO,GAAE,OAAO,CAAC,EAAE7tH,EAAE,EAAE,EAAEtM,CAAC,EAAEwL,GAAGiF,EAAE,EAAE,EAAE,EAAEzQ,CAAC,GAAG,EAAEA,CAAC,EAAEwL,GAAGiF,EAAE+iG,GAAEkJ,EAAE,EAAE18G,CAAC,CAAC,EAAE,EAAE+0B,EAAE4+E,EAAE,EAAE3zG,CAAC,CAAC,IAAIyQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAGnE,EAAE,EAAEe,EAAE,EAAE,GAAGomG,EAAE,GAAGlmG,EAAEya,GAAGq3E,GAAG,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG5uF,GAAG,GAAG,EAAE,QAAY,IAAJ,GAAO,IAAI,EAAE,GAAGnE,EAAE,EAAE+yF,EAAE,GAAG,IAAI,EAAE,GAAO,IAAJ,GAAOA,GAAG,EAAE,EAAEA,GAAG,GAAGA,EAAE,EAAEr/F,IAAO,EAAE++D,EAAEzyD,CAAC,GAAR,EAAU,CAAC,GAAGA,IAAIgB,EAAE,MAAMhB,EAAE,EAAEzB,EAAE,EAAE7K,CAAC,CAAC,CAAC,CAAC,GAAGsM,EAAEw0F,IAAIzB,EAAE7uF,KAAK,EAAE,CAAC,IAAQ,IAAJ,IAAQ,EAAEswF,GAAG94E,GAAG3a,EAAEu1F,EAAE,IAAI6Q,EAAEnnG,EAAE,GAAGmnG,EAAE,EAAEnmG,GAAG,GAAGs1F,GAAG7jC,EAAE00C,EAAE,CAAC,IAAI,IAAIA,IAAI7Q,IAAI,EAAE,GAAGzkC,GAAG,GAAGs1C,EAAE,IAAI9rC,IAAIxJ,EAAE+7D,IAAI,IAAIG,IAAIl8D,EAAEg8D,GAAG,MAAO,GAAE5sH,EAAE,EAAE8xF,EAAE7uF,CAAC,EAAEswF,GAAG,GAAG2S,GAAG,GAAGzrF,EAAEzc,EAAE,CAAC,CAAC,CAAC,OAAW8zF,IAAJ,IAAQ9xF,EAAEya,EAAEq3E,CAAC,EAAE/yF,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,EAAE,KAAKw0F,EAAE,CAAC,CAAC,IAAInmF,GAAG,EAAE8/G,GAAG,EAAEC,GAAG,EAAEC,GAAG,GAAGC,GAAG,EAAEC,GAAG,GAAGC,GAAG,GAAGvgH,GAAG,IAAIwgH,GAAG,IAAI,SAASC,GAAG,EAAE,CAAC,OAAO,IAAI,GAAG,MAAM,IAAI,EAAE,SAAS,MAAM,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,SAASC,IAAI,CAAC,KAAK,KAAK,EAAE,KAAK,KAAK,GAAG,KAAK,KAAK,EAAE,KAAK,SAAS,GAAG,KAAK,MAAM,EAAE,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,KAAK,KAAK,KAAK,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,KAAK,KAAK,KAAK,EAAE,KAAK,KAAK,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,QAAQ,KAAK,KAAK,SAAS,KAAK,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,KAAK,MAAM,EAAE,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,KAAK,KAAK,EAAE,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,YAAY,GAAG,EAAE,KAAK,KAAK,IAAI,YAAY,GAAG,EAAE,KAAK,OAAO,KAAK,KAAK,QAAQ,KAAK,KAAK,KAAK,EAAE,KAAK,KAAK,EAAE,KAAK,IAAI,CAAC,CAAC,SAASC,GAAG,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,EAAE,QAAQ,EAAE,EAAE,OAAO,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,SAASpvH,EAAE,CAAC,IAAI0B,EAAE,OAAO1B,GAAGA,EAAE,OAAO0B,EAAE1B,EAAE,MAAMA,EAAE,SAASA,EAAE,UAAU0B,EAAE,MAAM,EAAE1B,EAAE,IAAI,GAAG0B,EAAE,OAAO1B,EAAE,MAAM,EAAE0B,EAAE,MAAMA,EAAE,KAAKotH,GAAGptH,EAAE,KAAK,EAAEA,EAAE,SAAS,EAAEA,EAAE,KAAK,MAAMA,EAAE,KAAK,KAAKA,EAAE,KAAK,EAAEA,EAAE,KAAK,EAAEA,EAAE,QAAQA,EAAE,OAAO,IAAI,WAAW+M,EAAE,EAAE/M,EAAE,SAASA,EAAE,QAAQ,IAAI,WAAWutH,EAAE,EAAEvtH,EAAE,KAAK,EAAEA,EAAE,KAAK,GAAGktH,IAAIC,EAAE,EAAE,CAAC,GAAGA,EAAE,CAAC,SAASQ,GAAG,EAAE,EAAE,CAAC,IAAItwH,EAAEwG,EAAE,OAAO,GAAGA,EAAE,IAAI4pH,GAAG,EAAE,MAAM5pH,EAAEA,EAAE,OAAO,KAAKxG,EAAE,SAASiB,EAAE0B,EAAE,CAAC,IAAI3C,EAAEwG,EAAE,OAAOvF,GAAGA,EAAE,OAAOuF,EAAEvF,EAAE,MAAM0B,EAAE,GAAG3C,EAAE,EAAE2C,EAAE,CAACA,IAAI3C,EAAE,GAAG2C,GAAG,GAAGA,EAAE,KAAKA,GAAG,KAAKA,IAAIA,EAAE,GAAGA,EAAE,IAAImtH,IAAWtpH,EAAE,SAAT,MAAiBA,EAAE,QAAQ7D,IAAI6D,EAAE,OAAO,MAAMA,EAAE,KAAKxG,EAAEwG,EAAE,MAAM7D,EAAE0tH,GAAGpvH,CAAC,IAAI6uH,EAAE,EAAE,EAAE,CAAC,EAAE9vH,IAAI6vH,KAAK,EAAE,MAAM,MAAM7vH,GAAG8vH,EAAE,CAAC,IAAIS,GAAGC,GAAGC,GAAG,GAAG,SAASC,GAAG,EAAE,CAAC,GAAGD,GAAG,CAAC,IAAI,EAAE,IAAIF,GAAG,IAAI,WAAW,GAAG,EAAEC,GAAG,IAAI,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,IAAIb,GAAG7/G,GAAG,EAAE,KAAK,EAAE,IAAIygH,GAAG,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,EAAEZ,GAAGC,GAAG,EAAE,KAAK,EAAE,GAAGY,GAAG,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAEC,GAAG,EAAE,CAAC,EAAE,QAAQF,GAAG,EAAE,QAAQ,EAAE,EAAE,SAASC,GAAG,EAAE,SAAS,CAAC,CAAC,SAASG,GAAG,EAAE,EAAE3wH,EAAEwG,EAAE,CAAC,IAAI9D,EAAEhC,EAAE,EAAE,MAAM,OAAcA,EAAE,SAAT,OAAkBA,EAAE,MAAM,GAAGA,EAAE,MAAMA,EAAE,MAAM,EAAEA,EAAE,MAAM,EAAEA,EAAE,OAAO,IAAI,WAAWA,EAAE,KAAK,GAAG8F,GAAG9F,EAAE,OAAOmuH,GAAGnuH,EAAE,OAAO,EAAEV,EAAEU,EAAE,MAAMA,EAAE,MAAM,CAAC,EAAEA,EAAE,MAAM,EAAEA,EAAE,MAAMA,EAAE,SAASgC,EAAEhC,EAAE,MAAMA,EAAE,OAAO8F,IAAI9D,EAAE8D,GAAGqoH,GAAGnuH,EAAE,OAAO,EAAEV,EAAEwG,EAAE9D,EAAEhC,EAAE,KAAK,GAAG8F,GAAG9D,IAAImsH,GAAGnuH,EAAE,OAAO,EAAEV,EAAEwG,EAAEA,EAAE,CAAC,EAAE9F,EAAE,MAAM8F,EAAE9F,EAAE,MAAMA,EAAE,QAAQA,EAAE,OAAOgC,EAAEhC,EAAE,QAAQA,EAAE,QAAQA,EAAE,MAAM,GAAGA,EAAE,MAAMA,EAAE,QAAQA,EAAE,OAAOgC,KAAK,CAAC,CAAC,SAASkuH,GAAG,EAAE,EAAE,CAAC,IAAI5wH,EAAEwG,EAAE9D,EAAEhC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEiF,EAAEwX,EAAExc,EAAE,EAAEiF,EAAE,EAAE5E,EAAES,EAAEtM,EAAEqN,EAAEC,EAAEwzF,EAAE2S,EAAE,EAAE7Q,EAAEzkC,EAAE,EAAEkhC,EAAE,IAAI,WAAW,CAAC,EAAEtqE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAW,EAAE,WAAN,EAAe,OAAO4lG,IAAI9vH,EAAE,EAAE,OAAO,OAAOgwH,KAAKhwH,EAAE,KAAK,IAAI,EAAE,EAAE,SAAS0C,EAAE,EAAE,OAAO,EAAE,EAAE,UAAUhC,EAAE,EAAE,QAAQ8F,EAAE,EAAE,MAAM,EAAE,EAAE,SAAS,EAAExG,EAAE,KAAK,EAAEA,EAAE,KAAK2F,EAAE,EAAEwX,EAAE,EAAEyrF,EAAEinB,GAAG5uH,EAAE,OAAO,OAAOjB,EAAE,KAAI,CAAE,KAAK+vH,GAAG,GAAO/vH,EAAE,OAAN,EAAW,CAACA,EAAE,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAO,IAAJ,EAAM,MAAMiB,EAAE,IAAI,GAAGuF,EAAE9F,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAEV,EAAE,MAAc,IAAR,MAAU,CAACA,EAAE,MAAM,EAAEw0F,EAAE,CAAC,EAAE,IAAI,EAAEA,EAAE,CAAC,EAAE,IAAI,EAAE,IAAIx0F,EAAE,MAAMgvH,GAAGhvH,EAAE,MAAMw0F,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAEx0F,EAAE,KAAK,EAAE,KAAK,CAAC,GAAGA,EAAE,MAAM,EAAEA,EAAE,OAAOA,EAAE,KAAK,KAAK,IAAI,EAAE,EAAEA,EAAE,UAAU,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,IAAI,yBAAyBA,EAAE,KAAKiwH,GAAG,KAAK,CAAC,IAAO,GAAG,IAAP,EAAU,CAAC,EAAE,IAAI,6BAA6BjwH,EAAE,KAAKiwH,GAAG,KAAK,CAAC,GAAG,GAAG,EAAEh6B,EAAE,GAAG,IAAI,KAAK,IAAQj2F,EAAE,QAAN,EAAYA,EAAE,MAAMi2F,UAAUA,EAAEj2F,EAAE,MAAM,CAAC,EAAE,IAAI,sBAAsBA,EAAE,KAAKiwH,GAAG,KAAK,CAACjwH,EAAE,KAAK,GAAGi2F,EAAE,EAAE,MAAMj2F,EAAE,MAAM,EAAEA,EAAE,KAAK,IAAI,EAAE,GAAGgwH,GAAG,EAAE,EAAE,EAAE,EAAE,MAAM,IAAK,GAAE,KAAK,EAAE,IAAI,CAAC,GAAO,IAAJ,EAAM,MAAM/uH,EAAE,IAAI,GAAGuF,EAAE9F,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,GAAGV,EAAE,MAAM,GAAM,IAAIA,EAAE,QAAV,EAAiB,CAAC,EAAE,IAAI,6BAA6BA,EAAE,KAAKiwH,GAAG,KAAK,CAAC,GAAG,MAAMjwH,EAAE,MAAM,CAAC,EAAE,IAAI,2BAA2BA,EAAE,KAAKiwH,GAAG,KAAK,CAACjwH,EAAE,OAAOA,EAAE,KAAK,KAAK,GAAG,EAAE,GAAG,IAAIA,EAAE,QAAQw0F,EAAE,CAAC,EAAE,IAAI,EAAEA,EAAE,CAAC,EAAE,IAAI,EAAE,IAAIx0F,EAAE,MAAMgvH,GAAGhvH,EAAE,MAAMw0F,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAEx0F,EAAE,KAAK,EAAE,IAAK,GAAE,KAAK,EAAE,IAAI,CAAC,GAAO,IAAJ,EAAM,MAAMiB,EAAE,IAAI,GAAGuF,EAAE9F,GAAG,GAAG,EAAE,GAAG,CAAC,CAACV,EAAE,OAAOA,EAAE,KAAK,KAAK,GAAG,IAAIA,EAAE,QAAQw0F,EAAE,CAAC,EAAE,IAAI,EAAEA,EAAE,CAAC,EAAE,IAAI,EAAE,IAAIA,EAAE,CAAC,EAAE,IAAI,GAAG,IAAIA,EAAE,CAAC,EAAE,IAAI,GAAG,IAAIx0F,EAAE,MAAMgvH,GAAGhvH,EAAE,MAAMw0F,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAEx0F,EAAE,KAAK,EAAE,IAAK,GAAE,KAAK,EAAE,IAAI,CAAC,GAAO,IAAJ,EAAM,MAAMiB,EAAE,IAAI,GAAGuF,EAAE9F,GAAG,GAAG,EAAE,GAAG,CAAC,CAACV,EAAE,OAAOA,EAAE,KAAK,OAAO,IAAI,EAAEA,EAAE,KAAK,GAAG,GAAG,GAAG,IAAIA,EAAE,QAAQw0F,EAAE,CAAC,EAAE,IAAI,EAAEA,EAAE,CAAC,EAAE,IAAI,EAAE,IAAIx0F,EAAE,MAAMgvH,GAAGhvH,EAAE,MAAMw0F,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAEx0F,EAAE,KAAK,EAAE,IAAK,GAAE,GAAG,KAAKA,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAO,IAAJ,EAAM,MAAMiB,EAAE,IAAI,GAAGuF,EAAE9F,GAAG,GAAG,EAAE,GAAG,CAAC,CAACV,EAAE,OAAO,EAAEA,EAAE,OAAOA,EAAE,KAAK,UAAU,GAAG,IAAIA,EAAE,QAAQw0F,EAAE,CAAC,EAAE,IAAI,EAAEA,EAAE,CAAC,EAAE,IAAI,EAAE,IAAIx0F,EAAE,MAAMgvH,GAAGhvH,EAAE,MAAMw0F,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,MAAMx0F,EAAE,OAAOA,EAAE,KAAK,MAAM,MAAMA,EAAE,KAAK,EAAE,IAAK,GAAE,GAAG,KAAKA,EAAE,SAASW,EAAEX,EAAE,QAAQ,IAAIW,EAAE,GAAGA,IAAIX,EAAE,OAAOi2F,EAAEj2F,EAAE,KAAK,UAAUA,EAAE,OAAOA,EAAE,KAAK,QAAQA,EAAE,KAAK,MAAM,IAAI,MAAMA,EAAE,KAAK,SAAS,GAAG6uH,GAAG7uH,EAAE,KAAK,MAAMwG,EAAE9F,EAAEC,EAAEs1F,CAAC,GAAG,IAAIj2F,EAAE,QAAQA,EAAE,MAAMgvH,GAAGhvH,EAAE,MAAMwG,EAAE7F,EAAED,CAAC,GAAG,GAAGC,EAAED,GAAGC,EAAEX,EAAE,QAAQW,GAAGX,EAAE,QAAQ,MAAMiB,EAAEjB,EAAE,OAAO,EAAEA,EAAE,KAAK,EAAE,IAAK,GAAE,GAAG,KAAKA,EAAE,MAAM,CAAC,GAAO,IAAJ,EAAM,MAAMiB,EAAEN,EAAE,EAAE,GAAGs1F,EAAEzvF,EAAE9F,EAAEC,GAAG,EAAEX,EAAE,MAAMi2F,GAAGj2F,EAAE,OAAO,QAAQA,EAAE,KAAK,MAAM,OAAO,aAAai2F,CAAC,SAASA,GAAGt1F,EAAE,GAAG,GAAG,IAAIX,EAAE,QAAQA,EAAE,MAAMgvH,GAAGhvH,EAAE,MAAMwG,EAAE7F,EAAED,CAAC,GAAG,GAAGC,EAAED,GAAGC,EAAEs1F,EAAE,MAAMh1F,CAAC,MAAMjB,EAAE,OAAOA,EAAE,KAAK,KAAK,MAAMA,EAAE,OAAO,EAAEA,EAAE,KAAK,EAAE,IAAK,GAAE,GAAG,KAAKA,EAAE,MAAM,CAAC,GAAO,IAAJ,EAAM,MAAMiB,EAAEN,EAAE,EAAE,GAAGs1F,EAAEzvF,EAAE9F,EAAEC,GAAG,EAAEX,EAAE,MAAMi2F,GAAGj2F,EAAE,OAAO,QAAQA,EAAE,KAAK,SAAS,OAAO,aAAai2F,CAAC,SAASA,GAAGt1F,EAAE,GAAG,GAAG,IAAIX,EAAE,QAAQA,EAAE,MAAMgvH,GAAGhvH,EAAE,MAAMwG,EAAE7F,EAAED,CAAC,GAAG,GAAGC,EAAED,GAAGC,EAAEs1F,EAAE,MAAMh1F,CAAC,MAAMjB,EAAE,OAAOA,EAAE,KAAK,QAAQ,MAAMA,EAAE,KAAK,EAAE,IAAK,GAAE,GAAG,IAAIA,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAO,IAAJ,EAAM,MAAMiB,EAAE,IAAI,GAAGuF,EAAE9F,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,MAAMV,EAAE,OAAO,CAAC,EAAE,IAAI,sBAAsBA,EAAE,KAAKiwH,GAAG,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAACjwH,EAAE,OAAOA,EAAE,KAAK,KAAKA,EAAE,OAAO,EAAE,EAAEA,EAAE,KAAK,KAAK,IAAI,EAAE,MAAMA,EAAE,MAAM,EAAEA,EAAE,KAAKgwH,GAAG,MAAM,IAAK,IAAG,KAAK,EAAE,IAAI,CAAC,GAAO,IAAJ,EAAM,MAAM/uH,EAAE,IAAI,GAAGuF,EAAE9F,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,MAAMV,EAAE,MAAMmwH,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAEnwH,EAAE,KAAK,GAAG,IAAK,IAAG,GAAOA,EAAE,WAAN,EAAe,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,EAAE,QAAQU,EAAE,EAAE,SAAS,EAAEV,EAAE,KAAK,EAAEA,EAAE,KAAK,EAAE,EAAE,EAAE,MAAMA,EAAE,MAAM,EAAEA,EAAE,KAAKgwH,GAAG,KAAKA,GAAG,GAAO,IAAJ,GAAW,IAAJ,EAAM,MAAM/uH,EAAE,IAAK,IAAG,GAAGjB,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,EAAEA,EAAE,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,GAAO,IAAJ,EAAM,MAAMiB,EAAE,IAAI,GAAGuF,EAAE9F,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,OAAOV,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,KAAK,GAAE,CAAE,IAAK,GAAEA,EAAE,KAAK,GAAG,MAAM,IAAK,GAAE,GAAG0wH,GAAG1wH,CAAC,EAAEA,EAAE,KAAK,GAAO,IAAJ,EAAM,CAAC,KAAK,EAAE,GAAG,EAAE,MAAMiB,CAAC,CAAC,MAAM,IAAK,GAAEjB,EAAE,KAAK,GAAG,MAAM,IAAK,GAAE,EAAE,IAAI,qBAAqBA,EAAE,KAAKiwH,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,IAAK,IAAG,IAAI,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,GAAO,IAAJ,EAAM,MAAMhvH,EAAE,IAAI,GAAGuF,EAAE9F,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,EAAE,IAAI,+BAA+BV,EAAE,KAAKiwH,GAAG,KAAK,CAAC,GAAGjwH,EAAE,OAAO,MAAM,EAAE,EAAE,EAAE,EAAE,EAAEA,EAAE,KAAK,GAAO,IAAJ,EAAM,MAAMiB,EAAE,IAAK,IAAGjB,EAAE,KAAK,GAAG,IAAK,IAAG,GAAGW,EAAEX,EAAE,OAAO,CAAC,GAAGW,EAAE,IAAIA,EAAE,GAAGA,EAAE,IAAIA,EAAE,GAAOA,IAAJ,EAAM,MAAMM,EAAE4tH,GAAGnsH,EAAE8D,EAAE9F,EAAEC,EAAE,CAAC,EAAE,GAAGA,EAAED,GAAGC,EAAE,GAAGA,EAAE,GAAGA,EAAEX,EAAE,QAAQW,EAAE,KAAK,CAACX,EAAE,KAAKgwH,GAAG,MAAM,IAAK,IAAG,KAAK,EAAE,IAAI,CAAC,GAAO,IAAJ,EAAM,MAAM/uH,EAAE,IAAI,GAAGuF,EAAE9F,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,GAAGV,EAAE,KAAK,KAAK,GAAG,GAAG,KAAK,EAAE,GAAG,EAAEA,EAAE,MAAM,GAAG,GAAG,GAAG,KAAK,EAAE,GAAG,EAAEA,EAAE,MAAM,GAAG,GAAG,GAAG,KAAK,EAAE,GAAG,EAAEA,EAAE,KAAK,KAAKA,EAAE,MAAM,GAAG,CAAC,EAAE,IAAI,sCAAsCA,EAAE,KAAKiwH,GAAG,KAAK,CAACjwH,EAAE,KAAK,EAAEA,EAAE,KAAK,GAAG,IAAK,IAAG,KAAKA,EAAE,KAAKA,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAO,IAAJ,EAAM,MAAMiB,EAAE,IAAI,GAAGuF,EAAE9F,GAAG,GAAG,EAAE,GAAG,CAAC,CAACV,EAAE,KAAKkqB,EAAElqB,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,KAAKA,EAAE,KAAK,IAAIA,EAAE,KAAKkqB,EAAElqB,EAAE,MAAM,CAAC,EAAE,EAAE,GAAGA,EAAE,QAAQA,EAAE,OAAOA,EAAE,QAAQ,EAAE,EAAE,CAAC,KAAKA,EAAE,OAAO,EAAE4oG,EAAE+mB,GAAG,EAAE3vH,EAAE,KAAK,EAAE,GAAGA,EAAE,QAAQ,EAAEA,EAAE,KAAK,CAAC,EAAEA,EAAE,QAAQ,EAAE,KAAK4oG,EAAE,CAAC,EAAE,IAAI,2BAA2B5oG,EAAE,KAAKiwH,GAAG,KAAK,CAACjwH,EAAE,KAAK,EAAEA,EAAE,KAAK,GAAG,IAAK,IAAG,KAAKA,EAAE,KAAKA,EAAE,KAAKA,EAAE,OAAO,CAAC,KAAKgB,GAAGsyD,EAAEtzD,EAAE,QAAQ,GAAG,GAAGA,EAAE,SAAS,CAAC,KAAK,GAAG,IAAIyB,EAAE,MAAM6xD,EAAE,GAAG,EAAEA,IAAI,KAAK,IAAI,CAAC,GAAO,IAAJ,EAAM,MAAMryD,EAAE,IAAI,GAAGuF,EAAE9F,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,GAAGe,EAAE,GAAG,KAAK,EAAE,GAAG,EAAEzB,EAAE,KAAKA,EAAE,MAAM,EAAEyB,MAAM,CAAC,GAAQA,IAAL,GAAO,CAAC,IAAIs2F,EAAE,EAAE,EAAE,EAAEA,GAAG,CAAC,GAAO,IAAJ,EAAM,MAAM92F,EAAE,IAAI,GAAGuF,EAAE9F,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,EAAMV,EAAE,OAAN,EAAW,CAAC,EAAE,IAAI,4BAA4BA,EAAE,KAAKiwH,GAAG,KAAK,CAACh6B,EAAEj2F,EAAE,KAAKA,EAAE,KAAK,CAAC,EAAEW,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,CAAC,SAAcc,IAAL,GAAO,CAAC,IAAIs2F,EAAE,EAAE,EAAE,EAAEA,GAAG,CAAC,GAAO,IAAJ,EAAM,MAAM92F,EAAE,IAAI,GAAGuF,EAAE9F,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAEu1F,EAAE,EAAEt1F,EAAE,GAAG,GAAG,KAAK,IAAI,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,IAAIo3F,EAAE,EAAE,EAAE,EAAEA,GAAG,CAAC,GAAO,IAAJ,EAAM,MAAM92F,EAAE,IAAI,GAAGuF,EAAE9F,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAEu1F,EAAE,EAAEt1F,EAAE,IAAI,KAAK,KAAK,IAAI,KAAK,EAAE,GAAG,CAAC,CAAC,GAAGX,EAAE,KAAKW,EAAEX,EAAE,KAAKA,EAAE,MAAM,CAAC,EAAE,IAAI,4BAA4BA,EAAE,KAAKiwH,GAAG,KAAK,CAAC,KAAKtvH,KAAKX,EAAE,KAAKA,EAAE,MAAM,EAAEi2F,CAAC,CAAC,CAAC,GAAGj2F,EAAE,OAAOiwH,GAAG,MAAM,GAAOjwH,EAAE,KAAK,GAAG,IAAd,EAAgB,CAAC,EAAE,IAAI,uCAAuCA,EAAE,KAAKiwH,GAAG,KAAK,CAAC,GAAGjwH,EAAE,QAAQ,EAAE,EAAE,CAAC,KAAKA,EAAE,OAAO,EAAE4oG,EAAE+mB,GAAG7/G,GAAG9P,EAAE,KAAK,EAAEA,EAAE,KAAKA,EAAE,QAAQ,EAAEA,EAAE,KAAK,CAAC,EAAEA,EAAE,QAAQ,EAAE,KAAK4oG,EAAE,CAAC,EAAE,IAAI,8BAA8B5oG,EAAE,KAAKiwH,GAAG,KAAK,CAAC,GAAGjwH,EAAE,SAAS,EAAEA,EAAE,SAASA,EAAE,QAAQ,EAAE,CAAC,KAAKA,EAAE,QAAQ,EAAE4oG,EAAE+mB,GAAGC,GAAG5vH,EAAE,KAAKA,EAAE,KAAKA,EAAE,MAAMA,EAAE,SAAS,EAAEA,EAAE,KAAK,CAAC,EAAEA,EAAE,SAAS,EAAE,KAAK4oG,EAAE,CAAC,EAAE,IAAI,wBAAwB5oG,EAAE,KAAKiwH,GAAG,KAAK,CAAC,GAAGjwH,EAAE,KAAK,GAAO,IAAJ,EAAM,MAAMiB,EAAE,IAAK,IAAGjB,EAAE,KAAK,GAAG,IAAK,IAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,EAAE,QAAQU,EAAE,EAAE,SAAS,EAAEV,EAAE,KAAK,EAAEA,EAAE,KAAK,EAAEmvH,GAAG,EAAEhyG,CAAC,EAAE,EAAE,EAAE,SAASza,EAAE,EAAE,OAAO,EAAE,EAAE,UAAUhC,EAAE,EAAE,QAAQ8F,EAAE,EAAE,MAAM,EAAE,EAAE,SAAS,EAAExG,EAAE,KAAK,EAAEA,EAAE,KAAKA,EAAE,OAAOgwH,KAAKhwH,EAAE,KAAK,IAAI,KAAK,CAAC,IAAIA,EAAE,KAAK,EAAEgB,GAAGsyD,EAAEtzD,EAAE,QAAQ,GAAG,GAAGA,EAAE,SAAS,CAAC,KAAK,GAAG,IAAIyB,EAAE,MAAM6xD,EAAE,GAAG,EAAEA,IAAI,KAAK,IAAI,CAAC,GAAO,IAAJ,EAAM,MAAMryD,EAAE,IAAI,GAAGuF,EAAE9F,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,GAAGM,GAAO,MAAIA,GAAG,CAAC,IAAI7L,EAAE,EAAEqN,EAAExB,EAAEyB,EAAEhB,EAAET,GAAGsyD,EAAEtzD,EAAE,QAAQyC,IAAI,GAAG,GAAGtN,EAAEqN,GAAG,IAAIrN,EAAE,KAAK,GAAG,IAAIsM,EAAE,MAAM6xD,EAAE,EAAEn+D,GAAG,EAAEm+D,IAAI,KAAK,IAAI,CAAC,GAAO,IAAJ,EAAM,MAAMryD,EAAE,IAAI,GAAGuF,EAAE9F,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,KAAKvL,EAAE,GAAGA,EAAE6K,EAAE,MAAM7K,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,EAAE6K,EAAE,MAAM,EAAEA,EAAE,OAAOyB,EAAMT,IAAJ,EAAM,CAAChB,EAAE,KAAK,GAAG,KAAK,CAAC,GAAG,GAAGgB,EAAE,CAAChB,EAAE,KAAK,GAAGA,EAAE,KAAKgwH,GAAG,KAAK,CAAC,GAAG,GAAGhvH,EAAE,CAAC,EAAE,IAAI,8BAA8BhB,EAAE,KAAKiwH,GAAG,KAAK,CAACjwH,EAAE,MAAM,GAAGgB,EAAEhB,EAAE,KAAK,GAAG,IAAK,IAAG,GAAGA,EAAE,MAAM,CAAC,IAAI+3F,EAAE/3F,EAAE,MAAM,EAAE+3F,GAAG,CAAC,GAAO,IAAJ,EAAM,MAAM92F,EAAE,IAAI,GAAGuF,EAAE9F,GAAG,GAAG,EAAE,GAAG,CAAC,CAACV,EAAE,QAAQ,GAAG,GAAGA,EAAE,OAAO,EAAE,KAAKA,EAAE,MAAM,GAAGA,EAAE,MAAMA,EAAE,MAAMA,EAAE,KAAK,CAACA,EAAE,IAAIA,EAAE,OAAOA,EAAE,KAAK,GAAG,IAAK,IAAG,KAAKgB,GAAGsyD,EAAEtzD,EAAE,SAAS,GAAG,GAAGA,EAAE,UAAU,CAAC,KAAK,GAAG,IAAIyB,EAAE,MAAM6xD,EAAE,GAAG,EAAEA,IAAI,KAAK,IAAI,CAAC,GAAO,IAAJ,EAAM,MAAMryD,EAAE,IAAI,GAAGuF,EAAE9F,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,GAAO,MAAIM,GAAG,CAAC,IAAI7L,EAAE,EAAEqN,EAAExB,EAAEyB,EAAEhB,EAAET,GAAGsyD,EAAEtzD,EAAE,SAASyC,IAAI,GAAG,GAAGtN,EAAEqN,GAAG,IAAIrN,EAAE,KAAK,GAAG,IAAIsM,EAAE,MAAM6xD,EAAE,EAAEn+D,GAAG,EAAEm+D,IAAI,KAAK,IAAI,CAAC,GAAO,IAAJ,EAAM,MAAMryD,EAAE,IAAI,GAAGuF,EAAE9F,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,KAAKvL,EAAE,GAAGA,EAAE6K,EAAE,MAAM7K,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,EAAE6K,EAAE,MAAM,EAAE,GAAGgB,EAAE,CAAC,EAAE,IAAI,wBAAwBhB,EAAE,KAAKiwH,GAAG,KAAK,CAACjwH,EAAE,OAAOyB,EAAEzB,EAAE,MAAM,GAAGgB,EAAEhB,EAAE,KAAK,GAAG,IAAK,IAAG,GAAGA,EAAE,MAAM,CAAC,IAAI+3F,EAAE/3F,EAAE,MAAM,EAAE+3F,GAAG,CAAC,GAAO,IAAJ,EAAM,MAAM92F,EAAE,IAAI,GAAGuF,EAAE9F,GAAG,GAAG,EAAE,GAAG,CAAC,CAACV,EAAE,QAAQ,GAAG,GAAGA,EAAE,OAAO,EAAE,KAAKA,EAAE,MAAM,GAAGA,EAAE,MAAMA,EAAE,MAAMA,EAAE,KAAK,CAAC,GAAGA,EAAE,OAAOA,EAAE,KAAK,CAAC,EAAE,IAAI,gCAAgCA,EAAE,KAAKiwH,GAAG,KAAK,CAACjwH,EAAE,KAAK,GAAG,IAAK,IAAG,GAAO,IAAJ,EAAM,MAAMiB,EAAE,GAAGN,EAAEwc,EAAE,EAAEnd,EAAE,OAAOW,EAAE,CAAC,IAAIA,EAAEX,EAAE,OAAOW,GAAGX,EAAE,OAAOA,EAAE,KAAK,CAAC,EAAE,IAAI,gCAAgCA,EAAE,KAAKiwH,GAAG,KAAK,CAACtvH,EAAEX,EAAE,OAAOW,GAAGX,EAAE,MAAM,EAAEA,EAAE,MAAMW,GAAG,EAAEX,EAAE,MAAMW,EAAEA,EAAEX,EAAE,SAASW,EAAEX,EAAE,QAAQ4F,EAAE5F,EAAE,MAAM,MAAM4F,EAAElD,EAAE,EAAE,EAAE1C,EAAE,OAAOW,EAAEX,EAAE,OAAOW,EAAE,IAAIA,EAAE,GAAG,GAAGA,EAAEX,EAAE,QAAQW,EAAE,GAAG+B,EAAE,GAAG,EAAEkD,EAAE,GAAG,QAAQ,EAAEjF,GAAOX,EAAE,SAAN,IAAeA,EAAE,KAAK,IAAI,MAAM,IAAK,IAAG,GAAO,IAAJ,EAAM,MAAMiB,EAAEyB,EAAE,GAAG,EAAE1C,EAAE,OAAO,IAAIA,EAAE,KAAK,GAAG,MAAM,IAAK,IAAG,GAAGA,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAO,IAAJ,EAAM,MAAMiB,EAAE,IAAI,GAAGuF,EAAE9F,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,GAAGyc,GAAG,EAAE,EAAE,WAAWA,EAAEnd,EAAE,OAAOmd,EAAEA,IAAI,EAAE,MAAMnd,EAAE,MAAMA,EAAE,MAAMgvH,GAAGhvH,EAAE,MAAM0C,EAAEya,EAAE,EAAEA,CAAC,EAAE2xG,GAAG9uH,EAAE,MAAM0C,EAAEya,EAAE,EAAEA,CAAC,GAAGA,EAAE,GAAGnd,EAAE,MAAM,EAAEmwH,GAAG,CAAC,KAAKnwH,EAAE,MAAM,CAAC,EAAE,IAAI,uBAAuBA,EAAE,KAAKiwH,GAAG,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAACjwH,EAAE,KAAK,GAAG,IAAK,IAAG,GAAGA,EAAE,MAAMA,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAO,IAAJ,EAAM,MAAMiB,EAAE,IAAI,GAAGuF,EAAE9F,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,WAAWV,EAAE,OAAO,CAAC,EAAE,IAAI,yBAAyBA,EAAE,KAAKiwH,GAAG,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAACjwH,EAAE,KAAK,GAAG,IAAK,IAAG4oG,EAAE,EAAE,MAAM3nG,EAAE,KAAKgvH,GAAGrnB,EAAE,GAAG,MAAM3nG,EAAE,IAAK,IAAG,MAAM,GAAG,QAAQ,OAAO6uH,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,EAAE,QAAQpvH,EAAE,EAAE,SAAS,EAAEV,EAAE,KAAK,EAAEA,EAAE,KAAK,GAAGA,EAAE,OAAOmd,IAAI,EAAE,WAAWnd,EAAE,KAAKiwH,KAAKjwH,EAAE,KAAK,IAAQ,IAAJ,KAAS2wH,GAAG,EAAE,EAAE,OAAO,EAAE,SAASxzG,EAAE,EAAE,SAAS,EAAExX,GAAG,EAAE,SAASwX,GAAG,EAAE,UAAU,EAAE,UAAUxX,EAAE,EAAE,WAAWwX,EAAEnd,EAAE,OAAOmd,EAAEnd,EAAE,MAAMmd,IAAI,EAAE,MAAMnd,EAAE,MAAMA,EAAE,MAAMgvH,GAAGhvH,EAAE,MAAM0C,EAAEya,EAAE,EAAE,SAASA,CAAC,EAAE2xG,GAAG9uH,EAAE,MAAM0C,EAAEya,EAAE,EAAE,SAASA,CAAC,GAAG,EAAE,UAAUnd,EAAE,MAAMA,EAAE,KAAK,GAAG,IAAIA,EAAE,OAAOgwH,GAAG,IAAI,IAAShwH,EAAE,OAAP,IAAkBA,EAAE,OAAP,GAAY,IAAI,IAAQ2F,IAAJ,GAAWwX,IAAJ,GAAW,IAAJ,IAAQyrF,IAAIinB,KAAKjnB,EAAE,IAAIA,CAAC,CAAC,SAASioB,GAAG,EAAE,EAAE,CAAC,IAAI7wH,EAAEwG,EAAE,EAAE,OAAO,OAAO,GAAG,EAAE,OAAWxG,EAAE,EAAE,OAAO,OAAhB,GAA2BA,EAAE,OAAP,GAAY8vH,GAAQ9vH,EAAE,OAAP,IAAa8uH,GAAG,EAAE,EAAEtoH,EAAE,CAAC,IAAIxG,EAAE,MAAM,GAAG2wH,GAAG,EAAE,EAAEnqH,EAAEA,CAAC,GAAGxG,EAAE,KAAK,GAAG,KAAKA,EAAE,SAAS,EAAE6vH,IAAIC,EAAE,CAAC,IAAIgB,GAAG,GAAGC,GAAG,GAAG,GAAG,CAAC,OAAO,aAAa,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAS,CAACD,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,aAAa,MAAM,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,MAAS,CAACC,GAAG,EAAE,CAAC,QAAQC,GAAG,IAAI,WAAW,GAAG,EAAEC,GAAG,EAAEA,GAAG,IAAIA,KAAKD,GAAGC,EAAE,EAAEA,IAAI,IAAI,EAAEA,IAAI,IAAI,EAAEA,IAAI,IAAI,EAAEA,IAAI,IAAI,EAAEA,IAAI,IAAI,EAAE,EAAE,SAASC,GAAG,EAAE,CAAC,IAAI,EAAElxH,EAAEwG,EAAE9D,EAAEhC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,IAAIgC,EAAE,EAAEA,EAAE,EAAEA,KAAY,OAAO1C,EAAE,EAAE,WAAW0C,CAAC,KAA/B,OAAoCA,EAAE,EAAE,IAAW,OAAO8D,EAAE,EAAE,WAAW9D,EAAE,CAAC,KAAjC,QAAuC1C,EAAE,OAAOA,EAAE,OAAO,KAAKwG,EAAE,OAAO9D,KAAK,GAAG1C,EAAE,IAAI,EAAEA,EAAE,KAAK,EAAEA,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,WAAW,CAAC,EAAEU,EAAE,EAAEgC,EAAE,EAAEhC,EAAE,EAAEgC,KAAY,OAAO1C,EAAE,EAAE,WAAW0C,CAAC,KAA/B,OAAoCA,EAAE,EAAE,IAAW,OAAO8D,EAAE,EAAE,WAAW9D,EAAE,CAAC,KAAjC,QAAuC1C,EAAE,OAAOA,EAAE,OAAO,KAAKwG,EAAE,OAAO9D,KAAK1C,EAAE,IAAI,EAAEU,GAAG,EAAEV,EAAEA,EAAE,MAAM,EAAEU,GAAG,EAAE,IAAIV,IAAI,EAAE,EAAEU,GAAG,EAAE,IAAI,GAAGV,GAAGA,EAAE,OAAO,EAAEU,GAAG,EAAE,IAAIV,IAAI,GAAG,EAAEU,GAAG,EAAE,IAAIV,IAAI,EAAE,GAAG,EAAEU,GAAG,EAAE,IAAI,GAAGV,IAAI,EAAEU,GAAG,EAAE,IAAIV,IAAI,GAAG,EAAEU,GAAG,EAAE,IAAIV,IAAI,GAAG,GAAG,EAAEU,GAAG,EAAE,IAAIV,IAAI,EAAE,GAAG,EAAEU,GAAG,EAAE,IAAI,GAAGV,GAAG,OAAO,CAAC,CAAC,SAASmxH,GAAG,EAAE,EAAE,CAAC,IAAInxH,EAAEwG,EAAE9D,EAAEhC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,MAAM,EAAE,CAAC,EAAE,IAAI8F,EAAE,EAAExG,EAAE,EAAEA,EAAE,GAAG,IAAI0C,EAAE,EAAE1C,GAAG,GAAG,IAAI,EAAEwG,GAAG,EAAE9D,WAAWhC,EAAEswH,GAAGtuH,CAAC,GAAG,EAAE,EAAE8D,GAAG,EAAE,MAAMxG,GAAGU,EAAE,MAAM,CAAC,IAAIgC,GAAOhC,IAAJ,EAAM,GAAOA,IAAJ,EAAM,GAAG,EAAEA,EAAE,GAAGV,EAAE,GAAG0C,EAAEA,GAAG,EAAE,GAAG,EAAE1C,GAAG,EAAEU,IAAIA,EAAE,EAAE,EAAE8F,GAAG,EAAE,MAAM9D,EAAE,MAAM,EAAE8D,GAAG,EAAE9D,GAAGA,GAAG,MAAM,EAAE8D,GAAG,EAAE,MAAM9D,GAAG,GAAG,KAAK,EAAE8D,GAAG,EAAE,MAAM,KAAK9D,EAAE,CAAC,OAAO,SAASzB,EAAE0B,EAAE,CAAC,GAAGA,EAAE,QAAQ1B,EAAE,UAAU8vH,IAAI,CAAC9vH,EAAE,UAAU6vH,IAAI,OAAO,OAAO,aAAa,MAAM,KAAKlC,GAAG3tH,EAAE0B,CAAC,CAAC,EAAE,QAAQ3C,EAAE,GAAGwG,EAAE,EAAEA,EAAE7D,EAAE6D,IAAIxG,GAAG,OAAO,aAAaiB,EAAEuF,CAAC,CAAC,EAAE,OAAOxG,CAAC,EAAE,EAAEwG,CAAC,CAAC,CAAC,SAAS4qH,GAAG,EAAE,EAAE,CAAC,IAAIpxH,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,QAAQA,EAAE,EAAE,EAAEA,GAAG,IAAS,IAAI,EAAEA,CAAC,IAAb,KAAiBA,IAAI,OAAOA,EAAE,GAAOA,IAAJ,EAAM,EAAEA,EAAEgxH,GAAG,EAAEhxH,CAAC,CAAC,EAAE,EAAEA,EAAE,CAAC,CAACgxH,GAAG,GAAG,EAAEA,GAAG,GAAG,EAAE,EAAE,IAAIK,GAAG,EAAEC,GAAG,CAAC,EAAE,kBAAkB,EAAE,aAAa,EAAE,GAAG,KAAK,aAAa,KAAK,eAAe,KAAK,aAAa,KAAK,sBAAsB,KAAK,eAAe,KAAK,sBAAsB,EAAE,SAASC,IAAI,CAAC,KAAK,MAAM,KAAK,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,OAAO,KAAK,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,KAAK,UAAU,EAAE,KAAK,MAAM,CAAC,CAAC,SAASC,IAAI,CAAC,KAAK,KAAK,EAAE,KAAK,KAAK,EAAE,KAAK,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,MAAM,KAAK,KAAK,UAAU,EAAE,KAAK,KAAK,GAAG,KAAK,QAAQ,GAAG,KAAK,KAAK,EAAE,KAAK,KAAK,EAAE,CAAC,IAAIC,GAAG,OAAO,UAAU,SAAS,SAASC,GAAG,EAAE,CAAC,GAAG,EAAE,gBAAgBA,IAAI,OAAO,IAAIA,GAAG,CAAC,EAAE,KAAK,QAAQ,SAASzwH,EAAE,CAAC,QAAQ0B,EAAE,MAAM,UAAU,MAAM,KAAK,UAAU,CAAC,EAAEA,EAAE,QAAQ,CAAC,IAAI3C,EAAE2C,EAAE,MAAO,EAAC,GAAG3C,EAAE,CAAC,GAAa,OAAOA,GAAjB,SAAmB,MAAM,IAAI,UAAUA,EAAE,oBAAoB,EAAE,QAAQwG,KAAKxG,EAAEA,EAAE,eAAewG,CAAC,IAAIvF,EAAEuF,CAAC,EAAExG,EAAEwG,CAAC,EAAE,CAAC,CAAC,OAAOvF,CAAC,EAAE,CAAC,UAAU,MAAM,WAAW,EAAE,GAAG,EAAE,EAAE,GAAG,CAAE,CAAA,EAAE,IAAI,EAAE,KAAK,QAAQ,EAAE,KAAK,EAAE,YAAY,GAAG,EAAE,WAAW,KAAK,EAAE,WAAW,CAAC,EAAE,WAAe,EAAE,aAAN,IAAmB,EAAE,WAAW,MAAM,EAAE,EAAE,YAAY,GAAG,EAAE,WAAW,KAAK,GAAG,EAAE,aAAa,EAAE,YAAY,IAAI,EAAE,WAAW,IAAI,EAAE,WAAW,IAAQ,KAAG,EAAE,cAAc,EAAE,YAAY,IAAI,KAAK,IAAI,EAAE,KAAK,IAAI,GAAG,KAAK,MAAM,GAAG,KAAK,OAAO,CAAA,EAAG,KAAK,KAAK,IAAIswH,GAAG,KAAK,KAAK,UAAU,EAAE,IAAIvxH,EAAEwG,EAAE9D,EAAEhC,EAAE4vH,GAAG,KAAK,KAAK,EAAE,UAAU,EAAE,GAAG5vH,IAAI2wH,GAAG,MAAM,IAAI,MAAMC,GAAG5wH,CAAC,CAAC,EAAE,KAAK,OAAO,IAAI8wH,GAAGxxH,EAAE,KAAK,KAAKwG,EAAE,KAAK,OAAOxG,GAAGA,EAAE,QAAY,KAAG0C,EAAE1C,EAAE,OAAO,QAAQ0C,EAAE,KAAK8D,EAAEA,EAAE,KAAK,IAAI,CAACkrH,GAAG,UAAU,KAAK,SAAS,EAAE,EAAE,CAAC,IAAI1xH,EAAEwG,EAAE9D,EAAEhC,EAAE,EAAE,EAAE,EAAE,KAAK,KAAK,EAAE,KAAK,QAAQ,UAAU,EAAE,KAAK,QAAQ,WAAWiF,EAAE,GAAG,GAAG,KAAK,MAAM,MAAM,GAAGa,EAAE,IAAI,CAAC,CAAC,EAAE,EAAO,IAAL,GAAO,EAAE,EAAY,OAAO,GAAjB,SAAmB,EAAE,MAAM,SAASvF,EAAE,CAAC,QAAQ0B,EAAE,IAAI,WAAW1B,EAAE,MAAM,EAAEjB,EAAE,EAAEwG,EAAE7D,EAAE,OAAO3C,EAAEwG,EAAExG,IAAI2C,EAAE3C,CAAC,EAAEiB,EAAE,WAAWjB,CAAC,EAAE,OAAO2C,CAAC,EAAE,CAAC,EAA2B8uH,GAAG,KAAK,CAAC,IAAlC,uBAAoC,EAAE,MAAM,IAAI,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,EAAE,CAAC,GAAO,EAAE,YAAN,IAAkB,EAAE,OAAO,IAAI,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,UAAU,IAAQzxH,EAAE4wH,GAAG,EAAE,CAAC,KAAb,GAAiB,IAAI,EAAY,OAAO,GAAjB,SAAmBM,GAAG,CAAC,EAA2BO,GAAG,KAAK,CAAC,IAAlC,uBAAoC,IAAI,WAAW,CAAC,EAAE,EAAEzxH,EAAE6wH,GAAG,KAAK,KAAK,CAAC,GAAQ7wH,IAAL,IAAa2F,IAAL,KAAS3F,EAAEqxH,GAAG1rH,EAAE,IAAQ3F,IAAJ,GAAOA,IAAIqxH,GAAG,OAAO,KAAK,MAAMrxH,CAAC,EAAE,KAAK,MAAM,GAAG,GAAG,EAAE,WAAe,EAAE,YAAN,GAAqBA,IAAJ,IAAY,EAAE,WAAN,GAAoBwG,IAAJ,GAAWA,IAAJ,KAAoB,KAAK,QAAQ,KAAxB,UAA4B9D,EAAE0uH,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE1wH,EAAE,EAAE,SAASgC,EAAE,EAAEyuH,GAAG,EAAE,OAAOzuH,CAAC,EAAE,EAAE,SAAShC,EAAE,EAAE,UAAU,EAAEA,EAAEA,GAAGmuH,GAAG,EAAE,OAAO,EAAE,OAAOnsH,EAAEhC,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,GAAG,KAAK,OAAOkuH,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAQ,EAAE,WAAN,GAAoB,EAAE,YAAN,IAAkBjpH,EAAE,GAAG,QAAQ,EAAE,SAAS,GAAO,EAAE,YAAN,IAAsB3F,IAAJ,GAAO,OAAWA,IAAJ,IAAQwG,EAAE,GAAOA,IAAJ,GAAOxG,EAAE,SAASiB,EAAE,CAAC,GAAG,CAACA,GAAG,CAACA,EAAE,MAAM,OAAO6uH,GAAG,IAAIntH,EAAE1B,EAAE,MAAM,OAAO0B,EAAE,SAASA,EAAE,OAAO,MAAM1B,EAAE,MAAM,KAAK4uH,EAAE,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM7vH,CAAC,EAAE,KAAK,MAAM,GAAGA,IAAIqxH,IAAQ7qH,IAAJ,IAAQ,KAAK,MAAM6qH,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAEK,GAAG,UAAU,OAAO,SAAS,EAAE,CAAC,KAAK,OAAO,KAAK,CAAC,CAAC,EAAEA,GAAG,UAAU,MAAM,SAAS,EAAE,CAAC,IAAIL,KAAgB,KAAK,QAAQ,KAAxB,SAA2B,KAAK,OAAO,KAAK,OAAO,KAAK,EAAE,EAAE,KAAK,OAAO,SAASpwH,EAAE,CAAC,IAAI0B,EAAE,EAAE,EAAE,EAAEjC,EAAEwvD,EAAE,IAAI,EAAE,EAAEvtD,EAAE,EAAE,EAAE1B,EAAE,OAAO0B,EAAE,EAAEA,IAAI,GAAG1B,EAAE0B,CAAC,EAAE,OAAO,IAAIutD,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,EAAEvtD,EAAE,EAAE,EAAE1B,EAAE,OAAO0B,EAAE,EAAEA,IAAIjC,EAAEO,EAAE0B,CAAC,EAAEutD,EAAE,IAAIxvD,EAAE,CAAC,EAAE,GAAGA,EAAE,OAAO,OAAOwvD,CAAC,EAAE,KAAK,MAAM,GAAG,KAAK,OAAO,CAAE,EAAC,KAAK,IAAI,EAAE,KAAK,IAAI,KAAK,KAAK,GAAG,EAAE60C,GAAG,IAAI,KAAM,SAAS,EAAE,CAAC,IAAI,EAAE,aAAa,cAAc,EAAE,IAAI,WAAW,CAAC,GAAG,GAAG,CAAC,EAAE,SAAS9jG,EAAE0B,EAAE,CAAC,IAAI3C,EAAE,IAAI0xH,GAAG/uH,CAAC,EAAE,GAAG3C,EAAE,KAAKiB,EAAE,EAAE,EAAEjB,EAAE,IAAI,MAAMA,EAAE,IAAI,OAAOA,EAAE,MAAM,EAAE,CAAC,CAAC,MAAS,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAI,MAAM2xH,EAAE,CAAA,CAAE,MAAMC,GAAG,wBAAwBC,GAAGD,GAAG,QAAQE,GAAGF,GAAG,WAAWjtB,GAAG,IAAI,OAAO,IAAI,cAAcgtB,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,EAAEhsB,GAAG,CAAC,EAAE3lG,EAAE,EAAE,KAAK,OAAO,EAAE,CAAC,EAAE,IAAIwG,EAAE,MAAM,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,EAAE,GAAG,GAAQ,EAAE,aAAP,IAA0B,EAAE,aAAT,KAA6B,EAAE,MAAX,OAAeA,EAAE,EAAE,KAAK,SAAS,KAAK,EAAEsrH,GAAG9xH,EAAE6xH,GAAG7xH,GAAE,EAAE,KAAKqkG,GAAG,KAAK,kBAAkB,EAAE,GAAG,EAAE79F,EAAEqrH,GAAG7xH,GAAUwG,EAAE,6BAA6B,EAAE,KAAK05F,GAAI,EAAC15F,CAAC,CAAC,OAAO,EAAE,CAAmB,OAAVm/F,GAAG,CAAC,EAAE,KAAc,MAAM,CAAC,CAAC,EAAE,MAAMosB,GAAG,oDAAoDC,GAAG,sBAAsBrtB,GAAG,IAAI,UAAU,IAAI,cAAcgtB,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,EAAEhsB,GAAG,CAAC,EAAE3lG,EAAE,EAAE,KAAK,IAAIwG,EAAE,OAAO,EAAE,KAAa,EAAE,MAAV,OAAe69F,GAAG,KAAK,kBAAkB,EAAE,GAAG,EAAE79F,EAAEurH,GAAG/xH,EAAEgyH,GAAc9xB,GAAE,EAAG15F,CAAC,CAAC,OAAO,EAAE,CAAmB,OAAVm/F,GAAG,CAAC,EAAE,KAAc,KAAK,CAAC,CAAC,EAAE,MAAMssB,WAAWN,EAAE,CAAC,OAAO1wH,EAAE,CAAC,OAAOA,CAAC,CAAC,OAAOA,EAAE,CAAC,OAAO0kG,GAAG1kG,CAAC,EAAE,GAAG,CAAC,CAAC0jG,GAAG,IAAI,MAAM,IAAIstB,EAAE,EAAEttB,GAAG,IAAI,OAAO,IAAIstB,EAAE,EAAEttB,GAAG,IAAI,QAAQ,IAAIstB,EAAE,EAAE,MAAMC,GAAG,kCAAkCC,GAAG,mBAAmBxtB,GAAG,IAAI,YAAY,IAAI,cAAcgtB,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,EAAEhsB,GAAG,CAAC,EAAE3lG,EAAE,EAAE,KAAK,IAAIwG,EAAE,OAAO,EAAE,KAAa,EAAE,MAAV,OAAe69F,GAAG,KAAK,qBAAqB,EAAE,GAAG,EAAE79F,EAAE0rH,GAAGlyH,EAAEmyH,GAAcjyB,GAAI,EAAC15F,CAAC,CAAC,OAAO,EAAE,CAAmB,OAAVm/F,GAAG,CAAC,EAAE,KAAc,KAAK,CAAC,CAAC,EAAE,MAAMysB,GAAG,4BAA4B,MAAMC,WAAWV,EAAE,CAAC,YAAY1wH,EAAE,GAAG,CAAC,MAAO,EAAC,KAAK,QAAQA,CAAC,CAAC,OAAOA,EAAE,CAAC,MAAM0B,EAAEgjG,GAAG1kG,CAAC,EAAE,IAAI,EAAE,KAAK,QAAQ0B,EAAE,KAAK,OAAOyvH,GAAG,KAAK,KAAK,OAAO,IAAI,EAAE,SAASnxH,EAAE,CAAC,MAAM0B,EAAE,OAAO,SAAS3C,EAAE2C,EAAE,SAAS6D,EAAExG,EAAE,UAAU,EAAEA,EAAE,YAAY,GAAG,EAAE,CAAC,EAAE,OAAO2C,EAAE,OAAO6D,EAAEvF,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAOA,EAAE,CAAC,OAAO0kG,GAAG1kG,CAAC,EAAE,GAAG,CAAC,CAA4mB,SAASqxH,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,UAAU,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,SAASC,GAAG,EAAE,EAAEvyH,EAAE,CAAC,MAAM,CAAC,KAAK,SAAS,UAAU,EAAE,IAAI,EAAE,IAAIA,CAAC,CAAC,CAAC,SAASwyH,GAAG,EAAE,EAAExyH,EAAE,CAAC,MAAM,CAAC,KAAK,QAAQ,KAAK,EAAE,IAAI,EAAE,IAAIA,CAAC,CAAC,CAAC,SAASyyH,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,SAAS,QAAQ,EAAE,OAAQ,CAACxxH,EAAE0B,IAAI,OAAO,OAAO,OAAO,OAAO,GAAG1B,CAAC,EAAE,CAAC,CAAC0B,CAAC,EAAEA,CAAC,CAAC,EAAG,CAAE,CAAA,CAAC,CAAC,CAAkD8vH,GAAG,OAAO,MAAM,SAAS,MAAM,EAAcD,GAAG,EAAE,EAAE,EAAE,EAAuED,GAAG,EAAE,GAAG,CAAC,EAAYA,GAAG,EAAE,GAAG,CAAC,EAAWA,GAAG,EAAE,GAAG,CAAC,EAAWC,GAAG,EAAE,IAAI,CAAC,EAAUA,GAAG,EAAE,IAAI,CAAC,EAAWF,GAAG,IAAI,CAAC,EAAWG,GAAG,QAAQ,QAAQ,EAAYA,GAAG,WAAW,UAAU,EAAUD,GAAG,EAAE,IAAI,CAAC,EAASA,GAAG,EAAE,IAAI,CAAC,EAAaC,GAAG,cAAc,eAAe,QAAQ,EAAeF,GAAG,EAAE,EAAE,GAAG,EAAYC,GAAG,EAAE,IAAI,EAAE,EAA2CD,GAAG,EAAE,GAAG,CAAC,EAA+CA,GAAG,EAAE,GAAG,CAAC,EAAeD,GAAG,IAAI,EAAE,EAAuCG,GAAG,GAAG,OAAO,KAAKvc,EAAE,CAAC,ECvB7p8a,SAASwc,GACdC,EACAC,EACAC,EACAC,EACAC,EACA,CACM,MAAAzjB,EAAKujB,EAAU,aAAa,MAC5BvG,EAAKuG,EAAU,kBACfG,EAAML,EAAM,QAAQ,eAAeC,EAASE,CAAQ,EAC1D,QAAS9yH,EAAI,EAAGA,EAAIsvG,EAAI,EAAEtvG,EAExB,GADAssH,EAAG,MAAQtsH,EACPssH,EAAG,QAAU0G,EAAMD,EAAW,EACzB,OAAAzG,CAGb,CCJA2G,GAAmB,IACjB,OACA,IAAIC,GAAiB,kCAAkC,CACzD,EACA,MAAMC,GAAeC,GAAS,SAAU,CAAE,MAAAT,GAA8B,CAChE,MAAAU,EAAcC,UAAqB,CAAA,CAAE,EACrC,CAAC5zH,EAAM6zH,CAAO,EAAIC,YAAS,SAAS,EACpC,CAAC17C,EAAK27C,CAAM,EAAID,GAAA,SAAsB,CAAE,CAAA,EACxC,CAACE,EAAOC,CAAQ,EAAIH,GAAgB,SAAA,EACpC,CAACI,EAAiBC,CAAgB,EAAIL,YAAS,EAAK,EACpD,CAAE,QAAAM,EAAS,aAAAC,CAAiB,EAAApB,EAC5B,CAAE,mBAAAqB,EAAoB,SAAAlB,CAAa,EAAAgB,EACnCG,EAAaC,GAAYF,CAAkB,EAE3CG,EAAkBC,eAAav/G,GAA4B,CAC/D,GAAIA,EAAS,CACL,MAAAw/G,EAAe,IAAIC,GAAMz/G,CAAO,EACtC8+G,EAASU,CAAY,CACvB,CACF,EAAG,CAAE,CAAA,EAELE,OAAAA,GAAAA,UAAU,IACD,IAAMb,GAAA,YAAAA,EAAO,UACnB,CAACA,CAAK,CAAC,EAEVa,GAAAA,UAAU,IAAM,CACV,CAACN,EAAW,QAAU,CAACP,IAIzB,SAAY,CAEL,OAAA,iBAAiB,SAAU,IAAM,CACtCA,EAAM,aAAa,CAAA,CACpB,EAEK57C,MAAAA,EAAM,MAAM,QAAQ,IACxBm8C,EAAW,OAEPP,EAAM,SACJ,UAAUc,EAAU,UAAU,GAAG,MACnC,CACJ,CAAA,EAEFf,EAAO37C,CAAG,EAEV47C,EAAM,QAAQ,QAAQ,IAAKe,GAAsB,OAC/C,GAAIA,IAAiBA,EAAa,MAAQA,EAAa,MAAO,CACtD,MAAAC,EAAOD,EAAa,MAAQA,EAAa,gBACvCX,EAAA,qBACNY,EAAK,QAAQhd,EAAAuc,EAAW,CAAC,IAAZ,YAAAvc,EAAe,UAAU,UACtCgd,EAAK,UACLD,EAAa,OAAO,UAAU,IAAA,CAElC,CAAA,CACD,CAAA,IAEF,EAAA,CAACX,EAASG,EAAYP,CAAK,CAAC,EAE/Ba,GAAAA,UAAU,IAAM,CACd,GAAIb,EAAO,CACT,UAAWiB,KAAO78C,EAChB68C,EAAI,yBAAyB,EAC7BA,EAAI,kBAAkBj1H,EAAM,CAAE,KAAMq0H,CAAc,CAAA,EAEpDL,EAAM,SAAS,CACjB,GACC,CAACh0H,EAAMo4E,EAAK47C,EAAOK,CAAY,CAAC,EAEnCQ,GAAAA,UAAU,IAAM,CACVN,EAAW,QAAU,CAACL,GACpB97C,EAAA,QAAQ,CAAC68C,EAAKr/H,IAAU,CAK1B,GAJI+9H,EAAY,QAAQ,QACtBsB,EAAI,iBAAiBtB,EAAY,QAAQ/9H,CAAK,CAAC,EAEjD+9H,EAAY,QAAU,GAClBP,IAAa,OAAW,CAE1B,MAAMD,EAAY8B,EAAI,UAChBvxH,EAASsvH,GACbC,EACAsB,EAAW3+H,CAAK,EAAE,GAClBu9H,EACAC,EACAmB,EAAW,CAAC,EAAE,UAAU,QAAA,EAE1B,GAAI7wH,EAAQ,CACJ,MAAAspH,EAAKmG,EAAU,eACrBnG,EAAG,MAAQtpH,EAAO,WAElBiwH,EAAY,QAAQ,KAElBsB,EAAI,cAAcjI,EAAG,oBAAqBtpH,EAAO,eAAe,CAAA,CAEpE,CACF,CACAswH,GAAA,MAAAA,EAAO,OAAO,eAAc,CAC7B,CACH,EACC,CAACf,EAAOG,EAAUmB,EAAYP,GAAA,YAAAA,EAAO,OAAQ57C,EAAK87C,CAAe,CAAC,EAE9DI,EAAmB,OACvBY,GAAAA,KAAA,MAAA,CAAI,MAAO,CAAE,QAAS,EACrB,EAAA,SAAA,CAAAA,QAAC,OAAI,MAAO,CAAE,QAAS,OAAQ,WAAY,QACzC,EAAA,SAAA,CAAAC,GAAA,IAACC,GAAA,CACC,QAAS,IAAMhB,EAAQ,wBAAwB,EAC/C,QAAQ,YACT,SAAA,OAAA,CAED,SAEC,MAAI,CAAA,MAAO,CAAE,MAAO,IAAM,EAC3Bc,GAAAA,KAACG,GAAO,CAAA,MAAOr1H,EAAM,YAAmB6zH,EAAQzzH,EAAM,OAAO,KAAK,EAChE,SAAA,CAAC+0H,GAAA,IAAAG,GAAA,CAAS,MAAO,UAAW,SAAO,UAAA,EAClCH,GAAA,IAAAG,GAAA,CAAS,MAAO,aAAc,SAAU,aAAA,CAAA,EAC3C,SACC,MAAI,CAAA,MAAO,CAAE,MAAO,IAAM,EAC3BH,GAAA,IAACI,GAAA,CACC,QAAQ,WACR,MAAM,YACN,MAAOlB,EACP,SAAmBj0H,GAAA6yH,EAAM,gBAAgB7yH,EAAM,OAAO,KAAK,CAAA,CAC7D,CAAA,EACF,EAEA+0H,GAAA,IAAC,MAAA,CACC,IAAKV,EACL,MAAO,CAAE,MAAO,IAAK,OAAQ,GAAI,EACjC,aAAc,IAAMN,EAAiB,EAAI,EACzC,aAAc,IAAMA,EAAiB,EAAK,CAAA,CAC5C,CAAA,CACF,CAAA,EACE,IACN,CAAC","x_google_ignoreList":[0,1,2,3,4]} \ No newline at end of file +{"version":3,"file":"ProteinPanel-CR1YkZo1.js","sources":["../../../node_modules/three/build/three.module.js","../../../node_modules/chroma-js/chroma.js","../../../node_modules/signals/dist/signals.js","../../../node_modules/sprintf-js/src/sprintf.js","../../../node_modules/ngl/dist/ngl.esm.js","../../src/util.ts","../../src/ProteinPanel.tsx"],"sourcesContent":["// Polyfills\n\nif ( Number.EPSILON === undefined ) {\n\n\tNumber.EPSILON = Math.pow( 2, - 52 );\n\n}\n\nif ( Number.isInteger === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger\n\n\tNumber.isInteger = function ( value ) {\n\n\t\treturn typeof value === 'number' && isFinite( value ) && Math.floor( value ) === value;\n\n\t};\n\n}\n\n//\n\nif ( Math.sign === undefined ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign\n\n\tMath.sign = function ( x ) {\n\n\t\treturn ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x;\n\n\t};\n\n}\n\nif ( 'name' in Function.prototype === false ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name\n\n\tObject.defineProperty( Function.prototype, 'name', {\n\n\t\tget: function () {\n\n\t\t\treturn this.toString().match( /^\\s*function\\s*([^\\(\\s]*)/ )[ 1 ];\n\n\t\t}\n\n\t} );\n\n}\n\nif ( Object.assign === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n\n\tObject.assign = function ( target ) {\n\n\t\tif ( target === undefined || target === null ) {\n\n\t\t\tthrow new TypeError( 'Cannot convert undefined or null to object' );\n\n\t\t}\n\n\t\tconst output = Object( target );\n\n\t\tfor ( let index = 1; index < arguments.length; index ++ ) {\n\n\t\t\tconst source = arguments[ index ];\n\n\t\t\tif ( source !== undefined && source !== null ) {\n\n\t\t\t\tfor ( const nextKey in source ) {\n\n\t\t\t\t\tif ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) {\n\n\t\t\t\t\t\toutput[ nextKey ] = source[ nextKey ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn output;\n\n\t};\n\n}\n\nconst REVISION = '118';\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst FrontFaceDirectionCW = 0;\nconst FrontFaceDirectionCCW = 1;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst FlatShading = 1;\nconst SmoothShading = 2;\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst CineonToneMapping = 3;\nconst ACESFilmicToneMapping = 4;\nconst CustomToneMapping = 5;\n\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst CubeUVRefractionMapping = 307;\nconst RepeatWrapping = 1000;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedShort565Type = 1019;\nconst UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBFormat = 1022;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst RGBEFormat = RGBAFormat;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBIntegerFormat = 1032;\nconst RGBAIntegerFormat = 1033;\n\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst SRGB8_ALPHA8_ASTC_4x4_Format = 37840;\nconst SRGB8_ALPHA8_ASTC_5x4_Format = 37841;\nconst SRGB8_ALPHA8_ASTC_5x5_Format = 37842;\nconst SRGB8_ALPHA8_ASTC_6x5_Format = 37843;\nconst SRGB8_ALPHA8_ASTC_6x6_Format = 37844;\nconst SRGB8_ALPHA8_ASTC_8x5_Format = 37845;\nconst SRGB8_ALPHA8_ASTC_8x6_Format = 37846;\nconst SRGB8_ALPHA8_ASTC_8x8_Format = 37847;\nconst SRGB8_ALPHA8_ASTC_10x5_Format = 37848;\nconst SRGB8_ALPHA8_ASTC_10x6_Format = 37849;\nconst SRGB8_ALPHA8_ASTC_10x8_Format = 37850;\nconst SRGB8_ALPHA8_ASTC_10x10_Format = 37851;\nconst SRGB8_ALPHA8_ASTC_12x10_Format = 37852;\nconst SRGB8_ALPHA8_ASTC_12x12_Format = 37853;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\nconst LinearEncoding = 3000;\nconst sRGBEncoding = 3001;\nconst GammaEncoding = 3007;\nconst RGBEEncoding = 3002;\nconst LogLuvEncoding = 3003;\nconst RGBM7Encoding = 3004;\nconst RGBM16Encoding = 3005;\nconst RGBDEncoding = 3006;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\n\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\n\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\n\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nfunction EventDispatcher() {}\n\nObject.assign( EventDispatcher.prototype, {\n\n\taddEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t},\n\n\thasEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tconst listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t},\n\n\tremoveEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tconst index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\t// Make a copy, in case listeners are removed while iterating.\n\t\t\tconst array = listenerArray.slice( 0 );\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author thezwap\n */\n\nconst _lut = [];\n\nfor ( let i = 0; i < 256; i ++ ) {\n\n\t_lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );\n\n}\n\nconst MathUtils = {\n\n\tDEG2RAD: Math.PI / 180,\n\tRAD2DEG: 180 / Math.PI,\n\n\tgenerateUUID: function () {\n\n\t\t// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n\n\t\tconst d0 = Math.random() * 0xffffffff | 0;\n\t\tconst d1 = Math.random() * 0xffffffff | 0;\n\t\tconst d2 = Math.random() * 0xffffffff | 0;\n\t\tconst d3 = Math.random() * 0xffffffff | 0;\n\t\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t\t// .toUpperCase() here flattens concatenated strings to save heap memory space.\n\t\treturn uuid.toUpperCase();\n\n\t},\n\n\tclamp: function ( value, min, max ) {\n\n\t\treturn Math.max( min, Math.min( max, value ) );\n\n\t},\n\n\t// compute euclidian modulo of m % n\n\t// https://en.wikipedia.org/wiki/Modulo_operation\n\n\teuclideanModulo: function ( n, m ) {\n\n\t\treturn ( ( n % m ) + m ) % m;\n\n\t},\n\n\t// Linear mapping from range to range \n\n\tmapLinear: function ( x, a1, a2, b1, b2 ) {\n\n\t\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n\t},\n\n\t// https://en.wikipedia.org/wiki/Linear_interpolation\n\n\tlerp: function ( x, y, t ) {\n\n\t\treturn ( 1 - t ) * x + t * y;\n\n\t},\n\n\t// http://en.wikipedia.org/wiki/Smoothstep\n\n\tsmoothstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * ( 3 - 2 * x );\n\n\t},\n\n\tsmootherstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n\t},\n\n\t// Random integer from interval\n\n\trandInt: function ( low, high ) {\n\n\t\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n\t},\n\n\t// Random float from interval\n\n\trandFloat: function ( low, high ) {\n\n\t\treturn low + Math.random() * ( high - low );\n\n\t},\n\n\t// Random float from <-range/2, range/2> interval\n\n\trandFloatSpread: function ( range ) {\n\n\t\treturn range * ( 0.5 - Math.random() );\n\n\t},\n\n\tdegToRad: function ( degrees ) {\n\n\t\treturn degrees * MathUtils.DEG2RAD;\n\n\t},\n\n\tradToDeg: function ( radians ) {\n\n\t\treturn radians * MathUtils.RAD2DEG;\n\n\t},\n\n\tisPowerOfTwo: function ( value ) {\n\n\t\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n\t},\n\n\tceilPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tfloorPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tsetQuaternionFromProperEuler: function ( q, a, b, c, order ) {\n\n\t\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t\t// rotations are applied to the axes in the order specified by 'order'\n\t\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t\t// angles are in radians\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c2 = cos( b / 2 );\n\t\tconst s2 = sin( b / 2 );\n\n\t\tconst c13 = cos( ( a + c ) / 2 );\n\t\tconst s13 = sin( ( a + c ) / 2 );\n\n\t\tconst c1_3 = cos( ( a - c ) / 2 );\n\t\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\t\tconst c3_1 = cos( ( c - a ) / 2 );\n\t\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYX':\n\t\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZY':\n\t\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXZ':\n\t\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZX':\n\t\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXY':\n\t\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYZ':\n\t\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author philogb / http://blog.thejit.org/\n * @author egraether / http://egraether.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nfunction Vector2( x = 0, y = 0 ) {\n\n\tthis.x = x;\n\tthis.y = y;\n\n}\n\nObject.defineProperties( Vector2.prototype, {\n\n\t\"width\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.x = value;\n\n\t\t}\n\n\t},\n\n\t\"height\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.y = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tisVector2: true,\n\n\tset: function ( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t},\n\n\tcross: function ( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tangle: function () {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t},\n\n\trotateAround: function ( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t},\n\n\trandom: function () {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n * @author tschw\n */\n\nfunction Matrix3() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0,\n\t\t0, 1, 0,\n\t\t0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix3.prototype, {\n\n\tisMatrix3: true,\n\n\tset: function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrix4: function ( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tdeterminant: function () {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t},\n\n\tgetInverse: function ( matrix, throwOnDegenerate ) {\n\n\t\tif ( throwOnDegenerate !== undefined ) {\n\n\t\t\tconsole.warn( \"THREE.Matrix3: .getInverse() can no longer be configured to throw on degenerate.\" );\n\n\t\t}\n\n\t\tconst me = matrix.elements,\n\t\t\tte = this.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ],\n\t\t\tn12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ],\n\t\t\tn13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\ttranspose: function () {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tgetNormalMatrix: function ( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).getInverse( this ).transpose();\n\n\t},\n\n\ttransposeIntoArray: function ( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetUvTransform: function ( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t},\n\n\tscale: function ( sx, sy ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx;\n\t\tte[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy;\n\n\t\treturn this;\n\n\t},\n\n\trotate: function ( theta ) {\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tconst te = this.elements;\n\n\t\tconst a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ];\n\t\tconst a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ];\n\n\t\tte[ 0 ] = c * a11 + s * a21;\n\t\tte[ 3 ] = c * a12 + s * a22;\n\t\tte[ 6 ] = c * a13 + s * a23;\n\n\t\tte[ 1 ] = - s * a11 + c * a21;\n\t\tte[ 4 ] = - s * a12 + c * a22;\n\t\tte[ 7 ] = - s * a13 + c * a23;\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( tx, ty ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ];\n\t\tte[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n */\n\nlet _canvas;\n\nconst ImageUtils = {\n\n\tgetDataURL: function ( image ) {\n\n\t\tif ( /^data:/i.test( image.src ) ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tif ( typeof HTMLCanvasElement == 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tlet canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tconst context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n */\n\nlet textureId = 0;\n\nfunction Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\n\tthis.image = image !== undefined ? image : Texture.DEFAULT_IMAGE;\n\tthis.mipmaps = [];\n\n\tthis.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING;\n\n\tthis.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping;\n\tthis.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping;\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearMipmapLinearFilter;\n\n\tthis.anisotropy = anisotropy !== undefined ? anisotropy : 1;\n\n\tthis.format = format !== undefined ? format : RGBAFormat;\n\tthis.internalFormat = null;\n\tthis.type = type !== undefined ? type : UnsignedByteType;\n\n\tthis.offset = new Vector2( 0, 0 );\n\tthis.repeat = new Vector2( 1, 1 );\n\tthis.center = new Vector2( 0, 0 );\n\tthis.rotation = 0;\n\n\tthis.matrixAutoUpdate = true;\n\tthis.matrix = new Matrix3();\n\n\tthis.generateMipmaps = true;\n\tthis.premultiplyAlpha = false;\n\tthis.flipY = true;\n\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t//\n\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\tthis.encoding = encoding !== undefined ? encoding : LinearEncoding;\n\n\tthis.version = 0;\n\tthis.onUpdate = null;\n\n}\n\nTexture.DEFAULT_IMAGE = undefined;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nTexture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Texture,\n\n\tisTexture: true,\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.image = source.image;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.internalFormat = source.internalFormat;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.encoding = source.encoding;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\tmapping: this.mapping,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\ttype: this.type,\n\t\t\tencoding: this.encoding,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( this.image !== undefined ) {\n\n\t\t\t// TODO: Move to THREE.Image\n\n\t\t\tconst image = this.image;\n\n\t\t\tif ( image.uuid === undefined ) {\n\n\t\t\t\timage.uuid = MathUtils.generateUUID(); // UGH\n\n\t\t\t}\n\n\t\t\tif ( ! isRootObject && meta.images[ image.uuid ] === undefined ) {\n\n\t\t\t\tlet url;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\t// process array of images e.g. CubeTexture\n\n\t\t\t\t\turl = [];\n\n\t\t\t\t\tfor ( let i = 0, l = image.length; i < l; i ++ ) {\n\n\t\t\t\t\t\turl.push( ImageUtils.getDataURL( image[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// process single image\n\n\t\t\t\t\turl = ImageUtils.getDataURL( image );\n\n\t\t\t\t}\n\n\t\t\t\tmeta.images[ image.uuid ] = {\n\t\t\t\t\tuuid: image.uuid,\n\t\t\t\t\turl: url\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\toutput.image = image.uuid;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t},\n\n\ttransformUv: function ( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n} );\n\nObject.defineProperty( Texture.prototype, \"needsUpdate\", {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Vector4( x = 0, y = 0, z = 0, w = 1 ) {\n\n\tthis.x = x;\n\tthis.y = y;\n\tthis.z = z;\n\tthis.w = w;\n\n}\n\nObject.defineProperties( Vector4.prototype, {\n\n\t\"width\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.z = value;\n\n\t\t}\n\n\t},\n\n\t\"height\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.w;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.w = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tisVector4: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tsetAxisAngleFromQuaternion: function ( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetAxisAngleFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t},\n\n\trandom: function () {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author szimek / https://github.com/szimek/\n * @author alteredq / http://alteredqualia.com/\n * @author Marius Kintel / https://github.com/kintel\n */\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nfunction WebGLRenderTarget( width, height, options ) {\n\n\tthis.width = width;\n\tthis.height = height;\n\n\tthis.scissor = new Vector4( 0, 0, width, height );\n\tthis.scissorTest = false;\n\n\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\toptions = options || {};\n\n\tthis.texture = new Texture( undefined, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\tthis.texture.image = {};\n\tthis.texture.image.width = width;\n\tthis.texture.image.height = height;\n\n\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true;\n\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n}\n\nWebGLRenderTarget.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: WebGLRenderTarget,\n\n\tisWebGLRenderTarget: true,\n\n\tsetSize: function ( width, height ) {\n\n\t\tif ( this.width !== width || this.height !== height ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n * @author Matt DesLauriers / @mattdesl\n */\n\nfunction WebGLMultisampleRenderTarget( width, height, options ) {\n\n\tWebGLRenderTarget.call( this, width, height, options );\n\n\tthis.samples = 4;\n\n}\n\nWebGLMultisampleRenderTarget.prototype = Object.assign( Object.create( WebGLRenderTarget.prototype ), {\n\n\tconstructor: WebGLMultisampleRenderTarget,\n\n\tisWebGLMultisampleRenderTarget: true,\n\n\tcopy: function ( source ) {\n\n\t\tWebGLRenderTarget.prototype.copy.call( this, source );\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nfunction Quaternion( x = 0, y = 0, z = 0, w = 1 ) {\n\n\tthis._x = x;\n\tthis._y = y;\n\tthis._z = z;\n\tthis._w = w;\n\n}\n\nObject.assign( Quaternion, {\n\n\tslerp: function ( qa, qb, qm, t ) {\n\n\t\treturn qm.copy( qa ).slerp( qb, t );\n\n\t},\n\n\tslerpFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t,\n\n\t\t\t\tcos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t},\n\n\tmultiplyQuaternionsFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n} );\n\nObject.defineProperties( Quaternion.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tw: {\n\n\t\tget: function () {\n\n\t\t\treturn this._w;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._w = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Quaternion.prototype, {\n\n\tisQuaternion: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t},\n\n\tcopy: function ( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromEuler: function ( euler, update ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler.order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromAxisAngle: function ( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromUnitVectors: function ( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tconst EPS = 0.000001;\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < EPS ) {\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t},\n\n\tangleTo: function ( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( MathUtils.clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t},\n\n\trotateTowards: function ( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t},\n\n\tinverse: function () {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t},\n\n\tconjugate: function () {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( q, p ) {\n\n\t\tif ( p !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t}\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t},\n\n\tpremultiply: function ( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t},\n\n\tmultiplyQuaternions: function ( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tslerp: function ( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize();\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\treturn this;\n\n\t},\n\n\t_onChange: function ( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\t_onChangeCallback: function () {}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nconst _vector = new Vector3();\nconst _quaternion = new Quaternion();\n\nfunction Vector3( x = 0, y = 0, z = 0 ) {\n\n\tthis.x = x;\n\tthis.y = y;\n\tthis.z = z;\n\n}\n\nObject.assign( Vector3.prototype, {\n\n\tisVector3: true,\n\n\tset: function ( x, y, z ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t}\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyVectors: function ( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyEuler: function ( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\treturn this.applyQuaternion( _quaternion.setFromEuler( euler ) );\n\n\t},\n\n\tapplyAxisAngle: function ( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion.setFromAxisAngle( axis, angle ) );\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyNormalMatrix: function ( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tconst ix = qw * x + qy * z - qz * y;\n\t\tconst iy = qw * y + qz * x - qx * z;\n\t\tconst iz = qw * z + qx * y - qy * x;\n\t\tconst iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t},\n\n\tproject: function ( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t},\n\n\tunproject: function ( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t},\n\n\ttransformDirection: function ( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t},\n\n\t// TODO lengthSquared?\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tcross: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\treturn this.crossVectors( this, v );\n\n\t},\n\n\tcrossVectors: function ( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t},\n\n\tprojectOnVector: function ( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t},\n\n\tprojectOnPlane: function ( planeNormal ) {\n\n\t\t_vector.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector );\n\n\t},\n\n\treflect: function ( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t},\n\n\tangleTo: function ( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( MathUtils.clamp( theta, - 1, 1 ) );\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t},\n\n\tsetFromSpherical: function ( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t},\n\n\tsetFromSphericalCoords: function ( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCylindrical: function ( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t},\n\n\tsetFromCylindricalCoords: function ( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixPosition: function ( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixScale: function ( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixColumn: function ( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t},\n\n\tsetFromMatrix3Column: function ( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t},\n\n\trandom: function () {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nconst _v1 = new Vector3();\nconst _m1 = new Matrix4();\nconst _zero = new Vector3( 0, 0, 0 );\nconst _one = new Vector3( 1, 1, 1 );\nconst _x = new Vector3();\nconst _y = new Vector3();\nconst _z = new Vector3();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author jordi_ros / http://plattsoft.com\n * @author D1plo1d / http://github.com/D1plo1d\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author timknip / http://www.floorplanner.com/\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Matrix4() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0, 0,\n\t\t0, 1, 0, 0,\n\t\t0, 0, 1, 0,\n\t\t0, 0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix4.prototype, {\n\n\tisMatrix4: true,\n\n\tset: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t},\n\n\tcopyPosition: function ( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmakeBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\textractRotation: function ( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationFromEuler: function ( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationFromQuaternion: function ( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t},\n\n\tlookAt: function ( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( m, n ) {\n\n\t\tif ( n !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t}\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tdeterminant: function () {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t},\n\n\ttranspose: function () {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tsetPosition: function ( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetInverse: function ( m, throwOnDegenerate ) {\n\n\t\tif ( throwOnDegenerate !== undefined ) {\n\n\t\t\tconsole.warn( \"THREE.Matrix4: .getInverse() can no longer be configured to throw on degenerate.\" );\n\n\t\t}\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\t\t\tme = m.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ],\n\t\t\tn12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ],\n\t\t\tn13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ],\n\t\t\tn14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxScaleOnAxis: function () {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t},\n\n\tmakeTranslation: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationX: function ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationY: function ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationZ: function ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationAxis: function ( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\t return this;\n\n\t},\n\n\tmakeScale: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeShear: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, y, z, 0,\n\t\t\tx, 1, z, 0,\n\t\t\tx, y, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tcompose: function ( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tdecompose: function ( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tlet sy = _v1.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tlet sz = _v1.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1.elements[ 0 ] *= invSX;\n\t\t_m1.elements[ 1 ] *= invSX;\n\t\t_m1.elements[ 2 ] *= invSX;\n\n\t\t_m1.elements[ 4 ] *= invSY;\n\t\t_m1.elements[ 5 ] *= invSY;\n\t\t_m1.elements[ 6 ] *= invSY;\n\n\t\t_m1.elements[ 8 ] *= invSZ;\n\t\t_m1.elements[ 9 ] *= invSZ;\n\t\t_m1.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t},\n\n\tmakePerspective: function ( left, right, top, bottom, near, far ) {\n\n\t\tif ( far === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' );\n\n\t\t}\n\n\t\tconst te = this.elements;\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\t\tconst c = - ( far + near ) / ( far - near );\n\t\tconst d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t},\n\n\tmakeOrthographic: function ( left, right, top, bottom, near, far ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\t\tconst z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nconst _matrix = new Matrix4();\nconst _quaternion$1 = new Quaternion();\n\nfunction Euler( x = 0, y = 0, z = 0, order = Euler.DefaultOrder ) {\n\n\tthis._x = x;\n\tthis._y = y;\n\tthis._z = z;\n\tthis._order = order;\n\n}\n\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nEuler.DefaultOrder = 'XYZ';\n\nObject.defineProperties( Euler.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\torder: {\n\n\t\tget: function () {\n\n\t\t\treturn this._order;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._order = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Euler.prototype, {\n\n\tisEuler: true,\n\n\tset: function ( x, y, z, order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order || this._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t},\n\n\tcopy: function ( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m, order, update ) {\n\n\t\tconst clamp = MathUtils.clamp;\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\torder = order || this._order;\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromQuaternion: function ( q, order, update ) {\n\n\t\t_matrix.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix, order, update );\n\n\t},\n\n\tsetFromVector3: function ( v, order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order || this._order );\n\n\t},\n\n\treorder: function ( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$1.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$1, newOrder );\n\n\t},\n\n\tequals: function ( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t},\n\n\tfromArray: function ( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t},\n\n\ttoVector3: function ( optionalResult ) {\n\n\t\tif ( optionalResult ) {\n\n\t\t\treturn optionalResult.set( this._x, this._y, this._z );\n\n\t\t} else {\n\n\t\t\treturn new Vector3( this._x, this._y, this._z );\n\n\t\t}\n\n\t},\n\n\t_onChange: function ( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\t_onChangeCallback: function () {}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Layers() {\n\n\tthis.mask = 1 | 0;\n\n}\n\nObject.assign( Layers.prototype, {\n\n\tset: function ( channel ) {\n\n\t\tthis.mask = 1 << channel | 0;\n\n\t},\n\n\tenable: function ( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t},\n\n\tenableAll: function () {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t},\n\n\ttoggle: function ( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t},\n\n\tdisable: function ( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t},\n\n\tdisableAll: function () {\n\n\t\tthis.mask = 0;\n\n\t},\n\n\ttest: function ( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n} );\n\nlet _object3DId = 0;\n\nconst _v1$1 = new Vector3();\nconst _q1 = new Quaternion();\nconst _m1$1 = new Matrix4();\nconst _target = new Vector3();\n\nconst _position = new Vector3();\nconst _scale = new Vector3();\nconst _quaternion$2 = new Quaternion();\n\nconst _xAxis = new Vector3( 1, 0, 0 );\nconst _yAxis = new Vector3( 0, 1, 0 );\nconst _zAxis = new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author elephantatwork / www.elephantatwork.ch\n */\n\nfunction Object3D() {\n\n\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Object3D';\n\n\tthis.parent = null;\n\tthis.children = [];\n\n\tthis.up = Object3D.DefaultUp.clone();\n\n\tconst position = new Vector3();\n\tconst rotation = new Euler();\n\tconst quaternion = new Quaternion();\n\tconst scale = new Vector3( 1, 1, 1 );\n\n\tfunction onRotationChange() {\n\n\t\tquaternion.setFromEuler( rotation, false );\n\n\t}\n\n\tfunction onQuaternionChange() {\n\n\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t}\n\n\trotation._onChange( onRotationChange );\n\tquaternion._onChange( onQuaternionChange );\n\n\tObject.defineProperties( this, {\n\t\tposition: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: position\n\t\t},\n\t\trotation: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: rotation\n\t\t},\n\t\tquaternion: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: quaternion\n\t\t},\n\t\tscale: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: scale\n\t\t},\n\t\tmodelViewMatrix: {\n\t\t\tvalue: new Matrix4()\n\t\t},\n\t\tnormalMatrix: {\n\t\t\tvalue: new Matrix3()\n\t\t}\n\t} );\n\n\tthis.matrix = new Matrix4();\n\tthis.matrixWorld = new Matrix4();\n\n\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\tthis.matrixWorldNeedsUpdate = false;\n\n\tthis.layers = new Layers();\n\tthis.visible = true;\n\n\tthis.castShadow = false;\n\tthis.receiveShadow = false;\n\n\tthis.frustumCulled = true;\n\tthis.renderOrder = 0;\n\n\tthis.userData = {};\n\n}\n\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nObject3D.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Object3D,\n\n\tisObject3D: true,\n\n\tonBeforeRender: function () {},\n\tonAfterRender: function () {},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t},\n\n\tsetRotationFromAxisAngle: function ( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t},\n\n\tsetRotationFromEuler: function ( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t},\n\n\tsetRotationFromMatrix: function ( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t},\n\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t},\n\n\trotateOnAxis: function ( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t},\n\n\trotateOnWorldAxis: function ( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t},\n\n\ttranslateOnAxis: function ( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$1.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$1.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t},\n\n\ttranslateX: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t},\n\n\ttranslateY: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t},\n\n\ttranslateZ: function ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t},\n\n\tlocalToWorld: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t},\n\n\tworldToLocal: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( _m1$1.getInverse( this.matrixWorld ) );\n\n\t},\n\n\tlookAt: function ( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$1 );\n\t\t\tthis.quaternion.premultiply( _q1.inverse() );\n\n\t\t}\n\n\t},\n\n\tadd: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object can't be added as a child of itself.\", object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( ( object && object.isObject3D ) ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t} else {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object not an instance of THREE.Object3D.\", object );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tremove: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tattach: function ( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.getInverse( this.matrixWorld );\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$1 );\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t},\n\n\tgetObjectById: function ( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t},\n\n\tgetObjectByName: function ( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t},\n\n\tgetObjectByProperty: function ( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tgetWorldPosition: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldPosition() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t},\n\n\tgetWorldQuaternion: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldQuaternion() target is now required' );\n\t\t\ttarget = new Quaternion();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tthis.matrixWorld.decompose( _position, target, _scale );\n\n\t\treturn target;\n\n\t},\n\n\tgetWorldScale: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldScale() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion$2, target );\n\n\t\treturn target;\n\n\t},\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t},\n\n\traycast: function () {},\n\n\ttraverse: function ( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseVisible: function ( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseAncestors: function ( callback ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t},\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( force );\n\n\t\t}\n\n\t},\n\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.parent === null ) {\n\n\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t} else {\n\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t}\n\n\t\t// update children\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateWorldMatrix( false, true );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tconst object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t},\n\n\tclone: function ( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t},\n\n\tcopy: function ( source, recursive ) {\n\n\t\tif ( recursive === undefined ) recursive = true;\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Scene() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Scene';\n\n\tthis.background = null;\n\tthis.environment = null;\n\tthis.fog = null;\n\n\tthis.overrideMaterial = null;\n\n\tthis.autoUpdate = true; // checked by the renderer\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\nScene.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Scene,\n\n\tisScene: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tif ( this.background !== null ) data.object.background = this.background.toJSON( meta );\n\t\tif ( this.environment !== null ) data.object.environment = this.environment.toJSON( meta );\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\treturn data;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nconst _points = [\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3(),\n\tnew Vector3()\n];\n\nconst _vector$1 = new Vector3();\n\nconst _box = new Box3();\n\n// triangle centered vertices\n\nconst _v0 = new Vector3();\nconst _v1$2 = new Vector3();\nconst _v2 = new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = new Vector3();\nconst _f1 = new Vector3();\nconst _f2 = new Vector3();\n\nconst _center = new Vector3();\nconst _extents = new Vector3();\nconst _triangleNormal = new Vector3();\nconst _testAxis = new Vector3();\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity );\n\n}\n\n\nObject.assign( Box3.prototype, {\n\n\tisBox3: true,\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromArray: function ( array ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tconst x = array[ i ];\n\t\t\tconst y = array[ i + 1 ];\n\t\t\tconst z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromBufferAttribute: function ( attribute ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\tconst x = attribute.getX( i );\n\t\t\tconst y = attribute.getY( i );\n\t\t\tconst z = attribute.getZ( i );\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function ( center, size ) {\n\n\t\tconst halfSize = _vector$1.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromObject: function ( object ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getSize() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\texpandByObject: function ( object ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t}\n\n\t\t\t_box.copy( geometry.boundingBox );\n\t\t\t_box.applyMatrix4( object.matrixWorld );\n\n\t\t\tthis.union( _box );\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getParameter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$1 );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$1.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t},\n\n\tintersectsTriangle: function ( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0.subVectors( triangle.a, _center );\n\t\t_v1$2.subVectors( triangle.b, _center );\n\t\t_v2.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$2, _v0 );\n\t\t_f1.subVectors( _v2, _v1$2 );\n\t\t_f2.subVectors( _v0, _v2 );\n\n\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0, _v1$2, _v2, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0, _v1$2, _v2, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0, _v1$2, _v2, _extents );\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\tconst clampedPoint = _vector$1.copy( point ).clamp( this.min, this.max );\n\n\t\treturn clampedPoint.sub( point ).length();\n\n\t},\n\n\tgetBoundingSphere: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.error( 'THREE.Box3: .getBoundingSphere() target is now required' );\n\t\t\t//target = new Sphere(); // removed to avoid cyclic dependency\n\n\t\t}\n\n\t\tthis.getCenter( target.center );\n\n\t\ttarget.radius = this.getSize( _vector$1 ).length() * 0.5;\n\n\t\treturn target;\n\n\t},\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the seperating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the seperating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is seperating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nconst _box$1 = new Box3();\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Sphere( center, radius ) {\n\n\tthis.center = ( center !== undefined ) ? center : new Vector3();\n\tthis.radius = ( radius !== undefined ) ? radius : - 1;\n\n}\n\nObject.assign( Sphere.prototype, {\n\n\tset: function ( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$1.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\treturn ( this.radius < 0 );\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = - 1;\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t},\n\n\tgetBoundingBox: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .getBoundingBox() target is now required' );\n\t\t\ttarget = new Box3();\n\n\t\t}\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n} );\n\nconst _vector$2 = new Vector3();\nconst _segCenter = new Vector3();\nconst _segDir = new Vector3();\nconst _diff = new Vector3();\n\nconst _edge1 = new Vector3();\nconst _edge2 = new Vector3();\nconst _normal = new Vector3();\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Ray( origin, direction ) {\n\n\tthis.origin = ( origin !== undefined ) ? origin : new Vector3();\n\tthis.direction = ( direction !== undefined ) ? direction : new Vector3( 0, 0, - 1 );\n\n}\n\nObject.assign( Ray.prototype, {\n\n\tset: function ( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t},\n\n\tlookAt: function ( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\trecast: function ( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$2 ) );\n\n\t\treturn this;\n\n\t},\n\n\tclosestPointToPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t},\n\n\tdistanceSqToPoint: function ( point ) {\n\n\t\tconst directionDistance = _vector$2.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$2.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\treturn _vector$2.distanceToSquared( point );\n\n\t},\n\n\tdistanceSqToSegment: function ( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segDir ).multiplyScalar( s1 ).add( _segCenter );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t},\n\n\tintersectSphere: function ( sphere, target ) {\n\n\t\t_vector$2.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$2.dot( this.direction );\n\t\tconst d2 = _vector$2.dot( _vector$2 ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t},\n\n\tdistanceToPlane: function ( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t},\n\n\tintersectPlane: function ( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t},\n\n\tintersectBox: function ( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn this.intersectBox( box, _vector$2 ) !== null;\n\n\t},\n\n\tintersectTriangle: function ( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = - 1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t},\n\n\tapplyMatrix4: function ( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nconst _vector1 = new Vector3();\nconst _vector2 = new Vector3();\nconst _normalMatrix = new Matrix3();\n\nfunction Plane( normal, constant ) {\n\n\t// normal is assumed to be normalized\n\n\tthis.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 );\n\tthis.constant = ( constant !== undefined ) ? constant : 0;\n\n}\n\nObject.assign( Plane.prototype, {\n\n\tisPlane: true,\n\n\tset: function ( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponents: function ( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromNormalAndCoplanarPoint: function ( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCoplanarPoints: function ( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t},\n\n\tdistanceToSphere: function ( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t},\n\n\tprojectPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .projectPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\n\n\t},\n\n\tintersectLine: function ( line, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .intersectLine() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn undefined;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn undefined;\n\n\t\t}\n\n\t\treturn target.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t},\n\n\tintersectsLine: function ( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t},\n\n\tcoplanarPoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .coplanarPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t},\n\n\tapplyMatrix4: function ( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _v0$1 = new Vector3();\nconst _v1$3 = new Vector3();\nconst _v2$1 = new Vector3();\nconst _v3 = new Vector3();\n\nconst _vab = new Vector3();\nconst _vac = new Vector3();\nconst _vbc = new Vector3();\nconst _vap = new Vector3();\nconst _vbp = new Vector3();\nconst _vcp = new Vector3();\n\nfunction Triangle( a, b, c ) {\n\n\tthis.a = ( a !== undefined ) ? a : new Vector3();\n\tthis.b = ( b !== undefined ) ? b : new Vector3();\n\tthis.c = ( c !== undefined ) ? c : new Vector3();\n\n}\n\nObject.assign( Triangle, {\n\n\tgetNormal: function ( a, b, c, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getNormal() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tconst targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t},\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tgetBarycoord: function ( point, a, b, c, target ) {\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$1.subVectors( point, a );\n\n\t\tconst dot00 = _v0$1.dot( _v0$1 );\n\t\tconst dot01 = _v0$1.dot( _v1$3 );\n\t\tconst dot02 = _v0$1.dot( _v2$1 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$1 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getBarycoord() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\t// arbitrary location outside of triangle?\n\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\treturn target.set( - 2, - 1, - 1 );\n\n\t\t}\n\n\t\tconst invDenom = 1 / denom;\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t},\n\n\tcontainsPoint: function ( point, a, b, c ) {\n\n\t\tTriangle.getBarycoord( point, a, b, c, _v3 );\n\n\t\treturn ( _v3.x >= 0 ) && ( _v3.y >= 0 ) && ( ( _v3.x + _v3.y ) <= 1 );\n\n\t},\n\n\tgetUV: function ( point, p1, p2, p3, uv1, uv2, uv3, target ) {\n\n\t\tthis.getBarycoord( point, p1, p2, p3, _v3 );\n\n\t\ttarget.set( 0, 0 );\n\t\ttarget.addScaledVector( uv1, _v3.x );\n\t\ttarget.addScaledVector( uv2, _v3.y );\n\t\ttarget.addScaledVector( uv3, _v3.z );\n\n\t\treturn target;\n\n\t},\n\n\tisFrontFacing: function ( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tset: function ( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPointsAndIndices: function ( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t},\n\n\tgetArea: function () {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t},\n\n\tgetMidpoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getMidpoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t},\n\n\tgetNormal: function ( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t},\n\n\tgetPlane: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getPlane() target is now required' );\n\t\t\ttarget = new Plane();\n\n\t\t}\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t},\n\n\tgetBarycoord: function ( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t},\n\n\tgetUV: function ( point, uv1, uv2, uv3, target ) {\n\n\t\treturn Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t},\n\n\tisFrontFacing: function ( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t},\n\n\tclosestPointToPoint: function ( p, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tconst a = this.a, b = this.b, c = this.c;\n\t\tlet v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tconst d1 = _vab.dot( _vap );\n\t\tconst d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tconst d3 = _vab.dot( _vbp );\n\t\tconst d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tconst vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tconst d5 = _vab.dot( _vcp );\n\t\tconst d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tconst vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tconst va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tconst denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t},\n\n\tequals: function ( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction Color( r, g, b ) {\n\n\tif ( g === undefined && b === undefined ) {\n\n\t\t// r is THREE.Color, hex or string\n\t\treturn this.set( r );\n\n\t}\n\n\treturn this.setRGB( r, g, b );\n\n}\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\nObject.assign( Color.prototype, {\n\n\tisColor: true,\n\n\tr: 1, g: 1, b: 1,\n\n\tset: function ( value ) {\n\n\t\tif ( value && value.isColor ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetHex: function ( hex ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\treturn this;\n\n\t},\n\n\tsetRGB: function ( r, g, b ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\treturn this;\n\n\t},\n\n\tsetHSL: function ( h, s, l ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = MathUtils.euclideanModulo( h, 1 );\n\t\ts = MathUtils.clamp( s, 0, 1 );\n\t\tl = MathUtils.clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetStyle: function ( style ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(\\s*([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^([0-9]*\\.?[0-9]+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tconst h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tconst s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\tconst l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f0-9]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetColorName: function ( style ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t},\n\n\tcopy: function ( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t},\n\n\tcopyGammaToLinear: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tthis.r = Math.pow( color.r, gammaFactor );\n\t\tthis.g = Math.pow( color.g, gammaFactor );\n\t\tthis.b = Math.pow( color.b, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToGamma: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tconst safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;\n\n\t\tthis.r = Math.pow( color.r, safeInverse );\n\t\tthis.g = Math.pow( color.g, safeInverse );\n\t\tthis.b = Math.pow( color.b, safeInverse );\n\n\t\treturn this;\n\n\t},\n\n\tconvertGammaToLinear: function ( gammaFactor ) {\n\n\t\tthis.copyGammaToLinear( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToGamma: function ( gammaFactor ) {\n\n\t\tthis.copyLinearToGamma( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopySRGBToLinear: function ( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToSRGB: function ( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t},\n\n\tconvertSRGBToLinear: function () {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToSRGB: function () {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t},\n\n\tgetHex: function () {\n\n\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\n\n\t},\n\n\tgetHexString: function () {\n\n\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\n\n\t},\n\n\tgetHSL: function ( target ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Color: .getHSL() target is now required' );\n\t\t\ttarget = { h: 0, s: 0, l: 0 };\n\n\t\t}\n\n\t\tconst r = this.r, g = this.g, b = this.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t},\n\n\tgetStyle: function () {\n\n\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\n\n\t},\n\n\toffsetHSL: function ( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\t_hslA.h += h; _hslA.s += s; _hslA.l += l;\n\n\t\tthis.setHSL( _hslA.h, _hslA.s, _hslA.l );\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t},\n\n\taddColors: function ( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpHSL: function ( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = MathUtils.lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = MathUtils.lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = MathUtils.lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\tif ( attribute.normalized === true ) {\n\n\t\t\t// assuming Uint8Array\n\n\t\t\tthis.r /= 255;\n\t\t\tthis.g /= 255;\n\t\t\tthis.b /= 255;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn this.getHex();\n\n\t}\n\n} );\n\nColor.NAMES = _colorKeywords;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Face3( a, b, c, normal, color, materialIndex ) {\n\n\tthis.a = a;\n\tthis.b = b;\n\tthis.c = c;\n\n\tthis.normal = ( normal && normal.isVector3 ) ? normal : new Vector3();\n\tthis.vertexNormals = Array.isArray( normal ) ? normal : [];\n\n\tthis.color = ( color && color.isColor ) ? color : new Color();\n\tthis.vertexColors = Array.isArray( color ) ? color : [];\n\n\tthis.materialIndex = materialIndex !== undefined ? materialIndex : 0;\n\n}\n\nObject.assign( Face3.prototype, {\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.a = source.a;\n\t\tthis.b = source.b;\n\t\tthis.c = source.c;\n\n\t\tthis.normal.copy( source.normal );\n\t\tthis.color.copy( source.color );\n\n\t\tthis.materialIndex = source.materialIndex;\n\n\t\tfor ( let i = 0, il = source.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexNormals[ i ] = source.vertexNormals[ i ].clone();\n\n\t\t}\n\n\t\tfor ( let i = 0, il = source.vertexColors.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexColors[ i ] = source.vertexColors[ i ].clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nlet materialId = 0;\n\nfunction Material() {\n\n\tObject.defineProperty( this, 'id', { value: materialId ++ } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Material';\n\n\tthis.fog = true;\n\n\tthis.blending = NormalBlending;\n\tthis.side = FrontSide;\n\tthis.flatShading = false;\n\tthis.vertexColors = false;\n\n\tthis.opacity = 1;\n\tthis.transparent = false;\n\n\tthis.blendSrc = SrcAlphaFactor;\n\tthis.blendDst = OneMinusSrcAlphaFactor;\n\tthis.blendEquation = AddEquation;\n\tthis.blendSrcAlpha = null;\n\tthis.blendDstAlpha = null;\n\tthis.blendEquationAlpha = null;\n\n\tthis.depthFunc = LessEqualDepth;\n\tthis.depthTest = true;\n\tthis.depthWrite = true;\n\n\tthis.stencilWriteMask = 0xff;\n\tthis.stencilFunc = AlwaysStencilFunc;\n\tthis.stencilRef = 0;\n\tthis.stencilFuncMask = 0xff;\n\tthis.stencilFail = KeepStencilOp;\n\tthis.stencilZFail = KeepStencilOp;\n\tthis.stencilZPass = KeepStencilOp;\n\tthis.stencilWrite = false;\n\n\tthis.clippingPlanes = null;\n\tthis.clipIntersection = false;\n\tthis.clipShadows = false;\n\n\tthis.shadowSide = null;\n\n\tthis.colorWrite = true;\n\n\tthis.precision = null; // override the renderer's default precision for this material\n\n\tthis.polygonOffset = false;\n\tthis.polygonOffsetFactor = 0;\n\tthis.polygonOffsetUnits = 0;\n\n\tthis.dithering = false;\n\n\tthis.alphaTest = 0;\n\tthis.premultipliedAlpha = false;\n\n\tthis.visible = true;\n\n\tthis.toneMapped = true;\n\n\tthis.userData = {};\n\n\tthis.version = 0;\n\n}\n\nMaterial.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Material,\n\n\tisMaterial: true,\n\n\tonBeforeCompile: function ( /* shaderobject, renderer */ ) {},\n\n\tcustomProgramCacheKey: function () {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t},\n\n\tsetValues: function ( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.Material: '\" + key + \"' parameter is undefined.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// for backward compatability if shading is set in the constructor\n\t\t\tif ( key === 'shading' ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\t\tthis.flatShading = ( newValue === FlatShading ) ? true : false;\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.\" + this.type + \": '\" + key + \"' is not a property of this material.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst isRoot = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRoot ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen && this.sheen.isColor ) data.sheen = this.sheen.getHex();\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\t\tif ( this.lightMap && this.lightMap.isTexture ) data.lightMap = this.lightMap.toJSON( meta ).uuid;\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\t\t\tdata.reflectivity = this.reflectivity; // Scale behind envMap\n\t\t\tdata.refractionRatio = this.refractionRatio;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\t\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\n\t\t}\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.flatShading === true ) data.flatShading = this.flatShading;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\tdata.depthFunc = this.depthFunc;\n\t\tdata.depthTest = this.depthTest;\n\t\tdata.depthWrite = this.depthWrite;\n\n\t\tdata.stencilWrite = this.stencilWrite;\n\t\tdata.stencilWriteMask = this.stencilWriteMask;\n\t\tdata.stencilFunc = this.stencilFunc;\n\t\tdata.stencilRef = this.stencilRef;\n\t\tdata.stencilFuncMask = this.stencilFuncMask;\n\t\tdata.stencilFail = this.stencilFail;\n\t\tdata.stencilZFail = this.stencilZFail;\n\t\tdata.stencilZPass = this.stencilZPass;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.morphTargets === true ) data.morphTargets = true;\n\t\tif ( this.morphNormals === true ) data.morphNormals = true;\n\t\tif ( this.skinning === true ) data.skinning = true;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRoot ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.fog = source.fog;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.flatShading = source.flatShading;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nObject.defineProperty( Material.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * depthTest: ,\n * depthWrite: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: \n * }\n */\n\nfunction MeshBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshBasicMaterial';\n\n\tthis.color = new Color( 0xffffff ); // emissive\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshBasicMaterial.prototype = Object.create( Material.prototype );\nMeshBasicMaterial.prototype.constructor = MeshBasicMaterial;\n\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\nMeshBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _vector$3 = new Vector3();\nconst _vector2$1 = new Vector2();\n\nfunction BufferAttribute( array, itemSize, normalized ) {\n\n\tif ( Array.isArray( array ) ) {\n\n\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t}\n\n\tthis.name = '';\n\n\tthis.array = array;\n\tthis.itemSize = itemSize;\n\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\tthis.normalized = normalized === true;\n\n\tthis.usage = StaticDrawUsage;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nObject.defineProperty( BufferAttribute.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( BufferAttribute.prototype, {\n\n\tisBufferAttribute: true,\n\n\tonUploadCallback: function () {},\n\n\tsetUsage: function ( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyArray: function ( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t},\n\n\tcopyColorsArray: function ( colors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\tlet color = colors[ i ];\n\n\t\t\tif ( color === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\tcolor = new Color();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = color.r;\n\t\t\tarray[ offset ++ ] = color.g;\n\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector2sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector2();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector3sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector3();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector4sArray: function ( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector4();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\n\t\t\t\t_vector2$1.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y, );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector$3.fromBufferAttribute( this, i );\n\t\t\t\t_vector$3.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tapplyNormalMatrix: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttransformDirection: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$3.x = this.getX( i );\n\t\t\t_vector$3.y = this.getY( i );\n\t\t\t_vector$3.z = this.getZ( i );\n\n\t\t\t_vector$3.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.prototype.slice.call( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t}\n\n} );\n\n//\n\nfunction Int8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int8Array( array ), itemSize, normalized );\n\n}\n\nInt8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt8BufferAttribute.prototype.constructor = Int8BufferAttribute;\n\n\nfunction Uint8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8Array( array ), itemSize, normalized );\n\n}\n\nUint8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8BufferAttribute.prototype.constructor = Uint8BufferAttribute;\n\n\nfunction Uint8ClampedBufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8ClampedArray( array ), itemSize, normalized );\n\n}\n\nUint8ClampedBufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute;\n\n\nfunction Int16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int16Array( array ), itemSize, normalized );\n\n}\n\nInt16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt16BufferAttribute.prototype.constructor = Int16BufferAttribute;\n\n\nfunction Uint16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized );\n\n}\n\nUint16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint16BufferAttribute.prototype.constructor = Uint16BufferAttribute;\n\n\nfunction Int32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int32Array( array ), itemSize, normalized );\n\n}\n\nInt32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt32BufferAttribute.prototype.constructor = Int32BufferAttribute;\n\n\nfunction Uint32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint32Array( array ), itemSize, normalized );\n\n}\n\nUint32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint32BufferAttribute.prototype.constructor = Uint32BufferAttribute;\n\n\nfunction Float32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float32Array( array ), itemSize, normalized );\n\n}\n\nFloat32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat32BufferAttribute.prototype.constructor = Float32BufferAttribute;\n\n\nfunction Float64BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float64Array( array ), itemSize, normalized );\n\n}\n\nFloat64BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat64BufferAttribute.prototype.constructor = Float64BufferAttribute;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectGeometry() {\n\n\tthis.vertices = [];\n\tthis.normals = [];\n\tthis.colors = [];\n\tthis.uvs = [];\n\tthis.uvs2 = [];\n\n\tthis.groups = [];\n\n\tthis.morphTargets = {};\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\t// this.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.verticesNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nObject.assign( DirectGeometry.prototype, {\n\n\tcomputeGroups: function ( geometry ) {\n\n\t\tconst groups = [];\n\n\t\tlet group, i;\n\t\tlet materialIndex = undefined;\n\n\t\tconst faces = geometry.faces;\n\n\t\tfor ( i = 0; i < faces.length; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\t// materials\n\n\t\t\tif ( face.materialIndex !== materialIndex ) {\n\n\t\t\t\tmaterialIndex = face.materialIndex;\n\n\t\t\t\tif ( group !== undefined ) {\n\n\t\t\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\t\t\tgroups.push( group );\n\n\t\t\t\t}\n\n\t\t\t\tgroup = {\n\t\t\t\t\tstart: i * 3,\n\t\t\t\t\tmaterialIndex: materialIndex\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( group !== undefined ) {\n\n\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\tgroups.push( group );\n\n\t\t}\n\n\t\tthis.groups = groups;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tconst faces = geometry.faces;\n\t\tconst vertices = geometry.vertices;\n\t\tconst faceVertexUvs = geometry.faceVertexUvs;\n\n\t\tconst hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0;\n\t\tconst hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0;\n\n\t\t// morphs\n\n\t\tconst morphTargets = geometry.morphTargets;\n\t\tconst morphTargetsLength = morphTargets.length;\n\n\t\tlet morphTargetsPosition;\n\n\t\tif ( morphTargetsLength > 0 ) {\n\n\t\t\tmorphTargetsPosition = [];\n\n\t\t\tfor ( let i = 0; i < morphTargetsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsPosition[ i ] = {\n\t\t\t\t\tname: morphTargets[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.position = morphTargetsPosition;\n\n\t\t}\n\n\t\tconst morphNormals = geometry.morphNormals;\n\t\tconst morphNormalsLength = morphNormals.length;\n\n\t\tlet morphTargetsNormal;\n\n\t\tif ( morphNormalsLength > 0 ) {\n\n\t\t\tmorphTargetsNormal = [];\n\n\t\t\tfor ( let i = 0; i < morphNormalsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsNormal[ i ] = {\n\t\t\t\t\tname: morphNormals[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.normal = morphTargetsNormal;\n\n\t\t}\n\n\t\t// skins\n\n\t\tconst skinIndices = geometry.skinIndices;\n\t\tconst skinWeights = geometry.skinWeights;\n\n\t\tconst hasSkinIndices = skinIndices.length === vertices.length;\n\t\tconst hasSkinWeights = skinWeights.length === vertices.length;\n\n\t\t//\n\n\t\tif ( vertices.length > 0 && faces.length === 0 ) {\n\n\t\t\tconsole.error( 'THREE.DirectGeometry: Faceless geometries are not supported.' );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < faces.length; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\tthis.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] );\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tthis.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tconst normal = face.normal;\n\n\t\t\t\tthis.normals.push( normal, normal, normal );\n\n\t\t\t}\n\n\t\t\tconst vertexColors = face.vertexColors;\n\n\t\t\tif ( vertexColors.length === 3 ) {\n\n\t\t\t\tthis.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tconst color = face.color;\n\n\t\t\t\tthis.colors.push( color, color, color );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv === true ) {\n\n\t\t\t\tconst vertexUvs = faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i );\n\n\t\t\t\t\tthis.uvs.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv2 === true ) {\n\n\t\t\t\tconst vertexUvs = faceVertexUvs[ 1 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i );\n\n\t\t\t\t\tthis.uvs2.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// morphs\n\n\t\t\tfor ( let j = 0; j < morphTargetsLength; j ++ ) {\n\n\t\t\t\tconst morphTarget = morphTargets[ j ].vertices;\n\n\t\t\t\tmorphTargetsPosition[ j ].data.push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] );\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0; j < morphNormalsLength; j ++ ) {\n\n\t\t\t\tconst morphNormal = morphNormals[ j ].vertexNormals[ i ];\n\n\t\t\t\tmorphTargetsNormal[ j ].data.push( morphNormal.a, morphNormal.b, morphNormal.c );\n\n\t\t\t}\n\n\t\t\t// skins\n\n\t\t\tif ( hasSkinIndices ) {\n\n\t\t\t\tthis.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] );\n\n\t\t\t}\n\n\t\t\tif ( hasSkinWeights ) {\n\n\t\t\t\tthis.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeGroups( geometry );\n\n\t\tthis.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\tthis.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\tthis.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\tthis.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction arrayMax( array ) {\n\n\tif ( array.length === 0 ) return - Infinity;\n\n\tlet max = array[ 0 ];\n\n\tfor ( let i = 1, l = array.length; i < l; ++ i ) {\n\n\t\tif ( array[ i ] > max ) max = array[ i ];\n\n\t}\n\n\treturn max;\n\n}\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nlet _bufferGeometryId = 1; // BufferGeometry uses odd numbers as Id\n\nconst _m1$2 = new Matrix4();\nconst _obj = new Object3D();\nconst _offset = new Vector3();\nconst _box$2 = new Box3();\nconst _boxMorphTargets = new Box3();\nconst _vector$4 = new Vector3();\n\nfunction BufferGeometry() {\n\n\tObject.defineProperty( this, 'id', { value: _bufferGeometryId += 2 } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'BufferGeometry';\n\n\tthis.index = null;\n\tthis.attributes = {};\n\n\tthis.morphAttributes = {};\n\tthis.morphTargetsRelative = false;\n\n\tthis.groups = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\tthis.drawRange = { start: 0, count: Infinity };\n\n\tthis.userData = {};\n\n}\n\nBufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: BufferGeometry,\n\n\tisBufferGeometry: true,\n\n\tgetIndex: function () {\n\n\t\treturn this.index;\n\n\t},\n\n\tsetIndex: function ( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t},\n\n\tgetAttribute: function ( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t},\n\n\tsetAttribute: function ( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t},\n\n\tdeleteAttribute: function ( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t},\n\n\taddGroup: function ( start, count, materialIndex ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex !== undefined ? materialIndex : 0\n\n\t\t} );\n\n\t},\n\n\tclearGroups: function () {\n\n\t\tthis.groups = [];\n\n\t},\n\n\tsetDrawRange: function ( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1$2.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1$2.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1$2.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1$2.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1$2.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t},\n\n\tlookAt: function ( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromObject: function ( object ) {\n\n\t\t// console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( object.isPoints || object.isLine ) {\n\n\t\t\tconst positions = new Float32BufferAttribute( geometry.vertices.length * 3, 3 );\n\t\t\tconst colors = new Float32BufferAttribute( geometry.colors.length * 3, 3 );\n\n\t\t\tthis.setAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) );\n\t\t\tthis.setAttribute( 'color', colors.copyColorsArray( geometry.colors ) );\n\n\t\t\tif ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) {\n\n\t\t\t\tconst lineDistances = new Float32BufferAttribute( geometry.lineDistances.length, 1 );\n\n\t\t\t\tthis.setAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t\t}\n\n\t\t} else if ( object.isMesh ) {\n\n\t\t\tif ( geometry && geometry.isGeometry ) {\n\n\t\t\t\tthis.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tconst position = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t},\n\n\tupdateFromObject: function ( object ) {\n\n\t\tlet geometry = object.geometry;\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tlet direct = geometry.__directGeometry;\n\n\t\t\tif ( geometry.elementsNeedUpdate === true ) {\n\n\t\t\t\tdirect = undefined;\n\t\t\t\tgeometry.elementsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( direct === undefined ) {\n\n\t\t\t\treturn this.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t\tdirect.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\t\tdirect.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\t\tdirect.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\t\tdirect.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\t\tdirect.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\t\t\tgeometry.normalsNeedUpdate = false;\n\t\t\tgeometry.colorsNeedUpdate = false;\n\t\t\tgeometry.uvsNeedUpdate = false;\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t\tgeometry = direct;\n\n\t\t}\n\n\t\tif ( geometry.verticesNeedUpdate === true ) {\n\n\t\t\tconst attribute = this.attributes.position;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.vertices );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.normalsNeedUpdate === true ) {\n\n\t\t\tconst attribute = this.attributes.normal;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.normals );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.normalsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.colorsNeedUpdate === true ) {\n\n\t\t\tconst attribute = this.attributes.color;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyColorsArray( geometry.colors );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.colorsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.uvsNeedUpdate ) {\n\n\t\t\tconst attribute = this.attributes.uv;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector2sArray( geometry.uvs );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.uvsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.lineDistancesNeedUpdate ) {\n\n\t\t\tconst attribute = this.attributes.lineDistance;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyArray( geometry.lineDistances );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.lineDistancesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.groupsNeedUpdate ) {\n\n\t\t\tgeometry.computeGroups( object.geometry );\n\t\t\tthis.groups = geometry.groups;\n\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tgeometry.__directGeometry = new DirectGeometry().fromGeometry( geometry );\n\n\t\treturn this.fromDirectGeometry( geometry.__directGeometry );\n\n\t},\n\n\tfromDirectGeometry: function ( geometry ) {\n\n\t\tconst positions = new Float32Array( geometry.vertices.length * 3 );\n\t\tthis.setAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) );\n\n\t\tif ( geometry.normals.length > 0 ) {\n\n\t\t\tconst normals = new Float32Array( geometry.normals.length * 3 );\n\t\t\tthis.setAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) );\n\n\t\t}\n\n\t\tif ( geometry.colors.length > 0 ) {\n\n\t\t\tconst colors = new Float32Array( geometry.colors.length * 3 );\n\t\t\tthis.setAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs.length > 0 ) {\n\n\t\t\tconst uvs = new Float32Array( geometry.uvs.length * 2 );\n\t\t\tthis.setAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs2.length > 0 ) {\n\n\t\t\tconst uvs2 = new Float32Array( geometry.uvs2.length * 2 );\n\t\t\tthis.setAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) );\n\n\t\t}\n\n\t\t// groups\n\n\t\tthis.groups = geometry.groups;\n\n\t\t// morphs\n\n\t\tfor ( const name in geometry.morphTargets ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphTargets = geometry.morphTargets[ name ];\n\n\t\t\tfor ( let i = 0, l = morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\tconst morphTarget = morphTargets[ i ];\n\n\t\t\t\tconst attribute = new Float32BufferAttribute( morphTarget.data.length * 3, 3 );\n\t\t\t\tattribute.name = morphTarget.name;\n\n\t\t\t\tarray.push( attribute.copyVector3sArray( morphTarget.data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\t// skinning\n\n\t\tif ( geometry.skinIndices.length > 0 ) {\n\n\t\t\tconst skinIndices = new Float32BufferAttribute( geometry.skinIndices.length * 4, 4 );\n\t\t\tthis.setAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) );\n\n\t\t}\n\n\t\tif ( geometry.skinWeights.length > 0 ) {\n\n\t\t\tconst skinWeights = new Float32BufferAttribute( geometry.skinWeights.length * 4, 4 );\n\t\t\tthis.setAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$2.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$4.addVectors( this.boundingBox.min, _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$4 );\n\n\t\t\t\t\t\t_vector$4.addVectors( this.boundingBox.max, _box$2.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$4 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$2.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$4.addVectors( _box$2.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$4 );\n\n\t\t\t\t\t\t_vector$4.addVectors( _box$2.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$4 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$2.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$4.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$4 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$4.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$4.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$4 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\t// backwards compatibility\n\n\t},\n\n\tcomputeVertexNormals: function () {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tmerge: function ( geometry, offset ) {\n\n\t\tif ( ! ( geometry && geometry.isBufferGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( offset === undefined ) {\n\n\t\t\toffset = 0;\n\n\t\t\tconsole.warn(\n\t\t\t\t'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. '\n\t\t\t\t+ 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.'\n\t\t\t);\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\tconst attribute1 = attributes[ key ];\n\t\t\tconst attributeArray1 = attribute1.array;\n\n\t\t\tconst attribute2 = geometry.attributes[ key ];\n\t\t\tconst attributeArray2 = attribute2.array;\n\n\t\t\tconst attributeOffset = attribute2.itemSize * offset;\n\t\t\tconst length = Math.min( attributeArray2.length, attributeArray1.length - attributeOffset );\n\n\t\t\tfor ( let i = 0, j = attributeOffset; i < length; i ++, j ++ ) {\n\n\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tnormalizeNormals: function () {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$4.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$4.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$4.x, _vector$4.y, _vector$4.z );\n\n\t\t}\n\n\t},\n\n\ttoNonIndexed: function () {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tconst attributeData = attribute.toJSON( data.data );\n\n\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\n\n\t\t\tdata.data.attributes[ key ] = attributeData;\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tconst attributeData = attribute.toJSON( data.data );\n\n\t\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\n\n\t\t\t\tarray.push( attributeData );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t const parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t const values = [];\n\n\t\t for ( const key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t const geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new BufferGeometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone( data ) );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author jonobr1 / http://jonobr1.com/\n */\n\nconst _inverseMatrix = new Matrix4();\nconst _ray = new Ray();\nconst _sphere = new Sphere();\n\nconst _vA = new Vector3();\nconst _vB = new Vector3();\nconst _vC = new Vector3();\n\nconst _tempA = new Vector3();\nconst _tempB = new Vector3();\nconst _tempC = new Vector3();\n\nconst _morphA = new Vector3();\nconst _morphB = new Vector3();\nconst _morphC = new Vector3();\n\nconst _uvA = new Vector2();\nconst _uvB = new Vector2();\nconst _uvC = new Vector2();\n\nconst _intersectionPoint = new Vector3();\nconst _intersectionPointWorld = new Vector3();\n\nfunction Mesh( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Mesh';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new MeshBasicMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nMesh.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Mesh,\n\n\tisMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.getInverse( matrixWorld );\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\t// Check boundingBox before continuing\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\tlet intersection;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\t\t\tconst uv = geometry.attributes.uv;\n\t\t\tconst uv2 = geometry.attributes.uv2;\n\t\t\tconst groups = geometry.groups;\n\t\t\tconst drawRange = geometry.drawRange;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\t// indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tconst end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( position !== undefined ) {\n\n\t\t\t\t// non-indexed buffer geometry\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\tconst end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\tconst a = i;\n\t\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst isMultiMaterial = Array.isArray( material );\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst faces = geometry.faces;\n\t\t\tlet uvs;\n\n\t\t\tconst faceVertexUvs = geometry.faceVertexUvs[ 0 ];\n\t\t\tif ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs;\n\n\t\t\tfor ( let f = 0, fl = faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = faces[ f ];\n\t\t\t\tconst faceMaterial = isMultiMaterial ? material[ face.materialIndex ] : material;\n\n\t\t\t\tif ( faceMaterial === undefined ) continue;\n\n\t\t\t\tconst fvA = vertices[ face.a ];\n\t\t\t\tconst fvB = vertices[ face.b ];\n\t\t\t\tconst fvC = vertices[ face.c ];\n\n\t\t\t\tintersection = checkIntersection( this, faceMaterial, raycaster, _ray, fvA, fvB, fvC, _intersectionPoint );\n\n\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\tif ( uvs && uvs[ f ] ) {\n\n\t\t\t\t\t\tconst uvs_f = uvs[ f ];\n\t\t\t\t\t\t_uvA.copy( uvs_f[ 0 ] );\n\t\t\t\t\t\t_uvB.copy( uvs_f[ 1 ] );\n\t\t\t\t\t\t_uvC.copy( uvs_f[ 2 ] );\n\n\t\t\t\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, fvA, fvB, fvC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tintersection.face = face;\n\t\t\t\t\tintersection.faceIndex = f;\n\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tlet intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkBufferGeometryIntersection( object, material, raycaster, ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c ) {\n\n\t_vA.fromBufferAttribute( position, a );\n\t_vB.fromBufferAttribute( position, b );\n\t_vC.fromBufferAttribute( position, c );\n\n\tconst morphInfluences = object.morphTargetInfluences;\n\n\tif ( material.morphTargets && morphPosition && morphInfluences ) {\n\n\t\t_morphA.set( 0, 0, 0 );\n\t\t_morphB.set( 0, 0, 0 );\n\t\t_morphC.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\tconst influence = morphInfluences[ i ];\n\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t_tempA.fromBufferAttribute( morphAttribute, a );\n\t\t\t_tempB.fromBufferAttribute( morphAttribute, b );\n\t\t\t_tempC.fromBufferAttribute( morphAttribute, c );\n\n\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\t\t\t\t_morphB.addScaledVector( _tempB, influence );\n\t\t\t\t_morphC.addScaledVector( _tempC, influence );\n\n\t\t\t} else {\n\n\t\t\t\t_morphA.addScaledVector( _tempA.sub( _vA ), influence );\n\t\t\t\t_morphB.addScaledVector( _tempB.sub( _vB ), influence );\n\t\t\t\t_morphC.addScaledVector( _tempC.sub( _vC ), influence );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_vA.add( _morphA );\n\t\t_vB.add( _morphB );\n\t\t_vC.add( _morphC );\n\n\t}\n\n\tif ( object.isSkinnedMesh ) {\n\n\t\tobject.boneTransform( a, _vA );\n\t\tobject.boneTransform( b, _vB );\n\t\tobject.boneTransform( c, _vC );\n\n\t}\n\n\tconst intersection = checkIntersection( object, material, raycaster, ray, _vA, _vB, _vC, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\t_uvA.fromBufferAttribute( uv, a );\n\t\t\t_uvB.fromBufferAttribute( uv, b );\n\t\t\t_uvC.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv2 ) {\n\n\t\t\t_uvA.fromBufferAttribute( uv2, a );\n\t\t\t_uvB.fromBufferAttribute( uv2, b );\n\t\t\t_uvC.fromBufferAttribute( uv2, c );\n\n\t\t\tintersection.uv2 = Triangle.getUV( _intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() );\n\n\t\t}\n\n\t\tconst face = new Face3( a, b, c );\n\t\tTriangle.getNormal( _vA, _vB, _vC, face.normal );\n\n\t\tintersection.face = face;\n\n\t}\n\n\treturn intersection;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author bhouston / http://clara.io\n */\n\nlet _geometryId = 0; // Geometry uses even numbers as Id\nconst _m1$3 = new Matrix4();\nconst _obj$1 = new Object3D();\nconst _offset$1 = new Vector3();\n\nfunction Geometry() {\n\n\tObject.defineProperty( this, 'id', { value: _geometryId += 2 } );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Geometry';\n\n\tthis.vertices = [];\n\tthis.colors = [];\n\tthis.faces = [];\n\tthis.faceVertexUvs = [[]];\n\n\tthis.morphTargets = [];\n\tthis.morphNormals = [];\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\tthis.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.elementsNeedUpdate = false;\n\tthis.verticesNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.lineDistancesNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Geometry,\n\n\tisGeometry: true,\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\tfor ( let i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tconst vertex = this.vertices[ i ];\n\t\t\tvertex.applyMatrix4( matrix );\n\n\t\t}\n\n\t\tfor ( let i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\t\t\tface.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\tfor ( let j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tface.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.verticesNeedUpdate = true;\n\t\tthis.normalsNeedUpdate = true;\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function ( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1$3.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\trotateY: function ( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1$3.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\trotateZ: function ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1$3.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1$3.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1$3.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$3 );\n\n\t\treturn this;\n\n\t},\n\n\tlookAt: function ( vector ) {\n\n\t\t_obj$1.lookAt( vector );\n\n\t\t_obj$1.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj$1.matrix );\n\n\t\treturn this;\n\n\t},\n\n\tfromBufferGeometry: function ( geometry ) {\n\n\t\tconst scope = this;\n\n\t\tconst index = geometry.index !== null ? geometry.index : undefined;\n\t\tconst attributes = geometry.attributes;\n\n\t\tif ( attributes.position === undefined ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst position = attributes.position;\n\t\tconst normal = attributes.normal;\n\t\tconst color = attributes.color;\n\t\tconst uv = attributes.uv;\n\t\tconst uv2 = attributes.uv2;\n\n\t\tif ( uv2 !== undefined ) this.faceVertexUvs[ 1 ] = [];\n\n\t\tfor ( let i = 0; i < position.count; i ++ ) {\n\n\t\t\tscope.vertices.push( new Vector3().fromBufferAttribute( position, i ) );\n\n\t\t\tif ( color !== undefined ) {\n\n\t\t\t\tscope.colors.push( new Color().fromBufferAttribute( color, i ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction addFace( a, b, c, materialIndex ) {\n\n\t\t\tconst vertexColors = ( color === undefined ) ? [] : [\n\t\t\t\tscope.colors[ a ].clone(),\n\t\t\t\tscope.colors[ b ].clone(),\n\t\t\t\tscope.colors[ c ].clone()\n\t\t\t];\n\n\t\t\tconst vertexNormals = ( normal === undefined ) ? [] : [\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, a ),\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, b ),\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, c )\n\t\t\t];\n\n\t\t\tconst face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex );\n\n\t\t\tscope.faces.push( face );\n\n\t\t\tif ( uv !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 0 ].push( [\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, a ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, b ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, c )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t\tif ( uv2 !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 1 ].push( [\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, a ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, b ),\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, c )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst groups = geometry.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tfor ( let i = 0; i < groups.length; i ++ ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tconst start = group.start;\n\t\t\t\tconst count = group.count;\n\n\t\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\t\tif ( index !== undefined ) {\n\n\t\t\t\t\t\taddFace( index.getX( j ), index.getX( j + 1 ), index.getX( j + 2 ), group.materialIndex );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\taddFace( j, j + 1, j + 2, group.materialIndex );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tfor ( let i = 0; i < index.count; i += 3 ) {\n\n\t\t\t\t\taddFace( index.getX( i ), index.getX( i + 1 ), index.getX( i + 2 ) );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0; i < position.count; i += 3 ) {\n\n\t\t\t\t\taddFace( i, i + 1, i + 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeFaceNormals();\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset$1 ).negate();\n\n\t\tthis.translate( _offset$1.x, _offset$1.y, _offset$1.z );\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\tthis.computeBoundingSphere();\n\n\t\tconst center = this.boundingSphere.center;\n\t\tconst radius = this.boundingSphere.radius;\n\n\t\tconst s = radius === 0 ? 1 : 1.0 / radius;\n\n\t\tconst matrix = new Matrix4();\n\t\tmatrix.set(\n\t\t\ts, 0, 0, - s * center.x,\n\t\t\t0, s, 0, - s * center.y,\n\t\t\t0, 0, s, - s * center.z,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\tthis.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vA = this.vertices[ face.a ];\n\t\t\tconst vB = this.vertices[ face.b ];\n\t\t\tconst vC = this.vertices[ face.c ];\n\n\t\t\tcb.subVectors( vC, vB );\n\t\t\tab.subVectors( vA, vB );\n\t\t\tcb.cross( ab );\n\n\t\t\tcb.normalize();\n\n\t\t\tface.normal.copy( cb );\n\n\t\t}\n\n\t},\n\n\tcomputeVertexNormals: function ( areaWeighted ) {\n\n\t\tif ( areaWeighted === undefined ) areaWeighted = true;\n\n\t\tconst vertices = new Array( this.vertices.length );\n\n\t\tfor ( let v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ] = new Vector3();\n\n\t\t}\n\n\t\tif ( areaWeighted ) {\n\n\t\t\t// vertex normals weighted by triangle areas\n\t\t\t// http://www.iquilezles.org/www/articles/normals/normals.htm\n\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tconst vA = this.vertices[ face.a ];\n\t\t\t\tconst vB = this.vertices[ face.b ];\n\t\t\t\tconst vC = this.vertices[ face.c ];\n\n\t\t\t\tcb.subVectors( vC, vB );\n\t\t\t\tab.subVectors( vA, vB );\n\t\t\t\tcb.cross( ab );\n\n\t\t\t\tvertices[ face.a ].add( cb );\n\t\t\t\tvertices[ face.b ].add( cb );\n\t\t\t\tvertices[ face.c ].add( cb );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.computeFaceNormals();\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tvertices[ face.a ].add( face.normal );\n\t\t\t\tvertices[ face.b ].add( face.normal );\n\t\t\t\tvertices[ face.c ].add( face.normal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ].normalize();\n\n\t\t}\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( vertices[ face.a ] );\n\t\t\t\tvertexNormals[ 1 ].copy( vertices[ face.b ] );\n\t\t\t\tvertexNormals[ 2 ].copy( vertices[ face.c ] );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = vertices[ face.a ].clone();\n\t\t\t\tvertexNormals[ 1 ] = vertices[ face.b ].clone();\n\t\t\t\tvertexNormals[ 2 ] = vertices[ face.c ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeFlatVertexNormals: function () {\n\n\t\tthis.computeFaceNormals();\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 1 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 2 ].copy( face.normal );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 1 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 2 ] = face.normal.clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeMorphNormals: function () {\n\n\t\t// save original normals\n\t\t// - create temp variables on first access\n\t\t// otherwise just copy (for faster repeated calls)\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tif ( ! face.__originalFaceNormal ) {\n\n\t\t\t\tface.__originalFaceNormal = face.normal.clone();\n\n\t\t\t} else {\n\n\t\t\t\tface.__originalFaceNormal.copy( face.normal );\n\n\t\t\t}\n\n\t\t\tif ( ! face.__originalVertexNormals ) face.__originalVertexNormals = [];\n\n\t\t\tfor ( let i = 0, il = face.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\t\tif ( ! face.__originalVertexNormals[ i ] ) {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// use temp geometry to compute face and vertex normals for each morph\n\n\t\tconst tmpGeo = new Geometry();\n\t\ttmpGeo.faces = this.faces;\n\n\t\tfor ( let i = 0, il = this.morphTargets.length; i < il; i ++ ) {\n\n\t\t\t// create on first access\n\n\t\t\tif ( ! this.morphNormals[ i ] ) {\n\n\t\t\t\tthis.morphNormals[ i ] = {};\n\t\t\t\tthis.morphNormals[ i ].faceNormals = [];\n\t\t\t\tthis.morphNormals[ i ].vertexNormals = [];\n\n\t\t\t\tconst dstNormalsFace = this.morphNormals[ i ].faceNormals;\n\t\t\t\tconst dstNormalsVertex = this.morphNormals[ i ].vertexNormals;\n\n\t\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tconst faceNormal = new Vector3();\n\t\t\t\t\tconst vertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() };\n\n\t\t\t\t\tdstNormalsFace.push( faceNormal );\n\t\t\t\t\tdstNormalsVertex.push( vertexNormals );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst morphNormals = this.morphNormals[ i ];\n\n\t\t\t// set vertices to morph target\n\n\t\t\ttmpGeo.vertices = this.morphTargets[ i ].vertices;\n\n\t\t\t// compute morph normals\n\n\t\t\ttmpGeo.computeFaceNormals();\n\t\t\ttmpGeo.computeVertexNormals();\n\n\t\t\t// store morph normals\n\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tconst face = this.faces[ f ];\n\n\t\t\t\tconst faceNormal = morphNormals.faceNormals[ f ];\n\t\t\t\tconst vertexNormals = morphNormals.vertexNormals[ f ];\n\n\t\t\t\tfaceNormal.copy( face.normal );\n\n\t\t\t\tvertexNormals.a.copy( face.vertexNormals[ 0 ] );\n\t\t\t\tvertexNormals.b.copy( face.vertexNormals[ 1 ] );\n\t\t\t\tvertexNormals.c.copy( face.vertexNormals[ 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// restore original normals\n\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tconst face = this.faces[ f ];\n\n\t\t\tface.normal = face.__originalFaceNormal;\n\t\t\tface.vertexNormals = face.__originalVertexNormals;\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.setFromPoints( this.vertices );\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.setFromPoints( this.vertices );\n\n\t},\n\n\tmerge: function ( geometry, matrix, materialIndexOffset ) {\n\n\t\tif ( ! ( geometry && geometry.isGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tlet normalMatrix,\n\t\t\tvertexOffset = this.vertices.length,\n\t\t\tvertices1 = this.vertices,\n\t\t\tvertices2 = geometry.vertices,\n\t\t\tfaces1 = this.faces,\n\t\t\tfaces2 = geometry.faces,\n\t\t\tcolors1 = this.colors,\n\t\t\tcolors2 = geometry.colors;\n\n\t\tif ( materialIndexOffset === undefined ) materialIndexOffset = 0;\n\n\t\tif ( matrix !== undefined ) {\n\n\t\t\tnormalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t}\n\n\t\t// vertices\n\n\t\tfor ( let i = 0, il = vertices2.length; i < il; i ++ ) {\n\n\t\t\tconst vertex = vertices2[ i ];\n\n\t\t\tconst vertexCopy = vertex.clone();\n\n\t\t\tif ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix );\n\n\t\t\tvertices1.push( vertexCopy );\n\n\t\t}\n\n\t\t// colors\n\n\t\tfor ( let i = 0, il = colors2.length; i < il; i ++ ) {\n\n\t\t\tcolors1.push( colors2[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tfor ( let i = 0, il = faces2.length; i < il; i ++ ) {\n\n\t\t\tlet face = faces2[ i ], faceCopy, normal, color,\n\t\t\t\tfaceVertexNormals = face.vertexNormals,\n\t\t\t\tfaceVertexColors = face.vertexColors;\n\n\t\t\tfaceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset );\n\t\t\tfaceCopy.normal.copy( face.normal );\n\n\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\tfaceCopy.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tnormal = faceVertexNormals[ j ].clone();\n\n\t\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\t\tnormal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t}\n\n\t\t\t\tfaceCopy.vertexNormals.push( normal );\n\n\t\t\t}\n\n\t\t\tfaceCopy.color.copy( face.color );\n\n\t\t\tfor ( let j = 0, jl = faceVertexColors.length; j < jl; j ++ ) {\n\n\t\t\t\tcolor = faceVertexColors[ j ];\n\t\t\t\tfaceCopy.vertexColors.push( color.clone() );\n\n\t\t\t}\n\n\t\t\tfaceCopy.materialIndex = face.materialIndex + materialIndexOffset;\n\n\t\t\tfaces1.push( faceCopy );\n\n\t\t}\n\n\t\t// uvs\n\n\t\tfor ( let i = 0, il = geometry.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tconst faceVertexUvs2 = geometry.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) this.faceVertexUvs[ i ] = [];\n\n\t\t\tfor ( let j = 0, jl = faceVertexUvs2.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uvs2 = faceVertexUvs2[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( let k = 0, kl = uvs2.length; k < kl; k ++ ) {\n\n\t\t\t\t\tuvsCopy.push( uvs2[ k ].clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tmergeMesh: function ( mesh ) {\n\n\t\tif ( ! ( mesh && mesh.isMesh ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( mesh.matrixAutoUpdate ) mesh.updateMatrix();\n\n\t\tthis.merge( mesh.geometry, mesh.matrix );\n\n\t},\n\n\t/*\n\t * Checks for duplicate vertices with hashmap.\n\t * Duplicated vertices are removed\n\t * and faces' vertices are updated.\n\t */\n\n\tmergeVertices: function () {\n\n\t\tconst verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n\t\tconst unique = [], changes = [];\n\n\t\tconst precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n\t\tconst precision = Math.pow( 10, precisionPoints );\n\n\t\tfor ( let i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tconst v = this.vertices[ i ];\n\t\t\tconst key = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision );\n\n\t\t\tif ( verticesMap[ key ] === undefined ) {\n\n\t\t\t\tverticesMap[ key ] = i;\n\t\t\t\tunique.push( this.vertices[ i ] );\n\t\t\t\tchanges[ i ] = unique.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\t//console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);\n\t\t\t\tchanges[ i ] = changes[ verticesMap[ key ] ];\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// if faces are completely degenerate after merging vertices, we\n\t\t// have to remove them from the geometry.\n\t\tconst faceIndicesToRemove = [];\n\n\t\tfor ( let i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\n\t\t\tface.a = changes[ face.a ];\n\t\t\tface.b = changes[ face.b ];\n\t\t\tface.c = changes[ face.c ];\n\n\t\t\tconst indices = [ face.a, face.b, face.c ];\n\n\t\t\t// if any duplicate vertices are found in a Face3\n\t\t\t// we have to remove the face as nothing can be saved\n\t\t\tfor ( let n = 0; n < 3; n ++ ) {\n\n\t\t\t\tif ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) {\n\n\t\t\t\t\tfaceIndicesToRemove.push( i );\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = faceIndicesToRemove.length - 1; i >= 0; i -- ) {\n\n\t\t\tconst idx = faceIndicesToRemove[ i ];\n\n\t\t\tthis.faces.splice( idx, 1 );\n\n\t\t\tfor ( let j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tthis.faceVertexUvs[ j ].splice( idx, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Use unique set of vertices\n\n\t\tconst diff = this.vertices.length - unique.length;\n\t\tthis.vertices = unique;\n\t\treturn diff;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.vertices = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tthis.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsortFacesByMaterialIndex: function () {\n\n\t\tconst faces = this.faces;\n\t\tconst length = faces.length;\n\n\t\t// tag faces\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tfaces[ i ]._id = i;\n\n\t\t}\n\n\t\t// sort faces\n\n\t\tfunction materialIndexSort( a, b ) {\n\n\t\t\treturn a.materialIndex - b.materialIndex;\n\n\t\t}\n\n\t\tfaces.sort( materialIndexSort );\n\n\t\t// sort uvs\n\n\t\tconst uvs1 = this.faceVertexUvs[ 0 ];\n\t\tconst uvs2 = this.faceVertexUvs[ 1 ];\n\n\t\tlet newUvs1, newUvs2;\n\n\t\tif ( uvs1 && uvs1.length === length ) newUvs1 = [];\n\t\tif ( uvs2 && uvs2.length === length ) newUvs2 = [];\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tconst id = faces[ i ]._id;\n\n\t\t\tif ( newUvs1 ) newUvs1.push( uvs1[ id ] );\n\t\t\tif ( newUvs2 ) newUvs2.push( uvs2[ id ] );\n\n\t\t}\n\n\t\tif ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1;\n\t\tif ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Geometry',\n\t\t\t\tgenerator: 'Geometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Geometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tconst vertices = [];\n\n\t\tfor ( let i = 0; i < this.vertices.length; i ++ ) {\n\n\t\t\tconst vertex = this.vertices[ i ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tconst faces = [];\n\t\tconst normals = [];\n\t\tconst normalsHash = {};\n\t\tconst colors = [];\n\t\tconst colorsHash = {};\n\t\tconst uvs = [];\n\t\tconst uvsHash = {};\n\n\t\tfor ( let i = 0; i < this.faces.length; i ++ ) {\n\n\t\t\tconst face = this.faces[ i ];\n\n\t\t\tconst hasMaterial = true;\n\t\t\tconst hasFaceUv = false; // deprecated\n\t\t\tconst hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined;\n\t\t\tconst hasFaceNormal = face.normal.length() > 0;\n\t\t\tconst hasFaceVertexNormal = face.vertexNormals.length > 0;\n\t\t\tconst hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1;\n\t\t\tconst hasFaceVertexColor = face.vertexColors.length > 0;\n\n\t\t\tlet faceType = 0;\n\n\t\t\tfaceType = setBit( faceType, 0, 0 ); // isQuad\n\t\t\tfaceType = setBit( faceType, 1, hasMaterial );\n\t\t\tfaceType = setBit( faceType, 2, hasFaceUv );\n\t\t\tfaceType = setBit( faceType, 3, hasFaceVertexUv );\n\t\t\tfaceType = setBit( faceType, 4, hasFaceNormal );\n\t\t\tfaceType = setBit( faceType, 5, hasFaceVertexNormal );\n\t\t\tfaceType = setBit( faceType, 6, hasFaceColor );\n\t\t\tfaceType = setBit( faceType, 7, hasFaceVertexColor );\n\n\t\t\tfaces.push( faceType );\n\t\t\tfaces.push( face.a, face.b, face.c );\n\t\t\tfaces.push( face.materialIndex );\n\n\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\tconst faceVertexUvs = this.faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 0 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 1 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\tfaces.push( getNormalIndex( face.normal ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\tconst vertexNormals = face.vertexNormals;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 0 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 1 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\tfaces.push( getColorIndex( face.color ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\tconst vertexColors = face.vertexColors;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetColorIndex( vertexColors[ 0 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 1 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction setBit( value, position, enabled ) {\n\n\t\t\treturn enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) );\n\n\t\t}\n\n\t\tfunction getNormalIndex( normal ) {\n\n\t\t\tconst hash = normal.x.toString() + normal.y.toString() + normal.z.toString();\n\n\t\t\tif ( normalsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn normalsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tnormalsHash[ hash ] = normals.length / 3;\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\treturn normalsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getColorIndex( color ) {\n\n\t\t\tconst hash = color.r.toString() + color.g.toString() + color.b.toString();\n\n\t\t\tif ( colorsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn colorsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tcolorsHash[ hash ] = colors.length;\n\t\t\tcolors.push( color.getHex() );\n\n\t\t\treturn colorsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getUvIndex( uv ) {\n\n\t\t\tconst hash = uv.x.toString() + uv.y.toString();\n\n\t\t\tif ( uvsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn uvsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tuvsHash[ hash ] = uvs.length / 2;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\treturn uvsHash[ hash ];\n\n\t\t}\n\n\t\tdata.data = {};\n\n\t\tdata.data.vertices = vertices;\n\t\tdata.data.normals = normals;\n\t\tif ( colors.length > 0 ) data.data.colors = colors;\n\t\tif ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility\n\t\tdata.data.faces = faces;\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t const parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t const values = [];\n\n\t\t for ( const key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t const geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new Geometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\t// reset\n\n\t\tthis.vertices = [];\n\t\tthis.colors = [];\n\t\tthis.faces = [];\n\t\tthis.faceVertexUvs = [[]];\n\t\tthis.morphTargets = [];\n\t\tthis.morphNormals = [];\n\t\tthis.skinWeights = [];\n\t\tthis.skinIndices = [];\n\t\tthis.lineDistances = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// vertices\n\n\t\tconst vertices = source.vertices;\n\n\t\tfor ( let i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\tthis.vertices.push( vertices[ i ].clone() );\n\n\t\t}\n\n\t\t// colors\n\n\t\tconst colors = source.colors;\n\n\t\tfor ( let i = 0, il = colors.length; i < il; i ++ ) {\n\n\t\t\tthis.colors.push( colors[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tconst faces = source.faces;\n\n\t\tfor ( let i = 0, il = faces.length; i < il; i ++ ) {\n\n\t\t\tthis.faces.push( faces[ i ].clone() );\n\n\t\t}\n\n\t\t// face vertex uvs\n\n\t\tfor ( let i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tconst faceVertexUvs = source.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) {\n\n\t\t\t\tthis.faceVertexUvs[ i ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uvs = faceVertexUvs[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( let k = 0, kl = uvs.length; k < kl; k ++ ) {\n\n\t\t\t\t\tconst uv = uvs[ k ];\n\n\t\t\t\t\tuvsCopy.push( uv.clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphTargets = source.morphTargets;\n\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = {};\n\t\t\tmorphTarget.name = morphTargets[ i ].name;\n\n\t\t\t// vertices\n\n\t\t\tif ( morphTargets[ i ].vertices !== undefined ) {\n\n\t\t\t\tmorphTarget.vertices = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphTargets[ i ].vertices.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.vertices.push( morphTargets[ i ].vertices[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// normals\n\n\t\t\tif ( morphTargets[ i ].normals !== undefined ) {\n\n\t\t\t\tmorphTarget.normals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphTargets[ i ].normals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.normals.push( morphTargets[ i ].normals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.push( morphTarget );\n\n\t\t}\n\n\t\t// morph normals\n\n\t\tconst morphNormals = source.morphNormals;\n\n\t\tfor ( let i = 0, il = morphNormals.length; i < il; i ++ ) {\n\n\t\t\tconst morphNormal = {};\n\n\t\t\t// vertex normals\n\n\t\t\tif ( morphNormals[ i ].vertexNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.vertexNormals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphNormals[ i ].vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tconst srcVertexNormal = morphNormals[ i ].vertexNormals[ j ];\n\t\t\t\t\tconst destVertexNormal = {};\n\n\t\t\t\t\tdestVertexNormal.a = srcVertexNormal.a.clone();\n\t\t\t\t\tdestVertexNormal.b = srcVertexNormal.b.clone();\n\t\t\t\t\tdestVertexNormal.c = srcVertexNormal.c.clone();\n\n\t\t\t\t\tmorphNormal.vertexNormals.push( destVertexNormal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// face normals\n\n\t\t\tif ( morphNormals[ i ].faceNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.faceNormals = [];\n\n\t\t\t\tfor ( let j = 0, jl = morphNormals[ i ].faceNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphNormal.faceNormals.push( morphNormals[ i ].faceNormals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphNormals.push( morphNormal );\n\n\t\t}\n\n\t\t// skin weights\n\n\t\tconst skinWeights = source.skinWeights;\n\n\t\tfor ( let i = 0, il = skinWeights.length; i < il; i ++ ) {\n\n\t\t\tthis.skinWeights.push( skinWeights[ i ].clone() );\n\n\t\t}\n\n\t\t// skin indices\n\n\t\tconst skinIndices = source.skinIndices;\n\n\t\tfor ( let i = 0, il = skinIndices.length; i < il; i ++ ) {\n\n\t\t\tthis.skinIndices.push( skinIndices[ i ].clone() );\n\n\t\t}\n\n\t\t// line distances\n\n\t\tconst lineDistances = source.lineDistances;\n\n\t\tfor ( let i = 0, il = lineDistances.length; i < il; i ++ ) {\n\n\t\t\tthis.lineDistances.push( lineDistances[ i ] );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// update flags\n\n\t\tthis.elementsNeedUpdate = source.elementsNeedUpdate;\n\t\tthis.verticesNeedUpdate = source.verticesNeedUpdate;\n\t\tthis.uvsNeedUpdate = source.uvsNeedUpdate;\n\t\tthis.normalsNeedUpdate = source.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = source.colorsNeedUpdate;\n\t\tthis.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate;\n\t\tthis.groupsNeedUpdate = source.groupsNeedUpdate;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// BoxGeometry\n\nclass BoxGeometry extends Geometry {\n\n\tconstructor( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tthis.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) );\n\t\tthis.mergeVertices();\n\n\t}\n\n}\n\n// BoxBufferGeometry\n\nclass BoxBufferGeometry extends BufferGeometry {\n\n\tconstructor( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\twidth = width || 1;\n\t\theight = height || 1;\n\t\tdepth = depth || 1;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments ) || 1;\n\t\theightSegments = Math.floor( heightSegments ) || 1;\n\t\tdepthSegments = Math.floor( depthSegments ) || 1;\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tconst dst = {};\n\n\tfor ( const u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( const p in src[ u ] ) {\n\n\t\t\tconst property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tconst merged = {};\n\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\n\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( const p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\n// Legacy\n\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * defines: { \"label\" : \"value\" },\n * uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n *\n * fragmentShader: ,\n * vertexShader: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * lights: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction ShaderMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShaderMaterial';\n\n\tthis.defines = {};\n\tthis.uniforms = {};\n\n\tthis.vertexShader = default_vertex;\n\tthis.fragmentShader = default_fragment;\n\n\tthis.linewidth = 1;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false; // set to use scene fog\n\tthis.lights = false; // set to use scene lights\n\tthis.clipping = false; // set to use user-defined clipping planes\n\n\tthis.skinning = false; // set to use skinning attribute streams\n\tthis.morphTargets = false; // set to use morph targets\n\tthis.morphNormals = false; // set to use morph normals\n\n\tthis.extensions = {\n\t\tderivatives: false, // set to use derivatives\n\t\tfragDepth: false, // set to use fragment depth values\n\t\tdrawBuffers: false, // set to use draw buffers\n\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t};\n\n\t// When rendered geometry doesn't include these attributes but the material does,\n\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\tthis.defaultAttributeValues = {\n\t\t'color': [ 1, 1, 1 ],\n\t\t'uv': [ 0, 0 ],\n\t\t'uv2': [ 0, 0 ]\n\t};\n\n\tthis.index0AttributeName = undefined;\n\tthis.uniformsNeedUpdate = false;\n\n\tif ( parameters !== undefined ) {\n\n\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n}\n\nShaderMaterial.prototype = Object.create( Material.prototype );\nShaderMaterial.prototype.constructor = ShaderMaterial;\n\nShaderMaterial.prototype.isShaderMaterial = true;\n\nShaderMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.fragmentShader = source.fragmentShader;\n\tthis.vertexShader = source.vertexShader;\n\n\tthis.uniforms = cloneUniforms( source.uniforms );\n\n\tthis.defines = Object.assign( {}, source.defines );\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.lights = source.lights;\n\tthis.clipping = source.clipping;\n\n\tthis.skinning = source.skinning;\n\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.extensions = Object.assign( {}, source.extensions );\n\n\treturn this;\n\n};\n\nShaderMaterial.prototype.toJSON = function ( meta ) {\n\n\tconst data = Material.prototype.toJSON.call( this, meta );\n\n\tdata.uniforms = {};\n\n\tfor ( const name in this.uniforms ) {\n\n\t\tconst uniform = this.uniforms[ name ];\n\t\tconst value = uniform.value;\n\n\t\tif ( value && value.isTexture ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 't',\n\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t};\n\n\t\t} else if ( value && value.isColor ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'c',\n\t\t\t\tvalue: value.getHex()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v2',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v3',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v4',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'm3',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'm4',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\tvalue: value\n\t\t\t};\n\n\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t}\n\n\t}\n\n\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\tdata.vertexShader = this.vertexShader;\n\tdata.fragmentShader = this.fragmentShader;\n\n\tconst extensions = {};\n\n\tfor ( const key in this.extensions ) {\n\n\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t}\n\n\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\treturn data;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction Camera() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Camera';\n\n\tthis.matrixWorldInverse = new Matrix4();\n\n\tthis.projectionMatrix = new Matrix4();\n\tthis.projectionMatrixInverse = new Matrix4();\n\n}\n\nCamera.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Camera,\n\n\tisCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\treturn this;\n\n\t},\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Camera: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize();\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\n\n\t},\n\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\n\n\t\tObject3D.prototype.updateWorldMatrix.call( this, updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author greggman / http://games.greggman.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author tschw\n */\n\nfunction PerspectiveCamera( fov, aspect, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'PerspectiveCamera';\n\n\tthis.fov = fov !== undefined ? fov : 50;\n\tthis.zoom = 1;\n\n\tthis.near = near !== undefined ? near : 0.1;\n\tthis.far = far !== undefined ? far : 2000;\n\tthis.focus = 10;\n\n\tthis.aspect = aspect !== undefined ? aspect : 1;\n\tthis.view = null;\n\n\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\tthis.updateProjectionMatrix();\n\n}\n\nPerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: PerspectiveCamera,\n\n\tisPerspectiveCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t},\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength: function ( focalLength ) {\n\n\t\t// see http://www.bobatkins.com/photography/technical/field_of_view.html\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = MathUtils.RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength: function () {\n\n\t\tconst vExtentSlope = Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t},\n\n\tgetEffectiveFOV: function () {\n\n\t\treturn MathUtils.RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( MathUtils.DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t},\n\n\tgetFilmWidth: function () {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t},\n\n\tgetFilmHeight: function () {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t},\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * const w = 1920;\n\t * const h = 1080;\n\t * const fullWidth = w * 3;\n\t * const fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tlet near = this.near,\n\t\t\ttop = near * Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov ) / this.zoom,\n\t\t\theight = 2 * top,\n\t\t\twidth = this.aspect * height,\n\t\t\tleft = - 0.5 * width,\n\t\t\tview = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );\n\n\t\tthis.projectionMatrixInverse.getInverse( this.projectionMatrix );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * Camera for rendering cube maps\n *\t- renders scene into axis-aligned cube\n *\n * @author alteredq / http://alteredqualia.com/\n */\n\nconst fov = 90, aspect = 1;\n\nfunction CubeCamera( near, far, renderTarget ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'CubeCamera';\n\n\tif ( renderTarget.isWebGLCubeRenderTarget !== true ) {\n\n\t\tconsole.error( 'THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.' );\n\t\treturn;\n\n\t}\n\n\tthis.renderTarget = renderTarget;\n\n\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPX.layers = this.layers;\n\tcameraPX.up.set( 0, - 1, 0 );\n\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\tthis.add( cameraPX );\n\n\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNX.layers = this.layers;\n\tcameraNX.up.set( 0, - 1, 0 );\n\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\tthis.add( cameraNX );\n\n\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPY.layers = this.layers;\n\tcameraPY.up.set( 0, 0, 1 );\n\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\tthis.add( cameraPY );\n\n\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNY.layers = this.layers;\n\tcameraNY.up.set( 0, 0, - 1 );\n\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\tthis.add( cameraNY );\n\n\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPZ.layers = this.layers;\n\tcameraPZ.up.set( 0, - 1, 0 );\n\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\tthis.add( cameraPZ );\n\n\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNZ.layers = this.layers;\n\tcameraNZ.up.set( 0, - 1, 0 );\n\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\tthis.add( cameraNZ );\n\n\tthis.update = function ( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\trenderer.xr.enabled = false;\n\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0 );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1 );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2 );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3 );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4 );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5 );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t};\n\n\tthis.clear = function ( renderer, color, depth, stencil ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( renderTarget, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t};\n\n}\n\nCubeCamera.prototype = Object.create( Object3D.prototype );\nCubeCamera.prototype.constructor = CubeCamera;\n\n/**\n * @author alteredq / http://alteredqualia.com\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction WebGLCubeRenderTarget( size, options, dummy ) {\n\n\tif ( Number.isInteger( options ) ) {\n\n\t\tconsole.warn( 'THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )' );\n\n\t\toptions = dummy;\n\n\t}\n\n\tWebGLRenderTarget.call( this, size, size, options );\n\n}\n\nWebGLCubeRenderTarget.prototype = Object.create( WebGLRenderTarget.prototype );\nWebGLCubeRenderTarget.prototype.constructor = WebGLCubeRenderTarget;\n\nWebGLCubeRenderTarget.prototype.isWebGLCubeRenderTarget = true;\n\nWebGLCubeRenderTarget.prototype.fromEquirectangularTexture = function ( renderer, texture ) {\n\n\tthis.texture.type = texture.type;\n\tthis.texture.format = texture.format;\n\tthis.texture.encoding = texture.encoding;\n\n\tconst scene = new Scene();\n\n\tconst shader = {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: [\n\n\t\t\t\"varying vec3 vWorldDirection;\",\n\n\t\t\t\"vec3 transformDirection( in vec3 dir, in mat4 matrix ) {\",\n\n\t\t\t\"\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\",\n\n\t\t\t\"}\",\n\n\t\t\t\"void main() {\",\n\n\t\t\t\"\tvWorldDirection = transformDirection( position, modelMatrix );\",\n\n\t\t\t\"\t#include \",\n\t\t\t\"\t#include \",\n\n\t\t\t\"}\"\n\n\t\t].join( '\\n' ),\n\n\t\tfragmentShader: [\n\n\t\t\t\"uniform sampler2D tEquirect;\",\n\n\t\t\t\"varying vec3 vWorldDirection;\",\n\n\t\t\t\"#include \",\n\n\t\t\t\"void main() {\",\n\n\t\t\t\"\tvec3 direction = normalize( vWorldDirection );\",\n\n\t\t\t\"\tvec2 sampleUV = equirectUv( direction );\",\n\n\t\t\t\"\tgl_FragColor = texture2D( tEquirect, sampleUV );\",\n\n\t\t\t\"}\"\n\n\t\t].join( '\\n' ),\n\t};\n\n\tconst material = new ShaderMaterial( {\n\n\t\tname: 'CubemapFromEquirect',\n\n\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\tvertexShader: shader.vertexShader,\n\t\tfragmentShader: shader.fragmentShader,\n\t\tside: BackSide,\n\t\tblending: NoBlending\n\n\t} );\n\n\tmaterial.uniforms.tEquirect.value = texture;\n\n\tconst mesh = new Mesh( new BoxBufferGeometry( 5, 5, 5 ), material );\n\n\tscene.add( mesh );\n\n\tconst camera = new CubeCamera( 1, 10, this );\n\tcamera.update( renderer, scene );\n\n\tmesh.geometry.dispose();\n\tmesh.material.dispose();\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1 };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\tthis.unpackAlignment = 1;\n\n\tthis.needsUpdate = true;\n\n}\n\nDataTexture.prototype = Object.create( Texture.prototype );\nDataTexture.prototype.constructor = DataTexture;\n\nDataTexture.prototype.isDataTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / http://clara.io\n */\n\nconst _sphere$1 = new Sphere();\nconst _vector$5 = new Vector3();\n\nfunction Frustum( p0, p1, p2, p3, p4, p5 ) {\n\n\tthis.planes = [\n\n\t\t( p0 !== undefined ) ? p0 : new Plane(),\n\t\t( p1 !== undefined ) ? p1 : new Plane(),\n\t\t( p2 !== undefined ) ? p2 : new Plane(),\n\t\t( p3 !== undefined ) ? p3 : new Plane(),\n\t\t( p4 !== undefined ) ? p4 : new Plane(),\n\t\t( p5 !== undefined ) ? p5 : new Plane()\n\n\t];\n\n}\n\nObject.assign( Frustum.prototype, {\n\n\tset: function ( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromProjectionMatrix: function ( m ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\tintersectsObject: function ( object ) {\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$1 );\n\n\t},\n\n\tintersectsSprite: function ( sprite ) {\n\n\t\t_sphere$1.center.set( 0, 0, 0 );\n\t\t_sphere$1.radius = 0.7071067811865476;\n\t\t_sphere$1.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$1 );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$5.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$5.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$5.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$5 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n} );\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nconst UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() },\n\t\tuv2Transform: { value: new Matrix3() },\n\n\t\talphaMap: { value: null },\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 },\n\t\trefractionRatio: { value: 0.98 },\n\t\tmaxMipLevel: { value: 0 }\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalScale: { value: new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {}\n\t\t} },\n\n\t\tdirectionalLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {}\n\t\t} },\n\n\t\tspotLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotShadowMap: { value: [] },\n\t\tspotShadowMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {}\n\t\t} },\n\n\t\tpointLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLAnimation() {\n\n\tlet context = null;\n\tlet isAnimating = false;\n\tlet animationLoop = null;\n\tlet requestId = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tanimationLoop( time, frame );\n\n\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tcontext.cancelAnimationFrame( requestId );\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLAttributes( gl, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tconst buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst usage = attribute.usage;\n\n\t\tconst buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tlet type = 5126;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = 5126;\n\n\t\t} else if ( array instanceof Float64Array ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' );\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\ttype = 5123;\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = 5122;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = 5125;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = 5124;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = 5120;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = 5121;\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst updateRange = attribute.updateRange;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t} else {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, updateRange.offset, updateRange.count );\n\n\t\t\t} else {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\t}\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// PlaneGeometry\n\nfunction PlaneGeometry( width, height, widthSegments, heightSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PlaneGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\tthis.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) );\n\tthis.mergeVertices();\n\n}\n\nPlaneGeometry.prototype = Object.create( Geometry.prototype );\nPlaneGeometry.prototype.constructor = PlaneGeometry;\n\n// PlaneBufferGeometry\n\nfunction PlaneBufferGeometry( width, height, widthSegments, heightSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PlaneBufferGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\twidth = width || 1;\n\theight = height || 1;\n\n\tconst width_half = width / 2;\n\tconst height_half = height / 2;\n\n\tconst gridX = Math.floor( widthSegments ) || 1;\n\tconst gridY = Math.floor( heightSegments ) || 1;\n\n\tconst gridX1 = gridX + 1;\n\tconst gridY1 = gridY + 1;\n\n\tconst segment_width = width / gridX;\n\tconst segment_height = height / gridY;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\tconst y = iy * segment_height - height_half;\n\n\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\tuvs.push( ix / gridX );\n\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\tconst a = ix + gridX1 * iy;\n\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nPlaneBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry;\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef ALPHATEST\\n\\tif ( diffuseColor.a < ALPHATEST ) discard;\\n#endif\";\n\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\\n\\t#endif\\n#endif\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\nvar bsdfs = \"vec2 integrateSpecularBRDF( const in float dotNV, const in float roughness ) {\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\treturn vec2( -1.04, 1.04 ) * a004 + r.zw;\\n}\\nfloat punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\tif( cutoffDistance > 0.0 ) {\\n\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t}\\n\\treturn distanceFalloff;\\n#else\\n\\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t}\\n\\treturn 1.0;\\n#endif\\n}\\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\\n\\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\\n\\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\\n}\\nvec3 F_Schlick_RoughnessDependent( const in vec3 F0, const in float dotNV, const in float roughness ) {\\n\\tfloat fresnel = exp2( ( -5.55473 * dotNV - 6.98316 ) * dotNV );\\n\\tvec3 Fr = max( vec3( 1.0 - roughness ), F0 ) - F0;\\n\\treturn Fr * fresnel + F0;\\n}\\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\treturn 1.0 / ( gl * gv );\\n}\\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( incidentLight.direction + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, incidentLight.direction ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, dotLH );\\n\\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\tfloat D = D_GGX( alpha, dotNH );\\n\\treturn F * ( G * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\nvec3 BRDF_Specular_GGX_Environment( const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\\n\\treturn specularColor * brdf.x + brdf.y;\\n}\\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\tvec3 F = F_Schlick_RoughnessDependent( specularColor, dotNV, roughness );\\n\\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\\n\\tvec3 FssEss = F * brdf.x + brdf.y;\\n\\tfloat Ess = brdf.x + brdf.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\n}\\nfloat G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\\n\\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\\n\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, dotLH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n}\\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\\n\\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\\n}\\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\\n\\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie(float roughness, float NoH) {\\n\\tfloat invAlpha = 1.0 / roughness;\\n\\tfloat cos2h = NoH * NoH;\\n\\tfloat sin2h = max(1.0 - cos2h, 0.0078125);\\treturn (2.0 + invAlpha) * pow(sin2h, invAlpha * 0.5) / (2.0 * PI);\\n}\\nfloat V_Neubelt(float NoV, float NoL) {\\n\\treturn saturate(1.0 / (4.0 * (NoL + NoV - NoL * NoV)));\\n}\\nvec3 BRDF_Specular_Sheen( const in float roughness, const in vec3 L, const in GeometricContext geometry, vec3 specularColor ) {\\n\\tvec3 N = geometry.normal;\\n\\tvec3 V = geometry.viewDir;\\n\\tvec3 H = normalize( V + L );\\n\\tfloat dotNH = saturate( dot( N, H ) );\\n\\treturn specularColor * D_Charlie( roughness, dotNH ) * V_Neubelt( dot(N, V), dot(N, L) );\\n}\\n#endif\";\n\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vUv );\\n\\t\\tvec2 dSTdy = dFdy( vUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\\n\\t\\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\\n\\t\\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\\n\\t\\tvec3 vN = surf_norm;\\n\\t\\tvec3 R1 = cross( vSigmaY, vN );\\n\\t\\tvec3 R2 = cross( vN, vSigmaX );\\n\\t\\tfloat fDet = dot( vSigmaX, R1 );\\n\\t\\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#ifdef USE_COLOR\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#ifdef USE_COLOR\\n\\tvColor.xyz = color.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate(a) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement(a) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract(sin(sn) * c);\\n}\\n#ifdef HIGH_PRECISION\\n\\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\\tfloat max3( vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\n\\tfloat precisionSafeLength( vec3 v ) {\\n\\t\\tfloat maxComponent = max3( abs( v ) );\\n\\t\\treturn length( v / maxComponent ) * maxComponent;\\n\\t}\\n#endif\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\nstruct GeometricContext {\\n\\tvec3 position;\\n\\tvec3 normal;\\n\\tvec3 viewDir;\\n#ifdef CLEARCOAT\\n\\tvec3 clearcoatNormal;\\n#endif\\n};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\tfloat distance = dot( planeNormal, point - pointOnPlane );\\n\\treturn - distance * planeNormal + point;\\n}\\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn sign( dot( point - pointOnPlane, planeNormal ) );\\n}\\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat linearToRelativeLuminance( const in vec3 color ) {\\n\\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\\n\\treturn dot( weights, color.rgb );\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n return m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\treturn vec2( u, v );\\n}\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n#define cubeUV_maxMipLevel 8.0\\n#define cubeUV_minMipLevel 4.0\\n#define cubeUV_maxTileSize 256.0\\n#define cubeUV_minTileSize 16.0\\nfloat getFace(vec3 direction) {\\n vec3 absDirection = abs(direction);\\n float face = -1.0;\\n if (absDirection.x > absDirection.z) {\\n if (absDirection.x > absDirection.y)\\n face = direction.x > 0.0 ? 0.0 : 3.0;\\n else\\n face = direction.y > 0.0 ? 1.0 : 4.0;\\n } else {\\n if (absDirection.z > absDirection.y)\\n face = direction.z > 0.0 ? 2.0 : 5.0;\\n else\\n face = direction.y > 0.0 ? 1.0 : 4.0;\\n }\\n return face;\\n}\\nvec2 getUV(vec3 direction, float face) {\\n vec2 uv;\\n if (face == 0.0) {\\n uv = vec2(direction.z, direction.y) / abs(direction.x); } else if (face == 1.0) {\\n uv = vec2(-direction.x, -direction.z) / abs(direction.y); } else if (face == 2.0) {\\n uv = vec2(-direction.x, direction.y) / abs(direction.z); } else if (face == 3.0) {\\n uv = vec2(-direction.z, direction.y) / abs(direction.x); } else if (face == 4.0) {\\n uv = vec2(-direction.x, direction.z) / abs(direction.y); } else {\\n uv = vec2(direction.x, direction.y) / abs(direction.z); }\\n return 0.5 * (uv + 1.0);\\n}\\nvec3 bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {\\n float face = getFace(direction);\\n float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);\\n mipInt = max(mipInt, cubeUV_minMipLevel);\\n float faceSize = exp2(mipInt);\\n float texelSize = 1.0 / (3.0 * cubeUV_maxTileSize);\\n vec2 uv = getUV(direction, face) * (faceSize - 1.0);\\n vec2 f = fract(uv);\\n uv += 0.5 - f;\\n if (face > 2.0) {\\n uv.y += faceSize;\\n face -= 3.0;\\n }\\n uv.x += face * faceSize;\\n if(mipInt < cubeUV_maxMipLevel){\\n uv.y += 2.0 * cubeUV_maxTileSize;\\n }\\n uv.y += filterInt * 2.0 * cubeUV_minTileSize;\\n uv.x += 3.0 * max(0.0, cubeUV_maxTileSize - 2.0 * faceSize);\\n uv *= texelSize;\\n vec3 tl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.x += texelSize;\\n vec3 tr = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.y += texelSize;\\n vec3 br = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n uv.x -= texelSize;\\n vec3 bl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\\n vec3 tm = mix(tl, tr, f.x);\\n vec3 bm = mix(bl, br, f.x);\\n return mix(tm, bm, f.y);\\n}\\n#define r0 1.0\\n#define v0 0.339\\n#define m0 -2.0\\n#define r1 0.8\\n#define v1 0.276\\n#define m1 -1.0\\n#define r4 0.4\\n#define v4 0.046\\n#define m4 2.0\\n#define r5 0.305\\n#define v5 0.016\\n#define m5 3.0\\n#define r6 0.21\\n#define v6 0.0038\\n#define m6 4.0\\nfloat roughnessToMip(float roughness) {\\n float mip = 0.0;\\n if (roughness >= r1) {\\n mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;\\n } else if (roughness >= r4) {\\n mip = (r1 - roughness) * (m4 - m1) / (r1 - r4) + m1;\\n } else if (roughness >= r5) {\\n mip = (r4 - roughness) * (m5 - m4) / (r4 - r5) + m4;\\n } else if (roughness >= r6) {\\n mip = (r5 - roughness) * (m6 - m5) / (r5 - r6) + m5;\\n } else {\\n mip = -2.0 * log2(1.16 * roughness); }\\n return mip;\\n}\\nvec4 textureCubeUV(sampler2D envMap, vec3 sampleDir, float roughness) {\\n float mip = clamp(roughnessToMip(roughness), m0, cubeUV_maxMipLevel);\\n float mipF = fract(mip);\\n float mipInt = floor(mip);\\n vec3 color0 = bilinearCubeUV(envMap, sampleDir, mipInt);\\n if (mipF == 0.0) {\\n return vec4(color0, 1.0);\\n } else {\\n vec3 color1 = bilinearCubeUV(envMap, sampleDir, mipInt + 1.0);\\n return vec4(mix(color0, color1, mipF), 1.0);\\n }\\n}\\n#endif\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_INSTANCING\\n\\tmat3 m = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\\n\\ttransformedNormal = m * transformedNormal;\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar encodings_pars_fragment = \"\\nvec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\\n}\\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\\n}\\nvec4 sRGBToLinear( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\\treturn 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 );\\n}\\nvec4 RGBEToLinear( in vec4 value ) {\\n\\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\\n}\\nvec4 LinearToRGBE( in vec4 value ) {\\n\\tfloat maxComponent = max( max( value.r, value.g ), value.b );\\n\\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\\n\\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\\n}\\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\\n}\\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\\n\\tM = ceil( M * 255.0 ) / 255.0;\\n\\treturn vec4( value.rgb / ( M * maxRange ), M );\\n}\\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\\n}\\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat D = max( maxRange / maxRGB, 1.0 );\\n\\tD = clamp( floor( D ) / 255.0, 0.0, 1.0 );\\n\\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\\n}\\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\\nvec4 LinearToLogLuv( in vec4 value ) {\\n\\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\\n\\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\\n\\tvec4 vResult;\\n\\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\\n\\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\\n\\tvResult.w = fract( Le );\\n\\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\\n\\treturn vResult;\\n}\\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\\nvec4 LogLuvToLinear( in vec4 value ) {\\n\\tfloat Le = value.z * 255.0 + value.w;\\n\\tvec3 Xp_Y_XYZp;\\n\\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\\n\\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\\n\\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\\n\\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\\n\\treturn vec4( max( vRGB, 0.0 ), 1.0 );\\n}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\t\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\\n\\t#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\treflectVec = normalize( reflectVec );\\n\\t\\tvec2 sampleUV = equirectUv( reflectVec );\\n\\t\\tvec4 envColor = texture2D( envMap, sampleUV );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\t#ifndef ENVMAP_TYPE_CUBE_UV\\n\\t\\tenvColor = envMapTexelToLinear( envColor );\\n\\t#endif\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\";\n\nvar envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float envMapIntensity;\\n\\tuniform float flipEnvMap;\\n\\tuniform int maxMipLevel;\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\t\\n#endif\";\n\nvar envmap_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float reflectivity;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\";\n\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\t\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n#endif\";\n\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvWorldPosition = worldPosition.xyz;\\n\\t#else\\n\\t\\tvec3 cameraToVertex;\\n\\t\\tif ( isOrthographic ) { \\n\\t\\t\\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvReflect = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tfogDepth = -mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float fogDepth;\\n#endif\";\n\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\n\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float fogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\";\n\nvar gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\tfloat dotNL = dot( normal, lightDirection );\\n\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t#ifdef USE_GRADIENTMAP\\n\\t\\treturn texture2D( gradientMap, coord ).rgb;\\n\\t#else\\n\\t\\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\\n\\t#endif\\n}\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\treflectedLight.indirectDiffuse += PI * lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_vertex = \"vec3 diffuse = vec3( 1.0 );\\nGeometricContext geometry;\\ngeometry.position = mvPosition.xyz;\\ngeometry.normal = normalize( transformedNormal );\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );\\nGeometricContext backGeometry;\\nbackGeometry.position = geometry.position;\\nbackGeometry.normal = -geometry.normal;\\nbackGeometry.viewDir = geometry.viewDir;\\nvLightFront = vec3( 0.0 );\\nvIndirectFront = vec3( 0.0 );\\n#ifdef DOUBLE_SIDED\\n\\tvLightBack = vec3( 0.0 );\\n\\tvIndirectBack = vec3( 0.0 );\\n#endif\\nIncidentLight directLight;\\nfloat dotNL;\\nvec3 directLightColor_Diffuse;\\nvIndirectFront += getAmbientLightIrradiance( ambientLightColor );\\nvIndirectFront += getLightProbeIrradiance( lightProbe, geometry );\\n#ifdef DOUBLE_SIDED\\n\\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\\n\\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry );\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_DIR_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\";\n\nvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\nuniform vec3 lightProbe[ 9 ];\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) {\\n\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treturn irradiance;\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tdirectLight.color = directionalLight.color;\\n\\t\\tdirectLight.direction = directionalLight.direction;\\n\\t\\tdirectLight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tvec3 lVector = pointLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tdirectLight.color = pointLight.color;\\n\\t\\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tvec3 lVector = spotLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tfloat angleCos = dot( directLight.direction, spotLight.direction );\\n\\t\\tif ( angleCos > spotLight.coneCos ) {\\n\\t\\t\\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\t\\tdirectLight.color = spotLight.color;\\n\\t\\t\\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tdirectLight.visible = true;\\n\\t\\t} else {\\n\\t\\t\\tdirectLight.color = vec3( 0.0 );\\n\\t\\t\\tdirectLight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\\n\\t\\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tirradiance *= PI;\\n\\t\\t#endif\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\nvar envmap_physical_pars_fragment = \"#if defined( USE_ENVMAP )\\n\\t#ifdef ENVMAP_MODE_REFRACTION\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n\\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\\n\\t\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\\t\\t#else\\n\\t\\t\\tvec4 envMapColor = vec4( 0.0 );\\n\\t\\t#endif\\n\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t}\\n\\tfloat getSpecularMIPLevel( const in float roughness, const in int maxMIPLevel ) {\\n\\t\\tfloat maxMIPLevelScalar = float( maxMIPLevel );\\n\\t\\tfloat sigma = PI * roughness * roughness / ( 1.0 + roughness );\\n\\t\\tfloat desiredMIPLevel = maxMIPLevelScalar + log2( sigma );\\n\\t\\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\\n\\t}\\n\\tvec3 getLightProbeIndirectRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in int maxMIPLevel ) {\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t vec3 reflectVec = reflect( -viewDir, normal );\\n\\t\\t reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t#else\\n\\t\\t vec3 reflectVec = refract( -viewDir, normal, refractionRatio );\\n\\t\\t#endif\\n\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\tfloat specularMIPLevel = getSpecularMIPLevel( roughness, maxMIPLevel );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\\t\\t#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\t\\tvec2 sampleUV = equirectUv( reflectVec );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#endif\\n\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t}\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\nstruct ToonMaterial {\\n\\tvec3\\tdiffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Toon\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\nstruct BlinnPhongMaterial {\\n\\tvec3\\tdiffuseColor;\\n\\tvec3\\tspecularColor;\\n\\tfloat\\tspecularShininess;\\n\\tfloat\\tspecularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.specularRoughness = max( roughnessFactor, 0.0525 );material.specularRoughness += geometryRoughness;\\nmaterial.specularRoughness = min( material.specularRoughness, 1.0 );\\n#ifdef REFLECTIVITY\\n\\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\\n#endif\\n#ifdef CLEARCOAT\\n\\tmaterial.clearcoat = clearcoat;\\n\\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\\t#ifdef USE_CLEARCOATMAP\\n\\t\\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\t\\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\\n\\t#endif\\n\\tmaterial.clearcoat = saturate( material.clearcoat );\\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\\tmaterial.clearcoatRoughness += geometryRoughness;\\n\\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_SHEEN\\n\\tmaterial.sheenColor = sheen;\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3\\tdiffuseColor;\\n\\tfloat\\tspecularRoughness;\\n\\tvec3\\tspecularColor;\\n#ifdef CLEARCOAT\\n\\tfloat clearcoat;\\n\\tfloat clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\n\\tvec3 sheenColor;\\n#endif\\n};\\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\\nfloat clearcoatDHRApprox( const in float roughness, const in float dotNL ) {\\n\\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometry.normal;\\n\\t\\tvec3 viewDir = geometry.viewDir;\\n\\t\\tvec3 position = geometry.position;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.specularRoughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3( 0, 1, 0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\t#ifdef CLEARCOAT\\n\\t\\tfloat ccDotNL = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = ccDotNL * directLight.color;\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tccIrradiance *= PI;\\n\\t\\t#endif\\n\\t\\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\\n\\t\\treflectedLight.directSpecular += ccIrradiance * material.clearcoat * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\\n\\t#else\\n\\t\\tfloat clearcoatDHR = 0.0;\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_Sheen(\\n\\t\\t\\tmaterial.specularRoughness,\\n\\t\\t\\tdirectLight.direction,\\n\\t\\t\\tgeometry,\\n\\t\\t\\tmaterial.sheenColor\\n\\t\\t);\\n\\t#else\\n\\t\\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.normal, material.specularColor, material.specularRoughness);\\n\\t#endif\\n\\treflectedLight.directDiffuse += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\nvoid 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) {\\n\\t#ifdef CLEARCOAT\\n\\t\\tfloat ccDotNV = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular += clearcoatRadiance * material.clearcoat * BRDF_Specular_GGX_Environment( geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\\n\\t\\tfloat ccDotNL = ccDotNV;\\n\\t\\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\\n\\t#else\\n\\t\\tfloat clearcoatDHR = 0.0;\\n\\t#endif\\n\\tfloat clearcoatInv = 1.0 - clearcoatDHR;\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\\n\\treflectedLight.indirectSpecular += clearcoatInv * radiance * singleScattering;\\n\\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\n\nvar lights_fragment_begin = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\n#ifdef CLEARCOAT\\n\\tgeometry.clearcoatNormal = clearcoatNormal;\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\\t\\tpointLightShadow = pointLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\tspotLightShadow = spotLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\\t\\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 iblIrradiance = vec3( 0.0 );\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\tirradiance += getLightProbeIrradiance( lightProbe, geometry );\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\t\\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tlightMapIrradiance *= PI;\\n\\t\\t#endif\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tiblIrradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\tradiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.normal, material.specularRoughness, maxMipLevel );\\n\\t#ifdef CLEARCOAT\\n\\t\\tclearcoatRadiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness, maxMipLevel );\\n\\t#endif\\n#endif\";\n\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\\n#endif\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t\\tvarying float vIsPerspective;\\n\\t#else\\n\\t\\tuniform float logDepthBufFC;\\n\\t#endif\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t\\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n\\t#else\\n\\t\\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\\n\\t\\t\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\\t\\t\\tgl_Position.z *= gl_Position.w;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 texelColor = texture2D( map, vUv );\\n\\ttexelColor = mapTexelToLinear( texelColor );\\n\\tdiffuseColor *= texelColor;\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\nvar map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n#endif\\n#ifdef USE_MAP\\n\\tvec4 mapTexel = texture2D( map, uv );\\n\\tdiffuseColor *= mapTexelToLinear( mapTexel );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\";\n\nvar map_particle_pars_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tuniform mat3 uvTransform;\\n#endif\\n#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal *= morphTargetBaseInfluence;\\n\\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\tuniform float morphTargetBaseInfluence;\\n\\t#ifndef USE_MORPHNORMALS\\n\\tuniform float morphTargetInfluences[ 8 ];\\n\\t#else\\n\\tuniform float morphTargetInfluences[ 4 ];\\n\\t#endif\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\\t#ifndef USE_MORPHNORMALS\\n\\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\\t#endif\\n#endif\";\n\nvar normal_fragment_begin = \"#ifdef FLAT_SHADED\\n\\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\\n\\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t#endif\\n\\t#ifdef USE_TANGENT\\n\\t\\tvec3 tangent = normalize( vTangent );\\n\\t\\tvec3 bitangent = normalize( vBitangent );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\ttangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t\\tbitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t#endif\\n\\t\\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\\n\\t\\t\\tmat3 vTBN = mat3( tangent, bitangent, normal );\\n\\t\\t#endif\\n\\t#endif\\n#endif\\nvec3 geometryNormal = normal;\";\n\nvar normal_fragment_maps = \"#ifdef OBJECTSPACE_NORMALMAP\\n\\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t#ifdef FLIP_SIDED\\n\\t\\tnormal = - normal;\\n\\t#endif\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t#endif\\n\\tnormal = normalize( normalMatrix * normal );\\n#elif defined( TANGENTSPACE_NORMALMAP )\\n\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tnormal = normalize( vTBN * mapN );\\n\\t#else\\n\\t\\tnormal = perturbNormal2Arb( -vViewPosition, normal, mapN );\\n\\t#endif\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\\n#endif\";\n\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n#endif\\n#ifdef OBJECTSPACE_NORMALMAP\\n\\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\\n\\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN ) {\\n\\t\\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\\n\\t\\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\\n\\t\\tvec2 st0 = dFdx( vUv.st );\\n\\t\\tvec2 st1 = dFdy( vUv.st );\\n\\t\\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\\n\\t\\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\\n\\t\\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\\n\\t\\tvec3 N = normalize( surf_norm );\\n\\t\\tmat3 tsn = mat3( S, T, N );\\n\\t\\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\treturn normalize( tsn * mapN );\\n\\t}\\n#endif\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef CLEARCOAT\\n\\tvec3 clearcoatNormal = geometryNormal;\\n#endif\";\n\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\\n\\t#else\\n\\t\\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN );\\n\\t#endif\\n#endif\";\n\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\";\n\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\\tr.yzw -= r.xyz * ShiftRight8;\\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors );\\n}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ));\\n\\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w);\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\\n\\treturn linearClipZ * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\\n}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\nvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_INSTANCING\\n\\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\n\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\nvar dithering_pars_fragment = \"#ifdef DITHERING\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\nvar shadowmap_pars_fragment = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\\t\\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\\t}\\n\\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\\t\\tfloat occlusion = 1.0;\\n\\t\\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\\t\\tfloat hard_shadow = step( compare , distribution.x );\\n\\t\\tif (hard_shadow != 1.0 ) {\\n\\t\\t\\tfloat distance = compare - distribution.x ;\\n\\t\\t\\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\\t\\t\\tfloat softness_probability = variance / (variance + distance * distance );\\t\\t\\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\\t\\t\\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\\t\\t}\\n\\t\\treturn occlusion;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\\n\\t\\tbool inFrustum = all( inFrustumVec );\\n\\t\\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\\n\\t\\tbool frustumTest = all( frustumTestVec );\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx2 = dx0 / 2.0;\\n\\t\\t\\tfloat dy2 = dy0 / 2.0;\\n\\t\\t\\tfloat dx3 = dx1 / 2.0;\\n\\t\\t\\tfloat dy3 = dy1 / 2.0;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 17.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx = texelSize.x;\\n\\t\\t\\tfloat dy = texelSize.y;\\n\\t\\t\\tvec2 uv = shadowCoord.xy;\\n\\t\\t\\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\\t\\t\\tuv -= f * texelSize;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t f.y )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\tdp += shadowBias;\\n\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\treturn (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar shadowmap_pars_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n#endif\";\n\nvar shadowmap_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\tvec4 shadowWorldPosition;\\n\\t#endif\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\";\n\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tspotLight = spotLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tpointLight = pointLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\";\n\nvar skinbase_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\n\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\t#ifdef BONE_TEXTURE\\n\\t\\tuniform highp sampler2D boneTexture;\\n\\t\\tuniform int boneTextureSize;\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tfloat j = i * 4.0;\\n\\t\\t\\tfloat x = mod( j, float( boneTextureSize ) );\\n\\t\\t\\tfloat y = floor( j / float( boneTextureSize ) );\\n\\t\\t\\tfloat dx = 1.0 / float( boneTextureSize );\\n\\t\\t\\tfloat dy = 1.0 / float( boneTextureSize );\\n\\t\\t\\ty = dy * ( y + 0.5 );\\n\\t\\t\\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\n\\t\\t\\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\n\\t\\t\\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\n\\t\\t\\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\n\\t\\t\\tmat4 bone = mat4( v1, v2, v3, v4 );\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#else\\n\\t\\tuniform mat4 boneMatrices[ MAX_BONES ];\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tmat4 bone = boneMatrices[ int(i) ];\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar skinning_vertex = \"#ifdef USE_SKINNING\\n\\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\\tvec4 skinned = vec4( 0.0 );\\n\\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\";\n\nvar skinnormal_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 skinMatrix = mat4( 0.0 );\\n\\tskinMatrix += skinWeight.x * boneMatX;\\n\\tskinMatrix += skinWeight.y * boneMatY;\\n\\tskinMatrix += skinWeight.z * boneMatZ;\\n\\tskinMatrix += skinWeight.w * boneMatW;\\n\\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\\t#ifdef USE_TANGENT\\n\\t\\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#endif\\n#endif\";\n\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\\tvec4 texelSpecular = texture2D( specularMap, vUv );\\n\\tspecularStrength = texelSpecular.r;\\n#else\\n\\tspecularStrength = 1.0;\\n#endif\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n#define saturate(a) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn toneMappingExposure * color;\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 RRTAndODTFit( vec3 v ) {\\n\\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tconst mat3 ACESInputMat = mat3(\\n\\t\\tvec3( 0.59719, 0.07600, 0.02840 ),\\t\\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\\t\\tvec3( 0.04823, 0.01566, 0.83777 )\\n\\t);\\n\\tconst mat3 ACESOutputMat = mat3(\\n\\t\\tvec3( 1.60475, -0.10208, -0.00327 ),\\t\\tvec3( -0.53108, 1.10813, -0.07276 ),\\n\\t\\tvec3( -0.07367, -0.00605, 1.07602 )\\n\\t);\\n\\tcolor *= toneMappingExposure / 0.6;\\n\\tcolor = ACESInputMat * color;\\n\\tcolor = RRTAndODTFit( color );\\n\\tcolor = ACESOutputMat * color;\\n\\treturn saturate( color );\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\n\nvar uv_pars_fragment = \"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\\n\\tvarying vec2 vUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#ifdef USE_UV\\n\\t#ifdef UVS_VERTEX_ONLY\\n\\t\\tvec2 vUv;\\n\\t#else\\n\\t\\tvarying vec2 vUv;\\n\\t#endif\\n\\tuniform mat3 uvTransform;\\n#endif\";\n\nvar uv_vertex = \"#ifdef USE_UV\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\n\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\n\nvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tattribute vec2 uv2;\\n\\tvarying vec2 vUv2;\\n\\tuniform mat3 uv2Transform;\\n#endif\";\n\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\\n\\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\\t#ifdef USE_INSTANCING\\n\\t\\tworldPosition = instanceMatrix * worldPosition;\\n\\t#endif\\n\\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\n\nvar background_frag = \"uniform sampler2D t2D;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tvec4 texColor = texture2D( t2D, vUv );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include \\n\\t#include \\n}\";\n\nvar background_vert = \"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\";\n\nvar cube_frag = \"#include \\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 vReflect = vWorldDirection;\\n\\t#include \\n\\tgl_FragColor = envColor;\\n\\tgl_FragColor.a *= opacity;\\n\\t#include \\n\\t#include \\n}\";\n\nvar cube_vert = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nvar depth_frag = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\\t#endif\\n}\";\n\nvar depth_vert = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvHighPrecisionZW = gl_Position.zw;\\n}\";\n\nvar distanceRGBA_frag = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main () {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\n\nvar distanceRGBA_vert = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvWorldPosition = worldPosition.xyz;\\n}\";\n\nvar equirect_frag = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV = equirectUv( direction );\\n\\tvec4 texColor = texture2D( tEquirect, sampleUV );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include \\n\\t#include \\n}\";\n\nvar equirect_vert = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\n\nvar linedashed_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar linedashed_vert = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvLineDistance = scale * lineDistance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshbasic_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\n\\t\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\t\\treflectedLight.indirectDiffuse += lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include \\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshbasic_vert = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef USE_ENVMAP\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshlambert_frag = \"uniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vIndirectFront;\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\\n\\t#else\\n\\t\\treflectedLight.directDiffuse = vLightFront;\\n\\t#endif\\n\\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshlambert_vert = \"#define LAMBERT\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshmatcap_frag = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 viewDir = normalize( vViewPosition );\\n\\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\\tvec3 y = cross( viewDir, x );\\n\\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\\t#ifdef USE_MATCAP\\n\\t\\tvec4 matcapColor = texture2D( matcap, uv );\\n\\t\\tmatcapColor = matcapTexelToLinear( matcapColor );\\n\\t#else\\n\\t\\tvec4 matcapColor = vec4( 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshmatcap_vert = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifndef FLAT_SHADED\\n\\t\\tvNormal = normalize( transformedNormal );\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n}\";\n\nvar meshtoon_frag = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshtoon_vert = \"#define TOON\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshphong_frag = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include \\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshphong_vert = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshphysical_frag = \"#define STANDARD\\n#ifdef PHYSICAL\\n\\t#define REFLECTIVITY\\n\\t#define CLEARCOAT\\n\\t#define TRANSPARENCY\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef TRANSPARENCY\\n\\tuniform float transparency;\\n#endif\\n#ifdef REFLECTIVITY\\n\\tuniform float reflectivity;\\n#endif\\n#ifdef CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\n\\tuniform vec3 sheen;\\n#endif\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#ifdef TRANSPARENCY\\n\\t\\tdiffuseColor.a *= saturate( 1. - transparency + linearToRelativeLuminance( reflectedLight.directSpecular + reflectedLight.indirectSpecular ) );\\n\\t#endif\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshphysical_vert = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar normal_frag = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n}\";\n\nvar normal_vert = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n\nvar points_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar points_vert = \"uniform float size;\\nuniform float scale;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_PointSize = size;\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar shadow_frag = \"uniform vec3 color;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar shadow_vert = \"#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar sprite_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar sprite_vert = \"uniform float rotation;\\nuniform vec2 center;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\tvec2 scale;\\n\\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\\t#ifndef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) scale *= - mvPosition.z;\\n\\t#endif\\n\\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\\tvec2 rotatedPosition;\\n\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tencodings_fragment: encodings_fragment,\n\tencodings_pars_fragment: encodings_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_common_pars_fragment: envmap_common_pars_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_vertex: lights_lambert_vertex,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_toon_fragment: lights_toon_fragment,\n\tlights_toon_pars_fragment: lights_toon_pars_fragment,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tclearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin,\n\tclearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,\n\tclearcoat_pars_fragment: clearcoat_pars_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tuv2_pars_fragment: uv2_pars_fragment,\n\tuv2_pars_vertex: uv2_pars_vertex,\n\tuv2_vertex: uv2_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_frag: background_frag,\n\tbackground_vert: background_vert,\n\tcube_frag: cube_frag,\n\tcube_vert: cube_vert,\n\tdepth_frag: depth_frag,\n\tdepth_vert: depth_vert,\n\tdistanceRGBA_frag: distanceRGBA_frag,\n\tdistanceRGBA_vert: distanceRGBA_vert,\n\tequirect_frag: equirect_frag,\n\tequirect_vert: equirect_vert,\n\tlinedashed_frag: linedashed_frag,\n\tlinedashed_vert: linedashed_vert,\n\tmeshbasic_frag: meshbasic_frag,\n\tmeshbasic_vert: meshbasic_vert,\n\tmeshlambert_frag: meshlambert_frag,\n\tmeshlambert_vert: meshlambert_vert,\n\tmeshmatcap_frag: meshmatcap_frag,\n\tmeshmatcap_vert: meshmatcap_vert,\n\tmeshtoon_frag: meshtoon_frag,\n\tmeshtoon_vert: meshtoon_vert,\n\tmeshphong_frag: meshphong_frag,\n\tmeshphong_vert: meshphong_vert,\n\tmeshphysical_frag: meshphysical_frag,\n\tmeshphysical_vert: meshphysical_vert,\n\tnormal_frag: normal_frag,\n\tnormal_vert: normal_vert,\n\tpoints_frag: points_frag,\n\tpoints_vert: points_vert,\n\tshadow_frag: shadow_frag,\n\tshadow_vert: shadow_vert,\n\tsprite_frag: sprite_frag,\n\tsprite_vert: sprite_vert\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n */\n\nconst ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 1.0 },\n\t\t\t\tmetalness: { value: 0.0 },\n\t\t\t\tenvMapIntensity: { value: 1 } // temporary\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\ttoon: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.normal_vert,\n\t\tfragmentShader: ShaderChunk.normal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\tbackground: {\n\n\t\tuniforms: {\n\t\t\tuvTransform: { value: new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tcube: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.envmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearcoat: { value: 0 },\n\t\t\tclearcoatMap: { value: null },\n\t\t\tclearcoatRoughness: { value: 0 },\n\t\t\tclearcoatRoughnessMap: { value: null },\n\t\t\tclearcoatNormalScale: { value: new Vector2( 1, 1 ) },\n\t\t\tclearcoatNormalMap: { value: null },\n\t\t\tsheen: { value: new Color( 0x000000 ) },\n\t\t\ttransparency: { value: 0 },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLBackground( renderer, state, objects, premultipliedAlpha ) {\n\n\tconst clearColor = new Color( 0x000000 );\n\tlet clearAlpha = 0;\n\n\tlet planeMesh;\n\tlet boxMesh;\n\n\tlet currentBackground = null;\n\tlet currentBackgroundVersion = 0;\n\tlet currentTonemapping = null;\n\n\tfunction render( renderList, scene, camera, forceClear ) {\n\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\t// Ignore background in AR\n\t\t// TODO: Reconsider this.\n\n\t\tconst xr = renderer.xr;\n\t\tconst session = xr.getSession && xr.getSession();\n\n\t\tif ( session && session.environmentBlendMode === 'additive' ) {\n\n\t\t\tbackground = null;\n\n\t\t}\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && ( background.isCubeTexture || background.isWebGLCubeRenderTarget || background.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxBufferGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.cube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.cube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.cube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( boxMesh.material, 'envMap', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.envMap.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\tconst texture = background.isWebGLCubeRenderTarget ? background.texture : background;\n\n\t\t\tboxMesh.material.uniforms.envMap.value = texture;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = texture.isCubeTexture ? - 1 : 1;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== texture.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = texture.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneBufferGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.deleteAttribute( 'normal' );\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tstate.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha !== undefined ? alpha : 1;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n * @author Takahiro / https://github.com/takahirox\n */\n\nfunction WebGLBindingStates( gl, extensions, attributes, capabilities ) {\n\n\tconst maxVertexAttributes = gl.getParameter( 34921 );\n\n\tconst extension = capabilities.isWebGL2 ? null : extensions.get( 'OES_vertex_array_object' );\n\tconst vaoAvailable = capabilities.isWebGL2 || extension !== null;\n\n\tconst bindingStates = {};\n\n\tconst defaultState = createBindingState( null );\n\tlet currentState = defaultState;\n\n\tfunction setup( object, material, program, geometry, index ) {\n\n\t\tlet updateBuffers = false;\n\n\t\tif ( vaoAvailable ) {\n\n\t\t\tconst state = getBindingState( geometry, program, material );\n\n\t\t\tif ( currentState !== state ) {\n\n\t\t\t\tcurrentState = state;\n\t\t\t\tbindVertexArrayObject( currentState.object );\n\n\t\t\t}\n\n\t\t\tupdateBuffers = needsUpdate( geometry );\n\n\t\t\tif ( updateBuffers ) saveCache( geometry );\n\n\t\t} else {\n\n\t\t\tconst wireframe = ( material.wireframe === true );\n\n\t\t\tif ( currentState.geometry !== geometry.id ||\n\t\t\t\tcurrentState.program !== program.id ||\n\t\t\t\tcurrentState.wireframe !== wireframe ) {\n\n\t\t\t\tcurrentState.geometry = geometry.id;\n\t\t\t\tcurrentState.program = program.id;\n\t\t\t\tcurrentState.wireframe = wireframe;\n\n\t\t\t\tupdateBuffers = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh === true ) {\n\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, 34963 );\n\n\t\t}\n\n\t\tif ( updateBuffers ) {\n\n\t\t\tsetupVertexAttributes( object, material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tgl.bindBuffer( 34963, attributes.get( index ).buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createVertexArrayObject() {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.createVertexArray();\n\n\t\treturn extension.createVertexArrayOES();\n\n\t}\n\n\tfunction bindVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.bindVertexArray( vao );\n\n\t\treturn extension.bindVertexArrayOES( vao );\n\n\t}\n\n\tfunction deleteVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.deleteVertexArray( vao );\n\n\t\treturn extension.deleteVertexArrayOES( vao );\n\n\t}\n\n\tfunction getBindingState( geometry, program, material ) {\n\n\t\tconst wireframe = ( material.wireframe === true );\n\n\t\tlet programMap = bindingStates[ geometry.id ];\n\n\t\tif ( programMap === undefined ) {\n\n\t\t\tprogramMap = {};\n\t\t\tbindingStates[ geometry.id ] = programMap;\n\n\t\t}\n\n\t\tlet stateMap = programMap[ program.id ];\n\n\t\tif ( stateMap === undefined ) {\n\n\t\t\tstateMap = {};\n\t\t\tprogramMap[ program.id ] = stateMap;\n\n\t\t}\n\n\t\tlet state = stateMap[ wireframe ];\n\n\t\tif ( state === undefined ) {\n\n\t\t\tstate = createBindingState( createVertexArrayObject() );\n\t\t\tstateMap[ wireframe ] = state;\n\n\t\t}\n\n\t\treturn state;\n\n\t}\n\n\tfunction createBindingState( vao ) {\n\n\t\tconst newAttributes = [];\n\t\tconst enabledAttributes = [];\n\t\tconst attributeDivisors = [];\n\n\t\tfor ( let i = 0; i < maxVertexAttributes; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\t\t\tenabledAttributes[ i ] = 0;\n\t\t\tattributeDivisors[ i ] = 0;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\t// for backward compatibility on non-VAO support browser\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false,\n\n\t\t\tnewAttributes: newAttributes,\n\t\t\tenabledAttributes: enabledAttributes,\n\t\t\tattributeDivisors: attributeDivisors,\n\t\t\tobject: vao,\n\t\t\tattributes: {}\n\n\t\t};\n\n\t}\n\n\tfunction needsUpdate( geometry ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tif ( Object.keys( cachedAttributes ).length !== Object.keys( geometryAttributes ).length ) return true;\n\n\t\tfor ( const key in geometryAttributes ) {\n\n\t\t\tconst cachedAttribute = cachedAttributes[ key ];\n\t\t\tconst geometryAttribute = geometryAttributes[ key ];\n\n\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\n\n\t\t\tif ( cachedAttribute.data !== geometryAttribute.data ) return true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction saveCache( geometry ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tconst data = {};\n\t\t\tdata.attribute = attribute;\n\n\t\t\tif ( attribute.data ) {\n\n\t\t\t\tdata.data = attribute.data;\n\n\t\t\t}\n\n\t\t\tcache[ key ] = data;\n\n\t\t}\n\n\t\tcurrentState.attributes = cache;\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\n\t\tfor ( let i = 0, il = newAttributes.length; i < il; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\t\tconst attributeDivisors = currentState.attributeDivisors;\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tconst extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\n\t\tfor ( let i = 0, il = enabledAttributes.length; i < il; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction vertexAttribPointer( index, size, type, normalized, stride, offset ) {\n\n\t\tif ( capabilities.isWebGL2 === true && ( type === 5124 || type === 5125 ) ) {\n\n\t\t\tgl.vertexAttribIPointer( index, size, type, normalized, stride, offset );\n\n\t\t} else {\n\n\t\t\tgl.vertexAttribPointer( index, size, type, normalized, stride, offset );\n\n\t\t}\n\n\t}\n\n\tfunction setupVertexAttributes( object, material, program, geometry ) {\n\n\t\tif ( capabilities.isWebGL2 === false && ( object.isInstancedMesh || geometry.isInstancedBufferGeometry ) ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) return;\n\n\t\t}\n\n\t\tinitAttributes();\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tconst materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute >= 0 ) {\n\n\t\t\t\tconst geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tconst normalized = geometryAttribute.normalized;\n\t\t\t\t\tconst size = geometryAttribute.itemSize;\n\n\t\t\t\t\tconst attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\t\t\t\t\tconst bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst data = geometryAttribute.data;\n\t\t\t\t\t\tconst stride = data.stride;\n\t\t\t\t\t\tconst offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data && data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute, data.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tenableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\tvertexAttribPointer( programAttribute, size, type, normalized, stride * bytesPerElement, offset * bytesPerElement );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tenableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\tvertexAttribPointer( programAttribute, size, type, normalized, 0, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( name === 'instanceMatrix' ) {\n\n\t\t\t\t\tconst attribute = attributes.get( object.instanceMatrix );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 0, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 1, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 2, 1 );\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 3, 1 );\n\n\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 0, 4, type, false, 64, 0 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 1, 4, type, false, 64, 16 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 2, 4, type, false, 64, 32 );\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 3, 4, type, false, 64, 48 );\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tconst value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tgl.vertexAttrib2fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tgl.vertexAttrib3fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tgl.vertexAttrib4fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tgl.vertexAttrib1fv( programAttribute, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tdisableUnusedAttributes();\n\n\t}\n\n\tfunction dispose() {\n\n\t\treset();\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tfor ( const programId in programMap ) {\n\n\t\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t\t}\n\n\t\t\t\tdelete programMap[ programId ];\n\n\t\t\t}\n\n\t\t\tdelete bindingStates[ geometryId ];\n\n\t\t}\n\n\t}\n\n\tfunction releaseStatesOfGeometry( geometry ) {\n\n\t\tif ( bindingStates[ geometry.id ] === undefined ) return;\n\n\t\tconst programMap = bindingStates[ geometry.id ];\n\n\t\tfor ( const programId in programMap ) {\n\n\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ programId ];\n\n\t\t}\n\n\t\tdelete bindingStates[ geometry.id ];\n\n\t}\n\n\tfunction releaseStatesOfProgram( program ) {\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tif ( programMap[ program.id ] === undefined ) continue;\n\n\t\t\tconst stateMap = programMap[ program.id ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ program.id ];\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\tresetDefaultState();\n\n\t\tif ( currentState === defaultState ) return;\n\n\t\tcurrentState = defaultState;\n\t\tbindVertexArrayObject( currentState.object );\n\n\t}\n\n\t// for backward-compatilibity\n\n\tfunction resetDefaultState() {\n\n\t\tdefaultState.geometry = null;\n\t\tdefaultState.program = null;\n\t\tdefaultState.wireframe = false;\n\n\t}\n\n\treturn {\n\n\t\tsetup: setup,\n\t\treset: reset,\n\t\tresetDefaultState: resetDefaultState,\n\t\tdispose: dispose,\n\t\treleaseStatesOfGeometry: releaseStatesOfGeometry,\n\t\treleaseStatesOfProgram: releaseStatesOfProgram,\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tdisableUnusedAttributes: disableUnusedAttributes\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode );\n\n\t}\n\n\tfunction renderInstances( geometry, start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawArraysInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawArraysInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tlet maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36338 ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36337 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36337 ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\t/* eslint-disable no-undef */\n\tconst isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext ) ||\n\t\t( typeof WebGL2ComputeRenderingContext !== 'undefined' && gl instanceof WebGL2ComputeRenderingContext );\n\t/* eslint-enable no-undef */\n\n\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tconst maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tconst maxTextures = gl.getParameter( 34930 );\n\tconst maxVertexTextures = gl.getParameter( 35660 );\n\tconst maxTextureSize = gl.getParameter( 3379 );\n\tconst maxCubemapSize = gl.getParameter( 34076 );\n\n\tconst maxAttributes = gl.getParameter( 34921 );\n\tconst maxVertexUniforms = gl.getParameter( 36347 );\n\tconst maxVaryings = gl.getParameter( 36348 );\n\tconst maxFragmentUniforms = gl.getParameter( 36349 );\n\n\tconst vertexTextures = maxVertexTextures > 0;\n\tconst floatFragmentTextures = isWebGL2 || !! extensions.get( 'OES_texture_float' );\n\tconst floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\tconst maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\n/**\n * @author tschw\n */\n\nfunction WebGLClipping() {\n\n\tconst scope = this;\n\n\tlet globalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false;\n\n\tconst plane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping, camera ) {\n\n\t\tconst enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\t\tresetGlobalState();\n\n\t};\n\n\tthis.setState = function ( planes, clipIntersection, clipShadows, camera, cache, fromCache ) {\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4;\n\n\t\t\tlet dstArray = cache.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, fromCache );\n\n\t\t\tfor ( let i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tcache.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tlet nPlanes = planes !== null ? planes.length : 0,\n\t\t\tdstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tconst flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\tscope.numIntersection = 0;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLExtensions( gl ) {\n\n\tconst extensions = {};\n\n\treturn {\n\n\t\tget: function ( name ) {\n\n\t\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\t\treturn extensions[ name ];\n\n\t\t\t}\n\n\t\t\tlet extension;\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\textension = gl.getExtension( name );\n\n\t\t\t}\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\textensions[ name ] = extension;\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\n\n\tconst geometries = new WeakMap();\n\tconst wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tconst geometry = event.target;\n\t\tconst buffergeometry = geometries.get( geometry );\n\n\t\tif ( buffergeometry.index !== null ) {\n\n\t\t\tattributes.remove( buffergeometry.index );\n\n\t\t}\n\n\t\tfor ( const name in buffergeometry.attributes ) {\n\n\t\t\tattributes.remove( buffergeometry.attributes[ name ] );\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries.delete( geometry );\n\n\t\tconst attribute = wireframeAttributes.get( buffergeometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( buffergeometry );\n\n\t\t}\n\n\t\tbindingStates.releaseStatesOfGeometry( geometry );\n\n\t\tif ( geometry.isInstancedBufferGeometry === true ) {\n\n\t\t\tdelete geometry._maxInstanceCount;\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tlet buffergeometry = geometries.get( geometry );\n\n\t\tif ( buffergeometry ) return buffergeometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tbuffergeometry = geometry;\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tif ( geometry._bufferGeometry === undefined ) {\n\n\t\t\t\tgeometry._bufferGeometry = new BufferGeometry().setFromObject( object );\n\n\t\t\t}\n\n\t\t\tbuffergeometry = geometry._bufferGeometry;\n\n\t\t}\n\n\t\tgeometries.set( geometry, buffergeometry );\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates.\n\n\t\tfor ( const name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], 34962 );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateWireframeAttribute( geometry ) {\n\n\t\tconst indices = [];\n\n\t\tconst geometryIndex = geometry.index;\n\t\tconst geometryPosition = geometry.attributes.position;\n\t\tlet version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tconst array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tconst a = array[ i + 0 ];\n\t\t\t\tconst b = array[ i + 1 ];\n\t\t\t\tconst c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tconst a = i + 0;\n\t\t\t\tconst b = i + 1;\n\t\t\t\tconst c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst attribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates\n\n\t\t//\n\n\t\tconst previousAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\n\n\t\t//\n\n\t\twireframeAttributes.set( geometry, attribute );\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tconst currentAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tconst geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes.get( geometry );\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tlet type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode );\n\n\t}\n\n\tfunction renderInstances( geometry, start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawElementsInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawElementsInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebGLInfo( gl ) {\n\n\tconst memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tconst render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\tinstanceCount = instanceCount || 1;\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase 4:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase 0:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.frame ++;\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction numericalSort( a, b ) {\n\n\treturn a[ 0 ] - b[ 0 ];\n\n}\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction WebGLMorphtargets( gl ) {\n\n\tconst influencesList = {};\n\tconst morphInfluences = new Float32Array( 8 );\n\n\tconst workInfluences = [];\n\n\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\tworkInfluences[ i ] = [ i, 0 ];\n\n\t}\n\n\tfunction update( object, geometry, material, program ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\t// When object doesn't have morph target influences defined, we treat it as a 0-length array\n\t\t// This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences\n\n\t\tconst length = objectInfluences === undefined ? 0 : objectInfluences.length;\n\n\t\tlet influences = influencesList[ geometry.id ];\n\n\t\tif ( influences === undefined ) {\n\n\t\t\t// initialise list\n\n\t\t\tinfluences = [];\n\n\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t}\n\n\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t}\n\n\t\t// Collect influences\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tconst influence = influences[ i ];\n\n\t\t\tinfluence[ 0 ] = i;\n\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t}\n\n\t\tinfluences.sort( absNumericalSort );\n\n\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\tif ( i < length && influences[ i ][ 1 ] ) {\n\n\t\t\t\tworkInfluences[ i ][ 0 ] = influences[ i ][ 0 ];\n\t\t\t\tworkInfluences[ i ][ 1 ] = influences[ i ][ 1 ];\n\n\t\t\t} else {\n\n\t\t\t\tworkInfluences[ i ][ 0 ] = Number.MAX_SAFE_INTEGER;\n\t\t\t\tworkInfluences[ i ][ 1 ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tworkInfluences.sort( numericalSort );\n\n\t\tconst morphTargets = material.morphTargets && geometry.morphAttributes.position;\n\t\tconst morphNormals = material.morphNormals && geometry.morphAttributes.normal;\n\n\t\tlet morphInfluencesSum = 0;\n\n\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\tconst influence = workInfluences[ i ];\n\t\t\tconst index = influence[ 0 ];\n\t\t\tconst value = influence[ 1 ];\n\n\t\t\tif ( index !== Number.MAX_SAFE_INTEGER && value ) {\n\n\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== morphTargets[ index ] ) {\n\n\t\t\t\t\tgeometry.setAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== morphNormals[ index ] ) {\n\n\t\t\t\t\tgeometry.setAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t}\n\n\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\tmorphInfluencesSum += value;\n\n\t\t\t} else {\n\n\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== undefined ) {\n\n\t\t\t\t\tgeometry.deleteAttribute( 'morphTarget' + i );\n\n\t\t\t\t}\n\n\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== undefined ) {\n\n\t\t\t\t\tgeometry.deleteAttribute( 'morphNormal' + i );\n\n\t\t\t\t}\n\n\t\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// GLSL shader uses formula baseinfluence * base + sum(target * influence)\n\t\t// This allows us to switch between absolute morphs and relative morphs without changing shader code\n\t\t// When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)\n\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLObjects( gl, geometries, attributes, info ) {\n\n\tlet updateMap = new WeakMap();\n\n\tfunction update( object ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\tconst geometry = object.geometry;\n\t\tconst buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateMap.get( buffergeometry ) !== frame ) {\n\n\t\t\tif ( geometry.isGeometry ) {\n\n\t\t\t\tbuffergeometry.updateFromObject( object );\n\n\t\t\t}\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateMap.set( buffergeometry, frame );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\tattributes.update( object.instanceMatrix, 34962 );\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateMap = new WeakMap();\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\timages = images !== undefined ? images : [];\n\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\tformat = format !== undefined ? format : RGBFormat;\n\n\tTexture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.flipY = false;\n\n}\n\nCubeTexture.prototype = Object.create( Texture.prototype );\nCubeTexture.prototype.constructor = CubeTexture;\n\nCubeTexture.prototype.isCubeTexture = true;\n\nObject.defineProperty( CubeTexture.prototype, 'images', {\n\n\tget: function () {\n\n\t\treturn this.image;\n\n\t},\n\n\tset: function ( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n} );\n\n/**\n * @author Takahiro https://github.com/takahirox\n */\n\nfunction DataTexture2DArray( data, width, height, depth ) {\n\n\tTexture.call( this, null );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1, depth: depth || 1 };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n\tthis.needsUpdate = true;\n\n}\n\nDataTexture2DArray.prototype = Object.create( Texture.prototype );\nDataTexture2DArray.prototype.constructor = DataTexture2DArray;\nDataTexture2DArray.prototype.isDataTexture2DArray = true;\n\n/**\n * @author Artur Trzesiok\n */\n\nfunction DataTexture3D( data, width, height, depth ) {\n\n\t// We're going to add .setXXX() methods for setting properties later.\n\t// Users can still set in DataTexture3D directly.\n\t//\n\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\n\t// \ttexture.anisotropy = 16;\n\t//\n\t// See #14839\n\n\tTexture.call( this, null );\n\n\tthis.image = { data: data || null, width: width || 1, height: height || 1, depth: depth || 1 };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n\tthis.needsUpdate = true;\n\n\n}\n\nDataTexture3D.prototype = Object.create( Texture.prototype );\nDataTexture3D.prototype.constructor = DataTexture3D;\nDataTexture3D.prototype.isDataTexture3D = true;\n\n/**\n * @author tschw\n * @author Mugen87 / https://github.com/Mugen87\n * @author mrdoob / http://mrdoob.com/\n *\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nconst emptyTexture = new Texture();\nconst emptyTexture2dArray = new DataTexture2DArray();\nconst emptyTexture3d = new DataTexture3D();\nconst emptyCubeTexture = new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nconst mat4array = new Float32Array( 16 );\nconst mat3array = new Float32Array( 9 );\nconst mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tconst firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tlet n = nBlocks * blockSize,\n\t\tr = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( let i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( let i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( let i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tlet r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\t}\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTexture2D( v || emptyTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyTexture2dArray, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || emptyTexture3d, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTextureCube( v || emptyCubeTexture, unit );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\n\nfunction setValueV1i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\nfunction setValueV2i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n// uint\n\nfunction setValueV1ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1ui( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1f; // FLOAT\n\t\tcase 0x8b50: return setValueV2f; // _VEC2\n\t\tcase 0x8b51: return setValueV3f; // _VEC3\n\t\tcase 0x8b52: return setValueV4f; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2; // _MAT2\n\t\tcase 0x8b5b: return setValueM3; // _MAT3\n\t\tcase 0x8b5c: return setValueM4; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2i; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3i; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4i; // _VEC4\n\n\t\tcase 0x1405: return setValueV1ui; // UINT\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3D1;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArray1;\n\n\t}\n\n}\n\n// Array of scalars\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\nfunction setValueV2iArray( gl, v ) {\n\n\tgl.uniform2iv( this.addr, v );\n\n}\n\nfunction setValueV3iArray( gl, v ) {\n\n\tgl.uniform3iv( this.addr, v );\n\n}\n\nfunction setValueV4iArray( gl, v ) {\n\n\tgl.uniform4iv( this.addr, v );\n\n}\n\n\n// Array of vectors (flat or from THREE classes)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (flat or from THREE clases)\n\nfunction setValueM2Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of textures (2D / Cube)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1fArray; // FLOAT\n\t\tcase 0x8b50: return setValueV2fArray; // _VEC2\n\t\tcase 0x8b51: return setValueV3fArray; // _VEC3\n\t\tcase 0x8b52: return setValueV4fArray; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2Array; // _MAT2\n\t\tcase 0x8b5b: return setValueM3Array; // _MAT3\n\t\tcase 0x8b5c: return setValueM4Array; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1Array;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6Array;\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nfunction SingleUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction PureArrayUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.size = activeInfo.size;\n\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nPureArrayUniform.prototype.updateCache = function ( data ) {\n\n\tlet cache = this.cache;\n\n\tif ( data instanceof Float32Array && cache.length !== data.length ) {\n\n\t\tthis.cache = new Float32Array( data.length );\n\n\t}\n\n\tcopyArray( cache, data );\n\n};\n\nfunction StructuredUniform( id ) {\n\n\tthis.id = id;\n\n\tthis.seq = [];\n\tthis.map = {};\n\n}\n\nStructuredUniform.prototype.setValue = function ( gl, value, textures ) {\n\n\tconst seq = this.seq;\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t}\n\n};\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nconst RePathPart = /([\\w\\d_]+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tconst path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tconst match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex;\n\n\t\tlet id = match[ 1 ],\n\t\t\tidIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tconst map = container.map;\n\t\t\tlet next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nfunction WebGLUniforms( gl, program ) {\n\n\tthis.seq = [];\n\tthis.map = {};\n\n\tconst n = gl.getProgramParameter( program, 35718 );\n\n\tfor ( let i = 0; i < n; ++ i ) {\n\n\t\tconst info = gl.getActiveUniform( program, i ),\n\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\tparseUniform( info, addr, this );\n\n\t}\n\n}\n\nWebGLUniforms.prototype.setValue = function ( gl, name, value, textures ) {\n\n\tconst u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n};\n\nWebGLUniforms.prototype.setOptional = function ( gl, object, name ) {\n\n\tconst v = object[ name ];\n\n\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n};\n\n\n// Static interface\n\nWebGLUniforms.upload = function ( gl, seq, values, textures ) {\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ],\n\t\t\tv = values[ u.id ];\n\n\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t}\n\n\t}\n\n};\n\nWebGLUniforms.seqWithValue = function ( seq, values ) {\n\n\tconst r = [];\n\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tconst u = seq[ i ];\n\t\tif ( u.id in values ) r.push( u );\n\n\t}\n\n\treturn r;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLShader( gl, type, string ) {\n\n\tconst shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nlet programIdCount = 0;\n\nfunction addLineNumbers( string ) {\n\n\tconst lines = string.split( '\\n' );\n\n\tfor ( let i = 0; i < lines.length; i ++ ) {\n\n\t\tlines[ i ] = ( i + 1 ) + ': ' + lines[ i ];\n\n\t}\n\n\treturn lines.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( encoding ) {\n\n\tswitch ( encoding ) {\n\n\t\tcase LinearEncoding:\n\t\t\treturn [ 'Linear', '( value )' ];\n\t\tcase sRGBEncoding:\n\t\t\treturn [ 'sRGB', '( value )' ];\n\t\tcase RGBEEncoding:\n\t\t\treturn [ 'RGBE', '( value )' ];\n\t\tcase RGBM7Encoding:\n\t\t\treturn [ 'RGBM', '( value, 7.0 )' ];\n\t\tcase RGBM16Encoding:\n\t\t\treturn [ 'RGBM', '( value, 16.0 )' ];\n\t\tcase RGBDEncoding:\n\t\t\treturn [ 'RGBD', '( value, 256.0 )' ];\n\t\tcase GammaEncoding:\n\t\t\treturn [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ];\n\t\tcase LogLuvEncoding:\n\t\t\treturn [ 'LogLuv', '( value )' ];\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported encoding:', encoding );\n\t\t\treturn [ 'Linear', '( value )' ];\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tconst status = gl.getShaderParameter( shader, 35713 );\n\tconst log = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && log === '' ) return '';\n\n\t// --enable-privileged-webgl-extension\n\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\tconst source = gl.getShaderSource( shader );\n\n\treturn 'THREE.WebGLShader: gl.getShaderInfoLog() ' + type + '\\n' + log + addLineNumbers( source );\n\n}\n\nfunction getTexelDecodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }';\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tlet toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tcase CustomToneMapping:\n\t\t\ttoneMappingName = 'Custom';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping );\n\t\t\ttoneMappingName = 'Linear';\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( parameters ) {\n\n\tconst chunks = [\n\t\t( parameters.extensionDerivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( parameters.extensionShaderTextureLOD || parameters.envMap ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tconst chunks = [];\n\n\tfor ( const name in defines ) {\n\n\t\tconst value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tconst attributes = {};\n\n\tconst n = gl.getProgramParameter( program, 35721 );\n\n\tfor ( let i = 0; i < n; i ++ ) {\n\n\t\tconst info = gl.getActiveAttrib( program, i );\n\t\tconst name = info.name;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = gl.getAttribLocation( program, name );\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights )\n\t\t.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )\n\t\t.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\n// Resolve Includes\n\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\nfunction resolveIncludes( string ) {\n\n\treturn string.replace( includePattern, includeReplacer );\n\n}\n\nfunction includeReplacer( match, include ) {\n\n\tconst string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\nconst deprecatedUnrollLoopPattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\nconst unrollLoopPattern = /#pragma unroll_loop_start[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}[\\s]+?#pragma unroll_loop_end/g;\n\nfunction unrollLoops( string ) {\n\n\treturn string\n\t\t.replace( unrollLoopPattern, loopReplacer )\n\t\t.replace( deprecatedUnrollLoopPattern, deprecatedLoopReplacer );\n\n}\n\nfunction deprecatedLoopReplacer( match, start, end, snippet ) {\n\n\tconsole.warn( 'WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead.' );\n\treturn loopReplacer( match, start, end, snippet );\n\n}\n\nfunction loopReplacer( match, start, end, snippet ) {\n\n\tlet string = '';\n\n\tfor ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\tstring += snippet\n\t\t\t.replace( /\\[ i \\]/g, '[ ' + i + ' ]' )\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\n\n\t}\n\n\treturn string;\n\n}\n\n//\n\nfunction generatePrecision( parameters ) {\n\n\tlet precisionstring = \"precision \" + parameters.precision + \" float;\\nprecision \" + parameters.precision + \" int;\";\n\n\tif ( parameters.precision === \"highp\" ) {\n\n\t\tprecisionstring += \"\\n#define HIGH_PRECISION\";\n\n\t} else if ( parameters.precision === \"mediump\" ) {\n\n\t\tprecisionstring += \"\\n#define MEDIUM_PRECISION\";\n\n\t} else if ( parameters.precision === \"lowp\" ) {\n\n\t\tprecisionstring += \"\\n#define LOW_PRECISION\";\n\n\t}\n\n\treturn precisionstring;\n\n}\n\nfunction generateShadowMapTypeDefine( parameters ) {\n\n\tlet shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t} else if ( parameters.shadowMapType === VSMShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\n\n\t}\n\n\treturn shadowMapTypeDefine;\n\n}\n\nfunction generateEnvMapTypeDefine( parameters ) {\n\n\tlet envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t\tcase EquirectangularReflectionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_EQUIREC';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapTypeDefine;\n\n}\n\nfunction generateEnvMapModeDefine( parameters ) {\n\n\tlet envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeRefractionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapModeDefine;\n\n}\n\nfunction generateEnvMapBlendingDefine( parameters ) {\n\n\tlet envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapBlendingDefine;\n\n}\n\nfunction WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {\n\n\tconst gl = renderer.getContext();\n\n\tconst defines = parameters.defines;\n\n\tlet vertexShader = parameters.vertexShader;\n\tlet fragmentShader = parameters.fragmentShader;\n\n\tconst shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\n\tconst envMapTypeDefine = generateEnvMapTypeDefine( parameters );\n\tconst envMapModeDefine = generateEnvMapModeDefine( parameters );\n\tconst envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\n\n\n\tconst gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;\n\n\tconst customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );\n\n\tconst customDefines = generateDefines( defines );\n\n\tconst program = gl.createProgram();\n\n\tlet prefixVertex, prefixFragment;\n\n\tif ( parameters.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t'#define MAX_BONES ' + parameters.maxBones,\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\t\t\tparameters.useVertexTexture ? '#define BONE_TEXTURE' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t'#ifdef USE_INSTANCING',\n\n\t\t\t' attribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_COLOR',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_MORPHTARGETS',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest + ( parameters.alphaTest % 1 ? '' : '.0' ) : '', // add '.0' if integer\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t( ( parameters.extensionShaderTextureLOD || parameters.envMap ) && parameters.rendererExtensionShaderTextureLod ) ? '#define TEXTURE_LOD_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\n\t\t\tShaderChunk[ 'encodings_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tparameters.map ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '',\n\t\t\tparameters.matcap ? getTexelDecodingFunction( 'matcapTexelToLinear', parameters.matcapEncoding ) : '',\n\t\t\tparameters.envMap ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',\n\t\t\tparameters.emissiveMap ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',\n\t\t\tparameters.lightMap ? getTexelDecodingFunction( 'lightMapTexelToLinear', parameters.lightMapEncoding ) : '',\n\t\t\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ),\n\n\t\t\tparameters.depthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = resolveIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = resolveIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( parameters.isWebGL2 && ! parameters.isRawShaderMaterial ) {\n\n\t\tlet isGLSL3ShaderMaterial = false;\n\n\t\tconst versionRegex = /^\\s*#version\\s+300\\s+es\\s*\\n/;\n\n\t\tif ( parameters.isShaderMaterial &&\n\t\t\tvertexShader.match( versionRegex ) !== null &&\n\t\t\tfragmentShader.match( versionRegex ) !== null ) {\n\n\t\t\tisGLSL3ShaderMaterial = true;\n\n\t\t\tvertexShader = vertexShader.replace( versionRegex, '' );\n\t\t\tfragmentShader = fragmentShader.replace( versionRegex, '' );\n\n\t\t}\n\n\t\t// GLSL 3.0 conversion\n\n\t\tprefixVertex = [\n\t\t\t'#version 300 es\\n',\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'#version 300 es\\n',\n\t\t\t'#define varying in',\n\t\t\tisGLSL3ShaderMaterial ? '' : 'out highp vec4 pc_fragColor;',\n\t\t\tisGLSL3ShaderMaterial ? '' : '#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tconst vertexGlsl = prefixVertex + vertexShader;\n\tconst fragmentGlsl = prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tconst glVertexShader = WebGLShader( gl, 35633, vertexGlsl );\n\tconst glFragmentShader = WebGLShader( gl, 35632, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( parameters.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, parameters.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\t// check for link errors\n\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\tconst programLog = gl.getProgramInfoLog( program ).trim();\n\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\tlet runnable = true;\n\t\tlet haveDiagnostics = true;\n\n\t\tif ( gl.getProgramParameter( program, 35714 ) === false ) {\n\n\t\t\trunnable = false;\n\n\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\tconsole.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), '35715', gl.getProgramParameter( program, 35715 ), 'gl.getProgramInfoLog', programLog, vertexErrors, fragmentErrors );\n\n\t\t} else if ( programLog !== '' ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog );\n\n\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\thaveDiagnostics = false;\n\n\t\t}\n\n\t\tif ( haveDiagnostics ) {\n\n\t\t\tthis.diagnostics = {\n\n\t\t\t\trunnable: runnable,\n\n\t\t\t\tprogramLog: programLog,\n\n\t\t\t\tvertexShader: {\n\n\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t},\n\n\t\t\t\tfragmentShader: {\n\n\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t}\n\n\t// Clean up\n\n\t// Crashes in iOS9 and iOS10. #18402\n\t// gl.detachShader( program, glVertexShader );\n\t// gl.detachShader( program, glFragmentShader );\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\n\n\t// set up caching for uniform locations\n\n\tlet cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tlet cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tbindingStates.releaseStatesOfProgram( this );\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.name = parameters.shaderName;\n\tthis.id = programIdCount ++;\n\tthis.cacheKey = cacheKey;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLPrograms( renderer, extensions, capabilities, bindingStates ) {\n\n\tconst programs = [];\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst floatVertexTextures = capabilities.floatVertexTextures;\n\tconst maxVertexUniforms = capabilities.maxVertexUniforms;\n\tconst vertexTextures = capabilities.vertexTextures;\n\n\tlet precision = capabilities.precision;\n\n\tconst shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'toon',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tconst parameterNames = [\n\t\t\"precision\", \"isWebGL2\", \"supportsVertexTextures\", \"outputEncoding\", \"instancing\",\n\t\t\"map\", \"mapEncoding\", \"matcap\", \"matcapEncoding\", \"envMap\", \"envMapMode\", \"envMapEncoding\", \"envMapCubeUV\",\n\t\t\"lightMap\", \"lightMapEncoding\", \"aoMap\", \"emissiveMap\", \"emissiveMapEncoding\", \"bumpMap\", \"normalMap\", \"objectSpaceNormalMap\", \"tangentSpaceNormalMap\", \"clearcoatMap\", \"clearcoatRoughnessMap\", \"clearcoatNormalMap\", \"displacementMap\", \"specularMap\",\n\t\t\"roughnessMap\", \"metalnessMap\", \"gradientMap\",\n\t\t\"alphaMap\", \"combine\", \"vertexColors\", \"vertexTangents\", \"vertexUvs\", \"uvsVertexOnly\", \"fog\", \"useFog\", \"fogExp2\",\n\t\t\"flatShading\", \"sizeAttenuation\", \"logarithmicDepthBuffer\", \"skinning\",\n\t\t\"maxBones\", \"useVertexTexture\", \"morphTargets\", \"morphNormals\",\n\t\t\"maxMorphTargets\", \"maxMorphNormals\", \"premultipliedAlpha\",\n\t\t\"numDirLights\", \"numPointLights\", \"numSpotLights\", \"numHemiLights\", \"numRectAreaLights\",\n\t\t\"numDirLightShadows\", \"numPointLightShadows\", \"numSpotLightShadows\",\n\t\t\"shadowMapEnabled\", \"shadowMapType\", \"toneMapping\", 'physicallyCorrectLights',\n\t\t\"alphaTest\", \"doubleSided\", \"flipSided\", \"numClippingPlanes\", \"numClipIntersection\", \"depthPacking\", \"dithering\",\n\t\t\"sheen\"\n\t];\n\n\tfunction getShaderObject( material, shaderID ) {\n\n\t\tlet shaderobject;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\n\t\t\tshaderobject = {\n\t\t\t\tname: material.name || material.type,\n\t\t\t\tuniforms: UniformsUtils.clone( shader.uniforms ),\n\t\t\t\tvertexShader: shader.vertexShader,\n\t\t\t\tfragmentShader: shader.fragmentShader\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tshaderobject = {\n\t\t\t\tname: material.name || material.type,\n\t\t\t\tuniforms: material.uniforms,\n\t\t\t\tvertexShader: material.vertexShader,\n\t\t\t\tfragmentShader: material.fragmentShader\n\t\t\t};\n\n\t\t}\n\n\t\treturn shaderobject;\n\n\t}\n\n\tfunction allocateBones( object ) {\n\n\t\tconst skeleton = object.skeleton;\n\t\tconst bones = skeleton.bones;\n\n\t\tif ( floatVertexTextures ) {\n\n\t\t\treturn 1024;\n\n\t\t} else {\n\n\t\t\t// default for when object is not specified\n\t\t\t// ( for example when prebuilding shader to be used with multiple objects )\n\t\t\t//\n\t\t\t// - leave some extra space for other uniforms\n\t\t\t// - limit here is ANGLE's 254 max uniform vectors\n\t\t\t// (up to 54 should be safe)\n\n\t\t\tconst nVertexUniforms = maxVertexUniforms;\n\t\t\tconst nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\n\n\t\t\tconst maxBones = Math.min( nVertexMatrices, bones.length );\n\n\t\t\tif ( maxBones < bones.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' );\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\treturn maxBones;\n\n\t\t}\n\n\t}\n\n\tfunction getTextureEncodingFromMap( map ) {\n\n\t\tlet encoding;\n\n\t\tif ( ! map ) {\n\n\t\t\tencoding = LinearEncoding;\n\n\t\t} else if ( map.isTexture ) {\n\n\t\t\tencoding = map.encoding;\n\n\t\t} else if ( map.isWebGLRenderTarget ) {\n\n\t\t\tconsole.warn( \"THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\tencoding = map.texture.encoding;\n\n\t\t}\n\n\t\treturn encoding;\n\n\t}\n\n\tfunction getParameters( material, lights, shadows, scene, nClipPlanes, nClipIntersection, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = material.envMap || environment;\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tconst maxBones = object.isSkinnedMesh ? allocateBones( object ) : 0;\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst shaderobject = getShaderObject( material, shaderID );\n\t\tmaterial.onBeforeCompile( shaderobject, renderer );\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst parameters = {\n\n\t\t\tisWebGL2: isWebGL2,\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderName: shaderobject.name,\n\n\t\t\tuniforms: shaderobject.uniforms,\n\t\t\tvertexShader: shaderobject.vertexShader,\n\t\t\tfragmentShader: shaderobject.fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial,\n\t\t\tisShaderMaterial: material.isShaderMaterial,\n\n\t\t\tprecision: precision,\n\n\t\t\tinstancing: object.isInstancedMesh === true,\n\n\t\t\tsupportsVertexTextures: vertexTextures,\n\t\t\toutputEncoding: ( currentRenderTarget !== null ) ? getTextureEncodingFromMap( currentRenderTarget.texture ) : renderer.outputEncoding,\n\t\t\tmap: !! material.map,\n\t\t\tmapEncoding: getTextureEncodingFromMap( material.map ),\n\t\t\tmatcap: !! material.matcap,\n\t\t\tmatcapEncoding: getTextureEncodingFromMap( material.matcap ),\n\t\t\tenvMap: !! envMap,\n\t\t\tenvMapMode: envMap && envMap.mapping,\n\t\t\tenvMapEncoding: getTextureEncodingFromMap( envMap ),\n\t\t\tenvMapCubeUV: ( !! envMap ) && ( ( envMap.mapping === CubeUVReflectionMapping ) || ( envMap.mapping === CubeUVRefractionMapping ) ),\n\t\t\tlightMap: !! material.lightMap,\n\t\t\tlightMapEncoding: getTextureEncodingFromMap( material.lightMap ),\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\temissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap ),\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tobjectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n\t\t\ttangentSpaceNormalMap: material.normalMapType === TangentSpaceNormalMap,\n\t\t\tclearcoatMap: !! material.clearcoatMap,\n\t\t\tclearcoatRoughnessMap: !! material.clearcoatRoughnessMap,\n\t\t\tclearcoatNormalMap: !! material.clearcoatNormalMap,\n\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\tspecularMap: !! material.specularMap,\n\t\t\talphaMap: !! material.alphaMap,\n\n\t\t\tgradientMap: !! material.gradientMap,\n\n\t\t\tsheen: !! material.sheen,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexTangents: ( material.normalMap && material.vertexTangents ),\n\t\t\tvertexColors: material.vertexColors,\n\t\t\tvertexUvs: !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatMap || !! material.clearcoatRoughnessMap || !! material.clearcoatNormalMap || !! material.displacementMap,\n\t\t\tuvsVertexOnly: ! ( !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatNormalMap ) && !! material.displacementMap,\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog,\n\t\t\tfogExp2: ( fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: material.flatShading,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\t\tskinning: material.skinning && maxBones > 0,\n\t\t\tmaxBones: maxBones,\n\t\t\tuseVertexTexture: floatVertexTextures,\n\n\t\t\tmorphTargets: material.morphTargets,\n\t\t\tmorphNormals: material.morphNormals,\n\t\t\tmaxMorphTargets: renderer.maxMorphTargets,\n\t\t\tmaxMorphNormals: renderer.maxMorphNormals,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\n\t\t\tnumClippingPlanes: nClipPlanes,\n\t\t\tnumClipIntersection: nClipIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping,\n\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\talphaTest: material.alphaTest,\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionDerivatives: material.extensions && material.extensions.derivatives,\n\t\t\textensionFragDepth: material.extensions && material.extensions.fragDepth,\n\t\t\textensionDrawBuffers: material.extensions && material.extensions.drawBuffers,\n\t\t\textensionShaderTextureLOD: material.extensions && material.extensions.shaderTextureLOD,\n\n\t\t\trendererExtensionFragDepth: isWebGL2 || extensions.get( 'EXT_frag_depth' ) !== null,\n\t\t\trendererExtensionDrawBuffers: isWebGL2 || extensions.get( 'WEBGL_draw_buffers' ) !== null,\n\t\t\trendererExtensionShaderTextureLod: isWebGL2 || extensions.get( 'EXT_shader_texture_lod' ) !== null,\n\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\n\t\t};\n\n\t\treturn parameters;\n\n\t}\n\n\tfunction getProgramCacheKey( parameters ) {\n\n\t\tconst array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( parameters.fragmentShader );\n\t\t\tarray.push( parameters.vertexShader );\n\n\t\t}\n\n\t\tif ( parameters.defines !== undefined ) {\n\n\t\t\tfor ( const name in parameters.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( parameters.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( parameters.isRawShaderMaterial === undefined ) {\n\n\t\t\tfor ( let i = 0; i < parameterNames.length; i ++ ) {\n\n\t\t\t\tarray.push( parameters[ parameterNames[ i ] ] );\n\n\t\t\t}\n\n\t\t\tarray.push( renderer.outputEncoding );\n\t\t\tarray.push( renderer.gammaFactor );\n\n\t\t}\n\n\t\tarray.push( parameters.customProgramCacheKey );\n\n\t\treturn array.join();\n\n\t}\n\n\tfunction acquireProgram( parameters, cacheKey ) {\n\n\t\tlet program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( let p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tconst preexistingProgram = programs[ p ];\n\n\t\t\tif ( preexistingProgram.cacheKey === cacheKey ) {\n\n\t\t\t\tprogram = preexistingProgram;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, cacheKey, parameters, bindingStates );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t}\n\n\tfunction releaseProgram( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tconst i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tgetParameters: getParameters,\n\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\tacquireProgram: acquireProgram,\n\t\treleaseProgram: releaseProgram,\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tprograms: programs\n\t};\n\n}\n\n/**\n * @author fordacious / fordacious.github.io\n */\n\nfunction WebGLProperties() {\n\n\tlet properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tlet map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.program !== b.program ) {\n\n\t\treturn a.program.id - b.program.id;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList() {\n\n\tconst renderItems = [];\n\tlet renderItemsIndex = 0;\n\n\tconst opaque = [];\n\tconst transparent = [];\n\n\tconst defaultProgram = { id: - 1 };\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tlet renderItem = renderItems[ renderItemsIndex ];\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tprogram: material.program || defaultProgram,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.program = material.program || defaultProgram;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\t( material.transparent === true ? transparent : opaque ).push( renderItem );\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\t( material.transparent === true ? transparent : opaque ).unshift( renderItem );\n\n\t}\n\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );\n\n\t}\n\n\tfunction finish() {\n\n\t\t// Clear references from inactive renderItems in the list\n\n\t\tfor ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {\n\n\t\t\tconst renderItem = renderItems[ i ];\n\n\t\t\tif ( renderItem.id === null ) break;\n\n\t\t\trenderItem.id = null;\n\t\t\trenderItem.object = null;\n\t\t\trenderItem.geometry = null;\n\t\t\trenderItem.material = null;\n\t\t\trenderItem.program = null;\n\t\t\trenderItem.group = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\topaque: opaque,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\t\tfinish: finish,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists() {\n\n\tlet lists = new WeakMap();\n\n\tfunction onSceneDispose( event ) {\n\n\t\tconst scene = event.target;\n\n\t\tscene.removeEventListener( 'dispose', onSceneDispose );\n\n\t\tlists.delete( scene );\n\n\t}\n\n\tfunction get( scene, camera ) {\n\n\t\tconst cameras = lists.get( scene );\n\t\tlet list;\n\n\t\tif ( cameras === undefined ) {\n\n\t\t\tlist = new WebGLRenderList();\n\t\t\tlists.set( scene, new WeakMap() );\n\t\t\tlists.get( scene ).set( camera, list );\n\n\t\t\tscene.addEventListener( 'dispose', onSceneDispose );\n\n\t\t} else {\n\n\t\t\tlist = cameras.get( camera );\n\t\t\tif ( list === undefined ) {\n\n\t\t\t\tlist = new WebGLRenderList();\n\t\t\t\tcameras.set( camera, list );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction UniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nfunction ShadowUniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\n\nlet nextVersion = 0;\n\nfunction shadowCastingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 1 : 0 ) - ( lightA.castShadow ? 1 : 0 );\n\n}\n\nfunction WebGLLights() {\n\n\tconst cache = new UniformsCache();\n\n\tconst shadowCache = ShadowUniformsCache();\n\n\tconst state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\n\t\t\tnumDirectionalShadows: - 1,\n\t\t\tnumPointShadows: - 1,\n\t\t\tnumSpotShadows: - 1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadow: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotShadowMatrix: [],\n\t\trectArea: [],\n\t\tpoint: [],\n\t\tpointShadow: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: []\n\n\t};\n\n\tfor ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tconst vector3 = new Vector3();\n\tconst matrix4 = new Matrix4();\n\tconst matrix42 = new Matrix4();\n\n\tfunction setup( lights, shadows, camera ) {\n\n\t\tlet r = 0, g = 0, b = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tlet numDirectionalShadows = 0;\n\t\tlet numPointShadows = 0;\n\t\tlet numSpotShadows = 0;\n\n\t\tconst viewMatrix = camera.matrixWorldInverse;\n\n\t\tlights.sort( shadowCastingLightsFirst );\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tconst color = light.color;\n\t\t\tconst intensity = light.intensity;\n\t\t\tconst distance = light.distance;\n\n\t\t\tconst shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity;\n\t\t\t\tg += color.g * intensity;\n\t\t\t\tb += color.b * intensity;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( let j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.directionalShadow[ directionalLength ] = shadowUniforms;\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumDirectionalShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.spotShadow[ spotLength ] = shadowUniforms;\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\t\t\t\t\tstate.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\t// (a) intensity is the total visible light emitted\n\t\t\t\t//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );\n\n\t\t\t\t// (b) intensity is the brightness of the light\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\t// TODO (abelnation): RectAreaLight distance?\n\t\t\t\t// uniforms.distance = distance;\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tshadowUniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tshadowUniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t\tstate.pointShadow[ pointLength ] = shadowUniforms;\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumPointShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\t\t\t\tuniforms.direction.normalize();\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tconst hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.numDirectionalShadows !== numDirectionalShadows ||\n\t\t\thash.numPointShadows !== numPointShadows ||\n\t\t\thash.numSpotShadows !== numSpotShadows ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\tstate.directionalShadow.length = numDirectionalShadows;\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\tstate.pointShadow.length = numPointShadows;\n\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\tstate.spotShadow.length = numSpotShadows;\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\tstate.spotShadowMatrix.length = numSpotShadows;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\thash.numPointShadows = numPointShadows;\n\t\t\thash.numSpotShadows = numSpotShadows;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tstate: state\n\t};\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebGLRenderState() {\n\n\tconst lights = new WebGLLights();\n\n\tconst lightsArray = [];\n\tconst shadowsArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights( camera ) {\n\n\t\tlights.setup( lightsArray, shadowsArray, camera );\n\n\t}\n\n\tconst state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tlights: lights\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates() {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction onSceneDispose( event ) {\n\n\t\tconst scene = event.target;\n\n\t\tscene.removeEventListener( 'dispose', onSceneDispose );\n\n\t\trenderStates.delete( scene );\n\n\t}\n\n\tfunction get( scene, camera ) {\n\n\t\tlet renderState;\n\n\t\tif ( renderStates.has( scene ) === false ) {\n\n\t\t\trenderState = new WebGLRenderState();\n\t\t\trenderStates.set( scene, new WeakMap() );\n\t\t\trenderStates.get( scene ).set( camera, renderState );\n\n\t\t\tscene.addEventListener( 'dispose', onSceneDispose );\n\n\t\t} else {\n\n\t\t\tif ( renderStates.get( scene ).has( camera ) === false ) {\n\n\t\t\t\trenderState = new WebGLRenderState();\n\t\t\t\trenderStates.get( scene ).set( camera, renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStates.get( scene ).get( camera );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / https://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n * }\n */\n\nfunction MeshDepthMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDepthMaterial';\n\n\tthis.depthPacking = BasicDepthPacking;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDepthMaterial.prototype = Object.create( Material.prototype );\nMeshDepthMaterial.prototype.constructor = MeshDepthMaterial;\n\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\nMeshDepthMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.depthPacking = source.depthPacking;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *\n * referencePosition: ,\n * nearDistance: ,\n * farDistance: ,\n *\n * skinning: ,\n * morphTargets: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: \n *\n * }\n */\n\nfunction MeshDistanceMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDistanceMaterial';\n\n\tthis.referencePosition = new Vector3();\n\tthis.nearDistance = 1;\n\tthis.farDistance = 1000;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.fog = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDistanceMaterial.prototype = Object.create( Material.prototype );\nMeshDistanceMaterial.prototype.constructor = MeshDistanceMaterial;\n\nMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\n\nMeshDistanceMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.referencePosition.copy( source.referencePosition );\n\tthis.nearDistance = source.nearDistance;\n\tthis.farDistance = source.farDistance;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\treturn this;\n\n};\n\nvar vsm_frag = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include \\nvoid main() {\\n float mean = 0.0;\\n float squared_mean = 0.0;\\n\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy ) / resolution ) );\\n for ( float i = -1.0; i < 1.0 ; i += SAMPLE_RATE) {\\n #ifdef HORIZONAL_PASS\\n vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( i, 0.0 ) * radius ) / resolution ) );\\n mean += distribution.x;\\n squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n #else\\n float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, i ) * radius ) / resolution ) );\\n mean += depth;\\n squared_mean += depth * depth;\\n #endif\\n }\\n mean = mean * HALF_SAMPLE_RATE;\\n squared_mean = squared_mean * HALF_SAMPLE_RATE;\\n float std_dev = sqrt( squared_mean - mean * mean );\\n gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nvar vsm_vert = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLShadowMap( _renderer, _objects, maxTextureSize ) {\n\n\tlet _frustum = new Frustum();\n\n\tconst _shadowMapSize = new Vector2(),\n\t\t_viewportSize = new Vector2(),\n\n\t\t_viewport = new Vector4(),\n\n\t\t_depthMaterials = [],\n\t\t_distanceMaterials = [],\n\n\t\t_materialCache = {};\n\n\tconst shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\n\n\tconst shadowMaterialVertical = new ShaderMaterial( {\n\n\t\tdefines: {\n\t\t\tSAMPLE_RATE: 2.0 / 8.0,\n\t\t\tHALF_SAMPLE_RATE: 1.0 / 8.0\n\t\t},\n\n\t\tuniforms: {\n\t\t\tshadow_pass: { value: null },\n\t\t\tresolution: { value: new Vector2() },\n\t\t\tradius: { value: 4.0 }\n\t\t},\n\n\t\tvertexShader: vsm_vert,\n\n\t\tfragmentShader: vsm_frag\n\n\t} );\n\n\tconst shadowMaterialHorizonal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizonal.defines.HORIZONAL_PASS = 1;\n\n\tconst fullScreenTri = new BufferGeometry();\n\tfullScreenTri.setAttribute(\n\t\t\"position\",\n\t\tnew BufferAttribute(\n\t\t\tnew Float32Array( [ - 1, - 1, 0.5, 3, - 1, 0.5, - 1, 3, 0.5 ] ),\n\t\t\t3\n\t\t)\n\t);\n\n\tconst fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\n\n\tconst scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tconst currentRenderTarget = _renderer.getRenderTarget();\n\t\tconst activeCubeFace = _renderer.getActiveCubeFace();\n\t\tconst activeMipmapLevel = _renderer.getActiveMipmapLevel();\n\n\t\tconst _state = _renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// render depth map\n\n\t\tfor ( let i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\t\t\tconst shadow = light.shadow;\n\n\t\t\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\tconst shadowFrameExtents = shadow.getFrameExtents();\n\n\t\t\t_shadowMapSize.multiply( shadowFrameExtents );\n\n\t\t\t_viewportSize.copy( shadow.mapSize );\n\n\t\t\tif ( _shadowMapSize.x > maxTextureSize || _shadowMapSize.y > maxTextureSize ) {\n\n\t\t\t\tif ( _shadowMapSize.x > maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.x = Math.floor( maxTextureSize / shadowFrameExtents.x );\n\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _shadowMapSize.y > maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.y = Math.floor( maxTextureSize / shadowFrameExtents.y );\n\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null && ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tconst pars = { minFilter: LinearFilter, magFilter: LinearFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + \".shadowMap\";\n\n\t\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\tconst pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + \".shadowMap\";\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadow.map );\n\t\t\t_renderer.clear();\n\n\t\t\tconst viewportCount = shadow.getViewportCount();\n\n\t\t\tfor ( let vp = 0; vp < viewportCount; vp ++ ) {\n\n\t\t\t\tconst viewport = shadow.getViewport( vp );\n\n\t\t\t\t_viewport.set(\n\t\t\t\t\t_viewportSize.x * viewport.x,\n\t\t\t\t\t_viewportSize.y * viewport.y,\n\t\t\t\t\t_viewportSize.x * viewport.z,\n\t\t\t\t\t_viewportSize.y * viewport.w\n\t\t\t\t);\n\n\t\t\t\t_state.viewport( _viewport );\n\n\t\t\t\tshadow.updateMatrices( light, vp );\n\n\t\t\t\t_frustum = shadow.getFrustum();\n\n\t\t\t\trenderObject( scene, camera, shadow.camera, light, this.type );\n\n\t\t\t}\n\n\t\t\t// do blur pass for VSM\n\n\t\t\tif ( ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\n\n\t\t\t\tVSMPass( shadow, camera );\n\n\t\t\t}\n\n\t\t\tshadow.needsUpdate = false;\n\n\t\t}\n\n\t\tscope.needsUpdate = false;\n\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction VSMPass( shadow, camera ) {\n\n\t\tconst geometry = _objects.update( fullScreenMesh );\n\n\t\t// vertical pass\n\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.mapPass );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\n\n\t\t// horizonal pass\n\n\t\tshadowMaterialHorizonal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizonal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizonal.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.map );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizonal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterialVariant( useMorphing, useSkinning, useInstancing ) {\n\n\t\tconst index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;\n\n\t\tlet material = _depthMaterials[ index ];\n\n\t\tif ( material === undefined ) {\n\n\t\t\tmaterial = new MeshDepthMaterial( {\n\n\t\t\t\tdepthPacking: RGBADepthPacking,\n\n\t\t\t\tmorphTargets: useMorphing,\n\t\t\t\tskinning: useSkinning\n\n\t\t\t} );\n\n\t\t\t_depthMaterials[ index ] = material;\n\n\t\t}\n\n\t\treturn material;\n\n\t}\n\n\tfunction getDistanceMaterialVariant( useMorphing, useSkinning, useInstancing ) {\n\n\t\tconst index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;\n\n\t\tlet material = _distanceMaterials[ index ];\n\n\t\tif ( material === undefined ) {\n\n\t\t\tmaterial = new MeshDistanceMaterial( {\n\n\t\t\t\tmorphTargets: useMorphing,\n\t\t\t\tskinning: useSkinning\n\n\t\t\t} );\n\n\t\t\t_distanceMaterials[ index ] = material;\n\n\t\t}\n\n\t\treturn material;\n\n\t}\n\n\tfunction getDepthMaterial( object, geometry, material, light, shadowCameraNear, shadowCameraFar, type ) {\n\n\t\tlet result = null;\n\n\t\tlet getMaterialVariant = getDepthMaterialVariant;\n\t\tlet customMaterial = object.customDepthMaterial;\n\n\t\tif ( light.isPointLight === true ) {\n\n\t\t\tgetMaterialVariant = getDistanceMaterialVariant;\n\t\t\tcustomMaterial = object.customDistanceMaterial;\n\n\t\t}\n\n\t\tif ( customMaterial === undefined ) {\n\n\t\t\tlet useMorphing = false;\n\n\t\t\tif ( material.morphTargets === true ) {\n\n\t\t\t\tuseMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0;\n\n\t\t\t}\n\n\t\t\tlet useSkinning = false;\n\n\t\t\tif ( object.isSkinnedMesh === true ) {\n\n\t\t\t\tif ( material.skinning === true ) {\n\n\t\t\t\t\tuseSkinning = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst useInstancing = object.isInstancedMesh === true;\n\n\t\t\tresult = getMaterialVariant( useMorphing, useSkinning, useInstancing );\n\n\t\t} else {\n\n\t\t\tresult = customMaterial;\n\n\t\t}\n\n\t\tif ( _renderer.localClippingEnabled &&\n\t\t\t\tmaterial.clipShadows === true &&\n\t\t\t\tmaterial.clippingPlanes.length !== 0 ) {\n\n\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t// appropriate state\n\n\t\t\tconst keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tlet materialsForVariant = _materialCache[ keyA ];\n\n\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t}\n\n\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult = cachedMaterial;\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tif ( type === VSMShadowMap ) {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;\n\n\t\t} else {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\t}\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {\n\n\t\t\tresult.referencePosition.setFromMatrixPosition( light.matrixWorld );\n\t\t\tresult.nearDistance = shadowCameraNear;\n\t\t\tresult.farDistance = shadowCameraFar;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, light, type ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tconst geometry = _objects.update( object );\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\tfor ( let k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ k ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, geometry, groupMaterial, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, geometry, material, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, light, type );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLState( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction ColorBuffer() {\n\n\t\tlet locked = false;\n\n\t\tconst color = new Vector4();\n\t\tlet currentColorMask = null;\n\t\tconst currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentDepthMask = null;\n\t\tlet currentDepthFunc = null;\n\t\tlet currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( 2929 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( 2929 );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 512 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 519 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 513 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 514 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 518 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 516 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 517 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentStencilMask = null;\n\t\tlet currentStencilFunc = null;\n\t\tlet currentStencilRef = null;\n\t\tlet currentStencilFuncMask = null;\n\t\tlet currentStencilFail = null;\n\t\tlet currentStencilZFail = null;\n\t\tlet currentStencilZPass = null;\n\t\tlet currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( ! locked ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( 2960 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( 2960 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef \t!== stencilRef \t||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail\t !== stencilFail \t||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tconst colorBuffer = new ColorBuffer();\n\tconst depthBuffer = new DepthBuffer();\n\tconst stencilBuffer = new StencilBuffer();\n\n\tlet enabledCapabilities = {};\n\n\tlet currentProgram = null;\n\n\tlet currentBlendingEnabled = null;\n\tlet currentBlending = null;\n\tlet currentBlendEquation = null;\n\tlet currentBlendSrc = null;\n\tlet currentBlendDst = null;\n\tlet currentBlendEquationAlpha = null;\n\tlet currentBlendSrcAlpha = null;\n\tlet currentBlendDstAlpha = null;\n\tlet currentPremultipledAlpha = false;\n\n\tlet currentFlipSided = null;\n\tlet currentCullFace = null;\n\n\tlet currentLineWidth = null;\n\n\tlet currentPolygonOffsetFactor = null;\n\tlet currentPolygonOffsetUnits = null;\n\n\tconst maxTextures = gl.getParameter( 35661 );\n\n\tlet lineWidthAvailable = false;\n\tlet version = 0;\n\tconst glVersion = gl.getParameter( 7938 );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL\\ ES\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tlet currentTextureSlot = null;\n\tlet currentBoundTextures = {};\n\n\tconst currentScissor = new Vector4();\n\tconst currentViewport = new Vector4();\n\n\tfunction createTexture( type, target, count ) {\n\n\t\tconst data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tconst texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, 10241, 9728 );\n\t\tgl.texParameteri( type, 10240, 9728 );\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tgl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tconst emptyTextures = {};\n\temptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 );\n\temptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( 2929 );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( 2884 );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tconst equationToGL = {\n\t\t[ AddEquation ]: 32774,\n\t\t[ SubtractEquation ]: 32778,\n\t\t[ ReverseSubtractEquation ]: 32779\n\t};\n\n\tif ( isWebGL2 ) {\n\n\t\tequationToGL[ MinEquation ] = 32775;\n\t\tequationToGL[ MaxEquation ] = 32776;\n\n\t} else {\n\n\t\tconst extension = extensions.get( 'EXT_blend_minmax' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tequationToGL[ MinEquation ] = extension.MIN_EXT;\n\t\t\tequationToGL[ MaxEquation ] = extension.MAX_EXT;\n\n\t\t}\n\n\t}\n\n\tconst factorToGL = {\n\t\t[ ZeroFactor ]: 0,\n\t\t[ OneFactor ]: 1,\n\t\t[ SrcColorFactor ]: 768,\n\t\t[ SrcAlphaFactor ]: 770,\n\t\t[ SrcAlphaSaturateFactor ]: 776,\n\t\t[ DstColorFactor ]: 774,\n\t\t[ DstAlphaFactor ]: 772,\n\t\t[ OneMinusSrcColorFactor ]: 769,\n\t\t[ OneMinusSrcAlphaFactor ]: 771,\n\t\t[ OneMinusDstColorFactor ]: 775,\n\t\t[ OneMinusDstAlphaFactor ]: 773\n\t};\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled ) {\n\n\t\t\t\tdisable( 3042 );\n\t\t\t\tcurrentBlendingEnabled = false;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( ! currentBlendingEnabled ) {\n\n\t\t\tenable( 3042 );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( 32774 );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 1, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 1, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 0, 769, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 768, 0, 770 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 770, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 770, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 769 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 768 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( equationToGL[ blendEquation ], equationToGL[ blendEquationAlpha ] );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ blendDstAlpha ] );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = null;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( 2884 )\n\t\t\t: enable( 2884 );\n\n\t\tlet flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tconst stencilWrite = material.stencilWrite;\n\t\tstencilBuffer.setTest( stencilWrite );\n\t\tif ( stencilWrite ) {\n\n\t\t\tstencilBuffer.setMask( material.stencilWriteMask );\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask );\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\n\n\t\t}\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( 2304 );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( 2305 );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( 2884 );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( 1029 );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( 1028 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( 1032 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 2884 );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( 32823 );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 32823 );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( 3089 );\n\n\t\t} else {\n\n\t\t\tdisable( 3089 );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = 33984 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture ) {\n\n\t\tif ( currentTextureSlot === null ) {\n\n\t\t\tactiveTexture();\n\n\t\t}\n\n\t\tlet boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction unbindTexture() {\n\n\t\tconst boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture !== undefined && boundTexture.type !== undefined ) {\n\n\t\t\tgl.bindTexture( boundTexture.type, null );\n\n\t\t\tboundTexture.type = undefined;\n\t\t\tboundTexture.texture = undefined;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlending = null;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tenable: enable,\n\t\tdisable: disable,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tunbindTexture: unbindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst maxTextures = capabilities.maxTextures;\n\tconst maxCubemapSize = capabilities.maxCubemapSize;\n\tconst maxTextureSize = capabilities.maxTextureSize;\n\tconst maxSamples = capabilities.maxSamples;\n\n\tconst _videoTextures = new WeakMap();\n\tlet _canvas;\n\n\t// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\n\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\n\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\n\n\tlet useOffscreenCanvas = false;\n\n\ttry {\n\n\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n\t\t\t&& ( new OffscreenCanvas( 1, 1 ).getContext( \"2d\" ) ) !== null;\n\n\t} catch ( err ) {\n\n\t\t// Ignore any errors\n\n\t}\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\tnew OffscreenCanvas( width, height ) :\n\t\t\tdocument.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {\n\n\t\tlet scale = 1;\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( image.width, image.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 || needsPowerOfTwo === true ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\t\tconst floor = needsPowerOfTwo ? MathUtils.floorPowerOfTwo : Math.floor;\n\n\t\t\t\tconst width = floor( scale * image.width );\n\t\t\t\tconst height = floor( scale * image.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tconst canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo( image ) {\n\n\t\treturn MathUtils.isPowerOfTwo( image.width ) && MathUtils.isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( isWebGL2 ) return false;\n\n\t\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\n\t\t\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture, supportsMips ) {\n\n\t\treturn texture.generateMipmaps && supportsMips &&\n\t\t\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t}\n\n\tfunction generateMipmap( target, texture, width, height ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\t// Note: Math.log( x ) * Math.LOG2E used instead of Math.log2( x ) which is not supported by IE11\n\t\ttextureProperties.__maxMipLevel = Math.log( Math.max( width, height ) ) * Math.LOG2E;\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType ) {\n\n\t\tif ( isWebGL2 === false ) return glFormat;\n\n\t\tif ( internalFormatName !== null ) {\n\n\t\t\tif ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'' );\n\n\t\t}\n\n\t\tlet internalFormat = glFormat;\n\n\t\tif ( glFormat === 6403 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 33326;\n\t\t\tif ( glType === 5131 ) internalFormat = 33325;\n\t\t\tif ( glType === 5121 ) internalFormat = 33321;\n\n\t\t}\n\n\t\tif ( glFormat === 6407 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34837;\n\t\t\tif ( glType === 5131 ) internalFormat = 34843;\n\t\t\tif ( glType === 5121 ) internalFormat = 32849;\n\n\t\t}\n\n\t\tif ( glFormat === 6408 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34836;\n\t\t\tif ( glType === 5131 ) internalFormat = 34842;\n\t\t\tif ( glType === 5121 ) internalFormat = 32856;\n\n\t\t}\n\n\t\tif ( internalFormat === 33325 || internalFormat === 33326 ||\n\t\t\tinternalFormat === 34842 || internalFormat === 34836 ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter ) {\n\n\t\t\treturn 9728;\n\n\t\t}\n\n\t\treturn 9729;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\t_videoTextures.delete( texture );\n\n\t\t}\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tconst renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( renderTarget.texture );\n\n\t\tif ( ! renderTarget ) return;\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\n\n\t\t}\n\n\t\tproperties.remove( renderTarget.texture );\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tlet textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tconst textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tconst image = texture.image;\n\n\t\t\tif ( image === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 35866, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 32879, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tinitTexture( textureProperties, texture );\n\n\t\t\tstate.activeTexture( 33984 + slot );\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t\t_gl.pixelStorei( 37440, texture.flipY );\n\n\t\t\tconst isCompressed = ( texture && ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture ) );\n\t\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\tconst cubeImage = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, maxCubemapSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst image = cubeImage[ 0 ],\n\t\t\t\tsupportsMips = isPowerOfTwo( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format ),\n\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType );\n\n\t\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\t\tlet mipmaps;\n\n\t\t\tif ( isCompressed ) {\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tstate.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\t\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length;\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\tgenerateMipmap( 34067, texture, image.width, image.height );\n\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t} else {\n\n\t\t\tstate.activeTexture( 33984 + slot );\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t}\n\n\t}\n\n\tfunction setTextureCubeDynamic( texture, slot ) {\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, properties.get( texture ).__webglTexture );\n\n\t}\n\n\tconst wrappingToGL = {\n\t\t[ RepeatWrapping ]: 10497,\n\t\t[ ClampToEdgeWrapping ]: 33071,\n\t\t[ MirroredRepeatWrapping ]: 33648\n\t};\n\n\tconst filterToGL = {\n\t\t[ NearestFilter ]: 9728,\n\t\t[ NearestMipmapNearestFilter ]: 9984,\n\t\t[ NearestMipmapLinearFilter ]: 9986,\n\n\t\t[ LinearFilter ]: 9729,\n\t\t[ LinearMipmapNearestFilter ]: 9985,\n\t\t[ LinearMipmapLinearFilter ]: 9987\n\t};\n\n\tfunction setTextureParameters( textureType, texture, supportsMips ) {\n\n\t\tif ( supportsMips ) {\n\n\t\t\t_gl.texParameteri( textureType, 10242, wrappingToGL[ texture.wrapS ] );\n\t\t\t_gl.texParameteri( textureType, 10243, wrappingToGL[ texture.wrapT ] );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, wrappingToGL[ texture.wrapR ] );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterToGL[ texture.magFilter ] );\n\t\t\t_gl.texParameteri( textureType, 10241, filterToGL[ texture.minFilter ] );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, 10242, 33071 );\n\t\t\t_gl.texParameteri( textureType, 10243, 33071 );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, 33071 );\n\n\t\t\t}\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension ) {\n\n\t\t\tif ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return;\n\t\t\tif ( texture.type === HalfFloatType && ( isWebGL2 || extensions.get( 'OES_texture_half_float_linear' ) ) === null ) return;\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tlet textureType = 3553;\n\n\t\tif ( texture.isDataTexture2DArray ) textureType = 35866;\n\t\tif ( texture.isDataTexture3D ) textureType = 32879;\n\n\t\tinitTexture( textureProperties, texture );\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture );\n\n\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\n\t\tconst needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( texture.image ) === false;\n\t\tconst image = resizeImage( texture.image, needsPowerOfTwo, false, maxTextureSize );\n\n\t\tconst supportsMips = isPowerOfTwo( image ) || isWebGL2,\n\t\t\tglFormat = utils.convert( texture.format );\n\n\t\tlet glType = utils.convert( texture.type ),\n\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType );\n\n\t\tsetTextureParameters( textureType, texture, supportsMips );\n\n\t\tlet mipmap;\n\t\tconst mipmaps = texture.mipmaps;\n\n\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t// populate depth texture with dummy data\n\n\t\t\tglInternalFormat = 6402;\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t} else if ( texture.type === UnsignedIntType ) {\n\n\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t} else if ( texture.type === UnsignedInt248Type ) {\n\n\t\t\t\t\tglInternalFormat = 35056;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tglInternalFormat = 33189; // WebGL2 requires sized internalformat for glTexImage2D\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\tconsole.error( 'WebGLRenderer: Floating point depth texture requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// validation checks for WebGL 1\n\n\t\t\tif ( texture.format === DepthFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedShortType;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( texture.format === DepthStencilFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tglInternalFormat = 34041;\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\tstate.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t} else if ( texture.isDataTexture2DArray ) {\n\n\t\t\tstate.texImage3D( 35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else if ( texture.isDataTexture3D ) {\n\n\t\t\tstate.texImage3D( 32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else {\n\n\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tgenerateMipmap( textureType, texture, image.width, image.height );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) {\n\n\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\t\tstate.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t_gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 );\n\t\t_gl.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( 36161, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tlet glInternalFormat = 33189;\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst depthTexture = renderTarget.depthTexture;\n\n\t\t\t\tif ( depthTexture && depthTexture.isDepthTexture ) {\n\n\t\t\t\t\tif ( depthTexture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t\t} else if ( depthTexture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 36096, 36161, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, 35056, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, 34041, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 33306, 36161, renderbuffer );\n\n\t\t} else {\n\n\t\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tconst isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tconst webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 );\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( renderTarget.texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\tinfo.memory.textures ++;\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultisample = ( renderTarget.isWebGLMultisampleRenderTarget === true );\n\t\tconst supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;\n\n\t\t// Handles WebGL2 RGBFormat fallback - #18858\n\n\t\tif ( isWebGL2 && renderTarget.texture.format === RGBFormat && ( renderTarget.texture.type === FloatType || renderTarget.texture.type === HalfFloatType ) ) {\n\n\t\t\trenderTarget.texture.format = RGBAFormat;\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Rendering to textures with RGB format is not supported. Using RGBA format instead.' );\n\n\t\t}\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer );\n\n\t\t\t\t\tconst glFormat = utils.convert( renderTarget.texture.format );\n\t\t\t\t\tconst glType = utils.convert( renderTarget.texture.type );\n\t\t\t\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\n\t\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( 36160, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer );\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, null );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 34067, renderTarget.texture, supportsMips );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, 36064, 34069 + i );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 34067, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( 34067, null );\n\n\t\t} else {\n\n\t\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 3553, renderTarget.texture, supportsMips );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, 36064, 3553 );\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 3553, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( 3553, null );\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\t\tconst supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? 34067 : 3553;\n\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\tgenerateMipmap( target, texture, renderTarget.width, renderTarget.height );\n\t\t\tstate.bindTexture( target, null );\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\t\t_gl.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t_gl.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer );\n\n\t\t\t\tconst width = renderTarget.width;\n\t\t\t\tconst height = renderTarget.height;\n\t\t\t\tlet mask = 16384;\n\n\t\t\t\tif ( renderTarget.depthBuffer ) mask |= 256;\n\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= 1024;\n\n\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 );\n\n\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer ); // see #18905\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn ( isWebGL2 && renderTarget.isWebGLMultisampleRenderTarget ) ?\n\t\t\tMath.min( maxSamples, renderTarget.samples ) : 0;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures.get( texture ) !== frame ) {\n\n\t\t\t_videoTextures.set( texture, frame );\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\t// backwards compatibility\n\n\tlet warnedTexture2D = false;\n\tlet warnedTextureCube = false;\n\n\tfunction safeSetTexture2D( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLRenderTarget ) {\n\n\t\t\tif ( warnedTexture2D === false ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\t\twarnedTexture2D = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\tsetTexture2D( texture, slot );\n\n\t}\n\n\tfunction safeSetTextureCube( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLCubeRenderTarget ) {\n\n\t\t\tif ( warnedTextureCube === false ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead.\" );\n\t\t\t\twarnedTextureCube = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\t// currently relying on the fact that WebGLCubeRenderTarget.texture is a Texture and NOT a CubeTexture\n\t\t// TODO: unify these code paths\n\t\tif ( ( texture && texture.isCubeTexture ) ||\n\t\t\t( Array.isArray( texture.image ) && texture.image.length === 6 ) ) {\n\n\t\t\t// CompressedTexture can have Array in image :/\n\n\t\t\t// this function alone should take care of cube textures\n\t\t\tsetTextureCube( texture, slot );\n\n\t\t} else {\n\n\t\t\t// assumed: texture property of THREE.WebGLCubeRenderTarget\n\t\t\tsetTextureCubeDynamic( texture, slot );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.setTextureCubeDynamic = setTextureCubeDynamic;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\n\tthis.safeSetTexture2D = safeSetTexture2D;\n\tthis.safeSetTextureCube = safeSetTextureCube;\n\n}\n\n/**\n * @author thespite / http://www.twitter.com/thespite\n */\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction convert( p ) {\n\n\t\tlet extension;\n\n\t\tif ( p === UnsignedByteType ) return 5121;\n\t\tif ( p === UnsignedShort4444Type ) return 32819;\n\t\tif ( p === UnsignedShort5551Type ) return 32820;\n\t\tif ( p === UnsignedShort565Type ) return 33635;\n\n\t\tif ( p === ByteType ) return 5120;\n\t\tif ( p === ShortType ) return 5122;\n\t\tif ( p === UnsignedShortType ) return 5123;\n\t\tif ( p === IntType ) return 5124;\n\t\tif ( p === UnsignedIntType ) return 5125;\n\t\tif ( p === FloatType ) return 5126;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( isWebGL2 ) return 5131;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.HALF_FLOAT_OES;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return 6406;\n\t\tif ( p === RGBFormat ) return 6407;\n\t\tif ( p === RGBAFormat ) return 6408;\n\t\tif ( p === LuminanceFormat ) return 6409;\n\t\tif ( p === LuminanceAlphaFormat ) return 6410;\n\t\tif ( p === DepthFormat ) return 6402;\n\t\tif ( p === DepthStencilFormat ) return 34041;\n\t\tif ( p === RedFormat ) return 6403;\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedIntegerFormat ) return 36244;\n\t\tif ( p === RGFormat ) return 33319;\n\t\tif ( p === RGIntegerFormat ) return 33320;\n\t\tif ( p === RGBIntegerFormat ) return 36248;\n\t\tif ( p === RGBAIntegerFormat ) return 36249;\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\n\t\t\tp === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format ||\n\t\t\tp === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_ETC2_Format ) return extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return extension.COMPRESSED_RGBA8_ETC2_EAC;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_4x4_Format || p === SRGB8_ALPHA8_ASTC_5x4_Format || p === SRGB8_ALPHA8_ASTC_5x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_6x5_Format || p === SRGB8_ALPHA8_ASTC_6x6_Format || p === SRGB8_ALPHA8_ASTC_8x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_8x6_Format || p === SRGB8_ALPHA8_ASTC_8x8_Format || p === SRGB8_ALPHA8_ASTC_10x5_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_10x6_Format || p === SRGB8_ALPHA8_ASTC_10x8_Format || p === SRGB8_ALPHA8_ASTC_10x10_Format ||\n\t\t\tp === SRGB8_ALPHA8_ASTC_12x10_Format || p === SRGB8_ALPHA8_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\t// TODO Complete?\n\n\t\t\t\treturn p;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGBA_BPTC_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\t// TODO Complete?\n\n\t\t\t\treturn p;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( isWebGL2 ) return 34042;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ArrayCamera( array ) {\n\n\tPerspectiveCamera.call( this );\n\n\tthis.cameras = array || [];\n\n}\n\nArrayCamera.prototype = Object.assign( Object.create( PerspectiveCamera.prototype ), {\n\n\tconstructor: ArrayCamera,\n\n\tisArrayCamera: true\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Group() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Group';\n\n}\n\nGroup.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Group,\n\n\tisGroup: true\n\n} );\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebXRController() {\n\n\tthis._targetRay = null;\n\tthis._grip = null;\n\n}\n\nObject.assign( WebXRController.prototype, {\n\n\tconstructor: WebXRController,\n\n\tgetTargetRaySpace: function () {\n\n\t\tif ( this._targetRay === null ) {\n\n\t\t\tthis._targetRay = new Group();\n\t\t\tthis._targetRay.matrixAutoUpdate = false;\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t},\n\n\tgetGripSpace: function () {\n\n\t\tif ( this._grip === null ) {\n\n\t\t\tthis._grip = new Group();\n\t\t\tthis._grip.matrixAutoUpdate = false;\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function ( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tupdate: function ( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\n\t\tif ( inputSource ) {\n\n\t\t\tif ( targetRay !== null ) {\n\n\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebXRManager( renderer, gl ) {\n\n\tconst scope = this;\n\n\tlet session = null;\n\n\tlet framebufferScaleFactor = 1.0;\n\n\tlet referenceSpace = null;\n\tlet referenceSpaceType = 'local-floor';\n\n\tlet pose = null;\n\n\tconst controllers = [];\n\tconst inputSourcesMap = new Map();\n\n\t//\n\n\tconst cameraL = new PerspectiveCamera();\n\tcameraL.layers.enable( 1 );\n\tcameraL.viewport = new Vector4();\n\n\tconst cameraR = new PerspectiveCamera();\n\tcameraR.layers.enable( 2 );\n\tcameraR.viewport = new Vector4();\n\n\tconst cameras = [ cameraL, cameraR ];\n\n\tconst cameraVR = new ArrayCamera();\n\tcameraVR.layers.enable( 1 );\n\tcameraVR.layers.enable( 2 );\n\n\tlet _currentDepthNear = null;\n\tlet _currentDepthFar = null;\n\n\t//\n\n\tthis.enabled = false;\n\n\tthis.isPresenting = false;\n\n\tthis.getController = function ( index ) {\n\n\t\tlet controller = controllers[ index ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new WebXRController();\n\t\t\tcontrollers[ index ] = controller;\n\n\t\t}\n\n\t\treturn controller.getTargetRaySpace();\n\n\t};\n\n\tthis.getControllerGrip = function ( index ) {\n\n\t\tlet controller = controllers[ index ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new WebXRController();\n\t\t\tcontrollers[ index ] = controller;\n\n\t\t}\n\n\t\treturn controller.getGripSpace();\n\n\t};\n\n\t//\n\n\tfunction onSessionEvent( event ) {\n\n\t\tconst controller = inputSourcesMap.get( event.inputSource );\n\n\t\tif ( controller ) {\n\n\t\t\tcontroller.dispatchEvent( { type: event.type } );\n\n\t\t}\n\n\t}\n\n\tfunction onSessionEnd() {\n\n\t\tinputSourcesMap.forEach( function ( controller, inputSource ) {\n\n\t\t\tcontroller.disconnect( inputSource );\n\n\t\t} );\n\n\t\tinputSourcesMap.clear();\n\n\t\t//\n\n\t\trenderer.setFramebuffer( null );\n\t\trenderer.setRenderTarget( renderer.getRenderTarget() ); // Hack #15830\n\t\tanimation.stop();\n\n\t\tscope.isPresenting = false;\n\n\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t}\n\n\tfunction onRequestReferenceSpace( value ) {\n\n\t\treferenceSpace = value;\n\n\t\tanimation.setContext( session );\n\t\tanimation.start();\n\n\t\tscope.isPresenting = true;\n\n\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t}\n\n\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\tframebufferScaleFactor = value;\n\n\t\tif ( scope.isPresenting === true ) {\n\n\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\n\n\t\t}\n\n\t};\n\n\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\treferenceSpaceType = value;\n\n\t\tif ( scope.isPresenting === true ) {\n\n\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\n\n\t\t}\n\n\t};\n\n\tthis.getReferenceSpace = function () {\n\n\t\treturn referenceSpace;\n\n\t};\n\n\tthis.getSession = function () {\n\n\t\treturn session;\n\n\t};\n\n\tthis.setSession = function ( value ) {\n\n\t\tsession = value;\n\n\t\tif ( session !== null ) {\n\n\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\n\t\t\tconst attributes = gl.getContextAttributes();\n\n\t\t\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\tgl.makeXRCompatible();\n\n\t\t\t}\n\n\t\t\tconst layerInit = {\n\t\t\t\tantialias: attributes.antialias,\n\t\t\t\talpha: attributes.alpha,\n\t\t\t\tdepth: attributes.depth,\n\t\t\t\tstencil: attributes.stencil,\n\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t};\n\n\t\t\t// eslint-disable-next-line no-undef\n\t\t\tconst baseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\tsession.updateRenderState( { baseLayer: baseLayer } );\n\n\t\t\tsession.requestReferenceSpace( referenceSpaceType ).then( onRequestReferenceSpace );\n\n\t\t\t//\n\n\t\t\tsession.addEventListener( 'inputsourceschange', updateInputSources );\n\n\t\t}\n\n\t};\n\n\tfunction updateInputSources( event ) {\n\n\t\tconst inputSources = session.inputSources;\n\n\t\t// Assign inputSources to available controllers\n\n\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tinputSourcesMap.set( inputSources[ i ], controllers[ i ] );\n\n\t\t}\n\n\t\t// Notify disconnected\n\n\t\tfor ( let i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\tconst inputSource = event.removed[ i ];\n\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\tif ( controller ) {\n\n\t\t\t\tcontroller.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\t\t\t\tinputSourcesMap.delete( inputSource );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Notify connected\n\n\t\tfor ( let i = 0; i < event.added.length; i ++ ) {\n\n\t\t\tconst inputSource = event.added[ i ];\n\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\tif ( controller ) {\n\n\t\t\t\tcontroller.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t//\n\n\tconst cameraLPos = new Vector3();\n\tconst cameraRPos = new Vector3();\n\n\t/**\n\t * @author jsantell / https://www.jsantell.com/\n\t *\n\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t * the cameras' projection and world matrices have already been set.\n\t * And that near and far planes are identical for both cameras.\n\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t */\n\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\tconst ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\tconst projL = cameraL.projectionMatrix.elements;\n\t\tconst projR = cameraR.projectionMatrix.elements;\n\n\t\t// VR systems will have identical far and near planes, and\n\t\t// most likely identical top and bottom frustum extents.\n\t\t// Use the left camera for these values.\n\t\tconst near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\tconst far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\tconst topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\tconst bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\tconst leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\tconst rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\tconst left = near * leftFov;\n\t\tconst right = near * rightFov;\n\n\t\t// Calculate the new camera's position offset from the\n\t\t// left camera. xOffset should be roughly half `ipd`.\n\t\tconst zOffset = ipd / ( - leftFov + rightFov );\n\t\tconst xOffset = zOffset * - leftFov;\n\n\t\t// TODO: Better way to apply this offset?\n\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\tcamera.translateX( xOffset );\n\t\tcamera.translateZ( zOffset );\n\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t\t// Find the union of the frustum values of the cameras and scale\n\t\t// the values so that the near plane's position does not change in world space,\n\t\t// although must now be relative to the new union camera.\n\t\tconst near2 = near + zOffset;\n\t\tconst far2 = far + zOffset;\n\t\tconst left2 = left - xOffset;\n\t\tconst right2 = right + ( ipd - xOffset );\n\t\tconst top2 = topFov * far / far2 * near2;\n\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\n\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\n\t}\n\n\tfunction updateCamera( camera, parent ) {\n\n\t\tif ( parent === null ) {\n\n\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t} else {\n\n\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t}\n\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t}\n\n\tthis.getCamera = function ( camera ) {\n\n\t\tcameraVR.near = cameraR.near = cameraL.near = camera.near;\n\t\tcameraVR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\tif ( _currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.far ) {\n\n\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\tsession.updateRenderState( {\n\t\t\t\tdepthNear: cameraVR.near,\n\t\t\t\tdepthFar: cameraVR.far\n\t\t\t} );\n\n\t\t\t_currentDepthNear = cameraVR.near;\n\t\t\t_currentDepthFar = cameraVR.far;\n\n\t\t}\n\n\t\tconst parent = camera.parent;\n\t\tconst cameras = cameraVR.cameras;\n\n\t\tupdateCamera( cameraVR, parent );\n\n\t\tfor ( let i = 0; i < cameras.length; i ++ ) {\n\n\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t}\n\n\t\t// update camera and its children\n\n\t\tcamera.matrixWorld.copy( cameraVR.matrixWorld );\n\n\t\tconst children = camera.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( true );\n\n\t\t}\n\n\t\t// update projection matrix for proper view frustum culling\n\n\t\tif ( cameras.length === 2 ) {\n\n\t\t\tsetProjectionFromUnion( cameraVR, cameraL, cameraR );\n\n\t\t} else {\n\n\t\t\t// assume single camera setup (AR)\n\n\t\t\tcameraVR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t}\n\n\t\treturn cameraVR;\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tpose = frame.getViewerPose( referenceSpace );\n\n\t\tif ( pose !== null ) {\n\n\t\t\tconst views = pose.views;\n\t\t\tconst baseLayer = session.renderState.baseLayer;\n\n\t\t\trenderer.setFramebuffer( baseLayer.framebuffer );\n\n\t\t\tlet cameraVRNeedsUpdate = false;\n\n\t\t\t// check if it's necessary to rebuild cameraVR's camera list\n\n\t\t\tif ( views.length !== cameraVR.cameras.length ) {\n\n\t\t\t\tcameraVR.cameras.length = 0;\n\t\t\t\tcameraVRNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0; i < views.length; i ++ ) {\n\n\t\t\t\tconst view = views[ i ];\n\t\t\t\tconst viewport = baseLayer.getViewport( view );\n\n\t\t\t\tconst camera = cameras[ i ];\n\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\tcameraVR.matrix.copy( camera.matrix );\n\n\t\t\t\t}\n\n\t\t\t\tif ( cameraVRNeedsUpdate === true ) {\n\n\t\t\t\t\tcameraVR.cameras.push( camera );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst inputSources = session.inputSources;\n\n\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tconst controller = controllers[ i ];\n\t\t\tconst inputSource = inputSources[ i ];\n\n\t\t\tcontroller.update( inputSource, frame, referenceSpace );\n\n\t\t}\n\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\n\t};\n\n\tthis.dispose = function () {};\n\n}\n\nObject.assign( WebXRManager.prototype, EventDispatcher.prototype );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLMaterials( properties ) {\n\n\tfunction refreshFogUniforms( uniforms, fog ) {\n\n\t\tuniforms.fogColor.value.copy( fog.color );\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshMaterialUniforms( uniforms, material, environment, pixelRatio, height ) {\n\n\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsLambert( uniforms, material );\n\n\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsToon( uniforms, material );\n\n\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsPhong( uniforms, material );\n\n\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material, environment );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material, environment );\n\n\t\t\t} else {\n\n\t\t\t\trefreshUniformsStandard( uniforms, material, environment );\n\n\t\t\t}\n\n\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsMatcap( uniforms, material );\n\n\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDepth( uniforms, material );\n\n\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDistance( uniforms, material );\n\n\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsNormal( uniforms, material );\n\n\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\trefreshUniformsLine( uniforms, material );\n\n\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsDash( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\trefreshUniformsPoints( uniforms, material, pixelRatio, height );\n\n\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\trefreshUniformsSprites( uniforms, material );\n\n\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\tuniforms.color.value.copy( material.color );\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t} else if ( material.isShaderMaterial ) {\n\n\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsCommon( uniforms, material, environment ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t}\n\n\t\tconst envMap = material.envMap || environment;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\tuniforms.flipEnvMap.value = envMap.isCubeTexture ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t\tuniforms.maxMipLevel.value = properties.get( envMap ).__maxMipLevel;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. normal map\n\t\t// 4. bump map\n\t\t// 5. alpha map\n\t\t// 6. emissive map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities for uv2\n\t\t// 1. ao map\n\t\t// 2. light map\n\n\t\tlet uv2ScaleMap;\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuv2ScaleMap = material.aoMap;\n\n\t\t} else if ( material.lightMap ) {\n\n\t\t\tuv2ScaleMap = material.lightMap;\n\n\t\t}\n\n\t\tif ( uv2ScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uv2ScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuv2ScaleMap = uv2ScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uv2ScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuv2ScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uv2Transform.value.copy( uv2ScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material, pixelRatio, height ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * pixelRatio;\n\t\tuniforms.scale.value = height * 0.5;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLambert( uniforms, material ) {\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material, environment ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.envMap || environment ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material, environment ) {\n\n\t\trefreshUniformsStandard( uniforms, material, environment );\n\n\t\tuniforms.reflectivity.value = material.reflectivity; // also part of uniforms common\n\n\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\t\tif ( material.sheen ) uniforms.sheen.value.copy( material.sheen );\n\n\t\tif ( material.clearcoatMap ) {\n\n\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\n\t\t}\n\n\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t}\n\n\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t}\n\n\t\t}\n\n\t\tuniforms.transparency.value = material.transparency;\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDepth( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tuniforms.referencePosition.value.copy( material.referencePosition );\n\t\tuniforms.nearDistance.value = material.nearDistance;\n\t\tuniforms.farDistance.value = material.farDistance;\n\n\t}\n\n\tfunction refreshUniformsNormal( uniforms, material ) {\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n * @author tschw\n */\n\nfunction WebGLRenderer( parameters ) {\n\n\tparameters = parameters || {};\n\n\tconst _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),\n\t\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,\n\t\t_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',\n\t\t_failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;\n\n\tlet currentRenderList = null;\n\tlet currentRenderState = null;\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\n\t// Debug configuration container\n\tthis.debug = {\n\n\t\t/**\n\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t * @type {boolean}\n\t\t */\n\t\tcheckShaderErrors: true\n\t};\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.gammaFactor = 2.0;\t// for backwards compatibility\n\tthis.outputEncoding = LinearEncoding;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = NoToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\n\t// morphs\n\n\tthis.maxMorphTargets = 8;\n\tthis.maxMorphNormals = 4;\n\n\t// internal properties\n\n\tconst _this = this;\n\n\tlet _isContextLost = false;\n\n\t// internal state cache\n\n\tlet _framebuffer = null;\n\n\tlet _currentActiveCubeFace = 0;\n\tlet _currentActiveMipmapLevel = 0;\n\tlet _currentRenderTarget = null;\n\tlet _currentFramebuffer = null;\n\tlet _currentMaterialId = - 1;\n\n\tlet _currentCamera = null;\n\tlet _currentArrayCamera = null;\n\n\tconst _currentViewport = new Vector4();\n\tconst _currentScissor = new Vector4();\n\tlet _currentScissorTest = null;\n\n\t//\n\n\tlet _width = _canvas.width;\n\tlet _height = _canvas.height;\n\n\tlet _pixelRatio = 1;\n\tlet _opaqueSort = null;\n\tlet _transparentSort = null;\n\n\tconst _viewport = new Vector4( 0, 0, _width, _height );\n\tconst _scissor = new Vector4( 0, 0, _width, _height );\n\tlet _scissorTest = false;\n\n\t// frustum\n\n\tconst _frustum = new Frustum();\n\n\t// clipping\n\n\tconst _clipping = new WebGLClipping();\n\tlet _clippingEnabled = false;\n\tlet _localClippingEnabled = false;\n\n\t// camera matrices cache\n\n\tconst _projScreenMatrix = new Matrix4();\n\n\tconst _vector3 = new Vector3();\n\n\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\t// initialize\n\n\tlet _gl = _context;\n\n\tfunction getContext( contextNames, contextAttributes ) {\n\n\t\tfor ( let i = 0; i < contextNames.length; i ++ ) {\n\n\t\t\tconst contextName = contextNames[ i ];\n\t\t\tconst context = _canvas.getContext( contextName, contextAttributes );\n\t\t\tif ( context !== null ) return context;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\ttry {\n\n\t\tconst contextAttributes = {\n\t\t\talpha: _alpha,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer,\n\t\t\tpowerPreference: _powerPreference,\n\t\t\tfailIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat\n\t\t};\n\n\t\t// event listeners must be registered before WebGL context is created, see #12753\n\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tconst contextNames = [ 'webgl2', 'webgl', 'experimental-webgl' ];\n\n\t\t\tif ( _this.isWebGL1Renderer === true ) {\n\n\t\t\t\tcontextNames.shift();\n\n\t\t\t}\n\n\t\t\t_gl = getContext( contextNames, contextAttributes );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tif ( getContext( contextNames ) ) {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t};\n\n\t\t}\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\tthrow error;\n\n\t}\n\n\tlet extensions, capabilities, state, info;\n\tlet properties, textures, attributes, geometries, objects;\n\tlet programCache, materials, renderLists, renderStates;\n\n\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\tlet utils, bindingStates;\n\n\tfunction initGLContext() {\n\n\t\textensions = new WebGLExtensions( _gl );\n\n\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\tif ( capabilities.isWebGL2 === false ) {\n\n\t\t\textensions.get( 'WEBGL_depth_texture' );\n\t\t\textensions.get( 'OES_texture_float' );\n\t\t\textensions.get( 'OES_texture_half_float' );\n\t\t\textensions.get( 'OES_texture_half_float_linear' );\n\t\t\textensions.get( 'OES_standard_derivatives' );\n\t\t\textensions.get( 'OES_element_index_uint' );\n\t\t\textensions.get( 'OES_vertex_array_object' );\n\t\t\textensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t}\n\n\t\textensions.get( 'OES_texture_float_linear' );\n\n\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\tstate = new WebGLState( _gl, extensions, capabilities );\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t\tinfo = new WebGLInfo( _gl );\n\t\tproperties = new WebGLProperties();\n\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\tattributes = new WebGLAttributes( _gl, capabilities );\n\t\tbindingStates = new WebGLBindingStates( _gl, extensions, attributes, capabilities );\n\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\n\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\tmorphtargets = new WebGLMorphtargets( _gl );\n\t\tprogramCache = new WebGLPrograms( _this, extensions, capabilities, bindingStates );\n\t\tmaterials = new WebGLMaterials( properties );\n\t\trenderLists = new WebGLRenderLists();\n\t\trenderStates = new WebGLRenderStates();\n\n\t\tbackground = new WebGLBackground( _this, state, objects, _premultipliedAlpha );\n\n\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\n\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\n\n\t\tinfo.programs = programCache.programs;\n\n\t\t_this.capabilities = capabilities;\n\t\t_this.extensions = extensions;\n\t\t_this.properties = properties;\n\t\t_this.renderLists = renderLists;\n\t\t_this.state = state;\n\t\t_this.info = info;\n\n\t}\n\n\tinitGLContext();\n\n\t// xr\n\n\tconst xr = new WebXRManager( _this, _gl );\n\n\tthis.xr = xr;\n\n\t// shadow map\n\n\tconst shadowMap = new WebGLShadowMap( _this, objects, capabilities.maxTextureSize );\n\n\tthis.shadowMap = shadowMap;\n\n\t// API\n\n\tthis.getContext = function () {\n\n\t\treturn _gl;\n\n\t};\n\n\tthis.getContextAttributes = function () {\n\n\t\treturn _gl.getContextAttributes();\n\n\t};\n\n\tthis.forceContextLoss = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.loseContext();\n\n\t};\n\n\tthis.forceContextRestore = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.restoreContext();\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _width, _height, false );\n\n\t};\n\n\tthis.getSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getsize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width, _height );\n\n\t};\n\n\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\tif ( xr.isPresenting ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = Math.floor( width * _pixelRatio );\n\t\t_canvas.height = Math.floor( height * _pixelRatio );\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getdrawingBufferSize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t};\n\n\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_pixelRatio = pixelRatio;\n\n\t\t_canvas.width = Math.floor( width * pixelRatio );\n\t\t_canvas.height = Math.floor( height * pixelRatio );\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getCurrentViewport = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getCurrentViewport() now requires a Vector4 as an argument' );\n\n\t\t\ttarget = new Vector4();\n\n\t\t}\n\n\t\treturn target.copy( _currentViewport );\n\n\t};\n\n\tthis.getViewport = function ( target ) {\n\n\t\treturn target.copy( _viewport );\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_viewport.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissor = function ( target ) {\n\n\t\treturn target.copy( _scissor );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_scissor.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissorTest = function () {\n\n\t\treturn _scissorTest;\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\tthis.setOpaqueSort = function ( method ) {\n\n\t\t_opaqueSort = method;\n\n\t};\n\n\tthis.setTransparentSort = function ( method ) {\n\n\t\t_transparentSort = method;\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function () {\n\n\t\treturn background.getClearColor();\n\n\t};\n\n\tthis.setClearColor = function () {\n\n\t\tbackground.setClearColor.apply( background, arguments );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn background.getClearAlpha();\n\n\t};\n\n\tthis.setClearAlpha = function () {\n\n\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t};\n\n\tthis.clear = function ( color, depth, stencil ) {\n\n\t\tlet bits = 0;\n\n\t\tif ( color === undefined || color ) bits |= 16384;\n\t\tif ( depth === undefined || depth ) bits |= 256;\n\t\tif ( stencil === undefined || stencil ) bits |= 1024;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\t//\n\n\tthis.dispose = function () {\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\trenderLists.dispose();\n\t\trenderStates.dispose();\n\t\tproperties.dispose();\n\t\tobjects.dispose();\n\t\tbindingStates.dispose();\n\n\t\txr.dispose();\n\n\t\tanimation.stop();\n\n\t};\n\n\t// Events\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t_isContextLost = true;\n\n\t}\n\n\tfunction onContextRestore( /* event */ ) {\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t_isContextLost = false;\n\n\t\tinitGLContext();\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tconst material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\tdeallocateMaterial( material );\n\n\t}\n\n\t// Buffer deallocation\n\n\tfunction deallocateMaterial( material ) {\n\n\t\treleaseMaterialProgramReference( material );\n\n\t\tproperties.remove( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReference( material ) {\n\n\t\tconst programInfo = properties.get( material ).program;\n\n\t\tmaterial.program = undefined;\n\n\t\tif ( programInfo !== undefined ) {\n\n\t\t\tprogramCache.releaseProgram( programInfo );\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tfunction renderObjectImmediate( object, program ) {\n\n\t\tobject.render( function ( object ) {\n\n\t\t\t_this.renderBufferImmediate( object, program );\n\n\t\t} );\n\n\t}\n\n\tthis.renderBufferImmediate = function ( object, program ) {\n\n\t\tbindingStates.initAttributes();\n\n\t\tconst buffers = properties.get( object );\n\n\t\tif ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();\n\t\tif ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();\n\t\tif ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();\n\t\tif ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tif ( object.hasPositions ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.position );\n\t\t\t_gl.bufferData( 34962, object.positionArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.position );\n\t\t\t_gl.vertexAttribPointer( programAttributes.position, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasNormals ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.normal );\n\t\t\t_gl.bufferData( 34962, object.normalArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.normal );\n\t\t\t_gl.vertexAttribPointer( programAttributes.normal, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasUvs ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.uv );\n\t\t\t_gl.bufferData( 34962, object.uvArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.uv );\n\t\t\t_gl.vertexAttribPointer( programAttributes.uv, 2, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasColors ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.color );\n\t\t\t_gl.bufferData( 34962, object.colorArray, 35048 );\n\n\t\t\tbindingStates.enableAttribute( programAttributes.color );\n\t\t\t_gl.vertexAttribPointer( programAttributes.color, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tbindingStates.disableUnusedAttributes();\n\n\t\t_gl.drawArrays( 4, 0, object.count );\n\n\t\tobject.count = 0;\n\n\t};\n\n\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\tconst program = setProgram( camera, scene, material, object );\n\n\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t//\n\n\t\tlet index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\n\t\t//\n\n\t\tif ( index === null ) {\n\n\t\t\tif ( position === undefined || position.count === 0 ) return;\n\n\t\t} else if ( index.count === 0 ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t//\n\n\t\tlet rangeFactor = 1;\n\n\t\tif ( material.wireframe === true ) {\n\n\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\t\t\trangeFactor = 2;\n\n\t\t}\n\n\t\tif ( material.morphTargets || material.morphNormals ) {\n\n\t\t\tmorphtargets.update( object, geometry, material, program );\n\n\t\t}\n\n\t\tbindingStates.setup( object, material, program, geometry, index );\n\n\t\tlet attribute;\n\t\tlet renderer = bufferRenderer;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattribute = attributes.get( index );\n\n\t\t\trenderer = indexedBufferRenderer;\n\t\t\trenderer.setIndex( attribute );\n\n\t\t}\n\n\t\t//\n\n\t\tconst dataCount = ( index !== null ) ? index.count : position.count;\n\n\t\tconst rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tconst rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tconst groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tconst groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tconst drawStart = Math.max( rangeStart, groupStart );\n\t\tconst drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tconst drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\t//\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 4 );\n\n\t\t\t}\n\n\t\t} else if ( object.isLine ) {\n\n\t\t\tlet lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\trenderer.setMode( 2 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 3 );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( 0 );\n\n\t\t} else if ( object.isSprite ) {\n\n\t\t\trenderer.setMode( 4 );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\trenderer.renderInstances( geometry, drawStart, drawCount, object.count );\n\n\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\tconst instanceCount = Math.min( geometry.instanceCount, geometry._maxInstanceCount );\n\n\t\t\trenderer.renderInstances( geometry, drawStart, drawCount, instanceCount );\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\t// Compile\n\n\tthis.compile = function ( scene, camera ) {\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tif ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tconst compiled = new WeakMap();\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tlet material = object.material;\n\n\t\t\tif ( material ) {\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\tlet material2 = material[ i ];\n\n\t\t\t\t\t\tif ( compiled.has( material2 ) === false ) {\n\n\t\t\t\t\t\t\tinitMaterial( material2, scene, object );\n\t\t\t\t\t\t\tcompiled.set( material2 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( compiled.has( material ) === false ) {\n\n\t\t\t\t\tinitMaterial( material, scene, object );\n\t\t\t\t\tcompiled.set( material );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time ) {\n\n\t\tif ( xr.isPresenting ) return;\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tif ( typeof window !== 'undefined' ) animation.setContext( window );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\t\txr.setAnimationLoop( callback );\n\n\t\t( callback === null ) ? animation.stop() : animation.start();\n\n\t};\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tlet renderTarget, forceClear;\n\n\t\tif ( arguments[ 2 ] !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead.' );\n\t\t\trenderTarget = arguments[ 2 ];\n\n\t\t}\n\n\t\tif ( arguments[ 3 ] !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead.' );\n\t\t\tforceClear = arguments[ 3 ];\n\n\t\t}\n\n\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( _isContextLost === true ) return;\n\n\t\t// reset caching for this frame\n\n\t\tbindingStates.resetDefaultState();\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\t// update scene graph\n\n\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t// update camera matrices and frustum\n\n\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\tcamera = xr.getCamera( camera );\n\n\t\t}\n\n\t\t//\n\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, renderTarget || _currentRenderTarget );\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tcurrentRenderList = renderLists.get( scene, camera );\n\t\tcurrentRenderList.init();\n\n\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\tcurrentRenderList.finish();\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled === true ) _clipping.beginShadows();\n\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tif ( _clippingEnabled === true ) _clipping.endShadows();\n\n\t\t//\n\n\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\t\tif ( renderTarget !== undefined ) {\n\n\t\t\tthis.setRenderTarget( renderTarget );\n\n\t\t}\n\n\t\t//\n\n\t\tbackground.render( currentRenderList, scene, camera, forceClear );\n\n\t\t// render scene\n\n\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\n\n\t\t//\n\n\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\n\n\t\t//\n\n\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t}\n\n\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\tstate.buffers.depth.setTest( true );\n\t\tstate.buffers.depth.setMask( true );\n\t\tstate.buffers.color.setMask( true );\n\n\t\tstate.setPolygonOffset( false );\n\n\t\t// _gl.finish();\n\n\t\tcurrentRenderList = null;\n\t\tcurrentRenderState = null;\n\n\t};\n\n\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible ) {\n\n\t\t\tif ( object.isGroup ) {\n\n\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isImmediateRenderObject ) {\n\n\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t}\n\n\t\t\t\tcurrentRenderList.push( object, null, object.material, groupOrder, _vector3.z, null );\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\t// update skeleton only once in a frame\n\n\t\t\t\t\tif ( object.skeleton.frame !== info.render.frame ) {\n\n\t\t\t\t\t\tobject.skeleton.update();\n\t\t\t\t\t\tobject.skeleton.frame = info.render.frame;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t}\n\n\t}\n\n\tfunction renderObjects( renderList, scene, camera ) {\n\n\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tconst renderItem = renderList[ i ];\n\n\t\t\tconst object = renderItem.object;\n\t\t\tconst geometry = renderItem.geometry;\n\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\tconst group = renderItem.group;\n\n\t\t\tif ( camera.isArrayCamera ) {\n\n\t\t\t\t_currentArrayCamera = camera;\n\n\t\t\t\tconst cameras = camera.cameras;\n\n\t\t\t\tfor ( let j = 0, jl = cameras.length; j < jl; j ++ ) {\n\n\t\t\t\t\tconst camera2 = cameras[ j ];\n\n\t\t\t\t\tif ( object.layers.test( camera2.layers ) ) {\n\n\t\t\t\t\t\tstate.viewport( _currentViewport.copy( camera2.viewport ) );\n\n\t\t\t\t\t\tcurrentRenderState.setupLights( camera2 );\n\n\t\t\t\t\t\trenderObject( object, scene, camera2, geometry, material, group );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_currentArrayCamera = null;\n\n\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\tif ( object.isImmediateRenderObject ) {\n\n\t\t\tconst program = setProgram( camera, scene, material, object );\n\n\t\t\tstate.setMaterial( material );\n\n\t\t\tbindingStates.reset();\n\n\t\t\trenderObjectImmediate( object, program );\n\n\t\t} else {\n\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t}\n\n\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t}\n\n\tfunction initMaterial( material, scene, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tconst lights = currentRenderState.state.lights;\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tconst lightsStateVersion = lights.state.version;\n\n\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, _clipping.numPlanes, _clipping.numIntersection, object );\n\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\tlet program = materialProperties.program;\n\t\tlet programChange = true;\n\n\t\tif ( program === undefined ) {\n\n\t\t\t// new material\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t} else if ( program.cacheKey !== programCacheKey ) {\n\n\t\t\t// changed glsl or parameters\n\t\t\treleaseMaterialProgramReference( material );\n\n\t\t} else if ( materialProperties.lightsStateVersion !== lightsStateVersion ) {\n\n\t\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\t\tprogramChange = false;\n\n\t\t} else if ( parameters.shaderID !== undefined ) {\n\n\t\t\t// same glsl and uniform list\n\t\t\treturn;\n\n\t\t} else {\n\n\t\t\t// only rebuild uniform list\n\t\t\tprogramChange = false;\n\n\t\t}\n\n\t\tif ( programChange ) {\n\n\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\n\t\t\tmaterialProperties.program = program;\n\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\t\t\tmaterialProperties.outputEncoding = parameters.outputEncoding;\n\t\t\tmaterial.program = program;\n\n\t\t}\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tif ( material.morphTargets ) {\n\n\t\t\tmaterial.numSupportedMorphTargets = 0;\n\n\t\t\tfor ( let i = 0; i < _this.maxMorphTargets; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphTarget' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphTargets ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.morphNormals ) {\n\n\t\t\tmaterial.numSupportedMorphNormals = 0;\n\n\t\t\tfor ( let i = 0; i < _this.maxMorphNormals; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphNormal' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphNormals ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst uniforms = materialProperties.uniforms;\n\n\t\tif ( ! material.isShaderMaterial &&\n\t\t\t! material.isRawShaderMaterial ||\n\t\t\tmaterial.clipping === true ) {\n\n\t\t\tmaterialProperties.numClippingPlanes = _clipping.numPlanes;\n\t\t\tmaterialProperties.numIntersection = _clipping.numIntersection;\n\t\t\tuniforms.clippingPlanes = _clipping.uniform;\n\n\t\t}\n\n\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tmaterialProperties.fog = scene.fog;\n\n\t\t// store the light setup it was created for\n\n\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\tuniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t}\n\n\t\tconst progUniforms = materialProperties.program.getUniforms(),\n\t\t\tuniformsList =\n\t\t\t\tWebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t}\n\n\tfunction setProgram( camera, scene, material, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\ttextures.resetTextureUnits();\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tconst encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : _currentRenderTarget.texture.encoding;\n\n\t\tconst materialProperties = properties.get( material );\n\t\tconst lights = currentRenderState.state.lights;\n\n\t\tif ( _clippingEnabled === true ) {\n\n\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\n\n\t\t\t\tconst useCache =\n\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\t_clipping.setState(\n\t\t\t\t\tmaterial.clippingPlanes, material.clipIntersection, material.clipShadows,\n\t\t\t\t\tcamera, materialProperties, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\tif ( materialProperties.program === undefined ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( material.fog && materialProperties.fog !== fog ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.environment !== environment ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t( materialProperties.numClippingPlanes !== _clipping.numPlanes ||\n\t\t\t\tmaterialProperties.numIntersection !== _clipping.numIntersection ) ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t} else if ( materialProperties.outputEncoding !== encoding ) {\n\n\t\t\t\tinitMaterial( material, scene, object );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tinitMaterial( material, scene, object );\n\t\t\tmaterialProperties.__version = material.version;\n\n\t\t}\n\n\t\tlet refreshProgram = false;\n\t\tlet refreshMaterial = false;\n\t\tlet refreshLights = false;\n\n\t\tconst program = materialProperties.program,\n\t\t\tp_uniforms = program.getUniforms(),\n\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\trefreshProgram = true;\n\t\t\trefreshMaterial = true;\n\t\t\trefreshLights = true;\n\n\t\t}\n\n\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t_currentMaterialId = material.id;\n\n\t\t\trefreshMaterial = true;\n\n\t\t}\n\n\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t}\n\n\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t}\n\n\t\t\t// load material specific uniforms\n\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\tif ( material.isShaderMaterial ||\n\t\t\t\tmaterial.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.envMap ) {\n\n\t\t\t\tconst uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ||\n\t\t\t\tmaterial.isShadowMaterial ||\n\t\t\t\tmaterial.skinning ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// skinning uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone texture must go before other textures\n\t\t// otherwise textures used for skinning can take over texture units reserved for other material textures\n\n\t\tif ( material.skinning ) {\n\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\tconst skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tconst bones = skeleton.bones;\n\n\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === undefined ) {\n\n\t\t\t\t\t\t// layout (1 matrix = 4 pixels)\n\t\t\t\t\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t\t\t\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t\t\t\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t\t\t\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t\t\t\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\n\t\t\t\t\t\tlet size = Math.sqrt( bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\t\t\t\t\tsize = MathUtils.ceilPowerOfTwo( size );\n\t\t\t\t\t\tsize = Math.max( size, 4 );\n\n\t\t\t\t\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\t\t\t\t\tboneMatrices.set( skeleton.boneMatrices ); // copy current values\n\n\t\t\t\t\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\n\t\t\t\t\t\tskeleton.boneMatrices = boneMatrices;\n\t\t\t\t\t\tskeleton.boneTexture = boneTexture;\n\t\t\t\t\t\tskeleton.boneTextureSize = size;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tp_uniforms.setOptional( _gl, skeleton, 'boneMatrices' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t}\n\n\t\tif ( refreshMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t// values\n\t\t\t\t//\n\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t// the GL state when required\n\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t}\n\n\t\t\t// refresh uniforms common to several materials\n\n\t\t\tif ( fog && material.fog ) {\n\n\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, environment, _pixelRatio, _height );\n\n\t\t\t// RectAreaLight Texture\n\t\t\t// TODO (mrdoob): Find a nicer implementation\n\n\t\t\tif ( m_uniforms.ltc_1 !== undefined ) m_uniforms.ltc_1.value = UniformsLib.LTC_1;\n\t\t\tif ( m_uniforms.ltc_2 !== undefined ) m_uniforms.ltc_2.value = UniformsLib.LTC_2;\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\n\t\t}\n\n\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t}\n\n\t\t// common matrices\n\n\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\treturn program;\n\n\t}\n\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\tuniforms.directionalLights.needsUpdate = value;\n\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\tuniforms.pointLights.needsUpdate = value;\n\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\tuniforms.spotLights.needsUpdate = value;\n\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t}\n\n\tfunction materialNeedsLights( material ) {\n\n\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t}\n\n\t//\n\tthis.setFramebuffer = function ( value ) {\n\n\t\tif ( _framebuffer !== value && _currentRenderTarget === null ) _gl.bindFramebuffer( 36160, value );\n\n\t\t_framebuffer = value;\n\n\t};\n\n\tthis.getActiveCubeFace = function () {\n\n\t\treturn _currentActiveCubeFace;\n\n\t};\n\n\tthis.getActiveMipmapLevel = function () {\n\n\t\treturn _currentActiveMipmapLevel;\n\n\t};\n\n\tthis.getRenderTarget = function () {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget, activeCubeFace, activeMipmapLevel ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\tif ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {\n\n\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t}\n\n\t\tlet framebuffer = _framebuffer;\n\t\tlet isCube = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace || 0 ];\n\t\t\t\tisCube = true;\n\n\t\t\t} else if ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t} else {\n\n\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t}\n\n\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t} else {\n\n\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t}\n\n\t\tif ( _currentFramebuffer !== framebuffer ) {\n\n\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t\t_currentFramebuffer = framebuffer;\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport );\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tif ( isCube ) {\n\n\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( 36160, 36064, 34069 + ( activeCubeFace || 0 ), textureProperties.__webglTexture, activeMipmapLevel || 0 );\n\n\t\t}\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t}\n\n\t\tif ( framebuffer ) {\n\n\t\t\tlet restore = false;\n\n\t\t\tif ( framebuffer !== _currentFramebuffer ) {\n\n\t\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\n\t\t\t\trestore = true;\n\n\t\t\t}\n\n\t\t\ttry {\n\n\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // IE11, Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_float' ) || extensions.get( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t! ( textureType === HalfFloatType && ( capabilities.isWebGL2 ? extensions.get( 'EXT_color_buffer_float' ) : extensions.get( 'EXT_color_buffer_half_float' ) ) ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _gl.checkFramebufferStatus( 36160 ) === 36053 ) {\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\tif ( restore ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, _currentFramebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.copyFramebufferToTexture = function ( position, texture, level ) {\n\n\t\tif ( level === undefined ) level = 0;\n\n\t\tconst levelScale = Math.pow( 2, - level );\n\t\tconst width = Math.floor( texture.image.width * levelScale );\n\t\tconst height = Math.floor( texture.image.height * levelScale );\n\t\tconst glFormat = utils.convert( texture.format );\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t_gl.copyTexImage2D( 3553, level, glFormat, position.x, position.y, width, height, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level ) {\n\n\t\tif ( level === undefined ) level = 0;\n\n\t\tconst width = srcTexture.image.width;\n\t\tconst height = srcTexture.image.height;\n\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\tconst glType = utils.convert( dstTexture.type );\n\n\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\t// As another texture upload may have changed pixelStorei\n\t\t// parameters, make sure they are correct for the dstTexture\n\t\t_gl.pixelStorei( 37440, dstTexture.flipY );\n\t\t_gl.pixelStorei( 37441, dstTexture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, dstTexture.unpackAlignment );\n\n\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t} else {\n\n\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\t_gl.compressedTexSubImage2D( 3553, level, position.x, position.y, srcTexture.mipmaps[ 0 ].width, srcTexture.mipmaps[ 0 ].height, glFormat, srcTexture.mipmaps[ 0 ].data );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Generate mipmaps only when copying level 0\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( 3553 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.initTexture = function ( texture ) {\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebGL1Renderer( parameters ) {\n\n\tWebGLRenderer.call( this, parameters );\n\n}\n\nWebGL1Renderer.prototype = Object.assign( Object.create( WebGLRenderer.prototype ), {\n\n\tconstructor: WebGL1Renderer,\n\n\tisWebGL1Renderer: true\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction FogExp2( color, density ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\tthis.density = ( density !== undefined ) ? density : 0.00025;\n\n}\n\nObject.assign( FogExp2.prototype, {\n\n\tisFogExp2: true,\n\n\tclone: function () {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t},\n\n\ttoJSON: function ( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Fog( color, near, far ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\n\tthis.near = ( near !== undefined ) ? near : 1;\n\tthis.far = ( far !== undefined ) ? far : 1000;\n\n}\n\nObject.assign( Fog.prototype, {\n\n\tisFog: true,\n\n\tclone: function () {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t},\n\n\ttoJSON: function ( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InterleavedBuffer( array, stride ) {\n\n\tthis.array = array;\n\tthis.stride = stride;\n\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\tthis.usage = StaticDrawUsage;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n\tthis.uuid = MathUtils.generateUUID();\n\n}\n\nObject.defineProperty( InterleavedBuffer.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\n\tisInterleavedBuffer: true,\n\n\tonUploadCallback: function () {},\n\n\tsetUsage: function ( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( let i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = MathUtils.generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\n\n\t\t}\n\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\n\n\t\tconst ib = new InterleavedBuffer( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\t// generate UUID for array buffer if necessary\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = MathUtils.generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.prototype.slice.call( new Uint32Array( this.array.buffer ) );\n\n\t\t}\n\n\t\t//\n\n\t\treturn {\n\t\t\tuuid: this.uuid,\n\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tstride: this.stride\n\t\t};\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nconst _vector$6 = new Vector3();\n\nfunction InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) {\n\n\tthis.name = '';\n\n\tthis.data = interleavedBuffer;\n\tthis.itemSize = itemSize;\n\tthis.offset = offset;\n\n\tthis.normalized = normalized === true;\n\n}\n\nObject.defineProperties( InterleavedBufferAttribute.prototype, {\n\n\tcount: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.count;\n\n\t\t}\n\n\t},\n\n\tarray: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.array;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( InterleavedBufferAttribute.prototype, {\n\n\tisInterleavedBufferAttribute: true,\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.x = this.getX( i );\n\t\t\t_vector$6.y = this.getY( i );\n\t\t\t_vector$6.z = this.getZ( i );\n\n\t\t\t_vector$6.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t\t} else {\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\n\n\t\t\t}\n\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interlaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// deinterleave data and save it as an ordinary buffer attribute for now\n\n\t\t\treturn {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t// save as true interlaved attribtue\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\tdata: this.data.uuid,\n\t\t\t\toffset: this.offset,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * map: new THREE.Texture( ),\n * alphaMap: new THREE.Texture( ),\n * rotation: ,\n * sizeAttenuation: \n * }\n */\n\nfunction SpriteMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'SpriteMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.rotation = 0;\n\n\tthis.sizeAttenuation = true;\n\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nSpriteMaterial.prototype = Object.create( Material.prototype );\nSpriteMaterial.prototype.constructor = SpriteMaterial;\nSpriteMaterial.prototype.isSpriteMaterial = true;\n\nSpriteMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.rotation = source.rotation;\n\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\treturn this;\n\n};\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nlet _geometry;\n\nconst _intersectPoint = new Vector3();\nconst _worldScale = new Vector3();\nconst _mvPosition = new Vector3();\n\nconst _alignedPosition = new Vector2();\nconst _rotatedPosition = new Vector2();\nconst _viewWorldMatrix = new Matrix4();\n\nconst _vA$1 = new Vector3();\nconst _vB$1 = new Vector3();\nconst _vC$1 = new Vector3();\n\nconst _uvA$1 = new Vector2();\nconst _uvB$1 = new Vector2();\nconst _uvC$1 = new Vector2();\n\nfunction Sprite( material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Sprite';\n\n\tif ( _geometry === undefined ) {\n\n\t\t_geometry = new BufferGeometry();\n\n\t\tconst float32Array = new Float32Array( [\n\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t] );\n\n\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t}\n\n\tthis.geometry = _geometry;\n\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n\tthis.center = new Vector2( 0.5, 0.5 );\n\n}\n\nSprite.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Sprite,\n\n\tisSprite: true,\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tconst rotation = this.material.rotation;\n\t\tlet sin, cos;\n\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tconst center = this.center;\n\n\t\ttransformVertex( _vA$1.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB$1.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC$1.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA$1.set( 0, 0 );\n\t\t_uvB$1.set( 1, 0 );\n\t\t_uvC$1.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA$1, _vB$1, _vC$1, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB$1.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB$1.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA$1, _vC$1, _vB$1, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getUV( _intersectPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _v1$4 = new Vector3();\nconst _v2$2 = new Vector3();\n\nfunction LOD() {\n\n\tObject3D.call( this );\n\n\tthis._currentLevel = 0;\n\n\tthis.type = 'LOD';\n\n\tObject.defineProperties( this, {\n\t\tlevels: {\n\t\t\tenumerable: true,\n\t\t\tvalue: []\n\t\t}\n\t} );\n\n\tthis.autoUpdate = true;\n\n}\n\nLOD.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: LOD,\n\n\tisLOD: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source, false );\n\n\t\tconst levels = source.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t},\n\n\taddLevel: function ( object, distance ) {\n\n\t\tif ( distance === undefined ) distance = 0;\n\n\t\tdistance = Math.abs( distance );\n\n\t\tconst levels = this.levels;\n\n\t\tlet l;\n\n\t\tfor ( l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t},\n\n\tgetCurrentLevel: function () {\n\n\t\treturn this._currentLevel;\n\n\t},\n\n\tgetObjectForDistance: function ( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$4.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$4 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t},\n\n\tupdate: function ( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$4.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$4.distanceTo( _v2$2 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._currentLevel = i - 1;\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction SkinnedMesh( geometry, material ) {\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\tconsole.error( 'THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t}\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'SkinnedMesh';\n\n\tthis.bindMode = 'attached';\n\tthis.bindMatrix = new Matrix4();\n\tthis.bindMatrixInverse = new Matrix4();\n\n}\n\nSkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: SkinnedMesh,\n\n\tisSkinnedMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tMesh.prototype.copy.call( this, source );\n\n\t\tthis.bindMode = source.bindMode;\n\t\tthis.bindMatrix.copy( source.bindMatrix );\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\n\n\t\tthis.skeleton = source.skeleton;\n\n\t\treturn this;\n\n\t},\n\n\tbind: function ( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.getInverse( bindMatrix );\n\n\t},\n\n\tpose: function () {\n\n\t\tthis.skeleton.pose();\n\n\t},\n\n\tnormalizeSkinWeights: function () {\n\n\t\tconst vector = new Vector4();\n\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.x = skinWeight.getX( i );\n\t\t\tvector.y = skinWeight.getY( i );\n\t\t\tvector.z = skinWeight.getZ( i );\n\t\t\tvector.w = skinWeight.getW( i );\n\n\t\t\tconst scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tMesh.prototype.updateMatrixWorld.call( this, force );\n\n\t\tif ( this.bindMode === 'attached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.matrixWorld );\n\n\t\t} else if ( this.bindMode === 'detached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.bindMatrix );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t},\n\n\tboneTransform: ( function () {\n\n\t\tconst basePosition = new Vector3();\n\n\t\tconst skinIndex = new Vector4();\n\t\tconst skinWeight = new Vector4();\n\n\t\tconst vector = new Vector3();\n\t\tconst matrix = new Matrix4();\n\n\t\treturn function ( index, target ) {\n\n\t\t\tconst skeleton = this.skeleton;\n\t\t\tconst geometry = this.geometry;\n\n\t\t\tskinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t\tskinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t\tbasePosition.fromBufferAttribute( geometry.attributes.position, index ).applyMatrix4( this.bindMatrix );\n\n\t\t\ttarget.set( 0, 0, 0 );\n\n\t\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\t\tconst weight = skinWeight.getComponent( i );\n\n\t\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\t\tconst boneIndex = skinIndex.getComponent( i );\n\n\t\t\t\t\tmatrix.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\t\ttarget.addScaledVector( vector.copy( basePosition ).applyMatrix4( matrix ), weight );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn target.applyMatrix4( this.bindMatrixInverse );\n\n\t\t};\n\n\t}() )\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author michael guerrero / http://realitymeltdown.com\n * @author ikerr / http://verold.com\n */\n\nconst _offsetMatrix = new Matrix4();\nconst _identityMatrix = new Matrix4();\n\nfunction Skeleton( bones, boneInverses ) {\n\n\t// copy the bone array\n\n\tbones = bones || [];\n\n\tthis.bones = bones.slice( 0 );\n\tthis.boneMatrices = new Float32Array( this.bones.length * 16 );\n\n\tthis.frame = - 1;\n\n\t// use the supplied bone inverses or calculate the inverses\n\n\tif ( boneInverses === undefined ) {\n\n\t\tthis.calculateInverses();\n\n\t} else {\n\n\t\tif ( this.bones.length === boneInverses.length ) {\n\n\t\t\tthis.boneInverses = boneInverses.slice( 0 );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Skeleton boneInverses is the wrong length.' );\n\n\t\t\tthis.boneInverses = [];\n\n\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Skeleton.prototype, {\n\n\tcalculateInverses: function () {\n\n\t\tthis.boneInverses = [];\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.getInverse( this.bones[ i ].matrixWorld );\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t},\n\n\tpose: function () {\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.getInverse( this.boneInverses[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.getInverse( bone.parent.matrixWorld );\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdate: function () {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\t\tconst boneMatrices = this.boneMatrices;\n\t\tconst boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== undefined ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t},\n\n\tgetBoneByName: function ( name ) {\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tdispose: function ( ) {\n\n\t\tif ( this.boneTexture ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = undefined;\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction Bone() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Bone';\n\n}\n\nBone.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Bone,\n\n\tisBone: true\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _instanceLocalMatrix = new Matrix4();\nconst _instanceWorldMatrix = new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _mesh = new Mesh();\n\nfunction InstancedMesh( geometry, material, count ) {\n\n\tMesh.call( this, geometry, material );\n\n\tthis.instanceMatrix = new BufferAttribute( new Float32Array( count * 16 ), 16 );\n\n\tthis.count = count;\n\n\tthis.frustumCulled = false;\n\n}\n\nInstancedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: InstancedMesh,\n\n\tisInstancedMesh: true,\n\n\tcopy: function ( source ) {\n\n\t\tMesh.prototype.copy.call( this, source );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\t\tthis.count = source.count;\n\n\t\treturn this;\n\n\t},\n\n\tgetMatrixAt: function ( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst raycastTimes = this.count;\n\n\t\t_mesh.geometry = this.geometry;\n\t\t_mesh.material = this.material;\n\n\t\tif ( _mesh.material === undefined ) return;\n\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t},\n\n\tsetMatrixAt: function ( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n * linecap: \"round\",\n * linejoin: \"round\"\n * }\n */\n\nfunction LineBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'LineBasicMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.linewidth = 1;\n\tthis.linecap = 'round';\n\tthis.linejoin = 'round';\n\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nLineBasicMaterial.prototype = Object.create( Material.prototype );\nLineBasicMaterial.prototype.constructor = LineBasicMaterial;\n\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\n\nLineBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.linewidth = source.linewidth;\n\tthis.linecap = source.linecap;\n\tthis.linejoin = source.linejoin;\n\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _start = new Vector3();\nconst _end = new Vector3();\nconst _inverseMatrix$1 = new Matrix4();\nconst _ray$1 = new Ray();\nconst _sphere$2 = new Sphere();\n\nfunction Line( geometry, material, mode ) {\n\n\tif ( mode === 1 ) {\n\n\t\tconsole.error( 'THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead.' );\n\n\t}\n\n\tObject3D.call( this );\n\n\tthis.type = 'Line';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new LineBasicMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nLine.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Line,\n\n\tisLine: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\tcomputeLineDistances: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t_start.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t\t_end.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i ] += _start.distanceTo( _end );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst lineDistances = geometry.lineDistances;\n\n\t\t\tlineDistances[ 0 ] = 0;\n\n\t\t\tfor ( let i = 1, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i ] += vertices[ i - 1 ].distanceTo( vertices[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$2.copy( geometry.boundingSphere );\n\t\t_sphere$2.applyMatrix4( matrixWorld );\n\t\t_sphere$2.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$2 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.getInverse( matrixWorld );\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst vStart = new Vector3();\n\t\tconst vEnd = new Vector3();\n\t\tconst interSegment = new Vector3();\n\t\tconst interRay = new Vector3();\n\t\tconst step = ( this && this.isLineSegments ) ? 2 : 1;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positions = attributes.position.array;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst indices = index.array;\n\n\t\t\t\tfor ( let i = 0, l = indices.length - 1; i < l; i += step ) {\n\n\t\t\t\t\tconst a = indices[ i ];\n\t\t\t\t\tconst b = indices[ i + 1 ];\n\n\t\t\t\t\tvStart.fromArray( positions, a * 3 );\n\t\t\t\t\tvEnd.fromArray( positions, b * 3 );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0, l = positions.length / 3 - 1; i < l; i += step ) {\n\n\t\t\t\t\tvStart.fromArray( positions, 3 * i );\n\t\t\t\t\tvEnd.fromArray( positions, 3 * i + 3 );\n\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst nbVertices = vertices.length;\n\n\t\t\tfor ( let i = 0; i < nbVertices - 1; i += step ) {\n\n\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );\n\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _start$1 = new Vector3();\nconst _end$1 = new Vector3();\n\nfunction LineSegments( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineSegments';\n\n}\n\nLineSegments.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineSegments,\n\n\tisLineSegments: true,\n\n\tcomputeLineDistances: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t// we assume non-indexed geometry\n\n\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\t\tconst lineDistances = [];\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t\t_start$1.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\t_end$1.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start$1.distanceTo( _end$1 );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t}\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tconst vertices = geometry.vertices;\n\t\t\tconst lineDistances = geometry.lineDistances;\n\n\t\t\tfor ( let i = 0, l = vertices.length; i < l; i += 2 ) {\n\n\t\t\t\t_start$1.copy( vertices[ i ] );\n\t\t\t\t_end$1.copy( vertices[ i + 1 ] );\n\n\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start$1.distanceTo( _end$1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mgreter / http://github.com/mgreter\n */\n\nfunction LineLoop( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineLoop';\n\n}\n\nLineLoop.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineLoop,\n\n\tisLineLoop: true,\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n * alphaMap: new THREE.Texture( ),\n *\n * size: ,\n * sizeAttenuation: \n *\n * morphTargets: \n * }\n */\n\nfunction PointsMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'PointsMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.size = 1;\n\tthis.sizeAttenuation = true;\n\n\tthis.morphTargets = false;\n\n\tthis.setValues( parameters );\n\n}\n\nPointsMaterial.prototype = Object.create( Material.prototype );\nPointsMaterial.prototype.constructor = PointsMaterial;\n\nPointsMaterial.prototype.isPointsMaterial = true;\n\nPointsMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.size = source.size;\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nconst _inverseMatrix$2 = new Matrix4();\nconst _ray$2 = new Ray();\nconst _sphere$3 = new Sphere();\nconst _position$1 = new Vector3();\n\nfunction Points( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Points';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new PointsMaterial();\n\n\tthis.updateMorphTargets();\n\n}\n\nPoints.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Points,\n\n\tisPoints: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t},\n\n\traycast: function ( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$3.copy( geometry.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\t\t_sphere$3.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$2.getInverse( matrixWorld );\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst attributes = geometry.attributes;\n\t\t\tconst positions = attributes.position.array;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst indices = index.array;\n\n\t\t\t\tfor ( let i = 0, il = indices.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst a = indices[ i ];\n\n\t\t\t\t\t_position$1.fromArray( positions, a * 3 );\n\n\t\t\t\t\ttestPoint( _position$1, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( let i = 0, l = positions.length / 3; i < l; i ++ ) {\n\n\t\t\t\t\t_position$1.fromArray( positions, i * 3 );\n\n\t\t\t\t\ttestPoint( _position$1, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst vertices = geometry.vertices;\n\n\t\t\tfor ( let i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\ttestPoint( vertices[ i ], i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\t\t\tconst keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray$2.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray$2.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.format = format !== undefined ? format : RGBFormat;\n\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\tthis.generateMipmaps = false;\n\n}\n\nVideoTexture.prototype = Object.assign( Object.create( Texture.prototype ), {\n\n\tconstructor: VideoTexture,\n\n\tisVideoTexture: true,\n\n\tupdate: function () {\n\n\t\tconst video = this.image;\n\n\t\tif ( video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { width: width, height: height };\n\tthis.mipmaps = mipmaps;\n\n\t// no flipping for cube textures\n\t// (also flipping doesn't work for compressed textures )\n\n\tthis.flipY = false;\n\n\t// can't generate mipmaps for compressed textures\n\t// mips must be embedded in DDS files\n\n\tthis.generateMipmaps = false;\n\n}\n\nCompressedTexture.prototype = Object.create( Texture.prototype );\nCompressedTexture.prototype.constructor = CompressedTexture;\n\nCompressedTexture.prototype.isCompressedTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.needsUpdate = true;\n\n}\n\nCanvasTexture.prototype = Object.create( Texture.prototype );\nCanvasTexture.prototype.constructor = CanvasTexture;\nCanvasTexture.prototype.isCanvasTexture = true;\n\n/**\n * @author Matt DesLauriers / @mattdesl\n * @author atix / arthursilber.de\n */\n\nfunction DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\tformat = format !== undefined ? format : DepthFormat;\n\n\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t}\n\n\tif ( type === undefined && format === DepthFormat ) type = UnsignedShortType;\n\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.image = { width: width, height: height };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.flipY = false;\n\tthis.generateMipmaps\t= false;\n\n}\n\nDepthTexture.prototype = Object.create( Texture.prototype );\nDepthTexture.prototype.constructor = DepthTexture;\nDepthTexture.prototype.isDepthTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WireframeGeometry( geometry ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'WireframeGeometry';\n\n\t// buffer\n\n\tconst vertices = [];\n\n\t// helper variables\n\n\tconst edge = [ 0, 0 ], edges = {};\n\tconst keys = [ 'a', 'b', 'c' ];\n\n\t// different logic for Geometry and BufferGeometry\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\t// create a data structure that contains all edges without duplicates\n\n\t\tconst faces = geometry.faces;\n\n\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\tconst edge1 = face[ keys[ j ] ];\n\t\t\t\tconst edge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\tconst key = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices\n\n\t\tfor ( const key in edges ) {\n\n\t\t\tconst e = edges[ key ];\n\n\t\t\tlet vertex = geometry.vertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = geometry.vertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t} else if ( geometry && geometry.isBufferGeometry ) {\n\n\t\tlet vertex = new Vector3();\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\t// indexed BufferGeometry\n\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tconst indices = geometry.index;\n\t\t\tlet groups = geometry.groups;\n\n\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t}\n\n\t\t\t// create a data structure that contains all eges without duplicates\n\n\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\tconst start = group.start;\n\t\t\t\tconst count = group.count;\n\n\t\t\t\tfor ( let i = start, l = ( start + count ); i < l; i += 3 ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\tconst edge1 = indices.getX( i + j );\n\t\t\t\t\t\tconst edge2 = indices.getX( i + ( j + 1 ) % 3 );\n\t\t\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\t\t\tconst key = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// generate vertices\n\n\t\t\tfor ( const key in edges ) {\n\n\t\t\t\tconst e = edges[ key ];\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index1 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index2 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// non-indexed BufferGeometry\n\n\t\t\tconst position = geometry.attributes.position;\n\n\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\tconst index1 = 3 * i + j;\n\t\t\t\t\tvertex.fromBufferAttribute( position, index1 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\t\t\t\t\tvertex.fromBufferAttribute( position, index2 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nWireframeGeometry.prototype = Object.create( BufferGeometry.prototype );\nWireframeGeometry.prototype.constructor = WireframeGeometry;\n\n/**\n * @author zz85 / https://github.com/zz85\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Parametric Surfaces Geometry\n * based on the brilliant article by @prideout https://prideout.net/blog/old/blog/index.html@p=44.html\n */\n\n// ParametricGeometry\n\nfunction ParametricGeometry( func, slices, stacks ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ParametricGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\tthis.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) );\n\tthis.mergeVertices();\n\n}\n\nParametricGeometry.prototype = Object.create( Geometry.prototype );\nParametricGeometry.prototype.constructor = ParametricGeometry;\n\n// ParametricBufferGeometry\n\nfunction ParametricBufferGeometry( func, slices, stacks ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ParametricBufferGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\tconst EPS = 0.00001;\n\n\tconst normal = new Vector3();\n\n\tconst p0 = new Vector3(), p1 = new Vector3();\n\tconst pu = new Vector3(), pv = new Vector3();\n\n\tif ( func.length < 3 ) {\n\n\t\tconsole.error( 'THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.' );\n\n\t}\n\n\t// generate vertices, normals and uvs\n\n\tconst sliceCount = slices + 1;\n\n\tfor ( let i = 0; i <= stacks; i ++ ) {\n\n\t\tconst v = i / stacks;\n\n\t\tfor ( let j = 0; j <= slices; j ++ ) {\n\n\t\t\tconst u = j / slices;\n\n\t\t\t// vertex\n\n\t\t\tfunc( u, v, p0 );\n\t\t\tvertices.push( p0.x, p0.y, p0.z );\n\n\t\t\t// normal\n\n\t\t\t// approximate tangent vectors via finite differences\n\n\t\t\tif ( u - EPS >= 0 ) {\n\n\t\t\t\tfunc( u - EPS, v, p1 );\n\t\t\t\tpu.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u + EPS, v, p1 );\n\t\t\t\tpu.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\tif ( v - EPS >= 0 ) {\n\n\t\t\t\tfunc( u, v - EPS, p1 );\n\t\t\t\tpv.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u, v + EPS, p1 );\n\t\t\t\tpv.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\t// cross product of tangent vectors returns surface normal\n\n\t\t\tnormal.crossVectors( pu, pv ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u, v );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( let i = 0; i < stacks; i ++ ) {\n\n\t\tfor ( let j = 0; j < slices; j ++ ) {\n\n\t\t\tconst a = i * sliceCount + j;\n\t\t\tconst b = i * sliceCount + j + 1;\n\t\t\tconst c = ( i + 1 ) * sliceCount + j + 1;\n\t\t\tconst d = ( i + 1 ) * sliceCount + j;\n\n\t\t\t// faces one and two\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry;\n\n/**\n * @author clockworkgeek / https://github.com/clockworkgeek\n * @author timothypratley / https://github.com/timothypratley\n * @author WestLangley / http://github.com/WestLangley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// PolyhedronGeometry\n\nfunction PolyhedronGeometry( vertices, indices, radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PolyhedronGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nPolyhedronGeometry.prototype = Object.create( Geometry.prototype );\nPolyhedronGeometry.prototype.constructor = PolyhedronGeometry;\n\n// PolyhedronBufferGeometry\n\nfunction PolyhedronBufferGeometry( vertices, indices, radius, detail ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PolyhedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tradius = radius || 1;\n\tdetail = detail || 0;\n\n\t// default buffer data\n\n\tconst vertexBuffer = [];\n\tconst uvBuffer = [];\n\n\t// the subdivision creates the vertex buffer data\n\n\tsubdivide( detail );\n\n\t// all vertices should lie on a conceptual sphere with a given radius\n\n\tapplyRadius( radius );\n\n\t// finally, create the uv data\n\n\tgenerateUVs();\n\n\t// build non-indexed geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\tif ( detail === 0 ) {\n\n\t\tthis.computeVertexNormals(); // flat normals\n\n\t} else {\n\n\t\tthis.normalizeNormals(); // smooth normals\n\n\t}\n\n\t// helper functions\n\n\tfunction subdivide( detail ) {\n\n\t\tconst a = new Vector3();\n\t\tconst b = new Vector3();\n\t\tconst c = new Vector3();\n\n\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t// get the vertices of the face\n\n\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t// perform subdivision\n\n\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t}\n\n\t}\n\n\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\tconst cols = Math.pow( 2, detail );\n\n\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\tconst v = [];\n\n\t\t// construct all of the vertices for this subdivision\n\n\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\tv[ i ] = [];\n\n\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\tconst rows = cols - i;\n\n\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// construct all of the faces\n\n\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction applyRadius( radius ) {\n\n\t\tconst vertex = new Vector3();\n\n\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tconst vertex = new Vector3();\n\n\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t}\n\n\t\tcorrectUVs();\n\n\t\tcorrectSeam();\n\n\t}\n\n\tfunction correctSeam() {\n\n\t\t// handle case when face straddles the seam, see #3269\n\n\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t// uv data of a single face\n\n\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction pushVertex( vertex ) {\n\n\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t}\n\n\tfunction getVertexByIndex( index, vertex ) {\n\n\t\tconst stride = index * 3;\n\n\t\tvertex.x = vertices[ stride + 0 ];\n\t\tvertex.y = vertices[ stride + 1 ];\n\t\tvertex.z = vertices[ stride + 2 ];\n\n\t}\n\n\tfunction correctUVs() {\n\n\t\tconst a = new Vector3();\n\t\tconst b = new Vector3();\n\t\tconst c = new Vector3();\n\n\t\tconst centroid = new Vector3();\n\n\t\tconst uvA = new Vector2();\n\t\tconst uvB = new Vector2();\n\t\tconst uvC = new Vector2();\n\n\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\tconst azi = azimuth( centroid );\n\n\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t}\n\n\t}\n\n\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t}\n\n\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t}\n\n\t}\n\n\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\tfunction azimuth( vector ) {\n\n\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t}\n\n\n\t// Angle above the XZ plane.\n\n\tfunction inclination( vector ) {\n\n\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t}\n\n}\n\nPolyhedronBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// TetrahedronGeometry\n\nfunction TetrahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TetrahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nTetrahedronGeometry.prototype = Object.create( Geometry.prototype );\nTetrahedronGeometry.prototype.constructor = TetrahedronGeometry;\n\n// TetrahedronBufferGeometry\n\nfunction TetrahedronBufferGeometry( radius, detail ) {\n\n\tconst vertices = [\n\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t];\n\n\tconst indices = [\n\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'TetrahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nTetrahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nTetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// OctahedronGeometry\n\nfunction OctahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'OctahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nOctahedronGeometry.prototype = Object.create( Geometry.prototype );\nOctahedronGeometry.prototype.constructor = OctahedronGeometry;\n\n// OctahedronBufferGeometry\n\nfunction OctahedronBufferGeometry( radius, detail ) {\n\n\tconst vertices = [\n\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t];\n\n\tconst indices = [\n\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t1, 3, 4,\t1, 4, 2\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'OctahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nOctahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nOctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// IcosahedronGeometry\n\nfunction IcosahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'IcosahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nIcosahedronGeometry.prototype = Object.create( Geometry.prototype );\nIcosahedronGeometry.prototype.constructor = IcosahedronGeometry;\n\n// IcosahedronBufferGeometry\n\nfunction IcosahedronBufferGeometry( radius, detail ) {\n\n\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\tconst vertices = [\n\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t 0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t t, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t];\n\n\tconst indices = [\n\t\t 0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t 1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t 3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t 4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'IcosahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nIcosahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nIcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry;\n\n/**\n * @author Abe Pazos / https://hamoid.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// DodecahedronGeometry\n\nfunction DodecahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'DodecahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nDodecahedronGeometry.prototype = Object.create( Geometry.prototype );\nDodecahedronGeometry.prototype.constructor = DodecahedronGeometry;\n\n// DodecahedronBufferGeometry\n\nfunction DodecahedronBufferGeometry( radius, detail ) {\n\n\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\tconst r = 1 / t;\n\n\tconst vertices = [\n\n\t\t// (±1, ±1, ±1)\n\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t// (0, ±1/φ, ±φ)\n\t\t 0, - r, - t, 0, - r, t,\n\t\t 0, r, - t, 0, r, t,\n\n\t\t// (±1/φ, ±φ, 0)\n\t\t- r, - t, 0, - r, t, 0,\n\t\t r, - t, 0, r, t, 0,\n\n\t\t// (±φ, 0, ±1/φ)\n\t\t- t, 0, - r, t, 0, - r,\n\t\t- t, 0, r, t, 0, r\n\t];\n\n\tconst indices = [\n\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'DodecahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nDodecahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nDodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry;\n\n/**\n * @author oosmoxiecode / https://github.com/oosmoxiecode\n * @author WestLangley / https://github.com/WestLangley\n * @author zz85 / https://github.com/zz85\n * @author miningold / https://github.com/miningold\n * @author jonobr1 / https://github.com/jonobr1\n * @author Mugen87 / https://github.com/Mugen87\n *\n */\n\n// TubeGeometry\n\nfunction TubeGeometry( path, tubularSegments, radius, radialSegments, closed, taper ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TubeGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\tif ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' );\n\n\tconst bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = bufferGeometry.tangents;\n\tthis.normals = bufferGeometry.normals;\n\tthis.binormals = bufferGeometry.binormals;\n\n\t// create geometry\n\n\tthis.fromBufferGeometry( bufferGeometry );\n\tthis.mergeVertices();\n\n}\n\nTubeGeometry.prototype = Object.create( Geometry.prototype );\nTubeGeometry.prototype.constructor = TubeGeometry;\n\n// TubeBufferGeometry\n\nfunction TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TubeBufferGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\ttubularSegments = tubularSegments || 64;\n\tradius = radius || 1;\n\tradialSegments = radialSegments || 8;\n\tclosed = closed || false;\n\n\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = frames.tangents;\n\tthis.normals = frames.normals;\n\tthis.binormals = frames.binormals;\n\n\t// helper variables\n\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\tconst uv = new Vector2();\n\tlet P = new Vector3();\n\n\t// buffer\n\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\tconst indices = [];\n\n\t// create buffer data\n\n\tgenerateBufferData();\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// functions\n\n\tfunction generateBufferData() {\n\n\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\tgenerateSegment( i );\n\n\t\t}\n\n\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t// at the regular position on the given path\n\t\t//\n\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t// uvs are generated in a separate function.\n\t\t// this makes it easy compute correct values for closed geometries\n\n\t\tgenerateUVs();\n\n\t\t// finally create faces\n\n\t\tgenerateIndices();\n\n\t}\n\n\tfunction generateSegment( i ) {\n\n\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t// retrieve corresponding normal and binormal\n\n\t\tconst N = frames.normals[ i ];\n\t\tconst B = frames.binormals[ i ];\n\n\t\t// generate normals and vertices for the current segment\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\tconst sin = Math.sin( v );\n\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t// normal\n\n\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\tnormal.normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\tfunction generateIndices() {\n\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nTubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTubeBufferGeometry.prototype.constructor = TubeBufferGeometry;\n\nTubeBufferGeometry.prototype.toJSON = function () {\n\n\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\tdata.path = this.parameters.path.toJSON();\n\n\treturn data;\n\n};\n\n/**\n * @author oosmoxiecode\n * @author Mugen87 / https://github.com/Mugen87\n *\n * based on http://www.blackpawn.com/texts/pqtorus/\n */\n\n// TorusKnotGeometry\n\nfunction TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusKnotGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tif ( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' );\n\n\tthis.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) );\n\tthis.mergeVertices();\n\n}\n\nTorusKnotGeometry.prototype = Object.create( Geometry.prototype );\nTorusKnotGeometry.prototype.constructor = TorusKnotGeometry;\n\n// TorusKnotBufferGeometry\n\nfunction TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusKnotBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\ttubularSegments = Math.floor( tubularSegments ) || 64;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\tp = p || 2;\n\tq = q || 3;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\n\tconst P1 = new Vector3();\n\tconst P2 = new Vector3();\n\n\tconst B = new Vector3();\n\tconst T = new Vector3();\n\tconst N = new Vector3();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\n\n\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t// calculate orthonormal basis\n\n\t\tT.subVectors( P2, P1 );\n\t\tN.addVectors( P2, P1 );\n\t\tB.crossVectors( T, N );\n\t\tN.crossVectors( B, T );\n\n\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\tB.normalize();\n\t\tN.normalize();\n\n\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t// now calculate the final vertex position.\n\t\t\t// first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\n\n\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// this function calculates the current position on the torus curve\n\n\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\tconst cu = Math.cos( u );\n\t\tconst su = Math.sin( u );\n\t\tconst quOverP = q / p * u;\n\t\tconst cs = Math.cos( quOverP );\n\n\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t}\n\n}\n\nTorusKnotBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry;\n\n/**\n * @author oosmoxiecode\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// TorusGeometry\n\nfunction TorusGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tthis.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) );\n\tthis.mergeVertices();\n\n}\n\nTorusGeometry.prototype = Object.create( Geometry.prototype );\nTorusGeometry.prototype.constructor = TorusGeometry;\n\n// TorusBufferGeometry\n\nfunction TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\ttubularSegments = Math.floor( tubularSegments ) || 6;\n\tarc = arc || Math.PI * 2;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst center = new Vector3();\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tconst u = i / tubularSegments * arc;\n\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\tconst d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nTorusBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusBufferGeometry.prototype.constructor = TorusBufferGeometry;\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n * Port from https://github.com/mapbox/earcut (v2.2.2)\n */\n\nconst Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim ) {\n\n\t\tdim = dim || 2;\n\n\t\tlet hasHoles = holeIndices && holeIndices.length,\n\t\t\touterLen = hasHoles ? holeIndices[ 0 ] * dim : data.length,\n\t\t\touterNode = linkedList( data, 0, outerLen, dim, true ),\n\t\t\ttriangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tlet minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( let i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 1 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tlet i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tlet p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tlet stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim );\n\t\t\ttriangles.push( ear.i / dim );\n\t\t\ttriangles.push( next.i / dim );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( filterPoints( ear ), triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tlet a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tlet p = ear.next.next;\n\n\twhile ( p !== ear.prev ) {\n\n\t\tif ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tlet a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tlet minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ),\n\t\tminTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ),\n\t\tmaxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ),\n\t\tmaxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y );\n\n\t// z-order range for the current triangle bbox;\n\tlet minZ = zOrder( minTX, minTY, minX, minY, invSize ),\n\t\tmaxZ = zOrder( maxTX, maxTY, minX, minY, invSize );\n\n\tlet p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tlet a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim );\n\t\t\ttriangles.push( p.i / dim );\n\t\t\ttriangles.push( b.i / dim );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn filterPoints( p );\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tlet a = start;\n\tdo {\n\n\t\tlet b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tlet c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tlet queue = [],\n\t\ti, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\teliminateHole( queue[ i ], outerNode );\n\t\touterNode = filterPoints( outerNode, outerNode.next );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\touterNode = findHoleBridge( hole, outerNode );\n\tif ( outerNode ) {\n\n\t\tconst b = splitPolygon( outerNode, hole );\n\n\t\t// filter collinear points around the cuts\n\t\tfilterPoints( outerNode, outerNode.next );\n\t\tfilterPoints( b, b.next );\n\n\t}\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tlet p = outerNode,\n\t\thx = hole.x,\n\t\thy = hole.y,\n\t\tqx = - Infinity,\n\t\tm;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tlet x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tif ( x === hx ) {\n\n\t\t\t\t\tif ( hy === p.y ) return p;\n\t\t\t\t\tif ( hy === p.next.y ) return p.next;\n\n\t\t\t\t}\n\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\tif ( hx === qx ) return m; // hole touches outer segment; pick leftmost endpoint\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tlet stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y,\n\t\ttanMin = Infinity,\n\t\ttan;\n\n\tp = m;\n\n\tdo {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== stop );\n\n\treturn m;\n\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector( m, p ) {\n\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tif ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tlet i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = 32767 * ( x - minX ) * invSize;\n\ty = 32767 * ( y - minY ) * invSize;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tlet p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 &&\n\t\t\t( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 &&\n\t\t\t( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0;\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // dones't intersect other edges\n\t\t( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n\t\t( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n\t\tequals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tconst o1 = sign( area( p1, q1, p2 ) );\n\tconst o2 = sign( area( p1, q1, q2 ) );\n\tconst o3 = sign( area( p2, q2, p1 ) );\n\tconst o4 = sign( area( p2, q2, q1 ) );\n\n\tif ( o1 !== o2 && o3 !== o4 ) return true; // general case\n\n\tif ( o1 === 0 && onSegment( p1, p2, q1 ) ) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n\tif ( o2 === 0 && onSegment( p1, q2, q1 ) ) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n\tif ( o3 === 0 && onSegment( p2, p1, q2 ) ) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n\tif ( o4 === 0 && onSegment( p2, q1, q2 ) ) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n\treturn false;\n\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment( p, q, r ) {\n\n\treturn q.x <= Math.max( p.x, r.x ) && q.x >= Math.min( p.x, r.x ) && q.y <= Math.max( p.y, r.y ) && q.y >= Math.min( p.y, r.y );\n\n}\n\nfunction sign( num ) {\n\n\treturn num > 0 ? 1 : num < 0 ? - 1 : 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tlet p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tlet p = a,\n\t\tinside = false,\n\t\tpx = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tlet a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tconst p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = null;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tlet sum = 0;\n\tfor ( let i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nconst ShapeUtils = {\n\n\t// calculate area of the contour polygon\n\n\tarea: function ( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t},\n\n\tisClockWise: function ( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t},\n\n\ttriangulateShape: function ( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n};\n\nfunction removeDupEndPts( points ) {\n\n\tconst l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( let i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * depth: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline (including bevelOffset) is bevel\n * bevelOffset: , // how far from shape outline does bevel start\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // curve to extrude shape along\n *\n * UVGenerator: // object that provides UV generator functions\n *\n * }\n */\n\n// ExtrudeGeometry\n\nfunction ExtrudeGeometry( shapes, options ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ExtrudeGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tthis.fromBufferGeometry( new ExtrudeBufferGeometry( shapes, options ) );\n\tthis.mergeVertices();\n\n}\n\nExtrudeGeometry.prototype = Object.create( Geometry.prototype );\nExtrudeGeometry.prototype.constructor = ExtrudeGeometry;\n\nExtrudeGeometry.prototype.toJSON = function () {\n\n\tconst data = Geometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\tconst options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n// ExtrudeBufferGeometry\n\nfunction ExtrudeBufferGeometry( shapes, options ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ExtrudeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\tconst scope = this;\n\n\tconst verticesArray = [];\n\tconst uvArray = [];\n\n\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\tconst shape = shapes[ i ];\n\t\taddShape( shape );\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\tthis.computeVertexNormals();\n\n\t// functions\n\n\tfunction addShape( shape ) {\n\n\t\tconst placeholder = [];\n\n\t\t// options\n\n\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\tlet depth = options.depth !== undefined ? options.depth : 100;\n\n\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6;\n\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2;\n\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\tconst extrudePath = options.extrudePath;\n\n\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t// deprecated options\n\n\t\tif ( options.amount !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' );\n\t\t\tdepth = options.amount;\n\n\t\t}\n\n\t\t//\n\n\t\tlet extrudePts, extrudeByPath = false;\n\t\tlet splineTube, binormal, normal, position2;\n\n\t\tif ( extrudePath ) {\n\n\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\textrudeByPath = true;\n\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t// SETUP TNB variables\n\n\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\tbinormal = new Vector3();\n\t\t\tnormal = new Vector3();\n\t\t\tposition2 = new Vector3();\n\n\t\t}\n\n\t\t// Safeguards if bevels are not enabled\n\n\t\tif ( ! bevelEnabled ) {\n\n\t\t\tbevelSegments = 0;\n\t\t\tbevelThickness = 0;\n\t\t\tbevelSize = 0;\n\t\t\tbevelOffset = 0;\n\n\t\t}\n\n\t\t// Variables initialization\n\n\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\tlet vertices = shapePoints.shape;\n\t\tconst holes = shapePoints.holes;\n\n\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\tif ( reverse ) {\n\n\t\t\tvertices = vertices.reverse();\n\n\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t/* Vertices */\n\n\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tconst ahole = holes[ h ];\n\n\t\t\tvertices = vertices.concat( ahole );\n\n\t\t}\n\n\n\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\tif ( ! vec ) console.error( \"THREE.ExtrudeGeometry: vec does not exist\" );\n\n\t\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t\t}\n\n\t\tconst vlen = vertices.length, flen = faces.length;\n\n\n\t\t// Find directions for point movement\n\n\n\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t//\n\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t// check for collinear edges\n\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t// not collinear\n\n\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t// but prevent crazy spikes\n\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\tlet direction_eq = false; // assumes: opposite\n\n\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t}\n\n\n\t\tconst contourMovements = [];\n\n\t\tfor ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\tif ( j === il ) j = 0;\n\t\t\tif ( k === il ) k = 0;\n\n\t\t\t// (j)---(i)---(k)\n\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t}\n\n\t\tconst holesMovements = [];\n\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tconst ahole = holes[ h ];\n\n\t\t\toneHoleMovements = [];\n\n\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t// (j)---(i)---(k)\n\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t}\n\n\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t}\n\n\n\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\tconst t = b / bevelSegments;\n\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t// contract shape\n\n\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t// Back facing vertices\n\n\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t} else {\n\n\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Add stepped vertices...\n\t\t// Including front facing vertices\n\n\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// Add bevel segments planes\n\n\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\tconst t = b / bevelSegments;\n\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t// contract shape\n\n\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t/* Faces */\n\n\t\t// Top and bottom faces\n\n\t\tbuildLidFaces();\n\n\t\t// Sides faces\n\n\t\tbuildSideFaces();\n\n\n\t\t///// Internal functions\n\n\t\tfunction buildLidFaces() {\n\n\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t}\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t}\n\n\t\t// Create faces for the z-sides of the shape\n\n\t\tfunction buildSideFaces() {\n\n\t\t\tconst start = verticesArray.length / 3;\n\t\t\tlet layeroffset = 0;\n\t\t\tsidewalls( contour, layeroffset );\n\t\t\tlayeroffset += contour.length;\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t//, true\n\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t}\n\n\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t}\n\n\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\tlet i = contour.length;\n\n\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\tconst j = i;\n\t\t\t\tlet k = i - 1;\n\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction v( x, y, z ) {\n\n\t\t\tplaceholder.push( x );\n\t\t\tplaceholder.push( y );\n\t\t\tplaceholder.push( z );\n\n\t\t}\n\n\n\t\tfunction f3( a, b, c ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\n\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\n\t\t}\n\n\t\tfunction f4( a, b, c, d ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( d );\n\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\t\t\taddVertex( d );\n\n\n\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t}\n\n\t\tfunction addVertex( index ) {\n\n\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t}\n\n\n\t\tfunction addUV( vector2 ) {\n\n\t\t\tuvArray.push( vector2.x );\n\t\t\tuvArray.push( vector2.y );\n\n\t\t}\n\n\t}\n\n}\n\nExtrudeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nExtrudeBufferGeometry.prototype.constructor = ExtrudeBufferGeometry;\n\nExtrudeBufferGeometry.prototype.toJSON = function () {\n\n\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\tconst options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n//\n\nconst WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\n\t\tconst d_x = vertices[ indexD * 3 ];\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < 0.01 ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n};\n\nfunction toJSON( shapes, options, data ) {\n\n\t//\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\t//\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author alteredq / http://alteredqualia.com/\n *\n * Text = 3D Text\n *\n * parameters = {\n * font: , // font\n *\n * size: , // size of the text\n * height: , // thickness to extrude text\n * curveSegments: , // number of points on the curves\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into text bevel goes\n * bevelSize: , // how far from text outline (including bevelOffset) is bevel\n * bevelOffset: // how far from text outline does bevel start\n * }\n */\n\n// TextGeometry\n\nfunction TextGeometry( text, parameters ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TextGeometry';\n\n\tthis.parameters = {\n\t\ttext: text,\n\t\tparameters: parameters\n\t};\n\n\tthis.fromBufferGeometry( new TextBufferGeometry( text, parameters ) );\n\tthis.mergeVertices();\n\n}\n\nTextGeometry.prototype = Object.create( Geometry.prototype );\nTextGeometry.prototype.constructor = TextGeometry;\n\n// TextBufferGeometry\n\nfunction TextBufferGeometry( text, parameters ) {\n\n\tparameters = parameters || {};\n\n\tconst font = parameters.font;\n\n\tif ( ! ( font && font.isFont ) ) {\n\n\t\tconsole.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' );\n\t\treturn new Geometry();\n\n\t}\n\n\tconst shapes = font.generateShapes( text, parameters.size );\n\n\t// translate parameters to ExtrudeGeometry API\n\n\tparameters.depth = parameters.height !== undefined ? parameters.height : 50;\n\n\t// defaults\n\n\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\n\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\n\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\n\n\tExtrudeBufferGeometry.call( this, shapes, parameters );\n\n\tthis.type = 'TextBufferGeometry';\n\n}\n\nTextBufferGeometry.prototype = Object.create( ExtrudeBufferGeometry.prototype );\nTextBufferGeometry.prototype.constructor = TextBufferGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author benaadams / https://twitter.com/ben_a_adams\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// SphereGeometry\n\nfunction SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'SphereGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nSphereGeometry.prototype = Object.create( Geometry.prototype );\nSphereGeometry.prototype.constructor = SphereGeometry;\n\n// SphereBufferGeometry\n\nfunction SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'SphereBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\n\twidthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 );\n\theightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 );\n\n\tphiStart = phiStart !== undefined ? phiStart : 0;\n\tphiLength = phiLength !== undefined ? phiLength : Math.PI * 2;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI;\n\n\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\tlet index = 0;\n\tconst grid = [];\n\n\tconst vertex = new Vector3();\n\tconst normal = new Vector3();\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\tconst verticesRow = [];\n\n\t\tconst v = iy / heightSegments;\n\n\t\t// special case for the poles\n\n\t\tlet uOffset = 0;\n\n\t\tif ( iy == 0 && thetaStart == 0 ) {\n\n\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t} else if ( iy == heightSegments && thetaEnd == Math.PI ) {\n\n\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t}\n\n\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\tconst u = ix / widthSegments;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormal.copy( vertex ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\tverticesRow.push( index ++ );\n\n\t\t}\n\n\t\tgrid.push( verticesRow );\n\n\t}\n\n\t// indices\n\n\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nSphereBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nSphereBufferGeometry.prototype.constructor = SphereBufferGeometry;\n\n/**\n * @author Kaleb Murphy\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// RingGeometry\n\nfunction RingGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'RingGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nRingGeometry.prototype = Object.create( Geometry.prototype );\nRingGeometry.prototype.constructor = RingGeometry;\n\n// RingBufferGeometry\n\nfunction RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'RingBufferGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tinnerRadius = innerRadius || 0.5;\n\touterRadius = outerRadius || 1;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\tthetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8;\n\tphiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// some helper variables\n\n\tlet radius = innerRadius;\n\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\tconst vertex = new Vector3();\n\tconst uv = new Vector2();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// increase the radius for next row of vertices\n\n\t\tradius += radiusStep;\n\n\t}\n\n\t// indices\n\n\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\tconst a = segment;\n\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\tconst d = segment + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nRingBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nRingBufferGeometry.prototype.constructor = RingBufferGeometry;\n\n/**\n * @author zz85 / https://github.com/zz85\n * @author bhouston / http://clara.io\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// LatheGeometry\n\nfunction LatheGeometry( points, segments, phiStart, phiLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'LatheGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tthis.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) );\n\tthis.mergeVertices();\n\n}\n\nLatheGeometry.prototype = Object.create( Geometry.prototype );\nLatheGeometry.prototype.constructor = LatheGeometry;\n\n// LatheBufferGeometry\n\nfunction LatheBufferGeometry( points, segments, phiStart, phiLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'LatheBufferGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tsegments = Math.floor( segments ) || 12;\n\tphiStart = phiStart || 0;\n\tphiLength = phiLength || Math.PI * 2;\n\n\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\tphiLength = MathUtils.clamp( phiLength, 0, Math.PI * 2 );\n\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst inverseSegments = 1.0 / segments;\n\tconst vertex = new Vector3();\n\tconst uv = new Vector2();\n\n\t// generate vertices and uvs\n\n\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\tconst sin = Math.sin( phi );\n\t\tconst cos = Math.cos( phi );\n\n\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\tvertex.y = points[ j ].y;\n\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// uv\n\n\t\t\tuv.x = i / segments;\n\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\tconst base = j + i * points.length;\n\n\t\t\tconst a = base;\n\t\t\tconst b = base + points.length;\n\t\t\tconst c = base + points.length + 1;\n\t\t\tconst d = base + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// generate normals\n\n\tthis.computeVertexNormals();\n\n\t// if the geometry is closed, we need to average the normals along the seam.\n\t// because the corresponding vertices are identical (but still have different UVs).\n\n\tif ( phiLength === Math.PI * 2 ) {\n\n\t\tconst normals = this.attributes.normal.array;\n\t\tconst n1 = new Vector3();\n\t\tconst n2 = new Vector3();\n\t\tconst n = new Vector3();\n\n\t\t// this is the buffer offset for the last line of vertices\n\n\t\tconst base = segments * points.length * 3;\n\n\t\tfor ( let i = 0, j = 0; i < points.length; i ++, j += 3 ) {\n\n\t\t\t// select the normal of the vertex in the first line\n\n\t\t\tn1.x = normals[ j + 0 ];\n\t\t\tn1.y = normals[ j + 1 ];\n\t\t\tn1.z = normals[ j + 2 ];\n\n\t\t\t// select the normal of the vertex in the last line\n\n\t\t\tn2.x = normals[ base + j + 0 ];\n\t\t\tn2.y = normals[ base + j + 1 ];\n\t\t\tn2.z = normals[ base + j + 2 ];\n\n\t\t\t// average normals\n\n\t\t\tn.addVectors( n1, n2 ).normalize();\n\n\t\t\t// assign the new values to both normals\n\n\t\t\tnormals[ j + 0 ] = normals[ base + j + 0 ] = n.x;\n\t\t\tnormals[ j + 1 ] = normals[ base + j + 1 ] = n.y;\n\t\t\tnormals[ j + 2 ] = normals[ base + j + 2 ] = n.z;\n\n\t\t}\n\n\t}\n\n}\n\nLatheBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nLatheBufferGeometry.prototype.constructor = LatheBufferGeometry;\n\n/**\n * @author jonobr1 / http://jonobr1.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// ShapeGeometry\n\nfunction ShapeGeometry( shapes, curveSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ShapeGeometry';\n\n\tif ( typeof curveSegments === 'object' ) {\n\n\t\tconsole.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' );\n\n\t\tcurveSegments = curveSegments.curveSegments;\n\n\t}\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tthis.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) );\n\tthis.mergeVertices();\n\n}\n\nShapeGeometry.prototype = Object.create( Geometry.prototype );\nShapeGeometry.prototype.constructor = ShapeGeometry;\n\nShapeGeometry.prototype.toJSON = function () {\n\n\tconst data = Geometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n// ShapeBufferGeometry\n\nfunction ShapeBufferGeometry( shapes, curveSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ShapeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tcurveSegments = curveSegments || 12;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tlet groupStart = 0;\n\tlet groupCount = 0;\n\n\t// allow single and array values for \"shapes\" parameter\n\n\tif ( Array.isArray( shapes ) === false ) {\n\n\t\taddShape( shapes );\n\n\t} else {\n\n\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\taddShape( shapes[ i ] );\n\n\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\tgroupStart += groupCount;\n\t\t\tgroupCount = 0;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t// helper functions\n\n\tfunction addShape( shape ) {\n\n\t\tconst indexOffset = vertices.length / 3;\n\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\tlet shapeVertices = points.shape;\n\t\tconst shapeHoles = points.holes;\n\n\t\t// check direction of vertices\n\n\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t}\n\n\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t// join vertices of inner and outer paths to a single array\n\n\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t}\n\n\t\t// vertices, normals, uvs\n\n\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\tnormals.push( 0, 0, 1 );\n\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t}\n\n\t\t// incides\n\n\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tconst face = faces[ i ];\n\n\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\tindices.push( a, b, c );\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t}\n\n}\n\nShapeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry;\n\nShapeBufferGeometry.prototype.toJSON = function () {\n\n\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\tconst shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n//\n\nfunction toJSON$1( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction EdgesGeometry( geometry, thresholdAngle ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'EdgesGeometry';\n\n\tthis.parameters = {\n\t\tthresholdAngle: thresholdAngle\n\t};\n\n\tthresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1;\n\n\t// buffer\n\n\tconst vertices = [];\n\n\t// helper variables\n\n\tconst thresholdDot = Math.cos( MathUtils.DEG2RAD * thresholdAngle );\n\tconst edge = [ 0, 0 ], edges = {};\n\tlet edge1, edge2, key;\n\tconst keys = [ 'a', 'b', 'c' ];\n\n\t// prepare source geometry\n\n\tlet geometry2;\n\n\tif ( geometry.isBufferGeometry ) {\n\n\t\tgeometry2 = new Geometry();\n\t\tgeometry2.fromBufferGeometry( geometry );\n\n\t} else {\n\n\t\tgeometry2 = geometry.clone();\n\n\t}\n\n\tgeometry2.mergeVertices();\n\tgeometry2.computeFaceNormals();\n\n\tconst sourceVertices = geometry2.vertices;\n\tconst faces = geometry2.faces;\n\n\t// now create a data structure where each entry represents an edge with its adjoining faces\n\n\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\tconst face = faces[ i ];\n\n\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\tedge1 = face[ keys[ j ] ];\n\t\t\tedge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\tedge[ 0 ] = Math.min( edge1, edge2 );\n\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ], face1: i, face2: undefined };\n\n\t\t\t} else {\n\n\t\t\t\tedges[ key ].face2 = i;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// generate vertices\n\n\tfor ( key in edges ) {\n\n\t\tconst e = edges[ key ];\n\n\t\t// an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree.\n\n\t\tif ( e.face2 === undefined || faces[ e.face1 ].normal.dot( faces[ e.face2 ].normal ) <= thresholdDot ) {\n\n\t\t\tlet vertex = sourceVertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = sourceVertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nEdgesGeometry.prototype = Object.create( BufferGeometry.prototype );\nEdgesGeometry.prototype.constructor = EdgesGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// CylinderGeometry\n\nfunction CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CylinderGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCylinderGeometry.prototype = Object.create( Geometry.prototype );\nCylinderGeometry.prototype.constructor = CylinderGeometry;\n\n// CylinderBufferGeometry\n\nfunction CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CylinderBufferGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tconst scope = this;\n\n\tradiusTop = radiusTop !== undefined ? radiusTop : 1;\n\tradiusBottom = radiusBottom !== undefined ? radiusBottom : 1;\n\theight = height || 1;\n\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\theightSegments = Math.floor( heightSegments ) || 1;\n\n\topenEnded = openEnded !== undefined ? openEnded : false;\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0.0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tlet index = 0;\n\tconst indexArray = [];\n\tconst halfHeight = height / 2;\n\tlet groupStart = 0;\n\n\t// generate geometry\n\n\tgenerateTorso();\n\n\tif ( openEnded === false ) {\n\n\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\tfunction generateTorso() {\n\n\t\tconst normal = new Vector3();\n\t\tconst vertex = new Vector3();\n\n\t\tlet groupCount = 0;\n\n\t\t// this will be used to calculate the normal\n\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\tconst indexRow = [];\n\n\t\t\tconst v = y / heightSegments;\n\n\t\t\t// calculate the radius of the current row\n\n\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\t// now save vertices of the row in our index array\n\n\t\t\tindexArray.push( indexRow );\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t// update group counter\n\n\t\t\t\tgroupCount += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n\tfunction generateCap( top ) {\n\n\t\tlet centerIndexStart, centerIndexEnd;\n\n\t\tconst uv = new Vector2();\n\t\tconst vertex = new Vector3();\n\n\t\tlet groupCount = 0;\n\n\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\tconst sign = ( top === true ) ? 1 : - 1;\n\n\t\t// save the index of the first center vertex\n\t\tcenterIndexStart = index;\n\n\t\t// first we generate the center vertex data of the cap.\n\t\t// because the geometry needs one set of uvs per face,\n\t\t// we must generate a center vertex per face/segment\n\n\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// save the index of the last center vertex\n\n\t\tcenterIndexEnd = index;\n\n\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\tconst u = x / radialSegments;\n\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * sinTheta;\n\t\t\tvertex.y = halfHeight * sign;\n\t\t\tvertex.z = radius * cosTheta;\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tconst c = centerIndexStart + x;\n\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\tif ( top === true ) {\n\n\t\t\t\t// face top\n\n\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t} else {\n\n\t\t\t\t// face bottom\n\n\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t}\n\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n}\n\nCylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry;\n\n/**\n * @author abelnation / http://github.com/abelnation\n */\n\n// ConeGeometry\n\nfunction ConeGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeGeometry.prototype = Object.create( CylinderGeometry.prototype );\nConeGeometry.prototype.constructor = ConeGeometry;\n\n// ConeBufferGeometry\n\nfunction ConeBufferGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderBufferGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeBufferGeometry.prototype = Object.create( CylinderBufferGeometry.prototype );\nConeBufferGeometry.prototype.constructor = ConeBufferGeometry;\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n * @author Mugen87 / https://github.com/Mugen87\n * @author hughes\n */\n\n// CircleGeometry\n\nfunction CircleGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CircleGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCircleGeometry.prototype = Object.create( Geometry.prototype );\nCircleGeometry.prototype.constructor = CircleGeometry;\n\n// CircleBufferGeometry\n\nfunction CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CircleBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\tsegments = segments !== undefined ? Math.max( 3, segments ) : 8;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tconst indices = [];\n\tconst vertices = [];\n\tconst normals = [];\n\tconst uvs = [];\n\n\t// helper variables\n\n\tconst vertex = new Vector3();\n\tconst uv = new Vector2();\n\n\t// center point\n\n\tvertices.push( 0, 0, 0 );\n\tnormals.push( 0, 0, 1 );\n\tuvs.push( 0.5, 0.5 );\n\n\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\tconst segment = thetaStart + s / segments * thetaLength;\n\n\t\t// vertex\n\n\t\tvertex.x = radius * Math.cos( segment );\n\t\tvertex.y = radius * Math.sin( segment );\n\n\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t// normal\n\n\t\tnormals.push( 0, 0, 1 );\n\n\t\t// uvs\n\n\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\tuvs.push( uv.x, uv.y );\n\n\t}\n\n\t// indices\n\n\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\tindices.push( i, i + 1, 0 );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nCircleBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCircleBufferGeometry.prototype.constructor = CircleBufferGeometry;\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tWireframeGeometry: WireframeGeometry,\n\tParametricGeometry: ParametricGeometry,\n\tParametricBufferGeometry: ParametricBufferGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTetrahedronBufferGeometry: TetrahedronBufferGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tOctahedronBufferGeometry: OctahedronBufferGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tIcosahedronBufferGeometry: IcosahedronBufferGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tDodecahedronBufferGeometry: DodecahedronBufferGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tPolyhedronBufferGeometry: PolyhedronBufferGeometry,\n\tTubeGeometry: TubeGeometry,\n\tTubeBufferGeometry: TubeBufferGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTorusKnotBufferGeometry: TorusKnotBufferGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusBufferGeometry: TorusBufferGeometry,\n\tTextGeometry: TextGeometry,\n\tTextBufferGeometry: TextBufferGeometry,\n\tSphereGeometry: SphereGeometry,\n\tSphereBufferGeometry: SphereBufferGeometry,\n\tRingGeometry: RingGeometry,\n\tRingBufferGeometry: RingBufferGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPlaneBufferGeometry: PlaneBufferGeometry,\n\tLatheGeometry: LatheGeometry,\n\tLatheBufferGeometry: LatheBufferGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tShapeBufferGeometry: ShapeBufferGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tExtrudeBufferGeometry: ExtrudeBufferGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tConeGeometry: ConeGeometry,\n\tConeBufferGeometry: ConeBufferGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tCylinderBufferGeometry: CylinderBufferGeometry,\n\tCircleGeometry: CircleGeometry,\n\tCircleBufferGeometry: CircleBufferGeometry,\n\tBoxGeometry: BoxGeometry,\n\tBoxBufferGeometry: BoxBufferGeometry\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * parameters = {\n * color: \n * }\n */\n\nfunction ShadowMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShadowMaterial';\n\n\tthis.color = new Color( 0x000000 );\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nShadowMaterial.prototype = Object.create( Material.prototype );\nShadowMaterial.prototype.constructor = ShadowMaterial;\n\nShadowMaterial.prototype.isShadowMaterial = true;\n\nShadowMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction RawShaderMaterial( parameters ) {\n\n\tShaderMaterial.call( this, parameters );\n\n\tthis.type = 'RawShaderMaterial';\n\n}\n\nRawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype );\nRawShaderMaterial.prototype.constructor = RawShaderMaterial;\n\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * color: ,\n * roughness: ,\n * metalness: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * roughnessMap: new THREE.Texture( ),\n *\n * metalnessMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * envMapIntensity: \n *\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshStandardMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.type = 'MeshStandardMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.roughness = 1.0;\n\tthis.metalness = 0.0;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.roughnessMap = null;\n\n\tthis.metalnessMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.envMapIntensity = 1.0;\n\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.vertexTangents = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshStandardMaterial.prototype = Object.create( Material.prototype );\nMeshStandardMaterial.prototype.constructor = MeshStandardMaterial;\n\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\nMeshStandardMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.color.copy( source.color );\n\tthis.roughness = source.roughness;\n\tthis.metalness = source.metalness;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.roughnessMap = source.roughnessMap;\n\n\tthis.metalnessMap = source.metalnessMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.envMapIntensity = source.envMapIntensity;\n\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.vertexTangents = source.vertexTangents;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * clearcoat: ,\n * clearcoatMap: new THREE.Texture( ),\n * clearcoatRoughness: ,\n * clearcoatRoughnessMap: new THREE.Texture( ),\n * clearcoatNormalScale: ,\n * clearcoatNormalMap: new THREE.Texture( ),\n *\n * reflectivity: ,\n *\n * sheen: ,\n *\n * transparency: \n * }\n */\n\nfunction MeshPhysicalMaterial( parameters ) {\n\n\tMeshStandardMaterial.call( this );\n\n\tthis.defines = {\n\n\t\t'STANDARD': '',\n\t\t'PHYSICAL': ''\n\n\t};\n\n\tthis.type = 'MeshPhysicalMaterial';\n\n\tthis.clearcoat = 0.0;\n\tthis.clearcoatMap = null;\n\tthis.clearcoatRoughness = 0.0;\n\tthis.clearcoatRoughnessMap = null;\n\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\tthis.clearcoatNormalMap = null;\n\n\tthis.reflectivity = 0.5; // maps to F0 = 0.04\n\n\tthis.sheen = null; // null will disable sheen bsdf\n\n\tthis.transparency = 0.0;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\nMeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial;\n\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\nMeshPhysicalMaterial.prototype.copy = function ( source ) {\n\n\tMeshStandardMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = {\n\n\t\t'STANDARD': '',\n\t\t'PHYSICAL': ''\n\n\t};\n\n\tthis.clearcoat = source.clearcoat;\n\tthis.clearcoatMap = source.clearcoatMap;\n\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\tthis.reflectivity = source.reflectivity;\n\n\tif ( source.sheen ) {\n\n\t\tthis.sheen = ( this.sheen || new Color() ).copy( source.sheen );\n\n\t} else {\n\n\t\tthis.sheen = null;\n\n\t}\n\n\tthis.transparency = source.transparency;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * specular: ,\n * shininess: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.MultiplyOperation,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshPhongMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshPhongMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.specular = new Color( 0x111111 );\n\tthis.shininess = 30;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhongMaterial.prototype = Object.create( Material.prototype );\nMeshPhongMaterial.prototype.constructor = MeshPhongMaterial;\n\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\nMeshPhongMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.specular.copy( source.specular );\n\tthis.shininess = source.shininess;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author takahirox / http://github.com/takahirox\n *\n * parameters = {\n * color: ,\n *\n * map: new THREE.Texture( ),\n * gradientMap: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * alphaMap: new THREE.Texture( ),\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshToonMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'TOON': '' };\n\n\tthis.type = 'MeshToonMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\tthis.gradientMap = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.alphaMap = null;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshToonMaterial.prototype = Object.create( Material.prototype );\nMeshToonMaterial.prototype.constructor = MeshToonMaterial;\n\nMeshToonMaterial.prototype.isMeshToonMaterial = true;\n\nMeshToonMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\tthis.gradientMap = source.gradientMap;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * opacity: ,\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshNormalMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshNormalMaterial';\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshNormalMaterial.prototype = Object.create( Material.prototype );\nMeshNormalMaterial.prototype.constructor = MeshNormalMaterial;\n\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\nMeshNormalMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshLambertMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshLambertMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshLambertMaterial.prototype = Object.create( Material.prototype );\nMeshLambertMaterial.prototype.constructor = MeshLambertMaterial;\n\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\nMeshLambertMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * matcap: new THREE.Texture( ),\n *\n * map: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * alphaMap: new THREE.Texture( ),\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshMatcapMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.type = 'MeshMatcapMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.matcap = null;\n\n\tthis.map = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.alphaMap = null;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshMatcapMaterial.prototype = Object.create( Material.prototype );\nMeshMatcapMaterial.prototype.constructor = MeshMatcapMaterial;\n\nMeshMatcapMaterial.prototype.isMeshMatcapMaterial = true;\n\nMeshMatcapMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.color.copy( source.color );\n\n\tthis.matcap = source.matcap;\n\n\tthis.map = source.map;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n *\n * scale: ,\n * dashSize: ,\n * gapSize: \n * }\n */\n\nfunction LineDashedMaterial( parameters ) {\n\n\tLineBasicMaterial.call( this );\n\n\tthis.type = 'LineDashedMaterial';\n\n\tthis.scale = 1;\n\tthis.dashSize = 3;\n\tthis.gapSize = 1;\n\n\tthis.setValues( parameters );\n\n}\n\nLineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype );\nLineDashedMaterial.prototype.constructor = LineDashedMaterial;\n\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\nLineDashedMaterial.prototype.copy = function ( source ) {\n\n\tLineBasicMaterial.prototype.copy.call( this, source );\n\n\tthis.scale = source.scale;\n\tthis.dashSize = source.dashSize;\n\tthis.gapSize = source.gapSize;\n\n\treturn this;\n\n};\n\nvar Materials = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tShadowMaterial: ShadowMaterial,\n\tSpriteMaterial: SpriteMaterial,\n\tRawShaderMaterial: RawShaderMaterial,\n\tShaderMaterial: ShaderMaterial,\n\tPointsMaterial: PointsMaterial,\n\tMeshPhysicalMaterial: MeshPhysicalMaterial,\n\tMeshStandardMaterial: MeshStandardMaterial,\n\tMeshPhongMaterial: MeshPhongMaterial,\n\tMeshToonMaterial: MeshToonMaterial,\n\tMeshNormalMaterial: MeshNormalMaterial,\n\tMeshLambertMaterial: MeshLambertMaterial,\n\tMeshDepthMaterial: MeshDepthMaterial,\n\tMeshDistanceMaterial: MeshDistanceMaterial,\n\tMeshBasicMaterial: MeshBasicMaterial,\n\tMeshMatcapMaterial: MeshMatcapMaterial,\n\tLineDashedMaterial: LineDashedMaterial,\n\tLineBasicMaterial: LineBasicMaterial,\n\tMaterial: Material\n});\n\n/**\n * @author tschw\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nconst AnimationUtils = {\n\n\t// same as Array.prototype.slice, but also works on typed arrays\n\tarraySlice: function ( array, from, to ) {\n\n\t\tif ( AnimationUtils.isTypedArray( array ) ) {\n\n\t\t\t// in ios9 array.subarray(from, undefined) will return empty array\n\t\t\t// but array.subarray(from) or array.subarray(from, len) is correct\n\t\t\treturn new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );\n\n\t\t}\n\n\t\treturn array.slice( from, to );\n\n\t},\n\n\t// converts an array to a specific type\n\tconvertArray: function ( array, type, forceClone ) {\n\n\t\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t\t! forceClone && array.constructor === type ) return array;\n\n\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\t\treturn new type( array ); // create typed array\n\n\t\t}\n\n\t\treturn Array.prototype.slice.call( array ); // create Array\n\n\t},\n\n\tisTypedArray: function ( object ) {\n\n\t\treturn ArrayBuffer.isView( object ) &&\n\t\t\t! ( object instanceof DataView );\n\n\t},\n\n\t// returns an array by which times and values can be sorted\n\tgetKeyframeOrder: function ( times ) {\n\n\t\tfunction compareTime( i, j ) {\n\n\t\t\treturn times[ i ] - times[ j ];\n\n\t\t}\n\n\t\tconst n = times.length;\n\t\tconst result = new Array( n );\n\t\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\t\tresult.sort( compareTime );\n\n\t\treturn result;\n\n\t},\n\n\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\tsortedArray: function ( values, stride, order ) {\n\n\t\tconst nValues = values.length;\n\t\tconst result = new values.constructor( nValues );\n\n\t\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\tconst srcOffset = order[ i ] * stride;\n\n\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// function for parsing AOS keyframe formats\n\tflattenJSON: function ( jsonKeys, times, values, valuePropertyName ) {\n\n\t\tlet i = 1, key = jsonKeys[ 0 ];\n\n\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t}\n\n\t\tif ( key === undefined ) return; // no data\n\n\t\tlet value = key[ valuePropertyName ];\n\t\tif ( value === undefined ) return; // no data\n\n\t\tif ( Array.isArray( value ) ) {\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else if ( value.toArray !== undefined ) {\n\n\t\t\t// ...assume THREE.Math-ish\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else {\n\n\t\t\t// otherwise push as-is\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t}\n\n\t},\n\n\tsubclip: function ( sourceClip, name, startFrame, endFrame, fps ) {\n\n\t\tfps = fps || 30;\n\n\t\tconst clip = sourceClip.clone();\n\n\t\tclip.name = name;\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tconst track = clip.tracks[ i ];\n\t\t\tconst valueSize = track.getValueSize();\n\n\t\t\tconst times = [];\n\t\t\tconst values = [];\n\n\t\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( times.length === 0 ) continue;\n\n\t\t\ttrack.times = AnimationUtils.convertArray( times, track.times.constructor );\n\t\t\ttrack.values = AnimationUtils.convertArray( values, track.values.constructor );\n\n\t\t\ttracks.push( track );\n\n\t\t}\n\n\t\tclip.tracks = tracks;\n\n\t\t// find minimum .times value across all tracks in the trimmed clip\n\n\t\tlet minStartTime = Infinity;\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// shift all tracks such that clip begins at t=0\n\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t\t}\n\n\t\tclip.resetDuration();\n\n\t\treturn clip;\n\n\t},\n\n\tmakeClipAdditive: function ( targetClip, referenceFrame, referenceClip, fps ) {\n\n\t\tif ( referenceFrame === undefined ) referenceFrame = 0;\n\t\tif ( referenceClip === undefined ) referenceClip = targetClip;\n\t\tif ( fps === undefined || fps <= 0 ) fps = 30;\n\n\t\tconst numTracks = targetClip.tracks.length;\n\t\tconst referenceTime = referenceFrame / fps;\n\n\t\t// Make each track's values relative to the values at the reference frame\n\t\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t\t// Skip this track if it's non-numeric\n\t\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t\t} );\n\n\t\t\tif ( targetTrack === undefined ) continue;\n\n\t\t\tconst valueSize = referenceTrack.getValueSize();\n\t\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\t\tlet referenceValue;\n\n\t\t\t// Find the value to subtract out of the track\n\t\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, 0, referenceTrack.valueSize );\n\n\t\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\t\tconst startIndex = lastIndex * valueSize;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex );\n\n\t\t\t} else {\n\n\t\t\t\t// Interpolate to the reference value\n\t\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\t\treferenceValue = interpolant.resultBuffer;\n\n\t\t\t}\n\n\t\t\t// Conjugate the quaternion\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\tconst referenceQuat = new Quaternion(\n\t\t\t\t\treferenceValue[ 0 ],\n\t\t\t\t\treferenceValue[ 1 ],\n\t\t\t\t\treferenceValue[ 2 ],\n\t\t\t\t\treferenceValue[ 3 ]\n\t\t\t\t).normalize().conjugate();\n\t\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t\t}\n\n\t\t\t// Subtract the reference value from all of the track values\n\n\t\t\tconst numTimes = targetTrack.times.length;\n\t\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\t\tconst valueStart = j * valueSize;\n\n\t\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart,\n\t\t\t\t\t\treferenceValue,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\t\tvalueStart\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\t\treturn targetClip;\n\n\t}\n\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n * @author tschw\n */\n\nfunction Interpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tthis.parameterPositions = parameterPositions;\n\tthis._cachedIndex = 0;\n\n\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\tthis.sampleValues = sampleValues;\n\tthis.valueSize = sampleSize;\n\n}\n\nObject.assign( Interpolant.prototype, {\n\n\tevaluate: function ( t ) {\n\n\t\tlet pp = this.parameterPositions,\n\t\t\ti1 = this._cachedIndex,\n\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tlet right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t, t0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tconst t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tconst mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.afterEnd_( i1 - 1, t0, t );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t},\n\n\tsettings: null, // optional, subclass-specific settings structure\n\t// Note: The indirection allows central control of many interpolants.\n\n\t// --- Protected interface\n\n\tDefaultSettings_: {},\n\n\tgetSettings_: function () {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t},\n\n\tcopySampleValue_: function ( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// Template methods for derived classes:\n\n\tinterpolate_: function ( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t},\n\n\tintervalChanged_: function ( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n} );\n\n// DECLARE ALIAS AFTER assign prototype\nObject.assign( Interpolant.prototype, {\n\n\t//( 0, t, t0 ), returns this.resultBuffer\n\tbeforeStart_: Interpolant.prototype.copySampleValue_,\n\n\t//( N-1, tN-1, t ), returns this.resultBuffer\n\tafterEnd_: Interpolant.prototype.copySampleValue_,\n\n} );\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n *\n * @author tschw\n */\n\nfunction CubicInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\tthis._weightPrev = - 0;\n\tthis._offsetPrev = - 0;\n\tthis._weightNext = - 0;\n\tthis._offsetNext = - 0;\n\n}\n\nCubicInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: CubicInterpolant,\n\n\tDefaultSettings_: {\n\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\n\t},\n\n\tintervalChanged_: function ( i1, t0, t1 ) {\n\n\t\tlet pp = this.parameterPositions,\n\t\t\tiPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t},\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tconst s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tconst s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tconst sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n * @author tschw\n */\n\nfunction LinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: LinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceeding\n * the parameter.\n *\n * @author tschw\n */\n\nfunction DiscreteInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nDiscreteInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: DiscreteInterpolant,\n\n\tinterpolate_: function ( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n} );\n\n/**\n *\n * A timed sequence of keyframes for a specific property.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction KeyframeTrack( name, times, values, interpolation ) {\n\n\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\tthis.name = name;\n\n\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\n\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\n\n\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n}\n\n// Static methods\n\nObject.assign( KeyframeTrack, {\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\ttoJSON: function ( track ) {\n\n\t\tconst trackType = track.constructor;\n\n\t\tlet json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== undefined ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': AnimationUtils.convertArray( track.times, Array ),\n\t\t\t\t'values': AnimationUtils.convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tconst interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n} );\n\nObject.assign( KeyframeTrack.prototype, {\n\n\tconstructor: KeyframeTrack,\n\n\tTimeBufferType: Float32Array,\n\n\tValueBufferType: Float32Array,\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodDiscrete: function ( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: function ( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tsetInterpolation: function ( interpolation ) {\n\n\t\tlet factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tconst message = \"unsupported interpolation for \" +\n\t\t\t\tthis.ValueTypeName + \" keyframe track named \" + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t},\n\n\tgetInterpolation: function () {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t},\n\n\tgetValueSize: function () {\n\n\t\treturn this.values.length / this.times.length;\n\n\t},\n\n\t// move all keyframes either forwards or backwards in time\n\tshift: function ( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale: function ( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim: function ( startTime, endTime ) {\n\n\t\tconst times = this.times,\n\t\t\tnKeys = times.length;\n\n\t\tlet from = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) {\n\n\t\t\t\tto = Math.max( to, 1 );\n\t\t\t\tfrom = to - 1;\n\n\t\t\t}\n\n\t\t\tconst stride = this.getValueSize();\n\t\t\tthis.times = AnimationUtils.arraySlice( times, from, to );\n\t\t\tthis.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate: function () {\n\n\t\tlet valid = true;\n\n\t\tconst valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tconst times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tlet prevTime = null;\n\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tconst currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( AnimationUtils.isTypedArray( values ) ) {\n\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tconst value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize: function () {\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tconst times = AnimationUtils.arraySlice( this.times ),\n\t\t\tvalues = AnimationUtils.arraySlice( this.values ),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\tlastIndex = times.length - 1;\n\n\t\tlet writeIndex = 1;\n\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tlet keep = false;\n\n\t\t\tconst time = times[ i ];\n\t\t\tconst timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tconst offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tconst value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tconst readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = AnimationUtils.arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\tconst times = AnimationUtils.arraySlice( this.times, 0 );\n\t\tconst values = AnimationUtils.arraySlice( this.values, 0 );\n\n\t\tconst TypedKeyframeTrack = this.constructor;\n\t\tconst track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n} );\n\n/**\n *\n * A Track of Boolean keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction BooleanKeyframeTrack( name, times, values ) {\n\n\tKeyframeTrack.call( this, name, times, values );\n\n}\n\nBooleanKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: BooleanKeyframeTrack,\n\n\tValueTypeName: 'bool',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\tInterpolantFactoryMethodSmooth: undefined\n\n\t// Note: Actually this track could have a optimized / compressed\n\t// representation of a single value and a custom interpolant that\n\t// computes \"firstValue ^ isOdd( index )\".\n\n} );\n\n/**\n *\n * A Track of keyframe values that represent color.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction ColorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nColorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: ColorKeyframeTrack,\n\n\tValueTypeName: 'color'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n\t// Note: Very basic implementation and nothing special yet.\n\t// However, this is the place for color space parameterization.\n\n} );\n\n/**\n *\n * A Track of numeric keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction NumberKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nNumberKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: NumberKeyframeTrack,\n\n\tValueTypeName: 'number'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n/**\n * Spherical linear unit quaternion interpolant.\n *\n * @author tschw\n */\n\nfunction QuaternionLinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nQuaternionLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: QuaternionLinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tlet offset = i1 * stride;\n\n\t\tfor ( let end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n *\n * A Track of quaternion keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction QuaternionKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nQuaternionKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: QuaternionKeyframeTrack,\n\n\tValueTypeName: 'quaternion',\n\n\t// ValueBufferType is inherited\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: undefined // not yet implemented\n\n} );\n\n/**\n *\n * A Track that interpolates Strings\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction StringKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nStringKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: StringKeyframeTrack,\n\n\tValueTypeName: 'string',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\n\tInterpolantFactoryMethodSmooth: undefined\n\n} );\n\n/**\n *\n * A Track of vectored keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction VectorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nVectorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: VectorKeyframeTrack,\n\n\tValueTypeName: 'vector'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n/**\n *\n * Reusable set of Tracks that represent an animation.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nfunction AnimationClip( name, duration, tracks, blendMode ) {\n\n\tthis.name = name;\n\tthis.tracks = tracks;\n\tthis.duration = ( duration !== undefined ) ? duration : - 1;\n\tthis.blendMode = ( blendMode !== undefined ) ? blendMode : NormalAnimationBlendMode;\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\t// this means it should figure out its duration by scanning the tracks\n\tif ( this.duration < 0 ) {\n\n\t\tthis.resetDuration();\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tconst trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tconst times = [], values = [];\n\n\t\tAnimationUtils.flattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nObject.assign( AnimationClip, {\n\n\tparse: function ( json ) {\n\n\t\tconst tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( json.name, json.duration, tracks, json.blendMode );\n\n\t},\n\n\ttoJSON: function ( clip ) {\n\n\t\tconst tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tconst json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid,\n\t\t\t'blendMode': clip.blendMode\n\n\t\t};\n\n\t\tfor ( let i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t},\n\n\tCreateFromMorphTargetSequence: function ( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tlet times = [];\n\t\t\tlet values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tconst order = AnimationUtils.getKeyframeOrder( times );\n\t\t\ttimes = AnimationUtils.sortedArray( times, 1, order );\n\t\t\tvalues = AnimationUtils.sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( name, - 1, tracks );\n\n\t},\n\n\tfindByName: function ( objectOrClipArray, name ) {\n\n\t\tlet clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tconst o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\tCreateClipsFromMorphTargetSequences: function ( morphTargets, fps, noLoop ) {\n\n\t\tconst animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\tconst parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tconst name = parts[ 1 ];\n\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\n\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst clips = [];\n\n\t\tfor ( const name in animationToMorphTargets ) {\n\n\t\t\tclips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t},\n\n\t// parse the animation.hierarchy format\n\tparseAnimation: function ( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tAnimationUtils.flattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tconst tracks = [];\n\n\t\tconst clipName = animation.name || 'default';\n\t\tconst fps = animation.fps || 30;\n\t\tconst blendMode = animation.blendMode;\n\n\t\t// automatic length determination in AnimationClip.\n\t\tlet duration = animation.length || - 1;\n\n\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tconst animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tconst morphTargetNames = {};\n\n\t\t\t\tlet k;\n\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( const morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tconst animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * ( fps || 1.0 );\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tconst boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst clip = new AnimationClip( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n} );\n\nObject.assign( AnimationClip.prototype, {\n\n\tresetDuration: function () {\n\n\t\tconst tracks = this.tracks;\n\t\tlet duration = 0;\n\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tconst track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t},\n\n\ttrim: function () {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tvalidate: function () {\n\n\t\tlet valid = true;\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\toptimize: function () {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new AnimationClip( this.name, this.duration, tracks, this.blendMode );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LoadingManager( onLoad, onProgress, onError ) {\n\n\tconst scope = this;\n\n\tlet isLoading = false;\n\tlet itemsLoaded = 0;\n\tlet itemsTotal = 0;\n\tlet urlModifier = undefined;\n\tconst handlers = [];\n\n\t// Refer to #5689 for the reason why we don't set .onStart\n\t// in the constructor\n\n\tthis.onStart = undefined;\n\tthis.onLoad = onLoad;\n\tthis.onProgress = onProgress;\n\tthis.onError = onError;\n\n\tthis.itemStart = function ( url ) {\n\n\t\titemsTotal ++;\n\n\t\tif ( isLoading === false ) {\n\n\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tisLoading = true;\n\n\t};\n\n\tthis.itemEnd = function ( url ) {\n\n\t\titemsLoaded ++;\n\n\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t}\n\n\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\tisLoading = false;\n\n\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\tscope.onLoad();\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.itemError = function ( url ) {\n\n\t\tif ( scope.onError !== undefined ) {\n\n\t\t\tscope.onError( url );\n\n\t\t}\n\n\t};\n\n\tthis.resolveURL = function ( url ) {\n\n\t\tif ( urlModifier ) {\n\n\t\t\treturn urlModifier( url );\n\n\t\t}\n\n\t\treturn url;\n\n\t};\n\n\tthis.setURLModifier = function ( transform ) {\n\n\t\turlModifier = transform;\n\n\t\treturn this;\n\n\t};\n\n\tthis.addHandler = function ( regex, loader ) {\n\n\t\thandlers.push( regex, loader );\n\n\t\treturn this;\n\n\t};\n\n\tthis.removeHandler = function ( regex ) {\n\n\t\tconst index = handlers.indexOf( regex );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\thandlers.splice( index, 2 );\n\n\t\t}\n\n\t\treturn this;\n\n\t};\n\n\tthis.getHandler = function ( file ) {\n\n\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\tconst regex = handlers[ i ];\n\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\treturn loader;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t};\n\n}\n\nconst DefaultLoadingManager = new LoadingManager();\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Loader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\tthis.crossOrigin = 'anonymous';\n\tthis.path = '';\n\tthis.resourcePath = '';\n\tthis.requestHeader = {};\n\n}\n\nObject.assign( Loader.prototype, {\n\n\tload: function ( /* url, onLoad, onProgress, onError */ ) {},\n\n\tloadAsync: function ( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t},\n\n\tparse: function ( /* data */ ) {},\n\n\tsetCrossOrigin: function ( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t},\n\n\tsetResourcePath: function ( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t},\n\n\tsetRequestHeader: function ( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst loading = {};\n\nfunction FileLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nFileLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: FileLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Check for data: URI\n\t\tconst dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n\t\tconst dataUriRegexResult = url.match( dataUriRegex );\n\t\tlet request;\n\n\t\t// Safari can not handle Data URIs through XMLHttpRequest so process manually\n\t\tif ( dataUriRegexResult ) {\n\n\t\t\tconst mimeType = dataUriRegexResult[ 1 ];\n\t\t\tconst isBase64 = !! dataUriRegexResult[ 2 ];\n\n\t\t\tlet data = dataUriRegexResult[ 3 ];\n\t\t\tdata = decodeURIComponent( data );\n\n\t\t\tif ( isBase64 ) data = atob( data );\n\n\t\t\ttry {\n\n\t\t\t\tlet response;\n\t\t\t\tconst responseType = ( this.responseType || '' ).toLowerCase();\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\tconst view = new Uint8Array( data.length );\n\n\t\t\t\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\t\t\t\tview[ i ] = data.charCodeAt( i );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( responseType === 'blob' ) {\n\n\t\t\t\t\t\t\tresponse = new Blob( [ view.buffer ], { type: mimeType } );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tresponse = view.buffer;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\tresponse = parser.parseFromString( data, mimeType );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\tresponse = JSON.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault: // 'text' or other\n\n\t\t\t\t\t\tresponse = data;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onError ) onError( error );\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Initialise array for duplicate requests\n\n\t\t\tloading[ url ] = [];\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\trequest = new XMLHttpRequest();\n\n\t\t\trequest.open( 'GET', url, true );\n\n\t\t\trequest.addEventListener( 'load', function ( event ) {\n\n\t\t\t\tconst response = this.response;\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tif ( this.status === 200 || this.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( this.status === 0 ) console.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\t\tCache.add( url, response );\n\n\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( response );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'progress', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'error', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'abort', function ( event ) {\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\tif ( this.responseType !== undefined ) request.responseType = this.responseType;\n\t\t\tif ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;\n\n\t\t\tif ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' );\n\n\t\t\tfor ( const header in this.requestHeader ) {\n\n\t\t\t\trequest.setRequestHeader( header, this.requestHeader[ header ] );\n\n\t\t\t}\n\n\t\t\trequest.send( null );\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\treturn request;\n\n\t},\n\n\tsetResponseType: function ( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t},\n\n\tsetMimeType: function ( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io/\n */\n\nfunction AnimationLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nAnimationLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: AnimationLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nfunction CompressedTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nCompressedTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: CompressedTextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\t\ttexture.image = images;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 )\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tfor ( let i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( let i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * @author Nikos M. / https://github.com/foo123/\n *\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nfunction DataTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nDataTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: DataTextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst texture = new DataTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tconst texData = scope.parse( buffer );\n\n\t\t\tif ( ! texData ) return;\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ImageLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nImageLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ImageLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.substr( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction CubeTextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nCubeTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: CubeTextureLoader,\n\n\tload: function ( urls, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new CubeTexture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction TextureLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: TextureLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new Texture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\n\t\t\t// JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB.\n\t\t\tconst isJPEG = url.search( /\\.jpe?g($|\\?)/i ) > 0 || url.search( /^data\\:image\\/jpeg/ ) === 0;\n\n\t\t\ttexture.format = isJPEG ? RGBFormat : RGBAFormat;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Extensible curve object\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\n/**************************************************************\n *\tAbstract Curve base class\n **************************************************************/\n\nfunction Curve() {\n\n\tthis.type = 'Curve';\n\n\tthis.arcLengthDivisions = 200;\n\n}\n\nObject.assign( Curve.prototype, {\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint: function ( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t},\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt: function ( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t},\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get total curve arc length\n\n\tgetLength: function () {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t},\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = this.arcLengthDivisions;\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t},\n\n\tupdateArcLengths: function () {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t},\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping: function ( u, distance ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0, il = arcLengths.length;\n\n\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tlet low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t},\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent: function ( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t},\n\n\tgetTangentAt: function ( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t},\n\n\tcomputeFrenetFrames: function ( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\n\t\t\ttangents[ i ].normalize();\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\tconst theta = Math.acos( MathUtils.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\tlet theta = Math.acos( MathUtils.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'EllipseCurve';\n\n\tthis.aX = aX || 0;\n\tthis.aY = aY || 0;\n\n\tthis.xRadius = xRadius || 1;\n\tthis.yRadius = yRadius || 1;\n\n\tthis.aStartAngle = aStartAngle || 0;\n\tthis.aEndAngle = aEndAngle || 2 * Math.PI;\n\n\tthis.aClockwise = aClockwise || false;\n\n\tthis.aRotation = aRotation || 0;\n\n}\n\nEllipseCurve.prototype = Object.create( Curve.prototype );\nEllipseCurve.prototype.constructor = EllipseCurve;\n\nEllipseCurve.prototype.isEllipseCurve = true;\n\nEllipseCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst twoPi = Math.PI * 2;\n\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t// ensures that deltaAngle is 0 .. 2 PI\n\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\tif ( samePoints ) {\n\n\t\t\tdeltaAngle = 0;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = twoPi;\n\n\t\t}\n\n\t}\n\n\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\tdeltaAngle = - twoPi;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t}\n\n\t}\n\n\tconst angle = this.aStartAngle + t * deltaAngle;\n\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\tif ( this.aRotation !== 0 ) {\n\n\t\tconst cos = Math.cos( this.aRotation );\n\t\tconst sin = Math.sin( this.aRotation );\n\n\t\tconst tx = x - this.aX;\n\t\tconst ty = y - this.aY;\n\n\t\t// Rotate the point about the center of the ellipse.\n\t\tx = tx * cos - ty * sin + this.aX;\n\t\ty = tx * sin + ty * cos + this.aY;\n\n\t}\n\n\treturn point.set( x, y );\n\n};\n\nEllipseCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.aX = source.aX;\n\tthis.aY = source.aY;\n\n\tthis.xRadius = source.xRadius;\n\tthis.yRadius = source.yRadius;\n\n\tthis.aStartAngle = source.aStartAngle;\n\tthis.aEndAngle = source.aEndAngle;\n\n\tthis.aClockwise = source.aClockwise;\n\n\tthis.aRotation = source.aRotation;\n\n\treturn this;\n\n};\n\n\nEllipseCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.aX = this.aX;\n\tdata.aY = this.aY;\n\n\tdata.xRadius = this.xRadius;\n\tdata.yRadius = this.yRadius;\n\n\tdata.aStartAngle = this.aStartAngle;\n\tdata.aEndAngle = this.aEndAngle;\n\n\tdata.aClockwise = this.aClockwise;\n\n\tdata.aRotation = this.aRotation;\n\n\treturn data;\n\n};\n\nEllipseCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.aX = json.aX;\n\tthis.aY = json.aY;\n\n\tthis.xRadius = json.xRadius;\n\tthis.yRadius = json.yRadius;\n\n\tthis.aStartAngle = json.aStartAngle;\n\tthis.aEndAngle = json.aEndAngle;\n\n\tthis.aClockwise = json.aClockwise;\n\n\tthis.aRotation = json.aRotation;\n\n\treturn this;\n\n};\n\nfunction ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\tEllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\tthis.type = 'ArcCurve';\n\n}\n\nArcCurve.prototype = Object.create( EllipseCurve.prototype );\nArcCurve.prototype.constructor = ArcCurve;\n\nArcCurve.prototype.isArcCurve = true;\n\n/**\n * @author zz85 https://github.com/zz85\n *\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nconst tmp = new Vector3();\nconst px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly();\n\nfunction CatmullRomCurve3( points, closed, curveType, tension ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CatmullRomCurve3';\n\n\tthis.points = points || [];\n\tthis.closed = closed || false;\n\tthis.curveType = curveType || 'centripetal';\n\tthis.tension = tension || 0.5;\n\n}\n\nCatmullRomCurve3.prototype = Object.create( Curve.prototype );\nCatmullRomCurve3.prototype.constructor = CatmullRomCurve3;\n\nCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\n\nCatmullRomCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tconst points = this.points;\n\tconst l = points.length;\n\n\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\tlet intPoint = Math.floor( p );\n\tlet weight = p - intPoint;\n\n\tif ( this.closed ) {\n\n\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\tintPoint = l - 2;\n\t\tweight = 1;\n\n\t}\n\n\tlet p0, p1, p2, p3; // 4 points\n\n\tif ( this.closed || intPoint > 0 ) {\n\n\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate first point\n\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\tp0 = tmp;\n\n\t}\n\n\tp1 = points[ intPoint % l ];\n\tp2 = points[ ( intPoint + 1 ) % l ];\n\n\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate last point\n\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\tp3 = tmp;\n\n\t}\n\n\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t// init Centripetal / Chordal Catmull-Rom\n\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t// safety check for repeated points\n\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t}\n\n\tpoint.set(\n\t\tpx.calc( weight ),\n\t\tpy.calc( weight ),\n\t\tpz.calc( weight )\n\t);\n\n\treturn point;\n\n};\n\nCatmullRomCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tconst point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\tthis.closed = source.closed;\n\tthis.curveType = source.curveType;\n\tthis.tension = source.tension;\n\n\treturn this;\n\n};\n\nCatmullRomCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tconst point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\tdata.closed = this.closed;\n\tdata.curveType = this.curveType;\n\tdata.tension = this.tension;\n\n\treturn data;\n\n};\n\nCatmullRomCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tconst point = json.points[ i ];\n\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t}\n\n\tthis.closed = json.closed;\n\tthis.curveType = json.curveType;\n\tthis.tension = json.tension;\n\n\treturn this;\n\n};\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n * Bezier Curves formulas obtained from\n * http://en.wikipedia.org/wiki/Bézier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nfunction CubicBezierCurve( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\tthis.v3 = v3 || new Vector2();\n\n}\n\nCubicBezierCurve.prototype = Object.create( Curve.prototype );\nCubicBezierCurve.prototype.constructor = CubicBezierCurve;\n\nCubicBezierCurve.prototype.isCubicBezierCurve = true;\n\nCubicBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction CubicBezierCurve3( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\tthis.v3 = v3 || new Vector3();\n\n}\n\nCubicBezierCurve3.prototype = Object.create( Curve.prototype );\nCubicBezierCurve3.prototype.constructor = CubicBezierCurve3;\n\nCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\n\nCubicBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction LineCurve( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve';\n\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nLineCurve.prototype = Object.create( Curve.prototype );\nLineCurve.prototype.constructor = LineCurve;\n\nLineCurve.prototype.isLineCurve = true;\n\nLineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve.prototype.getTangent = function ( t, optionalTarget ) {\n\n\tconst tangent = optionalTarget || new Vector2();\n\n\ttangent.copy( this.v2 ).sub( this.v1 ).normalize();\n\n\treturn tangent;\n\n};\n\nLineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction LineCurve3( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve3';\n\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nLineCurve3.prototype = Object.create( Curve.prototype );\nLineCurve3.prototype.constructor = LineCurve3;\n\nLineCurve3.prototype.isLineCurve3 = true;\n\nLineCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve3.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nQuadraticBezierCurve.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve;\n\nQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\n\nQuadraticBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve3( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nQuadraticBezierCurve3.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3;\n\nQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\n\nQuadraticBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector3();\n\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve3.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction SplineCurve( points /* array of Vector2 */ ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'SplineCurve';\n\n\tthis.points = points || [];\n\n}\n\nSplineCurve.prototype = Object.create( Curve.prototype );\nSplineCurve.prototype.constructor = SplineCurve;\n\nSplineCurve.prototype.isSplineCurve = true;\n\nSplineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tconst point = optionalTarget || new Vector2();\n\n\tconst points = this.points;\n\tconst p = ( points.length - 1 ) * t;\n\n\tconst intPoint = Math.floor( p );\n\tconst weight = p - intPoint;\n\n\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\tconst p1 = points[ intPoint ];\n\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\tpoint.set(\n\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t);\n\n\treturn point;\n\n};\n\nSplineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tconst point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\treturn this;\n\n};\n\nSplineCurve.prototype.toJSON = function () {\n\n\tconst data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tconst point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\treturn data;\n\n};\n\nSplineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tconst point = json.points[ i ];\n\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t}\n\n\treturn this;\n\n};\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n **/\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nfunction CurvePath() {\n\n\tCurve.call( this );\n\n\tthis.type = 'CurvePath';\n\n\tthis.curves = [];\n\tthis.autoClose = false; // Automatically closes the path\n\n}\n\nCurvePath.prototype = Object.assign( Object.create( Curve.prototype ), {\n\n\tconstructor: CurvePath,\n\n\tadd: function ( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t},\n\n\tclosePath: function () {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t}\n\n\t},\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint: function ( t ) {\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurve.prototype.copy.call( this, source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = Curve.prototype.toJSON.call( this );\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurve.prototype.fromJSON.call( this, json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Creates free form 2d path using series of points, lines or curves.\n **/\n\nfunction Path( points ) {\n\n\tCurvePath.call( this );\n\n\tthis.type = 'Path';\n\n\tthis.currentPoint = new Vector2();\n\n\tif ( points ) {\n\n\t\tthis.setFromPoints( points );\n\n\t}\n\n}\n\nPath.prototype = Object.assign( Object.create( CurvePath.prototype ), {\n\n\tconstructor: Path,\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\treturn this;\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tconst curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tsplineThru: function ( pts /*Array of Vector*/ ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t},\n\n\tarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t},\n\n\tabsarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t},\n\n\tellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t},\n\n\tabsellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tconst firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurvePath.prototype.copy.call( this, source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = CurvePath.prototype.toJSON.call( this );\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurvePath.prototype.fromJSON.call( this, json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Defines a 2d shape plane using paths.\n **/\n\n// STEP 1 Create a path.\n// STEP 2 Turn path into shape.\n// STEP 3 ExtrudeGeometry takes in Shape/Shapes\n// STEP 3a - Extract points from each shape, turn to vertices\n// STEP 3b - Triangulate each shape, add faces.\n\nfunction Shape( points ) {\n\n\tPath.call( this, points );\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\tthis.type = 'Shape';\n\n\tthis.holes = [];\n\n}\n\nShape.prototype = Object.assign( Object.create( Path.prototype ), {\n\n\tconstructor: Shape,\n\n\tgetPointsHoles: function ( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t},\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints: function ( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tPath.prototype.copy.call( this, source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = Path.prototype.toJSON.call( this );\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tPath.prototype.fromJSON.call( this, json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Light( color, intensity ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Light';\n\n\tthis.color = new Color( color );\n\tthis.intensity = intensity !== undefined ? intensity : 1;\n\n\tthis.receiveShadow = undefined;\n\n}\n\nLight.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Light,\n\n\tisLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction HemisphereLight( skyColor, groundColor, intensity ) {\n\n\tLight.call( this, skyColor, intensity );\n\n\tthis.type = 'HemisphereLight';\n\n\tthis.castShadow = undefined;\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.groundColor = new Color( groundColor );\n\n}\n\nHemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: HemisphereLight,\n\n\tisHemisphereLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LightShadow( camera ) {\n\n\tthis.camera = camera;\n\n\tthis.bias = 0;\n\tthis.normalBias = 0;\n\tthis.radius = 1;\n\n\tthis.mapSize = new Vector2( 512, 512 );\n\n\tthis.map = null;\n\tthis.mapPass = null;\n\tthis.matrix = new Matrix4();\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis._frustum = new Frustum();\n\tthis._frameExtents = new Vector2( 1, 1 );\n\n\tthis._viewportCount = 1;\n\n\tthis._viewports = [\n\n\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t];\n\n}\n\nObject.assign( LightShadow.prototype, {\n\n\t_projScreenMatrix: new Matrix4(),\n\n\t_lightPositionWorld: new Vector3(),\n\n\t_lookTarget: new Vector3(),\n\n\tgetViewportCount: function () {\n\n\t\treturn this._viewportCount;\n\n\t},\n\n\tgetFrustum: function () {\n\n\t\treturn this._frustum;\n\n\t},\n\n\tupdateMatrices: function ( light ) {\n\n\t\tconst shadowCamera = this.camera,\n\t\t\tshadowMatrix = this.matrix,\n\t\t\tprojScreenMatrix = this._projScreenMatrix,\n\t\t\tlookTarget = this._lookTarget,\n\t\t\tlightPositionWorld = this._lightPositionWorld;\n\n\t\tlightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( lightPositionWorld );\n\n\t\tlookTarget.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( lookTarget );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\tprojScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( projScreenMatrix );\n\n\t\tshadowMatrix.set(\n\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t);\n\n\t\tshadowMatrix.multiply( shadowCamera.projectionMatrix );\n\t\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\n\n\t},\n\n\tgetViewport: function ( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t},\n\n\tgetFrameExtents: function () {\n\n\t\treturn this._frameExtents;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction SpotLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n}\n\nSpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: SpotLightShadow,\n\n\tisSpotLightShadow: true,\n\n\tupdateMatrices: function ( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = MathUtils.RAD2DEG * 2 * light.angle;\n\t\tconst aspect = this.mapSize.width / this.mapSize.height;\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tLightShadow.prototype.updateMatrices.call( this, light );\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction SpotLight( color, intensity, distance, angle, penumbra, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'SpotLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / Math.PI;\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.angle = ( angle !== undefined ) ? angle : Math.PI / 3;\n\tthis.penumbra = ( penumbra !== undefined ) ? penumbra : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new SpotLightShadow();\n\n}\n\nSpotLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: SpotLight,\n\n\tisSpotLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction PointLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\tthis._frameExtents = new Vector2( 4, 2 );\n\n\tthis._viewportCount = 6;\n\n\tthis._viewports = [\n\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t// following orientation:\n\t\t//\n\t\t// xzXZ\n\t\t// y Y\n\t\t//\n\t\t// X - Positive x direction\n\t\t// x - Negative x direction\n\t\t// Y - Positive y direction\n\t\t// y - Negative y direction\n\t\t// Z - Positive z direction\n\t\t// z - Negative z direction\n\n\t\t// positive X\n\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t// negative X\n\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t// positive Z\n\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t// negative Z\n\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t// positive Y\n\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t// negative Y\n\t\tnew Vector4( 1, 0, 1, 1 )\n\t];\n\n\tthis._cubeDirections = [\n\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t];\n\n\tthis._cubeUps = [\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t];\n\n}\n\nPointLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: PointLightShadow,\n\n\tisPointLightShadow: true,\n\n\tupdateMatrices: function ( light, viewportIndex ) {\n\n\t\tif ( viewportIndex === undefined ) viewportIndex = 0;\n\n\t\tconst camera = this.camera,\n\t\t\tshadowMatrix = this.matrix,\n\t\t\tlightPositionWorld = this._lightPositionWorld,\n\t\t\tlookTarget = this._lookTarget,\n\t\t\tprojScreenMatrix = this._projScreenMatrix;\n\n\t\tlightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( lightPositionWorld );\n\n\t\tlookTarget.copy( camera.position );\n\t\tlookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - lightPositionWorld.x, - lightPositionWorld.y, - lightPositionWorld.z );\n\n\t\tprojScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( projScreenMatrix );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction PointLight( color, intensity, distance, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'PointLight';\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * 4 * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new PointLightShadow();\n\n}\n\nPointLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: PointLight,\n\n\tisPointLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author arose / http://github.com/arose\n */\n\nfunction OrthographicCamera( left, right, top, bottom, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'OrthographicCamera';\n\n\tthis.zoom = 1;\n\tthis.view = null;\n\n\tthis.left = ( left !== undefined ) ? left : - 1;\n\tthis.right = ( right !== undefined ) ? right : 1;\n\tthis.top = ( top !== undefined ) ? top : 1;\n\tthis.bottom = ( bottom !== undefined ) ? bottom : - 1;\n\n\tthis.near = ( near !== undefined ) ? near : 0.1;\n\tthis.far = ( far !== undefined ) ? far : 2000;\n\n\tthis.updateProjectionMatrix();\n\n}\n\nOrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: OrthographicCamera,\n\n\tisOrthographicCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t},\n\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tconst cx = ( this.right + this.left ) / 2;\n\t\tconst cy = ( this.top + this.bottom ) / 2;\n\n\t\tlet left = cx - dx;\n\t\tlet right = cx + dx;\n\t\tlet top = cy + dy;\n\t\tlet bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t\tthis.projectionMatrixInverse.getInverse( this.projectionMatrix );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectionalLightShadow() {\n\n\tLightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n}\n\nDirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: DirectionalLightShadow,\n\n\tisDirectionalLightShadow: true,\n\n\tupdateMatrices: function ( light ) {\n\n\t\tLightShadow.prototype.updateMatrices.call( this, light );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DirectionalLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'DirectionalLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tthis.shadow = new DirectionalLightShadow();\n\n}\n\nDirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: DirectionalLight,\n\n\tisDirectionalLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AmbientLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'AmbientLight';\n\n\tthis.castShadow = undefined;\n\n}\n\nAmbientLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: AmbientLight,\n\n\tisAmbientLight: true\n\n} );\n\n/**\n * @author abelnation / http://github.com/abelnation\n */\n\nfunction RectAreaLight( color, intensity, width, height ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'RectAreaLight';\n\n\tthis.width = ( width !== undefined ) ? width : 10;\n\tthis.height = ( height !== undefined ) ? height : 10;\n\n}\n\nRectAreaLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: RectAreaLight,\n\n\tisRectAreaLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Light.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * Primary reference:\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n * https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nfunction SphericalHarmonics3() {\n\n\tthis.coefficients = [];\n\n\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\tthis.coefficients.push( new Vector3() );\n\n\t}\n\n}\n\nObject.assign( SphericalHarmonics3.prototype, {\n\n\tisSphericalHarmonics3: true,\n\n\tset: function ( coefficients ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tzero: function () {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt: function ( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t},\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt: function ( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t},\n\n\tadd: function ( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\taddScaledSH: function ( sh, s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( sh, alpha ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcopy: function ( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n} );\n\nObject.assign( SphericalHarmonics3, {\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tgetBasisAt: function ( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n} );\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * A LightProbe is a source of indirect-diffuse light\n */\n\nfunction LightProbe( sh, intensity ) {\n\n\tLight.call( this, undefined, intensity );\n\n\tthis.type = 'LightProbe';\n\n\tthis.sh = ( sh !== undefined ) ? sh : new SphericalHarmonics3();\n\n}\n\nLightProbe.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: LightProbe,\n\n\tisLightProbe: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\n\t\tthis.sh.fromArray( json.sh );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = Light.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction MaterialLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n\tthis.textures = {};\n\n}\n\nMaterialLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: MaterialLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tconst material = new Materials[ json.type ]();\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = new Color().setHex( json.sheen );\n\t\tif ( json.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;\n\t\tif ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\n\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== 1 ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.skinning !== undefined ) material.skinning = json.skinning;\n\t\tif ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets;\n\t\tif ( json.morphNormals !== undefined ) material.morphNormals = json.morphNormals;\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.vertexTangents !== undefined ) material.vertexTangents = json.vertexTangents;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( const name in json.uniforms ) {\n\n\t\t\t\tconst uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( const key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Deprecated\n\n\t\tif ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap );\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tlet normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\treturn material;\n\n\t},\n\n\tsetTextures: function ( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author Don McCurdy / https://www.donmccurdy.com\n */\n\nconst LoaderUtils = {\n\n\tdecodeText: function ( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tlet s = '';\n\n\t\tfor ( let i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t},\n\n\textractUrlBase: function ( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.substr( 0, index + 1 );\n\n\t}\n\n};\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferGeometry() {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'InstancedBufferGeometry';\n\tthis.instanceCount = Infinity;\n\n}\n\nInstancedBufferGeometry.prototype = Object.assign( Object.create( BufferGeometry.prototype ), {\n\n\tconstructor: InstancedBufferGeometry,\n\n\tisInstancedBufferGeometry: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferGeometry.prototype.copy.call( this, source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tconst data = BufferGeometry.prototype.toJSON.call( this );\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferAttribute( array, itemSize, normalized, meshPerAttribute ) {\n\n\tif ( typeof ( normalized ) === 'number' ) {\n\n\t\tmeshPerAttribute = normalized;\n\n\t\tnormalized = false;\n\n\t\tconsole.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' );\n\n\t}\n\n\tBufferAttribute.call( this, array, itemSize, normalized );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedBufferAttribute.prototype = Object.assign( Object.create( BufferAttribute.prototype ), {\n\n\tconstructor: InstancedBufferAttribute,\n\n\tisInstancedBufferAttribute: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferAttribute.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ()\t{\n\n\t\tconst data = BufferAttribute.prototype.toJSON.call( this );\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferGeometryLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nBufferGeometryLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: BufferGeometryLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tconst interleavedBufferMap = {};\n\t\tconst arrayBufferMap = {};\n\n\t\tfunction getInterleavedBuffer( json, uuid ) {\n\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\n\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\n\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\n\n\t\t\tconst array = new TYPED_ARRAYS[ interleavedBuffer.type ]( buffer );\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\n\t\t\tib.uuid = interleavedBuffer.uuid;\n\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\n\n\t\t\treturn ib;\n\n\t\t}\n\n\t\tfunction getArrayBuffer( json, uuid ) {\n\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\n\n\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\n\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\n\n\t\t\tarrayBufferMap[ uuid ] = ab;\n\n\t\t\treturn ab;\n\n\t\t}\n\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tconst index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst typedArray = new TYPED_ARRAYS[ index.type ]( index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tconst attributes = json.data.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\t\t\tlet bufferAttribute;\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t} else {\n\n\t\t\t\tconst typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( const key in morphAttributes ) {\n\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attribute = attributeArray[ i ];\n\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tconst center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\t// Workaround for IE11 pre KB2929437. See #11440\n\tUint8ClampedArray: typeof Uint8ClampedArray !== 'undefined' ? Uint8ClampedArray : Uint8Array,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ObjectLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nObjectLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ObjectLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json, onLoad ) {\n\n\t\tconst shapes = this.parseShape( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials );\n\n\t\tif ( json.animations ) {\n\n\t\t\tobject.animations = this.parseAnimations( json.animations );\n\n\t\t}\n\n\t\tif ( json.images === undefined || json.images.length === 0 ) {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t},\n\n\tparseShape: function ( json ) {\n\n\t\tconst shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t},\n\n\tparseGeometries: function ( json, shapes ) {\n\n\t\tconst geometries = {};\n\t\tlet geometryShapes;\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tlet geometry;\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'PlaneGeometry':\n\t\t\t\t\tcase 'PlaneBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BoxGeometry':\n\t\t\t\t\tcase 'BoxBufferGeometry':\n\t\t\t\t\tcase 'CubeGeometry': // backwards compatible\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.depth,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.depthSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CircleGeometry':\n\t\t\t\t\tcase 'CircleBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CylinderGeometry':\n\t\t\t\t\tcase 'CylinderBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radiusTop,\n\t\t\t\t\t\t\tdata.radiusBottom,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ConeGeometry':\n\t\t\t\t\tcase 'ConeBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'SphereGeometry':\n\t\t\t\t\tcase 'SphereBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'DodecahedronGeometry':\n\t\t\t\t\tcase 'DodecahedronBufferGeometry':\n\t\t\t\t\tcase 'IcosahedronGeometry':\n\t\t\t\t\tcase 'IcosahedronBufferGeometry':\n\t\t\t\t\tcase 'OctahedronGeometry':\n\t\t\t\t\tcase 'OctahedronBufferGeometry':\n\t\t\t\t\tcase 'TetrahedronGeometry':\n\t\t\t\t\tcase 'TetrahedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.detail\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'RingGeometry':\n\t\t\t\t\tcase 'RingBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.innerRadius,\n\t\t\t\t\t\t\tdata.outerRadius,\n\t\t\t\t\t\t\tdata.thetaSegments,\n\t\t\t\t\t\t\tdata.phiSegments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusGeometry':\n\t\t\t\t\tcase 'TorusBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.arc\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusKnotGeometry':\n\t\t\t\t\tcase 'TorusKnotBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.p,\n\t\t\t\t\t\t\tdata.q\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TubeGeometry':\n\t\t\t\t\tcase 'TubeBufferGeometry':\n\n\t\t\t\t\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t\t\t\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.closed\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'LatheGeometry':\n\t\t\t\t\tcase 'LatheBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.points,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PolyhedronGeometry':\n\t\t\t\t\tcase 'PolyhedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.vertices,\n\t\t\t\t\t\t\tdata.indices,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.details\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ShapeGeometry':\n\t\t\t\t\tcase 'ShapeBufferGeometry':\n\n\t\t\t\t\t\tgeometryShapes = [];\n\n\t\t\t\t\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.curveSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\n\t\t\t\t\tcase 'ExtrudeGeometry':\n\t\t\t\t\tcase 'ExtrudeBufferGeometry':\n\n\t\t\t\t\t\tgeometryShapes = [];\n\n\t\t\t\t\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst extrudePath = data.options.extrudePath;\n\n\t\t\t\t\t\tif ( extrudePath !== undefined ) {\n\n\t\t\t\t\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.options\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\tconsole.error( 'THREE.ObjectLoader: Loading \"Geometry\" is not supported anymore.' );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Unsupported geometry type \"' + data.type + '\"' );\n\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t},\n\n\tparseMaterials: function ( json, textures ) {\n\n\t\tconst cache = {}; // MultiMaterial\n\t\tconst materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.type === 'MultiMaterial' ) {\n\n\t\t\t\t\t// Deprecated\n\n\t\t\t\t\tconst array = [];\n\n\t\t\t\t\tfor ( let j = 0; j < data.materials.length; j ++ ) {\n\n\t\t\t\t\t\tconst material = data.materials[ j ];\n\n\t\t\t\t\t\tif ( cache[ material.uuid ] === undefined ) {\n\n\t\t\t\t\t\t\tcache[ material.uuid ] = loader.parse( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tarray.push( cache[ material.uuid ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = array;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t},\n\n\tparseAnimations: function ( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst data = json[ i ];\n\n\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\tif ( data.uuid !== undefined ) clip.uuid = data.uuid;\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t},\n\n\tparseImages: function ( json, onLoad ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tconst manager = new LoadingManager( onLoad );\n\n\t\t\tloader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\timages[ image.uuid ] = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( currentUrl ) ? currentUrl : scope.resourcePath + currentUrl;\n\n\t\t\t\t\t\timages[ image.uuid ].push( loadImage( path ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( image.url ) ? image.url : scope.resourcePath + image.url;\n\n\t\t\t\t\timages[ image.uuid ] = loadImage( path );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t},\n\n\tparseTextures: function ( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tconst textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tlet texture;\n\n\t\t\t\tif ( Array.isArray( images[ data.image ] ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture( images[ data.image ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture = new Texture( images[ data.image ] );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t},\n\n\tparseObject: function ( data, geometries, materials ) {\n\n\t\tlet object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tlet geometry, material;\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' );\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\t\t\t\tconst count = data.count;\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new BufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tconst levels = data.levels;\n\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tconst level = levels[ l ];\n\t\t\t\tconst child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n} );\n\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping,\n\tCubeUVRefractionMapping: CubeUVRefractionMapping\n};\n\nconst TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nconst TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\n/**\n * @author thespite / http://clicktorelease.com/\n */\n\n\nfunction ImageBitmapLoader( manager ) {\n\n\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t}\n\n\tif ( typeof fetch === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t}\n\n\tLoader.call( this, manager );\n\n\tthis.options = { premultiplyAlpha: 'none' };\n\n}\n\nImageBitmapLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: ImageBitmapLoader,\n\n\tisImageBitmapLoader: true,\n\n\tsetOptions: function setOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t},\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tfetch( url ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, scope.options );\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * minimal class for proxing functions to Path. Replaces old \"extractSubpaths()\"\n **/\n\nfunction ShapePath() {\n\n\tthis.type = 'ShapePath';\n\n\tthis.color = new Color();\n\n\tthis.subPaths = [];\n\tthis.currentPath = null;\n\n}\n\nObject.assign( ShapePath.prototype, {\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t},\n\n\tsplineThru: function ( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t},\n\n\ttoShapes: function ( isCCW, noHoles ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tconst polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tlet solid, tmpPath, tmpShape, shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tlet ambiguous = false;\n\t\t\tconst toChange = [];\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } );\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t// console.log(\"ambiguous: \", ambiguous);\n\n\t\t\tif ( toChange.length > 0 ) {\n\n\t\t\t\t// console.log(\"to change: \", toChange);\n\t\t\t\tif ( ! ambiguous )\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction Font( data ) {\n\n\tthis.type = 'Font';\n\n\tthis.data = data;\n\n}\n\nObject.assign( Font.prototype, {\n\n\tisFont: true,\n\n\tgenerateShapes: function ( text, size ) {\n\n\t\tif ( size === undefined ) size = 100;\n\n\t\tconst shapes = [];\n\t\tconst paths = createPaths( text, size, this.data );\n\n\t\tfor ( let p = 0, pl = paths.length; p < pl; p ++ ) {\n\n\t\t\tArray.prototype.push.apply( shapes, paths[ p ].toShapes() );\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\nfunction createPaths( text, size, data ) {\n\n\tconst chars = Array.from ? Array.from( text ) : String( text ).split( '' ); // workaround for IE11, see #13988\n\tconst scale = size / data.resolution;\n\tconst line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale;\n\n\tconst paths = [];\n\n\tlet offsetX = 0, offsetY = 0;\n\n\tfor ( let i = 0; i < chars.length; i ++ ) {\n\n\t\tconst char = chars[ i ];\n\n\t\tif ( char === '\\n' ) {\n\n\t\t\toffsetX = 0;\n\t\t\toffsetY -= line_height;\n\n\t\t} else {\n\n\t\t\tconst ret = createPath( char, scale, offsetX, offsetY, data );\n\t\t\toffsetX += ret.offsetX;\n\t\t\tpaths.push( ret.path );\n\n\t\t}\n\n\t}\n\n\treturn paths;\n\n}\n\nfunction createPath( char, scale, offsetX, offsetY, data ) {\n\n\tconst glyph = data.glyphs[ char ] || data.glyphs[ '?' ];\n\n\tif ( ! glyph ) {\n\n\t\tconsole.error( 'THREE.Font: character \"' + char + '\" does not exists in font family ' + data.familyName + '.' );\n\n\t\treturn;\n\n\t}\n\n\tconst path = new ShapePath();\n\n\tlet x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2;\n\n\tif ( glyph.o ) {\n\n\t\tconst outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );\n\n\t\tfor ( let i = 0, l = outline.length; i < l; ) {\n\n\t\t\tconst action = outline[ i ++ ];\n\n\t\t\tswitch ( action ) {\n\n\t\t\t\tcase 'm': // moveTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.moveTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'l': // lineTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.lineTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'q': // quadraticCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.quadraticCurveTo( cpx1, cpy1, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'b': // bezierCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx2 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy2 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { offsetX: glyph.ha * scale, path: path };\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction FontLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nFontLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: FontLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tconsole.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' );\n\t\t\t\tjson = JSON.parse( text.substring( 65, text.length - 2 ) );\n\n\t\t\t}\n\n\t\t\tconst font = scope.parse( json );\n\n\t\t\tif ( onLoad ) onLoad( font );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\treturn new Font( json );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nlet _context;\n\nconst AudioContext = {\n\n\tgetContext: function () {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t},\n\n\tsetContext: function ( value ) {\n\n\t\t_context = value;\n\n\t}\n\n};\n\n/**\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nfunction AudioLoader( manager ) {\n\n\tLoader.call( this, manager );\n\n}\n\nAudioLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\n\n\tconstructor: AudioLoader,\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n} );\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction HemisphereLightProbe( skyColor, groundColor, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tconst color1 = new Color().set( skyColor );\n\tconst color2 = new Color().set( groundColor );\n\n\tconst sky = new Vector3( color1.r, color1.g, color1.b );\n\tconst ground = new Vector3( color2.r, color2.g, color2.b );\n\n\t// without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );\n\tconst c0 = Math.sqrt( Math.PI );\n\tconst c1 = c0 * Math.sqrt( 0.75 );\n\n\tthis.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 );\n\tthis.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 );\n\n}\n\nHemisphereLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\n\n\tconstructor: HemisphereLightProbe,\n\n\tisHemisphereLightProbe: true,\n\n\tcopy: function ( source ) { // modifying colors not currently supported\n\n\t\tLightProbe.prototype.copy.call( this, source );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction AmbientLightProbe( color, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tconst color1 = new Color().set( color );\n\n\t// without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI );\n\tthis.sh.coefficients[ 0 ].set( color1.r, color1.g, color1.b ).multiplyScalar( 2 * Math.sqrt( Math.PI ) );\n\n}\n\nAmbientLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\n\n\tconstructor: AmbientLightProbe,\n\n\tisAmbientLightProbe: true,\n\n\tcopy: function ( source ) { // modifying color not currently supported\n\n\t\tLightProbe.prototype.copy.call( this, source );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tconst data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\nconst _eyeRight = new Matrix4();\nconst _eyeLeft = new Matrix4();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction StereoCamera() {\n\n\tthis.type = 'StereoCamera';\n\n\tthis.aspect = 1;\n\n\tthis.eyeSep = 0.064;\n\n\tthis.cameraL = new PerspectiveCamera();\n\tthis.cameraL.layers.enable( 1 );\n\tthis.cameraL.matrixAutoUpdate = false;\n\n\tthis.cameraR = new PerspectiveCamera();\n\tthis.cameraR.layers.enable( 2 );\n\tthis.cameraR.matrixAutoUpdate = false;\n\n\tthis._cache = {\n\t\tfocus: null,\n\t\tfov: null,\n\t\taspect: null,\n\t\tnear: null,\n\t\tfar: null,\n\t\tzoom: null,\n\t\teyeSep: null\n\t};\n\n}\n\nObject.assign( StereoCamera.prototype, {\n\n\tupdate: function ( camera ) {\n\n\t\tconst cache = this._cache;\n\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\tconst projectionMatrix = camera.projectionMatrix.clone();\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tconst ymax = ( cache.near * Math.tan( MathUtils.DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tlet xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\tprojectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraL.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t// for right eye\n\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\n\t\t\tprojectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Clock( autoStart ) {\n\n\tthis.autoStart = ( autoStart !== undefined ) ? autoStart : true;\n\n\tthis.startTime = 0;\n\tthis.oldTime = 0;\n\tthis.elapsedTime = 0;\n\n\tthis.running = false;\n\n}\n\nObject.assign( Clock.prototype, {\n\n\tstart: function () {\n\n\t\tthis.startTime = ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t},\n\n\tgetElapsedTime: function () {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t},\n\n\tgetDelta: function () {\n\n\t\tlet diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tconst newTime = ( typeof performance === 'undefined' ? Date : performance ).now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _position$2 = new Vector3();\nconst _quaternion$3 = new Quaternion();\nconst _scale$1 = new Vector3();\nconst _orientation = new Vector3();\n\nfunction AudioListener() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'AudioListener';\n\n\tthis.context = AudioContext.getContext();\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( this.context.destination );\n\n\tthis.filter = null;\n\n\tthis.timeDelta = 0;\n\n\t// private\n\n\tthis._clock = new Clock();\n\n}\n\nAudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: AudioListener,\n\n\tgetInput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tremoveFilter: function ( ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.filter;\n\n\t},\n\n\tsetFilter: function ( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t},\n\n\tgetMasterVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetMasterVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tconst listener = this.context.listener;\n\t\tconst up = this.up;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$2, _quaternion$3, _scale$1 );\n\n\t\t_orientation.set( 0, 0, - 1 ).applyQuaternion( _quaternion$3 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$2.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$2.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$2.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation.z, endTime );\n\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t} else {\n\n\t\t\tlistener.setPosition( _position$2.x, _position$2.y, _position$2.z );\n\t\t\tlistener.setOrientation( _orientation.x, _orientation.y, _orientation.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nfunction Audio( listener ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Audio';\n\n\tthis.listener = listener;\n\tthis.context = listener.context;\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( listener.getInput() );\n\n\tthis.autoplay = false;\n\n\tthis.buffer = null;\n\tthis.detune = 0;\n\tthis.loop = false;\n\tthis.loopStart = 0;\n\tthis.loopEnd = 0;\n\tthis.offset = 0;\n\tthis.duration = undefined;\n\tthis.playbackRate = 1;\n\tthis.isPlaying = false;\n\tthis.hasPlaybackControl = true;\n\tthis.sourceType = 'empty';\n\n\tthis._startedAt = 0;\n\tthis._progress = 0;\n\n\tthis.filters = [];\n\n}\n\nAudio.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Audio,\n\n\tgetOutput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tsetNodeSource: function ( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetMediaElementSource: function ( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetMediaStreamSource: function ( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetBuffer: function ( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t},\n\n\tplay: function ( delay ) {\n\n\t\tif ( delay === undefined ) delay = 0;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tconst source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t},\n\n\tpause: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._progress = 0;\n\n\t\tthis.source.stop();\n\t\tthis.source.onended = null;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t},\n\n\tconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilters: function () {\n\n\t\treturn this.filters;\n\n\t},\n\n\tsetFilters: function ( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value;\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetDetune: function ( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.source.detune === undefined ) return; // only set detune when available\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetDetune: function () {\n\n\t\treturn this.detune;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t},\n\n\tsetFilter: function ( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t},\n\n\tsetPlaybackRate: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetPlaybackRate: function () {\n\n\t\treturn this.playbackRate;\n\n\t},\n\n\tonEnded: function () {\n\n\t\tthis.isPlaying = false;\n\n\t},\n\n\tgetLoop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t},\n\n\tsetLoop: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetLoopStart: function ( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoopEnd: function ( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nconst _position$3 = new Vector3();\nconst _quaternion$4 = new Quaternion();\nconst _scale$2 = new Vector3();\nconst _orientation$1 = new Vector3();\n\nfunction PositionalAudio( listener ) {\n\n\tAudio.call( this, listener );\n\n\tthis.panner = this.context.createPanner();\n\tthis.panner.panningModel = 'HRTF';\n\tthis.panner.connect( this.gain );\n\n}\n\nPositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {\n\n\tconstructor: PositionalAudio,\n\n\tgetOutput: function () {\n\n\t\treturn this.panner;\n\n\t},\n\n\tgetRefDistance: function () {\n\n\t\treturn this.panner.refDistance;\n\n\t},\n\n\tsetRefDistance: function ( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetRolloffFactor: function () {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t},\n\n\tsetRolloffFactor: function ( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetDistanceModel: function () {\n\n\t\treturn this.panner.distanceModel;\n\n\t},\n\n\tsetDistanceModel: function ( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxDistance: function () {\n\n\t\treturn this.panner.maxDistance;\n\n\t},\n\n\tsetMaxDistance: function ( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tsetDirectionalCone: function ( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$4, _scale$2 );\n\n\t\t_orientation$1.set( 0, 0, 1 ).applyQuaternion( _quaternion$4 );\n\n\t\tconst panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position$3.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position$3.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position$3.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation$1.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position$3.x, _position$3.y, _position$3.z );\n\t\t\tpanner.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z );\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AudioAnalyser( audio, fftSize ) {\n\n\tthis.analyser = audio.context.createAnalyser();\n\tthis.analyser.fftSize = fftSize !== undefined ? fftSize : 2048;\n\n\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\taudio.getOutput().connect( this.analyser );\n\n}\n\nObject.assign( AudioAnalyser.prototype, {\n\n\tgetFrequencyData: function () {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t},\n\n\tgetAverageFrequency: function () {\n\n\t\tlet value = 0;\n\t\tconst data = this.getFrequencyData();\n\n\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n} );\n\n/**\n *\n * Buffered scene graph property that allows weighted accumulation.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction PropertyMixer( binding, typeName, valueSize ) {\n\n\tthis.binding = binding;\n\tthis.valueSize = valueSize;\n\n\tlet mixFunction,\n\t\tmixFunctionAdditive,\n\t\tsetIdentity;\n\n\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t//\n\t// interpolators can use .buffer as their .result\n\t// the data then goes to 'incoming'\n\t//\n\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t// the cumulative result and are compared to detect\n\t// changes\n\t//\n\t// 'orig' stores the original state of the property\n\t//\n\t// 'add' is used for additive cumulative results\n\t//\n\t// 'work' is optional and is only present for quaternion types. It is used\n\t// to store intermediate quaternion multiplication results\n\n\tswitch ( typeName ) {\n\n\t\tcase 'quaternion':\n\t\t\tmixFunction = this._slerp;\n\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\tthis._workIndex = 5;\n\t\t\tbreak;\n\n\t\tcase 'string':\n\t\tcase 'bool':\n\t\t\tmixFunction = this._select;\n\n\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t// additive is not relevant for non-numeric types\n\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tmixFunction = this._lerp;\n\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t}\n\n\tthis._mixBufferRegion = mixFunction;\n\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\tthis._setIdentity = setIdentity;\n\tthis._origIndex = 3;\n\tthis._addIndex = 4;\n\n\tthis.cumulativeWeight = 0;\n\tthis.cumulativeWeightAdditive = 0;\n\n\tthis.useCount = 0;\n\tthis.referenceCount = 0;\n\n}\n\nObject.assign( PropertyMixer.prototype, {\n\n\t// accumulate data in the 'incoming' region into 'accu'\n\taccumulate: function ( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride;\n\n\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tconst mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t},\n\n\t// accumulate data in the 'incoming' region into 'add'\n\taccumulateAdditive: function ( weight ) {\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = stride * this._addIndex;\n\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\n\n\t\t\t// add = identity\n\n\t\t\tthis._setIdentity();\n\n\t\t}\n\n\t\t// add := add + incoming * weight\n\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\n\t\tthis.cumulativeWeightAdditive += weight;\n\n\t},\n\n\t// apply the state of 'accu' to the binding when accus differ\n\tapply: function ( accuIndex ) {\n\n\t\tconst stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tif ( weightAdditive > 0 ) {\n\n\t\t\t// accuN := accuN + additive accuN\n\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\n\n\t\t}\n\n\t\tfor ( let i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState: function () {\n\n\t\tconst binding = this.binding;\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * this._origIndex;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\t// Add to identity for additive\n\t\tthis._setIdentity();\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t},\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState: function () {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t},\n\n\t_setAdditiveIdentityNumeric: function () {\n\n\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t},\n\n\t_setAdditiveIdentityQuaternion: function () {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * 4 + 3 ] = 1;\n\n\t},\n\n\t_setAdditiveIdentityOther: function () {\n\n\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t},\n\n\n\t// mix functions\n\n\t_select: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_slerp: function ( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t},\n\n\t_slerpAdditive: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst workOffset = this._workIndex * stride;\n\n\t\t// Store result in intermediate buffer offset\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\n\n\t\t// Slerp to the intermediate result\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\n\n\t},\n\n\t_lerp: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst s = 1 - t;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t},\n\n\t_lerpAdditive: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n *\n * A reference to a real property in the scene graph.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\n// Characters [].:/ are reserved for track binding syntax.\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nconst _directoryRe = /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nconst _objectRe = /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nconst _propertyRe = /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nconst _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nconst _supportedObjectNames = [ 'material', 'materials', 'bones' ];\n\nfunction Composite( targetGroup, path, optionalParsedPath ) {\n\n\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis._targetGroup = targetGroup;\n\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n}\n\nObject.assign( Composite.prototype, {\n\n\tgetValue: function ( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t},\n\n\tsetValue: function ( array, offset ) {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t},\n\n\tbind: function () {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t},\n\n\tunbind: function () {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n} );\n\n\nfunction PropertyBinding( rootNode, path, parsedPath ) {\n\n\tthis.path = path;\n\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode;\n\n\tthis.rootNode = rootNode;\n\n}\n\nObject.assign( PropertyBinding, {\n\n\tComposite: Composite,\n\n\tcreate: function ( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tsanitizeNodeName: function ( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t},\n\n\tparseTrackName: function ( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( ! matches ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tconst results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t},\n\n\tfindNode: function ( root, nodeName ) {\n\n\t\tif ( ! nodeName || nodeName === \"\" || nodeName === \".\" || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tconst bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tconst searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tconst childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tconst subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n} );\n\nObject.assign( PropertyBinding.prototype, { // prototype, continued\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable: function () {},\n\t_setValue_unavailable: function () {},\n\n\tBindingType: {\n\t\tDirect: 0,\n\t\tEntireArray: 1,\n\t\tArrayElement: 2,\n\t\tHasFromToArray: 3\n\t},\n\n\tVersioning: {\n\t\tNone: 0,\n\t\tNeedsUpdate: 1,\n\t\tMatrixWorldNeedsUpdate: 2\n\t},\n\n\tGetterByBindingType: [\n\n\t\tfunction getValue_direct( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.node[ this.propertyName ];\n\n\t\t},\n\n\t\tfunction getValue_array( buffer, offset ) {\n\n\t\t\tconst source = this.resolvedProperty;\n\n\t\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t\t}\n\n\t\t},\n\n\t\tfunction getValue_arrayElement( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t\t},\n\n\t\tfunction getValue_toArray( buffer, offset ) {\n\n\t\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t\t}\n\n\t],\n\n\tSetterByBindingTypeAndVersioning: [\n\n\t\t[\n\t\t\t// Direct\n\n\t\t\tfunction setValue_direct( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// EntireArray\n\n\t\t\tfunction setValue_array( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tconst dest = this.resolvedProperty;\n\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// ArrayElement\n\n\t\t\tfunction setValue_arrayElement( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// HasToFromArray\n\n\t\t\tfunction setValue_fromArray( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t]\n\n\t],\n\n\tgetValue: function getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t\t// Note: This class uses a State pattern on a per-method basis:\n\t\t// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n\t\t// prototype version of these methods with one that represents\n\t\t// the bound state. When the property is not found, the methods\n\t\t// become no-ops.\n\n\t},\n\n\tsetValue: function getValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t},\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind: function () {\n\n\t\tlet targetObject = this.node,\n\t\t\tparsedPath = this.parsedPath,\n\n\t\t\tobjectName = parsedPath.objectName,\n\t\t\tpropertyName = parsedPath.propertyName,\n\t\t\tpropertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tlet objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( let i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tconst nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tconst nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tlet versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tlet bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === \"morphTargetInfluences\" ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.geometry.isBufferGeometry ) {\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t\t}\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences on THREE.Geometry. Use THREE.BufferGeometry instead.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t},\n\n\tunbind: function () {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n} );\n\n// DECLARE ALIAS AFTER assign prototype\nObject.assign( PropertyBinding.prototype, {\n\n\t// initial state of these methods that calls 'bind'\n\t_getValue_unbound: PropertyBinding.prototype.getValue,\n\t_setValue_unbound: PropertyBinding.prototype.setValue,\n\n} );\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * - Add objects you would otherwise pass as 'root' to the\n * constructor or the .clipAction method of AnimationMixer.\n *\n * - Instead pass this object as 'root'.\n *\n * - You can also add and remove objects later when the mixer\n * is running.\n *\n * Note:\n *\n * Objects of this class appear as one object to the mixer,\n * so cache control of the individual objects must be done\n * on the group.\n *\n * Limitation:\n *\n * - The animated properties must be compatible among the\n * all objects in the group.\n *\n * - A single property can either be controlled through a\n * target group or directly, but not both.\n *\n * @author tschw\n */\n\nfunction AnimationObjectGroup() {\n\n\tthis.uuid = MathUtils.generateUUID();\n\n\t// cached objects followed by the active ones\n\tthis._objects = Array.prototype.slice.call( arguments );\n\n\tthis.nCachedObjects_ = 0; // threshold\n\t// note: read by PropertyBinding.Composite\n\n\tconst indices = {};\n\tthis._indicesByUUID = indices; // for bookkeeping\n\n\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t}\n\n\tthis._paths = []; // inside: string\n\tthis._parsedPaths = []; // inside: { we don't care, here }\n\tthis._bindings = []; // inside: Array< PropertyBinding >\n\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\tconst scope = this;\n\n\tthis.stats = {\n\n\t\tobjects: {\n\t\t\tget total() {\n\n\t\t\t\treturn scope._objects.length;\n\n\t\t\t},\n\t\t\tget inUse() {\n\n\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t}\n\t\t},\n\t\tget bindingsPerObject() {\n\n\t\t\treturn scope._bindings.length;\n\n\t\t}\n\n\t};\n\n}\n\nObject.assign( AnimationObjectGroup.prototype, {\n\n\tisAnimationObjectGroup: true,\n\n\tadd: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet knownObject = undefined,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid;\n\t\t\tlet index = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\n\n\t\t\t\t\tlet binding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\tremove: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tconst lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// remove & forget\n\tuncache: function () {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\tnObjects = objects.length;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tconst lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_: function ( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tlet indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ],\n\t\t\tbindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tconst paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tconst object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t},\n\n\tunsubscribe_: function ( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n *\n * Action provided by AnimationMixer for scheduling clip playback on specific\n * objects.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n *\n */\n\nfunction AnimationAction( mixer, clip, localRoot, blendMode ) {\n\n\tthis._mixer = mixer;\n\tthis._clip = clip;\n\tthis._localRoot = localRoot || null;\n\tthis.blendMode = blendMode || clip.blendMode;\n\n\tconst tracks = clip.tracks,\n\t\tnTracks = tracks.length,\n\t\tinterpolants = new Array( nTracks );\n\n\tconst interpolantSettings = {\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\t};\n\n\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\tinterpolants[ i ] = interpolant;\n\t\tinterpolant.settings = interpolantSettings;\n\n\t}\n\n\tthis._interpolantSettings = interpolantSettings;\n\n\tthis._interpolants = interpolants; // bound by the mixer\n\n\t// inside: PropertyMixer (managed by the mixer)\n\tthis._propertyBindings = new Array( nTracks );\n\n\tthis._cacheIndex = null; // for the memory manager\n\tthis._byClipCacheIndex = null; // for the memory manager\n\n\tthis._timeScaleInterpolant = null;\n\tthis._weightInterpolant = null;\n\n\tthis.loop = LoopRepeat;\n\tthis._loopCount = - 1;\n\n\t// global mixer time when the action is to be started\n\t// it's set back to 'null' upon start of the action\n\tthis._startTime = null;\n\n\t// scaled local time of the action\n\t// gets clamped or wrapped to 0..clip.duration according to loop\n\tthis.time = 0;\n\n\tthis.timeScale = 1;\n\tthis._effectiveTimeScale = 1;\n\n\tthis.weight = 1;\n\tthis._effectiveWeight = 1;\n\n\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\tthis.paused = false; // true -> zero effective time scale\n\tthis.enabled = true; // false -> zero effective weight\n\n\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n}\n\nObject.assign( AnimationAction.prototype, {\n\n\t// State & Scheduling\n\n\tplay: function () {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t},\n\n\treset: function () {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t},\n\n\tisRunning: function () {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t},\n\n\t// return true when play has been called\n\tisScheduled: function () {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t},\n\n\tstartAt: function ( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoop: function ( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t},\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight: function ( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t},\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight: function () {\n\n\t\treturn this._effectiveWeight;\n\n\t},\n\n\tfadeIn: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t},\n\n\tfadeOut: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t},\n\n\tcrossFadeFrom: function ( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tconst fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcrossFadeTo: function ( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t},\n\n\tstopFading: function () {\n\n\t\tlet weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale: function ( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale: function () {\n\n\t\treturn this._effectiveTimeScale;\n\n\t},\n\n\tsetDuration: function ( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\tsyncWith: function ( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\thalt: function ( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t},\n\n\twarp: function ( startTimeScale, endTimeScale, duration ) {\n\n\t\tconst mixer = this._mixer,\n\t\t\tnow = mixer.time,\n\t\t\ttimeScale = this.timeScale;\n\n\t\tlet interpolant = this._timeScaleInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t},\n\n\tstopWarping: function () {\n\n\t\tlet timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Object Accessors\n\n\tgetMixer: function () {\n\n\t\treturn this._mixer;\n\n\t},\n\n\tgetClip: function () {\n\n\t\treturn this._clip;\n\n\t},\n\n\tgetRoot: function () {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t},\n\n\t// Interna\n\n\t_update: function ( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t}\n\n\t\t\t// start\n\n\t\t\tthis._startTime = null; // unschedule\n\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tconst clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tconst weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tconst interpolants = this._interpolants;\n\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\tdefault:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_updateWeight: function ( time ) {\n\n\t\tlet weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t},\n\n\t_updateTimeScale: function ( time ) {\n\n\t\tlet timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t},\n\n\t_updateTime: function ( deltaTime ) {\n\n\t\tconst duration = this._clip.duration;\n\t\tconst loop = this.loop;\n\n\t\tlet time = this.time + deltaTime;\n\t\tlet loopCount = this._loopCount;\n\n\t\tconst pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tconst loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tconst pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tconst atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t},\n\n\t_setEndings: function ( atStart, atEnd, pingPong ) {\n\n\t\tconst settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_scheduleFading: function ( duration, weightNow, weightThen ) {\n\n\t\tconst mixer = this._mixer, now = mixer.time;\n\t\tlet interpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n *\n * Player for AnimationClips.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction AnimationMixer( root ) {\n\n\tthis._root = root;\n\tthis._initMemoryManager();\n\tthis._accuIndex = 0;\n\n\tthis.time = 0;\n\n\tthis.timeScale = 1.0;\n\n}\n\nAnimationMixer.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: AnimationMixer,\n\n\t_bindAction: function ( action, prototypeAction ) {\n\n\t\tconst root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName;\n\n\t\tlet bindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst track = tracks[ i ],\n\t\t\t\ttrackName = track.name;\n\n\t\t\tlet binding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tconst path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t},\n\n\t_activateAction: function ( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tconst rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t},\n\n\t_deactivateAction: function ( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t},\n\n\t// Memory manager\n\n\t_initMemoryManager: function () {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t},\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction: function ( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t},\n\n\t_addInactiveAction: function ( action, clipUuid, rootUuid ) {\n\n\t\tconst actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tlet actionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tconst knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t},\n\n\t_removeInactiveAction: function ( action ) {\n\n\t\tconst actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tconst clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tconst actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t},\n\n\t_removeInactiveBindingsForAction: function ( action ) {\n\n\t\tconst bindings = action._propertyBindings;\n\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tconst binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_lendAction: function ( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t},\n\n\t_takeBackAction: function ( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t},\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding: function ( binding, rootUuid, trackName ) {\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindings = this._bindings;\n\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t},\n\n\t_removeInactiveBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t},\n\n\t_lendBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t},\n\n\t_takeBackBinding: function ( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t},\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant: function () {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\n\n\t\tlet interpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, this._controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t},\n\n\t_takeBackControlInterpolant: function ( interpolant ) {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t},\n\n\t_controlInterpolantsResultBuffer: new Float32Array( 1 ),\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction: function ( clip, optionalRoot, blendMode ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid;\n\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\n\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\n\t\tlet actionsForClip = this._actionsByClip[ clipUuid ],\n\t\t\tprototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t},\n\n\t// get an existing action\n\texistingAction: function ( clip, optionalRoot ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction: function () {\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions;\n\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// advance the time and update apply the animation\n\tupdate: function ( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( let i = 0; i !== nActions; ++ i ) {\n\n\t\t\tconst action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tconst bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( let i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Allows you to seek to a specific time in an animation.\n\tsetTime: function ( timeInSeconds ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( timeInSeconds ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t},\n\n\t// return this mixer's root target object\n\tgetRoot: function () {\n\n\t\treturn this._root;\n\n\t},\n\n\t// free all resources specific to a particular clip\n\tuncacheClip: function ( clip ) {\n\n\t\tconst actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tconst action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tconst cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t},\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot: function ( root ) {\n\n\t\tconst rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( const clipUuid in actionsByClip ) {\n\n\t\t\tconst actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( const trackName in bindingByName ) {\n\n\t\t\t\tconst binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remove a targeted clip from the cache\n\tuncacheAction: function ( clip, optionalRoot ) {\n\n\t\tconst action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Uniform( value ) {\n\n\tif ( typeof value === 'string' ) {\n\n\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\tvalue = arguments[ 1 ];\n\n\t}\n\n\tthis.value = value;\n\n}\n\nUniform.prototype.clone = function () {\n\n\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n};\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedInterleavedBuffer( array, stride, meshPerAttribute ) {\n\n\tInterleavedBuffer.call( this, array, stride );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedInterleavedBuffer.prototype = Object.assign( Object.create( InterleavedBuffer.prototype ), {\n\n\tconstructor: InstancedInterleavedBuffer,\n\n\tisInstancedInterleavedBuffer: true,\n\n\tcopy: function ( source ) {\n\n\t\tInterleavedBuffer.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function ( data ) {\n\n\t\tconst ib = InterleavedBuffer.prototype.clone.call( this, data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t},\n\n\ttoJSON: function ( data ) {\n\n\t\tconst json = InterleavedBuffer.prototype.toJSON.call( this, data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author bhouston / http://clara.io/\n * @author stephomi / http://stephaneginier.com/\n */\n\nfunction Raycaster( origin, direction, near, far ) {\n\n\tthis.ray = new Ray( origin, direction );\n\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\tthis.near = near || 0;\n\tthis.far = far || Infinity;\n\tthis.camera = null;\n\tthis.layers = new Layers();\n\n\tthis.params = {\n\t\tMesh: {},\n\t\tLine: { threshold: 1 },\n\t\tLOD: {},\n\t\tPoints: { threshold: 1 },\n\t\tSprite: {}\n\t};\n\n\tObject.defineProperties( this.params, {\n\t\tPointCloud: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' );\n\t\t\t\treturn this.Points;\n\n\t\t\t}\n\t\t}\n\t} );\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tobject.raycast( raycaster, intersects );\n\n\t}\n\n\tif ( recursive === true ) {\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Raycaster.prototype, {\n\n\tset: function ( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t},\n\n\tsetFromCamera: function ( coords, camera ) {\n\n\t\tif ( ( camera && camera.isPerspectiveCamera ) ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( ( camera && camera.isOrthographicCamera ) ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type.' );\n\n\t\t}\n\n\t},\n\n\tintersectObject: function ( object, recursive, optionalTarget ) {\n\n\t\tconst intersects = optionalTarget || [];\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t},\n\n\tintersectObjects: function ( objects, recursive, optionalTarget ) {\n\n\t\tconst intersects = optionalTarget || [];\n\n\t\tif ( Array.isArray( objects ) === false ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' );\n\t\t\treturn intersects;\n\n\t\t}\n\n\t\tfor ( let i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n * The azimuthal angle (theta) is measured from the positive z-axis.\n */\n\nfunction Spherical( radius, phi, theta ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0;\n\tthis.phi = ( phi !== undefined ) ? phi : 0; // polar angle\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // azimuthal angle\n\n\treturn this;\n\n}\n\nObject.assign( Spherical.prototype, {\n\n\tset: function ( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t},\n\n\t// restrict phi to be betwee EPS and PI-EPS\n\tmakeSafe: function () {\n\n\t\tconst EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function ( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t},\n\n\tsetFromCartesianCoords: function ( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( MathUtils.clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n *\n */\n\nfunction Cylindrical( radius, theta, y ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0; // distance from the origin to a point in the x-z plane\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\tthis.y = ( y !== undefined ) ? y : 0; // height above the x-z plane\n\n\treturn this;\n\n}\n\nObject.assign( Cylindrical.prototype, {\n\n\tset: function ( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function ( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t},\n\n\tsetFromCartesianCoords: function ( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nconst _vector$7 = new Vector2();\n\nfunction Box2( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity );\n\n}\n\nObject.assign( Box2.prototype, {\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function ( center, size ) {\n\n\t\tconst halfSize = _vector$7.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getCenter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getSize() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getParameter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\tconst clampedPoint = _vector$7.copy( point ).clamp( this.min, this.max );\n\t\treturn clampedPoint.sub( point ).length();\n\n\t},\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nconst _startP = new Vector3();\nconst _startEnd = new Vector3();\n\nfunction Line3( start, end ) {\n\n\tthis.start = ( start !== undefined ) ? start : new Vector3();\n\tthis.end = ( end !== undefined ) ? end : new Vector3();\n\n}\n\nObject.assign( Line3.prototype, {\n\n\tset: function ( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t},\n\n\tdelta: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .delta() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t},\n\n\tdistanceSq: function () {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t},\n\n\tdistance: function () {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tclosestPointToPointParameter: function ( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\n\n\t\tlet t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = MathUtils.clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t},\n\n\tclosestPointToPoint: function ( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction ImmediateRenderObject( material ) {\n\n\tObject3D.call( this );\n\n\tthis.material = material;\n\tthis.render = function ( /* renderCallback */ ) {};\n\n\tthis.hasPositions = false;\n\tthis.hasNormals = false;\n\tthis.hasColors = false;\n\tthis.hasUvs = false;\n\n\tthis.positionArray = null;\n\tthis.normalArray = null;\n\tthis.colorArray = null;\n\tthis.uvArray = null;\n\n\tthis.count = 0;\n\n}\n\nImmediateRenderObject.prototype = Object.create( Object3D.prototype );\nImmediateRenderObject.prototype.constructor = ImmediateRenderObject;\n\nImmediateRenderObject.prototype.isImmediateRenderObject = true;\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nconst _vector$8 = new Vector3();\n\nfunction SpotLightHelper( light, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tconst geometry = new BufferGeometry();\n\n\tconst positions = [\n\t\t0, 0, 0, \t0, 0, 1,\n\t\t0, 0, 0, \t1, 0, 1,\n\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t0, 0, 0, \t0, 1, 1,\n\t\t0, 0, 0, \t0, - 1, 1\n\t];\n\n\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\tpositions.push(\n\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t);\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\tthis.cone = new LineSegments( geometry, material );\n\tthis.add( this.cone );\n\n\tthis.update();\n\n}\n\nSpotLightHelper.prototype = Object.create( Object3D.prototype );\nSpotLightHelper.prototype.constructor = SpotLightHelper;\n\nSpotLightHelper.prototype.dispose = function () {\n\n\tthis.cone.geometry.dispose();\n\tthis.cone.material.dispose();\n\n};\n\nSpotLightHelper.prototype.update = function () {\n\n\tthis.light.updateMatrixWorld();\n\n\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t_vector$8.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\tthis.cone.lookAt( _vector$8 );\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.cone.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.cone.material.color.copy( this.light.color );\n\n\t}\n\n};\n\n/**\n * @author Sean Griffin / http://twitter.com/sgrif\n * @author Michael Guerrero / http://realitymeltdown.com\n * @author mrdoob / http://mrdoob.com/\n * @author ikerr / http://verold.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nconst _vector$9 = new Vector3();\nconst _boneMatrix = new Matrix4();\nconst _matrixWorldInv = new Matrix4();\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object && object.isBone ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( let i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nfunction SkeletonHelper( object ) {\n\n\tconst bones = getBoneList( object );\n\n\tconst geometry = new BufferGeometry();\n\n\tconst vertices = [];\n\tconst colors = [];\n\n\tconst color1 = new Color( 0, 0, 1 );\n\tconst color2 = new Color( 0, 1, 0 );\n\n\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\tconst bone = bones[ i ];\n\n\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t}\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'SkeletonHelper';\n\n\tthis.root = object;\n\tthis.bones = bones;\n\n\tthis.matrix = object.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n}\n\nSkeletonHelper.prototype = Object.create( LineSegments.prototype );\nSkeletonHelper.prototype.constructor = SkeletonHelper;\n\nSkeletonHelper.prototype.isSkeletonHelper = true;\n\nSkeletonHelper.prototype.updateMatrixWorld = function ( force ) {\n\n\tconst bones = this.bones;\n\n\tconst geometry = this.geometry;\n\tconst position = geometry.getAttribute( 'position' );\n\n\t_matrixWorldInv.getInverse( this.root.matrixWorld );\n\n\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\tconst bone = bones[ i ];\n\n\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t_vector$9.setFromMatrixPosition( _boneMatrix );\n\t\t\tposition.setXYZ( j, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t_vector$9.setFromMatrixPosition( _boneMatrix );\n\t\t\tposition.setXYZ( j + 1, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\tj += 2;\n\n\t\t}\n\n\t}\n\n\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction PointLightHelper( light, sphereSize, color ) {\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.color = color;\n\n\tconst geometry = new SphereBufferGeometry( sphereSize, 4, 2 );\n\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'PointLightHelper';\n\n\tthis.matrix = this.light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n\n\t/*\n\tconst distanceGeometry = new THREE.IcosahedronBufferGeometry( 1, 2 );\n\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tconst d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n}\n\nPointLightHelper.prototype = Object.create( Mesh.prototype );\nPointLightHelper.prototype.constructor = PointLightHelper;\n\nPointLightHelper.prototype.dispose = function () {\n\n\tthis.geometry.dispose();\n\tthis.material.dispose();\n\n};\n\nPointLightHelper.prototype.update = function () {\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.material.color.copy( this.light.color );\n\n\t}\n\n\t/*\n\tconst d = this.light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.visible = true;\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\t*/\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nconst _vector$a = new Vector3();\nconst _color1 = new Color();\nconst _color2 = new Color();\n\nfunction HemisphereLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tconst geometry = new OctahedronBufferGeometry( size );\n\tgeometry.rotateY( Math.PI * 0.5 );\n\n\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\tconst position = geometry.getAttribute( 'position' );\n\tconst colors = new Float32Array( position.count * 3 );\n\n\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\tthis.add( new Mesh( geometry, this.material ) );\n\n\tthis.update();\n\n}\n\nHemisphereLightHelper.prototype = Object.create( Object3D.prototype );\nHemisphereLightHelper.prototype.constructor = HemisphereLightHelper;\n\nHemisphereLightHelper.prototype.dispose = function () {\n\n\tthis.children[ 0 ].geometry.dispose();\n\tthis.children[ 0 ].material.dispose();\n\n};\n\nHemisphereLightHelper.prototype.update = function () {\n\n\tconst mesh = this.children[ 0 ];\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.material.color.set( this.color );\n\n\t} else {\n\n\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t_color1.copy( this.light.color );\n\t\t_color2.copy( this.light.groundColor );\n\n\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t}\n\n\t\tcolors.needsUpdate = true;\n\n\t}\n\n\tmesh.lookAt( _vector$a.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction GridHelper( size, divisions, color1, color2 ) {\n\n\tsize = size || 10;\n\tdivisions = divisions || 10;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tconst center = divisions / 2;\n\tconst step = size / divisions;\n\tconst halfSize = size / 2;\n\n\tconst vertices = [], colors = [];\n\n\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\tconst color = i === center ? color1 : color2;\n\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\n\t}\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'GridHelper';\n\n}\n\nGridHelper.prototype = Object.assign( Object.create( LineSegments.prototype ), {\n\n\tconstructor: GridHelper,\n\n\tcopy: function ( source ) {\n\n\t\tLineSegments.prototype.copy.call( this, source );\n\n\t\tthis.geometry.copy( source.geometry );\n\t\tthis.material.copy( source.material );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / http://github.com/Mugen87\n * @author Hectate / http://www.github.com/Hectate\n */\n\nfunction PolarGridHelper( radius, radials, circles, divisions, color1, color2 ) {\n\n\tradius = radius || 10;\n\tradials = radials || 16;\n\tcircles = circles || 8;\n\tdivisions = divisions || 64;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tconst vertices = [];\n\tconst colors = [];\n\n\t// create the radials\n\n\tfor ( let i = 0; i <= radials; i ++ ) {\n\n\t\tconst v = ( i / radials ) * ( Math.PI * 2 );\n\n\t\tconst x = Math.sin( v ) * radius;\n\t\tconst z = Math.cos( v ) * radius;\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tvertices.push( x, 0, z );\n\n\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\tcolors.push( color.r, color.g, color.b );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t}\n\n\t// create the circles\n\n\tfor ( let i = 0; i <= circles; i ++ ) {\n\n\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\tconst r = radius - ( radius / circles * i );\n\n\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t// first vertex\n\n\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\tlet x = Math.sin( v ) * r;\n\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t// second vertex\n\n\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\tx = Math.sin( v ) * r;\n\t\t\tz = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t}\n\n\t}\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'PolarGridHelper';\n\n}\n\nPolarGridHelper.prototype = Object.create( LineSegments.prototype );\nPolarGridHelper.prototype.constructor = PolarGridHelper;\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nconst _v1$5 = new Vector3();\nconst _v2$3 = new Vector3();\nconst _v3$1 = new Vector3();\n\nfunction DirectionalLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tif ( size === undefined ) size = 1;\n\n\tlet geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t- size, size, 0,\n\t\tsize, size, 0,\n\t\tsize, - size, 0,\n\t\t- size, - size, 0,\n\t\t- size, size, 0\n\t], 3 ) );\n\n\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\tthis.lightPlane = new Line( geometry, material );\n\tthis.add( this.lightPlane );\n\n\tgeometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\tthis.targetLine = new Line( geometry, material );\n\tthis.add( this.targetLine );\n\n\tthis.update();\n\n}\n\nDirectionalLightHelper.prototype = Object.create( Object3D.prototype );\nDirectionalLightHelper.prototype.constructor = DirectionalLightHelper;\n\nDirectionalLightHelper.prototype.dispose = function () {\n\n\tthis.lightPlane.geometry.dispose();\n\tthis.lightPlane.material.dispose();\n\tthis.targetLine.geometry.dispose();\n\tthis.targetLine.material.dispose();\n\n};\n\nDirectionalLightHelper.prototype.update = function () {\n\n\t_v1$5.setFromMatrixPosition( this.light.matrixWorld );\n\t_v2$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\t_v3$1.subVectors( _v2$3, _v1$5 );\n\n\tthis.lightPlane.lookAt( _v2$3 );\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.lightPlane.material.color.set( this.color );\n\t\tthis.targetLine.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t}\n\n\tthis.targetLine.lookAt( _v2$3 );\n\tthis.targetLine.scale.z = _v3$1.length();\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author Mugen87 / https://github.com/Mugen87\n *\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\n */\n\nconst _vector$b = new Vector3();\nconst _camera = new Camera();\n\nfunction CameraHelper( camera ) {\n\n\tconst geometry = new BufferGeometry();\n\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\tconst vertices = [];\n\tconst colors = [];\n\n\tconst pointMap = {};\n\n\t// colors\n\n\tconst colorFrustum = new Color( 0xffaa00 );\n\tconst colorCone = new Color( 0xff0000 );\n\tconst colorUp = new Color( 0x00aaff );\n\tconst colorTarget = new Color( 0xffffff );\n\tconst colorCross = new Color( 0x333333 );\n\n\t// near\n\n\taddLine( 'n1', 'n2', colorFrustum );\n\taddLine( 'n2', 'n4', colorFrustum );\n\taddLine( 'n4', 'n3', colorFrustum );\n\taddLine( 'n3', 'n1', colorFrustum );\n\n\t// far\n\n\taddLine( 'f1', 'f2', colorFrustum );\n\taddLine( 'f2', 'f4', colorFrustum );\n\taddLine( 'f4', 'f3', colorFrustum );\n\taddLine( 'f3', 'f1', colorFrustum );\n\n\t// sides\n\n\taddLine( 'n1', 'f1', colorFrustum );\n\taddLine( 'n2', 'f2', colorFrustum );\n\taddLine( 'n3', 'f3', colorFrustum );\n\taddLine( 'n4', 'f4', colorFrustum );\n\n\t// cone\n\n\taddLine( 'p', 'n1', colorCone );\n\taddLine( 'p', 'n2', colorCone );\n\taddLine( 'p', 'n3', colorCone );\n\taddLine( 'p', 'n4', colorCone );\n\n\t// up\n\n\taddLine( 'u1', 'u2', colorUp );\n\taddLine( 'u2', 'u3', colorUp );\n\taddLine( 'u3', 'u1', colorUp );\n\n\t// target\n\n\taddLine( 'c', 't', colorTarget );\n\taddLine( 'p', 'c', colorCross );\n\n\t// cross\n\n\taddLine( 'cn1', 'cn2', colorCross );\n\taddLine( 'cn3', 'cn4', colorCross );\n\n\taddLine( 'cf1', 'cf2', colorCross );\n\taddLine( 'cf3', 'cf4', colorCross );\n\n\tfunction addLine( a, b, color ) {\n\n\t\taddPoint( a, color );\n\t\taddPoint( b, color );\n\n\t}\n\n\tfunction addPoint( id, color ) {\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\tpointMap[ id ] = [];\n\n\t\t}\n\n\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t}\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'CameraHelper';\n\n\tthis.camera = camera;\n\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\tthis.matrix = camera.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.pointMap = pointMap;\n\n\tthis.update();\n\n}\n\nCameraHelper.prototype = Object.create( LineSegments.prototype );\nCameraHelper.prototype.constructor = CameraHelper;\n\nCameraHelper.prototype.update = function () {\n\n\tconst geometry = this.geometry;\n\tconst pointMap = this.pointMap;\n\n\tconst w = 1, h = 1;\n\n\t// we need just camera projection matrix inverse\n\t// world matrix must be identity\n\n\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t// center / target\n\n\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t// near\n\n\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t// far\n\n\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t// up\n\n\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t// cross\n\n\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n};\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector$b.set( x, y, z ).unproject( camera );\n\n\tconst points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector$b.x, _vector$b.y, _vector$b.z );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / http://github.com/Mugen87\n */\n\nconst _box$3 = new Box3();\n\nfunction BoxHelper( object, color ) {\n\n\tthis.object = object;\n\n\tif ( color === undefined ) color = 0xffff00;\n\n\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\tconst positions = new Float32Array( 8 * 3 );\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\tthis.type = 'BoxHelper';\n\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n}\n\nBoxHelper.prototype = Object.create( LineSegments.prototype );\nBoxHelper.prototype.constructor = BoxHelper;\n\nBoxHelper.prototype.update = function ( object ) {\n\n\tif ( object !== undefined ) {\n\n\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t}\n\n\tif ( this.object !== undefined ) {\n\n\t\t_box$3.setFromObject( this.object );\n\n\t}\n\n\tif ( _box$3.isEmpty() ) return;\n\n\tconst min = _box$3.min;\n\tconst max = _box$3.max;\n\n\t/*\n\t 5____4\n\t1/___0/|\n\t| 6__|_7\n\t2/___3/\n\n\t0: max.x, max.y, max.z\n\t1: min.x, max.y, max.z\n\t2: min.x, min.y, max.z\n\t3: max.x, min.y, max.z\n\t4: max.x, max.y, min.z\n\t5: min.x, max.y, min.z\n\t6: min.x, min.y, min.z\n\t7: max.x, min.y, min.z\n\t*/\n\n\tconst position = this.geometry.attributes.position;\n\tconst array = position.array;\n\n\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\tposition.needsUpdate = true;\n\n\tthis.geometry.computeBoundingSphere();\n\n\n};\n\nBoxHelper.prototype.setFromObject = function ( object ) {\n\n\tthis.object = object;\n\tthis.update();\n\n\treturn this;\n\n};\n\nBoxHelper.prototype.copy = function ( source ) {\n\n\tLineSegments.prototype.copy.call( this, source );\n\n\tthis.object = source.object;\n\n\treturn this;\n\n};\n\nBoxHelper.prototype.clone = function () {\n\n\treturn new this.constructor().copy( this );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3Helper( box, color ) {\n\n\tthis.type = 'Box3Helper';\n\n\tthis.box = box;\n\n\tcolor = color || 0xffff00;\n\n\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\n\tconst positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ];\n\n\tconst geometry = new BufferGeometry();\n\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\tthis.type = 'Box3Helper';\n\n\tthis.geometry.computeBoundingSphere();\n\n}\n\nBox3Helper.prototype = Object.create( LineSegments.prototype );\nBox3Helper.prototype.constructor = Box3Helper;\n\nBox3Helper.prototype.updateMatrixWorld = function ( force ) {\n\n\tconst box = this.box;\n\n\tif ( box.isEmpty() ) return;\n\n\tbox.getCenter( this.position );\n\n\tbox.getSize( this.scale );\n\n\tthis.scale.multiplyScalar( 0.5 );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction PlaneHelper( plane, size, hex ) {\n\n\tthis.plane = plane;\n\n\tthis.size = ( size === undefined ) ? 1 : size;\n\n\tconst color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\tconst positions = [ 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, 0, 1, 0, 0, 0 ];\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\tgeometry.computeBoundingSphere();\n\n\tLine.call( this, geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\tthis.type = 'PlaneHelper';\n\n\t//\n\n\tconst positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ];\n\n\tconst geometry2 = new BufferGeometry();\n\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\tgeometry2.computeBoundingSphere();\n\n\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n}\n\nPlaneHelper.prototype = Object.create( Line.prototype );\nPlaneHelper.prototype.constructor = PlaneHelper;\n\nPlaneHelper.prototype.updateMatrixWorld = function ( force ) {\n\n\tlet scale = - this.plane.constant;\n\n\tif ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter\n\n\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, scale );\n\n\tthis.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here\n\n\tthis.lookAt( this.plane.normal );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n * @author zz85 / http://github.com/zz85\n * @author bhouston / http://clara.io\n *\n * Creates an arrow for visualizing directions\n *\n * Parameters:\n * dir - Vector3\n * origin - Vector3\n * length - Number\n * color - color in hex value\n * headLength - Number\n * headWidth - Number\n */\n\nconst _axis = new Vector3();\nlet _lineGeometry, _coneGeometry;\n\nfunction ArrowHelper( dir, origin, length, color, headLength, headWidth ) {\n\n\t// dir is assumed to be normalized\n\n\tObject3D.call( this );\n\n\tthis.type = 'ArrowHelper';\n\n\tif ( dir === undefined ) dir = new Vector3( 0, 0, 1 );\n\tif ( origin === undefined ) origin = new Vector3( 0, 0, 0 );\n\tif ( length === undefined ) length = 1;\n\tif ( color === undefined ) color = 0xffff00;\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tif ( _lineGeometry === undefined ) {\n\n\t\t_lineGeometry = new BufferGeometry();\n\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t_coneGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 );\n\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t}\n\n\tthis.position.copy( origin );\n\n\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\tthis.line.matrixAutoUpdate = false;\n\tthis.add( this.line );\n\n\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\tthis.cone.matrixAutoUpdate = false;\n\tthis.add( this.cone );\n\n\tthis.setDirection( dir );\n\tthis.setLength( length, headLength, headWidth );\n\n}\n\nArrowHelper.prototype = Object.create( Object3D.prototype );\nArrowHelper.prototype.constructor = ArrowHelper;\n\nArrowHelper.prototype.setDirection = function ( dir ) {\n\n\t// dir is assumed to be normalized\n\n\tif ( dir.y > 0.99999 ) {\n\n\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t} else if ( dir.y < - 0.99999 ) {\n\n\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t} else {\n\n\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\tconst radians = Math.acos( dir.y );\n\n\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t}\n\n};\n\nArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) {\n\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\tthis.line.updateMatrix();\n\n\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\tthis.cone.position.y = length;\n\tthis.cone.updateMatrix();\n\n};\n\nArrowHelper.prototype.setColor = function ( color ) {\n\n\tthis.line.material.color.set( color );\n\tthis.cone.material.color.set( color );\n\n};\n\nArrowHelper.prototype.copy = function ( source ) {\n\n\tObject3D.prototype.copy.call( this, source, false );\n\n\tthis.line.copy( source.line );\n\tthis.cone.copy( source.cone );\n\n\treturn this;\n\n};\n\nArrowHelper.prototype.clone = function () {\n\n\treturn new this.constructor().copy( this );\n\n};\n\n/**\n * @author sroucheray / http://sroucheray.org/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AxesHelper( size ) {\n\n\tsize = size || 1;\n\n\tconst vertices = [\n\t\t0, 0, 0,\tsize, 0, 0,\n\t\t0, 0, 0,\t0, size, 0,\n\t\t0, 0, 0,\t0, 0, size\n\t];\n\n\tconst colors = [\n\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t0, 0, 1,\t0, 0.6, 1\n\t];\n\n\tconst geometry = new BufferGeometry();\n\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.type = 'AxesHelper';\n\n}\n\nAxesHelper.prototype = Object.create( LineSegments.prototype );\nAxesHelper.prototype.constructor = AxesHelper;\n\n/**\n * @author Emmett Lalish / elalish\n *\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n * (PMREM) from a cubeMap environment texture. This allows different levels of\n * blur to be quickly accessed based on material roughness. It is packed into a\n * special CubeUV format that allows us to perform custom interpolation so that\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n * higher roughness levels. In this way we maintain resolution to smoothly\n * interpolate diffuse lighting while limiting sampling computation.\n */\n\nconst LOD_MIN = 4;\nconst LOD_MAX = 8;\nconst SIZE_MAX = Math.pow( 2, LOD_MAX );\n\n// The standard deviations (radians) associated with the extra mips. These are\n// chosen to approximate a Trowbridge-Reitz distribution function times the\n// geometric shadowing function. These sigma values squared must match the\n// variance #defines in cube_uv_reflection_fragment.glsl.js.\nconst EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\n\nconst TOTAL_LODS = LOD_MAX - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\n// samples and exit early, but not recompile the shader.\nconst MAX_SAMPLES = 20;\n\nconst ENCODINGS = {\n\t[ LinearEncoding ]: 0,\n\t[ sRGBEncoding ]: 1,\n\t[ RGBEEncoding ]: 2,\n\t[ RGBM7Encoding ]: 3,\n\t[ RGBM16Encoding ]: 4,\n\t[ RGBDEncoding ]: 5,\n\t[ GammaEncoding ]: 6\n};\n\nconst _flatCamera = new OrthographicCamera();\nconst { _lodPlanes, _sizeLods, _sigmas } = _createPlanes();\nlet _oldTarget = null;\n\n// Golden Ratio\nconst PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\nconst INV_PHI = 1 / PHI;\n\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nconst _axisDirections = [\n\tnew Vector3( 1, 1, 1 ),\n\tnew Vector3( - 1, 1, 1 ),\n\tnew Vector3( 1, 1, - 1 ),\n\tnew Vector3( - 1, 1, - 1 ),\n\tnew Vector3( 0, PHI, INV_PHI ),\n\tnew Vector3( 0, PHI, - INV_PHI ),\n\tnew Vector3( INV_PHI, 0, PHI ),\n\tnew Vector3( - INV_PHI, 0, PHI ),\n\tnew Vector3( PHI, INV_PHI, 0 ),\n\tnew Vector3( - PHI, INV_PHI, 0 ) ];\n\nfunction PMREMGenerator( renderer ) {\n\n\tthis._renderer = renderer;\n\tthis._pingPongRenderTarget = null;\n\n\tthis._blurMaterial = _getBlurShader( MAX_SAMPLES );\n\tthis._equirectShader = null;\n\tthis._cubemapShader = null;\n\n\tthis._compileMaterial( this._blurMaterial );\n\n}\n\nPMREMGenerator.prototype = {\n\n\tconstructor: PMREMGenerator,\n\n\t/**\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n\t * is placed at the origin).\n\t */\n\tfromScene: function ( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\n\t\tif ( sigma > 0 ) {\n\n\t\t\tthis._blur( cubeUVRenderTarget, 0, 0, sigma );\n\n\t\t}\n\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t/**\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input image size is 1k (1024 x 512),\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromEquirectangular: function ( equirectangular ) {\n\n\t\treturn this._fromTexture( equirectangular );\n\n\t},\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromCubemap: function ( cubemap ) {\n\n\t\treturn this._fromTexture( cubemap );\n\n\t},\n\n\t/**\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileCubemapShader: function () {\n\n\t\tif ( this._cubemapShader === null ) {\n\n\t\t\tthis._cubemapShader = _getCubemapShader();\n\t\t\tthis._compileMaterial( this._cubemapShader );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileEquirectangularShader: function () {\n\n\t\tif ( this._equirectShader === null ) {\n\n\t\t\tthis._equirectShader = _getEquirectShader();\n\t\t\tthis._compileMaterial( this._equirectShader );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t * one of them will cause any others to also become unusable.\n\t */\n\tdispose: function () {\n\n\t\tthis._blurMaterial.dispose();\n\n\t\tif ( this._cubemapShader !== null ) this._cubemapShader.dispose();\n\t\tif ( this._equirectShader !== null ) this._equirectShader.dispose();\n\n\t\tfor ( let i = 0; i < _lodPlanes.length; i ++ ) {\n\n\t\t\t_lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t},\n\n\t// private interface\n\n\t_cleanup: function ( outputTarget ) {\n\n\t\tthis._pingPongRenderTarget.dispose();\n\t\tthis._renderer.setRenderTarget( _oldTarget );\n\t\toutputTarget.scissorTest = false;\n\t\t_setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );\n\n\t},\n\n\t_fromTexture: function ( texture ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\tconst cubeUVRenderTarget = this._allocateTargets( texture );\n\t\tthis._textureToCubeUV( texture, cubeUVRenderTarget );\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t_allocateTargets: function ( texture ) { // warning: null texture is valid\n\n\t\tconst params = {\n\t\t\tmagFilter: NearestFilter,\n\t\t\tminFilter: NearestFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\ttype: UnsignedByteType,\n\t\t\tformat: RGBEFormat,\n\t\t\tencoding: _isLDR( texture ) ? texture.encoding : RGBEEncoding,\n\t\t\tdepthBuffer: false,\n\t\t\tstencilBuffer: false\n\t\t};\n\n\t\tconst cubeUVRenderTarget = _createRenderTarget( params );\n\t\tcubeUVRenderTarget.depthBuffer = texture ? false : true;\n\t\tthis._pingPongRenderTarget = _createRenderTarget( params );\n\t\treturn cubeUVRenderTarget;\n\n\t},\n\n\t_compileMaterial: function ( material ) {\n\n\t\tconst tmpMesh = new Mesh( _lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t},\n\n\t_sceneToCubeUV: function ( scene, near, far, cubeUVRenderTarget ) {\n\n\t\tconst fov = 90;\n\t\tconst aspect = 1;\n\t\tconst cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\n\t\tconst upSign = [ 1, - 1, 1, 1, 1, 1 ];\n\t\tconst forwardSign = [ 1, 1, 1, - 1, - 1, - 1 ];\n\t\tconst renderer = this._renderer;\n\n\t\tconst outputEncoding = renderer.outputEncoding;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\tconst clearColor = renderer.getClearColor();\n\t\tconst clearAlpha = renderer.getClearAlpha();\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.outputEncoding = LinearEncoding;\n\n\t\tlet background = scene.background;\n\t\tif ( background && background.isColor ) {\n\n\t\t\tbackground.convertSRGBToLinear();\n\t\t\t// Convert linear to RGBE\n\t\t\tconst maxComponent = Math.max( background.r, background.g, background.b );\n\t\t\tconst fExp = Math.min( Math.max( Math.ceil( Math.log2( maxComponent ) ), - 128.0 ), 127.0 );\n\t\t\tbackground = background.multiplyScalar( Math.pow( 2.0, - fExp ) );\n\t\t\tconst alpha = ( fExp + 128.0 ) / 255.0;\n\t\t\trenderer.setClearColor( background, alpha );\n\t\t\tscene.background = null;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst col = i % 3;\n\t\t\tif ( col == 0 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\n\n\t\t\t} else if ( col == 1 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\n\t\t\t\tcubeCamera.lookAt( 0, forwardSign[ i ], 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\n\n\t\t\t}\n\n\t\t\t_setViewport( cubeUVRenderTarget,\n\t\t\t\tcol * SIZE_MAX, i > 2 ? SIZE_MAX : 0, SIZE_MAX, SIZE_MAX );\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\t\trenderer.render( scene, cubeCamera );\n\n\t\t}\n\n\t\trenderer.toneMapping = toneMapping;\n\t\trenderer.outputEncoding = outputEncoding;\n\t\trenderer.setClearColor( clearColor, clearAlpha );\n\n\t},\n\n\t_textureToCubeUV: function ( texture, cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\n\t\tif ( texture.isCubeTexture ) {\n\n\t\t\tif ( this._cubemapShader == null ) {\n\n\t\t\t\tthis._cubemapShader = _getCubemapShader();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( this._equirectShader == null ) {\n\n\t\t\t\tthis._equirectShader = _getEquirectShader();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst material = texture.isCubeTexture ? this._cubemapShader : this._equirectShader;\n\t\tconst mesh = new Mesh( _lodPlanes[ 0 ], material );\n\n\t\tconst uniforms = material.uniforms;\n\n\t\tuniforms[ 'envMap' ].value = texture;\n\n\t\tif ( ! texture.isCubeTexture ) {\n\n\t\t\tuniforms[ 'texelSize' ].value.set( 1.0 / texture.image.width, 1.0 / texture.image.height );\n\n\t\t}\n\n\t\tuniforms[ 'inputEncoding' ].value = ENCODINGS[ texture.encoding ];\n\t\tuniforms[ 'outputEncoding' ].value = ENCODINGS[ cubeUVRenderTarget.texture.encoding ];\n\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * SIZE_MAX, 2 * SIZE_MAX );\n\n\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\trenderer.render( mesh, _flatCamera );\n\n\t},\n\n\t_applyPMREM: function ( cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tfor ( let i = 1; i < TOTAL_LODS; i ++ ) {\n\n\t\t\tconst sigma = Math.sqrt( _sigmas[ i ] * _sigmas[ i ] - _sigmas[ i - 1 ] * _sigmas[ i - 1 ] );\n\n\t\t\tconst poleAxis = _axisDirections[ ( i - 1 ) % _axisDirections.length ];\n\n\t\t\tthis._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\n\t},\n\n\t/**\n\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n\t * vertically and horizontally, but this breaks down on a cube. Here we apply\n\t * the blur latitudinally (around the poles), and then longitudinally (towards\n\t * the poles) to approximate the orthogonally-separable blur. It is least\n\t * accurate at the poles, but still does a decent job.\n\t */\n\t_blur: function ( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\n\n\t\tconst pingPongRenderTarget = this._pingPongRenderTarget;\n\n\t\tthis._halfBlur(\n\t\t\tcubeUVRenderTarget,\n\t\t\tpingPongRenderTarget,\n\t\t\tlodIn,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'latitudinal',\n\t\t\tpoleAxis );\n\n\t\tthis._halfBlur(\n\t\t\tpingPongRenderTarget,\n\t\t\tcubeUVRenderTarget,\n\t\t\tlodOut,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'longitudinal',\n\t\t\tpoleAxis );\n\n\t},\n\n\t_halfBlur: function ( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst blurMaterial = this._blurMaterial;\n\n\t\tif ( direction !== 'latitudinal' && direction !== 'longitudinal' ) {\n\n\t\t\tconsole.error(\n\t\t\t\t'blur direction must be either latitudinal or longitudinal!' );\n\n\t\t}\n\n\t\t// Number of standard deviations at which to cut off the discrete approximation.\n\t\tconst STANDARD_DEVIATIONS = 3;\n\n\t\tconst blurMesh = new Mesh( _lodPlanes[ lodOut ], blurMaterial );\n\t\tconst blurUniforms = blurMaterial.uniforms;\n\n\t\tconst pixels = _sizeLods[ lodIn ] - 1;\n\t\tconst radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\n\t\tconst sigmaPixels = sigmaRadians / radiansPerPixel;\n\t\tconst samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;\n\n\t\tif ( samples > MAX_SAMPLES ) {\n\n\t\t\tconsole.warn( `sigmaRadians, ${\n\t\t\t\tsigmaRadians}, is too large and will clip, as it requested ${\n\t\t\t\tsamples} samples when the maximum is set to ${MAX_SAMPLES}` );\n\n\t\t}\n\n\t\tconst weights = [];\n\t\tlet sum = 0;\n\n\t\tfor ( let i = 0; i < MAX_SAMPLES; ++ i ) {\n\n\t\t\tconst x = i / sigmaPixels;\n\t\t\tconst weight = Math.exp( - x * x / 2 );\n\t\t\tweights.push( weight );\n\n\t\t\tif ( i == 0 ) {\n\n\t\t\t\tsum += weight;\n\n\t\t\t} else if ( i < samples ) {\n\n\t\t\t\tsum += 2 * weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < weights.length; i ++ ) {\n\n\t\t\tweights[ i ] = weights[ i ] / sum;\n\n\t\t}\n\n\t\tblurUniforms[ 'envMap' ].value = targetIn.texture;\n\t\tblurUniforms[ 'samples' ].value = samples;\n\t\tblurUniforms[ 'weights' ].value = weights;\n\t\tblurUniforms[ 'latitudinal' ].value = direction === 'latitudinal';\n\n\t\tif ( poleAxis ) {\n\n\t\t\tblurUniforms[ 'poleAxis' ].value = poleAxis;\n\n\t\t}\n\n\t\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\t\tblurUniforms[ 'mipInt' ].value = LOD_MAX - lodIn;\n\t\tblurUniforms[ 'inputEncoding' ].value = ENCODINGS[ targetIn.texture.encoding ];\n\t\tblurUniforms[ 'outputEncoding' ].value = ENCODINGS[ targetIn.texture.encoding ];\n\n\t\tconst outputSize = _sizeLods[ lodOut ];\n\t\tconst x = 3 * Math.max( 0, SIZE_MAX - 2 * outputSize );\n\t\tconst y = ( lodOut === 0 ? 0 : 2 * SIZE_MAX ) + 2 * outputSize * ( lodOut > LOD_MAX - LOD_MIN ? lodOut - LOD_MAX + LOD_MIN : 0 );\n\n\t\t_setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );\n\t\trenderer.setRenderTarget( targetOut );\n\t\trenderer.render( blurMesh, _flatCamera );\n\n\t}\n\n};\n\nfunction _isLDR( texture ) {\n\n\tif ( texture === undefined || texture.type !== UnsignedByteType ) return false;\n\n\treturn texture.encoding === LinearEncoding || texture.encoding === sRGBEncoding || texture.encoding === GammaEncoding;\n\n}\n\nfunction _createPlanes() {\n\n\tconst _lodPlanes = [];\n\tconst _sizeLods = [];\n\tconst _sigmas = [];\n\n\tlet lod = LOD_MAX;\n\n\tfor ( let i = 0; i < TOTAL_LODS; i ++ ) {\n\n\t\tconst sizeLod = Math.pow( 2, lod );\n\t\t_sizeLods.push( sizeLod );\n\t\tlet sigma = 1.0 / sizeLod;\n\n\t\tif ( i > LOD_MAX - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - LOD_MAX + LOD_MIN - 1 ];\n\n\t\t} else if ( i == 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\n\t\t_sigmas.push( sigma );\n\n\t\tconst texelSize = 1.0 / ( sizeLod - 1 );\n\t\tconst min = - texelSize / 2;\n\t\tconst max = 1 + texelSize / 2;\n\t\tconst uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\n\n\t\tconst cubeFaces = 6;\n\t\tconst vertices = 6;\n\t\tconst positionSize = 3;\n\t\tconst uvSize = 2;\n\t\tconst faceIndexSize = 1;\n\n\t\tconst position = new Float32Array( positionSize * vertices * cubeFaces );\n\t\tconst uv = new Float32Array( uvSize * vertices * cubeFaces );\n\t\tconst faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\n\n\t\tfor ( let face = 0; face < cubeFaces; face ++ ) {\n\n\t\t\tconst x = ( face % 3 ) * 2 / 3 - 1;\n\t\t\tconst y = face > 2 ? 0 : - 1;\n\t\t\tconst coordinates = [\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y + 1, 0\n\t\t\t];\n\t\t\tposition.set( coordinates, positionSize * vertices * face );\n\t\t\tuv.set( uv1, uvSize * vertices * face );\n\t\t\tconst fill = [ face, face, face, face, face, face ];\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\n\n\t\t}\n\n\t\tconst planes = new BufferGeometry();\n\t\tplanes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );\n\t\tplanes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );\n\t\tplanes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );\n\t\t_lodPlanes.push( planes );\n\n\t\tif ( lod > LOD_MIN ) {\n\n\t\t\tlod --;\n\n\t\t}\n\n\t}\n\n\treturn { _lodPlanes, _sizeLods, _sigmas };\n\n}\n\nfunction _createRenderTarget( params ) {\n\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( 3 * SIZE_MAX, 3 * SIZE_MAX, params );\n\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\n\tcubeUVRenderTarget.scissorTest = true;\n\treturn cubeUVRenderTarget;\n\n}\n\nfunction _setViewport( target, x, y, width, height ) {\n\n\ttarget.viewport.set( x, y, width, height );\n\ttarget.scissor.set( x, y, width, height );\n\n}\n\nfunction _getBlurShader( maxSamples ) {\n\n\tconst weights = new Float32Array( maxSamples );\n\tconst poleAxis = new Vector3( 0, 1, 0 );\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'SphericalGaussianBlur',\n\n\t\tdefines: { 'n': maxSamples },\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'samples': { value: 1 },\n\t\t\t'weights': { value: weights },\n\t\t\t'latitudinal': { value: false },\n\t\t\t'dTheta': { value: 0 },\n\t\t\t'mipInt': { value: 0 },\n\t\t\t'poleAxis': { value: poleAxis },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: `\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform sampler2D envMap;\nuniform int samples;\nuniform float weights[n];\nuniform bool latitudinal;\nuniform float dTheta;\nuniform float mipInt;\nuniform vec3 poleAxis;\n\n${_getEncodings()}\n\n#define ENVMAP_TYPE_CUBE_UV\n#include \n\nvec3 getSample(float theta, vec3 axis) {\n\tfloat cosTheta = cos(theta);\n\t// Rodrigues' axis-angle rotation\n\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t+ cross(axis, vOutputDirection) * sin(theta)\n\t\t+ axis * dot(axis, vOutputDirection) * (1.0 - cosTheta);\n\treturn bilinearCubeUV(envMap, sampleDirection, mipInt);\n}\n\nvoid main() {\n\tvec3 axis = latitudinal ? poleAxis : cross(poleAxis, vOutputDirection);\n\tif (all(equal(axis, vec3(0.0))))\n\t\taxis = vec3(vOutputDirection.z, 0.0, - vOutputDirection.x);\n\taxis = normalize(axis);\n\tgl_FragColor = vec4(0.0);\n\tgl_FragColor.rgb += weights[0] * getSample(0.0, axis);\n\tfor (int i = 1; i < n; i++) {\n\t\tif (i >= samples)\n\t\t\tbreak;\n\t\tfloat theta = dTheta * float(i);\n\t\tgl_FragColor.rgb += weights[i] * getSample(-1.0 * theta, axis);\n\t\tgl_FragColor.rgb += weights[i] * getSample(theta, axis);\n\t}\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getEquirectShader() {\n\n\tconst texelSize = new Vector2( 1, 1 );\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'EquirectangularToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'texelSize': { value: texelSize },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: `\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform sampler2D envMap;\nuniform vec2 texelSize;\n\n${_getEncodings()}\n\n#include \n\nvoid main() {\n\tgl_FragColor = vec4(0.0);\n\tvec3 outputDirection = normalize(vOutputDirection);\n\tvec2 uv = equirectUv( outputDirection );\n\tvec2 f = fract(uv / texelSize - 0.5);\n\tuv -= f * texelSize;\n\tvec3 tl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.x += texelSize.x;\n\tvec3 tr = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.y += texelSize.y;\n\tvec3 br = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.x -= texelSize.x;\n\tvec3 bl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tvec3 tm = mix(tl, tr, f.x);\n\tvec3 bm = mix(bl, br, f.x);\n\tgl_FragColor.rgb = mix(tm, bm, f.y);\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getCubemapShader() {\n\n\tconst shaderMaterial = new RawShaderMaterial( {\n\n\t\tname: 'CubemapToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: `\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform samplerCube envMap;\n\n${_getEncodings()}\n\nvoid main() {\n\tgl_FragColor = vec4(0.0);\n\tgl_FragColor.rgb = envMapTexelToLinear(textureCube(envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ))).rgb;\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn `\nprecision mediump float;\nprecision mediump int;\nattribute vec3 position;\nattribute vec2 uv;\nattribute float faceIndex;\nvarying vec3 vOutputDirection;\n\n// RH coordinate system; PMREM face-indexing convention\nvec3 getDirection(vec2 uv, float face) {\n\tuv = 2.0 * uv - 1.0;\n\tvec3 direction = vec3(uv, 1.0);\n\tif (face == 0.0) {\n\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\t} else if (face == 1.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\t} else if (face == 2.0) {\n\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\t} else if (face == 3.0) {\n\t\tdirection = direction.zyx;\n\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\t} else if (face == 4.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\t} else if (face == 5.0) {\n\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\t}\n\treturn direction;\n}\n\nvoid main() {\n\tvOutputDirection = getDirection(uv, faceIndex);\n\tgl_Position = vec4( position, 1.0 );\n}\n\t`;\n\n}\n\nfunction _getEncodings() {\n\n\treturn `\nuniform int inputEncoding;\nuniform int outputEncoding;\n\n#include \n\nvec4 inputTexelToLinear(vec4 value){\n\tif(inputEncoding == 0){\n\t\treturn value;\n\t}else if(inputEncoding == 1){\n\t\treturn sRGBToLinear(value);\n\t}else if(inputEncoding == 2){\n\t\treturn RGBEToLinear(value);\n\t}else if(inputEncoding == 3){\n\t\treturn RGBMToLinear(value, 7.0);\n\t}else if(inputEncoding == 4){\n\t\treturn RGBMToLinear(value, 16.0);\n\t}else if(inputEncoding == 5){\n\t\treturn RGBDToLinear(value, 256.0);\n\t}else{\n\t\treturn GammaToLinear(value, 2.2);\n\t}\n}\n\nvec4 linearToOutputTexel(vec4 value){\n\tif(outputEncoding == 0){\n\t\treturn value;\n\t}else if(outputEncoding == 1){\n\t\treturn LinearTosRGB(value);\n\t}else if(outputEncoding == 2){\n\t\treturn LinearToRGBE(value);\n\t}else if(outputEncoding == 3){\n\t\treturn LinearToRGBM(value, 7.0);\n\t}else if(outputEncoding == 4){\n\t\treturn LinearToRGBM(value, 16.0);\n\t}else if(outputEncoding == 5){\n\t\treturn LinearToRGBD(value, 256.0);\n\t}else{\n\t\treturn LinearToGamma(value, 2.2);\n\t}\n}\n\nvec4 envMapTexelToLinear(vec4 color) {\n\treturn inputTexelToLinear(color);\n}\n\t`;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Face4( a, b, c, d, normal, color, materialIndex ) {\n\n\tconsole.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' );\n\treturn new Face3( a, b, c, normal, color, materialIndex );\n\n}\n\nconst LineStrip = 0;\nconst LinePieces = 1;\nconst NoColors = 0;\nconst FaceColors = 1;\nconst VertexColors = 2;\n\nfunction MeshFaceMaterial( materials ) {\n\n\tconsole.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' );\n\treturn materials;\n\n}\n\nfunction MultiMaterial( materials ) {\n\n\tif ( materials === undefined ) materials = [];\n\n\tconsole.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' );\n\tmaterials.isMultiMaterial = true;\n\tmaterials.materials = materials;\n\tmaterials.clone = function () {\n\n\t\treturn materials.slice();\n\n\t};\n\n\treturn materials;\n\n}\n\nfunction PointCloud( geometry, material ) {\n\n\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction Particle( material ) {\n\n\tconsole.warn( 'THREE.Particle has been renamed to THREE.Sprite.' );\n\treturn new Sprite( material );\n\n}\n\nfunction ParticleSystem( geometry, material ) {\n\n\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction PointCloudMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleBasicMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleSystemMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction Vertex( x, y, z ) {\n\n\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\treturn new Vector3( x, y, z );\n\n}\n\n//\n\nfunction DynamicBufferAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead.' );\n\treturn new BufferAttribute( array, itemSize ).setUsage( DynamicDrawUsage );\n\n}\n\nfunction Int8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' );\n\treturn new Int8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' );\n\treturn new Uint8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8ClampedAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' );\n\treturn new Uint8ClampedBufferAttribute( array, itemSize );\n\n}\n\nfunction Int16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' );\n\treturn new Int16BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' );\n\treturn new Uint16BufferAttribute( array, itemSize );\n\n}\n\nfunction Int32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' );\n\treturn new Int32BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' );\n\treturn new Uint32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' );\n\treturn new Float32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float64Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' );\n\treturn new Float64BufferAttribute( array, itemSize );\n\n}\n\n//\n\nCurve.create = function ( construct, getPoint ) {\n\n\tconsole.log( 'THREE.Curve.create() has been deprecated' );\n\n\tconstruct.prototype = Object.create( Curve.prototype );\n\tconstruct.prototype.constructor = construct;\n\tconstruct.prototype.getPoint = getPoint;\n\n\treturn construct;\n\n};\n\n//\n\nObject.assign( CurvePath.prototype, {\n\n\tcreatePointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from path points (for Line or Points objects)\n\n\t\tconst pts = this.getPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateSpacedPointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from equidistant sampling along the path\n\n\t\tconst pts = this.getSpacedPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateGeometry: function ( points ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\tconst geometry = new Geometry();\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tgeometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\n//\n\nObject.assign( Path.prototype, {\n\n\tfromPoints: function ( points ) {\n\n\t\tconsole.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' );\n\t\treturn this.setFromPoints( points );\n\n\t}\n\n} );\n\n//\n\nfunction ClosedSplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\tthis.closed = true;\n\n}\n\nClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction SplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction Spline( points ) {\n\n\tconsole.warn( 'THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSpline.prototype = Object.create( CatmullRomCurve3.prototype );\n\nObject.assign( Spline.prototype, {\n\n\tinitFromArray: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .initFromArray() has been removed.' );\n\n\t},\n\tgetControlPointsArray: function ( /* optionalTarget */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .getControlPointsArray() has been removed.' );\n\n\t},\n\treparametrizeByArcLength: function ( /* samplingCoef */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .reparametrizeByArcLength() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nfunction AxisHelper( size ) {\n\n\tconsole.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' );\n\treturn new AxesHelper( size );\n\n}\n\nfunction BoundingBoxHelper( object, color ) {\n\n\tconsole.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' );\n\treturn new BoxHelper( object, color );\n\n}\n\nfunction EdgesHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' );\n\treturn new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\nGridHelper.prototype.setColors = function () {\n\n\tconsole.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' );\n\n};\n\nSkeletonHelper.prototype.update = function () {\n\n\tconsole.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' );\n\n};\n\nfunction WireframeHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' );\n\treturn new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\n//\n\nObject.assign( Loader.prototype, {\n\n\textractUrlBase: function ( url ) {\n\n\t\tconsole.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' );\n\t\treturn LoaderUtils.extractUrlBase( url );\n\n\t}\n\n} );\n\nLoader.Handlers = {\n\n\tadd: function ( /* regex, loader */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.' );\n\n\t},\n\n\tget: function ( /* file */ ) {\n\n\t\tconsole.error( 'THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.' );\n\n\t}\n\n};\n\nfunction XHRLoader( manager ) {\n\n\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\n\treturn new FileLoader( manager );\n\n}\n\nfunction BinaryTextureLoader( manager ) {\n\n\tconsole.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' );\n\treturn new DataTextureLoader( manager );\n\n}\n\nObject.assign( ObjectLoader.prototype, {\n\n\tsetTexturePath: function ( value ) {\n\n\t\tconsole.warn( 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().' );\n\t\treturn this.setResourcePath( value );\n\n\t}\n\n} );\n\n//\n\nObject.assign( Box2.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nObject.assign( Box3.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nObject.assign( Sphere.prototype, {\n\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Sphere: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\n} );\n\nFrustum.prototype.setFromMatrix = function ( m ) {\n\n\tconsole.warn( 'THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix().' );\n\treturn this.setFromProjectionMatrix( m );\n\n};\n\nLine3.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nObject.assign( MathUtils, {\n\n\trandom16: function () {\n\n\t\tconsole.warn( 'THREE.Math: .random16() has been deprecated. Use Math.random() instead.' );\n\t\treturn Math.random();\n\n\t},\n\n\tnearestPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().' );\n\t\treturn MathUtils.floorPowerOfTwo( value );\n\n\t},\n\n\tnextPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().' );\n\t\treturn MathUtils.ceilPowerOfTwo( value );\n\n\t}\n\n} );\n\nObject.assign( Matrix3.prototype, {\n\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\t\treturn vector.applyMatrix3( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' );\n\n\t},\n\tapplyToBufferAttribute: function ( attribute ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead.' );\n\t\treturn attribute.applyMatrix3( this );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' );\n\n\t}\n\n} );\n\nObject.assign( Matrix4.prototype, {\n\n\textractPosition: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\t\treturn this.copyPosition( m );\n\n\t},\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tgetPosition: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\t\treturn new Vector3().setFromMatrixColumn( this, 3 );\n\n\t},\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\t\treturn this.makeRotationFromQuaternion( q );\n\n\t},\n\tmultiplyToArray: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector4: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' );\n\n\t},\n\trotateAxis: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\t\tv.transformDirection( this );\n\n\t},\n\tcrossVector: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\ttranslate: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\n\t},\n\trotateX: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\n\t},\n\trotateY: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\n\t},\n\trotateZ: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\n\t},\n\trotateByAxis: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\n\t},\n\tapplyToBufferAttribute: function ( attribute ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead.' );\n\t\treturn attribute.applyMatrix4( this );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' );\n\n\t},\n\tmakeFrustum: function ( left, right, bottom, top, near, far ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' );\n\t\treturn this.makePerspective( left, right, top, bottom, near, far );\n\n\t}\n\n} );\n\nPlane.prototype.isIntersectionLine = function ( line ) {\n\n\tconsole.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' );\n\treturn this.intersectsLine( line );\n\n};\n\nQuaternion.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\n\treturn vector.applyQuaternion( this );\n\n};\n\nObject.assign( Ray.prototype, {\n\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionPlane: function ( plane ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\t\treturn this.intersectsPlane( plane );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t}\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tarea: function () {\n\n\t\tconsole.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' );\n\t\treturn this.getArea();\n\n\t},\n\tbarycoordFromPoint: function ( point, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn this.getBarycoord( point, target );\n\n\t},\n\tmidpoint: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' );\n\t\treturn this.getMidpoint( target );\n\n\t},\n\tnormal: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn this.getNormal( target );\n\n\t},\n\tplane: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' );\n\t\treturn this.getPlane( target );\n\n\t}\n\n} );\n\nObject.assign( Triangle, {\n\n\tbarycoordFromPoint: function ( point, a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn Triangle.getBarycoord( point, a, b, c, target );\n\n\t},\n\tnormal: function ( a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn Triangle.getNormal( a, b, c, target );\n\n\t}\n\n} );\n\nObject.assign( Shape.prototype, {\n\n\textractAllPoints: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' );\n\t\treturn this.extractPoints( divisions );\n\n\t},\n\textrude: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\n\t\treturn new ExtrudeGeometry( this, options );\n\n\t},\n\tmakeGeometry: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\n\t\treturn new ShapeGeometry( this, options );\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector3.prototype, {\n\n\tsetEulerFromRotationMatrix: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\n\t},\n\tsetEulerFromQuaternion: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\n\t},\n\tgetPositionFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\t\treturn this.setFromMatrixPosition( m );\n\n\t},\n\tgetScaleFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\t\treturn this.setFromMatrixScale( m );\n\n\t},\n\tgetColumnFromMatrix: function ( index, matrix ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\t\treturn this.setFromMatrixColumn( matrix, index );\n\n\t},\n\tapplyProjection: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' );\n\t\treturn this.applyMatrix4( m );\n\n\t},\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\n//\n\nObject.assign( Geometry.prototype, {\n\n\tcomputeTangents: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeLineDistances: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.' );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.assign( Object3D.prototype, {\n\n\tgetChildByName: function ( name ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\t\treturn this.getObjectByName( name );\n\n\t},\n\trenderDepth: function () {\n\n\t\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\n\t},\n\ttranslate: function ( distance, axis ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\t\treturn this.translateOnAxis( axis, distance );\n\n\t},\n\tgetWorldRotation: function () {\n\n\t\tconsole.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.defineProperties( Object3D.prototype, {\n\n\teulerOrder: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\treturn this.rotation.order;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\tthis.rotation.order = value;\n\n\t\t}\n\t},\n\tuseQuaternion: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( Mesh.prototype, {\n\n\tsetDrawMode: function () {\n\n\t\tconsole.error( 'THREE.Mesh: .setDrawMode() has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.' );\n\n\t},\n\n} );\n\nObject.defineProperties( Mesh.prototype, {\n\n\tdrawMode: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode.' );\n\t\t\treturn TrianglesDrawMode;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.error( 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( LOD.prototype, {\n\n\tobjects: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.LOD: .objects has been renamed to .levels.' );\n\t\t\treturn this.levels;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperty( Skeleton.prototype, 'useVertexTexture', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t},\n\tset: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t}\n\n} );\n\nSkinnedMesh.prototype.initBones = function () {\n\n\tconsole.error( 'THREE.SkinnedMesh: initBones() has been removed.' );\n\n};\n\nObject.defineProperty( Curve.prototype, '__arcLengthDivisions', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\treturn this.arcLengthDivisions;\n\n\t},\n\tset: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\tthis.arcLengthDivisions = value;\n\n\t}\n\n} );\n\n//\n\nPerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) {\n\n\tconsole.warn( \"THREE.PerspectiveCamera.setLens is deprecated. \" +\n\t\t\t\"Use .setFocalLength and .filmGauge for a photographic setup.\" );\n\n\tif ( filmGauge !== undefined ) this.filmGauge = filmGauge;\n\tthis.setFocalLength( focalLength );\n\n};\n\n//\n\nObject.defineProperties( Light.prototype, {\n\tonlyShadow: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .onlyShadow has been removed.' );\n\n\t\t}\n\t},\n\tshadowCameraFov: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' );\n\t\t\tthis.shadow.camera.fov = value;\n\n\t\t}\n\t},\n\tshadowCameraLeft: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' );\n\t\t\tthis.shadow.camera.left = value;\n\n\t\t}\n\t},\n\tshadowCameraRight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' );\n\t\t\tthis.shadow.camera.right = value;\n\n\t\t}\n\t},\n\tshadowCameraTop: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' );\n\t\t\tthis.shadow.camera.top = value;\n\n\t\t}\n\t},\n\tshadowCameraBottom: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' );\n\t\t\tthis.shadow.camera.bottom = value;\n\n\t\t}\n\t},\n\tshadowCameraNear: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' );\n\t\t\tthis.shadow.camera.near = value;\n\n\t\t}\n\t},\n\tshadowCameraFar: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' );\n\t\t\tthis.shadow.camera.far = value;\n\n\t\t}\n\t},\n\tshadowCameraVisible: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' );\n\n\t\t}\n\t},\n\tshadowBias: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' );\n\t\t\tthis.shadow.bias = value;\n\n\t\t}\n\t},\n\tshadowDarkness: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowDarkness has been removed.' );\n\n\t\t}\n\t},\n\tshadowMapWidth: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' );\n\t\t\tthis.shadow.mapSize.width = value;\n\n\t\t}\n\t},\n\tshadowMapHeight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' );\n\t\t\tthis.shadow.mapSize.height = value;\n\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( BufferAttribute.prototype, {\n\n\tlength: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' );\n\t\t\treturn this.array.length;\n\n\t\t}\n\t},\n\tdynamic: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\treturn this.usage === DynamicDrawUsage;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\n\t\t\tthis.setUsage( DynamicDrawUsage );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( BufferAttribute.prototype, {\n\tsetDynamic: function ( value ) {\n\n\t\tconsole.warn( 'THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\t\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\t\treturn this;\n\n\t},\n\tcopyIndicesArray: function ( /* indices */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' );\n\n\t},\n\tsetArray: function ( /* array */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n\t}\n} );\n\nObject.assign( BufferGeometry.prototype, {\n\n\taddIndex: function ( index ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\t\tthis.setIndex( index );\n\n\t},\n\taddAttribute: function ( name, attribute ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute().' );\n\n\t\tif ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\t\treturn this.setAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t\t}\n\n\t\tif ( name === 'index' ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\t\tthis.setIndex( attribute );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\treturn this.setAttribute( name, attribute );\n\n\t},\n\taddDrawCall: function ( start, count, indexOffset ) {\n\n\t\tif ( indexOffset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\n\t\t}\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\t\tthis.addGroup( start, count );\n\n\t},\n\tclearDrawCalls: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\t\tthis.clearGroups();\n\n\t},\n\tcomputeTangents: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeOffsets: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\n\t},\n\tremoveAttribute: function ( name ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute().' );\n\n\t\treturn this.deleteAttribute( name );\n\n\t},\n\tapplyMatrix: function ( matrix ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\t\treturn this.applyMatrix4( matrix );\n\n\t}\n\n} );\n\nObject.defineProperties( BufferGeometry.prototype, {\n\n\tdrawcalls: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t},\n\toffsets: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( InstancedBufferGeometry.prototype, {\n\n\tmaxInstancedCount: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount.' );\n\t\t\treturn this.instanceCount;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount.' );\n\t\t\tthis.instanceCount = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( Raycaster.prototype, {\n\n\tlinePrecision: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead.' );\n\t\t\treturn this.params.Line.threshold;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead.' );\n\t\t\tthis.params.Line.threshold = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( InterleavedBuffer.prototype, {\n\n\tdynamic: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.' );\n\t\t\treturn this.usage === DynamicDrawUsage;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.' );\n\t\t\tthis.setUsage( value );\n\n\t\t}\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\tsetDynamic: function ( value ) {\n\n\t\tconsole.warn( 'THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\t\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\t\treturn this;\n\n\t},\n\tsetArray: function ( /* array */ ) {\n\n\t\tconsole.error( 'THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n\t}\n} );\n\n//\n\nObject.assign( ExtrudeBufferGeometry.prototype, {\n\n\tgetArrays: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .getArrays() has been removed.' );\n\n\t},\n\n\taddShapeList: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.' );\n\n\t},\n\n\taddShape: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShape() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Uniform.prototype, {\n\n\tdynamic: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' );\n\n\t\t}\n\t},\n\tonUpdate: {\n\t\tvalue: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\t\t\treturn this;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Material.prototype, {\n\n\twrapAround: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t}\n\t},\n\n\toverdraw: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t}\n\t},\n\n\twrapRGB: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapRGB has been removed.' );\n\t\t\treturn new Color();\n\n\t\t}\n\t},\n\n\tshading: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\tthis.flatShading = ( value === FlatShading );\n\n\t\t}\n\t},\n\n\tstencilMask: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\treturn this.stencilFuncMask;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\n\t\t\tthis.stencilFuncMask = value;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( MeshPhongMaterial.prototype, {\n\n\tmetal: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( ShaderMaterial.prototype, {\n\n\tderivatives: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\treturn this.extensions.derivatives;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\tthis.extensions.derivatives = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.assign( WebGLRenderer.prototype, {\n\n\tclearTarget: function ( renderTarget, color, depth, stencil ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' );\n\t\tthis.setRenderTarget( renderTarget );\n\t\tthis.clear( color, depth, stencil );\n\n\t},\n\tanimate: function ( callback ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' );\n\t\tthis.setAnimationLoop( callback );\n\n\t},\n\tgetCurrentRenderTarget: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' );\n\t\treturn this.getRenderTarget();\n\n\t},\n\tgetMaxAnisotropy: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' );\n\t\treturn this.capabilities.getMaxAnisotropy();\n\n\t},\n\tgetPrecision: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' );\n\t\treturn this.capabilities.precision;\n\n\t},\n\tresetGLState: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' );\n\t\treturn this.state.reset();\n\n\t},\n\tsupportsFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_float' );\n\n\t},\n\tsupportsHalfFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_half_float' );\n\n\t},\n\tsupportsStandardDerivatives: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\t\treturn this.extensions.get( 'OES_standard_derivatives' );\n\n\t},\n\tsupportsCompressedTextureS3TC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t},\n\tsupportsCompressedTexturePVRTC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t},\n\tsupportsBlendMinMax: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\t\treturn this.extensions.get( 'EXT_blend_minmax' );\n\n\t},\n\tsupportsVertexTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' );\n\t\treturn this.capabilities.vertexTextures;\n\n\t},\n\tsupportsInstancedArrays: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\t\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\n\t},\n\tenableScissorTest: function ( boolean ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\t\tthis.setScissorTest( boolean );\n\n\t},\n\tinitMaterial: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\n\t},\n\taddPrePlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\n\t},\n\taddPostPlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\n\t},\n\tupdateShadowMap: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\n\t},\n\tsetFaceCulling: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' );\n\n\t},\n\tallocTextureUnit: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .allocTextureUnit() has been removed.' );\n\n\t},\n\tsetTexture: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture() has been removed.' );\n\n\t},\n\tsetTexture2D: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture2D() has been removed.' );\n\n\t},\n\tsetTextureCube: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTextureCube() has been removed.' );\n\n\t},\n\tgetActiveMipMapLevel: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().' );\n\t\treturn this.getActiveMipmapLevel();\n\n\t}\n\n} );\n\nObject.defineProperties( WebGLRenderer.prototype, {\n\n\tshadowMapEnabled: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.enabled;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\tthis.shadowMap.enabled = value;\n\n\t\t}\n\t},\n\tshadowMapType: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\tthis.shadowMap.type = value;\n\n\t\t}\n\t},\n\tshadowMapCullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\tcontext: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.' );\n\t\t\treturn this.getContext();\n\n\t\t}\n\t},\n\tvr: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .vr has been renamed to .xr' );\n\t\t\treturn this.xr;\n\n\t\t}\n\t},\n\tgammaInput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\n\n\t\t}\n\t},\n\tgammaOutput: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\n\t\t\tthis.outputEncoding = ( value === true ) ? sRGBEncoding : LinearEncoding;\n\n\t\t}\n\t},\n\ttoneMappingWhitePoint: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\t\t\treturn 1.0;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\n\n\t\t}\n\t},\n\n} );\n\nObject.defineProperties( WebGLShadowMap.prototype, {\n\n\tcullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* cullFace */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderReverseSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderSingleSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t}\n\n} );\n\nfunction WebGLRenderTargetCube( width, height, options ) {\n\n\tconsole.warn( 'THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options ).' );\n\treturn new WebGLCubeRenderTarget( width, options );\n\n}\n\n//\n\nObject.defineProperties( WebGLRenderTarget.prototype, {\n\n\twrapS: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\treturn this.texture.wrapS;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\tthis.texture.wrapS = value;\n\n\t\t}\n\t},\n\twrapT: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\treturn this.texture.wrapT;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\tthis.texture.wrapT = value;\n\n\t\t}\n\t},\n\tmagFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\treturn this.texture.magFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\tthis.texture.magFilter = value;\n\n\t\t}\n\t},\n\tminFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\treturn this.texture.minFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\tthis.texture.minFilter = value;\n\n\t\t}\n\t},\n\tanisotropy: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\treturn this.texture.anisotropy;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\tthis.texture.anisotropy = value;\n\n\t\t}\n\t},\n\toffset: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\treturn this.texture.offset;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\tthis.texture.offset = value;\n\n\t\t}\n\t},\n\trepeat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\treturn this.texture.repeat;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\tthis.texture.repeat = value;\n\n\t\t}\n\t},\n\tformat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\treturn this.texture.format;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\tthis.texture.format = value;\n\n\t\t}\n\t},\n\ttype: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\treturn this.texture.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\tthis.texture.type = value;\n\n\t\t}\n\t},\n\tgenerateMipmaps: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\treturn this.texture.generateMipmaps;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\tthis.texture.generateMipmaps = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Audio.prototype, {\n\n\tload: {\n\t\tvalue: function ( file ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' );\n\t\t\tconst scope = this;\n\t\t\tconst audioLoader = new AudioLoader();\n\t\t\taudioLoader.load( file, function ( buffer ) {\n\n\t\t\t\tscope.setBuffer( buffer );\n\n\t\t\t} );\n\t\t\treturn this;\n\n\t\t}\n\t},\n\tstartTime: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Audio: .startTime is now .play( delay ).' );\n\n\t\t}\n\t}\n\n} );\n\nAudioAnalyser.prototype.getData = function () {\n\n\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\n\treturn this.getFrequencyData();\n\n};\n\n//\n\nCubeCamera.prototype.updateCubeMap = function ( renderer, scene ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' );\n\treturn this.update( renderer, scene );\n\n};\n\n//\n\nconst GeometryUtils = {\n\n\tmerge: function ( geometry1, geometry2, materialIndexOffset ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' );\n\t\tlet matrix;\n\n\t\tif ( geometry2.isMesh ) {\n\n\t\t\tgeometry2.matrixAutoUpdate && geometry2.updateMatrix();\n\n\t\t\tmatrix = geometry2.matrix;\n\t\t\tgeometry2 = geometry2.geometry;\n\n\t\t}\n\n\t\tgeometry1.merge( geometry2, matrix, materialIndexOffset );\n\n\t},\n\n\tcenter: function ( geometry ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' );\n\t\treturn geometry.center();\n\n\t}\n\n};\n\nImageUtils.crossOrigin = undefined;\n\nImageUtils.loadTexture = function ( url, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\n\n\tconst loader = new TextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( url, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadTextureCube = function ( urls, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\n\n\tconst loader = new CubeTextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tconst texture = loader.load( urls, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadCompressedTexture = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\nImageUtils.loadCompressedTextureCube = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\n//\n\nfunction CanvasRenderer() {\n\n\tconsole.error( 'THREE.CanvasRenderer has been removed' );\n\n}\n\n//\n\nfunction JSONLoader() {\n\n\tconsole.error( 'THREE.JSONLoader has been removed.' );\n\n}\n\n//\n\nconst SceneUtils = {\n\n\tcreateMultiMaterialObject: function ( /* geometry, materials */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tdetach: function ( /* child, parent, scene */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t},\n\n\tattach: function ( /* child, scene, parent */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\n\n\t}\n\n};\n\n//\n\nfunction LensFlare() {\n\n\tconsole.error( 'THREE.LensFlare has been moved to /examples/jsm/objects/Lensflare.js' );\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t/* eslint-disable no-undef */\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\t/* eslint-enable no-undef */\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AlphaFormat, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AmbientLightProbe, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, AxisHelper, BackSide, BasicDepthPacking, BasicShadowMap, BinaryTextureLoader, Bone, BooleanKeyframeTrack, BoundingBoxHelper, Box2, Box3, Box3Helper, BoxBufferGeometry, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasRenderer, CanvasTexture, CatmullRomCurve3, CineonToneMapping, CircleBufferGeometry, CircleGeometry, ClampToEdgeWrapping, Clock, ClosedSplineCurve3, Color, ColorKeyframeTrack, CompressedTexture, CompressedTextureLoader, ConeBufferGeometry, ConeGeometry, CubeCamera, BoxGeometry as CubeGeometry, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubeUVRefractionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderBufferGeometry, CylinderGeometry, Cylindrical, DataTexture, DataTexture2DArray, DataTexture3D, DataTextureLoader, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DirectionalLightShadow, DiscreteInterpolant, DodecahedronBufferGeometry, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicBufferAttribute, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EdgesHelper, EllipseCurve, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeBufferGeometry, ExtrudeGeometry, Face3, Face4, FaceColors, FileLoader, FlatShading, Float32Attribute, Float32BufferAttribute, Float64Attribute, Float64BufferAttribute, FloatType, Fog, FogExp2, Font, FontLoader, FrontFaceDirectionCCW, FrontFaceDirectionCW, FrontSide, Frustum, GammaEncoding, Geometry, GeometryUtils, GreaterDepth, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, HemisphereLightProbe, IcosahedronBufferGeometry, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, ImmediateRenderObject, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16Attribute, Int16BufferAttribute, Int32Attribute, Int32BufferAttribute, Int8Attribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, JSONLoader, KeepStencilOp, KeyframeTrack, LOD, LatheBufferGeometry, LatheGeometry, Layers, LensFlare, LessDepth, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, LightShadow, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LinePieces, LineSegments, LineStrip, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearToneMapping, Loader, LoaderUtils, LoadingManager, LogLuvEncoding, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils as Math, MathUtils, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshFaceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiMaterial, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeverDepth, NeverStencilFunc, NoBlending, NoColors, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronBufferGeometry, OctahedronGeometry, OneFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, ParametricBufferGeometry, ParametricGeometry, Particle, ParticleBasicMaterial, ParticleSystem, ParticleSystemMaterial, Path, PerspectiveCamera, Plane, PlaneBufferGeometry, PlaneGeometry, PlaneHelper, PointCloud, PointCloudMaterial, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronBufferGeometry, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBDEncoding, RGBEEncoding, RGBEFormat, RGBFormat, RGBIntegerFormat, RGBM16Encoding, RGBM7Encoding, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingBufferGeometry, RingGeometry, SRGB8_ALPHA8_ASTC_10x10_Format, SRGB8_ALPHA8_ASTC_10x5_Format, SRGB8_ALPHA8_ASTC_10x6_Format, SRGB8_ALPHA8_ASTC_10x8_Format, SRGB8_ALPHA8_ASTC_12x10_Format, SRGB8_ALPHA8_ASTC_12x12_Format, SRGB8_ALPHA8_ASTC_4x4_Format, SRGB8_ALPHA8_ASTC_5x4_Format, SRGB8_ALPHA8_ASTC_5x5_Format, SRGB8_ALPHA8_ASTC_6x5_Format, SRGB8_ALPHA8_ASTC_6x6_Format, SRGB8_ALPHA8_ASTC_8x5_Format, SRGB8_ALPHA8_ASTC_8x6_Format, SRGB8_ALPHA8_ASTC_8x8_Format, Scene, SceneUtils, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeBufferGeometry, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, SmoothShading, Sphere, SphereBufferGeometry, SphereGeometry, Spherical, SphericalHarmonics3, Spline, SplineCurve, SplineCurve3, SpotLight, SpotLightHelper, SpotLightShadow, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronBufferGeometry, TetrahedronGeometry, TextBufferGeometry, TextGeometry, Texture, TextureLoader, TorusBufferGeometry, TorusGeometry, TorusKnotBufferGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeBufferGeometry, TubeGeometry, UVMapping, Uint16Attribute, Uint16BufferAttribute, Uint32Attribute, Uint32BufferAttribute, Uint8Attribute, Uint8BufferAttribute, Uint8ClampedAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShort565Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, Vertex, VertexColors, VideoTexture, WebGL1Renderer, WebGLCubeRenderTarget, WebGLMultisampleRenderTarget, WebGLRenderTarget, WebGLRenderTargetCube, WebGLRenderer, WebGLUtils, WireframeGeometry, WireframeHelper, WrapAroundEnding, XHRLoader, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, sRGBEncoding };\n","\n/**\n * @license\n *\n * chroma.js - JavaScript library for color conversions\n * \n * Copyright (c) 2011-2017, Gregor Aisch\n * All rights reserved.\n * \n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n * \n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * \n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n * \n * 3. The name Gregor Aisch may not be used to endorse or promote products\n * derived from this software without specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n */\n\n(function() {\n var Color, DEG2RAD, LAB_CONSTANTS, PI, PITHIRD, RAD2DEG, TWOPI, _average_lrgb, _guess_formats, _guess_formats_sorted, _input, _interpolators, abs, atan2, bezier, blend, blend_f, brewer, burn, chroma, clip_rgb, cmyk2rgb, colors, cos, css2rgb, darken, dodge, each, floor, hcg2rgb, hex2rgb, hsi2rgb, hsl2css, hsl2rgb, hsv2rgb, interpolate, interpolate_hsx, interpolate_lab, interpolate_lrgb, interpolate_num, interpolate_rgb, lab2lch, lab2rgb, lab_xyz, lch2lab, lch2rgb, lighten, limit, log, luminance_x, m, max, multiply, normal, num2rgb, overlay, pow, rgb2cmyk, rgb2css, rgb2hcg, rgb2hex, rgb2hsi, rgb2hsl, rgb2hsv, rgb2lab, rgb2lch, rgb2luminance, rgb2num, rgb2temperature, rgb2xyz, rgb_xyz, rnd, root, round, screen, sin, sqrt, temperature2rgb, type, unpack, w3cx11, xyz_lab, xyz_rgb,\n slice = [].slice;\n\n type = (function() {\n\n /*\n for browser-safe type checking+\n ported from jQuery's $.type\n */\n var classToType, len, name, o, ref;\n classToType = {};\n ref = \"Boolean Number String Function Array Date RegExp Undefined Null\".split(\" \");\n for (o = 0, len = ref.length; o < len; o++) {\n name = ref[o];\n classToType[\"[object \" + name + \"]\"] = name.toLowerCase();\n }\n return function(obj) {\n var strType;\n strType = Object.prototype.toString.call(obj);\n return classToType[strType] || \"object\";\n };\n })();\n\n limit = function(x, min, max) {\n if (min == null) {\n min = 0;\n }\n if (max == null) {\n max = 1;\n }\n if (x < min) {\n x = min;\n }\n if (x > max) {\n x = max;\n }\n return x;\n };\n\n unpack = function(args) {\n if (args.length >= 3) {\n return Array.prototype.slice.call(args);\n } else {\n return args[0];\n }\n };\n\n clip_rgb = function(rgb) {\n var i, o;\n rgb._clipped = false;\n rgb._unclipped = rgb.slice(0);\n for (i = o = 0; o < 3; i = ++o) {\n if (i < 3) {\n if (rgb[i] < 0 || rgb[i] > 255) {\n rgb._clipped = true;\n }\n if (rgb[i] < 0) {\n rgb[i] = 0;\n }\n if (rgb[i] > 255) {\n rgb[i] = 255;\n }\n } else if (i === 3) {\n if (rgb[i] < 0) {\n rgb[i] = 0;\n }\n if (rgb[i] > 1) {\n rgb[i] = 1;\n }\n }\n }\n if (!rgb._clipped) {\n delete rgb._unclipped;\n }\n return rgb;\n };\n\n PI = Math.PI, round = Math.round, cos = Math.cos, floor = Math.floor, pow = Math.pow, log = Math.log, sin = Math.sin, sqrt = Math.sqrt, atan2 = Math.atan2, max = Math.max, abs = Math.abs;\n\n TWOPI = PI * 2;\n\n PITHIRD = PI / 3;\n\n DEG2RAD = PI / 180;\n\n RAD2DEG = 180 / PI;\n\n chroma = function() {\n if (arguments[0] instanceof Color) {\n return arguments[0];\n }\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, arguments, function(){});\n };\n\n chroma[\"default\"] = chroma;\n\n _interpolators = [];\n\n if ((typeof module !== \"undefined\" && module !== null) && (module.exports != null)) {\n module.exports = chroma;\n }\n\n if (typeof define === 'function' && define.amd) {\n define([], function() {\n return chroma;\n });\n } else {\n root = typeof exports !== \"undefined\" && exports !== null ? exports : this;\n root.chroma = chroma;\n }\n\n chroma.version = '1.4.1';\n\n _input = {};\n\n _guess_formats = [];\n\n _guess_formats_sorted = false;\n\n Color = (function() {\n function Color() {\n var arg, args, chk, len, len1, me, mode, o, w;\n me = this;\n args = [];\n for (o = 0, len = arguments.length; o < len; o++) {\n arg = arguments[o];\n if (arg != null) {\n args.push(arg);\n }\n }\n if (args.length > 1) {\n mode = args[args.length - 1];\n }\n if (_input[mode] != null) {\n me._rgb = clip_rgb(_input[mode](unpack(args.slice(0, -1))));\n } else {\n if (!_guess_formats_sorted) {\n _guess_formats = _guess_formats.sort(function(a, b) {\n return b.p - a.p;\n });\n _guess_formats_sorted = true;\n }\n for (w = 0, len1 = _guess_formats.length; w < len1; w++) {\n chk = _guess_formats[w];\n mode = chk.test.apply(chk, args);\n if (mode) {\n break;\n }\n }\n if (mode) {\n me._rgb = clip_rgb(_input[mode].apply(_input, args));\n }\n }\n if (me._rgb == null) {\n console.warn('unknown format: ' + args);\n }\n if (me._rgb == null) {\n me._rgb = [0, 0, 0];\n }\n if (me._rgb.length === 3) {\n me._rgb.push(1);\n }\n }\n\n Color.prototype.toString = function() {\n return this.hex();\n };\n\n return Color;\n\n })();\n\n chroma._input = _input;\n\n\n /**\n \tColorBrewer colors for chroma.js\n \n \tCopyright (c) 2002 Cynthia Brewer, Mark Harrower, and The \n \tPennsylvania State University.\n \n \tLicensed under the Apache License, Version 2.0 (the \"License\"); \n \tyou may not use this file except in compliance with the License.\n \tYou may obtain a copy of the License at\t\n \thttp://www.apache.org/licenses/LICENSE-2.0\n \n \tUnless required by applicable law or agreed to in writing, software distributed\n \tunder the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n \tCONDITIONS OF ANY KIND, either express or implied. See the License for the\n \tspecific language governing permissions and limitations under the License.\n \n @preserve\n */\n\n chroma.brewer = brewer = {\n OrRd: ['#fff7ec', '#fee8c8', '#fdd49e', '#fdbb84', '#fc8d59', '#ef6548', '#d7301f', '#b30000', '#7f0000'],\n PuBu: ['#fff7fb', '#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0', '#045a8d', '#023858'],\n BuPu: ['#f7fcfd', '#e0ecf4', '#bfd3e6', '#9ebcda', '#8c96c6', '#8c6bb1', '#88419d', '#810f7c', '#4d004b'],\n Oranges: ['#fff5eb', '#fee6ce', '#fdd0a2', '#fdae6b', '#fd8d3c', '#f16913', '#d94801', '#a63603', '#7f2704'],\n BuGn: ['#f7fcfd', '#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45', '#006d2c', '#00441b'],\n YlOrBr: ['#ffffe5', '#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02', '#993404', '#662506'],\n YlGn: ['#ffffe5', '#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443', '#006837', '#004529'],\n Reds: ['#fff5f0', '#fee0d2', '#fcbba1', '#fc9272', '#fb6a4a', '#ef3b2c', '#cb181d', '#a50f15', '#67000d'],\n RdPu: ['#fff7f3', '#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e', '#7a0177', '#49006a'],\n Greens: ['#f7fcf5', '#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45', '#006d2c', '#00441b'],\n YlGnBu: ['#ffffd9', '#edf8b1', '#c7e9b4', '#7fcdbb', '#41b6c4', '#1d91c0', '#225ea8', '#253494', '#081d58'],\n Purples: ['#fcfbfd', '#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d'],\n GnBu: ['#f7fcf0', '#e0f3db', '#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#0868ac', '#084081'],\n Greys: ['#ffffff', '#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252', '#252525', '#000000'],\n YlOrRd: ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a', '#e31a1c', '#bd0026', '#800026'],\n PuRd: ['#f7f4f9', '#e7e1ef', '#d4b9da', '#c994c7', '#df65b0', '#e7298a', '#ce1256', '#980043', '#67001f'],\n Blues: ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#08519c', '#08306b'],\n PuBuGn: ['#fff7fb', '#ece2f0', '#d0d1e6', '#a6bddb', '#67a9cf', '#3690c0', '#02818a', '#016c59', '#014636'],\n Viridis: ['#440154', '#482777', '#3f4a8a', '#31678e', '#26838f', '#1f9d8a', '#6cce5a', '#b6de2b', '#fee825'],\n Spectral: ['#9e0142', '#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#e6f598', '#abdda4', '#66c2a5', '#3288bd', '#5e4fa2'],\n RdYlGn: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'],\n RdBu: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#f7f7f7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'],\n PiYG: ['#8e0152', '#c51b7d', '#de77ae', '#f1b6da', '#fde0ef', '#f7f7f7', '#e6f5d0', '#b8e186', '#7fbc41', '#4d9221', '#276419'],\n PRGn: ['#40004b', '#762a83', '#9970ab', '#c2a5cf', '#e7d4e8', '#f7f7f7', '#d9f0d3', '#a6dba0', '#5aae61', '#1b7837', '#00441b'],\n RdYlBu: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695'],\n BrBG: ['#543005', '#8c510a', '#bf812d', '#dfc27d', '#f6e8c3', '#f5f5f5', '#c7eae5', '#80cdc1', '#35978f', '#01665e', '#003c30'],\n RdGy: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#ffffff', '#e0e0e0', '#bababa', '#878787', '#4d4d4d', '#1a1a1a'],\n PuOr: ['#7f3b08', '#b35806', '#e08214', '#fdb863', '#fee0b6', '#f7f7f7', '#d8daeb', '#b2abd2', '#8073ac', '#542788', '#2d004b'],\n Set2: ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f', '#e5c494', '#b3b3b3'],\n Accent: ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f', '#bf5b17', '#666666'],\n Set1: ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33', '#a65628', '#f781bf', '#999999'],\n Set3: ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f'],\n Dark2: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02', '#a6761d', '#666666'],\n Paired: ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'],\n Pastel2: ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae', '#f1e2cc', '#cccccc'],\n Pastel1: ['#fbb4ae', '#b3cde3', '#ccebc5', '#decbe4', '#fed9a6', '#ffffcc', '#e5d8bd', '#fddaec', '#f2f2f2']\n };\n\n (function() {\n var key, results;\n results = [];\n for (key in brewer) {\n results.push(brewer[key.toLowerCase()] = brewer[key]);\n }\n return results;\n })();\n\n\n /**\n \tX11 color names\n \n \thttp://www.w3.org/TR/css3-color/#svg-color\n */\n\n w3cx11 = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflower: '#6495ed',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n laserlemon: '#ffff54',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrod: '#fafad2',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n maroon2: '#7f0000',\n maroon3: '#b03060',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n purple2: '#7f007f',\n purple3: '#a020f0',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32'\n };\n\n chroma.colors = colors = w3cx11;\n\n lab2rgb = function() {\n var a, args, b, g, l, r, x, y, z;\n args = unpack(arguments);\n l = args[0], a = args[1], b = args[2];\n y = (l + 16) / 116;\n x = isNaN(a) ? y : y + a / 500;\n z = isNaN(b) ? y : y - b / 200;\n y = LAB_CONSTANTS.Yn * lab_xyz(y);\n x = LAB_CONSTANTS.Xn * lab_xyz(x);\n z = LAB_CONSTANTS.Zn * lab_xyz(z);\n r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z);\n g = xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z);\n b = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z);\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n xyz_rgb = function(r) {\n return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow(r, 1 / 2.4) - 0.055);\n };\n\n lab_xyz = function(t) {\n if (t > LAB_CONSTANTS.t1) {\n return t * t * t;\n } else {\n return LAB_CONSTANTS.t2 * (t - LAB_CONSTANTS.t0);\n }\n };\n\n LAB_CONSTANTS = {\n Kn: 18,\n Xn: 0.950470,\n Yn: 1,\n Zn: 1.088830,\n t0: 0.137931034,\n t1: 0.206896552,\n t2: 0.12841855,\n t3: 0.008856452\n };\n\n rgb2lab = function() {\n var b, g, r, ref, ref1, x, y, z;\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n ref1 = rgb2xyz(r, g, b), x = ref1[0], y = ref1[1], z = ref1[2];\n return [116 * y - 16, 500 * (x - y), 200 * (y - z)];\n };\n\n rgb_xyz = function(r) {\n if ((r /= 255) <= 0.04045) {\n return r / 12.92;\n } else {\n return pow((r + 0.055) / 1.055, 2.4);\n }\n };\n\n xyz_lab = function(t) {\n if (t > LAB_CONSTANTS.t3) {\n return pow(t, 1 / 3);\n } else {\n return t / LAB_CONSTANTS.t2 + LAB_CONSTANTS.t0;\n }\n };\n\n rgb2xyz = function() {\n var b, g, r, ref, x, y, z;\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n r = rgb_xyz(r);\n g = rgb_xyz(g);\n b = rgb_xyz(b);\n x = xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / LAB_CONSTANTS.Xn);\n y = xyz_lab((0.2126729 * r + 0.7151522 * g + 0.0721750 * b) / LAB_CONSTANTS.Yn);\n z = xyz_lab((0.0193339 * r + 0.1191920 * g + 0.9503041 * b) / LAB_CONSTANTS.Zn);\n return [x, y, z];\n };\n\n chroma.lab = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['lab']), function(){});\n };\n\n _input.lab = lab2rgb;\n\n Color.prototype.lab = function() {\n return rgb2lab(this._rgb);\n };\n\n bezier = function(colors) {\n var I, I0, I1, c, lab0, lab1, lab2, lab3, ref, ref1, ref2;\n colors = (function() {\n var len, o, results;\n results = [];\n for (o = 0, len = colors.length; o < len; o++) {\n c = colors[o];\n results.push(chroma(c));\n }\n return results;\n })();\n if (colors.length === 2) {\n ref = (function() {\n var len, o, results;\n results = [];\n for (o = 0, len = colors.length; o < len; o++) {\n c = colors[o];\n results.push(c.lab());\n }\n return results;\n })(), lab0 = ref[0], lab1 = ref[1];\n I = function(t) {\n var i, lab;\n lab = (function() {\n var o, results;\n results = [];\n for (i = o = 0; o <= 2; i = ++o) {\n results.push(lab0[i] + t * (lab1[i] - lab0[i]));\n }\n return results;\n })();\n return chroma.lab.apply(chroma, lab);\n };\n } else if (colors.length === 3) {\n ref1 = (function() {\n var len, o, results;\n results = [];\n for (o = 0, len = colors.length; o < len; o++) {\n c = colors[o];\n results.push(c.lab());\n }\n return results;\n })(), lab0 = ref1[0], lab1 = ref1[1], lab2 = ref1[2];\n I = function(t) {\n var i, lab;\n lab = (function() {\n var o, results;\n results = [];\n for (i = o = 0; o <= 2; i = ++o) {\n results.push((1 - t) * (1 - t) * lab0[i] + 2 * (1 - t) * t * lab1[i] + t * t * lab2[i]);\n }\n return results;\n })();\n return chroma.lab.apply(chroma, lab);\n };\n } else if (colors.length === 4) {\n ref2 = (function() {\n var len, o, results;\n results = [];\n for (o = 0, len = colors.length; o < len; o++) {\n c = colors[o];\n results.push(c.lab());\n }\n return results;\n })(), lab0 = ref2[0], lab1 = ref2[1], lab2 = ref2[2], lab3 = ref2[3];\n I = function(t) {\n var i, lab;\n lab = (function() {\n var o, results;\n results = [];\n for (i = o = 0; o <= 2; i = ++o) {\n results.push((1 - t) * (1 - t) * (1 - t) * lab0[i] + 3 * (1 - t) * (1 - t) * t * lab1[i] + 3 * (1 - t) * t * t * lab2[i] + t * t * t * lab3[i]);\n }\n return results;\n })();\n return chroma.lab.apply(chroma, lab);\n };\n } else if (colors.length === 5) {\n I0 = bezier(colors.slice(0, 3));\n I1 = bezier(colors.slice(2, 5));\n I = function(t) {\n if (t < 0.5) {\n return I0(t * 2);\n } else {\n return I1((t - 0.5) * 2);\n }\n };\n }\n return I;\n };\n\n chroma.bezier = function(colors) {\n var f;\n f = bezier(colors);\n f.scale = function() {\n return chroma.scale(f);\n };\n return f;\n };\n\n chroma.cubehelix = function(start, rotations, hue, gamma, lightness) {\n var dh, dl, f;\n if (start == null) {\n start = 300;\n }\n if (rotations == null) {\n rotations = -1.5;\n }\n if (hue == null) {\n hue = 1;\n }\n if (gamma == null) {\n gamma = 1;\n }\n if (lightness == null) {\n lightness = [0, 1];\n }\n dh = 0;\n if (type(lightness) === 'array') {\n dl = lightness[1] - lightness[0];\n } else {\n dl = 0;\n lightness = [lightness, lightness];\n }\n f = function(fract) {\n var a, amp, b, cos_a, g, h, l, r, sin_a;\n a = TWOPI * ((start + 120) / 360 + rotations * fract);\n l = pow(lightness[0] + dl * fract, gamma);\n h = dh !== 0 ? hue[0] + fract * dh : hue;\n amp = h * l * (1 - l) / 2;\n cos_a = cos(a);\n sin_a = sin(a);\n r = l + amp * (-0.14861 * cos_a + 1.78277 * sin_a);\n g = l + amp * (-0.29227 * cos_a - 0.90649 * sin_a);\n b = l + amp * (+1.97294 * cos_a);\n return chroma(clip_rgb([r * 255, g * 255, b * 255, 1]));\n };\n f.start = function(s) {\n if (s == null) {\n return start;\n }\n start = s;\n return f;\n };\n f.rotations = function(r) {\n if (r == null) {\n return rotations;\n }\n rotations = r;\n return f;\n };\n f.gamma = function(g) {\n if (g == null) {\n return gamma;\n }\n gamma = g;\n return f;\n };\n f.hue = function(h) {\n if (h == null) {\n return hue;\n }\n hue = h;\n if (type(hue) === 'array') {\n dh = hue[1] - hue[0];\n if (dh === 0) {\n hue = hue[1];\n }\n } else {\n dh = 0;\n }\n return f;\n };\n f.lightness = function(h) {\n if (h == null) {\n return lightness;\n }\n if (type(h) === 'array') {\n lightness = h;\n dl = h[1] - h[0];\n } else {\n lightness = [h, h];\n dl = 0;\n }\n return f;\n };\n f.scale = function() {\n return chroma.scale(f);\n };\n f.hue(hue);\n return f;\n };\n\n chroma.random = function() {\n var code, digits, i, o;\n digits = '0123456789abcdef';\n code = '#';\n for (i = o = 0; o < 6; i = ++o) {\n code += digits.charAt(floor(Math.random() * 16));\n }\n return new Color(code);\n };\n\n _interpolators = [];\n\n interpolate = function(col1, col2, f, m) {\n var interpol, len, o, res;\n if (f == null) {\n f = 0.5;\n }\n if (m == null) {\n m = 'rgb';\n }\n\n /*\n interpolates between colors\n f = 0 --> me\n f = 1 --> col\n */\n if (type(col1) !== 'object') {\n col1 = chroma(col1);\n }\n if (type(col2) !== 'object') {\n col2 = chroma(col2);\n }\n for (o = 0, len = _interpolators.length; o < len; o++) {\n interpol = _interpolators[o];\n if (m === interpol[0]) {\n res = interpol[1](col1, col2, f, m);\n break;\n }\n }\n if (res == null) {\n throw \"color mode \" + m + \" is not supported\";\n }\n return res.alpha(col1.alpha() + f * (col2.alpha() - col1.alpha()));\n };\n\n chroma.interpolate = interpolate;\n\n Color.prototype.interpolate = function(col2, f, m) {\n return interpolate(this, col2, f, m);\n };\n\n chroma.mix = interpolate;\n\n Color.prototype.mix = Color.prototype.interpolate;\n\n _input.rgb = function() {\n var k, ref, results, v;\n ref = unpack(arguments);\n results = [];\n for (k in ref) {\n v = ref[k];\n results.push(v);\n }\n return results;\n };\n\n chroma.rgb = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['rgb']), function(){});\n };\n\n Color.prototype.rgb = function(round) {\n if (round == null) {\n round = true;\n }\n if (round) {\n return this._rgb.map(Math.round).slice(0, 3);\n } else {\n return this._rgb.slice(0, 3);\n }\n };\n\n Color.prototype.rgba = function(round) {\n if (round == null) {\n round = true;\n }\n if (!round) {\n return this._rgb.slice(0);\n }\n return [Math.round(this._rgb[0]), Math.round(this._rgb[1]), Math.round(this._rgb[2]), this._rgb[3]];\n };\n\n _guess_formats.push({\n p: 3,\n test: function(n) {\n var a;\n a = unpack(arguments);\n if (type(a) === 'array' && a.length === 3) {\n return 'rgb';\n }\n if (a.length === 4 && type(a[3]) === \"number\" && a[3] >= 0 && a[3] <= 1) {\n return 'rgb';\n }\n }\n });\n\n _input.lrgb = _input.rgb;\n\n interpolate_lrgb = function(col1, col2, f, m) {\n var xyz0, xyz1;\n xyz0 = col1._rgb;\n xyz1 = col2._rgb;\n return new Color(sqrt(pow(xyz0[0], 2) * (1 - f) + pow(xyz1[0], 2) * f), sqrt(pow(xyz0[1], 2) * (1 - f) + pow(xyz1[1], 2) * f), sqrt(pow(xyz0[2], 2) * (1 - f) + pow(xyz1[2], 2) * f), m);\n };\n\n _average_lrgb = function(colors) {\n var col, f, len, o, rgb, xyz;\n f = 1 / colors.length;\n xyz = [0, 0, 0, 0];\n for (o = 0, len = colors.length; o < len; o++) {\n col = colors[o];\n rgb = col._rgb;\n xyz[0] += pow(rgb[0], 2) * f;\n xyz[1] += pow(rgb[1], 2) * f;\n xyz[2] += pow(rgb[2], 2) * f;\n xyz[3] += rgb[3] * f;\n }\n xyz[0] = sqrt(xyz[0]);\n xyz[1] = sqrt(xyz[1]);\n xyz[2] = sqrt(xyz[2]);\n if (xyz[3] > 1) {\n xyz[3] = 1;\n }\n return new Color(clip_rgb(xyz));\n };\n\n _interpolators.push(['lrgb', interpolate_lrgb]);\n\n chroma.average = function(colors, mode) {\n var A, alpha, c, cnt, dx, dy, first, i, l, len, o, xyz, xyz2;\n if (mode == null) {\n mode = 'rgb';\n }\n l = colors.length;\n colors = colors.map(function(c) {\n return chroma(c);\n });\n first = colors.splice(0, 1)[0];\n if (mode === 'lrgb') {\n return _average_lrgb(colors);\n }\n xyz = first.get(mode);\n cnt = [];\n dx = 0;\n dy = 0;\n for (i in xyz) {\n xyz[i] = xyz[i] || 0;\n cnt.push(isNaN(xyz[i]) ? 0 : 1);\n if (mode.charAt(i) === 'h' && !isNaN(xyz[i])) {\n A = xyz[i] / 180 * PI;\n dx += cos(A);\n dy += sin(A);\n }\n }\n alpha = first.alpha();\n for (o = 0, len = colors.length; o < len; o++) {\n c = colors[o];\n xyz2 = c.get(mode);\n alpha += c.alpha();\n for (i in xyz) {\n if (!isNaN(xyz2[i])) {\n cnt[i] += 1;\n if (mode.charAt(i) === 'h') {\n A = xyz2[i] / 180 * PI;\n dx += cos(A);\n dy += sin(A);\n } else {\n xyz[i] += xyz2[i];\n }\n }\n }\n }\n for (i in xyz) {\n if (mode.charAt(i) === 'h') {\n A = atan2(dy / cnt[i], dx / cnt[i]) / PI * 180;\n while (A < 0) {\n A += 360;\n }\n while (A >= 360) {\n A -= 360;\n }\n xyz[i] = A;\n } else {\n xyz[i] = xyz[i] / cnt[i];\n }\n }\n return chroma(xyz, mode).alpha(alpha / l);\n };\n\n hex2rgb = function(hex) {\n var a, b, g, r, rgb, u;\n if (hex.match(/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/)) {\n if (hex.length === 4 || hex.length === 7) {\n hex = hex.substr(1);\n }\n if (hex.length === 3) {\n hex = hex.split(\"\");\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n }\n u = parseInt(hex, 16);\n r = u >> 16;\n g = u >> 8 & 0xFF;\n b = u & 0xFF;\n return [r, g, b, 1];\n }\n if (hex.match(/^#?([A-Fa-f0-9]{8})$/)) {\n if (hex.length === 9) {\n hex = hex.substr(1);\n }\n u = parseInt(hex, 16);\n r = u >> 24 & 0xFF;\n g = u >> 16 & 0xFF;\n b = u >> 8 & 0xFF;\n a = round((u & 0xFF) / 0xFF * 100) / 100;\n return [r, g, b, a];\n }\n if ((_input.css != null) && (rgb = _input.css(hex))) {\n return rgb;\n }\n throw \"unknown color: \" + hex;\n };\n\n rgb2hex = function(channels, mode) {\n var a, b, g, hxa, r, str, u;\n if (mode == null) {\n mode = 'auto';\n }\n r = channels[0], g = channels[1], b = channels[2], a = channels[3];\n if (mode === 'auto') {\n mode = a < 1 ? 'rgba' : 'rgb';\n }\n r = Math.round(r);\n g = Math.round(g);\n b = Math.round(b);\n u = r << 16 | g << 8 | b;\n str = \"000000\" + u.toString(16);\n str = str.substr(str.length - 6);\n hxa = '0' + round(a * 255).toString(16);\n hxa = hxa.substr(hxa.length - 2);\n return \"#\" + (function() {\n switch (mode.toLowerCase()) {\n case 'rgba':\n return str + hxa;\n case 'argb':\n return hxa + str;\n default:\n return str;\n }\n })();\n };\n\n _input.hex = function(h) {\n return hex2rgb(h);\n };\n\n chroma.hex = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['hex']), function(){});\n };\n\n Color.prototype.hex = function(mode) {\n if (mode == null) {\n mode = 'auto';\n }\n return rgb2hex(this._rgb, mode);\n };\n\n _guess_formats.push({\n p: 4,\n test: function(n) {\n if (arguments.length === 1 && type(n) === \"string\") {\n return 'hex';\n }\n }\n });\n\n hsl2rgb = function() {\n var args, b, c, g, h, i, l, o, r, ref, s, t1, t2, t3;\n args = unpack(arguments);\n h = args[0], s = args[1], l = args[2];\n if (s === 0) {\n r = g = b = l * 255;\n } else {\n t3 = [0, 0, 0];\n c = [0, 0, 0];\n t2 = l < 0.5 ? l * (1 + s) : l + s - l * s;\n t1 = 2 * l - t2;\n h /= 360;\n t3[0] = h + 1 / 3;\n t3[1] = h;\n t3[2] = h - 1 / 3;\n for (i = o = 0; o <= 2; i = ++o) {\n if (t3[i] < 0) {\n t3[i] += 1;\n }\n if (t3[i] > 1) {\n t3[i] -= 1;\n }\n if (6 * t3[i] < 1) {\n c[i] = t1 + (t2 - t1) * 6 * t3[i];\n } else if (2 * t3[i] < 1) {\n c[i] = t2;\n } else if (3 * t3[i] < 2) {\n c[i] = t1 + (t2 - t1) * ((2 / 3) - t3[i]) * 6;\n } else {\n c[i] = t1;\n }\n }\n ref = [round(c[0] * 255), round(c[1] * 255), round(c[2] * 255)], r = ref[0], g = ref[1], b = ref[2];\n }\n if (args.length > 3) {\n return [r, g, b, args[3]];\n } else {\n return [r, g, b];\n }\n };\n\n rgb2hsl = function(r, g, b) {\n var h, l, min, ref, s;\n if (r !== void 0 && r.length >= 3) {\n ref = r, r = ref[0], g = ref[1], b = ref[2];\n }\n r /= 255;\n g /= 255;\n b /= 255;\n min = Math.min(r, g, b);\n max = Math.max(r, g, b);\n l = (max + min) / 2;\n if (max === min) {\n s = 0;\n h = Number.NaN;\n } else {\n s = l < 0.5 ? (max - min) / (max + min) : (max - min) / (2 - max - min);\n }\n if (r === max) {\n h = (g - b) / (max - min);\n } else if (g === max) {\n h = 2 + (b - r) / (max - min);\n } else if (b === max) {\n h = 4 + (r - g) / (max - min);\n }\n h *= 60;\n if (h < 0) {\n h += 360;\n }\n return [h, s, l];\n };\n\n chroma.hsl = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['hsl']), function(){});\n };\n\n _input.hsl = hsl2rgb;\n\n Color.prototype.hsl = function() {\n return rgb2hsl(this._rgb);\n };\n\n hsv2rgb = function() {\n var args, b, f, g, h, i, p, q, r, ref, ref1, ref2, ref3, ref4, ref5, s, t, v;\n args = unpack(arguments);\n h = args[0], s = args[1], v = args[2];\n v *= 255;\n if (s === 0) {\n r = g = b = v;\n } else {\n if (h === 360) {\n h = 0;\n }\n if (h > 360) {\n h -= 360;\n }\n if (h < 0) {\n h += 360;\n }\n h /= 60;\n i = floor(h);\n f = h - i;\n p = v * (1 - s);\n q = v * (1 - s * f);\n t = v * (1 - s * (1 - f));\n switch (i) {\n case 0:\n ref = [v, t, p], r = ref[0], g = ref[1], b = ref[2];\n break;\n case 1:\n ref1 = [q, v, p], r = ref1[0], g = ref1[1], b = ref1[2];\n break;\n case 2:\n ref2 = [p, v, t], r = ref2[0], g = ref2[1], b = ref2[2];\n break;\n case 3:\n ref3 = [p, q, v], r = ref3[0], g = ref3[1], b = ref3[2];\n break;\n case 4:\n ref4 = [t, p, v], r = ref4[0], g = ref4[1], b = ref4[2];\n break;\n case 5:\n ref5 = [v, p, q], r = ref5[0], g = ref5[1], b = ref5[2];\n }\n }\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n rgb2hsv = function() {\n var b, delta, g, h, min, r, ref, s, v;\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n min = Math.min(r, g, b);\n max = Math.max(r, g, b);\n delta = max - min;\n v = max / 255.0;\n if (max === 0) {\n h = Number.NaN;\n s = 0;\n } else {\n s = delta / max;\n if (r === max) {\n h = (g - b) / delta;\n }\n if (g === max) {\n h = 2 + (b - r) / delta;\n }\n if (b === max) {\n h = 4 + (r - g) / delta;\n }\n h *= 60;\n if (h < 0) {\n h += 360;\n }\n }\n return [h, s, v];\n };\n\n chroma.hsv = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['hsv']), function(){});\n };\n\n _input.hsv = hsv2rgb;\n\n Color.prototype.hsv = function() {\n return rgb2hsv(this._rgb);\n };\n\n num2rgb = function(num) {\n var b, g, r;\n if (type(num) === \"number\" && num >= 0 && num <= 0xFFFFFF) {\n r = num >> 16;\n g = (num >> 8) & 0xFF;\n b = num & 0xFF;\n return [r, g, b, 1];\n }\n console.warn(\"unknown num color: \" + num);\n return [0, 0, 0, 1];\n };\n\n rgb2num = function() {\n var b, g, r, ref;\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n return (r << 16) + (g << 8) + b;\n };\n\n chroma.num = function(num) {\n return new Color(num, 'num');\n };\n\n Color.prototype.num = function(mode) {\n if (mode == null) {\n mode = 'rgb';\n }\n return rgb2num(this._rgb, mode);\n };\n\n _input.num = num2rgb;\n\n _guess_formats.push({\n p: 1,\n test: function(n) {\n if (arguments.length === 1 && type(n) === \"number\" && n >= 0 && n <= 0xFFFFFF) {\n return 'num';\n }\n }\n });\n\n hcg2rgb = function() {\n var _c, _g, args, b, c, f, g, h, i, p, q, r, ref, ref1, ref2, ref3, ref4, ref5, t, v;\n args = unpack(arguments);\n h = args[0], c = args[1], _g = args[2];\n c = c / 100;\n g = g / 100 * 255;\n _c = c * 255;\n if (c === 0) {\n r = g = b = _g;\n } else {\n if (h === 360) {\n h = 0;\n }\n if (h > 360) {\n h -= 360;\n }\n if (h < 0) {\n h += 360;\n }\n h /= 60;\n i = floor(h);\n f = h - i;\n p = _g * (1 - c);\n q = p + _c * (1 - f);\n t = p + _c * f;\n v = p + _c;\n switch (i) {\n case 0:\n ref = [v, t, p], r = ref[0], g = ref[1], b = ref[2];\n break;\n case 1:\n ref1 = [q, v, p], r = ref1[0], g = ref1[1], b = ref1[2];\n break;\n case 2:\n ref2 = [p, v, t], r = ref2[0], g = ref2[1], b = ref2[2];\n break;\n case 3:\n ref3 = [p, q, v], r = ref3[0], g = ref3[1], b = ref3[2];\n break;\n case 4:\n ref4 = [t, p, v], r = ref4[0], g = ref4[1], b = ref4[2];\n break;\n case 5:\n ref5 = [v, p, q], r = ref5[0], g = ref5[1], b = ref5[2];\n }\n }\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n rgb2hcg = function() {\n var _g, b, c, delta, g, h, min, r, ref;\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n min = Math.min(r, g, b);\n max = Math.max(r, g, b);\n delta = max - min;\n c = delta * 100 / 255;\n _g = min / (255 - delta) * 100;\n if (delta === 0) {\n h = Number.NaN;\n } else {\n if (r === max) {\n h = (g - b) / delta;\n }\n if (g === max) {\n h = 2 + (b - r) / delta;\n }\n if (b === max) {\n h = 4 + (r - g) / delta;\n }\n h *= 60;\n if (h < 0) {\n h += 360;\n }\n }\n return [h, c, _g];\n };\n\n chroma.hcg = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['hcg']), function(){});\n };\n\n _input.hcg = hcg2rgb;\n\n Color.prototype.hcg = function() {\n return rgb2hcg(this._rgb);\n };\n\n css2rgb = function(css) {\n var aa, ab, hsl, i, m, o, rgb, w;\n css = css.toLowerCase();\n if ((chroma.colors != null) && chroma.colors[css]) {\n return hex2rgb(chroma.colors[css]);\n }\n if (m = css.match(/rgb\\(\\s*(\\-?\\d+),\\s*(\\-?\\d+)\\s*,\\s*(\\-?\\d+)\\s*\\)/)) {\n rgb = m.slice(1, 4);\n for (i = o = 0; o <= 2; i = ++o) {\n rgb[i] = +rgb[i];\n }\n rgb[3] = 1;\n } else if (m = css.match(/rgba\\(\\s*(\\-?\\d+),\\s*(\\-?\\d+)\\s*,\\s*(\\-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)/)) {\n rgb = m.slice(1, 5);\n for (i = w = 0; w <= 3; i = ++w) {\n rgb[i] = +rgb[i];\n }\n } else if (m = css.match(/rgb\\(\\s*(\\-?\\d+(?:\\.\\d+)?)%,\\s*(\\-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(\\-?\\d+(?:\\.\\d+)?)%\\s*\\)/)) {\n rgb = m.slice(1, 4);\n for (i = aa = 0; aa <= 2; i = ++aa) {\n rgb[i] = round(rgb[i] * 2.55);\n }\n rgb[3] = 1;\n } else if (m = css.match(/rgba\\(\\s*(\\-?\\d+(?:\\.\\d+)?)%,\\s*(\\-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(\\-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)/)) {\n rgb = m.slice(1, 5);\n for (i = ab = 0; ab <= 2; i = ++ab) {\n rgb[i] = round(rgb[i] * 2.55);\n }\n rgb[3] = +rgb[3];\n } else if (m = css.match(/hsl\\(\\s*(\\-?\\d+(?:\\.\\d+)?),\\s*(\\-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(\\-?\\d+(?:\\.\\d+)?)%\\s*\\)/)) {\n hsl = m.slice(1, 4);\n hsl[1] *= 0.01;\n hsl[2] *= 0.01;\n rgb = hsl2rgb(hsl);\n rgb[3] = 1;\n } else if (m = css.match(/hsla\\(\\s*(\\-?\\d+(?:\\.\\d+)?),\\s*(\\-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(\\-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)/)) {\n hsl = m.slice(1, 4);\n hsl[1] *= 0.01;\n hsl[2] *= 0.01;\n rgb = hsl2rgb(hsl);\n rgb[3] = +m[4];\n }\n return rgb;\n };\n\n rgb2css = function(rgba) {\n var mode;\n mode = rgba[3] < 1 ? 'rgba' : 'rgb';\n if (mode === 'rgb') {\n return mode + '(' + rgba.slice(0, 3).map(round).join(',') + ')';\n } else if (mode === 'rgba') {\n return mode + '(' + rgba.slice(0, 3).map(round).join(',') + ',' + rgba[3] + ')';\n } else {\n\n }\n };\n\n rnd = function(a) {\n return round(a * 100) / 100;\n };\n\n hsl2css = function(hsl, alpha) {\n var mode;\n mode = alpha < 1 ? 'hsla' : 'hsl';\n hsl[0] = rnd(hsl[0] || 0);\n hsl[1] = rnd(hsl[1] * 100) + '%';\n hsl[2] = rnd(hsl[2] * 100) + '%';\n if (mode === 'hsla') {\n hsl[3] = alpha;\n }\n return mode + '(' + hsl.join(',') + ')';\n };\n\n _input.css = function(h) {\n return css2rgb(h);\n };\n\n chroma.css = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['css']), function(){});\n };\n\n Color.prototype.css = function(mode) {\n if (mode == null) {\n mode = 'rgb';\n }\n if (mode.slice(0, 3) === 'rgb') {\n return rgb2css(this._rgb);\n } else if (mode.slice(0, 3) === 'hsl') {\n return hsl2css(this.hsl(), this.alpha());\n }\n };\n\n _input.named = function(name) {\n return hex2rgb(w3cx11[name]);\n };\n\n _guess_formats.push({\n p: 5,\n test: function(n) {\n if (arguments.length === 1 && (w3cx11[n] != null)) {\n return 'named';\n }\n }\n });\n\n Color.prototype.name = function(n) {\n var h, k;\n if (arguments.length) {\n if (w3cx11[n]) {\n this._rgb = hex2rgb(w3cx11[n]);\n }\n this._rgb[3] = 1;\n this;\n }\n h = this.hex('rgb');\n for (k in w3cx11) {\n if (h === w3cx11[k]) {\n return k;\n }\n }\n return h;\n };\n\n lch2lab = function() {\n\n /*\n Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel.\n These formulas were invented by David Dalrymple to obtain maximum contrast without going\n out of gamut if the parameters are in the range 0-1.\n \n A saturation multiplier was added by Gregor Aisch\n */\n var c, h, l, ref;\n ref = unpack(arguments), l = ref[0], c = ref[1], h = ref[2];\n h = h * DEG2RAD;\n return [l, cos(h) * c, sin(h) * c];\n };\n\n lch2rgb = function() {\n var L, a, args, b, c, g, h, l, r, ref, ref1;\n args = unpack(arguments);\n l = args[0], c = args[1], h = args[2];\n ref = lch2lab(l, c, h), L = ref[0], a = ref[1], b = ref[2];\n ref1 = lab2rgb(L, a, b), r = ref1[0], g = ref1[1], b = ref1[2];\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n lab2lch = function() {\n var a, b, c, h, l, ref;\n ref = unpack(arguments), l = ref[0], a = ref[1], b = ref[2];\n c = sqrt(a * a + b * b);\n h = (atan2(b, a) * RAD2DEG + 360) % 360;\n if (round(c * 10000) === 0) {\n h = Number.NaN;\n }\n return [l, c, h];\n };\n\n rgb2lch = function() {\n var a, b, g, l, r, ref, ref1;\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n ref1 = rgb2lab(r, g, b), l = ref1[0], a = ref1[1], b = ref1[2];\n return lab2lch(l, a, b);\n };\n\n chroma.lch = function() {\n var args;\n args = unpack(arguments);\n return new Color(args, 'lch');\n };\n\n chroma.hcl = function() {\n var args;\n args = unpack(arguments);\n return new Color(args, 'hcl');\n };\n\n _input.lch = lch2rgb;\n\n _input.hcl = function() {\n var c, h, l, ref;\n ref = unpack(arguments), h = ref[0], c = ref[1], l = ref[2];\n return lch2rgb([l, c, h]);\n };\n\n Color.prototype.lch = function() {\n return rgb2lch(this._rgb);\n };\n\n Color.prototype.hcl = function() {\n return rgb2lch(this._rgb).reverse();\n };\n\n rgb2cmyk = function(mode) {\n var b, c, f, g, k, m, r, ref, y;\n if (mode == null) {\n mode = 'rgb';\n }\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n r = r / 255;\n g = g / 255;\n b = b / 255;\n k = 1 - Math.max(r, Math.max(g, b));\n f = k < 1 ? 1 / (1 - k) : 0;\n c = (1 - r - k) * f;\n m = (1 - g - k) * f;\n y = (1 - b - k) * f;\n return [c, m, y, k];\n };\n\n cmyk2rgb = function() {\n var alpha, args, b, c, g, k, m, r, y;\n args = unpack(arguments);\n c = args[0], m = args[1], y = args[2], k = args[3];\n alpha = args.length > 4 ? args[4] : 1;\n if (k === 1) {\n return [0, 0, 0, alpha];\n }\n r = c >= 1 ? 0 : 255 * (1 - c) * (1 - k);\n g = m >= 1 ? 0 : 255 * (1 - m) * (1 - k);\n b = y >= 1 ? 0 : 255 * (1 - y) * (1 - k);\n return [r, g, b, alpha];\n };\n\n _input.cmyk = function() {\n return cmyk2rgb(unpack(arguments));\n };\n\n chroma.cmyk = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['cmyk']), function(){});\n };\n\n Color.prototype.cmyk = function() {\n return rgb2cmyk(this._rgb);\n };\n\n _input.gl = function() {\n var i, k, o, rgb, v;\n rgb = (function() {\n var ref, results;\n ref = unpack(arguments);\n results = [];\n for (k in ref) {\n v = ref[k];\n results.push(v);\n }\n return results;\n }).apply(this, arguments);\n for (i = o = 0; o <= 2; i = ++o) {\n rgb[i] *= 255;\n }\n return rgb;\n };\n\n chroma.gl = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['gl']), function(){});\n };\n\n Color.prototype.gl = function() {\n var rgb;\n rgb = this._rgb;\n return [rgb[0] / 255, rgb[1] / 255, rgb[2] / 255, rgb[3]];\n };\n\n rgb2luminance = function(r, g, b) {\n var ref;\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n r = luminance_x(r);\n g = luminance_x(g);\n b = luminance_x(b);\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n };\n\n luminance_x = function(x) {\n x /= 255;\n if (x <= 0.03928) {\n return x / 12.92;\n } else {\n return pow((x + 0.055) / 1.055, 2.4);\n }\n };\n\n interpolate_rgb = function(col1, col2, f, m) {\n var xyz0, xyz1;\n xyz0 = col1._rgb;\n xyz1 = col2._rgb;\n return new Color(xyz0[0] + f * (xyz1[0] - xyz0[0]), xyz0[1] + f * (xyz1[1] - xyz0[1]), xyz0[2] + f * (xyz1[2] - xyz0[2]), m);\n };\n\n _interpolators.push(['rgb', interpolate_rgb]);\n\n Color.prototype.luminance = function(lum, mode) {\n var cur_lum, eps, max_iter, rgba, test;\n if (mode == null) {\n mode = 'rgb';\n }\n if (!arguments.length) {\n return rgb2luminance(this._rgb);\n }\n rgba = this._rgb;\n if (lum === 0) {\n rgba = [0, 0, 0, this._rgb[3]];\n } else if (lum === 1) {\n rgba = [255, 255, 255, this[3]];\n } else {\n cur_lum = rgb2luminance(this._rgb);\n eps = 1e-7;\n max_iter = 20;\n test = function(l, h) {\n var lm, m;\n m = l.interpolate(h, 0.5, mode);\n lm = m.luminance();\n if (Math.abs(lum - lm) < eps || !max_iter--) {\n return m;\n }\n if (lm > lum) {\n return test(l, m);\n }\n return test(m, h);\n };\n if (cur_lum > lum) {\n rgba = test(chroma('black'), this).rgba();\n } else {\n rgba = test(this, chroma('white')).rgba();\n }\n }\n return chroma(rgba).alpha(this.alpha());\n };\n\n temperature2rgb = function(kelvin) {\n var b, g, r, temp;\n temp = kelvin / 100;\n if (temp < 66) {\n r = 255;\n g = -155.25485562709179 - 0.44596950469579133 * (g = temp - 2) + 104.49216199393888 * log(g);\n b = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b = temp - 10) + 115.67994401066147 * log(b);\n } else {\n r = 351.97690566805693 + 0.114206453784165 * (r = temp - 55) - 40.25366309332127 * log(r);\n g = 325.4494125711974 + 0.07943456536662342 * (g = temp - 50) - 28.0852963507957 * log(g);\n b = 255;\n }\n return [r, g, b];\n };\n\n rgb2temperature = function() {\n var b, eps, g, maxTemp, minTemp, r, ref, rgb, temp;\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n minTemp = 1000;\n maxTemp = 40000;\n eps = 0.4;\n while (maxTemp - minTemp > eps) {\n temp = (maxTemp + minTemp) * 0.5;\n rgb = temperature2rgb(temp);\n if ((rgb[2] / rgb[0]) >= (b / r)) {\n maxTemp = temp;\n } else {\n minTemp = temp;\n }\n }\n return round(temp);\n };\n\n chroma.temperature = chroma.kelvin = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['temperature']), function(){});\n };\n\n _input.temperature = _input.kelvin = _input.K = temperature2rgb;\n\n Color.prototype.temperature = function() {\n return rgb2temperature(this._rgb);\n };\n\n Color.prototype.kelvin = Color.prototype.temperature;\n\n chroma.contrast = function(a, b) {\n var l1, l2, ref, ref1;\n if ((ref = type(a)) === 'string' || ref === 'number') {\n a = new Color(a);\n }\n if ((ref1 = type(b)) === 'string' || ref1 === 'number') {\n b = new Color(b);\n }\n l1 = a.luminance();\n l2 = b.luminance();\n if (l1 > l2) {\n return (l1 + 0.05) / (l2 + 0.05);\n } else {\n return (l2 + 0.05) / (l1 + 0.05);\n }\n };\n\n chroma.distance = function(a, b, mode) {\n var d, i, l1, l2, ref, ref1, sum_sq;\n if (mode == null) {\n mode = 'lab';\n }\n if ((ref = type(a)) === 'string' || ref === 'number') {\n a = new Color(a);\n }\n if ((ref1 = type(b)) === 'string' || ref1 === 'number') {\n b = new Color(b);\n }\n l1 = a.get(mode);\n l2 = b.get(mode);\n sum_sq = 0;\n for (i in l1) {\n d = (l1[i] || 0) - (l2[i] || 0);\n sum_sq += d * d;\n }\n return Math.sqrt(sum_sq);\n };\n\n chroma.deltaE = function(a, b, L, C) {\n var L1, L2, a1, a2, b1, b2, c1, c2, c4, dH2, delA, delB, delC, delL, f, h1, ref, ref1, ref2, ref3, sc, sh, sl, t, v1, v2, v3;\n if (L == null) {\n L = 1;\n }\n if (C == null) {\n C = 1;\n }\n if ((ref = type(a)) === 'string' || ref === 'number') {\n a = new Color(a);\n }\n if ((ref1 = type(b)) === 'string' || ref1 === 'number') {\n b = new Color(b);\n }\n ref2 = a.lab(), L1 = ref2[0], a1 = ref2[1], b1 = ref2[2];\n ref3 = b.lab(), L2 = ref3[0], a2 = ref3[1], b2 = ref3[2];\n c1 = sqrt(a1 * a1 + b1 * b1);\n c2 = sqrt(a2 * a2 + b2 * b2);\n sl = L1 < 16.0 ? 0.511 : (0.040975 * L1) / (1.0 + 0.01765 * L1);\n sc = (0.0638 * c1) / (1.0 + 0.0131 * c1) + 0.638;\n h1 = c1 < 0.000001 ? 0.0 : (atan2(b1, a1) * 180.0) / PI;\n while (h1 < 0) {\n h1 += 360;\n }\n while (h1 >= 360) {\n h1 -= 360;\n }\n t = (h1 >= 164.0) && (h1 <= 345.0) ? 0.56 + abs(0.2 * cos((PI * (h1 + 168.0)) / 180.0)) : 0.36 + abs(0.4 * cos((PI * (h1 + 35.0)) / 180.0));\n c4 = c1 * c1 * c1 * c1;\n f = sqrt(c4 / (c4 + 1900.0));\n sh = sc * (f * t + 1.0 - f);\n delL = L1 - L2;\n delC = c1 - c2;\n delA = a1 - a2;\n delB = b1 - b2;\n dH2 = delA * delA + delB * delB - delC * delC;\n v1 = delL / (L * sl);\n v2 = delC / (C * sc);\n v3 = sh;\n return sqrt(v1 * v1 + v2 * v2 + (dH2 / (v3 * v3)));\n };\n\n Color.prototype.get = function(modechan) {\n var channel, i, me, mode, ref, src;\n me = this;\n ref = modechan.split('.'), mode = ref[0], channel = ref[1];\n src = me[mode]();\n if (channel) {\n i = mode.indexOf(channel);\n if (i > -1) {\n return src[i];\n } else {\n return console.warn('unknown channel ' + channel + ' in mode ' + mode);\n }\n } else {\n return src;\n }\n };\n\n Color.prototype.set = function(modechan, value) {\n var channel, i, me, mode, ref, src;\n me = this;\n ref = modechan.split('.'), mode = ref[0], channel = ref[1];\n if (channel) {\n src = me[mode]();\n i = mode.indexOf(channel);\n if (i > -1) {\n if (type(value) === 'string') {\n switch (value.charAt(0)) {\n case '+':\n src[i] += +value;\n break;\n case '-':\n src[i] += +value;\n break;\n case '*':\n src[i] *= +(value.substr(1));\n break;\n case '/':\n src[i] /= +(value.substr(1));\n break;\n default:\n src[i] = +value;\n }\n } else {\n src[i] = value;\n }\n } else {\n console.warn('unknown channel ' + channel + ' in mode ' + mode);\n }\n } else {\n src = value;\n }\n return chroma(src, mode).alpha(me.alpha());\n };\n\n Color.prototype.clipped = function() {\n return this._rgb._clipped || false;\n };\n\n Color.prototype.alpha = function(a) {\n if (arguments.length) {\n return chroma.rgb([this._rgb[0], this._rgb[1], this._rgb[2], a]);\n }\n return this._rgb[3];\n };\n\n Color.prototype.darken = function(amount) {\n var lab, me;\n if (amount == null) {\n amount = 1;\n }\n me = this;\n lab = me.lab();\n lab[0] -= LAB_CONSTANTS.Kn * amount;\n return chroma.lab(lab).alpha(me.alpha());\n };\n\n Color.prototype.brighten = function(amount) {\n if (amount == null) {\n amount = 1;\n }\n return this.darken(-amount);\n };\n\n Color.prototype.darker = Color.prototype.darken;\n\n Color.prototype.brighter = Color.prototype.brighten;\n\n Color.prototype.saturate = function(amount) {\n var lch, me;\n if (amount == null) {\n amount = 1;\n }\n me = this;\n lch = me.lch();\n lch[1] += amount * LAB_CONSTANTS.Kn;\n if (lch[1] < 0) {\n lch[1] = 0;\n }\n return chroma.lch(lch).alpha(me.alpha());\n };\n\n Color.prototype.desaturate = function(amount) {\n if (amount == null) {\n amount = 1;\n }\n return this.saturate(-amount);\n };\n\n Color.prototype.premultiply = function() {\n var a, rgb;\n rgb = this.rgb();\n a = this.alpha();\n return chroma(rgb[0] * a, rgb[1] * a, rgb[2] * a, a);\n };\n\n blend = function(bottom, top, mode) {\n if (!blend[mode]) {\n throw 'unknown blend mode ' + mode;\n }\n return blend[mode](bottom, top);\n };\n\n blend_f = function(f) {\n return function(bottom, top) {\n var c0, c1;\n c0 = chroma(top).rgb();\n c1 = chroma(bottom).rgb();\n return chroma(f(c0, c1), 'rgb');\n };\n };\n\n each = function(f) {\n return function(c0, c1) {\n var i, o, out;\n out = [];\n for (i = o = 0; o <= 3; i = ++o) {\n out[i] = f(c0[i], c1[i]);\n }\n return out;\n };\n };\n\n normal = function(a, b) {\n return a;\n };\n\n multiply = function(a, b) {\n return a * b / 255;\n };\n\n darken = function(a, b) {\n if (a > b) {\n return b;\n } else {\n return a;\n }\n };\n\n lighten = function(a, b) {\n if (a > b) {\n return a;\n } else {\n return b;\n }\n };\n\n screen = function(a, b) {\n return 255 * (1 - (1 - a / 255) * (1 - b / 255));\n };\n\n overlay = function(a, b) {\n if (b < 128) {\n return 2 * a * b / 255;\n } else {\n return 255 * (1 - 2 * (1 - a / 255) * (1 - b / 255));\n }\n };\n\n burn = function(a, b) {\n return 255 * (1 - (1 - b / 255) / (a / 255));\n };\n\n dodge = function(a, b) {\n if (a === 255) {\n return 255;\n }\n a = 255 * (b / 255) / (1 - a / 255);\n if (a > 255) {\n return 255;\n } else {\n return a;\n }\n };\n\n blend.normal = blend_f(each(normal));\n\n blend.multiply = blend_f(each(multiply));\n\n blend.screen = blend_f(each(screen));\n\n blend.overlay = blend_f(each(overlay));\n\n blend.darken = blend_f(each(darken));\n\n blend.lighten = blend_f(each(lighten));\n\n blend.dodge = blend_f(each(dodge));\n\n blend.burn = blend_f(each(burn));\n\n chroma.blend = blend;\n\n chroma.analyze = function(data) {\n var len, o, r, val;\n r = {\n min: Number.MAX_VALUE,\n max: Number.MAX_VALUE * -1,\n sum: 0,\n values: [],\n count: 0\n };\n for (o = 0, len = data.length; o < len; o++) {\n val = data[o];\n if ((val != null) && !isNaN(val)) {\n r.values.push(val);\n r.sum += val;\n if (val < r.min) {\n r.min = val;\n }\n if (val > r.max) {\n r.max = val;\n }\n r.count += 1;\n }\n }\n r.domain = [r.min, r.max];\n r.limits = function(mode, num) {\n return chroma.limits(r, mode, num);\n };\n return r;\n };\n\n chroma.scale = function(colors, positions) {\n var _classes, _colorCache, _colors, _correctLightness, _domain, _fixed, _gamma, _max, _min, _mode, _nacol, _out, _padding, _pos, _spread, _useCache, classifyValue, f, getClass, getColor, resetCache, setColors, tmap;\n _mode = 'rgb';\n _nacol = chroma('#ccc');\n _spread = 0;\n _fixed = false;\n _domain = [0, 1];\n _pos = [];\n _padding = [0, 0];\n _classes = false;\n _colors = [];\n _out = false;\n _min = 0;\n _max = 1;\n _correctLightness = false;\n _colorCache = {};\n _useCache = true;\n _gamma = 1;\n setColors = function(colors) {\n var c, col, o, ref, ref1, w;\n if (colors == null) {\n colors = ['#fff', '#000'];\n }\n if ((colors != null) && type(colors) === 'string' && (chroma.brewer != null)) {\n colors = chroma.brewer[colors] || chroma.brewer[colors.toLowerCase()] || colors;\n }\n if (type(colors) === 'array') {\n if (colors.length === 1) {\n colors = [colors[0], colors[0]];\n }\n colors = colors.slice(0);\n for (c = o = 0, ref = colors.length - 1; 0 <= ref ? o <= ref : o >= ref; c = 0 <= ref ? ++o : --o) {\n col = colors[c];\n if (type(col) === \"string\") {\n colors[c] = chroma(col);\n }\n }\n _pos.length = 0;\n for (c = w = 0, ref1 = colors.length - 1; 0 <= ref1 ? w <= ref1 : w >= ref1; c = 0 <= ref1 ? ++w : --w) {\n _pos.push(c / (colors.length - 1));\n }\n }\n resetCache();\n return _colors = colors;\n };\n getClass = function(value) {\n var i, n;\n if (_classes != null) {\n n = _classes.length - 1;\n i = 0;\n while (i < n && value >= _classes[i]) {\n i++;\n }\n return i - 1;\n }\n return 0;\n };\n tmap = function(t) {\n return t;\n };\n classifyValue = function(value) {\n var i, maxc, minc, n, val;\n val = value;\n if (_classes.length > 2) {\n n = _classes.length - 1;\n i = getClass(value);\n minc = _classes[0] + (_classes[1] - _classes[0]) * (0 + _spread * 0.5);\n maxc = _classes[n - 1] + (_classes[n] - _classes[n - 1]) * (1 - _spread * 0.5);\n val = _min + ((_classes[i] + (_classes[i + 1] - _classes[i]) * 0.5 - minc) / (maxc - minc)) * (_max - _min);\n }\n return val;\n };\n getColor = function(val, bypassMap) {\n var c, col, i, k, o, p, ref, t;\n if (bypassMap == null) {\n bypassMap = false;\n }\n if (isNaN(val) || val === null) {\n return _nacol;\n }\n if (!bypassMap) {\n if (_classes && _classes.length > 2) {\n c = getClass(val);\n t = c / (_classes.length - 2);\n } else if (_max !== _min) {\n t = (val - _min) / (_max - _min);\n } else {\n t = 1;\n }\n } else {\n t = val;\n }\n if (!bypassMap) {\n t = tmap(t);\n }\n if (_gamma !== 1) {\n t = pow(t, _gamma);\n }\n t = _padding[0] + (t * (1 - _padding[0] - _padding[1]));\n t = Math.min(1, Math.max(0, t));\n k = Math.floor(t * 10000);\n if (_useCache && _colorCache[k]) {\n col = _colorCache[k];\n } else {\n if (type(_colors) === 'array') {\n for (i = o = 0, ref = _pos.length - 1; 0 <= ref ? o <= ref : o >= ref; i = 0 <= ref ? ++o : --o) {\n p = _pos[i];\n if (t <= p) {\n col = _colors[i];\n break;\n }\n if (t >= p && i === _pos.length - 1) {\n col = _colors[i];\n break;\n }\n if (t > p && t < _pos[i + 1]) {\n t = (t - p) / (_pos[i + 1] - p);\n col = chroma.interpolate(_colors[i], _colors[i + 1], t, _mode);\n break;\n }\n }\n } else if (type(_colors) === 'function') {\n col = _colors(t);\n }\n if (_useCache) {\n _colorCache[k] = col;\n }\n }\n return col;\n };\n resetCache = function() {\n return _colorCache = {};\n };\n setColors(colors);\n f = function(v) {\n var c;\n c = chroma(getColor(v));\n if (_out && c[_out]) {\n return c[_out]();\n } else {\n return c;\n }\n };\n f.classes = function(classes) {\n var d;\n if (classes != null) {\n if (type(classes) === 'array') {\n _classes = classes;\n _domain = [classes[0], classes[classes.length - 1]];\n } else {\n d = chroma.analyze(_domain);\n if (classes === 0) {\n _classes = [d.min, d.max];\n } else {\n _classes = chroma.limits(d, 'e', classes);\n }\n }\n return f;\n }\n return _classes;\n };\n f.domain = function(domain) {\n var c, d, k, len, o, ref, w;\n if (!arguments.length) {\n return _domain;\n }\n _min = domain[0];\n _max = domain[domain.length - 1];\n _pos = [];\n k = _colors.length;\n if (domain.length === k && _min !== _max) {\n for (o = 0, len = domain.length; o < len; o++) {\n d = domain[o];\n _pos.push((d - _min) / (_max - _min));\n }\n } else {\n for (c = w = 0, ref = k - 1; 0 <= ref ? w <= ref : w >= ref; c = 0 <= ref ? ++w : --w) {\n _pos.push(c / (k - 1));\n }\n }\n _domain = [_min, _max];\n return f;\n };\n f.mode = function(_m) {\n if (!arguments.length) {\n return _mode;\n }\n _mode = _m;\n resetCache();\n return f;\n };\n f.range = function(colors, _pos) {\n setColors(colors, _pos);\n return f;\n };\n f.out = function(_o) {\n _out = _o;\n return f;\n };\n f.spread = function(val) {\n if (!arguments.length) {\n return _spread;\n }\n _spread = val;\n return f;\n };\n f.correctLightness = function(v) {\n if (v == null) {\n v = true;\n }\n _correctLightness = v;\n resetCache();\n if (_correctLightness) {\n tmap = function(t) {\n var L0, L1, L_actual, L_diff, L_ideal, max_iter, pol, t0, t1;\n L0 = getColor(0, true).lab()[0];\n L1 = getColor(1, true).lab()[0];\n pol = L0 > L1;\n L_actual = getColor(t, true).lab()[0];\n L_ideal = L0 + (L1 - L0) * t;\n L_diff = L_actual - L_ideal;\n t0 = 0;\n t1 = 1;\n max_iter = 20;\n while (Math.abs(L_diff) > 1e-2 && max_iter-- > 0) {\n (function() {\n if (pol) {\n L_diff *= -1;\n }\n if (L_diff < 0) {\n t0 = t;\n t += (t1 - t) * 0.5;\n } else {\n t1 = t;\n t += (t0 - t) * 0.5;\n }\n L_actual = getColor(t, true).lab()[0];\n return L_diff = L_actual - L_ideal;\n })();\n }\n return t;\n };\n } else {\n tmap = function(t) {\n return t;\n };\n }\n return f;\n };\n f.padding = function(p) {\n if (p != null) {\n if (type(p) === 'number') {\n p = [p, p];\n }\n _padding = p;\n return f;\n } else {\n return _padding;\n }\n };\n f.colors = function(numColors, out) {\n var dd, dm, i, o, ref, result, results, samples, w;\n if (arguments.length < 2) {\n out = 'hex';\n }\n result = [];\n if (arguments.length === 0) {\n result = _colors.slice(0);\n } else if (numColors === 1) {\n result = [f(0.5)];\n } else if (numColors > 1) {\n dm = _domain[0];\n dd = _domain[1] - dm;\n result = (function() {\n results = [];\n for (var o = 0; 0 <= numColors ? o < numColors : o > numColors; 0 <= numColors ? o++ : o--){ results.push(o); }\n return results;\n }).apply(this).map(function(i) {\n return f(dm + i / (numColors - 1) * dd);\n });\n } else {\n colors = [];\n samples = [];\n if (_classes && _classes.length > 2) {\n for (i = w = 1, ref = _classes.length; 1 <= ref ? w < ref : w > ref; i = 1 <= ref ? ++w : --w) {\n samples.push((_classes[i - 1] + _classes[i]) * 0.5);\n }\n } else {\n samples = _domain;\n }\n result = samples.map(function(v) {\n return f(v);\n });\n }\n if (chroma[out]) {\n result = result.map(function(c) {\n return c[out]();\n });\n }\n return result;\n };\n f.cache = function(c) {\n if (c != null) {\n _useCache = c;\n return f;\n } else {\n return _useCache;\n }\n };\n f.gamma = function(g) {\n if (g != null) {\n _gamma = g;\n return f;\n } else {\n return _gamma;\n }\n };\n f.nodata = function(d) {\n if (d != null) {\n _nacol = chroma(d);\n return f;\n } else {\n return _nacol;\n }\n };\n return f;\n };\n\n if (chroma.scales == null) {\n chroma.scales = {};\n }\n\n chroma.scales.cool = function() {\n return chroma.scale([chroma.hsl(180, 1, .9), chroma.hsl(250, .7, .4)]);\n };\n\n chroma.scales.hot = function() {\n return chroma.scale(['#000', '#f00', '#ff0', '#fff'], [0, .25, .75, 1]).mode('rgb');\n };\n\n chroma.analyze = function(data, key, filter) {\n var add, k, len, o, r, val, visit;\n r = {\n min: Number.MAX_VALUE,\n max: Number.MAX_VALUE * -1,\n sum: 0,\n values: [],\n count: 0\n };\n if (filter == null) {\n filter = function() {\n return true;\n };\n }\n add = function(val) {\n if ((val != null) && !isNaN(val)) {\n r.values.push(val);\n r.sum += val;\n if (val < r.min) {\n r.min = val;\n }\n if (val > r.max) {\n r.max = val;\n }\n r.count += 1;\n }\n };\n visit = function(val, k) {\n if (filter(val, k)) {\n if ((key != null) && type(key) === 'function') {\n return add(key(val));\n } else if ((key != null) && type(key) === 'string' || type(key) === 'number') {\n return add(val[key]);\n } else {\n return add(val);\n }\n }\n };\n if (type(data) === 'array') {\n for (o = 0, len = data.length; o < len; o++) {\n val = data[o];\n visit(val);\n }\n } else {\n for (k in data) {\n val = data[k];\n visit(val, k);\n }\n }\n r.domain = [r.min, r.max];\n r.limits = function(mode, num) {\n return chroma.limits(r, mode, num);\n };\n return r;\n };\n\n chroma.limits = function(data, mode, num) {\n var aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, assignments, best, centroids, cluster, clusterSizes, dist, i, j, kClusters, limits, max_log, min, min_log, mindist, n, nb_iters, newCentroids, o, p, pb, pr, ref, ref1, ref10, ref11, ref12, ref13, ref14, ref2, ref3, ref4, ref5, ref6, ref7, ref8, ref9, repeat, sum, tmpKMeansBreaks, v, value, values, w;\n if (mode == null) {\n mode = 'equal';\n }\n if (num == null) {\n num = 7;\n }\n if (type(data) === 'array') {\n data = chroma.analyze(data);\n }\n min = data.min;\n max = data.max;\n sum = data.sum;\n values = data.values.sort(function(a, b) {\n return a - b;\n });\n if (num === 1) {\n return [min, max];\n }\n limits = [];\n if (mode.substr(0, 1) === 'c') {\n limits.push(min);\n limits.push(max);\n }\n if (mode.substr(0, 1) === 'e') {\n limits.push(min);\n for (i = o = 1, ref = num - 1; 1 <= ref ? o <= ref : o >= ref; i = 1 <= ref ? ++o : --o) {\n limits.push(min + (i / num) * (max - min));\n }\n limits.push(max);\n } else if (mode.substr(0, 1) === 'l') {\n if (min <= 0) {\n throw 'Logarithmic scales are only possible for values > 0';\n }\n min_log = Math.LOG10E * log(min);\n max_log = Math.LOG10E * log(max);\n limits.push(min);\n for (i = w = 1, ref1 = num - 1; 1 <= ref1 ? w <= ref1 : w >= ref1; i = 1 <= ref1 ? ++w : --w) {\n limits.push(pow(10, min_log + (i / num) * (max_log - min_log)));\n }\n limits.push(max);\n } else if (mode.substr(0, 1) === 'q') {\n limits.push(min);\n for (i = aa = 1, ref2 = num - 1; 1 <= ref2 ? aa <= ref2 : aa >= ref2; i = 1 <= ref2 ? ++aa : --aa) {\n p = (values.length - 1) * i / num;\n pb = floor(p);\n if (pb === p) {\n limits.push(values[pb]);\n } else {\n pr = p - pb;\n limits.push(values[pb] * (1 - pr) + values[pb + 1] * pr);\n }\n }\n limits.push(max);\n } else if (mode.substr(0, 1) === 'k') {\n\n /*\n implementation based on\n http://code.google.com/p/figue/source/browse/trunk/figue.js#336\n simplified for 1-d input values\n */\n n = values.length;\n assignments = new Array(n);\n clusterSizes = new Array(num);\n repeat = true;\n nb_iters = 0;\n centroids = null;\n centroids = [];\n centroids.push(min);\n for (i = ab = 1, ref3 = num - 1; 1 <= ref3 ? ab <= ref3 : ab >= ref3; i = 1 <= ref3 ? ++ab : --ab) {\n centroids.push(min + (i / num) * (max - min));\n }\n centroids.push(max);\n while (repeat) {\n for (j = ac = 0, ref4 = num - 1; 0 <= ref4 ? ac <= ref4 : ac >= ref4; j = 0 <= ref4 ? ++ac : --ac) {\n clusterSizes[j] = 0;\n }\n for (i = ad = 0, ref5 = n - 1; 0 <= ref5 ? ad <= ref5 : ad >= ref5; i = 0 <= ref5 ? ++ad : --ad) {\n value = values[i];\n mindist = Number.MAX_VALUE;\n for (j = ae = 0, ref6 = num - 1; 0 <= ref6 ? ae <= ref6 : ae >= ref6; j = 0 <= ref6 ? ++ae : --ae) {\n dist = abs(centroids[j] - value);\n if (dist < mindist) {\n mindist = dist;\n best = j;\n }\n }\n clusterSizes[best]++;\n assignments[i] = best;\n }\n newCentroids = new Array(num);\n for (j = af = 0, ref7 = num - 1; 0 <= ref7 ? af <= ref7 : af >= ref7; j = 0 <= ref7 ? ++af : --af) {\n newCentroids[j] = null;\n }\n for (i = ag = 0, ref8 = n - 1; 0 <= ref8 ? ag <= ref8 : ag >= ref8; i = 0 <= ref8 ? ++ag : --ag) {\n cluster = assignments[i];\n if (newCentroids[cluster] === null) {\n newCentroids[cluster] = values[i];\n } else {\n newCentroids[cluster] += values[i];\n }\n }\n for (j = ah = 0, ref9 = num - 1; 0 <= ref9 ? ah <= ref9 : ah >= ref9; j = 0 <= ref9 ? ++ah : --ah) {\n newCentroids[j] *= 1 / clusterSizes[j];\n }\n repeat = false;\n for (j = ai = 0, ref10 = num - 1; 0 <= ref10 ? ai <= ref10 : ai >= ref10; j = 0 <= ref10 ? ++ai : --ai) {\n if (newCentroids[j] !== centroids[i]) {\n repeat = true;\n break;\n }\n }\n centroids = newCentroids;\n nb_iters++;\n if (nb_iters > 200) {\n repeat = false;\n }\n }\n kClusters = {};\n for (j = aj = 0, ref11 = num - 1; 0 <= ref11 ? aj <= ref11 : aj >= ref11; j = 0 <= ref11 ? ++aj : --aj) {\n kClusters[j] = [];\n }\n for (i = ak = 0, ref12 = n - 1; 0 <= ref12 ? ak <= ref12 : ak >= ref12; i = 0 <= ref12 ? ++ak : --ak) {\n cluster = assignments[i];\n kClusters[cluster].push(values[i]);\n }\n tmpKMeansBreaks = [];\n for (j = al = 0, ref13 = num - 1; 0 <= ref13 ? al <= ref13 : al >= ref13; j = 0 <= ref13 ? ++al : --al) {\n tmpKMeansBreaks.push(kClusters[j][0]);\n tmpKMeansBreaks.push(kClusters[j][kClusters[j].length - 1]);\n }\n tmpKMeansBreaks = tmpKMeansBreaks.sort(function(a, b) {\n return a - b;\n });\n limits.push(tmpKMeansBreaks[0]);\n for (i = am = 1, ref14 = tmpKMeansBreaks.length - 1; am <= ref14; i = am += 2) {\n v = tmpKMeansBreaks[i];\n if (!isNaN(v) && limits.indexOf(v) === -1) {\n limits.push(v);\n }\n }\n }\n return limits;\n };\n\n hsi2rgb = function(h, s, i) {\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/hsi2rgb.cpp\n */\n var args, b, g, r;\n args = unpack(arguments);\n h = args[0], s = args[1], i = args[2];\n if (isNaN(h)) {\n h = 0;\n }\n h /= 360;\n if (h < 1 / 3) {\n b = (1 - s) / 3;\n r = (1 + s * cos(TWOPI * h) / cos(PITHIRD - TWOPI * h)) / 3;\n g = 1 - (b + r);\n } else if (h < 2 / 3) {\n h -= 1 / 3;\n r = (1 - s) / 3;\n g = (1 + s * cos(TWOPI * h) / cos(PITHIRD - TWOPI * h)) / 3;\n b = 1 - (r + g);\n } else {\n h -= 2 / 3;\n g = (1 - s) / 3;\n b = (1 + s * cos(TWOPI * h) / cos(PITHIRD - TWOPI * h)) / 3;\n r = 1 - (g + b);\n }\n r = limit(i * r * 3);\n g = limit(i * g * 3);\n b = limit(i * b * 3);\n return [r * 255, g * 255, b * 255, args.length > 3 ? args[3] : 1];\n };\n\n rgb2hsi = function() {\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/rgb2hsi.cpp\n */\n var b, g, h, i, min, r, ref, s;\n ref = unpack(arguments), r = ref[0], g = ref[1], b = ref[2];\n TWOPI = Math.PI * 2;\n r /= 255;\n g /= 255;\n b /= 255;\n min = Math.min(r, g, b);\n i = (r + g + b) / 3;\n s = 1 - min / i;\n if (s === 0) {\n h = 0;\n } else {\n h = ((r - g) + (r - b)) / 2;\n h /= Math.sqrt((r - g) * (r - g) + (r - b) * (g - b));\n h = Math.acos(h);\n if (b > g) {\n h = TWOPI - h;\n }\n h /= TWOPI;\n }\n return [h * 360, s, i];\n };\n\n chroma.hsi = function() {\n return (function(func, args, ctor) {\n ctor.prototype = func.prototype;\n var child = new ctor, result = func.apply(child, args);\n return Object(result) === result ? result : child;\n })(Color, slice.call(arguments).concat(['hsi']), function(){});\n };\n\n _input.hsi = hsi2rgb;\n\n Color.prototype.hsi = function() {\n return rgb2hsi(this._rgb);\n };\n\n interpolate_hsx = function(col1, col2, f, m) {\n var dh, hue, hue0, hue1, lbv, lbv0, lbv1, res, sat, sat0, sat1, xyz0, xyz1;\n if (m === 'hsl') {\n xyz0 = col1.hsl();\n xyz1 = col2.hsl();\n } else if (m === 'hsv') {\n xyz0 = col1.hsv();\n xyz1 = col2.hsv();\n } else if (m === 'hcg') {\n xyz0 = col1.hcg();\n xyz1 = col2.hcg();\n } else if (m === 'hsi') {\n xyz0 = col1.hsi();\n xyz1 = col2.hsi();\n } else if (m === 'lch' || m === 'hcl') {\n m = 'hcl';\n xyz0 = col1.hcl();\n xyz1 = col2.hcl();\n }\n if (m.substr(0, 1) === 'h') {\n hue0 = xyz0[0], sat0 = xyz0[1], lbv0 = xyz0[2];\n hue1 = xyz1[0], sat1 = xyz1[1], lbv1 = xyz1[2];\n }\n if (!isNaN(hue0) && !isNaN(hue1)) {\n if (hue1 > hue0 && hue1 - hue0 > 180) {\n dh = hue1 - (hue0 + 360);\n } else if (hue1 < hue0 && hue0 - hue1 > 180) {\n dh = hue1 + 360 - hue0;\n } else {\n dh = hue1 - hue0;\n }\n hue = hue0 + f * dh;\n } else if (!isNaN(hue0)) {\n hue = hue0;\n if ((lbv1 === 1 || lbv1 === 0) && m !== 'hsv') {\n sat = sat0;\n }\n } else if (!isNaN(hue1)) {\n hue = hue1;\n if ((lbv0 === 1 || lbv0 === 0) && m !== 'hsv') {\n sat = sat1;\n }\n } else {\n hue = Number.NaN;\n }\n if (sat == null) {\n sat = sat0 + f * (sat1 - sat0);\n }\n lbv = lbv0 + f * (lbv1 - lbv0);\n return res = chroma[m](hue, sat, lbv);\n };\n\n _interpolators = _interpolators.concat((function() {\n var len, o, ref, results;\n ref = ['hsv', 'hsl', 'hsi', 'hcl', 'lch', 'hcg'];\n results = [];\n for (o = 0, len = ref.length; o < len; o++) {\n m = ref[o];\n results.push([m, interpolate_hsx]);\n }\n return results;\n })());\n\n interpolate_num = function(col1, col2, f, m) {\n var n1, n2;\n n1 = col1.num();\n n2 = col2.num();\n return chroma.num(n1 + (n2 - n1) * f, 'num');\n };\n\n _interpolators.push(['num', interpolate_num]);\n\n interpolate_lab = function(col1, col2, f, m) {\n var res, xyz0, xyz1;\n xyz0 = col1.lab();\n xyz1 = col2.lab();\n return res = new Color(xyz0[0] + f * (xyz1[0] - xyz0[0]), xyz0[1] + f * (xyz1[1] - xyz0[1]), xyz0[2] + f * (xyz1[2] - xyz0[2]), m);\n };\n\n _interpolators.push(['lab', interpolate_lab]);\n\n}).call(this);\n","/*jslint onevar:true, undef:true, newcap:true, regexp:true, bitwise:true, maxerr:50, indent:4, white:false, nomen:false, plusplus:false */\n/*global define:false, require:false, exports:false, module:false, signals:false */\n\n/** @license\n * JS Signals \n * Released under the MIT license\n * Author: Miller Medeiros\n * Version: 1.0.0 - Build: 268 (2012/11/29 05:48 PM)\n */\n\n(function(global){\n\n // SignalBinding -------------------------------------------------\n //================================================================\n\n /**\n * Object that represents a binding between a Signal and a listener function.\n *
- This is an internal constructor and shouldn't be called by regular users.\n *
- inspired by Joa Ebert AS3 SignalBinding and Robert Penner's Slot classes.\n * @author Miller Medeiros\n * @constructor\n * @internal\n * @name SignalBinding\n * @param {Signal} signal Reference to Signal object that listener is currently bound to.\n * @param {Function} listener Handler function bound to the signal.\n * @param {boolean} isOnce If binding should be executed just once.\n * @param {Object} [listenerContext] Context on which listener will be executed (object that should represent the `this` variable inside listener function).\n * @param {Number} [priority] The priority level of the event listener. (default = 0).\n */\n function SignalBinding(signal, listener, isOnce, listenerContext, priority) {\n\n /**\n * Handler function bound to the signal.\n * @type Function\n * @private\n */\n this._listener = listener;\n\n /**\n * If binding should be executed just once.\n * @type boolean\n * @private\n */\n this._isOnce = isOnce;\n\n /**\n * Context on which listener will be executed (object that should represent the `this` variable inside listener function).\n * @memberOf SignalBinding.prototype\n * @name context\n * @type Object|undefined|null\n */\n this.context = listenerContext;\n\n /**\n * Reference to Signal object that listener is currently bound to.\n * @type Signal\n * @private\n */\n this._signal = signal;\n\n /**\n * Listener priority\n * @type Number\n * @private\n */\n this._priority = priority || 0;\n }\n\n SignalBinding.prototype = {\n\n /**\n * If binding is active and should be executed.\n * @type boolean\n */\n active : true,\n\n /**\n * Default parameters passed to listener during `Signal.dispatch` and `SignalBinding.execute`. (curried parameters)\n * @type Array|null\n */\n params : null,\n\n /**\n * Call listener passing arbitrary parameters.\n *

If binding was added using `Signal.addOnce()` it will be automatically removed from signal dispatch queue, this method is used internally for the signal dispatch.

\n * @param {Array} [paramsArr] Array of parameters that should be passed to the listener\n * @return {*} Value returned by the listener.\n */\n execute : function (paramsArr) {\n var handlerReturn, params;\n if (this.active && !!this._listener) {\n params = this.params? this.params.concat(paramsArr) : paramsArr;\n handlerReturn = this._listener.apply(this.context, params);\n if (this._isOnce) {\n this.detach();\n }\n }\n return handlerReturn;\n },\n\n /**\n * Detach binding from signal.\n * - alias to: mySignal.remove(myBinding.getListener());\n * @return {Function|null} Handler function bound to the signal or `null` if binding was previously detached.\n */\n detach : function () {\n return this.isBound()? this._signal.remove(this._listener, this.context) : null;\n },\n\n /**\n * @return {Boolean} `true` if binding is still bound to the signal and have a listener.\n */\n isBound : function () {\n return (!!this._signal && !!this._listener);\n },\n\n /**\n * @return {boolean} If SignalBinding will only be executed once.\n */\n isOnce : function () {\n return this._isOnce;\n },\n\n /**\n * @return {Function} Handler function bound to the signal.\n */\n getListener : function () {\n return this._listener;\n },\n\n /**\n * @return {Signal} Signal that listener is currently bound to.\n */\n getSignal : function () {\n return this._signal;\n },\n\n /**\n * Delete instance properties\n * @private\n */\n _destroy : function () {\n delete this._signal;\n delete this._listener;\n delete this.context;\n },\n\n /**\n * @return {string} String representation of the object.\n */\n toString : function () {\n return '[SignalBinding isOnce:' + this._isOnce +', isBound:'+ this.isBound() +', active:' + this.active + ']';\n }\n\n };\n\n\n/*global SignalBinding:false*/\n\n // Signal --------------------------------------------------------\n //================================================================\n\n function validateListener(listener, fnName) {\n if (typeof listener !== 'function') {\n throw new Error( 'listener is a required param of {fn}() and should be a Function.'.replace('{fn}', fnName) );\n }\n }\n\n /**\n * Custom event broadcaster\n *
- inspired by Robert Penner's AS3 Signals.\n * @name Signal\n * @author Miller Medeiros\n * @constructor\n */\n function Signal() {\n /**\n * @type Array.\n * @private\n */\n this._bindings = [];\n this._prevParams = null;\n\n // enforce dispatch to aways work on same context (#47)\n var self = this;\n this.dispatch = function(){\n Signal.prototype.dispatch.apply(self, arguments);\n };\n }\n\n Signal.prototype = {\n\n /**\n * Signals Version Number\n * @type String\n * @const\n */\n VERSION : '1.0.0',\n\n /**\n * If Signal should keep record of previously dispatched parameters and\n * automatically execute listener during `add()`/`addOnce()` if Signal was\n * already dispatched before.\n * @type boolean\n */\n memorize : false,\n\n /**\n * @type boolean\n * @private\n */\n _shouldPropagate : true,\n\n /**\n * If Signal is active and should broadcast events.\n *

IMPORTANT: Setting this property during a dispatch will only affect the next dispatch, if you want to stop the propagation of a signal use `halt()` instead.

\n * @type boolean\n */\n active : true,\n\n /**\n * @param {Function} listener\n * @param {boolean} isOnce\n * @param {Object} [listenerContext]\n * @param {Number} [priority]\n * @return {SignalBinding}\n * @private\n */\n _registerListener : function (listener, isOnce, listenerContext, priority) {\n\n var prevIndex = this._indexOfListener(listener, listenerContext),\n binding;\n\n if (prevIndex !== -1) {\n binding = this._bindings[prevIndex];\n if (binding.isOnce() !== isOnce) {\n throw new Error('You cannot add'+ (isOnce? '' : 'Once') +'() then add'+ (!isOnce? '' : 'Once') +'() the same listener without removing the relationship first.');\n }\n } else {\n binding = new SignalBinding(this, listener, isOnce, listenerContext, priority);\n this._addBinding(binding);\n }\n\n if(this.memorize && this._prevParams){\n binding.execute(this._prevParams);\n }\n\n return binding;\n },\n\n /**\n * @param {SignalBinding} binding\n * @private\n */\n _addBinding : function (binding) {\n //simplified insertion sort\n var n = this._bindings.length;\n do { --n; } while (this._bindings[n] && binding._priority <= this._bindings[n]._priority);\n this._bindings.splice(n + 1, 0, binding);\n },\n\n /**\n * @param {Function} listener\n * @return {number}\n * @private\n */\n _indexOfListener : function (listener, context) {\n var n = this._bindings.length,\n cur;\n while (n--) {\n cur = this._bindings[n];\n if (cur._listener === listener && cur.context === context) {\n return n;\n }\n }\n return -1;\n },\n\n /**\n * Check if listener was attached to Signal.\n * @param {Function} listener\n * @param {Object} [context]\n * @return {boolean} if Signal has the specified listener.\n */\n has : function (listener, context) {\n return this._indexOfListener(listener, context) !== -1;\n },\n\n /**\n * Add a listener to the signal.\n * @param {Function} listener Signal handler function.\n * @param {Object} [listenerContext] Context on which listener will be executed (object that should represent the `this` variable inside listener function).\n * @param {Number} [priority] The priority level of the event listener. Listeners with higher priority will be executed before listeners with lower priority. Listeners with same priority level will be executed at the same order as they were added. (default = 0)\n * @return {SignalBinding} An Object representing the binding between the Signal and listener.\n */\n add : function (listener, listenerContext, priority) {\n validateListener(listener, 'add');\n return this._registerListener(listener, false, listenerContext, priority);\n },\n\n /**\n * Add listener to the signal that should be removed after first execution (will be executed only once).\n * @param {Function} listener Signal handler function.\n * @param {Object} [listenerContext] Context on which listener will be executed (object that should represent the `this` variable inside listener function).\n * @param {Number} [priority] The priority level of the event listener. Listeners with higher priority will be executed before listeners with lower priority. Listeners with same priority level will be executed at the same order as they were added. (default = 0)\n * @return {SignalBinding} An Object representing the binding between the Signal and listener.\n */\n addOnce : function (listener, listenerContext, priority) {\n validateListener(listener, 'addOnce');\n return this._registerListener(listener, true, listenerContext, priority);\n },\n\n /**\n * Remove a single listener from the dispatch queue.\n * @param {Function} listener Handler function that should be removed.\n * @param {Object} [context] Execution context (since you can add the same handler multiple times if executing in a different context).\n * @return {Function} Listener handler function.\n */\n remove : function (listener, context) {\n validateListener(listener, 'remove');\n\n var i = this._indexOfListener(listener, context);\n if (i !== -1) {\n this._bindings[i]._destroy(); //no reason to a SignalBinding exist if it isn't attached to a signal\n this._bindings.splice(i, 1);\n }\n return listener;\n },\n\n /**\n * Remove all listeners from the Signal.\n */\n removeAll : function () {\n var n = this._bindings.length;\n while (n--) {\n this._bindings[n]._destroy();\n }\n this._bindings.length = 0;\n },\n\n /**\n * @return {number} Number of listeners attached to the Signal.\n */\n getNumListeners : function () {\n return this._bindings.length;\n },\n\n /**\n * Stop propagation of the event, blocking the dispatch to next listeners on the queue.\n *

IMPORTANT: should be called only during signal dispatch, calling it before/after dispatch won't affect signal broadcast.

\n * @see Signal.prototype.disable\n */\n halt : function () {\n this._shouldPropagate = false;\n },\n\n /**\n * Dispatch/Broadcast Signal to all listeners added to the queue.\n * @param {...*} [params] Parameters that should be passed to each handler.\n */\n dispatch : function (params) {\n if (! this.active) {\n return;\n }\n\n var paramsArr = Array.prototype.slice.call(arguments),\n n = this._bindings.length,\n bindings;\n\n if (this.memorize) {\n this._prevParams = paramsArr;\n }\n\n if (! n) {\n //should come after memorize\n return;\n }\n\n bindings = this._bindings.slice(); //clone array in case add/remove items during dispatch\n this._shouldPropagate = true; //in case `halt` was called before dispatch or during the previous dispatch.\n\n //execute all callbacks until end of the list or until a callback returns `false` or stops propagation\n //reverse loop since listeners with higher priority will be added at the end of the list\n do { n--; } while (bindings[n] && this._shouldPropagate && bindings[n].execute(paramsArr) !== false);\n },\n\n /**\n * Forget memorized arguments.\n * @see Signal.memorize\n */\n forget : function(){\n this._prevParams = null;\n },\n\n /**\n * Remove all bindings from signal and destroy any reference to external objects (destroy Signal object).\n *

IMPORTANT: calling any method on the signal instance after calling dispose will throw errors.

\n */\n dispose : function () {\n this.removeAll();\n delete this._bindings;\n delete this._prevParams;\n },\n\n /**\n * @return {string} String representation of the object.\n */\n toString : function () {\n return '[Signal active:'+ this.active +' numListeners:'+ this.getNumListeners() +']';\n }\n\n };\n\n\n // Namespace -----------------------------------------------------\n //================================================================\n\n /**\n * Signals namespace\n * @namespace\n * @name signals\n */\n var signals = Signal;\n\n /**\n * Custom event broadcaster\n * @see Signal\n */\n // alias for backwards compatibility (see #gh-44)\n signals.Signal = Signal;\n\n\n\n //exports to multiple environments\n if(typeof define === 'function' && define.amd){ //AMD\n define(function () { return signals; });\n } else if (typeof module !== 'undefined' && module.exports){ //node\n module.exports = signals;\n } else { //browser\n //use string because of Google closure compiler ADVANCED_MODE\n /*jslint sub:true */\n global['signals'] = signals;\n }\n\n}(this));\n","/* global window, exports, define */\n\n!function() {\n 'use strict'\n\n var re = {\n not_string: /[^s]/,\n not_bool: /[^t]/,\n not_type: /[^T]/,\n not_primitive: /[^v]/,\n number: /[diefg]/,\n numeric_arg: /[bcdiefguxX]/,\n json: /[j]/,\n not_json: /[^j]/,\n text: /^[^\\x25]+/,\n modulo: /^\\x25{2}/,\n placeholder: /^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,\n key: /^([a-z_][a-z_\\d]*)/i,\n key_access: /^\\.([a-z_][a-z_\\d]*)/i,\n index_access: /^\\[(\\d+)\\]/,\n sign: /^[+-]/\n }\n\n function sprintf(key) {\n // `arguments` is not an array, but should be fine for this call\n return sprintf_format(sprintf_parse(key), arguments)\n }\n\n function vsprintf(fmt, argv) {\n return sprintf.apply(null, [fmt].concat(argv || []))\n }\n\n function sprintf_format(parse_tree, argv) {\n var cursor = 1, tree_length = parse_tree.length, arg, output = '', i, k, ph, pad, pad_character, pad_length, is_positive, sign\n for (i = 0; i < tree_length; i++) {\n if (typeof parse_tree[i] === 'string') {\n output += parse_tree[i]\n }\n else if (typeof parse_tree[i] === 'object') {\n ph = parse_tree[i] // convenience purposes only\n if (ph.keys) { // keyword argument\n arg = argv[cursor]\n for (k = 0; k < ph.keys.length; k++) {\n if (arg == undefined) {\n throw new Error(sprintf('[sprintf] Cannot access property \"%s\" of undefined value \"%s\"', ph.keys[k], ph.keys[k-1]))\n }\n arg = arg[ph.keys[k]]\n }\n }\n else if (ph.param_no) { // positional argument (explicit)\n arg = argv[ph.param_no]\n }\n else { // positional argument (implicit)\n arg = argv[cursor++]\n }\n\n if (re.not_type.test(ph.type) && re.not_primitive.test(ph.type) && arg instanceof Function) {\n arg = arg()\n }\n\n if (re.numeric_arg.test(ph.type) && (typeof arg !== 'number' && isNaN(arg))) {\n throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg))\n }\n\n if (re.number.test(ph.type)) {\n is_positive = arg >= 0\n }\n\n switch (ph.type) {\n case 'b':\n arg = parseInt(arg, 10).toString(2)\n break\n case 'c':\n arg = String.fromCharCode(parseInt(arg, 10))\n break\n case 'd':\n case 'i':\n arg = parseInt(arg, 10)\n break\n case 'j':\n arg = JSON.stringify(arg, null, ph.width ? parseInt(ph.width) : 0)\n break\n case 'e':\n arg = ph.precision ? parseFloat(arg).toExponential(ph.precision) : parseFloat(arg).toExponential()\n break\n case 'f':\n arg = ph.precision ? parseFloat(arg).toFixed(ph.precision) : parseFloat(arg)\n break\n case 'g':\n arg = ph.precision ? String(Number(arg.toPrecision(ph.precision))) : parseFloat(arg)\n break\n case 'o':\n arg = (parseInt(arg, 10) >>> 0).toString(8)\n break\n case 's':\n arg = String(arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 't':\n arg = String(!!arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'T':\n arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'u':\n arg = parseInt(arg, 10) >>> 0\n break\n case 'v':\n arg = arg.valueOf()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'x':\n arg = (parseInt(arg, 10) >>> 0).toString(16)\n break\n case 'X':\n arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase()\n break\n }\n if (re.json.test(ph.type)) {\n output += arg\n }\n else {\n if (re.number.test(ph.type) && (!is_positive || ph.sign)) {\n sign = is_positive ? '+' : '-'\n arg = arg.toString().replace(re.sign, '')\n }\n else {\n sign = ''\n }\n pad_character = ph.pad_char ? ph.pad_char === '0' ? '0' : ph.pad_char.charAt(1) : ' '\n pad_length = ph.width - (sign + arg).length\n pad = ph.width ? (pad_length > 0 ? pad_character.repeat(pad_length) : '') : ''\n output += ph.align ? sign + arg + pad : (pad_character === '0' ? sign + pad + arg : pad + sign + arg)\n }\n }\n }\n return output\n }\n\n var sprintf_cache = Object.create(null)\n\n function sprintf_parse(fmt) {\n if (sprintf_cache[fmt]) {\n return sprintf_cache[fmt]\n }\n\n var _fmt = fmt, match, parse_tree = [], arg_names = 0\n while (_fmt) {\n if ((match = re.text.exec(_fmt)) !== null) {\n parse_tree.push(match[0])\n }\n else if ((match = re.modulo.exec(_fmt)) !== null) {\n parse_tree.push('%')\n }\n else if ((match = re.placeholder.exec(_fmt)) !== null) {\n if (match[2]) {\n arg_names |= 1\n var field_list = [], replacement_field = match[2], field_match = []\n if ((field_match = re.key.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {\n if ((field_match = re.key_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else if ((field_match = re.index_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n }\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n match[2] = field_list\n }\n else {\n arg_names |= 2\n }\n if (arg_names === 3) {\n throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported')\n }\n\n parse_tree.push(\n {\n placeholder: match[0],\n param_no: match[1],\n keys: match[2],\n sign: match[3],\n pad_char: match[4],\n align: match[5],\n width: match[6],\n precision: match[7],\n type: match[8]\n }\n )\n }\n else {\n throw new SyntaxError('[sprintf] unexpected placeholder')\n }\n _fmt = _fmt.substring(match[0].length)\n }\n return sprintf_cache[fmt] = parse_tree\n }\n\n /**\n * export to either browser or node.js\n */\n /* eslint-disable quote-props */\n if (typeof exports !== 'undefined') {\n exports['sprintf'] = sprintf\n exports['vsprintf'] = vsprintf\n }\n if (typeof window !== 'undefined') {\n window['sprintf'] = sprintf\n window['vsprintf'] = vsprintf\n\n if (typeof define === 'function' && define['amd']) {\n define(function() {\n return {\n 'sprintf': sprintf,\n 'vsprintf': vsprintf\n }\n })\n }\n }\n /* eslint-enable quote-props */\n}(); // eslint-disable-line\n","import{Vector2 as t,Vector3 as e,Matrix4 as i,Quaternion as r,Color as s,ShaderChunk as n,Points as o,Box3 as a,LinearEncoding as c,PerspectiveCamera as l,OrthographicCamera as h,StereoCamera as d,Scene as u,Group as m,Fog as p,SpotLight as f,AmbientLight as g,WebGLRenderer as y,WebGLRenderTarget as b,NearestFilter as x,RGBAFormat as v,UnsignedByteType as w,LinearFilter as A,Uniform as _,ShaderMaterial as S,AdditiveBlending as C,Mesh as P,PlaneGeometry as I,BufferGeometry as k,BufferAttribute as M,LineSegments as T,sRGBEncoding as B,FloatType as D,Geometry as $,Matrix3 as O,UniformsUtils as R,UniformsLib as E,NoBlending as F,FrontSide as L,BackSide as N,DoubleSide as z,IcosahedronBufferGeometry as V,DataTexture as G,NormalBlending as U,Euler as j,CanvasTexture as H,CylinderBufferGeometry as W,ConeBufferGeometry as q,BoxBufferGeometry as X,OctahedronBufferGeometry as Y,TetrahedronBufferGeometry as K,TorusBufferGeometry as Z,Face3 as Q}from\"three\";export{Box3,Color,Euler,Matrix3,Matrix4,Plane,Quaternion,Vector2,Vector3}from\"three\";import*as J from\"chroma-js\";import*as tt from\"signals\";import{Signal as et}from\"signals\";export{Signal}from\"signals\";import{sprintf as it}from\"sprintf-js\";function rt(t){if(\"undefined\"==typeof window)return;const e=new RegExp(`${t}=([^&#=]*)`).exec(window.location.search);return e?decodeURIComponent(e[1]):void 0}function st(t,e){return void 0!==t?t:e}function nt(t,e){const i=Object.assign({},t);for(const r in e){void 0===t[r]&&(i[r]=e[r])}return i}function ot(t,e){for(const i in e){const r=e[i];void 0!==r&&(t[i]=r)}return t}function at(t,e){e=st(e,[]);for(let i=0;ie?(o&&(clearTimeout(o),o=null),a=l,n=t.apply(r,s),o||(r=s=null)):o||!1===i.trailing||(o=setTimeout(c,h)),n}}function mt(t,e){return te?1:0}function pt(t,e,i=mt){let r=0,s=t.length-1;for(;r<=s;){const n=r+s>>1,o=i(e,t[n]);if(o>0)r=n+1;else{if(!(o<0))return n;s=n-1}}return-r-1}function ft(t,e,i){const r=function(t,e){let i=t.length-1;if(t[i]>1;t[s]>=e?i=s-1:r=s+1}return i+1}(t,e),s=function(t,e){if(t[0]>e)return-1;let i=0,r=t.length-1;for(;i<=r;){const s=i+r>>1;t[s]>e?r=s-1:i=s+1}return i-1}(t,i);return-1===r||-1===s||r>s?0:s-r+1}function gt(t){return t.sort().filter((function(t,e,i){return 0===e||t!==i[e-1]}))}function yt(t){const e=28672;if(t.length>e){const i=[];for(let r=0;r65535?Uint32Array:Uint16Array)(t)}function vt(t){return t.buffer&&t.buffer instanceof ArrayBuffer?t.buffer:t}function wt(t,e){return void 0===t?t=new e:Array.isArray(t)&&(t=(new e).fromArray(t)),t}function At(t){return wt(t,e)}function _t(t){return wt(t,i)}function St(t){return wt(t,r)}function Ct(t){return e=t,i=Float32Array,e instanceof i?e:new i(e);var e,i}function Pt(t){return st(t,\"\").toString().toLowerCase()}class It{constructor(t){this.name=t,this._dict={}}add(t,e){this._dict[Pt(t)]=e}get(t){return this._dict[Pt(t)]}get names(){return Object.keys(this._dict)}}function kt(t){return.01745*t}const Mt=\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\".split(\"\"),Tt=new Array(36);function Bt(){let t,e=0;for(let i=0;i<36;i++)8===i||13===i||18===i||23===i?Tt[i]=\"-\":14===i?Tt[i]=\"4\":(e<=2&&(e=33554432+16777216*Math.random()|0),t=15&e,e>>=4,Tt[i]=Mt[19===i?3&t|8:t]);return Tt.join(\"\")}function Dt(t,e,i){return Math.max(e,Math.min(i,t))}function $t(t,e,i){return t+(e-t)*i}function Ot(t,e,i,r,s,n){const o=(i-t)*n,a=(r-e)*n,c=s*s;return(2*e-2*i+o+a)*(s*c)+(-3*e+3*i-2*o-a)*c+o*s+e}function Rt(t,e,i){var r;return r=function(t,e,i){return(t-e)/(i-e)}(i,t,e),(i=Dt(r,0,1))*i*(3-2*i)}var Et=\"sRGB\";const Ft={scale:\"uniform\",mode:\"hcl\",domain:[0,1],value:16777215,reverse:!1},Lt=new s;function Nt(t,e,i){const r=i.value;return i.value=function(t,e){let i=r.bind(this,t,e)();return\"linear\"==Et?(Lt.set(i),Lt.convertSRGBToLinear(),Lt.getHex()):i},i}class zt{constructor(t={}){this.parameters=nt(t,Ft),\"string\"==typeof this.parameters.value&&(this.parameters.value=Lt.set(this.parameters.value).getHex()),this.parameters.structure&&(this.atomProxy=this.parameters.structure.getAtomProxy())}getScale(t={}){const e=nt(t,this.parameters);return\"rainbow\"===e.scale?e.scale=[\"red\",\"orange\",\"yellow\",\"green\",\"blue\"]:\"rwb\"===e.scale&&(e.scale=[\"red\",\"white\",\"blue\"]),e.reverse&&(e.domain=e.domain.slice().reverse()),J.scale(e.scale).mode(e.mode).domain(e.domain).out(\"num\")}colorToArray(t,e=[],i=0){return e[i]=(t>>16&255)/255,e[i+1]=(t>>8&255)/255,e[i+2]=(255&t)/255,e}atomColorToArray(t,e,i){return this.colorToArray(this.atomColor?this.atomColor(t):0,e,i)}bondColor(t,e){return this.atomProxy&&this.atomColor?(this.atomProxy.index=e?t.atomIndex1:t.atomIndex2,this.atomColor(this.atomProxy)):0}bondColorToArray(t,e,i,r){return this.colorToArray(this.bondColor(t,e),i,r)}volumeColorToArray(t,e,i){return this.colorToArray(this.volumeColor?this.volumeColor(t):0,e,i)}positionColorToArray(t,e,i){return this.colorToArray(this.positionColor?this.positionColor(t):0,e,i)}}var Vt;!function(t){t[t.PROTEIN=1]=\"PROTEIN\",t[t.NUCLEIC=2]=\"NUCLEIC\",t[t.RNA=3]=\"RNA\",t[t.DNA=4]=\"DNA\",t[t.POLYMER=5]=\"POLYMER\",t[t.WATER=6]=\"WATER\",t[t.HELIX=7]=\"HELIX\",t[t.SHEET=8]=\"SHEET\",t[t.TURN=9]=\"TURN\",t[t.BACKBONE=10]=\"BACKBONE\",t[t.SIDECHAIN=11]=\"SIDECHAIN\",t[t.ALL=12]=\"ALL\",t[t.HETERO=13]=\"HETERO\",t[t.ION=14]=\"ION\",t[t.SACCHARIDE=15]=\"SACCHARIDE\",t[t.SUGAR=15]=\"SUGAR\",t[t.BONDED=16]=\"BONDED\",t[t.RING=17]=\"RING\",t[t.AROMATICRING=18]=\"AROMATICRING\",t[t.METAL=19]=\"METAL\",t[t.POLARH=20]=\"POLARH\",t[t.NONE=21]=\"NONE\"}(Vt||(Vt={}));const Gt=[\"*\",\"\",\"ALL\"],Ut=[\"NONE\"],jt=[Vt.BACKBONE,Vt.SIDECHAIN,Vt.BONDED,Vt.RING,Vt.AROMATICRING,Vt.METAL,Vt.POLARH],Ht=[Vt.POLYMER,Vt.WATER],Wt=[\"ALA\",\"GLY\",\"SER\"],qt=[\"CYS\",\"SER\",\"THR\"],Xt=[\"ALA\",\"ILE\",\"LEU\",\"MET\",\"PHE\",\"PRO\",\"TRP\",\"VAL\"],Yt=[\"PHE\",\"TRP\",\"TYR\",\"HIS\"],Kt=[\"ASN\",\"GLN\"],Zt=[\"ASP\",\"GLU\"],Qt=[\"ARG\",\"HIS\",\"LYS\"],Jt=[\"ARG\",\"ASP\",\"GLU\",\"HIS\",\"LYS\"],te=[\"ASN\",\"ARG\",\"ASP\",\"CYS\",\"GLY\",\"GLN\",\"GLU\",\"HIS\",\"LYS\",\"SER\",\"THR\",\"TYR\"],ee=[\"ALA\",\"ILE\",\"LEU\",\"MET\",\"PHE\",\"PRO\",\"TRP\",\"VAL\"],ie=[\"HIS\",\"PHE\",\"PRO\",\"TRP\",\"TYR\"],re=[\"ALA\",\"GLY\",\"ILE\",\"LEU\",\"VAL\"];function se(t,e){if(void 0===e.atomname&&void 0===e.element&&void 0===e.altloc&&void 0===e.atomindex&&void 0===e.keyword&&void 0===e.inscode&&void 0===e.resname&&void 0===e.sstruc&&void 0===e.resno&&void 0===e.chainname&&void 0===e.model)return-1;if(void 0!==e.keyword){if(e.keyword===Vt.BACKBONE&&!t.isBackbone())return!1;if(e.keyword===Vt.SIDECHAIN&&!t.isSidechain())return!1;if(e.keyword===Vt.BONDED&&!t.isBonded())return!1;if(e.keyword===Vt.RING&&!t.isRing())return!1;if(e.keyword===Vt.AROMATICRING&&!t.isAromatic())return!1;if(e.keyword===Vt.HETERO&&!t.isHetero())return!1;if(e.keyword===Vt.PROTEIN&&!t.isProtein())return!1;if(e.keyword===Vt.NUCLEIC&&!t.isNucleic())return!1;if(e.keyword===Vt.RNA&&!t.isRna())return!1;if(e.keyword===Vt.DNA&&!t.isDna())return!1;if(e.keyword===Vt.POLYMER&&!t.isPolymer())return!1;if(e.keyword===Vt.WATER&&!t.isWater())return!1;if(e.keyword===Vt.HELIX&&!t.isHelix())return!1;if(e.keyword===Vt.SHEET&&!t.isSheet())return!1;if(e.keyword===Vt.TURN&&!t.isTurn())return!1;if(e.keyword===Vt.ION&&!t.isIon())return!1;if(e.keyword===Vt.SACCHARIDE&&!t.isSaccharide())return!1;if(e.keyword===Vt.METAL&&!t.isMetal())return!1;if(e.keyword===Vt.POLARH&&!t.isPolarHydrogen())return!1}if(void 0!==e.atomname&&e.atomname!==t.atomname)return!1;if(void 0!==e.element&&e.element!==t.element)return!1;if(void 0!==e.altloc&&e.altloc!==t.altloc)return!1;if(void 0!==e.atomindex&&pt(e.atomindex,t.index)<0)return!1;if(void 0!==e.resname)if(Array.isArray(e.resname)){if(!e.resname.includes(t.resname))return!1}else if(e.resname!==t.resname)return!1;if(void 0!==e.sstruc&&e.sstruc!==t.sstruc)return!1;if(void 0!==e.resno)if(Array.isArray(e.resno)&&2===e.resno.length){if(e.resno[0]>t.resno||e.resno[1]t.resno||e.resno[1]0?t:null}function he(t,e=!1){let i=t;return e&&(i=le(t,(function(t){return void 0!==t.keyword&&!jt.includes(t.keyword)||(void 0!==t.model||(void 0!==t.chainname||(void 0!==t.resname||(void 0!==t.resno||void 0!==t.sstruc))))}))),ce(i,se)}function de(t,e=!1){let i=t;return e&&(i=le(t,(function(t){return!(void 0===t.keyword||!jt.includes(t.keyword))||(void 0!==t.model||(void 0!==t.chainname||(void 0!==t.atomname||(void 0!==t.element||void 0!==t.altloc))))}))),ce(i,ne)}function ue(t,e=!1){let i=t;return e&&(i=le(t,(function(t){return void 0!==t.keyword&&!Ht.includes(t.keyword)||(void 0!==t.resname||(void 0!==t.resno||(void 0!==t.atomname||(void 0!==t.element||(void 0!==t.altloc||(void 0!==t.sstruc||void 0!==t.inscode))))))}))),ce(i,oe)}function me(t,e=!1){let i=t;return e&&(i=le(t,(function(t){return void 0!==t.keyword||(void 0!==t.chainname||(void 0!==t.resname||(void 0!==t.resno||(void 0!==t.atomname||(void 0!==t.element||(void 0!==t.altloc||(void 0!==t.sstruc||void 0!==t.inscode)))))))}))),ce(i,ae)}class pe{constructor(t){this.signals={stringChanged:new et},this.setString(t)}get type(){return\"selection\"}setString(t,e){if(void 0===t&&(t=this.string||\"\"),t===this.string)return;try{this.selection=function(t){let e={operator:void 0,rules:[]};if(!t)return e;let i,r,s=e;const n=[];\"(\"===(t=t.replace(/\\(/g,\" ( \").replace(/\\)/g,\" ) \").trim()).charAt(0)&&\")\"===t.substr(-1)&&(t=t.slice(1,-1).trim());const o=t.split(/\\s+/),a=t=>{i={operator:t,rules:[]},void 0===s?(s=i,e=i):(s.rules.push(i),n.push(s),s=i)},c=function(t){r=s,s=n.pop(),void 0===s&&(a(t),l(r))},l=function(t){s.rules.push(t)};let h=!1;for(let t=0;t0)if(\"NOT\"===i)h=1;else if(1===h)h=2;else{if(2!==h)throw new Error(\"something went wrong with 'not'\");h=!1,c()}if(\"AND\"===i){if(\"OR\"===s.operator){const t=s.rules.pop();a(\"AND\"),l(t)}else s.operator=\"AND\";continue}if(\"OR\"===i){\"AND\"===s.operator?c(\"OR\"):s.operator=\"OR\";continue}if(\"NOT\"===e.toUpperCase()){h=1,a(),s.negate=!0;continue}if(+i!=+i){const t=Vt[i];if(void 0!==t){l({keyword:t});continue}}if(\"HYDROGEN\"===i){l({operator:\"OR\",rules:[{element:\"H\"},{element:\"D\"}]});continue}if(\"SMALL\"===i){l({resname:Wt});continue}if(\"NUCLEOPHILIC\"===i){l({resname:qt});continue}if(\"HYDROPHOBIC\"===i){l({resname:Xt});continue}if(\"AROMATIC\"===i){l({resname:Yt});continue}if(\"AMIDE\"===i){l({resname:Kt});continue}if(\"ACIDIC\"===i){l({resname:Zt});continue}if(\"BASIC\"===i){l({resname:Qt});continue}if(\"CHARGED\"===i){l({resname:Jt});continue}if(\"POLAR\"===i){l({resname:te});continue}if(\"NONPOLAR\"===i){l({resname:ee});continue}if(\"CYCLIC\"===i){l({resname:ie});continue}if(\"ALIPHATIC\"===i){l({resname:re});continue}if(\"SIDECHAINATTACHED\"===i){l({operator:\"OR\",rules:[{keyword:Vt.SIDECHAIN},{operator:\"AND\",negate:!1,rules:[{keyword:Vt.PROTEIN},{operator:\"OR\",negate:!1,rules:[{atomname:\"CA\"},{atomname:\"BB\"}]}]},{operator:\"AND\",negate:!1,rules:[{resname:\"PRO\"},{atomname:\"N\"}]},{operator:\"AND\",negate:!1,rules:[{keyword:Vt.NUCLEIC},{operator:\"OR\",negate:!0,rules:[{atomname:\"P\"},{atomname:\"OP1\"},{atomname:\"OP2\"},{atomname:\"O3'\"},{atomname:\"O3*\"},{atomname:\"HO3'\"},{atomname:\"O5'\"},{atomname:\"O5*\"},{atomname:\"HO5'\"},{atomname:\"C5'\"},{atomname:\"C5*\"},{atomname:\"H5'\"},{atomname:\"H5''\"}]}]}]});continue}if(\"APOLARH\"===i){l({operator:\"AND\",negate:!1,rules:[{element:\"H\"},{negate:!0,operator:void 0,rules:[{keyword:Vt.POLARH}]}]});continue}if(\"LIGAND\"===i){l({operator:\"AND\",rules:[{operator:\"OR\",rules:[{operator:\"AND\",rules:[{keyword:Vt.HETERO},{negate:!0,operator:void 0,rules:[{keyword:Vt.POLYMER}]}]},{negate:!0,operator:void 0,rules:[{keyword:Vt.POLYMER}]}]},{negate:!0,operator:void 0,rules:[{operator:\"OR\",rules:[{keyword:Vt.WATER},{keyword:Vt.ION}]}]}]});continue}if(-1!==Gt.indexOf(i)){l({keyword:Vt.ALL});continue}if(\"@\"===e.charAt(0)){const t=e.substr(1).split(\",\").map((t=>parseInt(t)));t.sort((function(t,e){return t-e})),l({atomindex:t});continue}if(\"#\"===e.charAt(0)){console.error(\"# for element selection deprecated, use _\"),l({element:i.substr(1)});continue}if(\"_\"===e.charAt(0)){l({element:i.substr(1)});continue}if(\"[\"===e[0]&&\"]\"===e[e.length-1]){const t=i.substr(1,e.length-2).split(\",\"),r=t.length>1?t:t[0];l({resname:r});continue}if(e.length>=1&&e.length<=4&&\"^\"!==e[0]&&\":\"!==e[0]&&\".\"!==e[0]&&\"%\"!==e[0]&&\"/\"!==e[0]&&isNaN(parseInt(e))){l({resname:i});continue}const r={operator:\"AND\",rules:[]},n=e.split(\"/\");if(n.length>1&&n[1]){if(isNaN(parseInt(n[1])))throw new Error(\"model must be an integer\");r.rules.push({model:parseInt(n[1])})}const d=n[0].split(\"%\");d.length>1&&r.rules.push({altloc:d[1]});const u=d[0].split(\".\");if(u.length>1&&u[1]){if(u[1].length>4)throw new Error(\"atomname must be one to four characters\");r.rules.push({atomname:u[1].substring(0,4).toUpperCase()})}const m=u[0].split(\":\");m.length>1&&m[1]&&r.rules.push({chainname:m[1]});const p=m[0].split(\"^\");if(p.length>1&&r.rules.push({inscode:p[1]}),p[0]){let t,e;\"-\"===p[0][0]&&(p[0]=p[0].substr(1),t=!0),p[0].includes(\"--\")&&(p[0]=p[0].replace(\"--\",\"-\"),e=!0);let i=p[0].split(\"-\");if(1===i.length){let e=parseInt(i[0]);if(isNaN(e))throw new Error(\"resi must be an integer\");t&&(e*=-1),r.rules.push({resno:e})}else{if(2!==i.length)throw new Error(\"resi range must contain one '-'\");{const s=i.map((t=>parseInt(t)));t&&(s[0]*=-1),e&&(s[1]*=-1),r.rules.push({resno:[s[0],s[1]]})}}}if(1===r.rules.length)l(r.rules[0]);else{if(!(r.rules.length>1))throw new Error(\"empty selection chunk\");l(r)}}return void 0===e.operator&&1===e.rules.length&&e.rules[0].hasOwnProperty(\"operator\")&&(e=e.rules[0]),e}(t)}catch(t){this.selection={error:t.message}}const i=this.selection;this.string=t,this.test=he(i),this.residueTest=de(i),this.chainTest=ue(i),this.modelTest=me(i),this.atomOnlyTest=he(i,!0),this.residueOnlyTest=de(i,!0),this.chainOnlyTest=ue(i,!0),this.modelOnlyTest=me(i,!0),e||this.signals.stringChanged.dispatch(this.string)}isAllSelection(){return Gt.includes(this.string.toUpperCase())}isNoneSelection(){return Ut.includes(this.string.toUpperCase())}}class fe extends zt{constructor(t){super(t),this.colormakerList=[],this.selectionList=[];(t.dataList||[]).forEach((t=>{const[e,i,r={}]=t;Fe.hasScheme(e)?Object.assign(r,{scheme:e,structure:this.parameters.structure}):Object.assign(r,{scheme:\"uniform\",value:new s(e).getHex()}),this.colormakerList.push(Fe.getScheme(r)),this.selectionList.push(new pe(i))}))}atomColor(t){for(let e=0,i=this.selectionList.length;e{}),t)}catch(t){}const Se=\"undefined\"!=typeof window&&void 0!==window.orientation;let Ce=!1;function Pe(t){Ce=t}let Ie=!1;function ke(t){Ie=t}const Me={log:Function.prototype.bind.call(console.log,console),info:Function.prototype.bind.call(console.info,console),warn:Function.prototype.bind.call(console.warn,console),error:Function.prototype.bind.call(console.error,console),time:Function.prototype.bind.call(console.time,console),timeEnd:Function.prototype.bind.call(console.timeEnd,console)};let Te={color:\"green\",labelColor:8421504,labelAttachment:\"bottom-center\",labelSize:.7,labelZOffset:.5,labelYOffset:.1,labelBorder:!0,labelBorderColor:13882323,labelBorderWidth:.25,lineOpacity:.8,linewidth:5,opacity:.6,labelUnit:\"angstrom\",arcVisible:!0,planeVisible:!1};function Be(t={}){Object.assign(Te,t)}let De=!!($e=rt(\"debug\"))&&(\"string\"!=typeof $e||/^1|true|t|yes|y$/i.test($e));var $e;function Oe(t){De=t}const Re=[\"ngl\",\"js\"],Ee=new class{constructor(){this.activeWorkerCount=0,this._funcDict={},this._depsDict={},this._blobDict={}}add(t,e,i){this._funcDict[t]=e,this._depsDict[t]=i}get(t){return this._blobDict[t]||(this._blobDict[t]=we(this._funcDict[t],this._depsDict[t])),this._blobDict[t]}},Fe=new class{constructor(){this.schemes={},this.userSchemes={}}getScheme(t){const e=((t||{}).scheme||\"\").toLowerCase();let i;return i=e in this.schemes?this.schemes[e]:e in this.userSchemes?this.userSchemes[e]:zt,new i(t)}getSchemes(){const t={};return Object.keys(this.schemes).forEach((function(e){t[e]=e})),Object.keys(this.userSchemes).forEach((function(e){t[e]=e.split(\"|\")[1]})),t}getScales(){return ge}getModes(){return ye}add(t,e){t=t.toLowerCase(),this.schemes[t]=e}addScheme(t,e){return function(t){return t instanceof zt}(t)||(t=this._createScheme(t)),this._addUserScheme(t,e)}_addUserScheme(t,e){e=e||\"\";const i=`${Bt()}|${e}`.toLowerCase();return this.userSchemes[i]=t,i}removeScheme(t){t=t.toLowerCase(),delete this.userSchemes[t]}_createScheme(t){return class extends zt{constructor(e){super(e),t.call(this,e)}}}addSelectionScheme(t,e){return this._addUserScheme(class extends fe{constructor(e){super(Object.assign({dataList:t},e))}},e)}hasScheme(t){return(t=t.toLowerCase())in this.schemes||t in this.userSchemes}},Le=new It(\"datasource\"),Ne=new It(\"representatation\"),ze=new class extends It{constructor(){super(\"parser\")}__hasObjName(t,e){const i=this.get(t);return i&&i.prototype.__objName===e}isTrajectory(t){return this.__hasObjName(t,\"frames\")}isStructure(t){return this.__hasObjName(t,\"structure\")}isVolume(t){return this.__hasObjName(t,\"volume\")}isSurface(t){return this.__hasObjName(t,\"surface\")}isBinary(t){const e=this.get(t);return e&&e.prototype.isBinary}isXml(t){const e=this.get(t);return e&&e.prototype.isXml}isJson(t){const e=this.get(t);return e&&e.prototype.isJson}getTrajectoryExtensions(){return this.names.filter((t=>this.isTrajectory(t)))}getStructureExtensions(){return this.names.filter((t=>this.isStructure(t)))}getVolumeExtensions(){return this.names.filter((t=>this.isVolume(t)))}getSurfaceExtensions(){return this.names.filter((t=>this.isSurface(t)))}},Ve=new It(\"shader\"),Ge=new It(\"decompressor\"),Ue=new It(\"component\"),je=new It(\"buffer\"),He=new It(\"picker\");let We,qe;function Xe(t){We=t}function Ye(t){qe=t}class Ke{constructor(t,e={}){this.chunkSize=10485760,this.newline=\"\\n\",this.__pointer=0,this.__partialLine=\"\",this.compressed=st(e.compressed,!1),this.binary=st(e.binary,!1),this.json=st(e.json,!1),this.xml=st(e.xml,!1),this.src=t}isBinary(){return this.binary||this.compressed}read(){return this._read().then((t=>{const e=this.compressed?Ge.get(this.compressed):void 0;return this.compressed&&e?this.data=e(t):((this.binary||this.compressed)&&t instanceof ArrayBuffer&&(t=new Uint8Array(t)),this.data=t),this.data}))}_chunk(t,e){return e=Math.min(this.data.length,e),0===t&&this.data.length===e?this.data:this.isBinary()?this.data.subarray(t,e):this.data.substring(t,e)}chunk(t){const e=t+this.chunkSize;return this._chunk(t,e)}peekLines(t){const e=this.data,i=e.length,r=this.isBinary()?this.newline.charCodeAt(0):this.newline;let s,n=0;for(s=0;si).lines}chunkCount(){return Math.floor(this.data.length/this.chunkSize)+1}asText(){return this.isBinary()?yt(this.data):this.data}chunkToLines(t,e,i){const r=this.newline;if(!this.isBinary()&&t.length===this.data.length)return{lines:t.split(r),partialLine:\"\"};let s=[];const n=this.isBinary()?yt(t):t,o=n.lastIndexOf(r);if(-1===o)e+=n;else{const t=e+n.substr(0,o);s=s.concat(t.split(r)),e=o===n.length-r.length?\"\":n.substr(o+r.length)}return i&&\"\"!==e&&s.push(e),{lines:s,partialLine:e}}nextChunk(){const t=this.__pointer;if(!(t>this.data.length))return this.__pointer+=this.chunkSize,this.chunk(t)}nextChunkOfLines(){const t=this.nextChunk();if(void 0===t)return;const e=this.__pointer>this.data.length,i=this.chunkToLines(t,this.__partialLine,e);return this.__partialLine=i.partialLine,i.lines}eachChunk(t){const e=this.chunkSize,i=this.data.length,r=this.chunkCount();for(let s=0;s{const s=i===r+1,n=this.chunkToLines(e,this.__partialLine,s);this.__partialLine=n.partialLine,t(n.lines,i,r)}))}dispose(){delete this.src}}class Ze extends Ke{_read(){return new Promise(((t,e)=>{const i=this.src,r=new FileReader;r.onload=e=>{e.target&&t(e.target.result)},r.onerror=t=>e(t),this.binary||this.compressed?r.readAsArrayBuffer(i):r.readAsText(i)}))}}class Qe extends Ke{_read(){return new Promise(((t,e)=>{const i=this.src,r=new XMLHttpRequest;r.open(\"GET\",i,!0),r.addEventListener(\"load\",(()=>{if(200===r.status||304===r.status||0===r.status)try{t(r.response)}catch(t){e(t)}else e(r.statusText)}),!1),r.addEventListener(\"error\",(t=>e(\"network error\")),!1),this.isBinary()?r.responseType=\"arraybuffer\":this.json?r.responseType=\"json\":this.xml?r.responseType=\"document\":r.responseType=\"text\",r.send()}))}}class Je{constructor(t,e={}){this.parameters=nt(e,{ext:\"\",compressed:!1,binary:ze.isBinary(e.ext||\"\"),name:\"\",dir:\"\",path:\"\",protocol:\"\"});const i={compressed:this.parameters.compressed,binary:this.parameters.binary,json:ze.isJson(this.parameters.ext),xml:ze.isXml(this.parameters.ext)};\"undefined\"!=typeof File&&t instanceof File||\"undefined\"!=typeof Blob&&t instanceof Blob?this.streamer=new Ze(t,i):this.streamer=new Qe(t,i)}}class ti extends Je{constructor(t,e={}){super(t,e),this.parserParams={voxelSize:e.voxelSize,firstModelOnly:e.firstModelOnly,asTrajectory:e.asTrajectory,cAlphaOnly:e.cAlphaOnly,delimiter:e.delimiter,comment:e.comment,columnNames:e.columnNames,inferBonds:e.inferBonds,name:this.parameters.name,path:this.parameters.path}}load(){return new(ze.get(this.parameters.ext))(this.streamer,this.parserParams).parse()}}class ei{constructor(t,e,i){this.name=e,this.path=i,this.signals={elementAdded:new et,elementRemoved:new et,nameChanged:new et},this.type=\"Script\",this.dir=i.substring(0,i.lastIndexOf(\"/\")+1);try{this.fn=new Function(\"stage\",\"__name\",\"__path\",\"__dir\",t)}catch(t){Me.error(\"Script compilation failed\",t),this.fn=function(){}}}run(t){return new Promise(((e,i)=>{try{this.fn.apply(null,[t,this.name,this.path,this.dir]),e()}catch(t){Me.error(\"Script.fn\",t),i(t)}}))}}class ii extends Je{load(){return this.streamer.read().then((()=>new ei(this.streamer.asText(),this.parameters.name,this.parameters.path)))}}function ri(t){const e=Ge.names;let i,r,s=\"\";i=t instanceof File?t.name:t instanceof Blob?\"\":t;const n=i.lastIndexOf(\"?\"),o=-1!==n?i.substring(n):\"\";i=i.substring(0,-1===n?i.length:n);const a=i.replace(/^.*[\\\\/]/,\"\");let c=a.substring(0,a.lastIndexOf(\".\"));const l=a.split(\".\");let h=l.length>1?(l.pop()||\"\").toLowerCase():\"\";const d=i.match(/^(.+):\\/\\/(.+)$/);d&&(s=d[1].toLowerCase(),i=d[2]||\"\");const u=i.substring(0,i.lastIndexOf(\"/\")+1);if(e.includes(h)){r=h;const t=i.length-h.length-1;h=(i.substr(0,t).split(\".\").pop()||\"\").toLowerCase();const e=c.length-h.length-1;c=c.substr(0,e)}else r=!1;return{path:i,name:a,ext:h,base:c,dir:u,compressed:r,protocol:s,query:o,src:t}}function si(t){let e=ri(t);const i=Le.get(e.protocol);return i&&(e=ri(i.getUrl(e.src)),!e.ext&&i.getExt&&(e.ext=i.getExt(t))),e}function ni(t,e={}){const i=Object.assign(si(t),e);let r;return ze.names.includes(i.ext)?r=new ti(i.src,i):Re.includes(i.ext)&&(r=new ii(i.src,i)),r?r.load():Promise.reject(new Error(`autoLoad: ext '${i.ext}' unknown`))}class oi{getBlob(){return new Blob([this.getData()],{type:this.mimeType})}download(t,e){t=st(t,this.defaultName),e=st(e,this.defaultExt),dt(this.getBlob(),`${t}.${e}`)}}class ai extends oi{constructor(t,e){super(),this.mimeType=\"text/plain\",this.defaultName=\"structure\",this.defaultExt=\"pdb\";const i=Object.assign({},e);this.renumberSerial=st(i.renumberSerial,!0),this.remarks=function(t){return Array.isArray(t)?t:[t]}(st(i.remarks,[])),this.structure=t,this._records=[]}_writeRecords(){this._records.length=0,this._writeTitle(),this._writeRemarks(),this._writeAtoms()}_writeTitle(){this._records.push(it(\"TITLE %-74s\",this.structure.name))}_writeRemarks(){this.remarks.forEach((t=>{this._records.push(it(\"REMARK %-73s\",t))})),this.structure.trajectory&&(this._records.push(it(\"REMARK %-73s\",\"Trajectory '\"+this.structure.trajectory.name+\"'\")),this._records.push(it(\"REMARK %-73s\",`Frame ${this.structure.trajectory.frame}`)))}_writeAtoms(){let t=1,e=1,i=\" \",r=\" \";const s=this.structure.modelStore.count>1;this.structure.eachModel((n=>{s&&this._records.push(it(\"MODEL %4d%-66s\",e++,\"\")),n.eachAtom((e=>{const s=e.hetero?\"HETATM%5d %-4s %3s %1s%4d %8.3f%8.3f%8.3f%6.2f%6.2f %4s%2s%1s%1s\":\"ATOM %5d %-4s %3s %1s%4d %8.3f%8.3f%8.3f%6.2f%6.2f %4s%2s%1s%1s\",n=this.renumberSerial?t:e.serial;let o=e.atomname;(1===o.length||o.length<4&&1===e.element.length&&o[0]===e.element)&&(o=\" \"+o),e.formalCharge?(i=Math.abs(e.formalCharge).toPrecision(1),r=e.formalCharge>0?\"+\":\"-\"):(i=\" \",r=\" \"),this._records.push(it(s,n,o,e.resname,st(e.chainname,\" \"),e.resno,e.x,e.y,e.z,st(e.occupancy,1),st(e.bfactor,0),\"\",st(e.element,\"\"),i,r)),t+=1}),this.structure.getSelection()),s&&this._records.push(it(\"%-80s\",\"ENDMDL\"))})),this._records.push(it(\"%-80s\",\"END\"))}getString(){return console.warn(\"PdbWriter.getString() is deprecated, use .getData instead\"),this.getData()}getData(){return this._writeRecords(),this._records.join(\"\\n\")}}class ci extends oi{constructor(t){super(),this.mimeType=\"text/plain\",this.defaultName=\"structure\",this.defaultExt=\"sdf\",this.structure=t,this._records=[]}get idString(){return this.structure.id}get titleString(){return\" \"+this.structure.title}get countsString(){return it(\"%3i%3i 0 0 0 0 0 0 0 0999 V2000\",this.structure.atomCount,this.structure.bondCount)}get chargeLines(){const t=[];this.structure.eachAtom((e=>{null!=e.formalCharge&&0!==e.formalCharge&&t.push([e.index,e.formalCharge])}));const e=[];for(let i=0;i{this._records.push(this.formatAtom(t))})),this.structure.eachBond((t=>{this._records.push(this.formatBond(t))})),this.chargeLines.forEach((t=>{this._records.push(t)})),this._records.push(\"M END\")}_writeFooter(){this._records.push(\"$$$$\")}getData(){return this._writeRecords(),this._records.join(\"\\n\")}}const li=[];class hi{constructor(t,e={}){this._mark=0,this._marks=[],this.offset=0,this.littleEndian=!0;let i=!1;void 0===t&&(t=8192),\"number\"==typeof t?t=new ArrayBuffer(t):i=!0;const r=e.offset?e.offset>>>0:0;let s=t.byteLength-r,n=r;t instanceof ArrayBuffer||(t.byteLength!==t.buffer.byteLength&&(n=t.byteOffset+r),t=t.buffer),this._lastWrittenByte=i?s:0,this.buffer=t,this.length=s,this.byteLength=s,this.byteOffset=n,this._data=new DataView(this.buffer,n,s)}available(t){return void 0===t&&(t=1),this.offset+t<=this.length}isLittleEndian(){return this.littleEndian}setLittleEndian(){return this.littleEndian=!0,this}isBigEndian(){return!this.littleEndian}setBigEndian(){return this.littleEndian=!1,this}skip(t){return void 0===t&&(t=1),this.offset+=t,this}seek(t){return this.offset=t,this}mark(){return this._mark=this.offset,this}reset(){return this.offset=this._mark,this}pushMark(){return this._marks.push(this.offset),this}popMark(){const t=this._marks.pop();if(void 0===t)throw new Error(\"Mark stack empty\");return this.seek(t),this}rewind(){return this.offset=0,this}ensureAvailable(t){if(void 0===t&&(t=1),!this.available(t)){const e=2*(this.offset+t),i=new Uint8Array(e);i.set(new Uint8Array(this.buffer)),this.buffer=i.buffer,this.length=this.byteLength=e,this._data=new DataView(this.buffer)}return this}readBoolean(){return 0!==this.readUint8()}readInt8(){return this._data.getInt8(this.offset++)}readUint8(){return this._data.getUint8(this.offset++)}readByte(){return this.readUint8()}readBytes(t){void 0===t&&(t=1);for(var e=new Uint8Array(t),i=0;ithis._lastWrittenByte&&(this._lastWrittenByte=this.offset)}}class di extends oi{constructor(t){super(),this.mimeType=\"application/vnd.ms-pki.stl\",this.defaultName=\"surface\",this.defaultExt=\"stl\",this.surface=t}getData(){const t=this.surface.index.length/3,i=new hi(2*t+3*t*4*4+80+4);i.skip(80),i.writeUint32(t);const r=new e,s=new e,n=new e,o=new e;for(let e=0;e{0===this.count&&(this.signals.countChanged.remove(i,this),t.call(e))};this.signals.countChanged.add(i,this)}}dispose(){this.clear(),this.signals.countChanged.dispose()}}Ve.add(\"shader/BasicLine.vert\",\"void main(){\\n#include begin_vertex\\n#include project_vertex\\n}\"),Ve.add(\"shader/BasicLine.frag\",\"uniform vec3 uColor;\\n#include common\\n#include fog_pars_fragment\\nvoid main(){\\ngl_FragColor = vec4( uColor, 1.0 );\\n#include premultiplied_alpha_fragment\\n#include tonemapping_fragment\\n#include encodings_fragment\\n#include fog_fragment\\n}\"),Ve.add(\"shader/Quad.vert\",\"varying vec2 vUv;\\nvoid main() {\\nvUv = uv;\\ngl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\"),Ve.add(\"shader/Quad.frag\",\"varying vec2 vUv;\\nuniform sampler2D tForeground;\\nuniform float scale;\\nvoid main() {\\nvec4 foreground = texture2D( tForeground, vUv );\\ngl_FragColor = foreground * scale;\\n}\");class mi{constructor(){this.signals={updated:new tt.Signal},this.maxDuration=-1/0,this.minDuration=1/0,this.avgDuration=14,this.lastDuration=1/0,this.prevFpsTime=0,this.lastFps=1/0,this.lastFrames=1,this.frames=0,this.count=0,this.begin()}update(){this.startTime=this.end(),this.currentTime=this.startTime,this.signals.updated.dispatch()}begin(){this.startTime=window.performance.now(),this.lastFrames=this.frames}end(){const t=window.performance.now();return this.count+=1,this.frames+=1,this.lastDuration=t-this.startTime,this.minDuration=Math.min(this.minDuration,this.lastDuration),this.maxDuration=Math.max(this.maxDuration,this.lastDuration),this.avgDuration-=this.avgDuration/30,this.avgDuration+=this.lastDuration/30,t>this.prevFpsTime+1e3&&(this.lastFps=this.frames,this.prevFpsTime=t,this.frames=0),t}}Ve.add(\"shader/chunk/fog_fragment.glsl\",\"#ifdef USE_FOG\\nfloat depth = length( vViewPosition );\\n#ifdef FOG_EXP2\\nfloat fogFactor = whiteCompliment( exp2( - fogDensity * fogDensity * depth * depth * LOG2 ) );\\n#else\\nfloat fogFactor = smoothstep( fogNear, fogFar, depth );\\n#endif\\ngl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\"),Ve.add(\"shader/chunk/interior_fragment.glsl\",\"if( gl_FrontFacing == false ){\\n#ifdef USE_INTERIOR_COLOR\\noutgoingLight.xyz = interiorColor;\\n#else\\n#ifdef DIFFUSE_INTERIOR\\noutgoingLight.xyz = vColor;\\n#endif\\n#endif\\noutgoingLight.xyz *= 1.0 - interiorDarkening;\\n}\"),Ve.add(\"shader/chunk/matrix_scale.glsl\",\"float matrixScale( in mat4 m ){\\nvec4 r = m[ 0 ];\\nreturn sqrt( r[ 0 ] * r[ 0 ] + r[ 1 ] * r[ 1 ] + r[ 2 ] * r[ 2 ] );\\n}\"),Ve.add(\"shader/chunk/nearclip_vertex.glsl\",\"#ifdef NEAR_CLIP\\nif( vViewPosition.z < clipNear - 5.0 )\\ngl_Position.z = 2.0 * gl_Position.w;\\n#endif\"),Ve.add(\"shader/chunk/nearclip_fragment.glsl\",\"#ifdef NEAR_CLIP\\nif( vViewPosition.z < clipNear )\\ndiscard;\\n#endif\"),Ve.add(\"shader/chunk/opaque_back_fragment.glsl\",\"#ifdef OPAQUE_BACK\\n#ifdef FLIP_SIDED\\nif( gl_FrontFacing == true ){\\ngl_FragColor.a = 1.0;\\n}\\n#else\\nif( gl_FrontFacing == false ){\\ngl_FragColor.a = 1.0;\\n}\\n#endif\\n#endif\"),Ve.add(\"shader/chunk/radiusclip_vertex.glsl\",\"#ifdef RADIUS_CLIP\\nif( distance( vViewPosition, vClipCenter ) > clipRadius + 5.0 )\\ngl_Position.z = 2.0 * gl_Position.w;\\n#endif\"),Ve.add(\"shader/chunk/radiusclip_fragment.glsl\",\"#ifdef RADIUS_CLIP\\nif( distance( vViewPosition, vClipCenter ) > clipRadius )\\ndiscard;\\n#endif\"),Ve.add(\"shader/chunk/unpack_color.glsl\",\"vec3 unpackColor(float f) {\\nvec3 color;\\ncolor.r = floor(f / 256.0 / 256.0);\\ncolor.g = floor((f - color.r * 256.0 * 256.0) / 256.0);\\ncolor.b = floor(f - color.r * 256.0 * 256.0 - color.g * 256.0);\\nreturn color / 255.0;\\n}\");const pi=/^(?!\\/\\/)\\s*#include\\s+(\\S+)/gim,fi={};function gi(t,e={}){let i=t+\"|\";for(const t in e)i+=t+\":\"+e[t];if(!fi[i]){const r=function(t){if(void 0===t)return\"\";const e=[];for(const i in t){const r=t[i];r&&e.push(`#define ${i} ${r}`)}return e.join(\"\\n\")+\"\\n\"}(e);let s=Ve.get(`shader/${t}`);if(!s)throw new Error(`empty shader, '${t}'`);s=s.replace(pi,(function(t,e){const i=`shader/chunk/${e}.glsl`,r=Ve.get(i)||n[e];if(!r)throw new Error(`empty chunk, '${e}'`);return r})),fi[i]=r+s}return fi[i]}if(\"undefined\"!=typeof WebGLRenderingContext){const t=WebGLRenderingContext.prototype,e=t.getShaderParameter;t.getShaderParameter=function(){return!De||e.apply(this,arguments)};const i=t.getShaderInfoLog;t.getShaderInfoLog=function(){return De?i.apply(this,arguments):\"\"};const r=t.getProgramParameter;t.getProgramParameter=function(e,i){return!De&&i===t.LINK_STATUS||r.apply(this,arguments)};const s=t.getProgramInfoLog;t.getProgramInfoLog=function(){return De?s.apply(this,arguments):\"\"}}const yi=[[[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]]];yi.forEach((t=>{t.forEach((t=>{t[0]*=.0625,t[1]*=.0625}))}));class bi{constructor(t,e,i,r){this.canvas=document.createElement(\"canvas\"),this._viewer=i,this._factor=st(r.factor,2),this._antialias=st(r.antialias,!1),this._onProgress=r.onProgress,this._onFinish=r.onFinish,this._antialias&&(this._factor*=2),this._n=this._factor*this._factor,this._width=this._viewer.width,this._height=this._viewer.height,this._antialias?(this.canvas.width=this._width*this._factor/2,this.canvas.height=this._height*this._factor/2):(this.canvas.width=this._width*this._factor,this.canvas.height=this._height*this._factor),this._ctx=this.canvas.getContext(\"2d\"),this._viewerSampleLevel=i.sampleLevel,this._viewer.setSampling(-1)}_renderTile(t){const e=this._viewer,i=this._width,r=this._height,s=this._factor,n=t%s*i,o=Math.floor(t/s)*r;if(e.camera.setViewOffset(i*s,r*s,n,o,i,r),e.render(),this._antialias){const t=Math.round((n+i)/2)-Math.round(n/2),s=Math.round((o+r)/2)-Math.round(o/2);this._ctx.drawImage(e.renderer.domElement,Math.round(n/2),Math.round(o/2),t,s)}else this._ctx.drawImage(e.renderer.domElement,Math.floor(n),Math.floor(o),Math.ceil(i),Math.ceil(r));\"function\"==typeof this._onProgress&&this._onProgress(t+1,this._n,!1)}_finalize(){this._viewer.setSampling(this._viewerSampleLevel),this._viewer.camera.view=null,\"function\"==typeof this._onFinish&&this._onFinish(this._n+1,this._n,!1)}render(){for(let t=0;t<=this._n;++t)t===this._n?this._finalize():this._renderTile(t)}renderAsync(){let t=0;const e=this._n,i=()=>{t===e?this._finalize():this._renderTile(t),t+=1};for(let t=0;t<=e;++t)setTimeout(i,0)}}const xi=2*Math.PI,vi=180/Math.PI;function wi(t,e,i=1,r=0,s){const n=s?s.length:t.length/i;let o=0,a=0;if(s)for(let c=0;ce&&(e=t[i]);return e}function Di(t){let e=1/0;for(let i=0,r=t.length;i=0;l--){for(c=o-1;c>=0;c--)if(d=4*(l*o+c),a[d]!==e||a[d+1]!==i||a[d+2]!==r||a[d+3]!==s){h=!0;break}if(h)break}const p=l;for(h=!1,c=o-1;c>=0;c--){for(l=n-1;l>=0;l--)if(d=4*(l*o+c),a[d]!==e||a[d+1]!==i||a[d+2]!==r||a[d+3]!==s){h=!0;break}if(h)break}const f=c,g=document.createElement(\"canvas\");return g.width=f-m,g.height=p-u,g.getContext(\"2d\").drawImage(t,m,u,g.width,g.height,0,0,g.width,g.height),g}(t,n?0:255*e.r,n?0:255*e.g,n?0:255*e.b,n?0:255)}return t}function u(t,i,r){\"function\"==typeof e.onProgress&&e.onProgress(t,i,r)}return new Promise((function(e,i){const l=new bi(o,a,t,{factor:r,antialias:s,onProgress:u,onFinish:function(r,s){d(l.canvas).toBlob((function(r){o.setClearAlpha(c),h(!0),t.requestRender(),u(s,s,!0),r?e(r):i(\"error creating image\")}),\"image/png\")}});o.setClearAlpha(n?0:1),h(),l.renderAsync()}))}const Fi=new e,Li=new i,Ni=new i;const zi=new t,Vi=new i,Gi=new i;function Ui(t,e){Vi.getInverse(e.projectionMatrix),Gi.copy(e.projectionMatrix).transpose(),t.traverse((function(t){const e=t.material;if(!e)return;const i=e.uniforms;i&&(i.projectionMatrixInverse&&i.projectionMatrixInverse.value.copy(Vi),i.projectionMatrixTranspose&&i.projectionMatrixTranspose.value.copy(Gi))}))}function ji(t,e,i){const r=t.createShader(i);if(!r)return void console.log(`error creating WebGL shader ${i}`);t.shaderSource(r,e),t.compileShader(r);return t.getShaderParameter(r,t.COMPILE_STATUS)?r:(console.log(`error compiling shader ${r}: ${t.getShaderInfoLog(r)}`),t.deleteShader(r),null)}function Hi(t,e){const i=t.getExtension(e);return i||console.log(`extension '${e}' not available`),i}const Wi=new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]);function qi(t){const e=document.createElement(\"canvas\");e.width=16,e.height=16,e.style.width=\"16px\",e.style.height=\"16px\";const i=e.getContext(\"webgl\")||e.getContext(\"experimental-webgl\");if(!i)return console.log(`error creating webgl context for ${t}`),!1;if(!(i instanceof WebGLRenderingContext))return console.log(\"Got unexpected type for WebGL rendering context\"),!1;Hi(i,\"OES_texture_float\"),Hi(i,\"OES_texture_half_float\"),Hi(i,\"WEBGL_color_buffer_float\");const r=ji(i,\"\\nattribute vec4 a_position;\\n\\nvoid main() {\\n gl_Position = a_position;\\n}\",i.VERTEX_SHADER),s=ji(i,\"\\nprecision mediump float;\\nuniform vec4 u_color;\\nuniform sampler2D u_texture;\\n\\nvoid main() {\\n gl_FragColor = texture2D(u_texture, vec2(0.5, 0.5)) * u_color;\\n}\",i.FRAGMENT_SHADER);if(!r||!s)return!1;const n=function(t,e,i,r){const s=t.createProgram();return s?(e.forEach((e=>t.attachShader(s,e))),i&&i.forEach(((e,i)=>{t.bindAttribLocation(s,r?r[i]:i,e)})),t.linkProgram(s),t.getProgramParameter(s,t.LINK_STATUS)?s:(console.log(`error linking program: ${t.getProgramInfoLog(s)}`),t.deleteProgram(s),null)):void console.log(\"error creating WebGL program\")}(i,[r,s]);if(!n)return console.log(\"error creating WebGL program\"),!1;i.useProgram(n);const o=i.getAttribLocation(n,\"a_position\"),a=i.getUniformLocation(n,\"u_color\");if(!a)return console.log(\"error getting 'u_color' uniform location\"),!1;const c=i.createBuffer();i.bindBuffer(i.ARRAY_BUFFER,c),i.bufferData(i.ARRAY_BUFFER,Wi,i.STATIC_DRAW),i.enableVertexAttribArray(o),i.vertexAttribPointer(o,2,i.FLOAT,!1,0,0);const l=i.createTexture(),h=new Uint8Array([255,255,255,255]);i.bindTexture(i.TEXTURE_2D,l),i.texImage2D(i.TEXTURE_2D,0,i.RGBA,1,1,0,i.RGBA,i.UNSIGNED_BYTE,h);const d=i.createTexture();i.bindTexture(i.TEXTURE_2D,d),i.texImage2D(i.TEXTURE_2D,0,i.RGBA,1,1,0,i.RGBA,t,null),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,i.NEAREST),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,i.NEAREST);const u=i.createFramebuffer();i.bindFramebuffer(i.FRAMEBUFFER,u),i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,d,0);if(i.checkFramebufferStatus(i.FRAMEBUFFER)!==i.FRAMEBUFFER_COMPLETE)return console.log(`error creating framebuffer for ${t}`),!1;i.bindTexture(i.TEXTURE_2D,l),i.uniform4fv(a,[0,10,20,1]),i.drawArrays(i.TRIANGLES,0,6),i.bindTexture(i.TEXTURE_2D,d),i.bindFramebuffer(i.FRAMEBUFFER,null),i.clearColor(1,0,0,1),i.clear(i.COLOR_BUFFER_BIT),i.uniform4fv(a,[0,.1,.05,1]),i.drawArrays(i.TRIANGLES,0,6);const m=new Uint8Array(4);if(i.readPixels(0,0,1,1,i.RGBA,i.UNSIGNED_BYTE,m),0!==m[0]||m[1]<248||m[2]<248||m[3]<254)return console.log(`not able to actually render to ${t} texture`),!1;if(t===i.FLOAT){i.bindFramebuffer(i.FRAMEBUFFER,u);const t=new Float32Array(4);i.readPixels(0,0,1,1,i.RGBA,i.FLOAT,t);const e=i.getError();if(e)return console.log(`error reading pixels as float: '${function(t,e){switch(e){case t.NO_ERROR:return\"no error\";case t.INVALID_ENUM:return\"invalid enum\";case t.INVALID_VALUE:return\"invalid value\";case t.INVALID_OPERATION:return\"invalid operation\";case t.INVALID_FRAMEBUFFER_OPERATION:return\"invalid framebuffer operation\";case t.OUT_OF_MEMORY:return\"out of memory\";case t.CONTEXT_LOST_WEBGL:return\"context lost\"}return\"unknown error\"}(i,e)}'`),!1}return!0}const Xi=new Float32Array(100),Yi=new Uint8Array(100),Ki=[12,7,13,17,11,6,8,18,16,2,14,22,10,1,3,9,19,23,21,15,5,0,4,24,20],Zi=new i;function Qi(t,e,i,r,s){const n=s.uniforms,o=[];if(n&&(n.objectId&&(n.objectId.value=Ce?this.id:this.id/255,o.push(\"objectId\")),(n.modelViewMatrixInverse||n.modelViewMatrixInverseTranspose||n.modelViewProjectionMatrix||n.modelViewProjectionMatrixInverse)&&this.modelViewMatrix.multiplyMatrices(i.matrixWorldInverse,this.matrixWorld),n.modelViewMatrixInverse&&(n.modelViewMatrixInverse.value.getInverse(this.modelViewMatrix),o.push(\"modelViewMatrixInverse\")),n.modelViewMatrixInverseTranspose&&(n.modelViewMatrixInverse?n.modelViewMatrixInverseTranspose.value.copy(n.modelViewMatrixInverse.value).transpose():n.modelViewMatrixInverseTranspose.value.getInverse(this.modelViewMatrix).transpose(),o.push(\"modelViewMatrixInverseTranspose\")),n.modelViewProjectionMatrix&&(n.modelViewProjectionMatrix.value.multiplyMatrices(i.projectionMatrix,this.modelViewMatrix),o.push(\"modelViewProjectionMatrix\")),n.modelViewProjectionMatrixInverse&&(n.modelViewProjectionMatrix?(Zi.copy(n.modelViewProjectionMatrix.value),n.modelViewProjectionMatrixInverse.value.getInverse(Zi)):(Zi.multiplyMatrices(i.projectionMatrix,this.modelViewMatrix),n.modelViewProjectionMatrixInverse.value.getInverse(Zi)),o.push(\"modelViewProjectionMatrixInverse\")),o.length)){const e=t.properties.get(s);if(e.program){const i=t.getContext(),r=e.program;i.useProgram(r.program);const s=r.getUniforms();o.forEach((function(t){s.setValue(i,t,n[t].value)}))}}}class Ji{constructor(t){if(this.boundingBox=new a,this.boundingBoxSize=new e,this.boundingBoxLength=0,this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}},this.distVector=new e,this.signals={ticked:new et,rendered:new et},\"string\"==typeof t){const e=document.getElementById(t);this.container=null===e?document.createElement(\"div\"):e}else t instanceof HTMLElement?this.container=t:this.container=document.createElement(\"div\");if(this.container===document.body)this.width=window.innerWidth||1,this.height=window.innerHeight||1;else{const t=this.container.getBoundingClientRect();this.width=t.width||1,this.height=t.height||1,this.container.style.overflow=\"hidden\"}this.wrapper=document.createElement(\"div\"),this.wrapper.style.position=\"relative\",this.container.appendChild(this.wrapper),this._initParams(),this._initStats(),this._initCamera(),this._initScene(),!1!==this._initRenderer()?(this._initHelper(),this.setBackground(),this.setFog(),this.animate=this.animate.bind(this)):Me.error(\"Viewer: could not initialize renderer\")}_initParams(){this.parameters={fogColor:new s(0),fogNear:50,fogFar:100,backgroundColor:new s(0),cameraType:\"perspective\",cameraFov:40,cameraEyeSep:.3,cameraZ:-80,clipNear:0,clipFar:100,clipDist:10,clipMode:\"scene\",clipScale:\"relative\",lightColor:new s(14540253),lightIntensity:1,ambientColor:new s(14540253),ambientIntensity:.2,sampleLevel:0,rendererEncoding:c}}_initCamera(){const t=new e(0,0,0),{width:i,height:r}=this;this.perspectiveCamera=new l(this.parameters.cameraFov,i/r),this.perspectiveCamera.position.z=this.parameters.cameraZ,this.perspectiveCamera.lookAt(t),this.orthographicCamera=new h(i/-2,i/2,r/2,r/-2),this.orthographicCamera.position.z=this.parameters.cameraZ,this.orthographicCamera.lookAt(t),this.stereoCamera=new d,this.stereoCamera.aspect=.5,this.stereoCamera.eyeSep=this.parameters.cameraEyeSep;const s=this.parameters.cameraType;if(\"orthographic\"===s)this.camera=this.orthographicCamera;else{if(\"perspective\"!==s&&\"stereo\"!==s)throw new Error(`Unknown cameraType '${s}'`);this.camera=this.perspectiveCamera}this.camera.updateProjectionMatrix()}_initStats(){this.stats=new mi}_initScene(){this.scene||(this.scene=new u,this.scene.name=\"scene\"),this.rotationGroup=new m,this.rotationGroup.name=\"rotationGroup\",this.scene.add(this.rotationGroup),this.translationGroup=new m,this.translationGroup.name=\"translationGroup\",this.rotationGroup.add(this.translationGroup),this.modelGroup=new m,this.modelGroup.name=\"modelGroup\",this.translationGroup.add(this.modelGroup),this.pickingGroup=new m,this.pickingGroup.name=\"pickingGroup\",this.translationGroup.add(this.pickingGroup),this.backgroundGroup=new m,this.backgroundGroup.name=\"backgroundGroup\",this.translationGroup.add(this.backgroundGroup),this.helperGroup=new m,this.helperGroup.name=\"helperGroup\",this.translationGroup.add(this.helperGroup),this.scene.fog=new p(this.parameters.fogColor.getHex()),this.spotLight=new f(this.parameters.lightColor.getHex(),this.parameters.lightIntensity),this.scene.add(this.spotLight),this.ambientLight=new g(this.parameters.ambientColor.getHex(),this.parameters.ambientIntensity),this.scene.add(this.ambientLight)}_initRenderer(){const t=window.devicePixelRatio,{width:e,height:i}=this;try{this.renderer=new y({preserveDrawingBuffer:!0,alpha:!0,antialias:!0})}catch(t){return this.wrapper.innerHTML='

Your browser/graphics card does not seem to support WebGL.

Find out how to get it here.

',!1}this.renderer.setPixelRatio(t),this.renderer.setSize(e,i),this.renderer.autoClear=!1,this.renderer.sortObjects=!0,this.renderer.outputEncoding=this.parameters.rendererEncoding;const r=this.renderer.getContext();this.renderer.capabilities.isWebGL2?(ke(!0),Pe(this.renderer.extensions.get(\"EXT_color_buffer_float\")),this.supportsHalfFloat=!0):(ke(this.renderer.extensions.get(\"EXT_frag_depth\")),this.renderer.extensions.get(\"OES_element_index_uint\"),Pe(this.renderer.extensions.get(\"OES_texture_float\")&&this.renderer.extensions.get(\"WEBGL_color_buffer_float\")||this.renderer.extensions.get(\"OES_texture_float\")&&qi(r.FLOAT)),this.renderer.extensions.get(\"OES_texture_float\"),this.supportsHalfFloat=this.renderer.extensions.get(\"OES_texture_half_float\")&&qi(36193)),this.wrapper.appendChild(this.renderer.domElement);const s=e*t,n=i*t;De&&console.log(JSON.stringify({Browser:Ae,OES_texture_float:!!this.renderer.extensions.get(\"OES_texture_float\"),OES_texture_half_float:!!this.renderer.extensions.get(\"OES_texture_half_float\"),WEBGL_color_buffer_float:!!this.renderer.extensions.get(\"WEBGL_color_buffer_float\"),\"testTextureSupport Float\":qi(r.FLOAT),\"testTextureSupport HalfFloat\":qi(36193),\"this.supportsHalfFloat\":this.supportsHalfFloat,SupportsReadPixelsFloat:Ce},null,2)),this.pickingTarget=new b(s,n,{minFilter:x,magFilter:x,stencilBuffer:!1,format:v,type:Ce?D:w}),this.pickingTarget.texture.generateMipmaps=!1,this.pickingTarget.texture.encoding=this.parameters.rendererEncoding,this.renderer.setRenderTarget(this.pickingTarget),this.renderer.clear(),this.renderer.setRenderTarget(null),this.sampleTarget=new b(s,n,{minFilter:A,magFilter:A,format:v}),this.sampleTarget.texture.encoding=this.parameters.rendererEncoding,this.holdTarget=new b(s,n,{minFilter:x,magFilter:x,format:v,type:w}),this.holdTarget.texture.encoding=this.parameters.rendererEncoding,this.compositeUniforms={tForeground:new _(this.sampleTarget.texture),scale:new _(1)},this.compositeMaterial=new S({uniforms:this.compositeUniforms,vertexShader:gi(\"Quad.vert\"),fragmentShader:gi(\"Quad.frag\"),premultipliedAlpha:!0,transparent:!0,blending:C,depthTest:!1,depthWrite:!1}),this.compositeCamera=new h(-1,1,1,-1,0,1),this.compositeScene=new u,this.compositeScene.name=\"compositeScene\",this.compositeScene.add(new P(new I(2,2),this.compositeMaterial))}_initHelper(){const t=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]),e=new Float32Array(24),i=new k;i.setIndex(new M(t,1)),i.setAttribute(\"position\",new M(e,3));const r=new S({uniforms:{uColor:{value:new s(\"skyblue\")}},vertexShader:gi(\"BasicLine.vert\"),fragmentShader:gi(\"BasicLine.frag\")});this.boundingBoxMesh=new T(i,r),this.helperGroup.add(this.boundingBoxMesh)}updateHelper(){const t=this.boundingBoxMesh.geometry.attributes.position,e=t.array,{min:i,max:r}=this.boundingBox;e[0]=r.x,e[1]=r.y,e[2]=r.z,e[3]=i.x,e[4]=r.y,e[5]=r.z,e[6]=i.x,e[7]=i.y,e[8]=r.z,e[9]=r.x,e[10]=i.y,e[11]=r.z,e[12]=r.x,e[13]=r.y,e[14]=i.z,e[15]=i.x,e[16]=r.y,e[17]=i.z,e[18]=i.x,e[19]=i.y,e[20]=i.z,e[21]=r.x,e[22]=i.y,e[23]=i.z,t.needsUpdate=!0,this.boundingBox.isEmpty()||this.boundingBoxMesh.geometry.computeBoundingSphere()}get cameraDistance(){return Math.abs(this.camera.position.z)}set cameraDistance(t){this.camera.position.z=-t}add(t,e){e?e.forEach((e=>this.addBuffer(t,e))):this.addBuffer(t),t.group.name=\"meshGroup\",t.wireframeGroup.name=\"wireframeGroup\",t.parameters.background?(this.backgroundGroup.add(t.group),this.backgroundGroup.add(t.wireframeGroup)):(this.modelGroup.add(t.group),this.modelGroup.add(t.wireframeGroup)),t.pickable&&this.pickingGroup.add(t.pickingGroup),De&&this.updateHelper()}addBuffer(t,e){function i(r){r instanceof m?r.children.forEach(i):(r.userData.buffer=t,r.userData.instance=e,r.onBeforeRender=Qi)}const r=t.getMesh();e&&r.applyMatrix4(e.matrix),i(r),t.group.add(r);const s=t.getWireframeMesh();if(e&&(s.matrix.copy(r.matrix),s.position.copy(r.position),s.quaternion.copy(r.quaternion),s.scale.copy(r.scale)),i(s),t.wireframeGroup.add(s),t.pickable){const s=t.getPickingMesh();e&&(s.matrix.copy(r.matrix),s.position.copy(r.position),s.quaternion.copy(r.quaternion),s.scale.copy(r.scale)),i(s),t.pickingGroup.add(s)}e?this._updateBoundingBox(t.geometry,t.matrix,e.matrix):this._updateBoundingBox(t.geometry,t.matrix)}remove(t){this.translationGroup.children.forEach((function(e){e.remove(t.group),e.remove(t.wireframeGroup)})),t.pickable&&this.pickingGroup.remove(t.pickingGroup),this.updateBoundingBox(),De&&this.updateHelper()}_updateBoundingBox(t,e,i){const r=this.boundingBox;function s(t,e,i){null==t.boundingBox&&t.computeBoundingBox();const s=t.boundingBox.clone();e&&s.applyMatrix4(e),i&&s.applyMatrix4(i),s.min.equals(s.max)&&s.expandByScalar(5),r.union(s)}function n(t){if(void 0!==t.geometry){let e,i;t.userData.buffer&&(e=t.userData.buffer.matrix),t.userData.instance&&(i=t.userData.instance.matrix),s(t.geometry,e,i)}}t?s(t,e,i):(r.makeEmpty(),this.modelGroup.traverse(n),this.backgroundGroup.traverse(n)),r.getSize(this.boundingBoxSize),this.boundingBoxLength=this.boundingBoxSize.length()}updateBoundingBox(){this._updateBoundingBox(),De&&this.updateHelper()}getPickingPixels(){const{width:t,height:e}=this,i=t*e*4,r=Ce?new Float32Array(i):new Uint8Array(i);return this.render(!0),this.renderer.readRenderTargetPixels(this.pickingTarget,0,0,t,e,r),r}getImage(t){return new Promise((e=>{if(t){const{width:t,height:i}=this,r=t*i*4;let s=this.getPickingPixels();if(Ce){const t=new Uint8Array(r);for(let e=0;e500&&!this.isStill&&this.sampleLevel<3&&-1!==this.sampleLevel){const t=this.sampleLevel;this.sampleLevel=3,this.renderPending=!0,this.render(),this.isStill=!0,this.sampleLevel=t,De&&Me.log(\"rendered still frame\")}this.frameRequest=window.requestAnimationFrame(this.animate)}pick(t,e){if(\"stereo\"===this.parameters.cameraType)return{pid:0,instance:void 0,picker:void 0};t*=window.devicePixelRatio,e*=window.devicePixelRatio,t=Math.max(t-2,0),e=Math.max(e-2,0);let i,r,s=0;const n=Ce?Xi:Yi;this.render(!0),this.renderer.readRenderTargetPixels(this.pickingTarget,t,e,5,5,n);for(let t=0;t22&&(this.stats.begin(),this.isStill=!1),this.renderPending=!0,window.requestAnimationFrame((()=>{this.render(),this.stats.update()})))}updateZoom(){const t=kt(this.perspectiveCamera.fov),e=2*Math.tan(t/2)*this.cameraDistance;this.orthographicCamera.zoom=this.height/e}absoluteToRelative(t){return 50*(1-t/this.bRadius)}relativeToAbsolute(t){return this.bRadius*(1-t/50)}__updateClipping(){const t=this.parameters;this.bRadius=Math.max(10,.5*this.boundingBoxLength),isFinite(this.bRadius)||(this.bRadius=50),this.camera.getWorldPosition(this.distVector),this.cDist=this.distVector.length(),this.cDist||(this.cameraDistance=Math.abs(t.cameraZ),this.cDist=Math.abs(t.cameraZ));const e=this.scene.fog;if(e.color.set(t.fogColor),\"camera\"===t.clipMode)this.camera.near=t.clipNear,this.camera.far=t.clipFar,e.near=t.fogNear,e.far=t.fogFar;else if(\"absolute\"===t.clipScale)this.camera.near=this.cDist-t.clipNear,this.camera.far=this.cDist+t.clipFar,e.near=this.cDist-t.fogNear,e.far=this.cDist+t.fogFar;else{const i=(50-t.clipNear)/50,r=-(50-t.clipFar)/50;this.camera.near=this.cDist-this.bRadius*i,this.camera.far=this.cDist+this.bRadius*r;const s=(50-t.fogNear)/50,n=-(50-t.fogFar)/50;e.near=this.cDist-this.bRadius*s,e.far=this.cDist+this.bRadius*n}\"camera\"!==t.clipMode&&(\"PerspectiveCamera\"===this.camera.type?(this.camera.near=Math.max(.1,t.clipDist,this.camera.near),this.camera.far=Math.max(1,this.camera.far),e.near=Math.max(.1,e.near),e.far=Math.max(1,e.far)):\"OrthographicCamera\"===this.camera.type&&t.clipDist>0&&(this.camera.near=Math.max(t.clipDist,this.camera.near)))}__updateCamera(){const e=this.camera;e.updateMatrix(),e.updateMatrixWorld(!0),e.updateProjectionMatrix(),function(e,i,r,s,n){let o=new t;r.getSize(o);const a=o.height,c=r.getPixelRatio(),l=\"OrthographicCamera\"===i.type;zi.set(o.width,o.height),Vi.getInverse(i.projectionMatrix),Gi.copy(i.projectionMatrix).transpose(),e.traverse((function(t){const e=t.material;if(!e)return;const i=e.uniforms;if(i){if(e.clipNear){const t=(50-e.clipNear)/50,r=s-n*t;i.clipNear.value=r}i.canvasHeight&&(i.canvasHeight.value=a),i.resolution&&i.resolution.value.copy(zi),i.pixelRatio&&(i.pixelRatio.value=c),i.projectionMatrixInverse&&i.projectionMatrixInverse.value.copy(Vi),i.projectionMatrixTranspose&&i.projectionMatrixTranspose.value.copy(Gi),i.ortho&&(i.ortho.value=l)}}))}(this.scene,e,this.renderer,this.cDist,this.bRadius),function(t,e){t.traverseVisible((function(t){if(!(t instanceof o&&t.userData.buffer.parameters.sortParticles))return;const i=t.geometry.attributes,r=i.position.count;if(0===r)return;let s,n,a,c,l,h,d,u;Li.multiplyMatrices(e.matrixWorldInverse,t.matrixWorld),Ni.multiplyMatrices(e.projectionMatrix,Li),t.userData.sortData?(s=t.userData.sortData,a=s.__zArray,n=s.__sortArray,c=s.__cmpFn):(a=new Float32Array(r),n=new Uint32Array(r),c=function(t,e){const i=a[t],r=a[e];return i>r?1:ie?1:t=l&&e(t[o],n)>0;)t[o+1]=t[o],--o;t[o+1]=n}if(-1===c)break;h=s[c--],l=s[c--]}else{for(o=l+1,a=h,d(l+h>>1,o),e(t[l],t[h])>0&&d(l,h),e(t[o],t[h])>0&&d(o,h),e(t[l],t[o])>0&&d(l,o),n=t[o];;){do{o++}while(e(t[o],n)<0);do{a--}while(e(t[a],n)>0);if(a=a-l?(s[++c]=o,s[++c]=h,h=a-1):(s[++c]=l,s[++c]=a-1,l=o)}}(n,c);for(let t in i){const e=i[t],o=e.array,a=e.itemSize;s[t]||(s[t]=new Float32Array(a*r)),u=s[t],s[t]=o;for(let t=0;t0&&\"stereo\"!==this.parameters.cameraType?this.__renderSuperSample(e,i):this.__renderModelGroup(e,i)}render(t=!1,e){if(this.rendering)Me.warn(\"'tried to call 'render' from within 'render'\");else{this.rendering=!0;try{this.__updateClipping(),this.__updateCamera(),this.__updateLights(),this.updateInfo(!0),\"stereo\"===this.parameters.cameraType?this.__renderStereo(t,e):this.__render(t,this.camera,e),this.lastRenderedPicking=t}finally{this.rendering=!1,this.renderPending=!1}this.signals.rendered.dispatch()}}clear(){Me.log(\"scene cleared\"),this.scene.remove(this.rotationGroup),this._initScene(),this.renderer.clear()}dispose(){this.renderer.dispose(),window.cancelAnimationFrame(this.frameRequest)}}const tr=1,er=2,ir=3;function rr(t){const e=t.touches[0].pageX-t.touches[1].pageX,i=t.touches[0].pageY-t.touches[1].pageY;return Math.sqrt(e*e+i*i)}class sr{constructor(e,i={}){this.domElement=e,this.signals={moved:new et,scrolled:new et,dragged:new et,dropped:new et,clicked:new et,hovered:new et,doubleClicked:new et},this.position=new t,this.prevPosition=new t,this.down=new t,this.canvasPosition=new t,this.prevClickCP=new t,this.moving=!1,this.hovering=!0,this.scrolled=!1,this.lastMoved=1/0,this.which=0,this.buttons=0,this.pressed=!1,this.altKey=!1,this.ctrlKey=!1,this.metaKey=!1,this.shiftKey=!1,this.domElement.style.touchAction=\"none\",this.hoverTimeout=st(i.hoverTimeout,50),this.handleScroll=st(i.handleScroll,!0),this.doubleClickSpeed=st(i.doubleClickSpeed,500),this._listen=this._listen.bind(this),this._onMousewheel=this._onMousewheel.bind(this),this._onMousemove=this._onMousemove.bind(this),this._onMousedown=this._onMousedown.bind(this),this._onMouseup=this._onMouseup.bind(this),this._onContextmenu=this._onContextmenu.bind(this),this._onTouchstart=this._onTouchstart.bind(this),this._onTouchend=this._onTouchend.bind(this),this._onTouchmove=this._onTouchmove.bind(this),this._listen();const r={passive:!1};document.addEventListener(\"mousewheel\",this._onMousewheel,r),document.addEventListener(\"wheel\",this._onMousewheel,r),document.addEventListener(\"MozMousePixelScroll\",this._onMousewheel,r),document.addEventListener(\"mousemove\",this._onMousemove,r),document.addEventListener(\"mousedown\",this._onMousedown,r),document.addEventListener(\"mouseup\",this._onMouseup,r),document.addEventListener(\"contextmenu\",this._onContextmenu,r),document.addEventListener(\"touchstart\",this._onTouchstart,r),document.addEventListener(\"touchend\",this._onTouchend,r),document.addEventListener(\"touchmove\",this._onTouchmove,r)}get key(){let t=0;return this.altKey&&(t+=1),this.ctrlKey&&(t+=2),this.metaKey&&(t+=4),this.shiftKey&&(t+=8),t}setParameters(t={}){this.hoverTimeout=st(t.hoverTimeout,this.hoverTimeout)}_listen(){const t=window.performance.now(),e=this.canvasPosition;this.doubleClickPending&&t-this.lastClicked>this.doubleClickSpeed&&(this.doubleClickPending=!1),t-this.lastMoved>this.hoverTimeout&&(this.moving=!1),(this.scrolled||!this.moving&&!this.hovering)&&(this.scrolled=!1,-1!==this.hoverTimeout&&this.overElement&&(this.hovering=!0,this.signals.hovered.dispatch(e.x,e.y))),this.frameRequest=window.requestAnimationFrame(this._listen)}_onMousewheel(t){if(t.target!==this.domElement||!this.handleScroll)return;t.preventDefault(),this._setKeys(t);let e=0;\"deltaY\"in t&&\"deltaMode\"in t&&void 0!==t.deltaY&&void 0!==t.deltaMode?e=t.deltaMode===WheelEvent.DOM_DELTA_PIXEL?.025*-t.deltaY:t.deltaMode===WheelEvent.DOM_DELTA_LINE?-t.deltaY*(2.5/3):2.5*-t.deltaY:\"deltaY\"in t&&!(\"detail\"in t)?e=.025*-t.deltaY:void 0!==t.wheelDelta?e=.025*-t.wheelDelta:void 0!==t.wheelDeltaY?e=.025*-t.wheelDeltaY:void 0!==t.detail&&(e=-t.detail/3),this.signals.scrolled.dispatch(e),setTimeout((()=>{this.scrolled=!0}),this.hoverTimeout)}_onMousemove(t){t.target===this.domElement?(t.preventDefault(),this.overElement=!0):this.overElement=!1,this._setKeys(t),this.moving=!0,this.hovering=!1,this.lastMoved=window.performance.now(),this.prevPosition.copy(this.position),this.position.set(t.clientX,t.clientY),this._setCanvasPosition(t);const e=this.prevPosition.x-this.position.x,i=this.prevPosition.y-this.position.y;this.signals.moved.dispatch(e,i),this.pressed&&this.signals.dragged.dispatch(e,i)}_onMousedown(t){t.target===this.domElement&&(t.preventDefault(),this._setKeys(t),this.moving=!1,this.hovering=!1,this.down.set(t.clientX,t.clientY),this.position.set(t.clientX,t.clientY),this.which=t.which,this.buttons=function(t){if(\"object\"==typeof t){if(\"buttons\"in t)return t.buttons;if(\"which\"in t){const e=t.which;if(2===e)return 4;if(3===e)return 2;if(e>0)return 1<=0)return 1<2&&this.handleScroll&&this.position.distanceTo(this.prevPosition)<2)this.which=0,this.buttons=0,this.signals.scrolled.dispatch(i/2);else{this.which=3,this.buttons=2;const t=this.prevPosition.x-this.position.x,e=this.prevPosition.y-this.position.y;this.signals.moved.dispatch(t,e),this.pressed&&this.signals.dragged.dispatch(t,e)}}}}_distance(){return this.position.distanceTo(this.down)}_setCanvasPosition(t){const e=this.domElement.getBoundingClientRect();let i,r;\"clientX\"in t&&\"clientY\"in t?(i=t.clientX-e.left,r=t.clientY-e.top):(i=t.offsetX,r=t.offsetY),this.canvasPosition.set(i,e.height-r)}_setKeys(t){this.altKey=t.altKey,this.ctrlKey=t.ctrlKey,this.metaKey=t.metaKey,this.shiftKey=t.shiftKey}dispose(){document.removeEventListener(\"mousewheel\",this._onMousewheel),document.removeEventListener(\"wheel\",this._onMousewheel),document.removeEventListener(\"MozMousePixelScroll\",this._onMousewheel),document.removeEventListener(\"mousemove\",this._onMousemove),document.removeEventListener(\"mousedown\",this._onMousedown),document.removeEventListener(\"mouseup\",this._onMouseup),document.removeEventListener(\"contextmenu\",this._onContextmenu),document.removeEventListener(\"touchstart\",this._onTouchstart),document.removeEventListener(\"touchend\",this._onTouchend),document.removeEventListener(\"touchmove\",this._onTouchmove),window.cancelAnimationFrame(this.frameRequest)}}const nr=new i,or=new i,ar=new i,cr=new i,lr=new i,hr=new e,dr=new r,ur=new r,mr=new i,pr=new e,fr=new e;class gr{constructor(t,e={}){this.stage=t,this.rotateSpeed=st(e.rotateSpeed,2),this.zoomSpeed=st(e.zoomSpeed,1.2),this.panSpeed=st(e.panSpeed,1),this.viewer=t.viewer,this.mouse=t.mouseObserver,this.controls=t.viewerControls}get component(){return this.stage.transformComponent}get atom(){return this.stage.transformAtom}_setPanVector(t,e,i=0){const r=this.controls.getCanvasScaleFactor(i);pr.set(t,e,0),pr.multiplyScalar(this.panSpeed*r)}_getRotateXY(t,e){return[this.rotateSpeed*-t*.01,this.rotateSpeed*e*.01]}_getCameraRotation(t){return t.extractRotation(this.viewer.camera.matrixWorld),t.multiply(or.makeRotationY(Math.PI)),t}_transformPanVector(){this.component&&(mr.extractRotation(this.component.transform),mr.premultiply(this.viewer.rotationGroup.matrix),mr.getInverse(mr),mr.multiply(this._getCameraRotation(cr)),pr.applyMatrix4(mr))}zoom(t){this.controls.zoom(this.zoomSpeed*t*.02)}pan(t,e){this._setPanVector(t,e),mr.getInverse(this.viewer.rotationGroup.matrix),mr.multiply(this._getCameraRotation(cr)),pr.applyMatrix4(mr),this.controls.translate(pr)}panComponent(t,e){this.component&&(this._setPanVector(t,e),this._transformPanVector(),this.component.position.add(pr),this.component.updateMatrix())}panAtom(t,e){this.atom&&this.component&&(this.atom.positionToVector3(fr),fr.add(this.viewer.translationGroup.position),fr.applyMatrix4(this.viewer.rotationGroup.matrix),this._setPanVector(t,e,fr.z),this._transformPanVector(),this.atom.positionAdd(pr),this.component.updateRepresentations({position:!0}))}rotate(t,e){const[i,r]=this._getRotateXY(t,e);this._getCameraRotation(cr),hr.set(1,0,0),hr.applyMatrix4(cr),dr.setFromAxisAngle(hr,r),hr.set(0,1,0),hr.applyMatrix4(cr),ur.setFromAxisAngle(hr,i),dr.multiply(ur),cr.makeRotationFromQuaternion(dr),this.controls.applyMatrix(cr)}zRotate(t,e){const i=this.rotateSpeed*((-t+e)/-2)*.01;ar.makeRotationZ(i),this.controls.applyMatrix(ar)}rotateComponent(t,e){if(!this.component)return;const[i,r]=this._getRotateXY(t,e);this._getCameraRotation(lr),cr.extractRotation(this.component.transform),cr.premultiply(this.viewer.rotationGroup.matrix),cr.getInverse(cr),cr.premultiply(lr),hr.set(1,0,0),hr.applyMatrix4(cr),nr.makeRotationAxis(hr,r),hr.set(0,1,0),hr.applyMatrix4(cr),or.makeRotationAxis(hr,i),nr.multiply(or),dr.setFromRotationMatrix(nr),this.component.quaternion.premultiply(dr),this.component.quaternion.normalize(),this.component.updateMatrix()}}const yr=new e;class br{constructor(t,e){this.stage=e,this.pid=t.pid,this.picker=t.picker,this.instance=t.instance,this.stage=e,this.controls=e.viewerControls,this.mouse=e.mouseObserver}get type(){return this.picker.type}get altKey(){return this.mouse.altKey}get ctrlKey(){return this.mouse.ctrlKey}get metaKey(){return this.mouse.metaKey}get shiftKey(){return this.mouse.shiftKey}get canvasPosition(){return this.mouse.canvasPosition}get component(){return this.stage.getComponentsByObject(this.picker.data).list[0]}get object(){return this.picker.getObject(this.pid)}get position(){return this.picker.getPosition(this.pid,this.instance,this.component)}get closestBondAtom(){if(\"bond\"!==this.type||!this.bond)return;const t=this.bond,e=this.controls,i=this.canvasPosition,r=t.atom1.positionToVector3(),s=t.atom2.positionToVector3();r.applyMatrix4(this.component.matrix),s.applyMatrix4(this.component.matrix);const n=e.getPositionOnCanvas(r),o=e.getPositionOnCanvas(s);return c=n,l=o,(a=i).distanceTo(c)=t.length))return new br(i,this.stage);console.error(\"pid >= picker.array.length\")}}}const vr=new r,wr=new e,Ar=new e,_r=new e,Sr=new e,Cr=new i,Pr=new e,Ir=new i;class kr{constructor(t){this.stage=t,this.signals={changed:new tt.Signal},this.viewer=t.viewer}get position(){return this.viewer.translationGroup.position}get rotation(){return this.viewer.rotationGroup.quaternion}changed(){this.viewer.requestRender(),this.signals.changed.dispatch()}getPositionOnCanvas(e,i){const r=wt(i,t);const s=this.viewer;return _r.copy(e).add(s.translationGroup.position).applyMatrix4(s.rotationGroup.matrix).project(s.camera),r.set((_r.x+1)*s.width/2,(_r.y+1)*s.height/2)}getCanvasScaleFactor(t=0){const e=this.viewer.camera;if(e instanceof h)return 1/e.zoom;{t=Math.abs(t),t+=this.getCameraDistance();const i=kt(e.fov);return 2*t*Math.tan(i/2)/this.viewer.height}}getOrientation(t){const e=_t(t);e.copy(this.viewer.rotationGroup.matrix);const i=this.getCameraDistance();return e.scale(Sr.set(i,i,i)),e.setPosition(this.viewer.translationGroup.position),e}orient(t){_t(t).decompose(wr,vr,Ar);const e=this.viewer;e.rotationGroup.setRotationFromQuaternion(vr),e.translationGroup.position.copy(wr),e.cameraDistance=Ar.z,e.updateZoom(),this.changed()}translate(t){this.viewer.translationGroup.position.add(At(t)),this.changed()}center(t){this.viewer.translationGroup.position.copy(At(t)).negate(),this.changed()}zoom(t){this.distance(this.getCameraDistance()*(1-t))}getCameraDistance(){return this.viewer.cameraDistance}distance(t){this.viewer.cameraDistance=Math.max(Math.abs(t),.2),this.viewer.updateZoom(),this.changed()}spin(t,e){Cr.getInverse(this.viewer.rotationGroup.matrix),Pr.copy(At(t)).applyMatrix4(Cr),this.viewer.rotationGroup.rotateOnAxis(Pr,e),this.changed()}rotate(t){this.viewer.rotationGroup.setRotationFromQuaternion(St(t)),this.changed()}align(t){Ir.getInverse(_t(t)),this.viewer.rotationGroup.setRotationFromMatrix(Ir),this.changed()}applyMatrix(t){this.viewer.rotationGroup.applyMatrix4(_t(t)),this.changed()}}class Mr{constructor(t,e,...i){this.pausedTime=-1,this.elapsedDuration=0,this.pausedDuration=0,this.ignoreGlobalToggle=!1,this._paused=!1,this._resolveList=[],this.duration=st(t,1e3),this.controls=e,this.startTime=window.performance.now(),this._init(...i)}get done(){return 1===this.alpha}get paused(){return this._paused}tick(t){if(!this._paused)return this.elapsedDuration=t.currentTime-this.startTime-this.pausedDuration,0===this.duration?this.alpha=1:this.alpha=Rt(0,1,this.elapsedDuration/this.duration),this._tick(t),this.done&&this._resolveList.forEach((t=>t())),this.done}pause(t){t&&(this._hold=!0),-1===this.pausedTime&&(this.pausedTime=window.performance.now()),this._paused=!0}resume(t){!t&&this._hold||(this.pausedDuration+=window.performance.now()-this.pausedTime,this._paused=!1,this._hold=!1,this.pausedTime=-1)}toggle(){this._paused?this.resume():this.pause()}then(t){let e;return e=this.done?Promise.resolve():new Promise((t=>this._resolveList.push(t))),e.then(t)}}class Tr extends Mr{constructor(t,e,...i){super(st(t,1/0),e,...i)}_init(t,i){Array.isArray(t)?this.axis=(new e).fromArray(t):this.axis=st(t,new e(0,1,0)),this.angle=st(i,.01)}_tick(t){this.axis&&this.angle&&this.controls.spin(this.axis,this.angle*t.lastDuration/16)}}class Br extends Mr{constructor(t,e,...i){super(st(t,1/0),e,...i),this.angleSum=0,this.direction=1}_init(t,i,r){Array.isArray(t)?this.axis=(new e).fromArray(t):this.axis=st(t,new e(0,1,0)),this.angleStep=st(i,.01),this.angleEnd=st(r,.2)}_tick(t){if(!this.axis||!this.angleStep||!this.angleEnd)return;const e=Rt(0,1,Math.abs(this.angleSum)/this.angleEnd),i=this.angleStep*this.direction*(1.1-e);this.controls.spin(this.axis,i*t.lastDuration/16),this.angleSum+=this.angleStep,this.angleSum>=this.angleEnd&&(this.direction*=-1,this.angleSum=-this.angleEnd)}}class Dr extends Mr{_init(t,i){this.moveFrom=At(st(t,new e)),this.moveTo=At(st(i,new e))}_tick(){this.controls.position.lerpVectors(this.moveFrom,this.moveTo,this.alpha).negate(),this.controls.changed()}}class $r extends Mr{_init(t,e){this.zoomFrom=t,this.zoomTo=e}_tick(){this.controls.distance($t(this.zoomFrom,this.zoomTo,this.alpha))}}class Or extends Mr{constructor(){super(...arguments),this._currentRotation=new r}_init(t,e){this.rotateFrom=St(t),this.rotateTo=St(e),this._currentRotation=new r}_tick(){this._currentRotation.copy(this.rotateFrom).slerp(this.rotateTo,this.alpha),this.controls.rotate(this._currentRotation)}}class Rr extends Mr{_init(t,e,i){this.valueFrom=t,this.valueTo=e,this.callback=i}_tick(){this.callback($t(this.valueFrom,this.valueTo,this.alpha))}}class Er extends Mr{_init(t){this.callback=t}_tick(){1===this.alpha&&this.callback()}}class Fr{constructor(t=[]){this._resolveList=[],this._list=t}get done(){return this._list.every((t=>t.done))}then(t){let e;return e=this.done?Promise.resolve():new Promise((t=>{this._resolveList.push(t),this._list.forEach((t=>{t.then((()=>{this._resolveList.forEach((t=>{t()})),this._resolveList.length=0}))}))})),e.then(t)}}class Lr{constructor(t){this.stage=t,this.animationList=[],this.finishedList=[],this.viewer=t.viewer,this.controls=t.viewerControls}get paused(){return this.animationList.every((t=>t.paused))}add(t){return 0===t.duration?t.tick(this.viewer.stats):this.animationList.push(t),t}remove(t){const e=this.animationList,i=e.indexOf(t);i>-1&&e.splice(i,1)}run(t){const e=this.finishedList,i=this.animationList,r=i.length;for(let s=0;st.pause()))}resume(){this.animationList.forEach((t=>t.resume()))}toggle(){this.paused?this.resume():this.pause()}clear(){this.animationList.length=0}dispose(){this.clear()}}class Nr{constructor(t,e){if(this.fn=t,this.queue=[],this.pending=!1,this.next=this.next.bind(this),e){for(let t=0,i=e.length;tthis.run(t)))):this.pending=!1}push(t){this.queue.push(t),this.pending||this.next()}kill(){this.queue.length=0}length(){return this.queue.length}}class zr{constructor(t,e,i){this.type=\"\",this.parameters={lazy:{type:\"boolean\"},clipNear:{type:\"range\",step:1,max:100,min:0,buffer:!0},clipRadius:{type:\"number\",precision:1,max:1e3,min:0,buffer:!0},clipCenter:{type:\"vector3\",precision:1,buffer:!0},flatShaded:{type:\"boolean\",buffer:!0},opacity:{type:\"range\",step:.01,max:1,min:0,buffer:!0},depthWrite:{type:\"boolean\",buffer:!0},side:{type:\"select\",buffer:!0,options:{front:\"front\",back:\"back\",double:\"double\"}},wireframe:{type:\"boolean\",buffer:!0},colorData:{type:\"hidden\",update:\"color\"},colorScheme:{type:\"select\",update:\"color\",options:{}},colorScale:{type:\"select\",update:\"color\",options:Fe.getScales()},colorReverse:{type:\"boolean\",update:\"color\"},colorValue:{type:\"color\",update:\"color\"},colorDomain:{type:\"hidden\",update:\"color\"},colorMode:{type:\"select\",update:\"color\",options:Fe.getModes()},roughness:{type:\"range\",step:.01,max:1,min:0,buffer:!0},metalness:{type:\"range\",step:.01,max:1,min:0,buffer:!0},diffuse:{type:\"color\",buffer:!0},diffuseInterior:{type:\"boolean\",buffer:!0},useInteriorColor:{type:\"boolean\",buffer:!0},interiorColor:{type:\"color\",buffer:!0},interiorDarkening:{type:\"range\",step:.01,max:1,min:0,buffer:!0},matrix:{type:\"hidden\",buffer:!0},disablePicking:{type:\"boolean\",rebuild:!0}},this.viewer=e,this.tasks=new ui,this.queue=new Nr(this.make.bind(this)),this.bufferList=[],this.parameters.colorScheme&&(this.parameters.colorScheme.options=Fe.getSchemes()),this.toBePrepared=!1}init(t){const r=t||{};this.clipNear=st(r.clipNear,0),this.clipRadius=st(r.clipRadius,0),this.clipCenter=st(r.clipCenter,new e),this.flatShaded=st(r.flatShaded,!1),this.side=st(r.side,\"double\"),this.opacity=st(r.opacity,1),this.depthWrite=st(r.depthWrite,!0),this.wireframe=st(r.wireframe,!1),this.setColor(r.color,r),this.colorData=st(r.colorData,void 0),this.colorScheme=st(r.colorScheme,\"uniform\"),this.colorScale=st(r.colorScale,\"\"),this.colorReverse=st(r.colorReverse,!1),this.colorValue=st(r.colorValue,9474192),this.colorDomain=st(r.colorDomain,void 0),this.colorMode=st(r.colorMode,\"hcl\"),this.visible=st(r.visible,!0),this.quality=st(r.quality,void 0),this.roughness=st(r.roughness,.4),this.metalness=st(r.metalness,0),this.diffuse=st(r.diffuse,16777215),this.diffuseInterior=st(r.diffuseInterior,!1),this.useInteriorColor=st(r.useInteriorColor,!1),this.interiorColor=st(r.interiorColor,2236962),this.interiorDarkening=st(r.interiorDarkening,0),this.lazy=st(r.lazy,!1),this.lazyProps={build:!1,bufferParams:{},what:{}},this.matrix=st(r.matrix,new i),this.disablePicking=st(r.disablePicking,!1);const s=this.parameters;!0===s.sphereDetail&&(s.sphereDetail={type:\"integer\",max:3,min:0,rebuild:\"impostor\"}),!0===s.radialSegments&&(s.radialSegments={type:\"integer\",max:25,min:5,rebuild:\"impostor\"}),!0===s.openEnded&&(s.openEnded={type:\"boolean\",rebuild:\"impostor\",buffer:!0}),!0===s.disableImpostor&&(s.disableImpostor={type:\"boolean\",rebuild:!0}),\"low\"===r.quality?(s.sphereDetail&&(this.sphereDetail=0),s.radialSegments&&(this.radialSegments=5)):\"medium\"===r.quality?(s.sphereDetail&&(this.sphereDetail=1),s.radialSegments&&(this.radialSegments=10)):\"high\"===r.quality?(s.sphereDetail&&(this.sphereDetail=2),s.radialSegments&&(this.radialSegments=20)):(s.sphereDetail&&(this.sphereDetail=st(r.sphereDetail,1)),s.radialSegments&&(this.radialSegments=st(r.radialSegments,10))),s.openEnded&&(this.openEnded=st(r.openEnded,!0)),s.disableImpostor&&(this.disableImpostor=st(r.disableImpostor,!1))}getColorParams(t){return Object.assign({data:this.colorData,scheme:this.colorScheme,scale:this.colorScale,reverse:this.colorReverse,value:this.colorValue,domain:this.colorDomain,mode:this.colorMode,colorSpace:this.colorSpace},t)}getBufferParams(t={}){return Object.assign({clipNear:this.clipNear,clipRadius:this.clipRadius,clipCenter:this.clipCenter,flatShaded:this.flatShaded,opacity:this.opacity,depthWrite:this.depthWrite,side:this.side,wireframe:this.wireframe,roughness:this.roughness,metalness:this.metalness,diffuse:this.diffuse,diffuseInterior:this.diffuseInterior,useInteriorColor:this.useInteriorColor,interiorColor:this.interiorColor,interiorDarkening:this.interiorDarkening,matrix:this.matrix,disablePicking:this.disablePicking},t)}setColor(t,e){const i=Object.keys(Fe.getSchemes());if(\"string\"==typeof t&&i.includes(t.toLowerCase()))e?e.colorScheme=t:this.setParameters({colorScheme:t});else if(void 0!==t){let i=new s(t).getHex();e?(e.colorScheme=\"uniform\",e.colorValue=i):this.setParameters({colorScheme:\"uniform\",colorValue:i})}return this}prepare(t){}create(){}update(t){this.build()}build(t){if(!this.lazy||this.visible&&this.opacity){if(!this.toBePrepared)return this.tasks.increment(),void this.make();this.queue.length()>0?(this.tasks.change(1-this.queue.length()),this.queue.kill()):this.tasks.increment(),this.queue.push(t||!1)}else this.lazyProps.build=!0}make(t,e){De&&Me.time(\"Representation.make \"+this.type);const i=()=>{t?(this.update(t),this.viewer.requestRender(),this.tasks.decrement(),e&&e()):(this.clear(),this.create(),this.manualAttach||this.disposed||(De&&Me.time(\"Representation.attach \"+this.type),this.attach((()=>{De&&Me.timeEnd(\"Representation.attach \"+this.type),this.tasks.decrement(),e&&e()})))),De&&Me.timeEnd(\"Representation.make \"+this.type)};this.toBePrepared?this.prepare(i):i()}attach(t){this.setVisibility(this.visible),t()}setVisibility(t,e){if(this.visible=t,this.visible&&this.opacity){const t=this.lazyProps,e=t.bufferParams,i=t.what;if(t.build)return t.build=!1,this.build(),this;(Object.keys(e).length||Object.keys(i).length)&&(t.bufferParams={},t.what={},this.updateParameters(e,i))}return this.bufferList.forEach((function(e){e.setVisibility(t)})),e||this.viewer.requestRender(),this}setParameters(t,e={},i=!1){const r=t||{},s=this.parameters,n={};this.opacity||void 0===r.opacity||(this.lazyProps.build?(this.lazyProps.build=!1,i=!0):(Object.assign(n,this.lazyProps.bufferParams),Object.assign(e,this.lazyProps.what),this.lazyProps.bufferParams={},this.lazyProps.what={})),this.setColor(r.color,r);for(let t in r)if(void 0!==r[t]&&null!=s[t]&&(s[t].int&&(r[t]=parseInt(r[t])),s[t].float&&(r[t]=parseFloat(r[t])),r[t]!==this[t]||r[t].equals&&!r[t].equals(this[t]))){if(this[t]&&this[t].copy&&r[t].copy?this[t].copy(r[t]):this[t]&&this[t].set?this[t].set(r[t]):this[t]=r[t],s[t].buffer)if(!0===s[t].buffer)n[t]=r[t];else{n[s[t].buffer]=r[t]}s[t].update&&(e[s[t].update]=!0),!s[t].rebuild||\"impostor\"===s[t].rebuild&&Ie&&!this.disableImpostor||(i=!0)}return i?this.build():this.updateParameters(n,e),this}updateParameters(t={},e){if(this.lazy&&(!this.visible||!this.opacity)&&!1===t.hasOwnProperty(\"opacity\"))return Object.assign(this.lazyProps.bufferParams,t),void Object.assign(this.lazyProps.what,e);this.bufferList.forEach((function(e){e.setParameters(t)})),Object.keys(e).length&&this.update(e),this.viewer.requestRender()}getParameters(){const t={lazy:this.lazy,visible:this.visible,quality:this.quality};return Object.keys(this.parameters).forEach((e=>{null!==this.parameters[e]&&(t[e]=this[e])})),t}clear(){this.bufferList.forEach((t=>{this.viewer.remove(t),t.dispose()})),this.bufferList.length=0,this.viewer.requestRender()}dispose(){this.disposed=!0,this.queue.kill(),this.tasks.dispose(),this.clear()}}class Vr{constructor(t){this.pending=0,this.postCount=0,this.onmessageDict={},this.onerrorDict={},this.name=t,this.blobUrl=window.URL.createObjectURL(Ee.get(t)),this.worker=new Worker(this.blobUrl),Ee.activeWorkerCount+=1,this.worker.onmessage=e=>{this.pending-=1;const i=e.data.__postId;De&&Me.timeEnd(\"Worker.postMessage \"+t+\" #\"+i);const r=this.onmessageDict[i];r&&r.call(this.worker,e),delete this.onmessageDict[i],delete this.onerrorDict[i]},this.worker.onerror=e=>{if(this.pending-=1,e.data){const i=e.data.__postId,r=this.onerrorDict[i];r?r.call(this.worker,e):Me.error(\"Worker.onerror\",i,t,e),delete this.onmessageDict[i],delete this.onerrorDict[i]}else Me.error(\"Worker.onerror\",t,e)}}post(t={},e,i,r){this.onmessageDict[this.postCount]=i,this.onerrorDict[this.postCount]=r,t.__name=this.name,t.__postId=this.postCount,t.__debug=De,De&&Me.time(`Worker.postMessage ${this.name} #${this.postCount}`);try{this.worker.postMessage(t,e)}catch(e){Me.error(\"worker.post:\",e),this.worker.postMessage(t)}return this.pending+=1,this.postCount+=1,this}terminate(){this.worker?(this.worker.terminate(),window.URL.revokeObjectURL(this.blobUrl),Ee.activeWorkerCount-=1):Me.log(\"no worker to terminate\")}}class Gr{constructor(t,e=2){this.pool=[],this.count=0,this.maxCount=Math.min(8,e),this.name=t}post(t={},e,i,r){const s=this.getNextWorker();return s?s.post(t,e,i,r):console.error(\"unable to get worker from pool\"),this}terminate(){this.pool.forEach((function(t){t.terminate()}))}getNextWorker(){let t,e=1/0;for(let i=0;i=this.count){t=new Vr(this.name),this.pool.push(t),this.count+=1;break}const r=this.pool[i];if(0===r.pending){t=r;break}r.pendings&&(s=c),l>n&&(n=l),h>o&&(o=h)}return[Yr([e,i,r]),Yr([s,n,o])]}function Wr(t,e){for(let i=0,r=e.length;i0){const o=1/Math.sqrt(n);t[e]=i*o,t[e+1]=r*o,t[e+2]=s*o}}}function Yr(t){return new Float32Array(t||3)}function Kr(t,e,i){const r=e[0],s=e[1],n=e[2],o=i[0],a=i[1],c=i[2];t[0]=s*c-n*a,t[1]=n*o-r*c,t[2]=r*a-s*o}function Zr(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function Qr(t,e,i){t[0]=e[0]-i[0],t[1]=e[1]-i[1],t[2]=e[2]-i[2]}function Jr(t,e,i){t[0]=e[0]+i[0],t[1]=e[1]+i[1],t[2]=e[2]+i[2]}function ts(t,e,i=0){t[0]=e[i],t[1]=e[i+1],t[2]=e[i+2]}function es(t,e,i=0){e[i]=t[0],e[i+1]=t[1],e[i+2]=t[2]}function is(t){return t[0]*t[0]+t[1]*t[1]+t[2]*t[2]}function rs(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2])}function ss(t,e,i){ns(t,e,1/i)}function ns(t,e,i){t[0]=e[0]*i,t[1]=e[1]*i,t[2]=e[2]*i}function os(t,e){const i=is(e);0==i?(t[0]=e[0],t[1]=e[1],t[2]=e[2]):ns(t,e,1/Math.sqrt(i))}function as(t,e,i){t[0]=e[0]-i,t[1]=e[1]-i,t[2]=e[2]-i}function cs(t,e,i){t[0]=e[0]+i,t[1]=e[1]+i,t[2]=e[2]+i}function ls(t,e){t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t[2]=Math.floor(e[2])}function hs(t,e){t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t[2]=Math.ceil(e[2])}function ds(t,e){t[0]=-e[0],t[1]=-e[1],t[2]=-e[2]}function us(t,e){const i=t[0],r=t[1],s=t[2],n=e[0],o=e[1],a=e[2],c=r*a-s*o,l=s*n-i*a,h=i*o-r*n,d=Math.sqrt(c*c+l*l+h*h),u=i*n+r*o+s*a;return Math.atan2(d,u)}function ms(t,i=9){const r=Math.floor(i/2),s=t.position1.length/3,n=3*(r*s),o=1/i,a=_i(t.position1,t.position2),c=new Float32Array(n),l=new Float32Array(n),h=new e;for(let e=0;e0){const e=3*p;n[e]=t.position2[3*d-3],n[e+1]=t.position2[3*d-2],n[e+1]=t.position2[3*d-1]}const y=new Float32Array(s),b=new Float32Array(n),x=Ai(y,b),v=new Float32Array(o),w={position:x,position1:y,position2:b,color:v,color2:v};return a&&(w.radius=new Float32Array(a)),c&&t.picking&&(t.picking.array=new Float32Array(c),w.picking=t.picking),l&&(w.primitiveId=new Float32Array(l)),w}Gr.prototype.constructor=Gr,Hr.__deps=[Yr],ss.__deps=[ns],os.__deps=[ns,is];const gs=new e;class ys{static get Picker(){return He.get(this.type)}static get Buffer(){return je.get(this.type)}static getShapeKey(t){return this.type+t[0].toUpperCase()+t.substr(1)}static expandBoundingBox(t,e){}static valueToShape(t,e,i){const r=t._primitiveData[this.getShapeKey(e)];switch(this.fields[e]){case\"v3\":case\"c\":n=r,void 0!==(s=i).toArray?s=s.toArray():void 0!==s.x?s=[s.x,s.y,s.z]:void 0!==s.r&&(s=[s.r,s.g,s.b]),n.push.apply(n,s);break;default:r.push(i)}var s,n}static objectToShape(t,e){Object.keys(this.fields).forEach((i=>{this.valueToShape(t,i,e[i])})),this.valueToShape(t,\"name\",e.name),this.expandBoundingBox(t.boundingBox,e)}static valueFromShape(t,i,r){const n=t._primitiveData[this.getShapeKey(r)];switch(this.fields[r]){case\"v3\":return(new e).fromArray(n,3*i);case\"c\":return(new s).fromArray(n,3*i);default:return n[i]}}static objectFromShape(t,e){let i=this.valueFromShape(t,e,\"name\");void 0===i&&(i=`${this.type}: ${e} (${t.name})`);const r={shape:t,name:i};return Object.keys(this.fields).forEach((i=>{r[i]=this.valueFromShape(t,e,i)})),r}static arrayFromShape(t,e){const i=t._primitiveData[this.getShapeKey(e)];return\"s\"===this.fields[e]?i:new Float32Array(i)}static dataFromShape(t){const e={};return this.Picker&&(e.picking=new this.Picker(t)),Object.keys(this.fields).forEach((i=>{e[i]=this.arrayFromShape(t,i)})),e}static bufferFromShape(t,e){return new this.Buffer(this.dataFromShape(t),e)}}ys.type=\"\",ys.fields={};class bs extends ys{static positionFromShape(t,e){return this.valueFromShape(t,e,\"position\")}static expandBoundingBox(t,e){t.expandByPoint(gs.fromArray(e.position))}}bs.type=\"sphere\",bs.fields={position:\"v3\",color:\"c\",radius:\"f\"};class xs extends ys{static positionFromShape(t,e){return this.valueFromShape(t,e,\"position\")}static expandBoundingBox(t,e){t.expandByPoint(gs.fromArray(e.position))}}xs.type=\"box\",xs.fields={position:\"v3\",color:\"c\",size:\"f\",heightAxis:\"v3\",depthAxis:\"v3\"};class vs extends xs{}vs.type=\"octahedron\";class ws extends xs{}ws.type=\"tetrahedron\";class As extends ys{static positionFromShape(t,e){const i=this.valueFromShape(t,e,\"position1\"),r=this.valueFromShape(t,e,\"position2\");return i.add(r).multiplyScalar(.5)}static expandBoundingBox(t,e){t.expandByPoint(gs.fromArray(e.position1)),t.expandByPoint(gs.fromArray(e.position2))}static bufferFromShape(t,e={}){let i=this.dataFromShape(t);return\"cylinder\"===this.type&&e.dashedCylinder&&(i=ps(i)),new this.Buffer(i,e)}}As.type=\"cylinder\",As.fields={position1:\"v3\",position2:\"v3\",color:\"c\",radius:\"f\"};class _s extends As{}_s.type=\"arrow\";class Ss extends As{}Ss.type=\"cone\";class Cs extends bs{}Cs.type=\"ellipsoid\",Cs.fields={position:\"v3\",color:\"c\",radius:\"f\",majorAxis:\"v3\",minorAxis:\"v3\"};class Ps extends Cs{}Ps.type=\"torus\";class Is extends ys{static positionFromShape(t,e){return this.valueFromShape(t,e,\"position\")}static expandBoundingBox(t,e){t.expandByPoint(gs.fromArray(e.position))}}Is.type=\"text\",Is.fields={position:\"v3\",color:\"c\",size:\"f\",text:\"s\"};class ks extends ys{static positionFromShape(t,e){return this.valueFromShape(t,e,\"position\")}static expandBoundingBox(t,e){t.expandByPoint(gs.fromArray(e.position))}}ks.type=\"point\",ks.fields={position:\"v3\",color:\"c\"};class Ms extends ys{static positionFromShape(t,e){const i=this.valueFromShape(t,e,\"position1\"),r=this.valueFromShape(t,e,\"position2\");return i.add(r).multiplyScalar(.5)}static expandBoundingBox(t,e){t.expandByPoint(gs.fromArray(e.position1)),t.expandByPoint(gs.fromArray(e.position2))}}Ms.type=\"wideline\",Ms.fields={position1:\"v3\",position2:\"v3\",color:\"c\"};class Ts{constructor(t,e){this.exp=3;const i=e||function(t){const{x:e,y:i,z:r}=t,s=new a,n=e.length,{min:o,max:c}=s;for(let t=0;t>this.exp),this.boundY=1+(i.max.y-this.minY>>this.exp),this.boundZ=1+(i.max.z-this.minZ>>this.exp);const r=this.boundX*this.boundY*this.boundZ,s=void 0!==t.count?t.count:t.x.length,n=t.x,o=t.y,c=t.z;let l=0;const h=new Uint32Array(r),d=new Int32Array(s);for(let t=0;t>this.exp,i=o[t]-this.minY>>this.exp,r=c[t]-this.minZ>>this.exp,s=(e*this.boundY+i)*this.boundZ+r;1===(h[s]+=1)&&(l+=1),d[t]=s}const u=new Uint16Array(l);for(let t=0,e=0;t0&&(h[t]=e+1,u[e]=i,e+=1)}const m=new Uint32Array(l);for(let t=1;t0){const i=e-1;f[m[i]+p[i]]=t,p[i]+=1}}this.grid=h,this.bucketCount=u,this.bucketOffset=m,this.bucketArray=f,this.xArray=n,this.yArray=o,this.zArray=c}within(t,e,i,r){const s=[];return this.eachWithin(t,e,i,r,(t=>s.push(t))),s}eachWithin(t,e,i,r,s){const n=r*r,o=Math.max(0,t-r-this.minX>>this.exp),a=Math.max(0,e-r-this.minY>>this.exp),c=Math.max(0,i-r-this.minZ>>this.exp),l=Math.min(this.boundX,1+(t+r-this.minX>>this.exp)),h=Math.min(this.boundY,1+(e+r-this.minY>>this.exp)),d=Math.min(this.boundZ,1+(i+r-this.minZ>>this.exp));for(let r=o;r0){const r=l-1,o=this.bucketOffset[r],a=o+this.bucketCount[r];for(let r=o;rr?s.set(this[e].subarray(0,r)):s.set(this[e]),this[e]=s}}growIfFull(){if(this.count>=this.length){const t=Math.round(1.5*this.length);this.resize(Math.max(256,t))}}copyFrom(t,e,i,r){for(let s=0,n=this._fields.length;s0;)h-=1;l<=h&&(l===c?c=h:h===c&&(c=l),(o=l)!==(a=h)&&(i.copyFrom(e,0,o,1),e.copyWithin(o,a,1),e.copyFrom(i,a,0,1)),l+=1,h-=1)}while(l<=h);r(s,h),r(l,n)}var o,a}(0,this.count-1),Me.timeEnd(\"Store.sort\")}clear(){this.count=0}dispose(){for(let t=0,e=this._fields.length;t>>1&1431655765))+(t>>>2&858993459))+(t>>>4)&252645135)>>>24}class Os{constructor(t,e){this.length=t,this._words=new Uint32Array(t+32>>>5),!0===e&&this.setAll()}get(t){return 0!=(this._words[t>>>5]&1<>>5]|=1<>>5]&=~(1<>>5]^=1<>>5,o=e>>>5;for(let t=n+1;t>>5]|=1<>>5]|=1<>>5]|=1<>>5]&=~(1<>>5]&=~(1<>>5]&=~(1<>>5]|=1<>>5]&=~(1<>>i,this}_isRangeValue(t,e,i){if(e>>5,o=e>>>5;for(let t=n+1;t>>5]&1<>>5]&1<>>5]&1<>>5]&1<>>5]&1<0){const{types:r,groups:s,centers:n,atomSets:o}=t;r.push(e.type),s.push(e.group),n.x.push(e.x/i),n.y.push(e.y/i),n.z.push(e.z/i),o.push(e.atomSet)}}const Ns=0,zs=[\"D-BETA-PEPTIDE, C-GAMMA LINKING\",\"D-GAMMA-PEPTIDE, C-DELTA LINKING\",\"D-PEPTIDE COOH CARBOXY TERMINUS\",\"D-PEPTIDE NH3 AMINO TERMINUS\",\"D-PEPTIDE LINKING\",\"L-BETA-PEPTIDE, C-GAMMA LINKING\",\"L-GAMMA-PEPTIDE, C-DELTA LINKING\",\"L-PEPTIDE COOH CARBOXY TERMINUS\",\"L-PEPTIDE NH3 AMINO TERMINUS\",\"L-PEPTIDE LINKING\",\"PEPTIDE LINKING\",\"PEPTIDE-LIKE\"],Vs=[\"RNA OH 3 PRIME TERMINUS\",\"RNA OH 5 PRIME TERMINUS\",\"RNA LINKING\"],Gs=[\"DNA OH 3 PRIME TERMINUS\",\"DNA OH 5 PRIME TERMINUS\",\"DNA LINKING\",\"L-DNA LINKING\",\"L-RNA LINKING\"],Us=[\"D-SACCHARIDE\",\"D-SACCHARIDE 1,4 AND 1,4 LINKING\",\"D-SACCHARIDE 1,4 AND 1,6 LINKING\",\"L-SACCHARIDE\",\"L-SACCHARIDE 1,4 AND 1,4 LINKING\",\"L-SACCHARIDE 1,4 AND 1,6 LINKING\",\"SACCHARIDE\"],js=[\"NON-POLYMER\"].concat([\"OTHER\"],Us),Hs=[\"h\",\"g\",\"i\"],Ws=[\"e\",\"b\"],qs=[\"s\",\"t\",\"l\",\"\"],Xs={H:1,D:1,T:1,HE:2,LI:3,BE:4,B:5,C:6,N:7,O:8,F:9,NE:10,NA:11,MG:12,AL:13,SI:14,P:15,S:16,CL:17,AR:18,K:19,CA:20,SC:21,TI:22,V:23,CR:24,MN:25,FE:26,CO:27,NI:28,CU:29,ZN:30,GA:31,GE:32,AS:33,SE:34,BR:35,KR:36,RB:37,SR:38,Y:39,ZR:40,NB:41,MO:42,TC:43,RU:44,RH:45,PD:46,AG:47,CD:48,IN:49,SN:50,SB:51,TE:52,I:53,XE:54,CS:55,BA:56,LA:57,CE:58,PR:59,ND:60,PM:61,SM:62,EU:63,GD:64,TB:65,DY:66,HO:67,ER:68,TM:69,YB:70,LU:71,HF:72,TA:73,W:74,RE:75,OS:76,IR:77,PT:78,AU:79,HG:80,TL:81,PB:82,BI:83,PO:84,AT:85,RN:86,FR:87,RA:88,AC:89,TH:90,PA:91,U:92,NP:93,PU:94,AM:95,CM:96,BK:97,CF:98,ES:99,FM:100,MD:101,NO:102,LR:103,RF:104,DB:105,SG:106,BH:107,HS:108,MT:109,DS:110,RG:111,CN:112,NH:113,FL:114,MC:115,LV:116,TS:117,OG:118},Ys={1:1.1,2:1.4,3:1.81,4:1.53,5:1.92,6:1.7,7:1.55,8:1.52,9:1.47,10:1.54,11:2.27,12:1.73,13:1.84,14:2.1,15:1.8,16:1.8,17:1.75,18:1.88,19:2.75,20:2.31,21:2.3,22:2.15,23:2.05,24:2.05,25:2.05,26:2.05,27:2,28:2,29:2,30:2.1,31:1.87,32:2.11,33:1.85,34:1.9,35:1.83,36:2.02,37:3.03,38:2.49,39:2.4,40:2.3,41:2.15,42:2.1,43:2.05,44:2.05,45:2,46:2.05,47:2.1,48:2.2,49:2.2,50:1.93,51:2.17,52:2.06,53:1.98,54:2.16,55:3.43,56:2.68,57:2.5,58:2.48,59:2.47,60:2.45,61:2.43,62:2.42,63:2.4,64:2.38,65:2.37,66:2.35,67:2.33,68:2.32,69:2.3,70:2.28,71:2.27,72:2.25,73:2.2,74:2.1,75:2.05,76:2,77:2,78:2.05,79:2.1,80:2.05,81:1.96,82:2.02,83:2.07,84:1.97,85:2.02,86:2.2,87:3.48,88:2.83,89:2,90:2.4,91:2,92:2.3,93:2,94:2,95:2,96:2,97:2,98:2,99:2,100:2,101:2,102:2,103:2,104:2,105:2,106:2,107:2,108:2,109:2,110:2,111:2,112:2,113:2,114:2,115:2,116:2,117:2,118:2},Ks={1:.31,2:.28,3:1.28,4:.96,5:.84,6:.76,7:.71,8:.66,9:.57,10:.58,11:1.66,12:1.41,13:1.21,14:1.11,15:1.07,16:1.05,17:1.02,18:1.06,19:2.03,20:1.76,21:1.7,22:1.6,23:1.53,24:1.39,25:1.39,26:1.32,27:1.26,28:1.24,29:1.32,30:1.22,31:1.22,32:1.2,33:1.19,34:1.2,35:1.2,36:1.16,37:2.2,38:1.95,39:1.9,40:1.75,41:1.64,42:1.54,43:1.47,44:1.46,45:1.42,46:1.39,47:1.45,48:1.44,49:1.42,50:1.39,51:1.39,52:1.38,53:1.39,54:1.4,55:2.44,56:2.15,57:2.07,58:2.04,59:2.03,60:2.01,61:1.99,62:1.98,63:1.98,64:1.96,65:1.94,66:1.92,67:1.92,68:1.89,69:1.9,70:1.87,71:1.87,72:1.75,73:1.7,74:1.62,75:1.51,76:1.44,77:1.41,78:1.36,79:1.36,80:1.32,81:1.45,82:1.46,83:1.48,84:1.4,85:1.5,86:1.5,87:2.6,88:2.21,89:2.15,90:2.06,91:2,92:1.96,93:1.9,94:1.87,95:1.8,96:1.69,97:1.6,98:1.6,99:1.6,100:1.6,101:1.6,102:1.6,103:1.6,104:1.6,105:1.6,106:1.6,107:1.6,108:1.6,109:1.6,110:1.6,111:1.6,112:1.6,113:1.6,114:1.6,115:1.6,116:1.6,117:1.6,118:1.6},Zs={1:[1],2:[0],3:[1],4:[2],5:[3],6:[4],7:[3],8:[2],9:[1],10:[0],11:[1],12:[2],13:[6],14:[6],15:[3,5,7],16:[2,4,6],17:[1],18:[0],19:[1],20:[2],31:[3],32:[4],33:[3,5],34:[2,4,6],35:[1],36:[0],37:[1],38:[2],49:[3],50:[4],51:[3,5],52:[2],53:[1,2,5],54:[0,2],55:[1],56:[2],81:[3],82:[4],83:[3],84:[2],85:[1],86:[0],87:[1],88:[2]},Qs={1:1,2:2,3:1,4:2,5:3,6:4,7:5,8:6,9:7,10:8,11:1,12:2,13:3,14:4,15:5,16:6,17:7,18:8,19:1,20:2,21:3,22:4,23:5,24:6,25:7,26:8,27:9,28:10,29:11,30:2,31:3,32:4,33:5,34:6,35:7,36:8,37:1,38:2,39:3,40:4,41:5,42:6,43:7,44:8,45:9,46:10,47:11,48:2,49:3,50:4,51:5,52:6,53:7,54:8,55:1,56:2,57:3,58:4,59:3,60:4,61:5,62:6,63:7,64:8,65:9,66:10,67:11,68:12,69:13,70:14,71:15,72:4,73:5,74:6,75:7,76:8,77:9,78:10,79:11,80:2,81:3,82:4,83:5,84:6,85:7,86:8,87:1,88:2,89:3,90:4,91:3,92:4,93:5,94:6,95:7,96:8,97:9,98:10,99:11,100:12,101:13,102:14,103:15,104:2,105:2,106:2,107:2,108:2,109:2,110:2,111:2,112:2,113:3,114:4,115:5,116:6,117:7,118:8},Js={ALA:[.17,.5,.33],ARG:[.81,1.81,1],ASN:[.42,.85,.43],ASP:[1.23,3.64,2.41],ASH:[-.07,.43,.5],CYS:[-.24,-.02,.22],GLN:[.58,.77,.19],GLU:[2.02,3.63,1.61],GLH:[-.01,.11,.12],GLY:[.01,1.15,1.14],HIS:[.17,.11,-.06],ILE:[-.31,-1.12,-.81],LEU:[-.56,-1.25,-.69],LYS:[.99,2.8,1.81],MET:[-.23,-.67,-.44],PHE:[-1.13,-1.71,-.58],PRO:[.45,.14,-.31],SER:[.13,.46,.33],THR:[.14,.25,.11],TRP:[-1.85,-2.09,-.24],TYR:[-.94,-.71,.23],VAL:[.07,-.46,-.53]},tn=[0,0,0],en={HIS:\"H\",ARG:\"R\",LYS:\"K\",ILE:\"I\",PHE:\"F\",LEU:\"L\",TRP:\"W\",ALA:\"A\",MET:\"M\",PRO:\"P\",CYS:\"C\",ASN:\"N\",VAL:\"V\",GLY:\"G\",SER:\"S\",GLN:\"Q\",TYR:\"Y\",ASP:\"D\",GLU:\"E\",THR:\"T\",SEC:\"U\",PYL:\"O\"},rn=Object.keys(en),sn=[\"A\",\"C\",\"T\",\"G\",\"U\",\"I\"],nn=[\"DA\",\"DC\",\"DT\",\"DG\",\"DU\",\"DI\"],on=[\"A\",\"G\",\"I\",\"DA\",\"DG\",\"DI\"],an=sn.concat(nn),cn=[\"SOL\",\"WAT\",\"HOH\",\"H2O\",\"W\",\"DOD\",\"D3O\",\"TIP3\",\"TIP4\",\"SPC\"],ln=[\"118\",\"119\",\"1AL\",\"1CU\",\"2FK\",\"2HP\",\"2OF\",\"3CO\",\"3MT\",\"3NI\",\"3OF\",\"3P8\",\"4MO\",\"4PU\",\"543\",\"6MO\",\"ACT\",\"AG\",\"AL\",\"ALF\",\"AM\",\"ATH\",\"AU\",\"AU3\",\"AUC\",\"AZI\",\"BA\",\"BCT\",\"BEF\",\"BF4\",\"BO4\",\"BR\",\"BS3\",\"BSY\",\"CA\",\"CAC\",\"CD\",\"CD1\",\"CD3\",\"CD5\",\"CE\",\"CHT\",\"CL\",\"CO\",\"CO3\",\"CO5\",\"CON\",\"CR\",\"CS\",\"CSB\",\"CU\",\"CU1\",\"CU3\",\"CUA\",\"CUZ\",\"CYN\",\"DME\",\"DMI\",\"DSC\",\"DTI\",\"DY\",\"E4N\",\"EDR\",\"EMC\",\"ER3\",\"EU\",\"EU3\",\"F\",\"FE\",\"FE2\",\"FPO\",\"GA\",\"GD3\",\"GEP\",\"HAI\",\"HG\",\"HGC\",\"IN\",\"IOD\",\"IR\",\"IR3\",\"IRI\",\"IUM\",\"K\",\"KO4\",\"LA\",\"LCO\",\"LCP\",\"LI\",\"LU\",\"MAC\",\"MG\",\"MH2\",\"MH3\",\"MLI\",\"MLT\",\"MMC\",\"MN\",\"MN3\",\"MN5\",\"MN6\",\"MO1\",\"MO2\",\"MO3\",\"MO4\",\"MO5\",\"MO6\",\"MOO\",\"MOS\",\"MOW\",\"MW1\",\"MW2\",\"MW3\",\"NA\",\"NA2\",\"NA5\",\"NA6\",\"NAO\",\"NAW\",\"NCO\",\"NET\",\"NH4\",\"NI\",\"NI1\",\"NI2\",\"NI3\",\"NO2\",\"NO3\",\"NRU\",\"O4M\",\"OAA\",\"OC1\",\"OC2\",\"OC3\",\"OC4\",\"OC5\",\"OC6\",\"OC7\",\"OC8\",\"OCL\",\"OCM\",\"OCN\",\"OCO\",\"OF1\",\"OF2\",\"OF3\",\"OH\",\"OS\",\"OS4\",\"OXL\",\"PB\",\"PBM\",\"PD\",\"PDV\",\"PER\",\"PI\",\"PO3\",\"PO4\",\"PR\",\"PT\",\"PT4\",\"PTN\",\"RB\",\"RH3\",\"RHD\",\"RU\",\"SB\",\"SCN\",\"SE4\",\"SEK\",\"SM\",\"SMO\",\"SO3\",\"SO4\",\"SR\",\"T1A\",\"TB\",\"TBA\",\"TCN\",\"TEA\",\"TH\",\"THE\",\"TL\",\"TMA\",\"TRA\",\"UNX\",\"V\",\"VN3\",\"VO4\",\"W\",\"WO5\",\"Y1\",\"YB\",\"YB2\",\"YH\",\"YT3\",\"ZCM\",\"ZN\",\"ZN2\",\"ZN3\",\"ZNO\",\"ZO3\",\"OHX\"],hn=[\"045\",\"0AT\",\"0BD\",\"0MK\",\"0NZ\",\"0TS\",\"0V4\",\"0XY\",\"0YT\",\"10M\",\"147\",\"149\",\"14T\",\"15L\",\"16G\",\"18T\",\"18Y\",\"1AR\",\"1BW\",\"1GL\",\"1GN\",\"1JB\",\"1LL\",\"1NA\",\"1S3\",\"26M\",\"26Q\",\"26R\",\"26V\",\"26W\",\"26Y\",\"27C\",\"289\",\"291\",\"293\",\"2DG\",\"2F8\",\"2FG\",\"2FL\",\"2FP\",\"2GL\",\"2M4\",\"2M5\",\"32O\",\"34V\",\"3CM\",\"3DO\",\"3DY\",\"3FM\",\"3LR\",\"3MF\",\"3MG\",\"3SA\",\"3ZW\",\"46D\",\"46M\",\"46Z\",\"48Z\",\"4CQ\",\"4GC\",\"4NN\",\"50A\",\"5DI\",\"5GF\",\"5MM\",\"5RP\",\"5SA\",\"5SP\",\"64K\",\"6PG\",\"6SA\",\"7JZ\",\"7SA\",\"A1Q\",\"A2G\",\"AAB\",\"AAL\",\"AAO\",\"ABC\",\"ABD\",\"ABE\",\"ABF\",\"ABL\",\"ACG\",\"ACI\",\"ACR\",\"ACX\",\"ADA\",\"ADG\",\"ADR\",\"AF1\",\"AFD\",\"AFL\",\"AFO\",\"AFP\",\"AFR\",\"AGC\",\"AGH\",\"AGL\",\"AHR\",\"AIG\",\"ALL\",\"ALX\",\"AMU\",\"AOG\",\"AOS\",\"ARA\",\"ARB\",\"ARE\",\"ARI\",\"ASG\",\"ASO\",\"AXP\",\"AXR\",\"B0D\",\"B16\",\"B2G\",\"B4G\",\"B6D\",\"B8D\",\"B9D\",\"BBK\",\"BCD\",\"BDG\",\"BDP\",\"BDR\",\"BEM\",\"BFP\",\"BGC\",\"BGL\",\"BGP\",\"BGS\",\"BHG\",\"BMA\",\"BMX\",\"BNG\",\"BNX\",\"BOG\",\"BRI\",\"BXF\",\"BXP\",\"BXX\",\"BXY\",\"C3X\",\"C4X\",\"C5X\",\"CAP\",\"CBI\",\"CBK\",\"CBS\",\"CDR\",\"CEG\",\"CGF\",\"CHO\",\"CR1\",\"CR6\",\"CRA\",\"CT3\",\"CTO\",\"CTR\",\"CTT\",\"D6G\",\"DAF\",\"DAG\",\"DDA\",\"DDB\",\"DDL\",\"DEL\",\"DFR\",\"DFX\",\"DG0\",\"DGC\",\"DGD\",\"DGM\",\"DGS\",\"DIG\",\"DLF\",\"DLG\",\"DMU\",\"DNO\",\"DOM\",\"DP5\",\"DQQ\",\"DQR\",\"DR2\",\"DR3\",\"DR4\",\"DRI\",\"DSR\",\"DT6\",\"DVC\",\"E4P\",\"E5G\",\"EAG\",\"EBG\",\"EBQ\",\"EGA\",\"EJT\",\"EPG\",\"ERE\",\"ERI\",\"F1P\",\"F1X\",\"F6P\",\"FBP\",\"FCA\",\"FCB\",\"FCT\",\"FDP\",\"FDQ\",\"FFC\",\"FIX\",\"FMO\",\"FRU\",\"FSI\",\"FU4\",\"FUB\",\"FUC\",\"FUD\",\"FUL\",\"FXP\",\"G16\",\"G1P\",\"G2F\",\"G3I\",\"G4D\",\"G4S\",\"G6D\",\"G6P\",\"G6S\",\"GAC\",\"GAD\",\"GAL\",\"GC1\",\"GC4\",\"GCD\",\"GCN\",\"GCO\",\"GCS\",\"GCT\",\"GCU\",\"GCV\",\"GCW\",\"GCX\",\"GE1\",\"GFG\",\"GFP\",\"GIV\",\"GL0\",\"GL2\",\"GL5\",\"GL6\",\"GL7\",\"GL9\",\"GLA\",\"GLB\",\"GLC\",\"GLD\",\"GLF\",\"GLG\",\"GLO\",\"GLP\",\"GLS\",\"GLT\",\"GLW\",\"GMH\",\"GN1\",\"GNX\",\"GP1\",\"GP4\",\"GPH\",\"GPM\",\"GQ1\",\"GQ2\",\"GQ4\",\"GS1\",\"GS4\",\"GSA\",\"GSD\",\"GTE\",\"GTH\",\"GTK\",\"GTR\",\"GTZ\",\"GU0\",\"GU1\",\"GU2\",\"GU3\",\"GU4\",\"GU5\",\"GU6\",\"GU8\",\"GU9\",\"GUF\",\"GUP\",\"GUZ\",\"GYP\",\"GYV\",\"H2P\",\"HDL\",\"HMS\",\"HS2\",\"HSD\",\"HSG\",\"HSH\",\"HSJ\",\"HSQ\",\"HSR\",\"HSU\",\"HSX\",\"HSY\",\"HSZ\",\"IAB\",\"IDG\",\"IDR\",\"IDS\",\"IDT\",\"IDU\",\"IDX\",\"IDY\",\"IMK\",\"IN1\",\"IPT\",\"ISL\",\"KBG\",\"KD2\",\"KDA\",\"KDM\",\"KDO\",\"KFN\",\"KO1\",\"KO2\",\"KTU\",\"L6S\",\"LAG\",\"LAI\",\"LAK\",\"LAO\",\"LAT\",\"LB2\",\"LBT\",\"LCN\",\"LDY\",\"LGC\",\"LGU\",\"LM2\",\"LMT\",\"LMU\",\"LOG\",\"LOX\",\"LPK\",\"LSM\",\"LTM\",\"LVZ\",\"LXB\",\"LXZ\",\"M1F\",\"M3M\",\"M6P\",\"M8C\",\"MA1\",\"MA2\",\"MA3\",\"MAB\",\"MAG\",\"MAL\",\"MAN\",\"MAT\",\"MAV\",\"MAW\",\"MBG\",\"MCU\",\"MDA\",\"MDM\",\"MDP\",\"MFA\",\"MFB\",\"MFU\",\"MG5\",\"MGA\",\"MGL\",\"MLB\",\"MMA\",\"MMN\",\"MN0\",\"MRP\",\"MTT\",\"MUG\",\"MVP\",\"MXY\",\"N1L\",\"N9S\",\"NAA\",\"NAG\",\"NBG\",\"NDG\",\"NED\",\"NG1\",\"NG6\",\"NGA\",\"NGB\",\"NGC\",\"NGE\",\"NGF\",\"NGL\",\"NGS\",\"NGY\",\"NHF\",\"NM6\",\"NM9\",\"NTF\",\"NTO\",\"NTP\",\"NXD\",\"NYT\",\"OPG\",\"OPM\",\"ORP\",\"OX2\",\"P3M\",\"P53\",\"P6P\",\"PA5\",\"PNA\",\"PNG\",\"PNW\",\"PRP\",\"PSJ\",\"PSV\",\"PTQ\",\"QDK\",\"QPS\",\"QV4\",\"R1P\",\"R1X\",\"R2B\",\"R5P\",\"RAA\",\"RAE\",\"RAF\",\"RAM\",\"RAO\",\"RAT\",\"RB5\",\"RBL\",\"RCD\",\"RDP\",\"REL\",\"RER\",\"RF5\",\"RG1\",\"RGG\",\"RHA\",\"RIB\",\"RIP\",\"RNS\",\"RNT\",\"ROB\",\"ROR\",\"RPA\",\"RST\",\"RUB\",\"RUU\",\"RZM\",\"S6P\",\"S7P\",\"SA0\",\"SCR\",\"SDD\",\"SF6\",\"SF9\",\"SG4\",\"SG5\",\"SG6\",\"SG7\",\"SGA\",\"SGC\",\"SGD\",\"SGN\",\"SGS\",\"SHB\",\"SHG\",\"SI3\",\"SIO\",\"SOE\",\"SOL\",\"SSG\",\"SUC\",\"SUP\",\"SUS\",\"T6P\",\"T6T\",\"TAG\",\"TCB\",\"TDG\",\"TGK\",\"TGY\",\"TH1\",\"TIA\",\"TM5\",\"TM6\",\"TM9\",\"TMR\",\"TMX\",\"TOA\",\"TOC\",\"TRE\",\"TYV\",\"UCD\",\"UDC\",\"VG1\",\"X0X\",\"X1X\",\"X2F\",\"X4S\",\"X5S\",\"X6X\",\"XBP\",\"XDN\",\"XDP\",\"XIF\",\"XIM\",\"XLF\",\"XLS\",\"XMM\",\"XUL\",\"XXR\",\"XYP\",\"XYS\",\"YO5\",\"Z3Q\",\"Z6J\",\"Z9M\",\"ZDC\",\"ZDM\"],dn=[\"CA\",\"C\",\"N\",\"O\",\"O1\",\"O2\",\"OC1\",\"OC2\",\"OX1\",\"OXT\",\"OT1\",\"OT2\",\"H\",\"H1\",\"H2\",\"H3\",\"HA\",\"HN\",\"BB\"],un=[\"P\",\"OP1\",\"OP2\",\"HOP2\",\"HOP3\",\"O2'\",\"O3'\",\"O4'\",\"O5'\",\"C1'\",\"C2'\",\"C3'\",\"C4'\",\"C5'\",\"H1'\",\"H2'\",\"H2''\",\"HO2'\",\"H3'\",\"H4'\",\"H5'\",\"H5''\",\"HO3'\",\"HO5'\",\"O2*\",\"O3*\",\"O4*\",\"O5*\",\"C1*\",\"C2*\",\"C3*\",\"C4*\",\"C5*\"],mn={1:{trace:\"CA\",direction1:\"C\",direction2:[\"O\",\"OC1\",\"O1\",\"OX1\",\"OXT\",\"OT1\",\"OT2\"],backboneStart:\"N\",backboneEnd:\"C\"},2:{trace:[\"C4'\",\"C4*\"],direction1:[\"C1'\",\"C1*\"],direction2:[\"C3'\",\"C3*\"],backboneStart:\"P\",backboneEnd:[\"O3'\",\"O3*\"]},3:{trace:[\"C3'\",\"C3*\"],direction1:[\"C2'\",\"C2*\"],direction2:[\"O4'\",\"O4*\"],backboneStart:\"P\",backboneEnd:[\"O3'\",\"O3*\"]},4:{trace:[\"CA\",\"BB\"],backboneStart:[\"CA\",\"BB\"],backboneEnd:[\"CA\",\"BB\"]},5:{trace:[\"C4'\",\"C4*\",\"P\"],backboneStart:[\"C4'\",\"C4*\",\"P\"],backboneEnd:[\"C4'\",\"C4*\",\"P\"]},6:{trace:[\"C3'\",\"C3*\",\"C2'\",\"P\"],backboneStart:[\"C3'\",\"C3*\",\"C2'\",\"P\"],backboneEnd:[\"C3'\",\"C3*\",\"C2'\",\"P\"]}};mn[Ns]={};const pn={HD:\"H\",HS:\"H\",A:\"C\",NA:\"N\",NS:\"N\",OA:\"O\",OS:\"O\",SA:\"S\",G0:\"C\",G1:\"C\",G2:\"C\",G3:\"C\",CG0:\"C\",CG1:\"C\",CG2:\"C\",CG3:\"C\",W:\"O\"};function fn(t){switch(t){case 0:return 0;case 1:return 1;case 2:return 2;case 3:return 3;case 4:return 4;default:return 8}}const gn=new Map([[2,kt(180)],[3,kt(120)],[4,kt(109.4721)],[6,kt(90)]]);function yn(t,i){let r=[];const s=new e,n=new e;return s.subVectors(i,t),t.eachBondedAtom((e=>{1!==e.number&&(n.subVectors(e,t),r.push(s.angleTo(n)))})),r}function bn(t,i){const r=t.clone(),s=new e;s.subVectors(i,t);const n=[new e,new e];let o=0;if(t.eachBondedAtom((e=>{o>1||1!==e.number&&(r.index=e.index,n[o++].subVectors(e,t))})),1===o&&r.eachBondedAtom((e=>{o>1||1!==e.number&&e.index!==t.index&&n[o++].subVectors(e,t)})),2!==o)return;const a=n[0].cross(n[1]);return Math.abs(Math.PI/2-a.angleTo(s))}function xn(t,e){const i=t.structure,r=i.atomCount,s=new Int8Array(r),n=new Int8Array(r),o=new Int8Array(r),a=new Int8Array(r);return i.eachAtom((t=>{const i=t.index,[r,c,l,h]=function(t,e){const i=t.bondToElementCount(1);let r=t.formalCharge||0;const s=\"always\"===e.assignCharge||\"auto\"===e.assignCharge&&0===r,n=\"always\"===e.assignH||\"auto\"===e.assignH&&0===i,o=t.bondCount,a=function(t){let e=0;return t.eachBond((t=>e+=t.bondOrder)),e}(t),c=function(t){const e=t.structure.getBondProxy(),i=t.number,r=8===i||7===i;if(r&&4===t.bondCount)return!1;let s=!1;return t.eachBond((i=>{if(i.bondOrder>1)s=!0;else if(r){const r=i.getOtherAtom(t);r.eachBond((t=>{if(t.bondOrder>1){const e=r.number;if((15===e||16===e)&&8===t.getOtherAtom(r).number)return;s=!0}}),e)}})),s}(t),l=a-o>0;let h=0,d=8;switch(t.number){case 1:s&&(0===o?(r=1,d=0):1===o&&(r=0,d=1));break;case 6:s&&(r=0),n&&(h=Math.max(0,4-a-Math.abs(r))),d=fn(o+h+Math.max(0,-r));break;case 7:if(s)if(n)if(c&&a<4)r=o-i==1&&a-i==2?1:0;else{let e=!1;t.eachBondedAtom((t=>{(16===t.number||t.isMetal())&&(e=!0)})),r=e?0:1}else r=a-3;n&&(h=Math.max(0,3-a+r)),d=fn(c&&!l?o+h-r:o+h+1-r);break;case 8:s&&(n||(r=a-2),1===a&&t.eachBondedAtom((e=>{e.eachBond((i=>{const s=i.getOtherAtom(e);s.index!==t.index&&8===s.number&&2===i.bondOrder&&(r=-1)}))}))),n&&(h=Math.max(0,2-a+r)),d=fn(c&&!l?o+h-r+1:o+h-r+2);break;case 16:s&&(n||(r=a<=3&&!t.bondToElementCount(8)?a-2:0)),n&&a<2&&(h=Math.max(0,2-a+r)),a<=3&&(d=fn(o+h-r+2));break;case 9:case 17:case 35:case 53:case 85:s&&(r=a-1);break;case 3:case 11:case 19:case 37:case 55:case 87:s&&(r=1-a);break;case 4:case 12:case 20:case 38:case 56:case 88:s&&(r=2-a);break;default:console.warn(\"Requested charge, protonation for an unhandled element\",t.element)}return[r,h,h+i,d]}(t,e);s[i]=r,n[i]=c,o[i]=l,a[i]=h})),{charge:s,implicitH:n,totalH:o,idealGeometry:a}}function vn(t){if(t[\"@valenceModel\"])return t[\"@valenceModel\"];const e=xn(t,{assignCharge:\"auto\",assignH:\"auto\"});return t[\"@valenceModel\"]=e,e}function wn(t){return 15===t.number&&t.bondToElementCount(8)===t.bondCount}const An=[\"ARG\",\"HIS\",\"LYS\"],_n=[\"GLU\",\"ASP\"];function Sn(t,e){return 2===t&&1===e||1===t&&2===e}function Cn(t,e){return 3===t&&3===e}function Pn(t,e){return 3===t&&1===e||1===t&&3===e}function In(t){return\"HIS\"===t.resname&&7==t.number&&t.isRing()}function kn(t,e){return 5===t&&4===e||4===t&&5===e}function Mn(t,e){return 9===t&&5===e||5===t&&9===e}const Tn=[3,11,19,37,55,12,20,38,56,13,31,49,81,21,50,82,83,51,80];function Bn(t,e){return 12===t?11===e||12===e:13===t?10===e:void 0}const Dn=[17,35,53,85];const $n=[7,8,16],On=[6,7,15,16];const Rn=kt(180),En=kt(120);function Fn(t,e,i){return!Nn(t,e,i)&&(t.modelIndex!==e.modelIndex||t.altloc&&e.altloc&&t.altloc!==e.altloc)}const Ln={maxHydrophobicDist:4,maxHbondDist:3.5,maxHbondSulfurDist:4.1,maxHbondAccAngle:45,maxHbondDonAngle:45,maxHbondAccPlaneAngle:90,maxHbondDonPlaneAngle:30,maxPiStackingDist:5.5,maxPiStackingOffset:2,maxPiStackingAngle:30,maxCationPiDist:6,maxCationPiOffset:2,maxIonicDist:5,maxHalogenBondDist:4,maxHalogenBondAngle:30,maxMetalDist:3,refineSaltBridges:!0,masterModelIndex:-1,lineOfSightDistFactor:1};function Nn(t,e,i){return t.modelIndex===i&&e.modelIndex!==i||e.modelIndex===i&&t.modelIndex!==i}function zn(t,e,i){return!Nn(t,e,i)&&(t.modelIndex!==e.modelIndex||t.residueIndex===e.residueIndex||t.altloc&&e.altloc&&t.altloc!==e.altloc)}function Vn(t){const e={types:[],groups:[],centers:{x:[],y:[],z:[]},atomSets:[]};return De&&Me.time(\"calculateFeatures\"),function(t,e){const{charge:i}=vn(t.data),r={};t.eachResidue((t=>{if(An.includes(t.resname)){const i=Es(1);t.eachAtom((t=>{7===t.number&&t.isSidechain()&&Fs(i,t)})),Ls(e,i)}else rn.includes(t.resname)||t.isNucleic()||(t.eachAtom((t=>{let i=!1;const s=Es(1);!function(t){let e=0;return 6===t.number&&3===t.bondCount&&3===t.bondToElementCount(7)&&t.eachBondedAtom((t=>{t.bondCount-t.bondToElementCount(1)==1&&++e})),2===e}(t)?function(t){let e=0;return 6===t.number&&3===t.bondCount&&2===t.bondToElementCount(7)&&1===t.bondToElementCount(6)&&t.eachBondedAtom((t=>{t.bondCount-t.bondToElementCount(1)==1&&++e})),2===e}(t)&&(s.group=9,i=!0):(s.group=8,i=!0),i&&(t.eachBondedAtom((t=>{7===t.number&&(r[t.index]=!0,Fs(s,t))})),Ls(e,s))})),t.eachAtom((t=>{const s=Es(1);i[t.index]>0&&(r[t.index]||(Fs(s,t),Ls(e,s)))})))}))}(t,e),function(t,e){const{charge:i}=vn(t.data),r={};t.eachResidue((t=>{if(_n.includes(t.resname)){const i=Es(2);t.eachAtom((t=>{8===t.number&&t.isSidechain()&&Fs(i,t)})),Ls(e,i)}else if(an.includes(t.resname)){const i=Es(2);t.eachAtom((t=>{wn(t)&&(i.group=6,t.eachBondedAtom((t=>{8===t.number&&Fs(i,t)})),Ls(e,i))}))}else rn.includes(t.resname)||an.includes(t.resname)||(t.eachAtom((t=>{let i=!1;const s=Es(2);!function(t){return 16===t.number&&3===t.bondToElementCount(8)}(t)?wn(t)?(s.group=6,i=!0):function(t){return 16===t.number&&4===t.bondToElementCount(8)}(t)?(s.group=5,i=!0):function(t){let e=0;return 6===t.number&&2===t.bondToElementCount(8)&&1===t.bondToElementCount(6)&&t.eachBondedAtom((t=>{8===t.number&&t.bondCount-t.bondToElementCount(1)==1&&++e})),2===e}(t)&&(s.group=10,i=!0):(s.group=4,i=!0),i&&(t.eachBondedAtom((t=>{8===t.number&&(r[t.index]=!0,Fs(s,t))})),Ls(e,s))})),t.eachAtom((t=>{const s=Es(2);i[t.index]<0&&(r[t.index]||(Fs(s,t),Ls(e,s)))})))}))}(t,e),function(t,e){const i=t.getAtomProxy();t.eachResidue((t=>{const r=t.getAromaticRings();if(r){const s=t.atomOffset;r.forEach((t=>{const r=Es(3);t.forEach((t=>{i.index=t+s,Fs(r,i)})),Ls(e,r)}))}}))}(t,e),function(t,e){const{charge:i,implicitH:r,idealGeometry:s}=vn(t.data);t.eachAtom((t=>{const n=Es(5),o=t.number;if(8===o)Fs(n,t),Ls(e,n);else if(7===o){if(In(t))Fs(n,t),Ls(e,n);else if(i[t.index]<1){const i=t.bondCount+r[t.index],o=s[t.index];(4===o&&i<4||3===o&&i<3||2===o&&i<2)&&(Fs(n,t),Ls(e,n))}}else 16===o&&(\"CYS\"!==t.resname&&\"MET\"!==t.resname&&-1!==t.formalCharge||(Fs(n,t),Ls(e,n)))}))}(t,e),function(t,e){const{totalH:i}=vn(t.data);t.eachAtom((t=>{const r=Es(4),s=t.number;(In(t)||i[t.index]>0&&(7===s||8===s||16===s))&&(Fs(r,t),Ls(e,r))}))}(t,e),function(t,e){const{totalH:i}=vn(t.data);t.eachAtom((t=>{if(6===t.number&&i[t.index]>0&&(t.bondToElementCount(7)>0||t.bondToElementCount(8)>0||function(t){if(!t.isAromatic())return!1;const e=t.residueType.getRings();if(!e)return!1;let i=!1;return e.rings.forEach((e=>{i||e.some((e=>t.index-t.residueAtomOffset===e))&&(i=e.some((e=>{const i=t.residueType.atomTypeIdList[e],r=t.atomMap.get(i).number;return 7===r||8===r})))})),i}(t))){const i=Es(9);Fs(i,t),Ls(e,i)}}))}(t,e),function(t,e){t.eachAtom((t=>{let i=!1,r=!1;const s=rn.includes(t.resname),n=an.includes(t.resname);if(s||n?s?8===t.number?([\"ASP\",\"GLU\",\"SER\",\"THR\",\"TYR\",\"ASN\",\"GLN\"].includes(t.resname)&&t.isSidechain()||t.isBackbone())&&(i=!0,r=!0):16===t.number&&\"CYS\"===t.resname?(i=!0,r=!0):7===t.number&&\"HIS\"===t.resname&&t.isSidechain()&&(i=!0):n&&(8===t.number&&t.isBackbone()?(i=!0,r=!0):[\"N3\",\"N4\",\"N7\"].includes(t.atomname)?i=!0:[\"O2\",\"O4\",\"O6\"].includes(t.atomname)&&(i=!0,r=!0)):t.isHalogen()||8===t.number||16===t.number?(i=!0,r=!0):7===t.number&&(i=!0),i){const i=Es(11);Fs(i,t),Ls(e,i)}if(r){const i=Es(10);Fs(i,t),Ls(e,i)}}))}(t,e),function(t,e){t.eachAtom((t=>{if(t.isTransitionMetal()||30===t.number||48===t.number){const i=Es(12);Fs(i,t),Ls(e,i)}else if(Tn.includes(t.number)){const i=Es(13);Fs(i,t),Ls(e,i)}}))}(t,e),function(t,e){t.eachAtom((t=>{const i=Es(8);let r=!1;6===t.number?(r=!0,t.eachBondedAtom((t=>{const e=t.number;6!==e&&1!==e&&(r=!1)}))):9===t.number&&(r=!0),r&&(Fs(i,t),Ls(e,i))}))}(t,e),function(t,e){t.eachAtom((t=>{if($n.includes(t.number)){let i=!1;if(t.eachBondedAtom((t=>{On.includes(t.number)&&(i=!0)})),i){const i=Es(7);Fs(i,t),Ls(e,i)}}}))}(t,e),function(t,e){t.eachAtom((t=>{if(Dn.includes(t.number)&&1===t.bondToElementCount(6)){const i=Es(6);Fs(i,t),Ls(e,i)}}))}(t,e),De&&Me.timeEnd(\"calculateFeatures\"),e}function Gn(t,i=Ln){const r=function(t){const{types:e,centers:i}=t;return{features:t,spatialHash:new Ts(i),contactStore:new Ds,featureSet:new Os(e.length,!1)}}(Vn(t));De&&Me.time(\"calculateContacts\"),function(t,i,r={}){const s=st(r.maxIonicDist,Ln.maxIonicDist),n=st(r.maxPiStackingDist,Ln.maxPiStackingDist),o=st(r.maxPiStackingOffset,Ln.maxPiStackingOffset),a=st(r.maxPiStackingAngle,Ln.maxPiStackingAngle),c=st(r.maxCationPiDist,Ln.maxCationPiDist),l=st(r.maxCationPiOffset,Ln.maxCationPiOffset),h=st(r.masterModelIndex,Ln.masterModelIndex),d=Math.max(s+2,n,c),u=n*n,m=c*c,{features:p,spatialHash:f,contactStore:g,featureSet:y}=i,{types:b,centers:x,atomSets:v}=p,{x:w,y:A,z:_}=x,S=b.length,C=t.atomStore.x,P=t.atomStore.y,I=t.atomStore.z,k=t.getAtomProxy(),M=t.getAtomProxy(),T=function(t,e,i){const r=t.length,s=e.length;for(let n=0;n{if(e<=t)return;if(k.index=v[t][0],M.index=v[e][0],zn(k,M,h))return;const r=b[t],n=b[e];if(Sn(r,n))T(v[t],v[e],s)&&z(t,e,1);else if(Cn(r,n)){if(i<=u){L(v[t],E),L(v[e],F);const i=57.29578*E.angleTo(F);Math.min(N(t,e,F),N(e,t,E))<=o&&(i<=a||i>=180-a||i<=a+90&&i>=90-a)&&z(t,e,3)}}else if(Pn(r,n)&&i<=m){const[i,s]=3===r?[t,e]:[e,t];L(v[i],E),N(s,i,E)<=l&&z(i,s,2)}}))}(t,r,i),function(t,e,i={}){const r=st(i.maxHbondDist,Ln.maxHbondDist),s=st(i.maxHbondSulfurDist,Ln.maxHbondSulfurDist),n=kt(st(i.maxHbondAccAngle,Ln.maxHbondAccAngle)),o=kt(st(i.maxHbondDonAngle,Ln.maxHbondDonAngle)),a=kt(st(i.maxHbondAccPlaneAngle,Ln.maxHbondAccPlaneAngle)),c=kt(st(i.maxHbondDonPlaneAngle,Ln.maxHbondDonPlaneAngle)),l=st(i.masterModelIndex,Ln.masterModelIndex),h=Math.max(r,s),d=r*r,{features:u,spatialHash:m,contactStore:p,featureSet:f}=e,{types:g,centers:y,atomSets:b}=u,{x:x,y:v,z:w}=y,A=g.length,{idealGeometry:_}=vn(t.data),S=t.getAtomProxy(),C=t.getAtomProxy();for(let t=0;t{if(e<=t)return;const r=g[t],s=g[e],h=Mn(r,s);if(!h&&!kn(r,s))return;const[u,m]=5===s?[t,e]:[e,t];if(S.index=b[u][0],C.index=b[m][0],C.index===S.index)return;if(zn(S,C,l))return;if(16!==S.number&&16!==C.number&&i>d)return;if(S.connectedTo(C))return;const y=yn(S,C),x=gn.get(_[S.index])||kt(120);if(y.some((t=>Math.abs(x-t)>o)))return;if(3===_[S.index]){const t=bn(S,C);if(void 0!==t&&t>c)return}const v=yn(C,S),w=gn.get(_[C.index])||kt(120);if(v.some((t=>w-t>n)))return;if(3===_[C.index]){const t=bn(C,S);if(void 0!==t&&t>a)return}f.setBits(u,m);const A=h?8:function(t,e){return t.isWater()&&e.isWater()}(P=S,I=C)?9:function(t,e){return t.isBackbone()&&e.isBackbone()}(P,I)?10:4;var P,I;p.addContact(u,m,A)}))}(t,r,i),function(t,e,i={}){const r=st(i.maxMetalDist,Ln.maxMetalDist),s=st(i.masterModelIndex,Ln.masterModelIndex),{features:n,spatialHash:o,contactStore:a,featureSet:c}=e,{types:l,centers:h,atomSets:d}=n,{x:u,y:m,z:p}=h,f=l.length,g=t.getAtomProxy(),y=t.getAtomProxy();for(let t=0;t{if(e<=t)return;if(g.index=d[t][0],y.index=d[e][0],zn(g,y,s))return;const r=g.isMetal(),n=y.isMetal();if(!r&&!n)return;const[o,h]=r?[l[t],l[e]]:[l[e],l[t]];Bn(o,h)&&(c.setBits(t,e),a.addContact(t,e,7))}))}(t,r,i),function(t,e,i={}){const r=st(i.maxHydrophobicDist,Ln.maxHydrophobicDist),s=st(i.masterModelIndex,Ln.masterModelIndex),{features:n,spatialHash:o,contactStore:a,featureSet:c}=e,{types:l,centers:h,atomSets:d}=n,{x:u,y:m,z:p}=h,f=l.length,g=t.getAtomProxy(),y=t.getAtomProxy();for(let t=0;t{var r,n;e<=t||(g.index=d[t][0],y.index=d[e][0],zn(g,y,s)||9===g.number&&9===y.number||g.connectedTo(y)||(r=l[t],n=l[e],8===r&&8===n&&(c.setBits(t,e),a.addContact(t,e,6))))}))}(t,r,i),function(t,e,i={}){const r=st(i.maxHalogenBondDist,Ln.maxHalogenBondDist),s=kt(st(i.maxHalogenBondAngle,Ln.maxHalogenBondAngle)),n=st(i.masterModelIndex,Ln.masterModelIndex),{features:o,spatialHash:a,contactStore:c,featureSet:l}=e,{types:h,centers:d,atomSets:u}=o,{x:m,y:p,z:f}=d,g=h.length,y=t.getAtomProxy(),b=t.getAtomProxy();for(let t=0;t{if(e<=t)return;if(y.index=u[t][0],b.index=u[e][0],zn(y,b,n))return;if(r=h[t],o=h[e],!(7===r&&6===o||6===r&&7===o))return;var r,o;const[a,d]=6===h[t]?[y,b]:[b,y],m=yn(a,d);if(1!==m.length)return;if(Rn-m[0]>s)return;const p=yn(d,a);0!==p.length&&(p.some((t=>En-t>s))||(l.setBits(t,e),c.addContact(t,e,5)))}))}(t,r,i);const s=function(t){const{index1:e,index2:i,count:r}=t.contactStore,s=Rs({nodeArray1:e,nodeArray2:i,edgeCount:r,nodeCount:t.featureSet.length}),n=new Os(t.contactStore.count,!0);return Object.assign({adjacencyList:s,contactSet:n},t)}(r);return function(t,i,r={}){De&&Me.time(\"refineLineOfSight\");const s=st(r.lineOfSightDistFactor,Ln.lineOfSightDistFactor),n=st(r.masterModelIndex,Ln.masterModelIndex),o=t.spatialHash,{contactSet:a,contactStore:c,features:l}=i,{index1:h,index2:d}=c,{centers:u,atomSets:m}=l,{x:p,y:f,z:g}=u,y=t.getAtomProxy(),b=t.getAtomProxy(),x=t.getAtomProxy(),v=new e,w=new e,A=3*s,_=s*s;a.forEach((t=>{v.set(p[h[t]],f[h[t]],g[h[t]]),w.set(p[d[t]],f[d[t]],g[d[t]]);const e=(v.x+w.x)/2,i=(v.y+w.y)/2,r=(v.z+w.z)/2,s=m[h[t]],c=m[d[t]];y.index=s[0],b.index=c[0],o.eachWithin(e,i,r,A,((e,i)=>{x.index=e,1!==x.number&&x.vdw*x.vdw*_>i&&!Fn(y,x,n)&&!Fn(b,x,n)&&!s.includes(e)&&!c.includes(e)&&v.distanceToSquared(x)>1&&w.distanceToSquared(x)>1&&(a.clear(t),De&&Me.log(\"removing\",y.qualifiedName(),b.qualifiedName(),\"because\",x.qualifiedName()))}))})),De&&Me.timeEnd(\"refineLineOfSight\")}(t,s,i),function(t,e){const{contactSet:i,contactStore:r,features:s}=e,{type:n,index1:o,index2:a}=r,{atomSets:c}=s,l=t.getAtomProxy(),h=t.getAtomProxy(),d={},u=function(t,e,r){const[s,n]=d[r]||[1/0,-1];t{if(6!==n[t])return;l.index=c[o[t]][0],h.index=c[a[t]][0];const e=l.distanceTo(h);u(e,t,`${l.index}|${h.residueIndex}`),u(e,t,`${h.index}|${l.residueIndex}`)}))}(t,s),i.refineSaltBridges&&function(t,e){const{contactSet:i,contactStore:r,features:s}=e,{type:n,index1:o,index2:a}=r,{atomSets:c}=s,l={},h=function(t,e){l[t]||(l[t]=[]),l[t].push(e)};i.forEach((t=>{1===n[t]&&(c[o[t]].forEach((e=>h(e,t))),c[a[t]].forEach((e=>h(e,t))))})),i.forEach((t=>{if(!function(t){return 4===t||9===t||10===t}(n[t]))return;const e=l[c[o[t]][0]],r=l[c[a[t]][0]];if(!e||!r)return;const s=e.length;for(let n=0;n{3===n[t]&&(c[o[t]].forEach((e=>h(e,t))),c[a[t]].forEach((e=>h(e,t))))})),i.forEach((t=>{if(6!==n[t]&&2!==n[t])return;const e=l[c[o[t]][0]],r=l[c[a[t]][0]];if(!e||!r)return;const s=e.length;for(let n=0;n{1===n[t]&&(c[o[t]].forEach((e=>h(e,t))),c[a[t]].forEach((e=>h(e,t))))})),i.forEach((t=>{if(7!==n[t])return;const e=l[c[o[t]][0]],r=l[c[a[t]][0]];if(!e||!r)return;const s=e.length;for(let t=0;te.getAtomSet(new pe(t)))):e.getAtomSet(new pe(r.filterSele))),o.forEach((t=>{const e=f[t];if(!s.includes(e))return;if(w){const e=l[m[t]][0],i=l[p[t]][0];if(Array.isArray(w)){if(!(w[0].isSet(e)&&w[1].isSet(i)||w[1].isSet(e)&&w[0].isSet(i)))return}else if(!w.isSet(e)&&!w.isSet(i))return}const i=m[t],n=p[t];g.push(h[i],d[i],u[i]),y.push(h[n],d[n],u[n]),b.push(...function(t){switch(t){case 4:case 9:case 10:return Hn.setHex(2851770).toArray();case 6:return Hn.setHex(8421504).toArray();case 5:return Hn.setHex(4259775).toArray();case 1:return Hn.setHex(15779860).toArray();case 7:return Hn.setHex(9191577).toArray();case 2:return Hn.setHex(16744448).toArray();case 3:return Hn.setHex(9220966).toArray();case 8:return Hn.setHex(12967404).toArray();default:return Hn.setHex(13421772).toArray()}}(e)),x.push(r.radius),v.push(t)})),{position1:new Float32Array(g),position2:new Float32Array(y),color:new Float32Array(b),color2:new Float32Array(b),radius:new Float32Array(x),picking:new Qn(v,t,e)}}class qn{constructor(t){this.array=t}get type(){return\"\"}get data(){return{}}getIndex(t){return this.array?this.array[t]:t}getObject(t){return{}}_applyTransformations(t,e,i){return e&&t.applyMatrix4(e.matrix),i&&t.applyMatrix4(i.matrix),t}_getPosition(t){return new e}getPosition(t,e,i){return this._applyTransformations(this._getPosition(t),e,i)}}class Xn extends qn{constructor(t){super(),this.shape=t}get primitive(){}get data(){return this.shape}get type(){return this.primitive.type}getObject(t){return this.primitive.objectFromShape(this.shape,this.getIndex(t))}_getPosition(t){return this.primitive.positionFromShape(this.shape,this.getIndex(t))}}class Yn extends qn{constructor(t,e){super(t),this.structure=e}get type(){return\"atom\"}get data(){return this.structure}getObject(t){return this.structure.getAtomProxy(this.getIndex(t))}_getPosition(t){return(new e).copy(this.getObject(t))}}class Kn extends qn{constructor(t){super(),this.axes=t}get type(){return\"axes\"}get data(){return this.axes}getObject(){return{axes:this.axes}}_getPosition(){return this.axes.center.clone()}}class Zn extends qn{constructor(t,e,i){super(t),this.structure=e,this.bondStore=i||e.bondStore}get type(){return\"bond\"}get data(){return this.structure}getObject(t){const e=this.structure.getBondProxy(this.getIndex(t));return e.bondStore=this.bondStore,e}_getPosition(t){const i=this.getObject(t);return(new e).copy(i.atom1).add(i.atom2).multiplyScalar(.5)}}class Qn extends qn{constructor(t,e,i){super(t),this.contacts=e,this.structure=i}get type(){return\"contact\"}get data(){return this.contacts}getObject(t){const i=this.getIndex(t),{features:r,contactStore:s}=this.contacts,{centers:n,atomSets:o}=r,{x:a,y:c,z:l}=n,{index1:h,index2:d,type:u}=s,m=h[i],p=d[i];return{center1:new e(a[m],c[m],l[m]),center2:new e(a[p],c[p],l[p]),atom1:this.structure.getAtomProxy(o[m][0]),atom2:this.structure.getAtomProxy(o[p][0]),type:Un(u[i])}}_getPosition(t){const{center1:i,center2:r}=this.getObject(t);return(new e).addVectors(i,r).multiplyScalar(.5)}}class Jn extends qn{constructor(t,e,i){super(t),this.validation=e,this.structure=i}get type(){return\"clash\"}get data(){return this.validation}getObject(t){const e=this.validation,i=this.getIndex(t);return{validation:e,index:i,clash:e.clashArray[i]}}_getAtomProxyFromSele(t){const e=new pe(t),i=this.structure.getAtomIndices(e)[0];return this.structure.getAtomProxy(i)}_getPosition(t){const i=this.getObject(t).clash,r=this._getAtomProxyFromSele(i.sele1),s=this._getAtomProxyFromSele(i.sele2);return(new e).copy(r).add(s).multiplyScalar(.5)}}class to extends Zn{get type(){return\"distance\"}}class eo extends qn{get type(){return\"ignore\"}}class io extends Xn{constructor(t,e){super(t),this.mesh=e}get type(){return\"mesh\"}getObject(){const t=this.mesh;return{shape:this.shape,name:t.name,serial:t.serial}}_getPosition(){return this.__position||(this.__position=Ur(this.mesh.position)),this.__position}}class ro extends qn{constructor(t,e){super(t),this.surface=e}get type(){return\"surface\"}get data(){return this.surface}getObject(t){return{surface:this.surface,index:this.getIndex(t)}}_getPosition(){return this.surface.center.clone()}}class so extends qn{constructor(t,e){super(),this.unitcell=t,this.structure=e}get type(){return\"unitcell\"}get data(){return this.unitcell}getObject(){return{unitcell:this.unitcell,structure:this.structure}}_getPosition(){return this.unitcell.getCenter(this.structure)}}class no extends qn{constructor(t,e){super(t),this.volume=e}get type(){return\"volume\"}get data(){return this.volume}getObject(t){const e=this.volume,i=this.getIndex(t);return{volume:e,index:i,value:e.data[i]}}_getPosition(t){const i=this.volume.position,r=this.getIndex(t);return new e(i[3*r],i[3*r+1],i[3*r+2])}}class oo extends no{get type(){return\"slice\"}}function ao(){return new Uint32Array([0,265,515,778,1030,1295,1541,1804,2060,2309,2575,2822,3082,3331,3593,3840,400,153,915,666,1430,1183,1941,1692,2460,2197,2975,2710,3482,3219,3993,3728,560,825,51,314,1590,1855,1077,1340,2620,2869,2111,2358,3642,3891,3129,3376,928,681,419,170,1958,1711,1445,1196,2988,2725,2479,2214,4010,3747,3497,3232,1120,1385,1635,1898,102,367,613,876,3180,3429,3695,3942,2154,2403,2665,2912,1520,1273,2035,1786,502,255,1013,764,3580,3317,4095,3830,2554,2291,3065,2800,1616,1881,1107,1370,598,863,85,348,3676,3925,3167,3414,2650,2899,2137,2384,1984,1737,1475,1226,966,719,453,204,4044,3781,3535,3270,3018,2755,2505,2240,2240,2505,2755,3018,3270,3535,3781,4044,204,453,719,966,1226,1475,1737,1984,2384,2137,2899,2650,3414,3167,3925,3676,348,85,863,598,1370,1107,1881,1616,2800,3065,2291,2554,3830,4095,3317,3580,764,1013,255,502,1786,2035,1273,1520,2912,2665,2403,2154,3942,3695,3429,3180,876,613,367,102,1898,1635,1385,1120,3232,3497,3747,4010,2214,2479,2725,2988,1196,1445,1711,1958,170,419,681,928,3376,3129,3891,3642,2358,2111,2869,2620,1340,1077,1855,1590,314,51,825,560,3728,3993,3219,3482,2710,2975,2197,2460,1692,1941,1183,1430,666,915,153,400,3840,3593,3331,3082,2822,2575,2309,2060,1804,1541,1295,1030,778,515,265,0])}function co(){return new Int32Array([-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,8,3,9,8,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,2,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,3,1,2,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,2,10,0,2,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,8,3,2,10,8,10,9,8,-1,-1,-1,-1,-1,-1,-1,3,11,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,11,2,8,11,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,9,0,2,3,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,11,2,1,9,11,9,8,11,-1,-1,-1,-1,-1,-1,-1,3,10,1,11,10,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,10,1,0,8,10,8,11,10,-1,-1,-1,-1,-1,-1,-1,3,9,0,3,11,9,11,10,9,-1,-1,-1,-1,-1,-1,-1,9,8,10,10,8,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,7,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,3,0,7,3,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,9,8,4,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,1,9,4,7,1,7,3,1,-1,-1,-1,-1,-1,-1,-1,1,2,10,8,4,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,4,7,3,0,4,1,2,10,-1,-1,-1,-1,-1,-1,-1,9,2,10,9,0,2,8,4,7,-1,-1,-1,-1,-1,-1,-1,2,10,9,2,9,7,2,7,3,7,9,4,-1,-1,-1,-1,8,4,7,3,11,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,4,7,11,2,4,2,0,4,-1,-1,-1,-1,-1,-1,-1,9,0,1,8,4,7,2,3,11,-1,-1,-1,-1,-1,-1,-1,4,7,11,9,4,11,9,11,2,9,2,1,-1,-1,-1,-1,3,10,1,3,11,10,7,8,4,-1,-1,-1,-1,-1,-1,-1,1,11,10,1,4,11,1,0,4,7,11,4,-1,-1,-1,-1,4,7,8,9,0,11,9,11,10,11,0,3,-1,-1,-1,-1,4,7,11,4,11,9,9,11,10,-1,-1,-1,-1,-1,-1,-1,9,5,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,5,4,0,8,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,5,4,1,5,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,5,4,8,3,5,3,1,5,-1,-1,-1,-1,-1,-1,-1,1,2,10,9,5,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,0,8,1,2,10,4,9,5,-1,-1,-1,-1,-1,-1,-1,5,2,10,5,4,2,4,0,2,-1,-1,-1,-1,-1,-1,-1,2,10,5,3,2,5,3,5,4,3,4,8,-1,-1,-1,-1,9,5,4,2,3,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,11,2,0,8,11,4,9,5,-1,-1,-1,-1,-1,-1,-1,0,5,4,0,1,5,2,3,11,-1,-1,-1,-1,-1,-1,-1,2,1,5,2,5,8,2,8,11,4,8,5,-1,-1,-1,-1,10,3,11,10,1,3,9,5,4,-1,-1,-1,-1,-1,-1,-1,4,9,5,0,8,1,8,10,1,8,11,10,-1,-1,-1,-1,5,4,0,5,0,11,5,11,10,11,0,3,-1,-1,-1,-1,5,4,8,5,8,10,10,8,11,-1,-1,-1,-1,-1,-1,-1,9,7,8,5,7,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,3,0,9,5,3,5,7,3,-1,-1,-1,-1,-1,-1,-1,0,7,8,0,1,7,1,5,7,-1,-1,-1,-1,-1,-1,-1,1,5,3,3,5,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,7,8,9,5,7,10,1,2,-1,-1,-1,-1,-1,-1,-1,10,1,2,9,5,0,5,3,0,5,7,3,-1,-1,-1,-1,8,0,2,8,2,5,8,5,7,10,5,2,-1,-1,-1,-1,2,10,5,2,5,3,3,5,7,-1,-1,-1,-1,-1,-1,-1,7,9,5,7,8,9,3,11,2,-1,-1,-1,-1,-1,-1,-1,9,5,7,9,7,2,9,2,0,2,7,11,-1,-1,-1,-1,2,3,11,0,1,8,1,7,8,1,5,7,-1,-1,-1,-1,11,2,1,11,1,7,7,1,5,-1,-1,-1,-1,-1,-1,-1,9,5,8,8,5,7,10,1,3,10,3,11,-1,-1,-1,-1,5,7,0,5,0,9,7,11,0,1,0,10,11,10,0,-1,11,10,0,11,0,3,10,5,0,8,0,7,5,7,0,-1,11,10,5,7,11,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,6,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,3,5,10,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,0,1,5,10,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,8,3,1,9,8,5,10,6,-1,-1,-1,-1,-1,-1,-1,1,6,5,2,6,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,6,5,1,2,6,3,0,8,-1,-1,-1,-1,-1,-1,-1,9,6,5,9,0,6,0,2,6,-1,-1,-1,-1,-1,-1,-1,5,9,8,5,8,2,5,2,6,3,2,8,-1,-1,-1,-1,2,3,11,10,6,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,0,8,11,2,0,10,6,5,-1,-1,-1,-1,-1,-1,-1,0,1,9,2,3,11,5,10,6,-1,-1,-1,-1,-1,-1,-1,5,10,6,1,9,2,9,11,2,9,8,11,-1,-1,-1,-1,6,3,11,6,5,3,5,1,3,-1,-1,-1,-1,-1,-1,-1,0,8,11,0,11,5,0,5,1,5,11,6,-1,-1,-1,-1,3,11,6,0,3,6,0,6,5,0,5,9,-1,-1,-1,-1,6,5,9,6,9,11,11,9,8,-1,-1,-1,-1,-1,-1,-1,5,10,6,4,7,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,3,0,4,7,3,6,5,10,-1,-1,-1,-1,-1,-1,-1,1,9,0,5,10,6,8,4,7,-1,-1,-1,-1,-1,-1,-1,10,6,5,1,9,7,1,7,3,7,9,4,-1,-1,-1,-1,6,1,2,6,5,1,4,7,8,-1,-1,-1,-1,-1,-1,-1,1,2,5,5,2,6,3,0,4,3,4,7,-1,-1,-1,-1,8,4,7,9,0,5,0,6,5,0,2,6,-1,-1,-1,-1,7,3,9,7,9,4,3,2,9,5,9,6,2,6,9,-1,3,11,2,7,8,4,10,6,5,-1,-1,-1,-1,-1,-1,-1,5,10,6,4,7,2,4,2,0,2,7,11,-1,-1,-1,-1,0,1,9,4,7,8,2,3,11,5,10,6,-1,-1,-1,-1,9,2,1,9,11,2,9,4,11,7,11,4,5,10,6,-1,8,4,7,3,11,5,3,5,1,5,11,6,-1,-1,-1,-1,5,1,11,5,11,6,1,0,11,7,11,4,0,4,11,-1,0,5,9,0,6,5,0,3,6,11,6,3,8,4,7,-1,6,5,9,6,9,11,4,7,9,7,11,9,-1,-1,-1,-1,10,4,9,6,4,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,10,6,4,9,10,0,8,3,-1,-1,-1,-1,-1,-1,-1,10,0,1,10,6,0,6,4,0,-1,-1,-1,-1,-1,-1,-1,8,3,1,8,1,6,8,6,4,6,1,10,-1,-1,-1,-1,1,4,9,1,2,4,2,6,4,-1,-1,-1,-1,-1,-1,-1,3,0,8,1,2,9,2,4,9,2,6,4,-1,-1,-1,-1,0,2,4,4,2,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,3,2,8,2,4,4,2,6,-1,-1,-1,-1,-1,-1,-1,10,4,9,10,6,4,11,2,3,-1,-1,-1,-1,-1,-1,-1,0,8,2,2,8,11,4,9,10,4,10,6,-1,-1,-1,-1,3,11,2,0,1,6,0,6,4,6,1,10,-1,-1,-1,-1,6,4,1,6,1,10,4,8,1,2,1,11,8,11,1,-1,9,6,4,9,3,6,9,1,3,11,6,3,-1,-1,-1,-1,8,11,1,8,1,0,11,6,1,9,1,4,6,4,1,-1,3,11,6,3,6,0,0,6,4,-1,-1,-1,-1,-1,-1,-1,6,4,8,11,6,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,10,6,7,8,10,8,9,10,-1,-1,-1,-1,-1,-1,-1,0,7,3,0,10,7,0,9,10,6,7,10,-1,-1,-1,-1,10,6,7,1,10,7,1,7,8,1,8,0,-1,-1,-1,-1,10,6,7,10,7,1,1,7,3,-1,-1,-1,-1,-1,-1,-1,1,2,6,1,6,8,1,8,9,8,6,7,-1,-1,-1,-1,2,6,9,2,9,1,6,7,9,0,9,3,7,3,9,-1,7,8,0,7,0,6,6,0,2,-1,-1,-1,-1,-1,-1,-1,7,3,2,6,7,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,3,11,10,6,8,10,8,9,8,6,7,-1,-1,-1,-1,2,0,7,2,7,11,0,9,7,6,7,10,9,10,7,-1,1,8,0,1,7,8,1,10,7,6,7,10,2,3,11,-1,11,2,1,11,1,7,10,6,1,6,7,1,-1,-1,-1,-1,8,9,6,8,6,7,9,1,6,11,6,3,1,3,6,-1,0,9,1,11,6,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,8,0,7,0,6,3,11,0,11,6,0,-1,-1,-1,-1,7,11,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,6,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,0,8,11,7,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,9,11,7,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,1,9,8,3,1,11,7,6,-1,-1,-1,-1,-1,-1,-1,10,1,2,6,11,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,2,10,3,0,8,6,11,7,-1,-1,-1,-1,-1,-1,-1,2,9,0,2,10,9,6,11,7,-1,-1,-1,-1,-1,-1,-1,6,11,7,2,10,3,10,8,3,10,9,8,-1,-1,-1,-1,7,2,3,6,2,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,0,8,7,6,0,6,2,0,-1,-1,-1,-1,-1,-1,-1,2,7,6,2,3,7,0,1,9,-1,-1,-1,-1,-1,-1,-1,1,6,2,1,8,6,1,9,8,8,7,6,-1,-1,-1,-1,10,7,6,10,1,7,1,3,7,-1,-1,-1,-1,-1,-1,-1,10,7,6,1,7,10,1,8,7,1,0,8,-1,-1,-1,-1,0,3,7,0,7,10,0,10,9,6,10,7,-1,-1,-1,-1,7,6,10,7,10,8,8,10,9,-1,-1,-1,-1,-1,-1,-1,6,8,4,11,8,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,6,11,3,0,6,0,4,6,-1,-1,-1,-1,-1,-1,-1,8,6,11,8,4,6,9,0,1,-1,-1,-1,-1,-1,-1,-1,9,4,6,9,6,3,9,3,1,11,3,6,-1,-1,-1,-1,6,8,4,6,11,8,2,10,1,-1,-1,-1,-1,-1,-1,-1,1,2,10,3,0,11,0,6,11,0,4,6,-1,-1,-1,-1,4,11,8,4,6,11,0,2,9,2,10,9,-1,-1,-1,-1,10,9,3,10,3,2,9,4,3,11,3,6,4,6,3,-1,8,2,3,8,4,2,4,6,2,-1,-1,-1,-1,-1,-1,-1,0,4,2,4,6,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,9,0,2,3,4,2,4,6,4,3,8,-1,-1,-1,-1,1,9,4,1,4,2,2,4,6,-1,-1,-1,-1,-1,-1,-1,8,1,3,8,6,1,8,4,6,6,10,1,-1,-1,-1,-1,10,1,0,10,0,6,6,0,4,-1,-1,-1,-1,-1,-1,-1,4,6,3,4,3,8,6,10,3,0,3,9,10,9,3,-1,10,9,4,6,10,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,9,5,7,6,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,3,4,9,5,11,7,6,-1,-1,-1,-1,-1,-1,-1,5,0,1,5,4,0,7,6,11,-1,-1,-1,-1,-1,-1,-1,11,7,6,8,3,4,3,5,4,3,1,5,-1,-1,-1,-1,9,5,4,10,1,2,7,6,11,-1,-1,-1,-1,-1,-1,-1,6,11,7,1,2,10,0,8,3,4,9,5,-1,-1,-1,-1,7,6,11,5,4,10,4,2,10,4,0,2,-1,-1,-1,-1,3,4,8,3,5,4,3,2,5,10,5,2,11,7,6,-1,7,2,3,7,6,2,5,4,9,-1,-1,-1,-1,-1,-1,-1,9,5,4,0,8,6,0,6,2,6,8,7,-1,-1,-1,-1,3,6,2,3,7,6,1,5,0,5,4,0,-1,-1,-1,-1,6,2,8,6,8,7,2,1,8,4,8,5,1,5,8,-1,9,5,4,10,1,6,1,7,6,1,3,7,-1,-1,-1,-1,1,6,10,1,7,6,1,0,7,8,7,0,9,5,4,-1,4,0,10,4,10,5,0,3,10,6,10,7,3,7,10,-1,7,6,10,7,10,8,5,4,10,4,8,10,-1,-1,-1,-1,6,9,5,6,11,9,11,8,9,-1,-1,-1,-1,-1,-1,-1,3,6,11,0,6,3,0,5,6,0,9,5,-1,-1,-1,-1,0,11,8,0,5,11,0,1,5,5,6,11,-1,-1,-1,-1,6,11,3,6,3,5,5,3,1,-1,-1,-1,-1,-1,-1,-1,1,2,10,9,5,11,9,11,8,11,5,6,-1,-1,-1,-1,0,11,3,0,6,11,0,9,6,5,6,9,1,2,10,-1,11,8,5,11,5,6,8,0,5,10,5,2,0,2,5,-1,6,11,3,6,3,5,2,10,3,10,5,3,-1,-1,-1,-1,5,8,9,5,2,8,5,6,2,3,8,2,-1,-1,-1,-1,9,5,6,9,6,0,0,6,2,-1,-1,-1,-1,-1,-1,-1,1,5,8,1,8,0,5,6,8,3,8,2,6,2,8,-1,1,5,6,2,1,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,3,6,1,6,10,3,8,6,5,6,9,8,9,6,-1,10,1,0,10,0,6,9,5,0,5,6,0,-1,-1,-1,-1,0,3,8,5,6,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,5,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,5,10,7,5,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,5,10,11,7,5,8,3,0,-1,-1,-1,-1,-1,-1,-1,5,11,7,5,10,11,1,9,0,-1,-1,-1,-1,-1,-1,-1,10,7,5,10,11,7,9,8,1,8,3,1,-1,-1,-1,-1,11,1,2,11,7,1,7,5,1,-1,-1,-1,-1,-1,-1,-1,0,8,3,1,2,7,1,7,5,7,2,11,-1,-1,-1,-1,9,7,5,9,2,7,9,0,2,2,11,7,-1,-1,-1,-1,7,5,2,7,2,11,5,9,2,3,2,8,9,8,2,-1,2,5,10,2,3,5,3,7,5,-1,-1,-1,-1,-1,-1,-1,8,2,0,8,5,2,8,7,5,10,2,5,-1,-1,-1,-1,9,0,1,5,10,3,5,3,7,3,10,2,-1,-1,-1,-1,9,8,2,9,2,1,8,7,2,10,2,5,7,5,2,-1,1,3,5,3,7,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,7,0,7,1,1,7,5,-1,-1,-1,-1,-1,-1,-1,9,0,3,9,3,5,5,3,7,-1,-1,-1,-1,-1,-1,-1,9,8,7,5,9,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,8,4,5,10,8,10,11,8,-1,-1,-1,-1,-1,-1,-1,5,0,4,5,11,0,5,10,11,11,3,0,-1,-1,-1,-1,0,1,9,8,4,10,8,10,11,10,4,5,-1,-1,-1,-1,10,11,4,10,4,5,11,3,4,9,4,1,3,1,4,-1,2,5,1,2,8,5,2,11,8,4,5,8,-1,-1,-1,-1,0,4,11,0,11,3,4,5,11,2,11,1,5,1,11,-1,0,2,5,0,5,9,2,11,5,4,5,8,11,8,5,-1,9,4,5,2,11,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,5,10,3,5,2,3,4,5,3,8,4,-1,-1,-1,-1,5,10,2,5,2,4,4,2,0,-1,-1,-1,-1,-1,-1,-1,3,10,2,3,5,10,3,8,5,4,5,8,0,1,9,-1,5,10,2,5,2,4,1,9,2,9,4,2,-1,-1,-1,-1,8,4,5,8,5,3,3,5,1,-1,-1,-1,-1,-1,-1,-1,0,4,5,1,0,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,4,5,8,5,3,9,0,5,0,3,5,-1,-1,-1,-1,9,4,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,11,7,4,9,11,9,10,11,-1,-1,-1,-1,-1,-1,-1,0,8,3,4,9,7,9,11,7,9,10,11,-1,-1,-1,-1,1,10,11,1,11,4,1,4,0,7,4,11,-1,-1,-1,-1,3,1,4,3,4,8,1,10,4,7,4,11,10,11,4,-1,4,11,7,9,11,4,9,2,11,9,1,2,-1,-1,-1,-1,9,7,4,9,11,7,9,1,11,2,11,1,0,8,3,-1,11,7,4,11,4,2,2,4,0,-1,-1,-1,-1,-1,-1,-1,11,7,4,11,4,2,8,3,4,3,2,4,-1,-1,-1,-1,2,9,10,2,7,9,2,3,7,7,4,9,-1,-1,-1,-1,9,10,7,9,7,4,10,2,7,8,7,0,2,0,7,-1,3,7,10,3,10,2,7,4,10,1,10,0,4,0,10,-1,1,10,2,8,7,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,9,1,4,1,7,7,1,3,-1,-1,-1,-1,-1,-1,-1,4,9,1,4,1,7,0,8,1,8,7,1,-1,-1,-1,-1,4,0,3,7,4,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,8,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,10,8,10,11,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,0,9,3,9,11,11,9,10,-1,-1,-1,-1,-1,-1,-1,0,1,10,0,10,8,8,10,11,-1,-1,-1,-1,-1,-1,-1,3,1,10,11,3,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,2,11,1,11,9,9,11,8,-1,-1,-1,-1,-1,-1,-1,3,0,9,3,9,11,1,2,9,2,11,9,-1,-1,-1,-1,0,2,11,8,0,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,2,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,3,8,2,8,10,10,8,9,-1,-1,-1,-1,-1,-1,-1,9,10,2,0,9,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,3,8,2,8,10,0,1,8,1,10,8,-1,-1,-1,-1,1,10,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,3,8,9,1,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,9,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,3,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1])}function lo(t,e,i,r,s){var n,o,a,c,l,h,d,u=[[0,4,4,4,2,0,0,0,2,2,0,0],[4,0,4,4,0,8,0,0,0,8,8,0],[4,4,0,4,0,0,8,0,0,0,8,8],[4,4,4,0,0,0,0,1,1,0,0,1],[2,0,0,0,0,8,8,8,2,2,0,0],[0,8,0,0,8,0,8,8,0,8,8,0],[0,0,8,0,8,8,0,8,0,0,8,8],[0,0,0,1,8,8,8,0,1,0,0,1],[2,0,0,1,2,0,0,1,0,2,0,1],[2,8,0,0,2,8,0,0,2,0,8,0],[0,8,8,0,0,8,8,0,0,8,0,8],[0,0,8,1,0,0,8,1,1,0,8,0]],m=0,p=!1,f=!1,g=!1,y=!1,b=-1,x=e*i*r,v=e,w=e*i,A=new Int32Array(12),_=[],S=[],C=[],P=[],I=ao(),k=co();function M(t,e,i){return t+(e-t)*i}function T(t,s,n){return w*(n=(n+d)%r)+v*(s=(s+h)%i)+(t=(t+l)%e)}function B(t,e,i,r,c,l,h){var d=3*t;if(o[d]<0){var u=(m-l)/(h-l),f=n,g=3*a;if(_[g]=i+u,_[g+1]=r,_[g+2]=c,!p){var y=3*t;S[g]=b*M(f[y],f[y+3],u),S[g+1]=b*M(f[y+1],f[y+4],u),S[g+2]=b*M(f[y+2],f[y+5],u)}s&&(P[a]=s[t+Math.round(u)]),o[d]=a,A[e]=a,a+=1}else A[e]=o[d]}function D(t,e,i,r,c,l,h){var d=3*t+1;if(o[d]<0){var u=(m-l)/(h-l),f=n,g=3*a;if(_[g]=i,_[g+1]=r+u,_[g+2]=c,!p){var y=3*t,x=y+3*v;S[g]=b*M(f[y],f[x],u),S[g+1]=b*M(f[y+1],f[x+1],u),S[g+2]=b*M(f[y+2],f[x+2],u)}s&&(P[a]=s[t+Math.round(u)*v]),o[d]=a,A[e]=a,a+=1}else A[e]=o[d]}function $(t,e,i,r,c,l,h){var d=3*t+2;if(o[d]<0){var u=(m-l)/(h-l),f=n,g=3*a;if(_[g]=i,_[g+1]=r,_[g+2]=c+u,!p){var y=3*t,x=y+3*w;S[g]=b*M(f[y],f[x],u),S[g+1]=b*M(f[y+1],f[x+1],u),S[g+2]=b*M(f[y+2],f[x+2],u)}s&&(P[a]=s[t+Math.round(u)*w]),o[d]=a,A[e]=a,a+=1}else A[e]=o[d]}function O(e){var i=3*e;0===n[i]&&(n[i]=t[(e-1+x)%x]-t[(e+1)%x],n[i+1]=t[(e-v+x)%x]-t[(e+v)%x],n[i+2]=t[(e-w+x)%x]-t[(e+w)%x])}function R(e,i,r,s,n){var o,a,l,h,d,b,x;g?(s=T(e,i,r),o=T(e+1,i,r),a=T(e,i+1,r),l=T(e,i,r+1),h=T(e+1,i+1,r),d=T(e+1,i,r+1),b=T(e,i+1,r+1),x=T(e+1,i+1,r+1)):(o=s+1,h=(a=s+v)+1,d=(l=s+w)+1,x=(b=a+w)+1);var _=0,S=t[s],P=t[o],M=t[a],R=t[h],E=t[l],F=t[d],L=t[b],N=t[x];S=m){$=b,M=!0;break}if(M)break}if(M)break}for(M=!1,y=n;y=m){D=y,M=!0;break}if(M)break}if(M)break}for(M=!1,f=s;f=m){B=f,M=!0;break}if(M)break}if(M)break}for(M=!1,b=h;b>=a;--b){for(y=l;y>=n;--y){for(f=c;f>=s;--f)if(d=e*i*b+e*y+f,t[d]>=m){F=b,M=!0;break}if(M)break}if(M)break}for(M=!1,y=l;y>=n;--y){for(b=F;b>=a;--b){for(f=c;f>=s;--f)if(d=e*i*b+e*y+f,t[d]>=m){E=y,M=!0;break}if(M)break}if(M)break}for(M=!1,f=c;f>=s;--f){for(y=E;y>=n;--y){for(b=F;b>=a;--b)if(d=e*i*b+e*y+f,t[d]>=m){O=f,M=!0;break}if(M)break}if(M)break}p?(s=Math.max(0,B-1),n=Math.max(0,D-1),a=Math.max(0,$-1),c=Math.min(e-1,O+1),l=Math.min(i-1,E+1),h=Math.min(r-1,F+1)):(s=Math.max(1,B-1),n=Math.max(1,D-1),a=Math.max(1,$-1),c=Math.min(e-2,O+1),l=Math.min(i-2,E+1),h=Math.min(r-2,F+1))}var L=15;for(b=a;b0?-1:1,n||(n=new Float32Array(3*x)));var I=3*x;if(o&&o.length===I||(o=new Int32Array(I)),a=0,c=0,void 0!==v){var k=v[0].map(Math.round),M=v[1].map(Math.round);l=e*Math.ceil(Math.abs(k[0])/e),h=i*Math.ceil(Math.abs(k[1])/i),d=r*Math.ceil(Math.abs(k[2])/r),E(k[0],k[1],k[2],M[0],M[1],M[2])}else l=h=d=0,E();return _.length=3*a,p||(S.length=3*a),C.length=c,s&&(P.length=a),{position:new Float32Array(_),normal:p?void 0:new Float32Array(S),index:xt(C,_.length/3),atomindex:s?new Int32Array(P):void 0,contour:f}}}He.add(\"arrow\",class extends Xn{get primitive(){return _s}}),He.add(\"box\",class extends Xn{get primitive(){return xs}}),He.add(\"cone\",class extends Xn{get primitive(){return Ss}}),He.add(\"cylinder\",class extends Xn{get primitive(){return As}}),He.add(\"ellipsoid\",class extends Xn{get primitive(){return Cs}}),He.add(\"octahedron\",class extends Xn{get primitive(){return vs}}),He.add(\"sphere\",class extends Xn{get primitive(){return bs}}),He.add(\"tetrahedron\",class extends Xn{get primitive(){return ws}}),He.add(\"torus\",class extends Xn{get primitive(){return Ps}}),He.add(\"point\",class extends Xn{get primitive(){return ks}}),He.add(\"wideline\",class extends Xn{get primitive(){return Ms}}),Object.assign(lo,{__deps:[ao,co,xt]});class ho{constructor(t,e){this.cols=t,this.rows=e,this.size=this.cols*this.rows,this.data=new Float32Array(this.size)}copyTo(t){t.data.set(this.data)}}function uo(t,e){let i=0,r=0;const s=e.rows,n=e.cols;let o=0,a=0,c=0;const l=e.data,h=t.data;for(;i(e=Math.abs(e))?(e/=t,t*Math.sqrt(1+e*e)):e>0?(t/=e,e*Math.sqrt(1+t*t)):0}const xo=1.192092896e-7,vo=1e-37;function wo(t,e,i,r){let s=0,n=0;const o=t.rows,a=t.cols;let c=o,l=a;c>16)?O:-O,t[h*e+u]=$;for(m=0;m<2;m++)for(d=0;d{const e=t.data.sd,i=t.data.p;o(this._makeSurface(e,i.isolevel,i.smooth))}),(a=>{console.warn(\"Volume.getSurfaceWorker error - trying without worker\",a);const c=this.getSurface(t,e,i,r,s,n);o(c)}))}else{const a=this.getSurface(t,e,i,r,s,n);o(a)}}getValueForSigma(t){return this.mean+st(t,2)*this.rms}getSigmaForValue(t){return(st(t,0)-this.mean)/this.rms}get position(){if(!this._position){const t=this.nz,e=this.ny,i=this.nx,r=new Float32Array(i*e*t*3);let s=0;for(let n=0;ni){const t=e;e=i,i=t}const r=t[e];return void 0===r?(t[e]=[i],!0):!r.includes(i)&&(r.push(i),!0)}const i=this.geometry,r=i.index;if(this.parameters.wireframe)if(r){const s=r.array;let n,o=s.length;if(i.drawRange.count!==1/0&&(o=i.drawRange.count),this.wireframeIndex&&this.wireframeIndex.length>2*o)n=this.wireframeIndex;else{n=xt(2*o,i.attributes.position.count)}let a=0;t.length=0;for(let t=0;t2*t?this.wireframeIndex:xt(2*t,t);for(let i=0,r=0;ithis.wireframeGeometry.index.array.length)this.wireframeGeometry.setIndex(new M(this.wireframeIndex,1).setUsage(this.dynamic?WebGLRenderingContext.DYNAMIC_DRAW:0));else{const t=this.wireframeGeometry.getIndex();if(!t)return void Me.error(\"Index is null\");t.set(this.wireframeIndex),t.needsUpdate=this.wireframeIndexCount>0,t.updateRange.count=this.wireframeIndexCount}this.wireframeGeometry.setDrawRange(0,this.wireframeIndexCount)}}getRenderOrder(){let t=0;return this.isText?t=1:this.transparent&&(t=this.isSurface?3:2),t}_getMesh(t){this.material||this.makeMaterial();const e=this.geometry,i=this[t];let r;return r=this.isLine?new T(e,i):this.isPoint?new o(e,i):new P(e,i),r.frustumCulled=!1,r.renderOrder=this.getRenderOrder(),r}getMesh(){return this._getMesh(\"material\")}getWireframeMesh(){let t;return this.material||this.makeMaterial(),this.wireframeGeometry||this.makeWireframeGeometry(),t=new T(this.wireframeGeometry,this.wireframeMaterial),t.frustumCulled=!1,t.renderOrder=this.getRenderOrder(),t}getPickingMesh(){return this._getMesh(\"pickingMaterial\")}getShader(t,e){return gi(t,this.getDefines(e))}getVertexShader(t){return this.getShader(this.vertexShader,t)}getFragmentShader(t){return this.getShader(this.fragmentShader,t)}getDefines(t){const e={};return this.parameters.clipNear&&(e.NEAR_CLIP=1),this.parameters.clipRadius&&(e.RADIUS_CLIP=1),\"picking\"===t?e.PICKING=1:((\"background\"===t||this.parameters.background)&&(e.NOLIGHT=1),this.parameters.flatShaded&&(e.FLAT_SHADED=1),this.parameters.opaqueBack&&(e.OPAQUE_BACK=1),this.parameters.diffuseInterior&&(e.DIFFUSE_INTERIOR=1),this.parameters.useInteriorColor&&(e.USE_INTERIOR_COLOR=1)),e}getParameters(){return this.parameters}addUniforms(t){this.uniforms=R.merge([this.uniforms,t]),this.pickingUniforms=R.merge([this.pickingUniforms,t])}addAttributes(t){for(let e in t){let i;const r=t[e],s=this.attributeSize*Lo[r.type];r.value?(s!==r.value.length&&Me.error(\"attribute value has wrong length\",e),i=r.value):i=bt(\"float32\",s),this.geometry.setAttribute(e,new M(i,Lo[r.type]).setUsage(this.dynamic?WebGLRenderingContext.DYNAMIC_DRAW:0))}}updateRenderOrder(){const t=this.getRenderOrder();function e(e){e.renderOrder=t}this.group.children.forEach(e),this.pickingGroup&&this.pickingGroup.children.forEach(e)}updateShader(){const t=this.material,e=this.wireframeMaterial,i=this.pickingMaterial;t.vertexShader=this.getVertexShader(),t.fragmentShader=this.getFragmentShader(),t.needsUpdate=!0,e.vertexShader=this.getShader(\"Line.vert\"),e.fragmentShader=this.getShader(\"Line.frag\"),e.needsUpdate=!0,i.vertexShader=this.getVertexShader(\"picking\"),i.fragmentShader=this.getFragmentShader(\"picking\"),i.needsUpdate=!0}setParameters(t){const e=t,i=this.parameterTypes,r=this.parameters,s={},n={};let o=!1,a=!1;for(const t in e){const c=e[t];void 0!==c&&(r[t]=c,void 0!==i[t]&&(i[t].property&&(!0!==i[t].property?s[i[t].property]=c:s[t]=c),i[t].uniform&&(!0!==i[t].uniform?n[i[t].uniform]=c:n[t]=c),i[t].updateShader&&(o=!0),i[t].updateVisibility&&(a=!0),this.dynamic&&\"wireframe\"===t&&!0===c&&this.updateWireframeIndex(),\"forceTransparent\"===t&&(s.transparent=this.transparent),\"matrix\"===t&&(this.matrix=c)))}this.setProperties(s),this.setUniforms(n),o&&this.updateShader(),a&&this.setVisibility(this.visible)}setAttributes(t){const e=this.geometry,i=e.attributes;for(const r in t){if(\"picking\"===r)continue;const s=t[r],n=s.length;if(\"index\"===r){const t=e.getIndex();if(!t){Me.error(\"Index is null\");continue}e.setDrawRange(0,1/0),n>t.array.length?e.setIndex(new M(s,1).setUsage(this.dynamic?WebGLRenderingContext.DYNAMIC_DRAW:0)):(t.set(s),t.count=n,t.needsUpdate=n>0,t.updateRange.count=n,e.setDrawRange(0,n)),this.indexVersion++,this.parameters.wireframe&&this.updateWireframeIndex()}else{const t=i[r];n>t.array.length?e.setAttribute(r,new M(s,t.itemSize).setUsage(this.dynamic?WebGLRenderingContext.DYNAMIC_DRAW:0)):(i[r].set(s),i[r].needsUpdate=n>0,i[r].updateRange.count=n)}}}setUniforms(t){if(!t)return;const e=this.material.uniforms,i=this.wireframeMaterial.uniforms,r=this.pickingMaterial.uniforms;for(let s in t)\"opacity\"===s&&this.setProperties({transparent:this.transparent}),void 0!==e[s]&&(e[s].value.isVector3?e[s].value.copy(t[s]):e[s].value.set?e[s].value.set(t[s]):e[s].value=t[s]),void 0!==i[s]&&(i[s].value.isVector3?i[s].value.copy(t[s]):i[s].value.set?i[s].value.set(t[s]):i[s].value=t[s]),void 0!==r[s]&&(r[s].value.isVector3?r[s].value.copy(t[s]):r[s].value.set?r[s].value.set(t[s]):r[s].value=t[s])}setProperties(t){if(!t)return;const e=this.material,i=this.wireframeMaterial,r=this.pickingMaterial;for(const s in t){const n=s;let o=t[n];\"transparent\"===n?this.updateRenderOrder():\"side\"===n&&(o=Fo(o)),e[n]=o,i[n]=o,r[n]=o}e.needsUpdate=!0,i.needsUpdate=!0,r.needsUpdate=!0}setVisibility(t){this.visible=t,this.parameters.wireframe?(this.group.visible=!1,this.wireframeGroup.visible=t,this.pickable&&(this.pickingGroup.visible=!1)):(this.group.visible=t,this.wireframeGroup.visible=!1,this.pickable&&(this.pickingGroup.visible=t))}dispose(){this.material&&this.material.dispose(),this.wireframeMaterial&&this.wireframeMaterial.dispose(),this.pickingMaterial&&this.pickingMaterial.dispose(),this.geometry.dispose(),this.wireframeGeometry&&this.wireframeGeometry.dispose()}toJSON(){var t={};for(var e in this)\"group\"!==e&&\"wireframeGroup\"!==e&&\"pickingGroup\"!=e&&\"picking\"!==e&&(t[e]=this[e]);return t}}class Uo extends Go{constructor(t,e={}){super(t,e),this.vertexShader=\"Mesh.vert\",this.fragmentShader=\"Mesh.frag\",this.addAttributes({normal:{type:\"v3\",value:t.normal}}),void 0===t.normal&&this.geometry.computeVertexNormals()}}class jo extends Uo{constructor(){super(...arguments),this.isSurface=!0}}function Ho(t){t.visible=!0}function Wo(t){t.visible=!1}class qo{constructor(t){this.group=new m,this.wireframeGroup=new m,this.pickingGroup=new m,this.frontMeshes=[],this.backMeshes=[],this.size=t.size,this.side=t.parameters.side,this.visible=t.visible,this.geometry=t.geometry,this.picking=t.picking,this.group=new m,this.wireframeGroup=new m,this.pickingGroup=new m,this.matrix=t.matrix;const e=t,i=new t.constructor({position:new Float32Array(0)});e.makeMaterial(),i.makeMaterial(),i.picking=t.picking,i.geometry=t.geometry,i.wireframeGeometry=t.wireframeGeometry,i.setParameters(t.getParameters()),i.updateShader(),e.setParameters({side:\"front\"}),i.setParameters({side:\"back\",opacity:i.parameters.opacity}),this.buffer=t,this.frontBuffer=e,this.backBuffer=i}set matrix(t){Go.prototype.setMatrix.call(this,t)}get matrix(){return this.group.matrix.clone()}get pickable(){return!!this.picking&&!this.parameters.disablePicking}get parameters(){return this.buffer.parameters}getParameters(){const t=Object.assign({},this.buffer.parameters);return t.side=this.side,t}getMesh(t){let e,i;return t?(i=this.backBuffer.getPickingMesh(),e=this.frontBuffer.getPickingMesh()):(i=this.backBuffer.getMesh(),e=this.frontBuffer.getMesh()),this.frontMeshes.push(e),this.backMeshes.push(i),this.setParameters({side:this.side}),(new m).add(i,e)}getWireframeMesh(){return this.buffer.getWireframeMesh()}getPickingMesh(){return this.getMesh(!0)}setAttributes(t){this.buffer.setAttributes(t)}setParameters(t){\"front\"===(t=Object.assign({},t)).side?(this.frontMeshes.forEach(Ho),this.backMeshes.forEach(Wo)):\"back\"===t.side?(this.frontMeshes.forEach(Wo),this.backMeshes.forEach(Ho)):\"double\"===t.side&&(this.frontMeshes.forEach(Ho),this.backMeshes.forEach(Ho)),void 0!==t.side&&(this.side=t.side),delete t.side,void 0!==t.matrix&&(this.matrix=t.matrix),delete t.matrix,this.frontBuffer.setParameters(t),void 0!==t.wireframe&&(this.wireframe=t.wireframe,this.setVisibility(this.visible)),delete t.wireframe,this.backBuffer.setParameters(t)}setVisibility(t){this.visible=t,this.parameters.wireframe?(this.group.visible=!1,this.wireframeGroup.visible=t,this.pickable&&(this.pickingGroup.visible=!1)):(this.group.visible=t,this.wireframeGroup.visible=!1,this.pickable&&(this.pickingGroup.visible=t))}dispose(){this.frontBuffer.dispose(),this.backBuffer.dispose()}toJSON(){var t={};for(var e in this)[\"side\",\"size\",\"visible\",\"matrix\",\"parameters\"].includes(e)&&(t[e]=this[e]);return t}}Ve.add(\"shader/Line.vert\",\"uniform float clipNear;\\nuniform vec3 clipCenter;\\nvarying vec3 vViewPosition;\\n#if defined( RADIUS_CLIP )\\nvarying vec3 vClipCenter;\\n#endif\\n#include color_pars_vertex\\nvoid main(){\\n#include color_vertex\\n#include begin_vertex\\n#include project_vertex\\nvViewPosition = -mvPosition.xyz;\\n#if defined( RADIUS_CLIP )\\nvClipCenter = -( modelViewMatrix * vec4( clipCenter, 1.0 ) ).xyz;\\n#endif\\n#include nearclip_vertex\\n}\"),Ve.add(\"shader/Line.frag\",\"uniform float opacity;\\nuniform float clipNear;\\nuniform float clipRadius;\\nvarying vec3 vViewPosition;\\n#if defined( RADIUS_CLIP )\\nvarying vec3 vClipCenter;\\n#endif\\n#include common\\n#include color_pars_fragment\\n#include fog_pars_fragment\\nvoid main(){\\n#include nearclip_fragment\\n#include radiusclip_fragment\\ngl_FragColor = vec4( vColor, opacity );\\n#include premultiplied_alpha_fragment\\n#include tonemapping_fragment\\n#include encodings_fragment\\n#include fog_fragment\\n}\");class Xo extends Go{constructor(){super(...arguments),this.isLine=!0,this.vertexShader=\"Line.vert\",this.fragmentShader=\"Line.frag\"}}class Yo extends zr{constructor(t,r,s){super(t,r,s),this.type=\"surface\",this.parameters=Object.assign({isolevelType:{type:\"select\",options:{value:\"value\",sigma:\"sigma\"}},isolevel:{type:\"number\",precision:2,max:1e3,min:-1e3},negateIsolevel:{type:\"boolean\"},isolevelScroll:{type:\"boolean\"},smooth:{type:\"integer\",precision:1,max:10,min:0},background:{type:\"boolean\",rebuild:!0},opaqueBack:{type:\"boolean\",buffer:!0},boxSize:{type:\"integer\",precision:1,max:100,min:0},colorVolume:{type:\"hidden\"},contour:{type:\"boolean\",rebuild:!0},useWorker:{type:\"boolean\",rebuild:!0},wrap:{type:\"boolean\",rebuild:!0}},this.parameters),t instanceof Eo?(this.surface=void 0,this.volume=t):(this.surface=t,this.volume=void 0),this.boxCenter=new e,this.__boxCenter=new e,this.box=new a,this.__box=new a,this._position=new e,this.inverseMatrix=new i,this.setBox=function(){this._position.copy(r.translationGroup.position).negate(),this._position.applyMatrix4(this.inverseMatrix),this._position.equals(this.boxCenter)||this.setParameters({boxCenter:this._position})},this.toBePrepared=!0,this.viewer.signals.ticked.add(this.setBox,this),this.init(s)}init(t){const e=t||{};e.colorScheme=st(e.colorScheme,\"uniform\"),e.colorValue=st(e.colorValue,14540253),this.isolevelType=st(e.isolevelType,\"sigma\"),this.isolevel=st(e.isolevel,2),this.negateIsolevel=st(e.negateIsolevel,!1),this.isolevelScroll=st(e.isolevelScroll,!1),this.smooth=st(e.smooth,0),this.background=st(e.background,!1),this.opaqueBack=st(e.opaqueBack,!0),this.boxSize=st(e.boxSize,0),this.colorVolume=st(e.colorVolume,void 0),this.contour=st(e.contour,!1),this.useWorker=st(e.useWorker,!0),this.wrap=st(e.wrap,!1),super.init(e),this.inverseMatrix.getInverse(this.matrix),this.build()}attach(t){this.bufferList.forEach((t=>{this.viewer.add(t)})),this.setVisibility(this.visible),t()}prepare(t){if(this.volume){let e;if(e=\"sigma\"===this.isolevelType?this.volume.getValueForSigma(this.isolevel):this.isolevel,this.negateIsolevel&&(e*=-1),!this.surface||this.__isolevel!==e||this.__smooth!==this.smooth||this.__contour!==this.contour||this.__wrap!==this.wrap||this.__boxSize!==this.boxSize||this.boxSize>0&&!this.__boxCenter.equals(this.boxCenter)){this.__isolevel=e,this.__smooth=this.smooth,this.__contour=this.contour,this.__wrap=this.wrap,this.__boxSize=this.boxSize,this.__boxCenter.copy(this.boxCenter),this.__box.copy(this.box);const i=e=>{this.surface=e,t()};this.useWorker?this.volume.getSurfaceWorker(e,this.smooth,this.boxCenter,this.boxSize,this.contour,this.wrap,i):i(this.volume.getSurface(e,this.smooth,this.boxCenter,this.boxSize,this.contour,this.wrap))}else t()}else t()}create(){const t={position:this.surface.getPosition(),color:this.surface.getColor(this.getColorParams()),index:this.surface.getIndex()};let e;if(this.contour)e=new Xo(t,this.getBufferParams({wireframe:!1}));else{Object.assign(t,{normal:this.surface.getNormal(),picking:this.surface.getPicking()});const i=new jo(t,this.getBufferParams({background:this.background,opaqueBack:this.opaqueBack,dullInterior:!1}));e=new qo(i)}this.bufferList.push(e)}update(t){if(0===this.bufferList.length)return;const e={};(t=t||{}).position&&(e.position=this.surface.getPosition()),t.color&&(e.color=this.surface.getColor(this.getColorParams())),t.index&&(e.index=this.surface.getIndex()),t.normal&&(e.normal=this.surface.getNormal()),this.bufferList.forEach((function(t){t.setAttributes(e)}))}setParameters(t,e,i){return t&&void 0!==t.isolevelType&&this.volume&&(\"value\"===this.isolevelType&&\"sigma\"===t.isolevelType?this.isolevel=this.volume.getSigmaForValue(this.isolevel):\"sigma\"===this.isolevelType&&\"value\"===t.isolevelType&&(this.isolevel=this.volume.getValueForSigma(this.isolevel)),this.isolevelType=t.isolevelType),t&&t.boxCenter&&(this.boxCenter.copy(t.boxCenter),delete t.boxCenter),t&&t.wireframe&&(t.contour||void 0===t.contour&&this.contour)&&(t.wireframe=!1),super.setParameters(t,e,i),t.matrix&&this.inverseMatrix.getInverse(t.matrix),this.volume&&this.volume.getBox(this.boxCenter,this.boxSize,this.box),t&&void 0!==t.colorVolume&&e&&(e.color=!0),this.surface&&(void 0!==t.isolevel||void 0!==t.negateIsolevel||void 0!==t.smooth||void 0!==t.wrap||void 0!==t.boxSize||this.boxSize>0&&!this.__box.equals(this.box))&&this.build({position:!0,color:!0,index:!0,normal:!this.contour}),this}getColorParams(){const t=super.getColorParams();return t.volume=this.colorVolume,t}dispose(){this.viewer.signals.ticked.remove(this.setBox,this),super.dispose()}}class Ko{static zoomScroll(t,e){t.trackballControls.zoom(e)}static clipNearScroll(t,e){const i=t.getParameters();t.setParameters({clipNear:i.clipNear+e/10})}static focusScroll(t,e){const i=t.getFocus(),r=Math.sign(e)*function(t,e,i){if(t>e)return t;const r=t/e;return((2*i-e)*r+(2*e-3*i))*r*r+i}((100-i)/10,5,.2);t.setFocus(i+r)}static zoomFocusScroll(t,e){t.trackballControls.zoom(e);const i=t.viewer.camera.position.z;t.setFocus(100-Math.abs(i/8))}static isolevelScroll(t,e){const i=Math.sign(e)/10;t.eachRepresentation(((t,e)=>{if(t.repr instanceof Yo){const e=t.getParameters();e.isolevelScroll&&t.setParameters({isolevel:e.isolevel+i})}}))}static panDrag(t,e,i){t.trackballControls.pan(e,i)}static rotateDrag(t,e,i){t.trackballControls.rotate(e,i)}static zRotateDrag(t,e,i){t.trackballControls.zRotate(e,i)}static zoomDrag(t,e,i){t.trackballControls.zoom((e+i)/-2)}static zoomFocusDrag(t,e,i){t.trackballControls.zoom((e+i)/-2);const r=t.viewer.camera.position.z;t.setFocus(100-Math.abs(r/8))}static panComponentDrag(t,e,i){t.trackballControls.panComponent(e,i)}static panAtomDrag(t,e,i){t.trackballControls.panAtom(e,i)}static rotateComponentDrag(t,e,i){t.trackballControls.rotateComponent(e,i)}static movePick(t,e){e&&t.animationControls.move(e.position.clone())}static tooltipPick(t,e){const i=t.tooltip;if(t.getParameters().tooltip&&e){const t=e.mouse.position;i.innerText=e.getLabel(),i.style.bottom=window.innerHeight-t.y+3+\"px\",i.style.left=t.x+3+\"px\",i.style.display=\"block\"}else i.style.display=\"none\"}static measurePick(t,e){if(e&&(e.atom||e.bond)){const t=e.atom||e.closestBondAtom;e.component.measurePick(t)}else t.measureClear()}}const Zo={default:[[\"scroll\",Ko.zoomScroll],[\"scroll-shift\",Ko.focusScroll],[\"scroll-ctrl\",Ko.isolevelScroll],[\"scroll-shift-ctrl\",Ko.zoomFocusScroll],[\"drag-left\",Ko.rotateDrag],[\"drag-right\",Ko.panDrag],[\"drag-ctrl-left\",Ko.panDrag],[\"drag-ctrl-right\",Ko.zRotateDrag],[\"drag-shift-left\",Ko.zoomDrag],[\"drag-middle\",Ko.zoomFocusDrag],[\"drag-ctrl-shift-right\",Ko.panComponentDrag],[\"drag-ctrl-shift-left\",Ko.rotateComponentDrag],[\"clickPick-right\",Ko.measurePick],[\"clickPick-ctrl-left\",Ko.measurePick],[\"clickPick-middle\",Ko.movePick],[\"clickPick-left\",Ko.movePick],[\"hoverPick\",Ko.tooltipPick]],pymol:[[\"drag-left\",Ko.rotateDrag],[\"drag-middle\",Ko.panDrag],[\"drag-right\",Ko.zoomDrag],[\"scroll\",Ko.focusScroll],[\"drag-shift-right\",Ko.focusScroll],[\"clickPick-ctrl+shift-middle\",Ko.movePick],[\"hoverPick\",Ko.tooltipPick]],coot:[[\"scroll\",Ko.isolevelScroll],[\"drag-left\",Ko.rotateDrag],[\"drag-middle\",Ko.panDrag],[\"drag-ctrl-left\",Ko.panDrag],[\"drag-right\",Ko.zoomFocusDrag],[\"drag-ctrl-right\",Ko.focusScroll],[\"clickPick-middle\",Ko.movePick],[\"hoverPick\",Ko.tooltipPick]],astexviewer:[[\"drag-left\",Ko.rotateDrag],[\"drag-ctrl-left\",Ko.panDrag],[\"drag-shift-left\",Ko.zoomDrag],[\"scroll\",Ko.focusScroll],[\"clickPick-middle\",Ko.movePick],[\"hoverPick\",Ko.tooltipPick]]};function Qo(t){const e=t.split(/[-+]/);let i=\"\";e.includes(\"scroll\")&&(i=\"scroll\"),e.includes(\"drag\")&&(i=\"drag\"),e.includes(\"click\")&&(i=\"click\"),e.includes(\"doubleClick\")&&(i=\"doubleClick\"),e.includes(\"hover\")&&(i=\"hover\"),e.includes(\"clickPick\")&&(i=\"clickPick\"),e.includes(\"hoverPick\")&&(i=\"hoverPick\");let r=0;e.includes(\"alt\")&&(r+=1),e.includes(\"ctrl\")&&(r+=2),e.includes(\"meta\")&&(r+=4),e.includes(\"shift\")&&(r+=8);let s=0;return e.includes(\"left\")&&(s+=1),e.includes(\"right\")&&(s+=2),e.includes(\"middle\")&&(s+=4),[i,r,s]}class Jo{constructor(t,e={}){this.stage=t,this.actionList=[],this.mouse=t.mouseObserver,this.disabled=e.disabled||!1,this.preset(e.preset||\"default\")}run(t,...e){if(this.disabled)return;const i=this.mouse.key||0,r=this.mouse.buttons||0;this.actionList.forEach((s=>{s.type===t&&s.key===i&&s.button===r&&s.callback(this.stage,...e)}))}add(t,e){const[i,r,s]=Qo(t);this.actionList.push({type:i,key:r,button:s,callback:e})}remove(t,e){const i=t.includes(\"*\"),[r,s,n]=Qo(t),o=this.actionList.filter((function(t){return!((t.type===r||i&&\"\"===r)&&(t.key===s||i&&0===s)&&(t.button===n||i&&0===n)&&(t.callback===e||void 0===e))}));this.actionList=o}preset(t){this.clear();(Zo[t]||[]).forEach((t=>this.add(t[0],t[1])))}clear(){this.actionList.length=0}}class ta{static autoView(t){t.autoView(1e3)}static toggleAnimations(t){t.animationControls.toggle()}static toggleRock(t){t.toggleRock()}static toggleSpin(t){t.toggleSpin()}static toggleAntialiasing(t){const e=t.getParameters();t.setParameters({sampleLevel:-1===e.sampleLevel?0:-1})}}const ea={default:[[\"i\",ta.toggleSpin],[\"k\",ta.toggleRock],[\"p\",ta.toggleAnimations],[\"a\",ta.toggleAntialiasing],[\"r\",ta.autoView]]};class ia{constructor(t,e={}){this.stage=t,this.actionList=[],this.disabled=e.disabled||!1,this.preset(e.preset||\"default\")}run(t){this.disabled||this.actionList.forEach((e=>{e.key===t&&e.callback(this.stage)}))}add(t,e){this.actionList.push({key:t,callback:e})}remove(t,e){const i=this.actionList.filter((function(i){return!(i.key===t&&(i.callback===e||void 0===e))}));this.actionList=i}preset(t){this.clear();(ea[t]||[]).forEach((t=>this.add(t[0],t[1])))}clear(){this.actionList.length=0}}class ra{constructor(t){this.stage=t,this.stage=t,this.mouse=t.mouseObserver,this.controls=t.mouseControls,this.mouse.signals.clicked.add(this._onClick,this),this.mouse.signals.hovered.add(this._onHover,this)}_onClick(t,e){const i=this.stage.pickingControls.pick(t,e);this.stage.signals.clicked.dispatch(i),this.controls.run(\"clickPick\",i)}_onHover(t,e){const i=this.stage.pickingControls.pick(t,e);i&&this.mouse.down.equals(this.mouse.position)&&(this.stage.transformComponent=i.component,this.stage.transformAtom=i.atom),this.stage.signals.hovered.dispatch(i),this.controls.run(\"hoverPick\",i)}dispose(){this.mouse.signals.clicked.remove(this._onClick,this),this.mouse.signals.hovered.remove(this._onHover,this)}}class sa{constructor(t){this.stage=t,this.stage=t,this.mouse=t.mouseObserver,this.controls=t.mouseControls,this.mouse.signals.moved.add(this._onMove,this),this.mouse.signals.scrolled.add(this._onScroll,this),this.mouse.signals.dragged.add(this._onDrag,this),this.mouse.signals.clicked.add(this._onClick,this),this.mouse.signals.hovered.add(this._onHover,this),this.mouse.signals.doubleClicked.add(this._onDblclick,this)}_onMove(){this.stage.tooltip.style.display=\"none\"}_onScroll(t){this.controls.run(\"scroll\",t)}_onDrag(t,e){this.controls.run(\"drag\",t,e)}_onClick(t,e){this.controls.run(\"click\",t,e)}_onDblclick(t,e){this.controls.run(\"doubleClick\",t,e)}_onHover(t,e){this.controls.run(\"hover\",t,e)}dispose(){this.mouse.signals.moved.remove(this._onMove,this),this.mouse.signals.scrolled.remove(this._onScroll,this),this.mouse.signals.dragged.remove(this._onDrag,this),this.mouse.signals.clicked.remove(this._onClick,this),this.mouse.signals.hovered.remove(this._onHover,this)}}class na{constructor(t){this.stage=t,this.viewer=t.viewer,this.animationControls=t.animationControls,this.viewer.signals.ticked.add(this._onTick,this)}_onTick(t){this.animationControls.run(t)}dispose(){this.viewer.signals.ticked.remove(this._onTick,this)}}const oa=!!_e&&{passive:!0};class aa{constructor(t){this.stage=t,this.stage=t,this.controls=t.keyControls,this.domElement=t.viewer.renderer.domElement,this.domElement.setAttribute(\"tabIndex\",\"-1\"),this.domElement.style.outline=\"none\",this._focusDomElement=this._focusDomElement.bind(this),this._onKeydown=this._onKeydown.bind(this),this._onKeyup=this._onKeyup.bind(this),this._onKeypress=this._onKeypress.bind(this),this.domElement.addEventListener(\"mousedown\",this._focusDomElement),this.domElement.addEventListener(\"touchstart\",this._focusDomElement,oa),this.domElement.addEventListener(\"keydown\",this._onKeydown),this.domElement.addEventListener(\"keyup\",this._onKeyup),this.domElement.addEventListener(\"keypress\",this._onKeypress)}_onKeydown(){}_onKeyup(){}_onKeypress(t){let e;e=\"key\"in KeyboardEvent.prototype?t.key:String.fromCharCode(t.which||t.keyCode),this.controls.run(e)}_focusDomElement(){this.domElement.focus()}dispose(){this.domElement.removeEventListener(\"mousedown\",this._focusDomElement),this.domElement.removeEventListener(\"touchstart\",this._focusDomElement,oa),this.domElement.removeEventListener(\"keydown\",this._onKeypress),this.domElement.removeEventListener(\"keyup\",this._onKeypress),this.domElement.removeEventListener(\"keypress\",this._onKeypress)}}class ca{constructor(i,r,s,n={}){this.component=i,this.position=r,this.offsetX=st(n.offsetX,0),this.offsetY=st(n.offsetY,0),this.visible=st(n.visible,!0),this.stage=i.stage,this.viewer=i.stage.viewer,this._viewerPosition=new e,this._updateViewerPosition(),this._canvasPosition=new t,this._cameraPosition=new e,this.element=document.createElement(\"div\"),Object.assign(this.element.style,{display:\"block\",position:\"absolute\",pointerEvents:\"none\",whiteSpace:\"nowrap\",left:\"-10000px\"}),this.viewer.wrapper.appendChild(this.element),this.setContent(s),this.updateVisibility(),this.viewer.signals.rendered.add(this._update,this),this.component.signals.matrixChanged.add(this._updateViewerPosition,this)}setContent(t){const e=this.element.style.display;if(\"none\"===e&&(this.element.style.left=\"-10000px\",this.element.style.display=\"block\"),t instanceof HTMLElement)this.element.appendChild(t);else{const e=document.createElement(\"div\");e.innerText=t,Object.assign(e.style,{backgroundColor:\"rgba( 0, 0, 0, 0.6 )\",color:\"lightgrey\",padding:\"8px\",fontFamily:\"sans-serif\"}),this.element.appendChild(e)}this._clientRect=this.element.getBoundingClientRect(),\"none\"===e&&(this.element.style.display=e)}setVisibility(t){this.visible=t,this.updateVisibility()}getVisibility(){return this.visible&&this.component.parameters.visible}updateVisibility(){this.element.style.display=this.getVisibility()?\"block\":\"none\"}_updateViewerPosition(){this._viewerPosition.copy(this.position).applyMatrix4(this.component.matrix)}_update(){if(!this.getVisibility())return;const t=this.element.style,e=this._canvasPosition,i=this._viewerPosition,r=this._clientRect;if(this._cameraPosition.copy(i).add(this.viewer.translationGroup.position).applyMatrix4(this.viewer.rotationGroup.matrix).sub(this.viewer.camera.position),this._cameraPosition.z<0)return void(t.display=\"none\");t.display=\"block\";const s=this._cameraPosition.length(),n=this.viewer.scene.fog;t.opacity=(1-Rt(n.near,n.far,s)).toString(),t.zIndex=Math.round(100*(n.far-s)).toString(),this.stage.viewerControls.getPositionOnCanvas(i,e),t.bottom=this.offsetX+e.y+r.height/2+\"px\",t.left=this.offsetY+e.x-r.width/2+\"px\"}dispose(){this.viewer.wrapper.removeChild(this.element),this.viewer.signals.ticked.remove(this._update,this),this.component.signals.matrixChanged.remove(this._updateViewerPosition,this)}}const la=new i,ha=new e,da=new r;class ua{constructor(t){this.component=t,this.signals={changed:new tt.Signal},this.stage=t.stage,this.viewer=t.stage.viewer}get position(){return this.component.position}get rotation(){return this.component.quaternion}changed(){this.component.updateMatrix(),this.viewer.requestRender(),this.signals.changed.dispatch()}spin(t,e){la.getInverse(this.viewer.rotationGroup.matrix),ha.copy(At(t)).applyMatrix4(la),la.extractRotation(this.component.transform),la.premultiply(this.viewer.rotationGroup.matrix),la.getInverse(la),ha.copy(At(t)),ha.applyMatrix4(la),la.makeRotationAxis(ha,e),da.setFromRotationMatrix(la),this.component.quaternion.premultiply(da),this.changed()}}const ma={\"\":\"\",vdw:\"by vdW radius\",covalent:\"by covalent radius\",sstruc:\"by secondary structure\",bfactor:\"by bfactor\",size:\"size\",data:\"data\",explicit:\"explicit\"};class pa{constructor(t={}){this.max=10,this.type=st(t.type,\"size\"),this.scale=st(t.scale,1),this.size=st(t.size,1),this.data=st(t.data,{})}atomRadius(t){let e;switch(this.type){case\"vdw\":e=t.vdw;break;case\"covalent\":e=t.covalent;break;case\"bfactor\":e=t.bfactor||1;break;case\"sstruc\":const i=t.sstruc;e=\"h\"===i||\"g\"===i||\"i\"===i||\"e\"===i||\"b\"===i?.25:un.includes(t.atomname)?.4:.1;break;case\"data\":e=st(this.data[t.index],1);break;case\"explicit\":e=t.radius,null===e&&(e=this.size);break;default:e=this.size}return Math.min(e*this.scale,this.max)}}pa.types=ma;const fa=new e(-1,-1,-1),ga=new i;class ya{constructor(t){const i=t.rows,r=i/3,s=new ho(i,3),n=new ho(3,3),o=new ho(1,3),a=new ho(3,3),c=new ho(3,3),l=fo(t);go(t,l),uo(s,t),mo(n,s,s),wo(n,o,a,c);const h=new e(l[0],l[1],l[2]),d=new e(a.data[0],a.data[3],a.data[6]),u=new e(a.data[1],a.data[4],a.data[7]),m=new e(a.data[2],a.data[5],a.data[8]),p=d.clone().multiplyScalar(Math.sqrt(o.data[0]/r)),f=u.clone().multiplyScalar(Math.sqrt(o.data[1]/r)),g=m.clone().multiplyScalar(Math.sqrt(o.data[2]/r));this.begA=h.clone().sub(p),this.endA=h.clone().add(p),this.begB=h.clone().sub(f),this.endB=h.clone().add(f),this.begC=h.clone().sub(g),this.endC=h.clone().add(g),this.center=h,this.vecA=p,this.vecB=f,this.vecC=g,this.normVecA=d,this.normVecB=u,this.normVecC=m}getBasisMatrix(t=new i){const e=t;return e.makeBasis(this.normVecB,this.normVecA,this.normVecC),e.determinant()<0&&e.scale(fa),e}getRotationQuaternion(t=new r){const e=t;return e.setFromRotationMatrix(this.getBasisMatrix(ga)),e.inverse()}getProjectedScaleForAtoms(t){let i=-1/0,r=-1/0,s=-1/0,n=-1/0,o=-1/0,a=-1/0;const c=new e,l=new e,h=this.center,d=this.normVecA,u=this.normVecB,m=this.normVecC;return t.eachAtom((function(t){jr(c.copy(t),d,h);const e=l.subVectors(c,h).normalize().dot(d),p=c.distanceTo(h);e>0?p>i&&(i=p):p>r&&(r=p),jr(c.copy(t),u,h);const f=l.subVectors(c,h).normalize().dot(u),g=c.distanceTo(h);f>0?g>s&&(s=g):g>n&&(n=g),jr(c.copy(t),m,h);const y=l.subVectors(c,h).normalize().dot(m),b=c.distanceTo(h);y>0?b>o&&(o=b):b>a&&(a=b)})),{d1a:i,d2a:s,d3a:o,d1b:-r,d2b:-n,d3b:-a}}}class ba{constructor(t,e,i,r){this.volume=t,this.setFilter(e,i,r)}get header(){return this.volume.header}get matrix(){return this.volume.matrix}get normalMatrix(){return this.volume.normalMatrix}get inverseMatrix(){return this.volume.inverseMatrix}get center(){return this.volume.center}get boundingBox(){return this.volume.boundingBox}get min(){return this.volume.min}get max(){return this.volume.max}get mean(){return this.volume.mean}get rms(){return this.volume.rms}_getFilterHash(t,e,i){return JSON.stringify([t,e,i])}setFilter(t,e,i){isNaN(t)&&this.header&&(t=this.header.DMEAN+2*this.header.ARMS),t=void 0===t||isNaN(t)?-1/0:t,e=st(e,1/0),i=st(i,!1);const r=this.volume.data,s=this.volume.position,n=this.volume.atomindex,o=this._getFilterHash(t,e,i);if(o!==this._filterHash){if(t===-1/0&&e===1/0)this.data=r,this.position=s,this.atomindex=n;else{const o=r.length;this._dataBuffer||(this._dataBuffer=new ArrayBuffer(4*o),this._positionBuffer=new ArrayBuffer(3*o*4),n&&(this._atomindexBuffer=new ArrayBuffer(4*o)));const a=new Float32Array(this._dataBuffer),c=new Float32Array(this._positionBuffer);let l;n&&(l=new Uint32Array(this._atomindexBuffer));let h=0;for(let d=0;d=t&&u<=e||i&&(ue)){const t=3*h;a[h]=u,c[t+0]=s[o+0],c[t+1]=s[o+1],c[t+2]=s[o+2],n&&l&&(l[h]=n[d]),h+=1}}this.data=new Float32Array(this._dataBuffer,0,h),this.position=new Float32Array(this._positionBuffer,0,3*h),n&&(this.atomindex=new Int32Array(this._atomindexBuffer,0,h))}this._filterHash=o}}}ba.prototype.getValueForSigma=Eo.prototype.getValueForSigma,ba.prototype.getSigmaForValue=Eo.prototype.getSigmaForValue,ba.prototype.getDataAtomindex=Eo.prototype.getDataAtomindex,ba.prototype.getDataPosition=Eo.prototype.getDataPosition,ba.prototype.getDataColor=Eo.prototype.getDataColor,ba.prototype.getDataPicking=Eo.prototype.getDataPicking,ba.prototype.getDataSize=Eo.prototype.getDataSize;class xa{constructor(t,e){const i=Rs({nodeArray1:t.atomIndex1,nodeArray2:t.atomIndex2,edgeCount:t.count,nodeCount:e});this.countArray=i.countArray,this.offsetArray=i.offsetArray,this.indexArray=i.indexArray}}class va extends Bs{get _defaultFields(){return[[\"atomIndex1\",1,\"int32\"],[\"atomIndex2\",1,\"int32\"],[\"bondOrder\",1,\"int8\"]]}addBond(t,e,i){this.growIfFull();const r=this.count,s=t.index,n=e.index;s0&&(a[e]=v.angleTo(w));const r=Math.cos(f.angleTo(g));h[e]=180/Math.PI*Math.acos(r);const s=f.length(),x=g.length();c[e]=Math.sqrt(x*s)/Math.max(2,2*(1-r)),l[e]=Math.abs(m.dot(v)),y.copy(f).multiplyScalar(c[e]/s),b.copy(g).multiplyScalar(c[e]/x),y.subVectors(P,y),b.subVectors(I,b),y.toArray(n,i+3),b.toArray(n,i+6),A.subVectors(C,_),A.toArray(d,i),w.copy(v),_.copy(y)}y.fromArray(n,3),b.fromArray(n,6),v.subVectors(y,b).normalize(),C.index=t.getAtomIndexByType(0,S),_.copy(C),x.copy(C),jr(x,v,y),x.toArray(n,0),A.subVectors(_,y),A.toArray(d,0),y.fromArray(n,3*r-6),b.fromArray(n,3*r-9),v.subVectors(y,b).normalize(),C.index=t.getAtomIndexByType(r-1,S),_.copy(C),x.copy(C),jr(x,v,y),x.toArray(n,3*r-3);for(let e=r-3;ei||h.bending[e]>t)&&(E=!0)),E){if(e-p<4){p=e,E=!1;continue}$.index=B.traceAtomIndex,I=h.axis.subarray(3*p+3,3*e),k=h.center.subarray(3*p,3*e+3),C=Ur(I).normalize(),P=Ur(k),M.fromArray(k),jr(M,C,P),T.fromArray(k,k.length-3),jr(T,C,P),C.subVectors(T,M),C.toArray(g,f),P.toArray(y,f),M.toArray(b,f),T.toArray(x,f),u.atomColorToArray($,v,f),w.push($.index),A.push(m.atomRadius($)),_.push(l+p),S.push(l+e+1-p),f+=3,p=e,E=!1}const F=new Float32Array(w);return{axis:new Float32Array(g),center:new Float32Array(y),begin:new Float32Array(b),end:new Float32Array(x),color:new Float32Array(v),picking:new Yn(F,a),size:new Float32Array(A),residueOffset:_,residueCount:S}}}class Ia{constructor(t){this.scoreFunction=t,this.content=[],this.scoreFunction=t}push(t){this.content.push(t),this.bubbleUp(this.content.length-1)}pop(){const t=this.content[0],e=this.content.pop();return e&&this.content.length>0&&(this.content[0]=e,this.sinkDown(0)),t}peek(){return this.content[0]}remove(t){const e=this.content.length;for(let i=0;i0;){const i=Math.floor((t+1)/2)-1,r=this.content[i];if(!(this.scoreFunction(e), 2016\n * @author Roman Bolzern , 2013\n * @author I4DS http://www.fhnw.ch/i4ds, 2013\n * @license MIT License \n * @description\n * k-d Tree for typed arrays of 3d points (e.g. for Float32Array), in-place\n * provides fast nearest neighbour search\n *\n * Based on https://github.com/ubilabs/kd-tree-javascript by Ubilabs\n *\n * Further information (including mathematical properties)\n * http://en.wikipedia.org/wiki/Binary_tree\n * http://en.wikipedia.org/wiki/K-d_tree\n *\n * @example\n * points: [x, y, z, x, y, z, x, y, z, ...]\n * metric: function(a, b){\n * return Math.pow(a[0]-b[0], 2) + Math.pow(a[1]-b[1], 2) + Math.pow(a[2]-b[2], 2);\n * }\n *\n * @param {Float32Array} points - points\n * @param {Function} metric - metric\n */class ka{constructor(t,e){this.points=t,this.metric=e,this.maxDepth=0,this.currentNode=0;const i=t.length/3,r=new Uint32Array(i);for(let t=0;tthis.maxDepth&&(this.maxDepth=t);const s=r-i;if(0===s)return-1;const n=4*this.currentNode,o=this.nodes;if(this.currentNode+=1,1===s)return o[n]=i,o[n+1]=-1,o[n+2]=-1,o[n+3]=e,n;const a=this.indices,c=this.points,l=i+Math.floor(s/2),h=t%3;let d,u,m,p,f,g=i,y=r-1;for(;y>g;){for(m=g+y>>1,p=c[3*a[m]+h],u=a[m],a[m]=a[y],a[y]=u,f=g,d=g;d-t[1])),s=this.nodes,n=this.points,o=this.indices,a=c=>{let l,h;const d=this.getNodeDepth(c)%3,u=3*o[s[c]],m=[n[u+0],n[u+1],n[u+2]],p=this.metric(t,m);function f(t,i){r.push([t,i]),r.size()>e&&r.pop()}const g=s[c+1],y=s[c+2];if(-1===y&&-1===g)return void((r.size()n[3*o[s[t]]+r])throw new Error(\"left child is > parent!\");i+=this.verify(a,e+1)}if(-1!==c){if(n[3*o[s[c]]+r]0}isBackbone(){const t=this.residueType.backboneIndexList;return t.length>0&&t.includes(this.index-this.residueAtomOffset)}isPolymer(){if(this.structure.entityList.length>0)return this.entity.isPolymer();{const t=this.residueType.moleculeType;return 3===t||4===t||5===t}}isSidechain(){return this.isPolymer()&&!this.isBackbone()}isCg(){const t=this.residueType.backboneType;return 4===t||5===t||6===t}isTrace(){return this.index===this.residueType.traceAtomIndex+this.residueAtomOffset}isHetero(){return 1===this.residueType.hetero}isProtein(){return 3===this.residueType.moleculeType}isNucleic(){const t=this.residueType.moleculeType;return 4===t||5===t}isRna(){return 4===this.residueType.moleculeType}isDna(){return 5===this.residueType.moleculeType}isWater(){return 1===this.residueType.moleculeType}isIon(){return 2===this.residueType.moleculeType}isSaccharide(){return 6===this.residueType.moleculeType}isHelix(){return Hs.includes(this.sstruc)}isSheet(){return Ws.includes(this.sstruc)}isTurn(){return qs.includes(this.sstruc)&&this.isProtein()}isBonded(){return 0!==this.bondHash.countArray[this.index]}isRing(){return void 0!==this.residueType.getRings().atomRings[this.index-this.residueAtomOffset]}isAromatic(){return 1===this.aromatic}isPolarHydrogen(){let t=!1;return 1!==this.number||(t=!this.hasBondToElement(6)),t}isMetal(){return this.atomType.isMetal()}isNonmetal(){return this.atomType.isNonmetal()}isMetalloid(){return this.atomType.isMetalloid()}isHalogen(){return this.atomType.isHalogen()}isDiatomicNonmetal(){return this.atomType.isDiatomicNonmetal()}isPolyatomicNonmetal(){return this.atomType.isPolyatomicNonmetal()}isAlkaliMetal(){return this.atomType.isAlkaliMetal()}isAlkalineEarthMetal(){return this.atomType.isAlkalineEarthMetal()}isNobleGas(){return this.atomType.isNobleGas()}isTransitionMetal(){return this.atomType.isTransitionMetal()}isPostTransitionMetal(){return this.atomType.isPostTransitionMetal()}isLanthanide(){return this.atomType.isLanthanide()}isActinide(){return this.atomType.isActinide()}getDefaultValence(){return this.atomType.getDefaultValence()}getValenceList(){return this.atomType.getValenceList()}getOuterShellElectronCount(){return this.atomType.getOuterShellElectronCount()}distanceTo(t){const e=this.atomStore,i=t.atomStore,r=this.index,s=t.index,n=e.x[r]-i.x[s],o=e.y[r]-i.y[s],a=e.z[r]-i.z[s],c=n*n+o*o+a*a;return Math.sqrt(c)}connectedTo(t){const e=this.atomStore,i=t.atomStore,r=this.index,s=t.index;if(e.altloc&&i.altloc){const t=e.altloc[r],n=i.altloc[s];if(0!==t&&0!==n&&32!==t&&32!==n&&t!==n)return!1}const n=e.x[r]-i.x[s],o=e.y[r]-i.y[s],a=e.z[r]-i.z[s],c=n*n+o*o+a*a;if(c<48&&this.isCg())return!0;if(isNaN(c))return!1;const l=this.covalent+t.covalent,h=l+.3,d=l-.5;return cd*d}positionFromArray(t,e=0){return this.x=t[e+0],this.y=t[e+1],this.z=t[e+2],this}positionToArray(t=[],e=0){const i=this.index,r=this.atomStore;return t[e+0]=r.x[i],t[e+1]=r.y[i],t[e+2]=r.z[i],t}positionToVector3(t){return void 0===t&&(t=new e),t.x=this.x,t.y=this.y,t.z=this.z,t}positionFromVector3(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}positionAdd(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this}positionSub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}getResidueBonds(t=!1){const e=this.residueAtomOffset,i=this.index-this.residueAtomOffset,r=this.residueType.getBonds(),s=r.atomIndices1,n=r.atomIndices2;let o,a,c,l;for(t||(l=[]),o=s.indexOf(i);-1!==o;){if(c=n[o]+e,!l)return c;l.push(c),o=s.indexOf(i,o+1)}for(a=n.indexOf(i);-1!==a;){if(c=s[a]+e,!l)return c;l.push(c),a=n.indexOf(i,a+1)}return l}qualifiedName(t=!1){var e=\"\";return this.resname&&!t&&(e+=\"[\"+this.resname+\"]\"),void 0!==this.resno&&(e+=this.resno),this.inscode&&(e+=\"^\"+this.inscode),this.chainname&&(e+=\":\"+this.chainname),this.atomname&&(e+=\".\"+this.atomname),this.altloc&&(e+=\"%\"+this.altloc),this.structure.modelStore.count>1&&(e+=\"/\"+this.modelIndex),e}clone(){return new Ma(this.structure,this.index)}toObject(){return{index:this.index,residueIndex:this.residueIndex,resname:this.resname,x:this.x,y:this.y,z:this.z,element:this.element,chainname:this.chainname,resno:this.resno,serial:this.serial,vdw:this.vdw,covalent:this.covalent,hetero:this.hetero,bfactor:this.bfactor,altloc:this.altloc,atomname:this.atomname,modelIndex:this.modelIndex}}}function Ta(t,e){const i=t[0]-e[0],r=t[1]-e[1],s=t[2]-e[2];return i*i+r*r+s*s}function Ba(t,e){return Math.sqrt(Ta(t,e))}const Da=new Float32Array(3);class $a{constructor(t,e=!1){De&&Me.time(\"Kdtree build\");const i=e?Ta:Ba,r=new Float32Array(3*t.atomCount),s=new Uint32Array(t.atomCount);let n=0;t.eachAtom((function(t){r[n+0]=t.x,r[n+1]=t.y,r[n+2]=t.z,s[n/3]=t.index,n+=3})),this.atomIndices=s,this.points=r,this.kdtree=new ka(r,i),De&&Me.timeEnd(\"Kdtree build\")}nearest(t,i,r){t instanceof e?t.toArray(Da):t instanceof Ma&&t.positionToArray(Da);const s=this.kdtree.nearest(Da,i,r),n=this.kdtree.indices,o=this.kdtree.nodes,a=this.atomIndices,c=[];for(let t=0,e=s.length;t\":\"3/4-Z\",\"?\":\"X-Y\",\"@\":\"Y-X\",A:\"Z+1/3\",B:\"Z+2/3\",C:\"X+2/3\",D:\"Y+1/3\",E:\"-Y+2/3\",F:\"X-Y+1/3\",G:\"Y-X+2/3\",H:\"-X+1/3\",I:\"X+1/3\",J:\"Y+2/3\",K:\"-Y+1/3\",L:\"X-Y+2/3\",M:\"Y-X+1/3\",N:\"-X+2/3\",O:\"2/3+X\",P:\"1/3+Y\",Q:\"1/3+Z\",R:\"2/3-Y\",S:\"1/3+X-Y\",T:\"2/3+Y-X\",U:\"1/3-X\",V:\"2/3-X\",W:\"1/3-Y\",X:\"1/3-Z\",Y:\"2/3+Y\",Z:\"1/3+Y-X\",\"[\":\"2/3+X-Y\",\"]\":\"1/3+X\",\"^\":\"2/3+Z\",_:\"2/3-Z\",\"`\":\"5/6+Z\",a:\"1/6+Z\",b:\"5/6-Z\",c:\"1/6-Z\",d:\"Z+5/6\",e:\"Z+1/6\",f:\"Z+1/4\",g:\"+Y\"},Ra={\"P 1\":\" !#\",\"P -1\":\" !#$%&\",\"P 1 2 1\":\" !#$!&\",\"P 1 21 1\":\" !#$'&\",\"C 1 2 1\":\" !#$!&()#*)&\",\"P 1 m 1\":\" !# %#\",\"P 1 c 1\":\" !# %+\",\"C 1 m 1\":\" !# %#()#(,#\",\"C 1 c 1\":\" !# %+()#(,+\",\"P 1 2/m 1\":\" !# %#$!&$%&\",\"P 1 21/m 1\":\" !#$)&$%& ,#\",\"C 1 2/m 1\":\" !# %#$!&$%&()#(,#*)&*,&\",\"P 1 2/c 1\":\" !#$!-$%& %+\",\"P 1 21/c 1\":\" !#$%&$)- ,+\",\"C 1 2/c 1\":\" !#$!-$%& %+()#*)-*,&(,+\",\"P 2 2 2\":\" !#$%#$!& %&\",\"P 2 2 21\":\" !#$%+$!- %&\",\"P 21 21 2\":\" !#$%#*)&(,&\",\"P 21 21 21\":\" !#*%+$)-(,&\",\"C 2 2 21\":\" !#$%+$!- %&()#*,+*)-(,&\",\"C 2 2 2\":\" !#$%#$!& %&()#*,#*)&(,&\",\"F 2 2 2\":\" !#$%#$!& %& )+$,+$)- ,-(!+*%+*!-(%-()#*,#*)&(,&\",\"I 2 2 2\":\" !#$%# %&$!&.'/01/.120'2\",\"I 21 21 21\":\" !#*%+$)-(,&()+$,#*!& %-\",\"P m m 2\":\" !#$%# %#$!#\",\"P m c 21\":\" !#$%+ %+$!#\",\"P c c 2\":\" !#$%# %+$!+\",\"P m a 2\":\" !#$%#(%#*!#\",\"P c a 21\":\" !#$%+(%#*!+\",\"P n c 2\":\" !#$%# ,+$)+\",\"P m n 21\":\" !#*%+(%+$!#\",\"P b a 2\":\" !#$%#(,#*)#\",\"P n a 21\":\" !#$%+(,#*)+\",\"P n n 2\":\" !#$%#(,+*)+\",\"C m m 2\":\" !#$%# %#$!#()#*,#(,#*)#\",\"C m c 21\":\" !#$%+ %+$!#()#*,+(,+*)#\",\"C c c 2\":\" !#$%# %+$!+()#*,#(,+*)+\",\"A m m 2\":\" !#$%# %#$!# )+$,+ ,+$)+\",\"A b m 2\":\" !#$%# ,#$)# )+$,+ %+$!+\",\"A m a 2\":\" !#$%#(%#*!# )+$,+(,+*)+\",\"A b a 2\":\" !#$%#(,#*)# )+$,+(%+*!+\",\"F m m 2\":\" !#$%# %#$!# )+$,+ ,+$)+(!+*%+(%+*!+()#*,#(,#*)#\",\"F d d 2\":\" !#$%#345675 )+$,+3896:9(!+*%+;49<79()#*,#;85<:5\",\"I m m 2\":\" !#$%# %#$!#()+*,+(,+*)+\",\"I b a 2\":\" !#$%#(,#*)#()+*,+ %+$!+\",\"I m a 2\":\" !#$%#(%#*!#()+*,+ ,+$)+\",\"P 2/m 2/m 2/m\":\" !#$%#$!& %&$%& !& %#$!#\",\"P 2/n 2/n 2/n\":\" !#$%#$!& %&*,-()-(,+*)+\",\"P 2/c 2/c 2/m\":\" !#$%#$!- %-$%& !& %+$!+\",\"P 2/b 2/a 2/n\":\" !#$%#$!& %&*,&()&(,#*)#\",\"P 21/m 2/m 2/a\":\" !#*%#$!&(%&$%&(!& %#*!#\",\"P 2/n 21/n 2/a\":\" !#*%#*)- ,-$%&(!&(,+$)+\",\"P 2/m 2/n 21/a\":\" !#*%+*!- %&$%&(!-(%+$!#\",\"P 21/c 2/c 2/a\":\" !#*%#$!-(%-$%&(!& %+*!+\",\"P 21/b 21/a 2/m\":\" !#$%#*)&(,&$%& !&(,#*)#\",\"P 21/c 21/c 2/n\":\" !#*,#$)-(%-$%&()& ,+*!+\",\"P 2/b 21/c 21/m\":\" !#$%+$)- ,&$%& !- ,+$)#\",\"P 21/n 21/n 2/m\":\" !#$%#*)-(,-$%& !&(,+*)+\",\"P 21/m 21/m 2/n\":\" !#$%#*'&.,&*,&.'& %#$!#\",\"P 21/b 2/c 21/n\":\" !#*,+$!-(,&$%&()- %+*)#\",\"P 21/b 21/c 21/a\":\" !#*%+$)-(,&$%&(!- ,+*)#\",\"P 21/n 21/m 21/a\":\" !#0%/$'&.12$%&.!2 1#0'/\",\"C 2/m 2/c 21/m\":\" !#$%+$!- %&$%& !- %+$!#()#*,+*)-(,&*,&()-(,+*)#\",\"C 2/m 2/c 21/a\":\" !#$,+$)- %&$%& )- ,+$!#()#*%+*!-(,&*,&(!-(%+*)#\",\"C 2/m 2/m 2/m\":\" !#$%#$!& %&$%& !& %#$!#()#*,#*)&(,&*,&()&(,#*)#\",\"C 2/c 2/c 2/m\":\" !#$%#$!- %-$%& !& %+$!+()#*,#*)-(,-*,&()&(,+*)+\",\"C 2/m 2/m 2/a\":\" !#$,#$)& %&$%& )& ,#$!#()#*%#*!&(,&*,&(!&(%#*)#\",\"C 2/c 2/c 2/a\":\" !#*,#$!&(,&$,-(!- ,+*!+()#$%#*)& %&*%- )-(%+$)+\",\"F 2/m 2/m 2/m\":\" !#$%#$!& %&$%& !& %#$!# )+$,+$)- ,-$,- )- ,+$)+(!+*%+*!-(%-*%-(!-(%+*!+()#*,#*)&(,&*,&()&(,#*)#\",\"F 2/d 2/d 2/d\":\" !#$%#$!& %&64=37=345675 )+$,+$)- ,-68>3:>3896:9(!+*%+*!-(%-<4>;7>;49<79()#*,#*)&(,&<8=;:=;85<:5\",\"I 2/m 2/m 2/m\":\" !#$%#$!& %&$%& !& %#$!#()+*,+*)-(,-*,-()-(,+*)+\",\"I 2/b 2/a 2/m\":\" !#$%#*)&(,&$%& !&(,#*)#()+*,+$!- %-*,-()- %+$!+\",\"I 21/b 21/c 21/a\":\" !#*%+$)-(,&$%&(!- ,+*)#()+$,#*!& %-*,- )&(%#$!+\",\"I 21/m 21/m 21/a\":\" !#$,#$)& %&$%& )& ,#$!#()+*%+*!-(,-*,-(!-(%+*)+\",\"P 4\":\" !#$%#% #!$#\",\"P 41\":\" !#$%+% 5!$9\",\"P 42\":\" !#$%#% +!$+\",\"P 43\":\" !#$%+% 9!$5\",\"I 4\":\" !#$%#% #!$#()+*,+,(+)*+\",\"I 41\":\" !#*,+%(5)$9()+$%#, 9!*5\",\"P -4\":\" !#$%#!$&% &\",\"I -4\":\" !#$%#!$&% &()+*,+)*-,(-\",\"P 4/m\":\" !#$%#% #!$#$%& !&!$&% &\",\"P 42/m\":\" !#$%#% +!$+$%& !&!$-% -\",\"P 4/n\":\" !#$%#,(#)*#*,&()&!$&% &\",\"P 42/n\":\" !#$%#,(+)*+*,-()-!$&% &\",\"I 4/m\":\" !#$%#% #!$#$%& !&!$&% &()+*,+,(+)*+*,-()-)*-,(-\",\"I 41/a\":\" !#*,+%(5)$9$,=(!>!$&,(-()+$%#, 9!*5*%> )=)*-% &\",\"P 4 2 2\":\" !#$%#% #!$#$!& %&! &%$&\",\"P 4 21 2\":\" !#$%#,(#)*#*)&(,&! &%$&\",\"P 41 2 2\":\" !#$%+% 5!$9$!& %-! >%$=\",\"P 41 21 2\":\" !#$%+,(5)*9*)=(,>! &%$-\",\"P 42 2 2\":\" !#$%#% +!$+$!& %&! -%$-\",\"P 42 21 2\":\" !#$%#,(+)*+*)-(,-! &%$&\",\"P 43 2 2\":\" !#$%+% 9!$5$!& %-! =%$>\",\"P 43 21 2\":\" !#$%+,(9)*5*)>(,=! &%$-\",\"I 4 2 2\":\" !#$%#% #!$#$!& %&! &%$&()+*,+,(+)*+*)-(,-)(-,*-\",\"I 41 2 2\":\" !#*,+%(5)$9*!> ,=)(-%$&()+$%#, 9!*5$)=(%>! &,*-\",\"P 4 m m\":\" !#$%#% #!$# %#$!#%$#! #\",\"P 4 b m\":\" !#$%#% #!$#(,#*)#,*#)(#\",\"P 42 c m\":\" !#$%#% +!$+ %+$!+%$#! #\",\"P 42 n m\":\" !#$%#,(+)*+(,+*)+%$#! #\",\"P 4 c c\":\" !#$%#% #!$# %+$!+%$+! +\",\"P 4 n c\":\" !#$%#% #!$#(,+*)+,*+)(+\",\"P 42 m c\":\" !#$%#% +!$+ %#$!#%$+! +\",\"P 42 b c\":\" !#$%#% +!$+(,#*)#,*+)(+\",\"I 4 m m\":\" !#$%#% #!$# %#$!#%$#! #()+*,+,(+)*+(,+*)+,*+)(+\",\"I 4 c m\":\" !#$%#% #!$# %+$!+%$+! +()+*,+,(+)*+(,#*)#,*#)(#\",\"I 41 m d\":\" !#*,+%(5)$9 %#*)+%*5) 9()+$%#, 9!*5(,+$!#,$9!(5\",\"I 41 c d\":\" !#*,+%(5)$9 %+*)#%*9) 5()+$%#, 9!*5(,#$!+,$5!(9\",\"P -4 2 m\":\" !#$%#% &!$&$!& %&%$#! #\",\"P -4 2 c\":\" !#$%#% &!$&$!- %-%$+! +\",\"P -4 21 m\":\" !#$%#% &!$&*)&(,&,*#)(#\",\"P -4 21 c\":\" !#$%#% &!$&*)-(,-,*+)(+\",\"P -4 m 2\":\" !#$%#!$&% & %#$!#! &%$&\",\"P -4 c 2\":\" !#$%#% &!$& %+$!+! -%$-\",\"P -4 b 2\":\" !#$%#% &!$&(,#*)#)(&,*&\",\"P -4 n 2\":\" !#$%#% &!$&(,+*)+)(-,*-\",\"I -4 m 2\":\" !#$%#% &!$& %#$!#! &%$&()+*,+,(-)*-(,+*)+)(-,*-\",\"I -4 c 2\":\" !#$%#% &!$& %+$!+! -%$-()+*,+,(-)*-(,#*)#)(&,*&\",\"I -4 2 m\":\" !#$%#% &!$&$!& %&%$#! #()+*,+,(-)*-*)-(,-,*+)(+\",\"I -4 2 d\":\" !#$%#% &!$&*!>(%>,$9) 9()+*,+,(-)*-$)= ,=%*5!(5\",\"P 4/m 2/m 2/m\":\" !#$%#% #!$#$!& %&! &%$&$%& !&!$&% & %#$!#%$#! #\",\"P 4/m 2/c 2/c\":\" !#$%#% #!$#$!- %-! -%$-$%& !&!$&% & %+$!+%$+! +\",\"P 4/n 2/b 2/m\":\" !#$%#% #!$#$!& %&! &%$&*,&()&)*&,(&(,#*)#,*#)(#\",\"P 4/n 2/n 2/c\":\" !#$%#% #!$#$!& %&! &%$&*,-()-)*-,(-(,+*)+,*+)(+\",\"P 4/m 21/b 2/m\":\" !#$%#% #!$#*)&(,&)(&,*&$%& !&!$&% &(,#*)#,*#)(#\",\"P 4/m 21/n 2/c\":\" !#$%#% #!$#*)-(,-)(-,*-$%& !&!$&% &(,+*)+,*+)(+\",\"P 4/n 21/m 2/m\":\" !#$%#,(#)*#*)&(,&! &%$&*,&()&!$&% & %#$!#,*#)(#\",\"P 4/n 2/c 2/c\":\" !#$%#,(#)*#*)-(,-! -%$-*,&()&!$&% & %+$!+,*+)(+\",\"P 42/m 2/m 2/c\":\" !#$%#% +!$+$!& %&! -%$-$%& !&!$-% - %#$!#%$+! +\",\"P 42/m 2/c 2/m\":\" !#$%#% +!$+$!- %-! &%$&$%& !&!$-% - %+$!+%$#! #\",\"P 42/n 2/b 2/c\":\" !#$%#,(+)*+$!- %-)(&,*&*,-()-!$&% &(,#*)#%$+! +\",\"P 42/n 2/n 2/m\":\" !#$%#,(+)*+$!& %&)(-,*-*,-()-!$&% &(,+*)+%$#! #\",\"P 42/m 21/b 2/c\":\" !#$%#% +!$+*)&(,&)(-,*-$%& !&!$-% -(,#*)#,*+)(+\",\"P 42/m 21/n 2/m\":\" !#$%#,./'*/*'-.,-! &%$&$%& !&'*-,.-.,/*'/%$#! #\",\"P 42/n 21/m 2/c\":\" !#$%#,(+)*+*)-(,-! &%$&*,-()-!$&% & %#$!#,*+)(+\",\"P 42/n 21/c 2/m\":\" !#$%#,(+)*+*)&(,&! -%$-*,-()-!$&% & %+$!+,*#)(#\",\"I 4/m 2/m 2/m\":\" !#$%#% #!$#$!& %&! &%$&$%& !&!$&% & %#$!#%$#! #()+*,+,(+)*+*)-(,-)(-,*-*,-()-)*-,(-(,+*)+,*+)(+\",\"I 4/m 2/c 2/m\":\" !#$%#% #!$#$!- %-! -%$-$%& !&!$&% & %+$!+%$+! +()+*,+,(+)*+*)&(,&)(&,*&*,-()-)*-,(-(,#*)#,*#)(#\",\"I 41/a 2/m 2/d\":\" !#*,+%(5)$9*!> ,=)(-%$&$,=(!>!$&,(-(,+$!#,$9!(5()+$%#, 9!*5$)=(%>! &,*-*%> )=)*-% & %#*)+%*5) 9\",\"I 41/a 2/c 2/d\":\" !#*,+%(5)$9*!= ,>)(&%$-$,=(!>!$&,(-(,#$!+,$5!(9()+$%#, 9!*5$)>(%=! -,*&*%> )=)*-% & %+*)#%*9) 5\",\"P 3\":\" !#%?#@$#\",\"P 31\":\" !#%?A@$B\",\"P 32\":\" !#%?B@$A\",\"H 3\":\" !#%?#@$#CDAEFAGHAIJBKLBMNB\",\"R 3\":\" !## !!# \",\"P -3\":\" !#%?#@$#$%&!@&? &\",\"H -3\":\" !#%?#@$#$%&!@&? &OPQRSQTUQVWXYZX[]X]Y^W[^ZV^UR_PT_SO_\",\"R -3\":\" !## !!# $%&&$%%&$\",\"P 3 1 2\":\" !#%?#@$#%$&@!& ?&\",\"P 3 2 1\":\" !#%?#@$#! &?%&$@&\",\"P 31 1 2\":\" !#%?Q@$^%$_@!X ?&\",\"P 31 2 1\":\" !#%?A@$B! &?%_$@X\",\"P 32 1 2\":\" !#%?^@$Q%$X@!_ ?&\",\"P 32 2 1\":\" !#%?B@$A! &?%X$@_\",\"H 3 2\":\" !#%?#@$#! &?%&$@&OPQRSQTUQY]X[WXVZX]Y^W[^ZV^PO_SR_UT_\",\"R 3 2\":\" !## !!# %$&$&%&%$\",\"P 3 m 1\":\" !#%?#@$#%$#@!# ?#\",\"P 3 1 m\":\" !#%?#@$#! #?%#$@#\",\"P 3 c 1\":\" !#%?#@$#%$+@!+ ?+\",\"P 3 1 c\":\" !#%?#@$#! +?%+$@+\",\"H 3 m\":\" !#%?#@$#%$#@!# ?#OPQRSQTUQRUQTPQOSQ]Y^W[^ZV^WV^ZY^][^\",\"R 3 m\":\" !## !!# ! # #!#! \",\"H 3 c\":\" !#%?#@$#%$+@!+ ?+OPQRSQTUQRU`TP`OS`]Y^W[^ZV^WVaZYa][a\",\"R 3 c\":\" !## !!# '././'/'.\",\"P -3 1 2/m\":\" !#%?#@$#%$&@!& ?&$%&!@&? &! #?%#$@#\",\"P -3 1 2/c\":\" !#%?#@$#%$-@!- ?-$%&!@&? &! +?%+$@+\",\"P -3 2/m 1\":\" !#%?#@$#! &?%&$@&$%&!@&? &%$#@!# ?#\",\"P -3 2/c 1\":\" !#%?#@$#! -?%-$@-$%&!@&? &%$+@!+ ?+\",\"H -3 2/m\":\" !#%?#@$#! &?%&$@&$%&!@&? &%$#@!# ?#OPQRSQTUQY]X[WXVZXVWXYZX[]XRUQTPQOSQ]Y^W[^ZV^PO_SR_UT_UR_PT_SO_WV^ZY^][^\",\"R -3 2/m\":\" !## !!# %$&$&%&%$$%&&$%%&$! # #!#! \",\"H -3 2/c\":\" !#%?#@$#! -?%-$@-$%&!@&? &%$+@!+ ?+OPQRSQTUQY]b[WbVZbVWXYZX[]XRU`TP`OS`]Y^W[^ZV^POcSRcUTcUR_PT_SO_WVaZYa][a\",\"R -3 2/c\":\" !## !!# 102021210$%&&$%%&$'././'/'.\",\"P 6\":\" !#%?#@$#$%#!@#? #\",\"P 61\":\" !#%?A@$B$%/!@d? e\",\"P 65\":\" !#%?B@$A$%/!@e? d\",\"P 62\":\" !#%?^@$Q$%#!@^? Q\",\"P 64\":\" !#%?Q@$^$%#!@Q? ^\",\"P 63\":\" !#%?#@$#$%+!@+? +\",\"P -6\":\" !#%?#@$# !&%?&@$&\",\"P 6/m\":\" !#%?#@$#$%#!@#? #$%&!@&? & !&%?&@$&\",\"P 63/m\":\" !#%?#@$#$%+!@+? +$%&!@&? & !-%?-@$-\",\"P 6 2 2\":\" !#%?#@$#$%#!@#? #! &?%&$@&%$&@!& ?&\",\"P 61 2 2\":\" !#%?Q@$^$%+!@`? a! X?%&$@_%$b@!- ?c\",\"P 65 2 2\":\" !#%?^@$Q$%+!@a? `! _?%&$@X%$c@!- ?b\",\"P 62 2 2\":\" !#%?^@$Q$%#!@^? Q! _?%&$@X%$_@!& ?X\",\"P 64 2 2\":\" !#%?Q@$^$%#!@Q? ^! X?%&$@_%$X@!& ?_\",\"P 63 2 2\":\" !#%?#@$#$%+!@+? +! &?%&$@&%$-@!- ?-\",\"P 6 m m\":\" !#%?#@$#$%#!@#? #%$#@!# ?#! #?%#$@#\",\"P 6 c c\":\" !#%?#@$#$%#!@#? #%$+@!+ ?+! +?%+$@+\",\"P 63 c m\":\" !#%?#@$#$%+!@+? +%$+@!+ ?+! #?%#$@#\",\"P 63 m c\":\" !#%?#@$#$%+!@+? +%$#@!# ?#! +?%+$@+\",\"P -6 m 2\":\" !#%?#@$# !&%?&@$&%$#@!# ?#%$&@!& ?&\",\"P -6 c 2\":\" !#%?#@$# !-%?-@$-%$+@!+ ?+%$&@!& ?&\",\"P -6 2 m\":\" !#%?#@$# !&%?&@$&! &?%&$@&! #?%#$@#\",\"P -6 2 c\":\" !#%?#@$# !-%?-@$-! &?%&$@&! +?%+$@+\",\"P 6/m 2/m 2/m\":\" !#%?#@$#$%#!@#? #! &?%&$@&%$&@!& ?&$%&!@&? & !&@$&%?&%$#@!# ?#! #?%#$@#\",\"P 6/m 2/c 2/c\":\" !#%?#@$#$%#!@#? #! -?%-$@-%$-@!- ?-$%&!@&? & !&@$&%?&%$+@!+ ?+! +?%+$@+\",\"P 63/m 2/c 2/m\":\" !#%?#@$#$%+!@+? +! -?%-$@-%$&@!& ?&$%&!@&? & !-@$-%?-%$+@!+ ?+! #?%#$@#\",\"P 63/m 2/m 2/c\":\" !#%?#@$#$%+!@+? +! &?%&$@&%$-@!- ?-$%&!@&? & !-@$-%?-%$#@!# ?#! +?%+$@+\",\"P 2 3\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& \",\"F 2 3\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& )+$,+$)- ,-#()#*,&*)&(,!+(%+*!-*%-((!+*%+*!-(%-+ )+$,-$)- ,)#(,#*)&*,&(()#*,#*)&(,&+(!+*%-*!-(%)+ ,+$)-$,- \",\"I 2 3\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ()+*,+*)-(,-+()+*,-*)-(,)+(,+*)-*,-(\",\"P 21 3\":\" !#*%+$)-(,&# !+*%-$)&(,!# %+*)-$,&(\",\"I 21 3\":\" !#*%+$)-(,&# !+*%-$)&(,!# %+*)-$,&(()+$,#*!& %-+()#$,&*!- %)+(,#$!&*%- \",\"P 2/m -3\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& $%& !& %#$!#&$%& !# %#$!%&$!& %# !#$\",\"P 2/n -3\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& *,-()-(,+*)+-*,-()+(,+*),-*)-(,+()+*\",\"F 2/m -3\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& $%& !& %#$!#&$%& !# %#$!%&$!& %# !#$ )+$,+$)- ,-#()#*,&*)&(,!+(%+*!-*%-($,- )- ,+$)+&*,&()#(,#*)%-*!-(%+(!+*(!+*%+*!-(%-+ )+$,-$)- ,)#(,#*)&*,&(*%-(!-(%+*!+-$,- )+ ,+$),&*)&(,#()#*()#*,#*)&(,&+(!+*%-*!-(%)+ ,+$)-$,- *,&()&(,#*)#-*%-(!+(%+*!,-$)- ,+ )+$\",\"F 2/d -3\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& 64=37=345675=64=375345674=67=3453756 )+$,+$)- ,-#()#*,&*)&(,!+(%+*!-*%-(68>3:>3896:9=<8=;:5;85<:4><7>;49;79<(!+*%+*!-(%-+ )+$,-$)- ,)#(,#*)&*,&(<4>;7>;49<79>68>3:93896:8=<:=;85;:5<()#*,#*)&(,&+(!+*%-*!-(%)+ ,+$)-$,- <8=;:=;8f<:f><4>;79;49<78>6:>3893:96\",\"I 2/m -3\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& $%& !& %#$!#&$%& !# %#$!%&$!& %# !#$()+*,+*)-(,-+()+*,-*)-(,)+(,+*)-*,-(*,-()-(,+*)+-*,-()+(,+*),-*)-(,+()+*\",\"P 21/a -3\":\" !#*%+$)-(,&# !+*%-$)&(,!# %+*)-$,&($%&(!- ,+*)#&$%-(!+ ,#*)%&$!-(,+ )#*\",\"I 21/a -3\":\" !#*%+$)-(,&# !+*%-$)&(,!# %+*)-$,&($%&(!- ,+*)#&$%-(!+ ,#*)%&$!-(,+ )#*()+$,#*g& %-+()#$,&*!- %)+(,#$!&*%- *,- )&(%#$!+-*,& )#(%+$!,-*)& %#(!+$\",\"P 4 3 2\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! &%$&!$#% # #%$#!$&% &!#!$#% &! &%$\",\"P 42 3 2\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& )(-,*-)*+,(+(+,*+)*-,(-)+)*+,(-)(-,*\",\"F 4 3 2\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! &%$&!$#% # #%$#!$&% &!#!$#% &! &%$ )+$,+$)- ,-#()#*,&*)&(,!+(%+*!-*%-(!(-%*-!*+%(+ +,$+)$-, -)#)*#,(&)(&,*(!+*%+*!-(%-+ )+$,-$)- ,)#(,#*)&*,&() -,$-)$+, +(#,*#)*&,(&)+!*+%(-!(-%*()#*,#*)&(,&+(!+*%-*!-(%)+ ,+$)-$,- )(&,*&)*#,(#(+%*+!*-%(-!+)$+, -) -,$\",\"F 41 3 2\":\" !#$,+*)&(%-# !+$,&*)-(%!# ,+$)&*%-(:3>46=7<98;5;58<976=43>:97<58;>:3=46 )+$%#*!-(,&#()+*%&$!- ,!+(,#*)-$%& :;=4<>765839;94<5:6>83=79:6543>7;=8<(!+*,#$)- %&+ )#$%-*!&(,)#(%+*!&$,- 73=86>:<54;935469:<=8;>7576983=:;>4<()#*%+$!& ,-+(!#*,-$)& %)+ %#$!-*,&(7;>8<=:69435398657<>4;=:5:<94;=73>86\",\"I 4 3 2\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! &%$&!$#% # #%$#!$&% &!#!$#% &! &%$()+*,+*)-(,-+()+*,-*)-(,)+(,+*)-*,-()(-,*-)*+,(+(+,*+)*-,(-)+)*+,(-)(-,*\",\"P 43 3 2\":\" !#*%+$)-(,&# !+*%-$)&(,!# %+*)-$,&(7;>46=:<5839398<5:6=4;>75:<983>7;=46\",\"P 41 3 2\":\" !#*%+$)-(,&# !+*%-$)&(,!# %+*)-$,&(:3=8<>7694;5;54697<>83=:97654;=:3>8<\",\"I 41 3 2\":\" !#*%+$)-(,&# !+*%-$)&(,!# %+*)-$,&(:3=8<>7694;5;54697<>83=:97654;=:3>8<()+$,#*!& %-+()#$,&*!- %)+(,#$!&*%- 7;>46=:<5839398<5:6=4;>75:<983>7;=46\",\"P -4 3 m\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! #%$#!$&% & #!$#%$&! &%#! #%$&!$&% \",\"F -4 3 m\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! #%$#!$&% & #!$#%$&! &%#! #%$&!$&% )+$,+$)- ,-#()#*,&*)&(,!+(%+*!-*%-(!(+%*+!*-%(- +)$+,$-) -,#)(#,*&)*&,((!+*%+*!-(%-+ )+$,-$)- ,)#(,#*)&*,&() +,$+)$-, -(#)*#,*&)(&,+!(+%*-!*-%(()#*,#*)&(,&+(!+*%-*!-(%)+ ,+$)-$,- )(#,*#)*&,(&(+!*+%*-!(-%+) +,$-)$-, \",\"I -4 3 m\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! #%$#!$&% & #!$#%$&! &%#! #%$&!$&% ()+*,+*)-(,-+()+*,-*)-(,)+(,+*)-*,-()(+,*+)*-,(-(+)*+,*-)(-,+)(+,*-)*-,(\",\"P -4 3 n\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& )(+,*+)*-,(-(+)*+,*-)(-,+)(+,*-)*-,(\",\"F -4 3 c\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& )(+,*+)*-,(-(+)*+,*-)(-,+)(+,*-)*-,( )+$,+$)- ,-#()#*,&*)&(,!+(%+*!-*%-() #,$#)$&, &(#!*#%*&!(&%+! +%$-!$-% (!+*%+*!-(%-+ )+$,-$)- ,)#(,#*)&*,&(!(#%*#!*&%(& +!$+%$-! -%#) #,$&)$&, ()#*,#*)&(,&+(!+*%-*!-(%)+ ,+$)-$,- ! +%$+!$-% - #)$#,$&) &,#!(#%*&!*&%(\",\"I -4 3 d\":\" !#*%+$)-(,&# !+*%-$)&(,!# %+*)-$,&(7354<9:6>8;=357<946>:;=857394<>:6=8;()+$,#*!& %-+()#$,&*!- %)+(,#$!&*%- :;98657<=43>;9:658<=73>49:;586=7<>43\",\"P 4/m -3 2/m\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! &%$&!$#% # #%$#!$&% &!#!$#% &! &%$$%& !& %#$!#&$%& !# %#$!%&$!& %# !#$%$#! #% &!$&$&! &% #!$#%&% &!$#%$#! \",\"P 4/n -3 2/n\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! &%$&!$#% # #%$#!$&% &!#!$#% &! &%$*,-()-(,+*)+-*,-()+(,+*),-*)-(,+()+*,*+)(+,(-)*-*-)(-,(+)*+,-,(-)*+,*+)(\",\"P 42/m -3 2/n\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& )(-,*-)*+,(+(+,*+)*-,(-)+)*+,(-)(-,*$%& !& %#$!#&$%& !# %#$!%&$!& %# !#$,*+)(+,(-)*-*-)(-,(+)*+,-,(-)*+,*+)(\",\"P 42/n -3 2/m\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& )(-,*-)*+,(+(+,*+)*-,(-)+)*+,(-)(-,**,-()-(,+*)+-*,-()+(,+*),-*)-(,+()+*%$#! #% &!$&$&! &% #!$#%&% &!$#%$#! \",\"F 4/m -3 2/m\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! &%$&!$#% # #%$#!$&% &!#!$#% &! &%$$%& !& %#$!#&$%& !# %#$!%&$!& %# !#$%$#! #% &!$&$&! &% #!$#%&% &!$#%$#! )+$,+$)- ,-#()#*,&*)&(,!+(%+*!-*%-(!(-%*-!*+%(+ +,$+)$-, -)#)*#,(&)(&,*$,- )- ,+$)+&*,&()#(,#*)%-*!-(%+(!+*%*+!(+%(-!*-$-) -, +)$+,&,(&)*#,*#)((!+*%+*!-(%-+ )+$,-$)- ,)#(,#*)&*,&() -,$-)$+, +(#,*#)*&,(&)+!*+%(-!(-%**%-(!-(%+*!+-$,- )+ ,+$),&*)&(,#()#*,$+) +, -)$-*&)(&,(#)*#,-%(-!*+%*+!(()#*,#*)&(,&+(!+*%-*!-(%)+ ,+$)-$,- )(&,*&)*#,(#(+%*+!*-%(-!+)$+, -) -,$*,&()&(,#*)#-*%-(!+(%+*!,-$)- ,+ )+$,*#)(#,(&)*&*-!(-%(+!*+%-, -)$+,$+) \",\"F 4/m -3 2/c\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& )(-,*-)*+,(+(+,*+)*-,(-)+)*+,(-)(-,*$%& !& %#$!#&$%& !# %#$!%&$!& %# !#$,*+)(+,(-)*-*-)(-,(+)*+,-,(-)*+,*+)( )+$,+$)- ,-#()#*,&*)&(,!+(%+*!-*%-() &,$&)$#, #(#%*#!*&%(&!+!$+% -! -%$$,- )- ,+$)+&*,&()#(,#*)%-*!-(%+(!+*,$#) #, &)$&*&!(&%(#!*#%-% -!$+%$+! (!+*%+*!-(%-+ )+$,-$)- ,)#(,#*)&*,&(!(&%*&!*#%(# +%$+!$-% -!#)$#, &) &,$*%-(!-(%+*!+-$,- )+ ,+$),&*)&(,#()#*%*#!(#%(&!*&$-! -% +!$+%&, &)$#,$#) ()#*,#*)&(,&+(!+*%-*!-(%)+ ,+$)-$,- ! -%$-!$+% + #,$#)$&, &)#!*#%(&!(&%**,&()&(,#*)#-*%-(!+(%+*!,-$)- ,+ )+$%$+! +% -!$-$&) &, #)$#,&%(&!*#%*#!(\",\"F 41/d -3 2/m\":\" !#$,+*)&(%-# !+$,&*)-(%!# ,+$)&*%-(:3>46=7<98;5;58<976=43>:97<58;>:3=4664=3:>;85<79=64>3:5;89<74=6:>385;79<,$+! #%(-)*&*&)(-% #!$+,-%(&)*+,$#! )+$%#*!-(,&#()+*%&$!- ,!+(,#*)-$%& :;=4<>765839;94<5:6>83=79:6543>7;=8<68>37=;49<:5=<8>;753496:4><:=;893756,*#!(+% &)$-*-!(&, +)$#%-, &!$+%*#)((!+*,#$)- %&+ )#$%-*!&(,)#(%+*!&$,- 73=86>:<54;935469:<=8;>7576983=:;>4<<4>;:=389675>68=379;45<:8=<7>;453:96%$#) +,(&!*-$&! -,(#)*+%&% -)$#,*+!(()#*%+$!& ,-+(!#*,-$)& %)+ %#$!-*,&(7;>8<=:69435398657<>4;=:5:<94;=73>86<8=;7>3456:9><4=;:9385678>67=349;:5<%*+)(#, -!$&$-) &%(+!*#,&,(-!*#%$+) \",\"F 41/d -3 2/c\":\" !#$,+*)&(%-# !+$,&*)-(%!# ,+$)&*%-(:3>46=7<98;5;58<976=43>:97<58;>:3=46<8>;7=3496:5><8=;793456:8><7=;493:56%*#)(+, &!$-$-! &,(+)*#%&, -!$#%*+)( )+$%#*!-(,&#()+*%&$!- ,!+(,#*)-$%& :;=4<>765839;94<5:6>83=79:6543>7;=8<<4=;:>385679>64=3:9;85<78=67>345;:9<%$+) #,(-!*&$&) -%(#!*+,&%(-)*#,$+! (!+*,#$)- %&+ )#$%-*!&(,)#(%+*!&$,- 73=86>:<54;935469:<=8;>7576983=:;>4<68=37>;45<:9=<4>;:5389674>6:=389;75<,*+!(#% -)$&*-)(&% +!$#,-,(&!*+%$#) ()#*%+$!& ,-+(!#*,-$)& %)+ %#$!-*,&(7;>8<=:69435398657<>4;=:5:<94;=73>8664>3:=;89<75=68>375;49<:4=<:>;853796,$#! +%(&)*-*&!(-, #)$+%-% &)$+,*#!(\",\"I 4/m -3 2/m\":\" !#$%#$!& %&# !#$%&$!& %!# %#$!&$%& ! &%$&!$#% # #%$#!$&% &!#!$#% &! &%$$%& !& %#$!#&$%& !# %#$!%&$!& %# !#$%$#! #% &!$&$&! &% #!$#%&% &!$#%$#! ()+*,+*)-(,-+()+*,-*)-(,)+(,+*)-*,-()(-,*-)*+,(+(+,*+)*-,(-)+)*+,(-)(-,**,-()-(,+*)+-*,-()+(,+*),-*)-(,+()+*,*+)(+,(-)*-*-)(-,(+)*+,-,(-)*+,*+)(\",\"I 41/a -3 2/d\":\" !#*%+$)-(,&# !+*%-$)&(,!# %+*)-$,&(:3=8<>7694;5;54697<>83=:97654;=:3>8<$%&(!- ,+*)#&$%-(!+ ,#*)%&$!-(,+ )#*4<97358;=:6>6>:;=8357<94=8;>:694<573()+$,#*!& %-+()#$,&*!- %)+(,#$!&*%- 7;>46=:<5839398<5:6=4;>75:<983>7;=46*,- )&(%#$!+-*,& )#(%+$!,-*)& %#(!+$865:;943>7<=<=73>4;9:658>43=7<5869:;\",\"P 1 1 2\":\" !#$%#\",\"P 1 1 21\":\" !#$%+\",\"B 1 1 2\":\" !#$%#(g+*%+\",\"A 1 2 1\":\" !#$!& )+$)-\",\"C 1 21 1\":\" !#$)&()#*!&\",\"I 1 2 1\":\" !#$!&.'/0'2\",\"I 1 21 1\":\" !#$)&.'/0!-\",\"P 1 1 m\":\" !# !&\",\"P 1 1 b\":\" !# )&\",\"B 1 1 m\":\" !# !&(!+(!-\",\"B 1 1 b\":\" !# )&(!+()-\",\"P 1 1 2/m\":\" !# !&$%#$%&\",\"P 1 1 21/m\":\" !#$%+$%& !-\",\"B 1 1 2/m\":\" !# !&$%#$%&(!+(!-*%+*%-\",\"P 1 1 2/b\":\" !#$,#$%& )&\",\"P 1 1 21/b\":\" !#$%&$,+ )-\",\"B 1 1 2/b\":\" !#$,#$%& )&(!+*,+*%-()-\",\"P 21 2 2\":\" !#$!&(%&*%#\",\"P 2 21 2\":\" !# ,&$)&$%#\",\"P 21 21 2 (a)\":\" !#*,#.%&$'&\",\"P 21 2 21\":\" !#$!&(%-*%+\",\"P 2 21 21\":\" !# %&$)-$,+\",\"C 2 2 21a)\":\" !#*%+(,&$)-()#$,+ %&*!-\",\"C 2 2 2a\":\" !#*,#.%&$'&()#$%# ,&*!&\",\"F 2 2 2a\":\" !#*,#.%&$'& '/*%/.12$!2.!/$,/ %20'2.'#$%# 1&0!&\",\"I 2 2 2a\":\" !#*,#.%&$'&()+$%+*!- ,-\",\"P 21/m 21/m 2/n a\":\" !#*,#$)&(%&$%&.'& ,#*!#\",\"P 42 21 2a\":\" !#*,#%.+'$+$'&.%&! -,*-\",\"I 2 3a\":\" !#*,#.%&$'&!# ,- '&$%/$# !-*!/$%&.%()+$%+ ,-*!-)+(%&(!-*,#*+()&$)#*,- ,\"},Ea=/^[1-9]$/;function Fa(t){let e=\"\";return t.length>0&&(e=\":\"+gt(t).join(\" OR :\")),new pe(e)}class La{constructor(t=\"\"){this.name=t,this.partList=[]}get type(){return\"Assembly\"}addPart(t,e){const i=new Na(t,e);return this.partList.push(i),i}getAtomCount(t){return this.partList.reduce(((e,i)=>e+i.getAtomCount(t)),0)}getResidueCount(t){return this.partList.reduce(((e,i)=>e+i.getResidueCount(t)),0)}getInstanceCount(){let t=0;return this.partList.forEach((function(e){t+=e.matrixList.length})),t}isIdentity(t){if(1!==this.partList.length)return!1;const e=this.partList[0];if(1!==e.matrixList.length)return!1;if(!(new i).equals(e.matrixList[0]))return!1;let r=[];return t.eachChain((function(t){r.push(t.chainname)})),r=gt(r),e.chainList.length===r.length}getBoundingBox(t){const e=new a;return this.partList.forEach((function(i){const r=i.getBoundingBox(t);e.expandByPoint(r.min),e.expandByPoint(r.max)})),e}getCenter(t){return this.getBoundingBox(t).getCenter(new e)}getSelection(){let t=[];return this.partList.forEach((function(e){t=t.concat(e.chainList)})),Fa(t)}}class Na{constructor(t=[],e=[]){this.matrixList=t,this.chainList=e}get type(){return\"AssemblyPart\"}_getCount(t,e){let i=0;return t.eachChain((t=>{(0===this.chainList.length||this.chainList.includes(t.chainname))&&(i+=t[e])})),this.matrixList.length*i}getAtomCount(t){return this._getCount(t,\"atomCount\")}getResidueCount(t){return this._getCount(t,\"residueCount\")}getBoundingBox(t){const e=new a,i=new a,r=this.getSelection(),s=t.getBoundingBox(r);return this.matrixList.forEach((function(t){i.copy(s).applyMatrix4(t),e.expandByPoint(i.min),e.expandByPoint(i.max)})),e}getSelection(){return Fa(this.chainList)}getView(t){const e=this.getSelection();return e?t.getView(e):t}getInstanceList(){const t=[];for(let e=0,i=this.matrixList.length;e0&&this.addResidueType(this.ri-1),l.growIfFull(),l.resno[this.ri]=s,void 0!==o&&(l.sstruc[this.ri]=o.charCodeAt(0)),void 0!==a&&(l.inscode[this.ri]=a.charCodeAt(0)),l.atomOffset[this.ri]=this.ai,l.atomCount[this.ri]=0,l.count+=1,l.chainIndex[this.ri]=this.ci,h.residueCount[this.ci]+=1),c.count+=1,c.residueIndex[this.ai]=this.ri,l.atomCount[this.ri]+=1,this.currentModelindex=t,this.currentChainid=i,this.currentResname=r,this.currentResno=s,this.currentInscode=a,this.currentHetero=n}finalize(){this.previousResname=this.currentResname,this.previousHetero=this.currentHetero,this.ri>-1&&this.addResidueType(this.ri)}}function Va(t,e){if(!e)return;De&&Me.time(\"assignSecondaryStructure\");const i=[];t.eachModel((function(t){t.eachChain((function(t){i.push(t.chainname)}))}));const r=i.slice().sort(),s=[];r.forEach((function(t){s.push(i.indexOf(t))}));const n=e.helices.filter((function(t){return pt(r,t[0])>=0}));n.sort((function(t,e){const i=t[0],n=e[0],o=t[1],a=e[1];if(i===n)return o===a?0:o=0}));a.sort((function(t,e){const i=t[0],n=e[0];if(i===n)return 0;const o=pt(r,i),a=pt(r,n);return s[o]=t.residueCount)continue;o.index=n+s,a.index=n+s+e,c.index=o.traceAtomIndex,l.index=a.traceAtomIndex;const h=c.distanceTo(l);if(Math.abs(h-i[e-2])>r)return!1}return!0},i=function(e,i){return t(e,i,[5.45,5.18,6.37],2.1)},r=function(e,i){return t(e,i,[6.1,10.4,13],1.42)};return function(t){De&&Me.time(\"calculateSecondaryStructure\"),t.eachPolymer((function(t){if(t.residueCount<4)return;if(t.isCg())!function(t){const i=t.residueStore,r=t.residueIndexStart,s=new Pa(t).position,n=new e,o=new e;for(let e=0,a=t.residueCount;e1&&s.bending[e]<20&&(i.sstruc[r+e]=\"h\".charCodeAt(0),i.sstruc[r+e+1]=\"h\".charCodeAt(0))}}(t);else{if(!t.isProtein())return;!function(t){const e=t.residueStore,s=t.residueIndexStart;for(let n=0,o=t.residueCount;n=e;)i=Math.floor(i/e),s+=Ua[i%e],r+=1;return r>=5&&Me.warn(\"chainname overflow\"),s}function Ha(t,e=!1){De&&Me.time(\"calculateChainnames\");let i=!0;if(t.eachChain((function(t){t.chainname&&(i=!1)})),i){const i=t.modelStore,r=t.chainStore,s=t.residueStore,n=function(t,e,n,o){const a=r.count;for(let t=0;t{h.add(e),t.forEach((t=>{h.add(t)}))}))),t.eachResidue((function(t){if(!e&&l){const e=t.atomCount,s=t.atomOffset;if(e>500)return void Me.warn(\"more than 500 atoms, skip residue for auto-bonding\",t.qualifiedName());if(\"auto\"===i&&t.hetero)for(let e=t.atomOffset;e{u.forEach((i=>{e.push(t.clone().multiply(i))}))})),h.addPart(e)}else h.addPart(d);const m=new e,p=new La(\"SUPERCELL\"),f=Array.prototype.concat.call(l(m.set(1,0,0)),l(m.set(0,1,0)),l(m.set(0,0,1)),l(m.set(-1,0,0)),l(m.set(0,-1,0)),l(m.set(0,0,-1)),l(m.set(1,1,0)),l(m.set(1,0,1)),l(m.set(0,1,1)),l(m.set(-1,-1,0)),l(m.set(-1,0,-1)),l(m.set(0,-1,-1)),l(m.set(1,-1,-1)),l(m.set(1,1,-1)),l(m.set(1,-1,1)),l(m.set(-1,1,1)),l(m.set(-1,-1,1)),l(m.set(-1,1,-1)),l(m.set(0,1,-1)),l(m.set(0,-1,1)),l(m.set(1,0,-1)),l(m.set(-1,0,1)),l(m.set(1,-1,0)),l(m.set(-1,1,0)),l(),l(m.set(1,1,1)),l(m.set(-1,-1,-1)));if(t.biomolDict.NCS){const t=[];f.forEach((function(e){u.forEach((function(i){t.push(e.clone().multiply(i))}))})),p.addPart(t)}else p.addPart(f);t.biomolDict.UNITCELL=h,t.biomolDict.SUPERCELL=p,De&&Me.timeEnd(\"buildUnitcellAssembly\")}const Qa=[\"H\",\"C\",\"O\",\"N\",\"S\",\"P\"],Ja=[\"NA\",\"CL\",\"FE\"];function tc(t){let e=t.toUpperCase(),i=0,r=0;for(let t=0;t0)break;++i}else r=t+1;(i>0||r=3&&-1!==Qa.indexOf(e[0])?e[0]:\"\"}function ec(t){const e=t.bondHash,i=e.countArray,r=e.offsetArray,s=e.indexArray,n=t.getBondProxy();t.eachResidue((function(t){const e=t.residueType;if(void 0!==e.bonds)return;var o=t.atomOffset,a=[],c=[],l=[],h={};const d=o+t.atomCount;t.eachAtom((function(t){const e=t.index,u=r[e];for(let t=0,r=i[e];t=d)continue;let i=n.atomIndex2;if(i=d)continue;if(e>i){const t=i;i=e,e=t}const r=e+\"|\"+i;void 0===h[r]&&(h[r]=!0,a.push(e-o),c.push(i-o),l.push(n.bondOrder))}})),e.bonds={atomIndices1:a,atomIndices2:c,bondOrders:l}}))}function ic(t,...e){De&&Me.time(\"concatStructures\");const i=new Cc(t,\"\"),r=new za(i),s=i.atomStore,n=i.atomMap;s.addField(\"formalCharge\",1,\"int8\"),s.addField(\"partialCharge\",1,\"float32\");const o={};let a=0,c=0,l=0;e.forEach((t=>{t.eachAtom((t=>{s.growIfFull(),s.atomTypeId[a]=n.add(t.atomname,t.element),s.x[a]=t.x,s.y[a]=t.y,s.z[a]=t.z,s.serial[a]=t.serial,s.formalCharge[a]=t.formalCharge,s.partialCharge[a]=t.partialCharge,s.altloc[a]=t.altloc,s.occupancy[a]=t.occupancy,s.bfactor[a]=t.bfactor,r.addAtom(t.modelIndex+l,t.chainname,t.chainid,t.resname,t.resno,1===t.hetero,t.sstruc,t.inscode),o[t.index+c]=a,a+=1})),c+=t.atomStore.count,l+=t.modelStore.count}));const h=i.bondStore,d=i.getAtomProxy(),u=i.getAtomProxy();return c=0,e.forEach((t=>{t.eachBond((t=>{d.index=o[t.atomIndex1+c],u.index=o[t.atomIndex2+c],h.addBond(d,u,t.bondOrder)})),c+=t.atomStore.count})),r.finalize(),Ka(i,!0),Ya(i,!0),i.finalizeAtoms(),i.finalizeBonds(),ec(i),De&&Me.timeEnd(\"concatStructures\"),i}const rc=[3,11,19,37,55,87],sc=[4,12,20,38,56,88],nc=[6,15,16,34],oc=[1,7,8,9,17,35,53],ac=[2,10,18,36,54,86],cc=[13,30,31,48,49,50,80,81,82,83,84,85,112],lc=[5,14,32,33,51,52,85],hc=[9,17,35,53,85];class dc{constructor(t,e,i){this.structure=t,this.atomname=e,i=i||tc(e),this.element=i,this.number=Xs[i]||0,this.vdw=Ys[this.number]||2,this.covalent=Ks[this.number]||1.6}getDefaultValence(){const t=Zs[this.number];return t?t[0]:-1}getValenceList(){return Zs[this.number]||[]}getOuterShellElectronCount(){return Qs[this.number]||2}isMetal(){return this.isAlkaliMetal()||this.isAlkalineEarthMetal()||this.isLanthanide()||this.isActinide()||this.isTransitionMetal()||this.isPostTransitionMetal()}isNonmetal(){return this.isDiatomicNonmetal()||this.isPolyatomicNonmetal()||this.isNobleGas()}isMetalloid(){return lc.includes(this.number)}isHalogen(){return hc.includes(this.number)}isDiatomicNonmetal(){return oc.includes(this.number)}isPolyatomicNonmetal(){return nc.includes(this.number)}isAlkaliMetal(){return rc.includes(this.number)}isAlkalineEarthMetal(){return sc.includes(this.number)}isNobleGas(){return ac.includes(this.number)}isTransitionMetal(){const t=this.number;return t>=21&&t<=29||t>=39&&t<=47||t>=72&&t<=79||t>=104&&t<=108}isPostTransitionMetal(){return cc.includes(this.number)}isLanthanide(){return this.number>=57&&this.number<=71}isActinide(){return this.number>=89&&this.number<=103}}class uc{constructor(t){this.structure=t,this.dict={},this.list=[],this.structure=t}add(t,e){const i=function(t,e){return t+\"|\"+e}(t=t.toUpperCase(),e=e?e.toUpperCase():tc(t));let r=this.dict[i];if(void 0===r){const s=new dc(this.structure,t,e);r=this.list.length,this.dict[i]=r,this.list.push(s)}return r}get(t){return this.list[t]}}class mc{constructor(t,e,i,r,s,n){this.structure=t,this.bondReferenceAtomIndices=[],this.resname=e,this.atomTypeIdList=i,this.hetero=r?1:0,this.chemCompType=s,this.bonds=n,this.atomCount=i.length,this.moleculeType=this.getMoleculeType(),this.backboneType=this.getBackboneType(0),this.backboneEndType=this.getBackboneType(-1),this.backboneStartType=this.getBackboneType(1),this.backboneIndexList=this.getBackboneIndexList();const o=mn[this.backboneType],a=mn[this.backboneStartType],c=mn[this.backboneEndType],l=this.getAtomIndexByName(o.trace);this.traceAtomIndex=st(l,-1);const h=this.getAtomIndexByName(o.direction1);this.direction1AtomIndex=st(h,-1);const d=this.getAtomIndexByName(o.direction2);this.direction2AtomIndex=st(d,-1);const u=this.getAtomIndexByName(a.backboneStart);this.backboneStartAtomIndex=st(u,-1);const m=this.getAtomIndexByName(c.backboneEnd);let p;this.backboneEndAtomIndex=st(m,-1),p=on.includes(e)?this.getAtomIndexByName(\"N1\"):this.getAtomIndexByName(\"N3\"),this.rungEndAtomIndex=st(p,-1)}getBackboneIndexList(){const t=[];let e;switch(this.moleculeType){case 3:e=dn;break;case 4:case 5:e=un;break;default:return t}const i=this.structure.atomMap,r=this.atomTypeIdList;for(let s=0,n=this.atomCount;s500)De&&Me.warn(\"more than 500 atoms, skip residue for auto-bonding\",t.qualifiedName());else if(s>50){const e=new $a(t,!0),s=t.isCg()?1.2:2.3;for(let t=n;t=0||yc(t,e);this.rings={atomRings:t.atomRings,rings:t.rings}}isAromatic(t){return this.aromaticAtoms=this.getAromatic(t),1===this.aromaticAtoms[t.index-t.residueAtomOffset]}calculateAromatic(t){const e=this.aromaticAtoms=new Uint8Array(this.atomCount),i=this.getRings().rings,r=i.map((e=>function(t){if(t.some((t=>!pc.includes(t.number))))return!1;let e=0;const i=new ho(3,t.length),r=i.data;t.forEach((t=>{r[e+0]=t.x,r[e+1]=t.y,r[e+2]=t.z,e+=3}));return new ya(i).vecC.length()this.structure.getAtomProxy(e+t.atomOffset)))))),s=this.aromaticRings=[];i.forEach(((t,i)=>{r[i]&&(s.push(t),t.forEach((t=>e[t]=1)))}))}assignBondReferenceAtomIndices(){const t=this.getBondGraph(),e=this.getRings(),i=e.atomRings,r=e.rings,s=this.bonds,n=s.atomIndices1,o=s.atomIndices2,a=s.bondOrders,c=this.bondReferenceAtomIndices,l=s.atomIndices1.length;c.length=0;for(let e=0;e1)for(let i=0;i1)for(let i=0;i=0;t--)p[f++]=o[t];const g=t.rings.length;for(let e=0;e0?n[c]!==e&&n[e]!==c&&gc(t,e,c):(r[c]=1,s[a++]=c,n[c]=e)}}}const bc=4;class xc{constructor(t){this.structure=t,this.dict={},this.list=[]}add(t,e,i,r=\"\",s){const n=function(t,e,i,r=\"\"){return t+\"|\"+e.join(\",\")+\"|\"+(i?1:0)+\"|\"+r}(t=t.toUpperCase(),e,i,r);let o=this.dict[n];if(void 0===o){const a=new mc(this.structure,t,e,i,r,s);o=this.list.length,this.dict[n]=o,this.list.push(a)}return o}get(t){return this.list[t]}}class vc{constructor(t,i=0){this.structure=t,this.index=i,this.bondStore=t.bondStore,this._v12=new e,this._v13=new e,this._ap1=this.structure.getAtomProxy(),this._ap2=this.structure.getAtomProxy(),this._ap3=this.structure.getAtomProxy()}get atom1(){return this.structure.getAtomProxy(this.atomIndex1)}get atom2(){return this.structure.getAtomProxy(this.atomIndex2)}get atomIndex1(){return this.bondStore.atomIndex1[this.index]}set atomIndex1(t){this.bondStore.atomIndex1[this.index]=t}get atomIndex2(){return this.bondStore.atomIndex2[this.index]}set atomIndex2(t){this.bondStore.atomIndex2[this.index]=t}get bondOrder(){return this.bondStore.bondOrder[this.index]}set bondOrder(t){this.bondStore.bondOrder[this.index]=t}getOtherAtomIndex(t){return t===this.atomIndex1?this.atomIndex2:this.atomIndex1}getOtherAtom(t){return this.structure.getAtomProxy(this.getOtherAtomIndex(t.index))}getReferenceAtomIndex(){const t=this._ap1,e=this._ap2;if(t.index=this.atomIndex1,e.index=this.atomIndex2,t.residueIndex!==e.residueIndex)return;const i=t.index-t.residueAtomOffset,r=e.index-e.residueAtomOffset,s=t.residueType.getBondReferenceAtomIndex(i,r);if(void 0!==s)return s+t.residueAtomOffset;console.warn(\"No reference atom found\",t.index,e.index)}calculateShiftDir(t=new e){const i=this._ap1,r=this._ap2,s=this._ap3,n=this._v12,o=this._v13;i.index=this.atomIndex1,r.index=this.atomIndex2;const a=this.getReferenceAtomIndex();n.subVectors(i,r).normalize(),void 0!==a?(s.index=a,o.subVectors(i,s)):o.copy(i),o.normalize();let c=n.dot(o);return 1-Math.abs(c)<1e-5&&(o.set(1,0,0),c=n.dot(o),1-Math.abs(c)<1e-5&&(o.set(0,1,0),c=n.dot(o))),t.copy(o.sub(n.multiplyScalar(c))).normalize()}qualifiedName(){return this.atomIndex1+\"=\"+this.atomIndex2}clone(){return new vc(this.structure,this.index)}toObject(){return{atomIndex1:this.atomIndex1,atomIndex2:this.atomIndex2,bondOrder:this.bondOrder}}}class wc{constructor(t,e=0){this.structure=t,this.index=e,this.chainStore=t.chainStore,this.residueStore=t.residueStore,this.atomStore=t.atomStore,this.residueMap=t.residueMap,this.atomMap=t.atomMap}get entity(){return this.structure.entityList[this.entityIndex]}get entityIndex(){return this.chainStore.entityIndex[this.chainIndex]}get chain(){return this.structure.getChainProxy(this.chainIndex)}get chainIndex(){return this.residueStore.chainIndex[this.index]}set chainIndex(t){this.residueStore.chainIndex[this.index]=t}get atomOffset(){return this.residueStore.atomOffset[this.index]}set atomOffset(t){this.residueStore.atomOffset[this.index]=t}get atomCount(){return this.residueStore.atomCount[this.index]}set atomCount(t){this.residueStore.atomCount[this.index]=t}get atomEnd(){return this.atomOffset+this.atomCount-1}get modelIndex(){return this.chainStore.modelIndex[this.chainIndex]}get chainname(){return this.chainStore.getChainname(this.chainIndex)}get chainid(){return this.chainStore.getChainid(this.chainIndex)}get resno(){return this.residueStore.resno[this.index]}set resno(t){this.residueStore.resno[this.index]=t}get sstruc(){return this.residueStore.getSstruc(this.index)}set sstruc(t){this.residueStore.setSstruc(this.index,t)}get inscode(){return this.residueStore.getInscode(this.index)}set inscode(t){this.residueStore.setInscode(this.index,t)}get residueType(){return this.residueMap.get(this.residueStore.residueTypeId[this.index])}get resname(){return this.residueType.resname}get hetero(){return this.residueType.hetero}get moleculeType(){return this.residueType.moleculeType}get backboneType(){return this.residueType.backboneType}get backboneStartType(){return this.residueType.backboneStartType}get backboneEndType(){return this.residueType.backboneEndType}get traceAtomIndex(){return this.residueType.traceAtomIndex+this.atomOffset}get direction1AtomIndex(){return this.residueType.direction1AtomIndex+this.atomOffset}get direction2AtomIndex(){return this.residueType.direction2AtomIndex+this.atomOffset}get backboneStartAtomIndex(){return this.residueType.backboneStartAtomIndex+this.atomOffset}get backboneEndAtomIndex(){return this.residueType.backboneEndAtomIndex+this.atomOffset}get rungEndAtomIndex(){return this.residueType.rungEndAtomIndex+this.atomOffset}get x(){let t=0;for(let e=this.atomOffset;e<=this.atomEnd;++e)t+=this.atomStore.x[e];return t/this.atomCount}get y(){let t=0;for(let e=this.atomOffset;e<=this.atomEnd;++e)t+=this.atomStore.y[e];return t/this.atomCount}get z(){let t=0;for(let e=this.atomOffset;e<=this.atomEnd;++e)t+=this.atomStore.z[e];return t/this.atomCount}eachAtom(t,e){const i=this.atomCount,r=this.atomOffset,s=this.structure._ap,n=r+i;if(e&&e.atomOnlyTest){const i=e.atomOnlyTest;for(let e=r;e0)return this.entity.isPolymer();{const t=this.residueType.moleculeType;return 3===t||4===t||5===t}}isHetero(){return 1===this.residueType.hetero}isWater(){return 1===this.residueType.moleculeType}isIon(){return 2===this.residueType.moleculeType}isSaccharide(){return 6===this.residueType.moleculeType}isStandardAminoacid(){return this.residueType.isStandardAminoacid()}isStandardBase(){return this.residueType.isStandardBase()}isHelix(){return Hs.includes(this.sstruc)}isSheet(){return Ws.includes(this.sstruc)}isTurn(){return qs.includes(this.sstruc)&&this.isProtein()}getAtomType(t){return this.atomMap.get(this.atomStore.atomTypeId[t])}getResname1(){return en[this.resname.toUpperCase()]||\"X\"}getBackboneType(t){switch(t){case-1:return this.residueType.backboneStartType;case 1:return this.residueType.backboneEndType;default:return this.residueType.backboneType}}getAtomIndexByName(t){let e=this.residueType.getAtomIndexByName(t);return void 0!==e&&(e+=this.atomOffset),e}hasAtomWithName(t){return this.residueType.hasAtomWithName(t)}getAtomnameList(){console.warn(\"getAtomnameList - might be expensive\");const t=this.atomCount,e=this.atomOffset,i=new Array(t);for(let r=0;r=e){const e=st(t,this.structure.getResidueProxy());if(e.index=i,e.connectedTo(this))return e}else if(i===e-1){const i=this.chainStore.residueCount[this.chainIndex],r=st(t,this.structure.getResidueProxy());if(r.index=e+i-1,r.connectedTo(this))return r}}getBonds(){return this.residueType.getBonds(this)}getRings(){return this.residueType.getRings()}getAromaticRings(){return this.residueType.getAromaticRings(this)}qualifiedName(t=!1){let e=\"\";return this.resname&&!t&&(e+=\"[\"+this.resname+\"]\"),void 0!==this.resno&&(e+=this.resno),this.inscode&&(e+=\"^\"+this.inscode),this.chain&&(e+=\":\"+this.chainname),e+=\"/\"+this.modelIndex,e}clone(){return new wc(this.structure,this.index)}toObject(){return{index:this.index,chainIndex:this.chainIndex,atomOffset:this.atomOffset,atomCount:this.atomCount,resno:this.resno,resname:this.resname,sstruc:this.sstruc}}}class Ac{constructor(t,e,i){this.structure=t,this.residueIndexStart=e,this.residueIndexEnd=i,this.chainStore=t.chainStore,this.residueStore=t.residueStore,this.atomStore=t.atomStore,this.residueCount=i-e+1;const r=this.structure.getResidueProxy(this.residueIndexStart),s=this.structure.getResidueProxy(this.residueIndexEnd);this.isPrevConnected=void 0!==r.getPreviousConnectedResidue();const n=s.getNextConnectedResidue();this.isNextConnected=void 0!==n,this.isNextNextConnected=void 0!==n&&void 0!==n.getNextConnectedResidue(),this.isCyclic=s.connectedTo(r),this.__residueProxy=this.structure.getResidueProxy()}get chainIndex(){return this.residueStore.chainIndex[this.residueIndexStart]}get modelIndex(){return this.chainStore.modelIndex[this.chainIndex]}get chainname(){return this.chainStore.getChainname(this.chainIndex)}isProtein(){return this.__residueProxy.index=this.residueIndexStart,this.__residueProxy.isProtein()}isCg(){return this.__residueProxy.index=this.residueIndexStart,this.__residueProxy.isCg()}isNucleic(){return this.__residueProxy.index=this.residueIndexStart,this.__residueProxy.isNucleic()}getMoleculeType(){return this.__residueProxy.index=this.residueIndexStart,this.__residueProxy.moleculeType}getBackboneType(t){return this.__residueProxy.index=this.residueIndexStart,this.__residueProxy.getBackboneType(t)}getAtomIndexByType(t,e){this.isCyclic?-1===t?t=this.residueCount-1:t===this.residueCount&&(t=0):(-1!==t||this.isPrevConnected||(t+=1),t!==this.residueCount||this.isNextNextConnected||(t-=1));const i=this.__residueProxy;let r;switch(i.index=this.residueIndexStart+t,e){case\"trace\":r=i.traceAtomIndex;break;case\"direction1\":r=i.direction1AtomIndex;break;case\"direction2\":r=i.direction2AtomIndex;break;default:r=i.getAtomIndexByName(e)}return r}eachAtom(t,e){this.eachResidue((function(i){i.eachAtom(t,e)}))}eachAtomN(t,e,i){const r=this.residueCount,s=new Array(t);for(let e=0;e1&&t(new Ac(n,i,l.index)),i=r)):(o!==Ns&&l.index-i>1&&t(new Ac(n,i,l.index)),i=r)}r-i>1&&this.structure.getResidueProxy(i).backboneEndType&&t(new Ac(n,i,r))}qualifiedName(){return\":\"+this.chainname+\"/\"+this.modelIndex}clone(){return new _c(this.structure,this.index)}toObject(){return{index:this.index,residueOffset:this.residueOffset,residueCount:this.residueCount,chainname:this.chainname}}}class Sc{constructor(t,e=0){this.structure=t,this.index=e,this.modelStore=t.modelStore,this.chainStore=t.chainStore,this.residueStore=t.residueStore}get chainOffset(){return this.modelStore.chainOffset[this.index]}set chainOffset(t){this.modelStore.chainOffset[this.index]=t}get chainCount(){return this.modelStore.chainCount[this.index]}set chainCount(t){this.modelStore.chainCount[this.index]=t}get residueOffset(){return this.chainStore.residueOffset[this.chainOffset]}get atomOffset(){return this.residueStore.atomOffset[this.residueOffset]}get chainEnd(){return this.chainOffset+this.chainCount-1}get residueEnd(){return this.chainStore.residueOffset[this.chainEnd]+this.chainStore.residueCount[this.chainEnd]-1}get atomEnd(){return this.residueStore.atomOffset[this.residueEnd]+this.residueStore.atomCount[this.residueEnd]-1}get residueCount(){return 0===this.chainCount?0:this.residueEnd-this.residueOffset+1}get atomCount(){return 0===this.residueCount?0:this.atomEnd-this.atomOffset+1}eachAtom(t,e){this.eachChain((function(i){i.eachAtom(t,e)}),e)}eachResidue(t,e){this.eachChain((function(i){i.eachResidue(t,e)}),e)}eachPolymer(t,e){if(e&&e.chainOnlyTest){const i=e.chainOnlyTest;this.eachChain((function(r){i(r)&&r.eachPolymer(t,e)}))}else this.eachChain((function(i){i.eachPolymer(t,e)}))}eachChain(t,e){const i=this.chainCount,r=this.chainOffset,s=this.structure._cp,n=r+i;if(e&&e.test){const i=e.chainOnlyTest;if(i)for(let e=r;e{const i=3*e;a.index=t,l&&a.positionToArray(l,i),h&&n.atomColorToArray(a,h,i),d&&(d.array[e]=t),u&&(u[e]=s.atomRadius(a)),m&&(m[e]=t)})),o}getBondData(t){const i=Object.assign({},t);i.colorParams&&(i.colorParams.structure=this.getStructure());const r=i.what,s=st(i.bondSet,this.bondSet),n=st(i.multipleBond,\"off\"),o=\"off\"!==n,a=\"offset\"===n,c=st(i.bondScale,.4),l=st(i.bondSpacing,1);let h,d;const u={},m=this.getBondProxy();i.bondStore&&(m.bondStore=i.bondStore);const p=this.getAtomProxy(),f=this.getAtomProxy();let g;if(o){const t=m.bondStore.bondOrder;g=0,s.forEach((function(e){g+=t[e]}))}else g=s.getSize();r&&!r.position||(u.position1=new Float32Array(3*g),u.position2=new Float32Array(3*g)),r&&!r.color||!i.colorParams||(u.color=new Float32Array(3*g),u.color2=new Float32Array(3*g),d=Fe.getScheme(i.colorParams)),r&&!r.picking||(u.picking=new Zn(new Float32Array(g),this.getStructure(),i.bondStore)),(!r||r.radius||o&&r.position)&&(h=new pa(i.radiusParams)),r&&!r.radius||(u.radius=new Float32Array(g),i.radius2&&(u.radius2=new Float32Array(g)));const{position1:y,position2:b,color:x,color2:v,picking:w,radius:A,radius2:_}=u;let S,C,P,I,k,M,T=0;const B=new e,D=new e,$=new e;return s.forEach((t=>{if(C=3*T,m.index=t,p.index=m.atomIndex1,f.index=m.atomIndex2,I=m.bondOrder,y)if(o&&I>1){const t=h.atomRadius(p);M=t*c/(.5*I),m.calculateShiftDir($),a?(k=2*l*t,$.multiplyScalar(k),$.negate(),D.subVectors(f,p).multiplyScalar(Math.max(.1,k/1.88)),p.positionToArray(y,C),f.positionToArray(b,C),I>=2&&(B.addVectors(p,$).add(D).toArray(y,C+3),B.addVectors(f,$).sub(D).toArray(b,C+3),I>=3&&(B.subVectors(p,$).add(D).toArray(y,C+6),B.subVectors(f,$).sub(D).toArray(b,C+6)))):(k=(l-c)*t,$.multiplyScalar(k),2===I?(B.addVectors(p,$).toArray(y,C),B.subVectors(p,$).toArray(y,C+3),B.addVectors(f,$).toArray(b,C),B.subVectors(f,$).toArray(b,C+3)):3===I?(p.positionToArray(y,C),B.addVectors(p,$).toArray(y,C+3),B.subVectors(p,$).toArray(y,C+6),f.positionToArray(b,C),B.addVectors(f,$).toArray(b,C+3),B.subVectors(f,$).toArray(b,C+6)):(p.positionToArray(y,C),f.positionToArray(b,C)))}else p.positionToArray(y,C),f.positionToArray(b,C);if(x&&v&&(d.bondColorToArray(m,1,x,C),d.bondColorToArray(m,0,v,C),o&&I>1))for(S=1;S1))for(S=1;S1))for(M=A[T]*c/(a?1:.5*I),S=a?1:0;S1))for(M=_[T]*c/(a?1:.5*I),S=a?1:0;S{const e=t.x,a=t.y,l=t.z;en&&(n=e),a>o&&(o=a),l>c&&(c=l)}),t),e.min.set(i,r,s),e.max.set(n,o,c),De&&Me.timeEnd(\"getBoundingBox\"),e}getPrincipalAxes(t){De&&Me.time(\"getPrincipalAxes\");let e=0;const i=new ho(3,this.atomCount),r=i.data;return this.eachAtom((t=>{r[e+0]=t.x,r[e+1]=t.y,r[e+2]=t.z,e+=3}),t),De&&Me.timeEnd(\"getPrincipalAxes\"),new ya(i)}atomCenter(t){return t?this.getBoundingBox(t).getCenter(new e):this.center.clone()}hasCoords(){if(void 0===this._hasCoords){const t=this.atomStore;this._hasCoords=0!==Di(t.x)||0!==Bi(t.x)||0!==Di(t.y)||0!==Bi(t.y)||0!==Di(t.z)||0!==Bi(t.z)||t.count/this.modelStore.count==1}return this._hasCoords}getSequence(t){const e=[],i=this.getResidueProxy();return this.eachAtom((function(t){i.index=t.residueIndex,t.index===i.traceAtomIndex&&e.push(i.getResname1())}),t),e}getAtomIndices(t){if(t&&t.string){const e=[];return this.eachAtom((function(t){e.push(t.index)}),t),new Uint32Array(e)}{const t={what:{index:!0}};return this.getAtomData(t).index}}getChainnameCount(t){const e=new Set;return this.eachChain((function(t){t.residueCount&&e.add(t.chainname)}),t),e.size}updatePosition(t,e=!0){let i=0;this.eachAtom((function(e){e.positionFromArray(t,i),i+=3}),void 0),this._hasCoords=void 0,e&&this.refreshPosition()}refreshPosition(){this.getBoundingBox(void 0,this.boundingBox),this.boundingBox.getCenter(this.center),this.spatialHash=new Ts(this.atomStore,this.boundingBox),this.signals.refreshed.dispatch(this)}dispose(){this.frames&&(this.frames.length=0),this.boxes&&(this.boxes.length=0),this.bondStore.dispose(),this.backboneBondStore.dispose(),this.rungBondStore.dispose(),this.atomStore.dispose(),this.residueStore.dispose(),this.chainStore.dispose(),this.modelStore.dispose(),delete this.bondSet,delete this.atomSet}}const Pc=new a,Ic=[_s,xs,Ss,As,Cs,vs,bs,ws,Is,Ps,ks,Ms],kc={aspectRatio:1.5,sphereDetail:2,radialSegments:50,disableImpostor:!1,openEnded:!1,dashedCylinder:!1,labelParams:{},pointSize:2,sizeAttenuation:!1,useTexture:!0,linewidth:2};class Mc{constructor(t=\"shape\",e={}){this.boundingBox=new a,this.bufferList=[],this.meshCount=0,this._primitiveData={},this.name=t,this.parameters=nt(e,kc),Ic.forEach((t=>{Object.keys(t.fields).forEach((e=>{this._primitiveData[t.getShapeKey(e)]=[]})),this._primitiveData[t.getShapeKey(\"name\")]=[]}))}addBuffer(t){this.bufferList.push(t);const e=t.geometry;return e.boundingBox||e.computeBoundingBox(),this.boundingBox.union(e.boundingBox),this}addMesh(t,e,i,r,s){let n;t=Ct(t),e=Ct(e),Array.isArray(i)&&(i=xt(i,t.length)),r&&(r=Ct(r)),n=void 0===r||0==r.length?{position:t,color:e,index:i}:{position:t,color:e,index:i,normal:r};const o=new io(this,Object.assign({serial:this.meshCount,name:s},n)),a=new Uo(Object.assign({picking:o},n));return this.bufferList.push(a),Pc.setFromArray(t),this.boundingBox.union(Pc),this.meshCount+=1,this}addSphere(t,e,i,r){return bs.objectToShape(this,{position:t,color:e,radius:i,name:r}),this}addEllipsoid(t,e,i,r,s,n){return Cs.objectToShape(this,{position:t,color:e,radius:i,majorAxis:r,minorAxis:s,name:n}),this}addTorus(t,e,i,r,s,n){return Ps.objectToShape(this,{position:t,color:e,radius:i,majorAxis:r,minorAxis:s,name:n}),this}addCylinder(t,e,i,r,s){return As.objectToShape(this,{position1:t,position2:e,color:i,radius:r,name:s}),this}addCone(t,e,i,r,s){return Ss.objectToShape(this,{position1:t,position2:e,color:i,radius:r,name:s}),this}addArrow(t,e,i,r,s){return _s.objectToShape(this,{position1:t,position2:e,color:i,radius:r,name:s}),this}addBox(t,e,i,r,s,n){return xs.objectToShape(this,{position:t,color:e,size:i,heightAxis:r,depthAxis:s,name:n}),this}addOctahedron(t,e,i,r,s,n){return vs.objectToShape(this,{position:t,color:e,size:i,heightAxis:r,depthAxis:s,name:n}),this}addTetrahedron(t,e,i,r,s,n){return ws.objectToShape(this,{position:t,color:e,size:i,heightAxis:r,depthAxis:s,name:n}),this}addText(t,e,i,r){return Is.objectToShape(this,{position:t,color:e,size:i,text:r}),this}addPoint(t,e,i){return ks.objectToShape(this,{position:t,color:e,name:i}),this}addWideline(t,e,i,r,s){return this.parameters.linewidth=r,Ms.objectToShape(this,{position1:t,position2:e,color:i,name:s}),this}addLabel(t,e,i,r){return console.warn(\"Shape.addLabel is deprecated, use .addText instead\"),this.addText(t,e,i,r)}getBufferList(){const t=[];return Ic.forEach((e=>{this._primitiveData[e.getShapeKey(\"color\")].length&&t.push(e.bufferFromShape(this,this.parameters))})),this.bufferList.concat(t)}dispose(){this.bufferList.forEach((function(t){t.dispose()})),this.bufferList.length=0,Ic.forEach((t=>{Object.keys(t.fields).forEach((e=>{this._primitiveData[t.getShapeKey(e)].length=0})),this._primitiveData[t.getShapeKey(\"name\")].length=0}))}get center(){return this._center||(this._center=this.boundingBox.getCenter(new e)),this._center}get type(){return\"Shape\"}}class Tc extends zr{constructor(t,e,i){Array.isArray(t)||(t=[t]),super(t,e,i),this.type=\"buffer\",this.parameters=Object.assign({},this.parameters,{colorScheme:null,colorScale:null,colorValue:null,colorDomain:null,colorMode:null}),this.buffer=t,this.init(i)}init(t){super.init(t),this.build()}create(){this.bufferList.push.apply(this.bufferList,this.buffer)}attach(t){this.bufferList.forEach((t=>{this.viewer.add(t),t.setParameters(this.getBufferParams())})),this.setVisibility(this.visible),t()}}const Bc=new i,Dc=new O;class $c extends Uo{constructor(t,e={},i){super(function(t,e){const i=e.attributes.position.array,r=e.index?e.index.array:void 0,s=t.position.length/3,n=i.length/3,o=s*n,a=new Float32Array(3*o),c=new Float32Array(3*o),l=new Float32Array(3*o);let h;return r&&(h=xt(s*r.length,o)),{position:a,color:l,index:h,normal:c,primitiveId:t.primitiveId||Ii(s,n),picking:t.picking}}(t,i),e),this.updateNormals=!1;const r=i.attributes.position.array,s=i.attributes.normal.array,n=i.index?i.index.array:void 0;this.geoPosition=r,this.geoNormal=s,this.geoIndex=n,this.positionCount=t.position.length/3,this.geoPositionCount=r.length/3,this.transformedGeoPosition=new Float32Array(3*this.geoPositionCount),this.transformedGeoNormal=new Float32Array(3*this.geoPositionCount);const o=this.geometry.attributes;if(this.meshPosition=o.position.array,this.meshColor=o.color.array,this.meshNormal=o.normal.array,this.setAttributes(t),n){const t=this.geometry.getIndex();if(!t)return void Me.error(\"Index is null\");this.meshIndex=t.array,this.makeIndex()}}setAttributes(t={},e=!1){const i=this.geometry.attributes;let r,s,n,o,a,c,l,h,d;const u=this.updateNormals;t.position&&(r=t.position,n=this.geoPosition,l=this.meshPosition,a=this.transformedGeoPosition,i.position.needsUpdate=!0,(u||e)&&(o=this.geoNormal,d=this.meshNormal,c=this.transformedGeoNormal,i.normal.needsUpdate=!0)),t.color&&(s=t.color,h=this.meshColor,i.color.needsUpdate=!0);const m=this.positionCount,p=this.geoPositionCount;for(let t=0;t 0.0 ){\\ncameraPos = rayDirection * posT + rayOrigin;\\ninterior = true;\\nflag2 = true;\\n}\\n#else\\nif( calcDepth( cameraPos ) <= 0.0 ){\\ncameraPos = rayDirection * posT + rayOrigin;\\ninterior = true;\\n}\\n#endif\\ncameraNormal = normalize( cameraPos - cameraSpherePos );\\ncameraNormal *= float(!interior) * 2.0 - 1.0;\\nreturn !interior;\\n}\\nvoid main(void){\\nbool flag = Impostor( cameraPos, cameraNormal );\\n#ifdef NEAR_CLIP\\nif( calcClip( cameraPos ) > 0.0 )\\ndiscard;\\n#endif\\ngl_FragDepthEXT = calcDepth( cameraPos );\\nif( !flag ){\\n#ifdef NEAR_CLIP\\nif( flag2 ){\\ngl_FragDepthEXT = max( 0.0, calcDepth( vec3( - ( clipNear - 0.5 ) ) ) + ( 0.0000001 / vRadius ) );\\n}else if( gl_FragDepthEXT >= 0.0 ){\\ngl_FragDepthEXT = 0.0 + ( 0.0000001 / vRadius );\\n}\\n#else\\nif( gl_FragDepthEXT >= 0.0 ){\\ngl_FragDepthEXT = 0.0 + ( 0.0000001 / vRadius );\\n}\\n#endif\\n}\\nif (gl_FragDepthEXT < 0.0)\\ndiscard;\\nif (gl_FragDepthEXT > 1.0)\\ndiscard;\\n#ifdef PICKING\\nif( opacity < 0.3 )\\ndiscard;\\ngl_FragColor = vec4( vPickingColor, objectId );\\n#else\\nvec3 vNormal = cameraNormal;\\nvec3 vViewPosition = -cameraPos;\\nvec4 diffuseColor = vec4( diffuse, opacity );\\nReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\nvec3 totalEmissiveLight = emissive;\\n#include color_fragment\\n#include roughnessmap_fragment\\n#include metalnessmap_fragment\\n#include normal_fragment_begin\\n#include lights_physical_fragment\\n#include lights_fragment_begin\\n#include lights_fragment_end\\nvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveLight;\\nif( interior ){\\n#ifdef USE_INTERIOR_COLOR\\noutgoingLight.xyz = interiorColor;\\n#else\\n#ifdef DIFFUSE_INTERIOR\\noutgoingLight.xyz = vColor;\\n#endif\\n#endif\\noutgoingLight.xyz *= 1.0 - interiorDarkening;\\n}\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n#include premultiplied_alpha_fragment\\n#include tonemapping_fragment\\n#include encodings_fragment\\n#include fog_fragment\\n#endif\\n}\");class Fc extends Go{constructor(t,e,i={}){super(e,i),this.index=xt(this.indexSize,this.attributeSize),this.makeIndex(),this.initIndex(this.index),this.addAttributes({mapping:{type:t,value:null}}),this.setAttributes({primitiveId:Pi(this.size)})}get attributeSize(){return this.size*this.mappingSize}get indexSize(){return this.size*this.mappingIndicesSize}addAttributes(t){const e={};for(const i in t){const r=t[i];e[i]={type:r.type,value:null}}super.addAttributes(e)}getAttributeIndex(t){return 3*t*this.mappingSize}setAttributes(t){t&&!t.position&&t.position1&&t.position2&&(t.position=Ai(t.position1,t.position2));const e=this.size,i=this.mappingSize,r=this.geometry.attributes;let s,n,o,a,c,l,h;for(const d in t)if(\"index\"!==d&&\"picking\"!==d){n=t[d],s=r[d],o=s.itemSize,a=s.array;for(let t=0;t0&&this.parameters.alphaTest<=1&&(e.ALPHATEST=this.parameters.alphaTest.toPrecision(2)),e}setUniforms(t){t&&void 0!==t.edgeBleach&&(this.makeTexture(),t.map=this.tex),super.setUniforms(t)}dispose(){super.dispose(),this.tex&&this.tex.dispose()}}je.add(\"point\",Wc);class qc extends zr{constructor(t,e,i){super(t,e,i),this.type=\"dot\",this.parameters=Object.assign({thresholdType:{type:\"select\",rebuild:!0,options:{value:\"value\",sigma:\"sigma\"}},thresholdMin:{type:\"number\",precision:3,max:1/0,min:-1/0,rebuild:!0},thresholdMax:{type:\"number\",precision:3,max:1/0,min:-1/0,rebuild:!0},thresholdOut:{type:\"boolean\",rebuild:!0},dotType:{type:\"select\",rebuild:!0,options:{\"\":\"\",sphere:\"sphere\",point:\"point\"}},radiusType:{type:\"select\",options:{\"\":\"\",value:\"value\",\"abs-value\":\"abs-value\",\"value-min\":\"value-min\",deviation:\"deviation\",size:\"size\"}},radius:{type:\"number\",precision:3,max:10,min:.001,property:\"size\"},scale:{type:\"number\",precision:3,max:10,min:.001},sphereDetail:!0,disableImpostor:!0,pointSize:{type:\"number\",precision:1,max:100,min:0,buffer:!0},sizeAttenuation:{type:\"boolean\",buffer:!0},sortParticles:{type:\"boolean\",rebuild:!0},useTexture:{type:\"boolean\",buffer:!0},alphaTest:{type:\"range\",step:.001,max:1,min:0,buffer:!0},forceTransparent:{type:\"boolean\",buffer:!0},edgeBleach:{type:\"range\",step:.001,max:1,min:0,buffer:!0}},this.parameters,{colorScheme:{type:\"select\",update:\"color\",options:{\"\":\"\",value:\"value\",uniform:\"uniform\",random:\"random\"}}}),t instanceof Eo?(this.surface=void 0,this.volume=new ba(t)):(this.surface=t,this.volume=void 0),this.init(i)}init(t){var e=t||{};e.colorScheme=st(e.colorScheme,\"uniform\"),e.colorValue=st(e.colorValue,14540253),this.thresholdType=st(e.thresholdType,\"sigma\"),this.thresholdMin=st(e.thresholdMin,2),this.thresholdMax=st(e.thresholdMax,1/0),this.thresholdOut=st(e.thresholdOut,!1),this.dotType=st(e.dotType,\"point\"),this.radius=st(e.radius,.1),this.scale=st(e.scale,1),this.pointSize=st(e.pointSize,1),this.sizeAttenuation=st(e.sizeAttenuation,!0),this.sortParticles=st(e.sortParticles,!1),this.useTexture=st(e.useTexture,!1),this.alphaTest=st(e.alphaTest,.5),this.forceTransparent=st(e.forceTransparent,!1),this.edgeBleach=st(e.edgeBleach,0),super.init(e),this.build()}attach(t){this.bufferList.forEach((t=>{this.viewer.add(t)})),this.setVisibility(this.visible),t()}create(){var t={};if(this.volume){var e,i,r=this.volume;\"sigma\"===this.thresholdType?(e=r.getValueForSigma(this.thresholdMin),i=r.getValueForSigma(this.thresholdMax)):(e=this.thresholdMin,i=this.thresholdMax),r.setFilter(e,i,this.thresholdOut),Object.assign(t,{position:r.getDataPosition(),color:r.getDataColor(this.getColorParams())}),\"sphere\"===this.dotType&&Object.assign(t,{radius:r.getDataSize(this.radius,this.scale),picking:r.getDataPicking()})}else{var s=this.surface;Object.assign(t,{position:s.getPosition(),color:s.getColor(this.getColorParams())}),\"sphere\"===this.dotType&&Object.assign(t,{radius:s.getSize(this.radius,this.scale),picking:s.getPicking()})}\"sphere\"===this.dotType?this.dotBuffer=new Gc(t,this.getBufferParams({sphereDetail:this.sphereDetail,disableImpostor:this.disableImpostor,dullInterior:!1})):this.dotBuffer=new Wc(t,this.getBufferParams({pointSize:this.pointSize,sizeAttenuation:this.sizeAttenuation,sortParticles:this.sortParticles,useTexture:this.useTexture,alphaTest:this.alphaTest,forceTransparent:this.forceTransparent,edgeBleach:this.edgeBleach})),this.bufferList.push(this.dotBuffer)}update(t={}){if(0===this.bufferList.length)return;const e={};t.color&&(this.volume?Object.assign(e,{color:this.volume.getDataColor(this.getColorParams())}):Object.assign(e,{color:this.surface.getColor(this.getColorParams())})),\"sphere\"===this.dotType&&(t.radius||t.scale)&&(this.volume?Object.assign(e,{radius:this.volume.getDataSize(this.radius,this.scale)}):Object.assign(e,{radius:this.surface.getSize(this.radius,this.scale)})),this.dotBuffer.setAttributes(e)}setParameters(t,e={},i){return t&&void 0!==t.thresholdType&&this.volume instanceof Eo&&(\"value\"===this.thresholdType&&\"sigma\"===t.thresholdType?(this.thresholdMin=this.volume.getSigmaForValue(this.thresholdMin),this.thresholdMax=this.volume.getSigmaForValue(this.thresholdMax)):\"sigma\"===this.thresholdType&&\"value\"===t.thresholdType&&(this.thresholdMin=this.volume.getValueForSigma(this.thresholdMin),this.thresholdMax=this.volume.getValueForSigma(this.thresholdMax)),this.thresholdType=t.thresholdType),t&&void 0!==t.radiusType&&(\"radius\"===t.radiusType?this.radius=.1:this.radius=parseFloat(t.radiusType),e.radius=!0,\"sphere\"!==this.dotType||Ie&&!this.disableImpostor||(i=!0)),t&&void 0!==t.radius&&(e.radius=!0,\"sphere\"!==this.dotType||Ie&&!this.disableImpostor||(i=!0)),t&&void 0!==t.scale&&(e.scale=!0,\"sphere\"!==this.dotType||Ie&&!this.disableImpostor||(i=!0)),super.setParameters(t,e,i),this}}Ve.add(\"shader/Image.vert\",\"uniform float clipRadius;\\nuniform vec3 clipCenter;\\nvarying vec2 vUv;\\n#if defined( NEAR_CLIP ) || defined( RADIUS_CLIP ) || !defined( PICKING )\\nvarying vec3 vViewPosition;\\n#endif\\n#if defined( RADIUS_CLIP )\\nvarying vec3 vClipCenter;\\n#endif\\nvoid main() {\\n#include begin_vertex\\n#include project_vertex\\nvUv = uv;\\n#if defined( NEAR_CLIP ) || defined( RADIUS_CLIP ) || !defined( PICKING )\\nvViewPosition = -mvPosition.xyz;\\n#endif\\n#if defined( RADIUS_CLIP )\\nvClipCenter = -( modelViewMatrix * vec4( clipCenter, 1.0 ) ).xyz;\\n#endif\\n}\"),Ve.add(\"shader/Image.frag\",\"uniform sampler2D map;\\nuniform float opacity;\\nuniform vec2 mapSize;\\nuniform float clipNear;\\nuniform float clipRadius;\\nvarying vec2 vUv;\\n#if defined( NEAR_CLIP ) || defined( RADIUS_CLIP ) || !defined( PICKING )\\nvarying vec3 vViewPosition;\\n#endif\\n#if defined( RADIUS_CLIP )\\nvarying vec3 vClipCenter;\\n#endif\\n#if defined( PICKING )\\nuniform sampler2D pickingMap;\\nuniform float objectId;\\n#else\\n#include fog_pars_fragment\\n#endif\\n#if defined( CUBIC_INTERPOLATION )\\n#if defined( CATMULROM_FILTER ) || defined( MITCHELL_FILTER )\\n#if defined( CATMULROM_FILTER )\\nconst float B = 0.0;\\nconst float C = 0.5;\\n#elif defined( MITCHELL_FILTER )\\nconst float B = 0.333;\\nconst float C = 0.333;\\n#endif\\nfloat filter( float x ){\\nfloat f = x;\\nif( f < 0.0 ){\\nf = -f;\\n}\\nif( f < 1.0 ){\\nreturn ( ( 12.0 - 9.0 * B - 6.0 * C ) * ( f * f * f ) +\\n( -18.0 + 12.0 * B + 6.0 *C ) * ( f * f ) +\\n( 6.0 - 2.0 * B ) ) / 6.0;\\n}else if( f >= 1.0 && f < 2.0 ){\\nreturn ( ( -B - 6.0 * C ) * ( f * f * f )\\n+ ( 6.0 * B + 30.0 * C ) * ( f *f ) +\\n( - ( 12.0 * B ) - 48.0 * C ) * f +\\n8.0 * B + 24.0 * C ) / 6.0;\\n}else{\\nreturn 0.0;\\n}\\n}\\n#elif defined( BSPLINE_FILTER )\\nfloat filter( float x ){\\nfloat f = x;\\nif( f < 0.0 ){\\nf = -f;\\n}\\nif( f >= 0.0 && f <= 1.0 ){\\nreturn ( 2.0 / 3.0 ) + ( 0.5 ) * ( f * f * f ) - ( f * f );\\n}else if( f > 1.0 && f <= 2.0 ){\\nreturn 1.0 / 6.0 * pow( ( 2.0 - f ), 3.0 );\\n}\\nreturn 1.0;\\n}\\n#else\\nfloat filter( float x ){\\nreturn 1.0;\\n}\\n#endif\\nvec4 biCubic( sampler2D tex, vec2 texCoord ){\\nvec2 texelSize = 1.0 / mapSize;\\ntexCoord -= texelSize / 2.0;\\nvec4 nSum = vec4( 0.0 );\\nfloat nDenom = 0.0;\\nvec2 cell = fract( texCoord * mapSize );\\nfor( float m = -1.0; m <= 2.0; ++m ){\\nfor( float n = -1.0; n <= 2.0; ++n ){\\nvec4 vecData = texture2D(\\ntex, texCoord + texelSize * vec2( m, n )\\n);\\nfloat c = filter( m - cell.x ) * filter( -n + cell.y );\\nnSum += vecData * c;\\nnDenom += c;\\n}\\n}\\nreturn nSum / nDenom;\\n}\\n#endif\\nvoid main(){\\n#include nearclip_fragment\\n#include radiusclip_fragment\\n#if defined( CUBIC_INTERPOLATION )\\ngl_FragColor = biCubic( map, vUv );\\n#else\\ngl_FragColor = texture2D( map, vUv );\\n#endif\\n#if defined( PICKING )\\nif( gl_FragColor.a < 0.3 )\\ndiscard;\\ngl_FragColor = vec4( texture2D( pickingMap, vUv ).xyz, objectId );\\n#else\\nif( gl_FragColor.a < 0.01 )\\ndiscard;\\ngl_FragColor.a *= opacity;\\n#include fog_fragment\\n#endif\\n}\");const Xc=new Uint16Array([0,1,2,1,3,2]),Yc=new Float32Array([0,1,0,0,1,1,1,0]),Kc=Object.assign({filter:\"nearest\",forceTransparent:!0},zo),Zc=Object.assign({filter:{updateShader:!0,uniform:!0}},Vo);class Qc extends Go{constructor(e,i){super({position:e.position,index:Xc,picking:e.picking},i),this.parameterTypes=Zc,this.alwaysTransparent=!0,this.hasWireframe=!1,this.vertexShader=\"Image.vert\",this.fragmentShader=\"Image.frag\";const{imageData:r,width:s,height:n}=e,o=new G(r,s,n);o.flipY=!0,this.tex=o;const a=r.length,c=new Uint8Array(a);for(let t=0;t>16&255,c[t+1]=e>>8&255,c[t+2]=255&e}const l=new G(c,s,n);l.flipY=!0,l.minFilter=x,l.magFilter=x,this.pickingTex=l,this.addUniforms({map:{value:o},pickingMap:{value:l},mapSize:{value:new t(s,n)}}),this.geometry.setAttribute(\"uv\",new M(Yc,2))}get defaultParameters(){return Kc}getDefines(t){const e=super.getDefines(t),i=this.parameters.filter;return i.startsWith(\"cubic\")&&(e.CUBIC_INTERPOLATION=1,i.endsWith(\"bspline\")?e.BSPLINE_FILTER=1:i.endsWith(\"catmulrom\")?e.CATMULROM_FILTER=1:i.endsWith(\"mitchell\")&&(e.MITCHELL_FILTER=1)),e}updateTexture(){const t=this.tex,e=this.parameters.filter;e.startsWith(\"cubic\")?(t.minFilter=x,t.magFilter=x):\"linear\"===e?(t.minFilter=A,t.magFilter=A):(t.minFilter=x,t.magFilter=x),t.needsUpdate=!0,this.pickingTex.needsUpdate=!0}makeMaterial(){super.makeMaterial(),this.updateTexture();const t=this.material;t.uniforms.map.value=this.tex,t.blending=U,t.needsUpdate=!0;const e=this.wireframeMaterial;e.uniforms.map.value=this.tex,e.blending=U,e.needsUpdate=!0;const i=this.pickingMaterial;i.uniforms.map.value=this.tex,i.uniforms.pickingMap.value=this.pickingTex,i.blending=U,i.needsUpdate=!0}setUniforms(t){t&&void 0!==t.filter&&(this.updateTexture(),t.map=this.tex),super.setUniforms(t)}}class Jc{constructor(t,e){const i=e||{};this.dimension=st(i.dimension,\"x\"),this.positionType=st(i.positionType,\"percent\"),this.position=st(i.position,30),this.thresholdType=st(i.thresholdType,\"sigma\"),this.thresholdMin=st(i.thresholdMin,-1/0),this.thresholdMax=st(i.thresholdMax,1/0),this.normalize=st(i.normalize,!1),this.volume=t}getPositionFromCoordinate(t){const i=this.dimension,r=this.volume,s=r.matrix,n=(new e).setFromMatrixPosition(s)[i],o=(new e).setFromMatrixScale(s)[i];let a;return a=\"x\"===i?r.nx:\"y\"===i?r.ny:r.nz,Math.round(((t-n)/(a/100)+1)/o)}getData(t){t=t||{};const i=this.volume,r=i.data,s=i.matrix;let n;function o(t){return Math.round(t/100*(n-1))}function a(t,e,r,s){return 3*(r*i.ny*i.nx+e*i.nx+t)+s}n=\"coordinate\"===this.positionType?this.getPositionFromCoordinate(this.position):this.position;const c=new Float32Array(12),l=new e;let h,d,u,m,p,f=0,g=0,y=0,b=i.nx,x=i.ny,v=i.nz;function w(t,e,i,r){l.set(t,e,i).applyMatrix4(s).toArray(c,r)}\"x\"===this.dimension?(u=o(i.nx),m=i.ny-1,p=i.nz-1,h=i.nz,d=i.ny,f=u,b=f+1,w(u,0,0,0),w(u,m,0,3),w(u,0,p,6),w(u,m,p,9)):\"y\"===this.dimension?(u=i.nx-1,m=o(i.ny),p=i.nz-1,h=i.nz,d=i.nx,g=m,x=g+1,w(0,m,0,0),w(u,m,0,3),w(0,m,p,6),w(u,m,p,9)):\"z\"===this.dimension&&(u=i.nx-1,m=i.ny-1,p=o(i.nz),h=i.nx,d=i.ny,y=p,v=y+1,w(0,0,p,0),w(0,m,p,3),w(u,0,p,6),w(u,m,p,9));let A=0,_=0;const S=new Uint8Array(h*d*4),C=new Float32Array(h*d);let P,I;\"sigma\"===this.thresholdType?(P=i.getValueForSigma(this.thresholdMin),I=i.getValueForSigma(this.thresholdMax)):(P=this.thresholdMin,I=this.thresholdMax);const k=Object.assign({},t.colorParams,{volume:i});this.normalize&&(k.domain=[0,1]);const M=Fe.getScheme(k),T=new Float32Array(3),B=M.getScale();let D,$=0,O=0;if(this.normalize){$=1/0,D=-1/0;for(let t=g;tD&&(D=s)}O=D-$}for(let t=g;tP&&n{this.viewer.add(t)})),this.setVisibility(this.visible),t()}create(){const t=new Jc(this.volume,{positionType:this.positionType,position:this.position,dimension:this.dimension,thresholdType:this.thresholdType,thresholdMin:this.thresholdMin,thresholdMax:this.thresholdMax,normalize:this.normalize}),e=new Qc(t.getData({colorParams:this.getColorParams()}),this.getBufferParams({filter:this.filter}));this.bufferList.push(e)}}function el(t){Me.error(`makeRepresentation: representation type ${t} unknown`)}const il={name:\"some element\",status:\"\"};class rl{constructor(t,e={}){this.stage=t,this.signals={statusChanged:new et,nameChanged:new et,disposed:new et},this.parameters=nt(e,this.defaultParameters),this.uuid=Bt()}get defaultParameters(){return il}get name(){return this.parameters.name}setStatus(t){return this.parameters.status=t,this.signals.statusChanged.dispatch(t),this}setName(t){return this.parameters.name=t,this.signals.nameChanged.dispatch(t),this}dispose(){this.signals.disposed.dispatch()}}const sl=Object.assign({visible:!0},il);class nl extends rl{constructor(t,e,i={},r){super(t,Object.assign({name:e.type},i)),this.parent=r,this.signals=Object.assign({visibilityChanged:new et,parametersChanged:new et},this.signals),this.setRepresentation(e)}get defaultParameters(){return sl}get visible(){return this.parameters.visible}get type(){return\"representation\"}getType(){return this.repr.type}setRepresentation(t){this._disposeRepresentation(),this.repr=t,this.stage.tasks.listen(this.repr.tasks),this.updateVisibility()}_disposeRepresentation(){this.repr&&(this.stage.tasks.unlisten(this.repr.tasks),this.repr.dispose())}dispose(){this.parent&&this.parent.hasRepresentation(this)?this.parent.removeRepresentation(this):(this._disposeRepresentation(),this.signals.disposed.dispatch())}setVisibility(t){return this.parameters.visible=t,this.updateVisibility(),this.signals.visibilityChanged.dispatch(this.parameters.visible),this}getVisibility(){return this.parent?this.parent.parameters.visible&&this.parameters.visible:this.parameters.visible}toggleVisibility(){return this.setVisibility(!this.parameters.visible)}updateVisibility(){this.repr.setVisibility(this.getVisibility())}update(t){return this.repr.update(t),this}build(t){return this.repr.build(t),this}setSelection(t){const e=this.repr;return e.setSelection&&e.setSelection(t),this}setParameters(t){return this.repr.setParameters(t),this.signals.parametersChanged.dispatch(this.repr.getParameters()),this}getParameters(){return this.repr.getParameters()}setColor(t){return this.repr.setColor(t),this}}const ol=new i,al=new e,cl={name:\"\",status:\"\",visible:!0};class ll{constructor(t,s,n={}){this.stage=t,this.object=s,this.signals={representationAdded:new et,representationRemoved:new et,visibilityChanged:new et,matrixChanged:new et,statusChanged:new et,nameChanged:new et,disposed:new et},this.reprList=[],this.annotationList=[],this.matrix=new i,this.position=new e,this.quaternion=new r,this.scale=new e(1,1,1),this.transform=new i,this.parameters=nt(n,this.defaultParameters),this.uuid=Bt(),this.viewer=t.viewer,this.controls=new ua(this)}get defaultParameters(){return cl}get name(){return this.parameters.name}get status(){return this.parameters.status}get visible(){return this.parameters.visible}setPosition(t){return Array.isArray(t)?this.position.fromArray(t):this.position.copy(t),this.updateMatrix(),this}setRotation(t){if(Array.isArray(t))if(3===t.length){const e=(new j).fromArray(t);this.quaternion.setFromEuler(e)}else this.quaternion.fromArray(t);else t instanceof j?this.quaternion.setFromEuler(t):this.quaternion.copy(t);return this.updateMatrix(),this}setScale(t){return this.scale.set(t,t,t),this.updateMatrix(),this}setTransform(t){return this.transform.copy(t),this.updateMatrix(),this}updateMatrix(){const t=this.getCenterUntransformed(al);this.matrix.makeTranslation(-t.x,-t.y,-t.z),ol.makeRotationFromQuaternion(this.quaternion),this.matrix.premultiply(ol),ol.makeScale(this.scale.x,this.scale.y,this.scale.z),this.matrix.premultiply(ol);const e=this.position;ol.makeTranslation(e.x+t.x,e.y+t.y,e.z+t.z),this.matrix.premultiply(ol),this.matrix.premultiply(this.transform),this.updateRepresentationMatrices(),this.stage.viewer.updateBoundingBox(),this.signals.matrixChanged.dispatch(this.matrix)}updateRepresentationMatrices(){this.reprList.forEach((t=>{t.setParameters({matrix:this.matrix})}))}addAnnotation(t,e,i){const r=new ca(this,t,e,i);return this.annotationList.push(r),r}eachAnnotation(t){this.annotationList.slice().forEach(t)}removeAnnotation(t){const e=this.annotationList.indexOf(t);-1!==e&&(this.annotationList.splice(e,1),t.dispose())}removeAllAnnotations(){this.eachAnnotation((t=>t.dispose())),this.annotationList.length=0}_addRepresentation(t,e,i,r=!1){const s=i||{},n=this.stage.getParameters();s.matrix=this.matrix.clone(),s.quality=s.quality||n.quality,s.disableImpostor=st(s.disableImpostor,!n.impostor),s.useWorker=st(s.useWorker,n.workerDefault),s.visible=st(s.visible,!0);const o=Object.assign({},s,{visible:this.parameters.visible&&s.visible}),a=function(t,e,i,r){var s;if(De&&Me.time(\"makeRepresentation \"+t),e instanceof Cc){if(!(s=Ne.get(t)))return void el(t)}else if(e instanceof Oo)if(\"surface\"===t)s=Yo;else{if(\"dot\"!==t)return void el(t);s=qc}else if(e instanceof Eo)if(\"surface\"===t)s=Yo;else if(\"dot\"===t)s=qc;else{if(\"slice\"!==t)return void el(t);s=tl}else if(e instanceof Mc)s=Tc,e=e.getBufferList();else{if(\"buffer\"!==t)return void Me.error(\"makeRepresentation: object \"+e+\" unknown\");s=Tc}const n=new s(e,i,r);return De&&Me.timeEnd(\"makeRepresentation \"+t),n}(t,e,this.viewer,o),c=new nl(this.stage,a,s,this);return r||(this.reprList.push(c),this.signals.representationAdded.dispatch(c)),c}addBufferRepresentation(t,e){return this._addRepresentation.call(this,\"buffer\",t,e)}hasRepresentation(t){return-1!==this.reprList.indexOf(t)}eachRepresentation(t){this.reprList.slice().forEach(t)}removeRepresentation(t){const e=this.reprList.indexOf(t);-1!==e&&(this.reprList.splice(e,1),t.dispose(),this.signals.representationRemoved.dispatch(t))}updateRepresentations(t){this.reprList.forEach((e=>e.update(t))),this.stage.viewer.requestRender()}removeAllRepresentations(){this.eachRepresentation((t=>t.dispose()))}dispose(){this.removeAllAnnotations(),this.removeAllRepresentations(),this.reprList.length=0,this.signals.disposed.dispatch()}setVisibility(t){return this.parameters.visible=t,this.eachRepresentation((t=>t.updateVisibility())),this.eachAnnotation((t=>t.updateVisibility())),this.signals.visibilityChanged.dispatch(t),this}setStatus(t){return this.parameters.status=t,this.signals.statusChanged.dispatch(t),this}setName(t){return this.parameters.name=t,this.signals.nameChanged.dispatch(t),this}getBox(...t){return this.getBoxUntransformed(...t).clone().applyMatrix4(this.matrix)}getCenter(...t){return this.getCenterUntransformed(...t).clone().applyMatrix4(this.matrix)}getZoom(...t){return this.stage.getZoomForBox(this.getBox(...t))}getBoxUntransformed(...t){return new a}getCenterUntransformed(...t){return this.getBoxUntransformed().getCenter(new e)}autoView(t){this.stage.animationControls.zoomMove(this.getCenter(),this.getZoom(),st(t,0))}}class hl{constructor(t=[]){this.list=t;const e=t.length;for(let i=0;i0?this.list[0]:void 0}forEach(t){return this.list.forEach(t),this}dispose(){return this.forEach((t=>t.dispose()))}}class dl extends hl{setParameters(t){return this.forEach((e=>e.setParameters(t)))}setVisibility(t){return this.forEach((e=>e.setVisibility(t)))}setSelection(t){return this.forEach((e=>e.setSelection(t)))}setColor(t){return this.forEach((e=>e.setColor(t)))}update(t){return this.forEach((e=>e.update(t)))}build(t){return this.forEach((e=>e.build(t)))}dispose(t){return this.forEach((t=>t.dispose()))}}const ul=Object.assign({defaultStep:1,defaultTimeout:50,defaultInterpolateType:\"\",defaultInterpolateStep:5,defaultMode:\"loop\",defaultDirection:\"forward\",initialFrame:0},il);class ml extends rl{constructor(t,e,i={}){super(t,Object.assign({name:e.name},i)),this.trajectory=e,this.signals=Object.assign(this.signals,{frameChanged:new et,playerChanged:new et,countChanged:new et,parametersChanged:new et}),e.signals.frameChanged.add((t=>{this.signals.frameChanged.dispatch(t)})),e.signals.playerChanged.add((t=>{this.signals.playerChanged.dispatch(t)})),e.signals.countChanged.add((t=>{this.signals.countChanged.dispatch(t)})),void 0!==i.initialFrame&&this.setFrame(i.initialFrame)}get defaultParameters(){return ul}get type(){return\"trajectory\"}setFrame(t){this.trajectory.setFrame(t)}setParameters(t={}){this.trajectory.setParameters(t),this.signals.parametersChanged.dispatch(t)}dispose(){this.trajectory.dispose(),super.dispose()}}class pl{constructor(t,e){this.name=t,this.path=e,this.coordinates=[],this.boxes=[],this.times=[],this.timeOffset=0,this.deltaTime=1}get type(){return\"Frames\"}}class fl{constructor(t,e){let r,s;if(this.A=new ho(3,3),this.W=new ho(1,3),this.U=new ho(3,3),this.V=new ho(3,3),this.VH=new ho(3,3),this.R=new ho(3,3),this.tmp=new ho(3,3),this.c=new ho(3,3),t instanceof Cc)r=t.atomCount;else{if(!(t instanceof Float32Array))return;r=t.length/3}if(e instanceof Cc)s=e.atomCount;else{if(!(e instanceof Float32Array))return;s=e.length/3}const n=Math.min(r,s),o=new ho(3,n),a=new ho(3,n);this.coords1t=new ho(n,3),this.coords2t=new ho(n,3),this.transformationMatrix=new i,this.c.data.set([1,0,0,0,1,0,0,0,-1]),this.prepCoords(t,o,n,!1),this.prepCoords(e,a,n,!1),this._superpose(o,a)}_superpose(t,e){this.mean1=fo(t),this.mean2=fo(e),go(t,this.mean1),go(e,this.mean2),uo(this.coords1t,t),uo(this.coords2t,e),mo(this.A,this.coords2t,this.coords1t),wo(this.A,this.W,this.U,this.V),function(t,e){const i=t.data,r=e.data,s=i[4],n=i[8],o=i[5],a=i[7],c=i[0],l=c*s,h=c*o,d=i[3],u=i[1],m=d*u,p=i[2],f=d*p,g=i[6],y=g*u,b=g*p,x=1/(l*n-h*a-m*n+f*a+y*o-b*s);r[0]=(s*n-o*a)*x,r[1]=-(u*n-p*a)*x,r[2]=-(-u*o+p*s)*x,r[3]=-(d*n-o*g)*x,r[4]=(c*n-b)*x,r[5]=-(h-f)*x,r[6]=-(-d*a+s*g)*x,r[7]=-(c*a-y)*x,r[8]=(l-m)*x}(this.V,this.VH),po(this.R,this.U,this.VH),function(t){const e=t.data;return e[0]*e[4]*e[8]-e[0]*e[5]*e[7]-e[3]*e[1]*e[8]+e[3]*e[2]*e[7]+e[6]*e[1]*e[5]-e[6]*e[2]*e[4]}(this.R)<0&&(De&&Me.log(\"R not a right handed system\"),po(this.tmp,this.c,this.VH),po(this.R,this.U,this.tmp));const i=new ho(4,4),r=new ho(4,4),s=new ho(4,4),n=new ho(4,4),o=new ho(4,4),a=new ho(4,4),c=this.R.data,l=this.mean1,h=this.mean2;n.data.set([1,0,0,-l[0],0,1,0,-l[1],0,0,1,-l[2],0,0,0,1]),o.data.set([c[0],c[1],c[2],0,c[3],c[4],c[5],0,c[6],c[7],c[8],0,0,0,0,1]),a.data.set([1,0,0,h[0],0,1,0,h[1],0,0,1,h[2],0,0,0,1]),uo(r,n),mo(i,o,r),uo(s,i),mo(r,a,s),uo(i,r),this.transformationMatrix.elements=i.data}prepCoords(t,e,i,r){let s=0;const n=e.data;let o=3,a=3*i;if(r&&(a=4*i,o=4),t instanceof Cc)t.eachAtom((function(t){s{t!==this&&this.pause()}),this);const i=st(t.frameCount,1);this.traj=t,this.parameters=nt(e,gl),this.parameters.end=Math.min(st(e.end,i-1),i-1),this.parameters.step=st(e.step,Math.ceil((i+1)/100)),this._currentFrame=this.parameters.start,this._direction=\"bounce\"===this.parameters.direction?\"forward\":this.parameters.direction,t.signals.countChanged.add((t=>{this.parameters.end=Math.min(st(this.parameters.end,t-1),t-1)}),this),this._animate=this._animate.bind(this)}get isRunning(){return this._run}setParameters(t={}){ot(this.parameters,t),void 0!==t.direction&&\"bounce\"!==this.parameters.direction&&(this._direction=this.parameters.direction)}_animate(){if(!this._run)return;this._currentTime=window.performance.now();const t=this._currentTime-this._previousTime,e=this.parameters.interpolateType?this.parameters.interpolateStep:1,i=this.parameters.timeout/e,r=this.traj;if(r&&r.frameCount&&!r.inProgress&&t>=i)if(this.parameters.interpolateType)if(this._currentStep>this.parameters.interpolateStep&&(this._currentStep=1),1===this._currentStep&&(this._currentFrame=this._nextInterpolated()),r.hasFrame(this._currentFrame)){this._currentStep+=1;const t=this._currentStep/(this.parameters.interpolateStep+1),[e,i,s,n]=this._currentFrame;r.setFrameInterpolated(e,i,s,n,t,this.parameters.interpolateType),this._previousTime=this._currentTime}else r.loadFrame(this._currentFrame);else{const t=this._next();r.hasFrame(t)?(r.setFrame(t),this._previousTime=this._currentTime):r.loadFrame(t)}window.requestAnimationFrame(this._animate)}_next(){const t=this.parameters;let e;return e=\"forward\"===this._direction?this.traj.currentFrame+t.step:this.traj.currentFrame-t.step,(e>t.end||e=t.end?i=t.start:\"backward\"===t.direction&&e<=t.start&&(i=t.end),this.traj.setFrame(i),this._run=!0,this._animate(),this.signals.startedRunning.dispatch()}}pause(){this._run=!1,this.signals.haltedRunning.dispatch()}stop(){this.pause(),this.traj.setFrame(this.parameters.start)}}class bl{constructor(t,e,i={}){this.signals={countChanged:new et,frameChanged:new et,playerChanged:new et},this.frameCache={},this.loadQueue={},this.boxCache={},this.pathCache={},this.frameCacheSize=0,this._frameCount=0,this._currentFrame=-1,this._disposed=!1,this.deltaTime=st(i.deltaTime,0),this.timeOffset=st(i.timeOffset,0),this.centerPbc=st(i.centerPbc,!1),this.removePbc=st(i.removePbc,!1),this.removePeriodicity=st(i.removePeriodicity,!1),this.superpose=st(i.superpose,!1),this.name=t.replace(/^.*[\\\\/]/,\"\"),this.trajPath=t,this.selection=new pe(st(i.sele,\"backbone and not hydrogen\")),this.selection.signals.stringChanged.add((()=>{this.selectionIndices=this.structure.getAtomIndices(this.selection),this._resetCache(),this._saveInitialCoords(),this.setFrame(this._currentFrame)}))}get frameCount(){return this._frameCount}get currentFrame(){return this._currentFrame}_init(t){this.setStructure(t),this._loadFrameCount(),this.setPlayer(new yl(this))}_loadFrameCount(){}setStructure(t){this.structure=t,this.atomCount=t.atomCount,this.backboneIndices=this._getIndices(new pe(\"backbone and not hydrogen\")),this._makeAtomIndices(),this._saveStructureCoords(),this.selectionIndices=this._getIndices(this.selection),this._resetCache(),this._saveInitialCoords(),this.setFrame(this._currentFrame)}_saveInitialCoords(){this.structure.hasCoords()?(this.initialCoords=new Float32Array(this.structureCoords),this._makeSuperposeCoords()):this.frameCache[0]?(this.initialCoords=new Float32Array(this.frameCache[0]),this._makeSuperposeCoords()):this.loadFrame(0,(()=>this._saveInitialCoords()))}_saveStructureCoords(){this.structureCoords=this.structure.getAtomData({what:{position:!0}}).position}setSelection(t){return this.selection.setString(t),this}_getIndices(t){let e=0;const i=t.test,r=[];return i&&this.structure.eachAtom((t=>{i(t)&&r.push(e),e+=1})),r}_makeSuperposeCoords(){const t=3*this.selectionIndices.length;this.coords1=new Float32Array(t),this.coords2=new Float32Array(t);const e=this.initialCoords,i=this.coords2;for(let r=0;r!!this.frameCache[t])):!!this.frameCache[t]}setFrame(t,e){return void 0===t||(this.inProgress=!0,-1===t||this.frameCache[t]?(this._updateStructure(t),e&&e()):this.loadFrame(t,(()=>{this._updateStructure(t),e&&e()}))),this}_interpolate(t,e,i,r,s,n){const o=this.frameCache;let a;a=\"spline\"===n?function(t,e,i,r,s){const n=t.length,o=new Float32Array(n);for(let a=0;a{this._interpolate(t,e,i,r,s,n),o&&o()})):(this._interpolate(t,e,i,r,s,n),o&&o()),this}loadFrame(t,e){Array.isArray(t)?t.forEach((t=>{this.loadQueue[t]||this.frameCache[t]||(this.loadQueue[t]=!0,this._loadFrame(t,(()=>{delete this.loadQueue[t]})))})):this.loadQueue[t]||this.frameCache[t]||(this.loadQueue[t]=!0,this._loadFrame(t,(()=>{delete this.loadQueue[t],e&&e()})))}_loadFrame(t,e){Me.error(\"Trajectory._loadFrame not implemented\",t,e)}_updateStructure(t){this._disposed?console.error(\"updateStructure: traj disposed\"):(-1===t?this.structureCoords&&this.structure.updatePosition(this.structureCoords):this.structure.updatePosition(this.frameCache[t]),this.structure.trajectory={name:this.trajPath,frame:t},this._currentFrame=t,this.inProgress=!1,this.signals.frameChanged.dispatch(t))}_doSuperpose(t){const e=3*this.selectionIndices.length,i=this.coords1,r=this.coords2;for(let r=0;r0&&this.centerPbc){const t=[e[0],e[4],e[8]],r=function(t,e,i){return[wi(e,i[0],3,0,t),wi(e,i[1],3,1,t),wi(e,i[2],3,2,t)]}(this.backboneIndices,i,t);!function(t,e,i){if(0===i[0]||0===i[8]||0===i[4])return;const r=t.length,s=i[0],n=i[1],o=i[2],a=-e[0]+s+s/2,c=-e[1]+n+n/2,l=-e[2]+o+o/2;for(let e=0;e.5&&(t[s+r]-=e[3*r+r]*Math.round(n))}}(i,e,t)}this.removePbc&&function(t,e){if(0===e[0]||0===e[8]||0===e[4])return;const i=t.length;for(let r=3;r.9*e[3*i+i])if(s>0)for(let s=0;s<3;++s)t[r+s]-=e[3*i+s];else for(let s=0;s<3;++s)t[r+s]+=e[3*i+s]}}(i,e)}this.selectionIndices.length>0&&this.coords1&&this.superpose&&this._doSuperpose(i),this.frameCache[t]=i,this.boxCache[t]=e,this.frameCacheSize+=1}_setFrameCount(t){t!==this._frameCount&&(this._frameCount=t,this.signals.countChanged.dispatch(t))}dispose(){this._resetCache(),this._disposed=!0,this.player&&this.player.stop()}setPlayer(t){this.player=t,this.signals.playerChanged.dispatch(t)}getFrameTime(t){return this.timeOffset+t*this.deltaTime}}class xl extends bl{constructor(t,e,i){const r=i||{};r.timeOffset=st(r.timeOffset,t.timeOffset),r.deltaTime=st(r.deltaTime,t.deltaTime),super(\"\",e,r),this.name=t.name,this.path=t.path,this.frames=t.coordinates,this.boxes=t.boxes,this._init(e)}get type(){return\"frames\"}_makeAtomIndices(){\"StructureView\"===this.structure.type?this.atomIndices=this.structure.getAtomIndices():this.atomIndices=void 0}_loadFrame(t,e){let i;const r=this.frames[t];if(this.atomIndices){const t=this.atomIndices,e=t.length;i=new Float32Array(3*e);for(let s=0;s{const s=i.response;if(!s)return void Me.error(`empty arrayBuffer for '${r}'`);const n=new Int32Array(s,0,1)[0],o=new Float32Array(s,8,9),a=new Float32Array(s,44);this._process(t,o,a,n),\"function\"==typeof e&&e()}),!1),i.send(s)}_loadFrameCount(){const t=new XMLHttpRequest,e=qe.getCountUrl(this.trajPath);t.open(\"GET\",e,!0),t.addEventListener(\"load\",(()=>{this._setFrameCount(parseInt(t.response))}),!1),t.send()}}class Al extends bl{constructor(t,e,i){super(\"\",e,i),this.requestCallback=t,this._init(e)}get type(){return\"callback\"}_makeAtomIndices(){const t=[];if(\"StructureView\"===this.structure.type){const e=this.structure.getAtomIndices(),i=e.length;let r=e[0],s=e[0];for(let n=1;n{this._process(t,i,r,s),\"function\"==typeof e&&e()}),t,this.atomIndices)}_loadFrameCount(){this.requestCallback((t=>this._setFrameCount(t)))}}Cc.prototype.getView=function(t){return new _l(this,t)};class _l extends Cc{constructor(t,i){super(),this.structure=t,this.selection=i,this.center=new e,this.boundingBox=new a,this._bp=this.getBondProxy(),this._ap=this.getAtomProxy(),this._rp=this.getResidueProxy(),this._cp=this.getChainProxy(),this.selection&&this.selection.signals.stringChanged.add(this.refresh,this),this.structure.signals.refreshed.add(this.refresh,this),this.refresh()}init(){}get type(){return\"StructureView\"}get name(){return this.structure.name}get path(){return this.structure.path}get title(){return this.structure.title}get id(){return this.structure.id}get data(){return this.structure.data}get atomSetDict(){return this.structure.atomSetDict}get biomolDict(){return this.structure.biomolDict}get entityList(){return this.structure.entityList}get unitcell(){return this.structure.unitcell}get frames(){return this.structure.frames}get boxes(){return this.structure.boxes}get validation(){return this.structure.validation}get bondStore(){return this.structure.bondStore}get backboneBondStore(){return this.structure.backboneBondStore}get rungBondStore(){return this.structure.rungBondStore}get atomStore(){return this.structure.atomStore}get residueStore(){return this.structure.residueStore}get chainStore(){return this.structure.chainStore}get modelStore(){return this.structure.modelStore}get atomMap(){return this.structure.atomMap}get residueMap(){return this.structure.residueMap}get bondHash(){return this.structure.bondHash}get spatialHash(){return this.structure.spatialHash}get _hasCoords(){return this.structure._hasCoords}set _hasCoords(t){this.structure._hasCoords=t}refresh(){De&&Me.time(\"StructureView.refresh\"),this.atomSetCache={};const t=this.structure;if(this.selection.isAllSelection()&&t!==this&&t.atomSet&&t.bondSet){this.atomSet=t.atomSet.clone(),this.bondSet=t.bondSet.clone();for(let t in this.atomSetDict){const e=this.atomSetDict[t];this.atomSetCache[\"__\"+t]=e.clone()}this.atomCount=t.atomCount,this.bondCount=t.bondCount,this.boundingBox.copy(t.boundingBox),this.center.copy(t.center)}else if(this.selection.isNoneSelection()&&t!==this&&t.atomSet&&t.bondSet){this.atomSet=new Os(t.atomCount),this.bondSet=new Os(t.bondCount);for(let e in this.atomSetDict)this.atomSetCache[\"__\"+e]=new Os(t.atomCount);this.atomCount=0,this.bondCount=0,this.boundingBox.makeEmpty(),this.center.set(0,0,0)}else{this.atomSet=this.getAtomSet(this.selection,!0),t.atomSet&&(this.atomSet=this.atomSet.intersection(t.atomSet)),this.bondSet=this.getBondSet();for(let t in this.atomSetDict){const e=this.atomSetDict[t];this.atomSetCache[\"__\"+t]=e.makeIntersection(this.atomSet)}this.atomCount=this.atomSet.getSize(),this.bondCount=this.bondSet.getSize(),this.boundingBox=this.getBoundingBox(),this.center=this.boundingBox.getCenter(new e)}De&&Me.timeEnd(\"StructureView.refresh\"),this.signals.refreshed.dispatch()}setSelection(t){this.selection=t,this.refresh()}getSelection(t){const e=[];t&&t.string&&e.push(t.string);const i=this.structure.getSelection();i&&i.string&&e.push(i.string),this.selection&&this.selection.string&&e.push(this.selection.string);let r=\"\";return e.length>0&&(r=`( ${e.join(\" ) AND ( \")} )`),new pe(r)}getStructure(){return this.structure.getStructure()}eachBond(t,e){this.structure.eachBond(t,this.getSelection(e))}eachAtom(t,e){const i=this.getAtomProxy(),r=this.getAtomSet(e),s=this.atomStore.count;if(r.getSize()=this.V[i][r]?(e=\"S\",this.score=this.S[i][r]):this.V[i][r]>=this.H[i][r]?(e=\"V\",this.score=this.V[i][r]):(e=\"H\",this.score=this.H[i][r]),De&&Me.log(\"Alignment: SCORE\",this.score),De&&Me.log(\"Alignment: S, V, H\",this.S[i][r],this.V[i][r],this.H[i][r]);i>0&&r>0;)\"S\"===e?this.S[i][r]===this.S[i-1][r-1]+t(i-1,r-1)?(this.ali1=this.seq1[i-1]+this.ali1,this.ali2=this.seq2[r-1]+this.ali2,--i,--r,e=\"S\"):this.S[i][r]===this.V[i][r]?e=\"V\":this.S[i][r]===this.H[i][r]?e=\"H\":(--i,--r):\"V\"===e?this.V[i][r]===this.V[i-1][r]+this.gapExtensionPenalty?(this.ali1=this.seq1[i-1]+this.ali1,this.ali2=\"-\"+this.ali2,--i,e=\"V\"):this.V[i][r]===this.S[i-1][r]+this.gap(0)?(this.ali1=this.seq1[i-1]+this.ali1,this.ali2=\"-\"+this.ali2,--i,e=\"S\"):--i:\"H\"===e?this.H[i][r]===this.H[i][r-1]+this.gapExtensionPenalty?(this.ali1=\"-\"+this.ali1,this.ali2=this.seq2[r-1]+this.ali2,--r,e=\"H\"):this.H[i][r]===this.S[i][r-1]+this.gap(0)?(this.ali1=\"-\"+this.ali1,this.ali2=this.seq2[r-1]+this.ali2,--r,e=\"S\"):--r:Me.error(\"Alignment: no matrix\");for(;i>0;)this.ali1=this.seq1[i-1]+this.ali1,this.ali2=\"-\"+this.ali2,--i;for(;r>0;)this.ali1=\"-\"+this.ali1,this.ali2=this.seq2[r-1]+this.ali2,--r;De&&Me.timeEnd(\"Alignment.trace\"),De&&Me.log([this.ali1,this.ali2])}}function kl(t,e,i=!1,r=\"\",s=\"\"){let n,o,a,c,l;if(i){let i=t,h=e;r&&s&&(i=t.getView(new pe(r)),h=e.getView(new pe(s)));const d=i.getSequence(),u=h.getSequence(),m=new Il(d.join(\"\"),u.join(\"\"));let p,f;m.calc(),m.trace(),n=0,o=0,a=m.ali1.length;const g=[],y=[];for(let t=0;tt[e]))}}}(),this.spacefillRepresentation=this.addRepresentation(\"spacefill\",{sele:\"none\",opacity:Te.opacity,color:Te.color,disablePicking:!0,radiusType:\"data\"},!0),this.distanceRepresentation=this.addRepresentation(\"distance\",Te,!0),this.angleRepresentation=this.addRepresentation(\"angle\",Te,!0),this.dihedralRepresentation=this.addRepresentation(\"dihedral\",Te,!0),this.measureRepresentations=new dl([this.spacefillRepresentation,this.distanceRepresentation,this.angleRepresentation,this.dihedralRepresentation]),this.setDefaultAssembly(this.parameters.defaultAssembly),this.structure.signals.refreshed.add((()=>{this.updateRepresentations({position:!0})}))}get defaultParameters(){return Ml}get type(){return\"structure\"}initSelection(t){this.selection=new pe(t),this.structureView=new _l(this.structure,this.selection),this.selection.signals.stringChanged.add((()=>{this.structureView.setSelection(this.selection),this.rebuildRepresentations(),this.rebuildTrajectories()}))}setSelection(t){return this.parameters.sele=t,this.selection.setString(t),this}setDefaultAssembly(t){if(void 0===this.structure.biomolDict[t]&&(t=\"\"),this.parameters.defaultAssembly!==t){const e={defaultAssembly:t};this.reprList.forEach((t=>t.setParameters(e))),this.measureRepresentations.setParameters(e),this.parameters.defaultAssembly=t,this.signals.defaultAssemblyChanged.dispatch(t)}return this}rebuildRepresentations(){this.reprList.forEach((t=>{t.build()})),this.measureRepresentations.build()}rebuildTrajectories(){this.trajList.forEach((t=>{t.trajectory.setStructure(this.structureView)}))}updateRepresentations(t){super.updateRepresentations(t),this.measureRepresentations.update(t)}updateRepresentationMatrices(){super.updateRepresentationMatrices(),this.measureRepresentations.setParameters({matrix:this.matrix})}addRepresentation(t,e={},i=!1){e.defaultAssembly=this.parameters.defaultAssembly;const r=this._addRepresentation(t,this.structureView,e,i);return i||r.signals.parametersChanged.add((()=>this.measureUpdate())),r}addTrajectory(t=\"\",e={}){const i=function(t,e,i){let r;return r=t&&t instanceof pl?new xl(t,e,i):!t&&e.frames?new vl(t,e,i):t&&\"function\"==typeof t?new Al(t,e,i):new wl(t,e,i),r}(t,this.structureView,e),r=new ml(this.stage,i,e);return this.trajList.push(r),this.signals.trajectoryAdded.dispatch(r),r}removeTrajectory(t){const e=this.trajList.indexOf(t);-1!==e&&this.trajList.splice(e,1),t.dispose(),this.signals.trajectoryRemoved.dispatch(t)}dispose(){this.trajList.slice().forEach((t=>t.dispose())),this.trajList.length=0,this.structure.dispose(),this.measureRepresentations.dispose(),super.dispose()}autoView(t,e){\"number\"==typeof t&&(e=t,t=\"\"),this.stage.animationControls.zoomMove(this.getCenter(t),this.getZoom(t),st(e,0))}getBoxUntransformed(t){let e;return e=t?this.structureView.getBoundingBox(new pe(t)):this.structureView.boundingBox,e}getCenterUntransformed(t){return t&&\"string\"==typeof t?this.structure.atomCenter(new pe(t)):this.structure.center}superpose(t,e,i,r){return kl(this.structureView,t.structureView,e,i,r),this.updateRepresentations({position:!0}),this}getMaxRepresentationRadius(t){let e=0;const i=this.structure.getAtomProxy(t);return this.eachRepresentation((t=>{if(t.getVisibility()){const r=t.repr;e=Math.max(r.getAtomRadius(i),e)}})),e}measurePick(t){const e=this.pickBuffer.count;if(this.lastPick===t.index&&e>=1){if(e>1){const t=this.pickBuffer.data,i=this.pickBuffer.data.sort();this.pickDict.has(i)?this.pickDict.del(i):this.pickDict.add(i,t),2===e?this.distanceRepresentation.setParameters({atomPair:this.pickDict.values.filter((t=>2===t.length))}):3===e?this.angleRepresentation.setParameters({atomTriple:this.pickDict.values.filter((t=>3===t.length))}):4===e&&this.dihedralRepresentation.setParameters({atomQuad:this.pickDict.values.filter((t=>4===t.length))})}this.pickBuffer.clear(),this.lastPick=void 0}else this.pickBuffer.has(t.index)||this.pickBuffer.push(t.index),this.lastPick=t.index;this.measureUpdate()}measureClear(){this.pickBuffer.clear(),this.lastPick=void 0,this.spacefillRepresentation.setSelection(\"none\")}measureBuild(){const t=this.measureData();this.distanceRepresentation.setParameters({atomPair:t.distance}),this.angleRepresentation.setParameters({atomTriple:t.angle}),this.dihedralRepresentation.setParameters({atomQuad:t.dihedral})}measureUpdate(){const t=this.pickBuffer.data,e={};t.forEach((t=>{const i=Math.max(.1,this.getMaxRepresentationRadius(t));e[t]=i*(2.3-Rt(.1,2,i))})),this.spacefillRepresentation.setSelection(t.length?\"@\"+t.join(\",\"):\"none\"),t.length&&this.spacefillRepresentation.setParameters({radiusData:e})}measureData(){const t=this.pickDict.values;return{distance:t.filter((t=>2===t.length)),angle:t.filter((t=>3===t.length)),dihedral:t.filter((t=>4===t.length))}}removeAllMeasurements(t){const e=this.pickDict,i=e.values,r=function(t){i.filter((e=>e.length===t)).forEach((t=>e.del(t.slice().sort())))};(!t||1&t)&&r(2),(!t||2&t)&&r(3),(!t||4&t)&&r(4),this.measureBuild()}removeMeasurement(t){this.pickDict.del(t.slice().sort()),this.measureBuild()}addMeasurement(t){if(t.length<2||t.length>4)return;const e=t.slice().sort();this.pickDict.has(e)||this.pickDict.add(e,t),this.measureBuild()}}Ue.add(\"structure\",Tl),Ue.add(\"structureview\",Tl);class Bl extends ll{constructor(t,e,i={}){super(t,e,Object.assign({name:e.name},i)),this.surface=e}get type(){return\"surface\"}addRepresentation(t,e={}){return this._addRepresentation(t,this.surface,e)}getBoxUntransformed(){return this.surface.boundingBox}getCenterUntransformed(){return this.surface.center}dispose(){this.surface.dispose(),super.dispose()}}Ue.add(\"surface\",Bl);class Dl extends ll{constructor(t,e,i={}){super(t,e,Object.assign({name:e.name},i)),this.volume=e}get type(){return\"volume\"}addRepresentation(t,e={}){return this._addRepresentation(t,this.volume,e)}getBoxUntransformed(){return this.volume.boundingBox}getCenterUntransformed(){return this.volume.center}dispose(){this.volume.dispose(),super.dispose()}}Ue.add(\"volume\",Dl);class $l extends hl{addRepresentation(t,e){return this.forEach((i=>i.addRepresentation(t,e)))}autoView(t){return this.forEach((e=>e.autoView(t)))}}function Ol(t,e){return t instanceof RegExp?null!==e.name.match(t):e.name===t}const Rl=new e,El={impostor:!0,quality:\"medium\",workerDefault:!0,sampleLevel:0,backgroundColor:\"black\",rotateSpeed:2,zoomSpeed:1.2,panSpeed:1,clipNear:0,clipFar:100,clipDist:10,clipMode:\"scene\",clipScale:\"relative\",fogNear:50,fogFar:100,cameraFov:40,cameraEyeSep:.3,cameraType:\"perspective\",lightColor:14540253,lightIntensity:1,ambientColor:14540253,ambientIntensity:.2,hoverTimeout:0,tooltip:!0,mousePreset:\"default\"};class Fl{constructor(t,e={}){this.signals={parametersChanged:new et,fullscreenChanged:new et,componentAdded:new et,componentRemoved:new et,clicked:new et,hovered:new et},this.tasks=new ui,this.compList=[],this.defaultFileParams={},this.logList=[],this.viewer=new Ji(t),this.viewer.renderer&&(this.tooltip=document.createElement(\"div\"),Object.assign(this.tooltip.style,{display:\"none\",position:\"fixed\",zIndex:\"1000000\",pointerEvents:\"none\",backgroundColor:\"rgba( 0, 0, 0, 0.6 )\",color:\"lightgrey\",padding:\"8px\",fontFamily:\"sans-serif\"}),this.viewer.container.appendChild(this.tooltip),this.mouseObserver=new sr(this.viewer.renderer.domElement),this.viewerControls=new kr(this),this.trackballControls=new gr(this),this.pickingControls=new xr(this),this.animationControls=new Lr(this),this.mouseControls=new Jo(this),this.keyControls=new ia(this),this.pickingBehavior=new ra(this),this.mouseBehavior=new sa(this),this.animationBehavior=new na(this),this.keyBehavior=new aa(this),this.spinAnimation=this.animationControls.spin([0,1,0],.005),this.spinAnimation.pause(!0),this.rockAnimation=this.animationControls.rock([0,1,0],.005),this.rockAnimation.pause(!0),this.parameters=nt(e,El),this.setParameters(this.parameters),this.viewer.animate())}setParameters(t={}){ot(this.parameters,t);const e=t,i=this.parameters,r=this.viewer,s=this.trackballControls;return void 0!==e.quality&&this.setQuality(i.quality),void 0!==e.impostor&&this.setImpostor(i.impostor),void 0!==e.rotateSpeed&&(s.rotateSpeed=i.rotateSpeed),void 0!==e.zoomSpeed&&(s.zoomSpeed=i.zoomSpeed),void 0!==e.panSpeed&&(s.panSpeed=i.panSpeed),void 0!==e.mousePreset&&this.mouseControls.preset(i.mousePreset),this.mouseObserver.setParameters({hoverTimeout:i.hoverTimeout}),r.setClip(i.clipNear,i.clipFar,i.clipDist,i.clipMode,i.clipScale),r.setFog(void 0,i.fogNear,i.fogFar),r.setCamera(i.cameraType,i.cameraFov,i.cameraEyeSep),r.setSampling(i.sampleLevel),r.setBackground(i.backgroundColor),r.setLight(i.lightColor,i.lightIntensity,i.ambientColor,i.ambientIntensity),this.signals.parametersChanged.dispatch(this.getParameters()),this}log(t){console.log(\"STAGE LOG\",t),this.logList.push(t)}getParameters(){return Object.assign({},this.parameters)}defaultFileRepresentation(t){if(t instanceof Tl){let e,i,r;t.setSelection(\"/0\");const s=t.structure;if(s.biomolDict.BU1){const n=s.biomolDict.BU1;e=n.getAtomCount(s),i=n.getResidueCount(s),r=n.getInstanceCount(),t.setDefaultAssembly(\"BU1\")}else e=s.getModelProxy(0).atomCount,i=s.getModelProxy(0).residueCount,r=1;let n=e;Se&&(n*=4);const o=s.atomStore.count/s.residueStore.count<2;o&&(n*=10);let a=\"chainname\",c=\"RdYlBu\",l=!1;if(1===s.getChainnameCount(new pe(\"polymer and /0\"))&&(a=\"residueindex\",c=\"Spectral\",l=!0),De&&console.log(n,e,r,o),i/r<4)t.addRepresentation(\"ball+stick\",{colorScheme:\"element\",radiusScale:2,aspectRatio:1.5,bondScale:.3,bondSpacing:.75,quality:\"auto\"});else if(r>5&&n>15e3||n>7e5){let e=Math.min(2,Math.max(.1,6e3/(n/r)));o&&(e=Math.min(e,.5)),t.addRepresentation(\"surface\",{colorScheme:a,colorScale:c,colorReverse:l,sele:\"polymer\",surfaceType:\"av\",probeRadius:1.4,scaleFactor:e,useWorker:!1})}else n>25e4?t.addRepresentation(\"backbone\",{colorScheme:a,colorScale:c,colorReverse:l,lineOnly:!0}):n>1e5?t.addRepresentation(\"backbone\",{colorScheme:a,colorScale:c,colorReverse:l,quality:\"low\",disableImpostor:!0,radiusScale:2}):n>8e4?t.addRepresentation(\"backbone\",{colorScheme:a,colorScale:c,colorReverse:l,radiusScale:2}):(t.addRepresentation(\"cartoon\",{colorScheme:a,colorScale:c,colorReverse:l,radiusScale:.7,aspectRatio:5,quality:\"auto\"}),n<5e4&&t.addRepresentation(\"base\",{colorScheme:a,colorScale:c,colorReverse:l,quality:\"auto\"}),t.addRepresentation(\"ball+stick\",{sele:\"ligand\",colorScheme:\"element\",radiusScale:2,aspectRatio:1.5,bondScale:.3,bondSpacing:.75,quality:\"auto\"}));t.structure.frames.length&&t.addTrajectory()}else(t instanceof Bl||t instanceof Dl)&&t.addRepresentation(\"surface\");this.tasks.onZeroOnce(this.autoView,this)}loadFile(t,e={}){const i=Object.assign({},this.defaultFileParams,e),r=ri(t).name;this.tasks.increment(),this.log(`loading file '${r}'`);const s=st(i.ext,ri(t).ext);let n;return n=ze.isTrajectory(s)?Promise.reject(new Error(`loadFile: ext '${s}' is a trajectory and must be loaded into a structure component`)):ni(t,i),n.then((t=>{this.log(`loaded '${r}'`);const e=this.addComponentFromObject(t,i);return i.defaultRepresentation&&this.defaultFileRepresentation(e),this.tasks.decrement(),e}),(t=>{this.tasks.decrement();const e=`error loading file: '${t}'`;throw this.log(e),e}))}loadScript(t){const e=ri(t).name;return this.log(`loading script '${e}'`),ni(t).then((t=>{this.tasks.increment(),this.log(`running script '${e}'`),t.run(this).then((()=>{this.tasks.decrement(),this.log(`finished script '${e}'`)})),this.log(`called script '${e}'`)}),(t=>{this.tasks.decrement();const i=`errored script '${e}' \"${t}\"`;throw this.log(i),i}))}addComponent(t){t?(this.compList.push(t),this.signals.componentAdded.dispatch(t)):Me.warn(\"Stage.addComponent: no component given\")}addComponentFromObject(t,e={}){const i=Ue.get(t.type);if(i){const r=new i(this,t,e);return this.addComponent(r),r}Me.warn(\"no component for object type\",t.type)}removeComponent(t){const e=this.compList.indexOf(t);-1!==e&&(this.compList.splice(e,1),t.dispose(),this.signals.componentRemoved.dispatch(t))}removeAllComponents(){this.compList.slice().forEach((t=>this.removeComponent(t)))}handleResize(){this.viewer.handleResize()}setSize(t,e){const i=this.viewer.container;i!==document.body&&(void 0!==t&&(i.style.width=t),void 0!==e&&(i.style.height=e),this.handleResize())}toggleFullscreen(t){if(!(document.fullscreenEnabled||document.mozFullScreenEnabled||document.webkitFullscreenEnabled||document.msFullscreenEnabled))return void Me.log(\"fullscreen mode (currently) not possible\");const e=this;function i(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement}function r(){if(!i()&&e.lastFullscreenElement){const t=e.lastFullscreenElement;t.style.width=t.dataset.normalWidth||\"\",t.style.height=t.dataset.normalHeight||\"\",document.removeEventListener(\"fullscreenchange\",r),document.removeEventListener(\"mozfullscreenchange\",r),document.removeEventListener(\"webkitfullscreenchange\",r),document.removeEventListener(\"MSFullscreenChange\",r),e.handleResize(),e.signals.fullscreenChanged.dispatch(!1)}}t=t||this.viewer.container,this.lastFullscreenElement=t,i()?document.exitFullscreen?document.exitFullscreen():document.msExitFullscreen?document.msExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen():(t.dataset.normalWidth=t.style.width||\"\",t.dataset.normalHeight=t.style.height||\"\",t.style.width=window.screen.width+\"px\",t.style.height=window.screen.height+\"px\",t.requestFullscreen?t.requestFullscreen():t.msRequestFullscreen?t.msRequestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.webkitRequestFullscreen&&t.webkitRequestFullscreen(),document.addEventListener(\"fullscreenchange\",r),document.addEventListener(\"mozfullscreenchange\",r),document.addEventListener(\"webkitfullscreenchange\",r),document.addEventListener(\"MSFullscreenChange\",r),this.handleResize(),this.signals.fullscreenChanged.dispatch(!0),setTimeout((function(){e.handleResize()}),100))}setSpin(t){t?(this.spinAnimation.resume(!0),this.rockAnimation.pause(!0)):this.spinAnimation.pause(!0)}setRock(t){t?(this.rockAnimation.resume(!0),this.spinAnimation.pause(!0)):this.rockAnimation.pause(!0)}toggleSpin(){this.setSpin(this.spinAnimation.paused)}toggleRock(){this.setRock(this.rockAnimation.paused)}getFocus(){const t=this.parameters;if(\"scene\"!==t.clipMode)return 0;let e=t.clipNear;return\"absolute\"===t.clipScale&&(e=this.viewer.absoluteToRelative(e)),2*e}setFocus(t){if(\"scene\"!==this.parameters.clipMode)return;let e,i,r,s;\"relative\"===this.parameters.clipScale?(e=Dt(t/2,0,49.9),i=100-e,r=50,s=function(t){return Dt(t,0,100)}(2*i-50)):(e=this.viewer.relativeToAbsolute(t/2),i=e,r=0,s=2*i),this.setParameters({clipNear:e,clipFar:i,fogNear:r,fogFar:s})}getZoomForBox(t){const e=t.getSize(Rl),i=Math.max(e.x,e.y,e.z),r=Math.min(e.x,e.y,e.z);let s=i+Math.sqrt(r);const n=kt(this.viewer.perspectiveCamera.fov),o=this.viewer.width,a=this.viewer.height,c=a{this.tasks.onZeroOnce((()=>{this.tasks.increment(),this.viewer.makeImage(t).then((t=>{this.tasks.decrement(),e(t)})).catch((t=>{this.tasks.decrement(),i(t)}))}))}))}setImpostor(t){this.parameters.impostor=t;const e=[\"spacefill\",\"ball+stick\",\"licorice\",\"hyperball\",\"backbone\",\"rocket\",\"helixorient\",\"contact\",\"distance\",\"dot\"];this.eachRepresentation((function(i){if(!e.includes(i.getType()))return;const r=i.getParameters();r.disableImpostor=!t,i.build(r)}))}setQuality(t){this.parameters.quality=t;const e=[\"tube\",\"cartoon\",\"ribbon\",\"trace\",\"rope\"],i=[\"spacefill\",\"ball+stick\",\"licorice\",\"hyperball\",\"backbone\",\"rocket\",\"helixorient\",\"contact\",\"distance\",\"dot\"];this.eachRepresentation((function(r){const s=r.getParameters();if(!e.includes(r.getType())){if(!i.includes(r.getType()))return;if(!s.disableImpostor)return void(r.repr.quality=t)}s.quality=t,r.build(s)}))}eachComponent(t,e){this.compList.slice().forEach((i=>{void 0!==e&&e!==i.type||t(i)}))}eachRepresentation(t,e){this.eachComponent((i=>{i.reprList.slice().forEach((r=>{void 0!==e&&e!==r.getType()||t(r,i)}))}))}getComponentsByName(t){const e=[];return this.eachComponent((i=>{(void 0===t||Ol(t,i))&&e.push(i)})),new $l(e)}getComponentsByObject(t){const e=[];return this.eachComponent((i=>{i.object===t&&e.push(i)})),new $l(e)}getRepresentationsByName(t){const e=[];return this.eachRepresentation(((i,r)=>{(void 0===t||Ol(t,i))&&e.push(i)})),new dl(e)}measureClear(){this.eachComponent((t=>t.measureClear()),\"structure\")}measureUpdate(){this.eachComponent((t=>t.measureUpdate()),\"structure\")}dispose(){this.tasks.dispose(),this.viewer.dispose(),this.mouseObserver.dispose()}}class Ll extends ll{constructor(t,e,i={}){super(t,e,Object.assign({name:e.name},i)),this.shape=e}get type(){return\"shape\"}addRepresentation(t,e={}){return this._addRepresentation(t,this.shape,e)}getBoxUntransformed(){return this.shape.boundingBox}getCenterUntransformed(){return this.shape.center}dispose(){this.shape.dispose(),super.dispose()}}function Nl(t,e,i,r){var s,n=arguments.length,o=n<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r;if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.decorate)o=Reflect.decorate(t,e,i,r);else for(var a=t.length-1;a>=0;a--)(s=t[a])&&(o=(n<3?s(o):n>3?s(e,i,o):s(e,i))||o);return n>3&&o&&Object.defineProperty(e,i,o),o}Ue.add(\"shape\",Ll);class zl extends zt{constructor(t){super(t),t.scale||(this.parameters.scale=\"rainbow\",this.parameters.reverse=st(t.reverse,!0)),this.scalePerModel={},t.structure.eachModel((t=>{this.parameters.domain=[t.atomOffset,t.atomEnd],this.scalePerModel[t.index]=this.getScale()}))}atomColor(t){return this.scalePerModel[t.modelIndex](t.index)}}Nl([Nt],zl.prototype,\"atomColor\",null),Fe.add(\"atomindex\",zl);class Vl extends zt{constructor(t){if(super(t),t.scale||(this.parameters.scale=\"OrRd\"),!t.domain){let e,i=1/0,r=-1/0;t.sele&&(e=new pe(t.sele)),t.structure.eachAtom((function(t){const e=t.bfactor;i=Math.min(i,e),r=Math.max(r,e)}),e),this.parameters.domain=[i,r]}this.bfactorScale=this.getScale()}atomColor(t){return this.bfactorScale(t.bfactor)}}Nl([Nt],Vl.prototype,\"atomColor\",null),Fe.add(\"bfactor\",Vl);class Gl extends zt{constructor(t){super(t),this.chainidDictPerModel={},this.scalePerModel={},t.scale||(this.parameters.scale=\"Spectral\"),t.structure.eachModel((t=>{let e=0;const i={};t.eachChain((function(t){void 0===i[t.chainid]&&(i[t.chainid]=e,e+=1)})),this.parameters.domain=[0,e-1],this.chainidDictPerModel[t.index]=i,this.scalePerModel[t.index]=this.getScale()}))}atomColor(t){const e=this.chainidDictPerModel[t.modelIndex];return this.scalePerModel[t.modelIndex](e[t.chainid])}}Nl([Nt],Gl.prototype,\"atomColor\",null),Fe.add(\"chainid\",Gl);class Ul extends zt{constructor(t){super(t),this.scalePerModel={},t.scale||(this.parameters.scale=\"Spectral\"),t.structure.eachModel((t=>{this.parameters.domain=[t.chainOffset,t.chainEnd],this.scalePerModel[t.index]=this.getScale()}))}atomColor(t){return this.scalePerModel[t.modelIndex](t.chainIndex)}}Nl([Nt],Ul.prototype,\"atomColor\",null),Fe.add(\"chainindex\",Ul);class jl extends zt{constructor(t){super(t),this.chainnameDictPerModel={},this.scalePerModel={},t.scale||(this.parameters.scale=\"Spectral\"),t.structure.eachModel((t=>{let e=0;const i={};t.eachChain((function(t){void 0===i[t.chainname]&&(i[t.chainname]=e,e+=1)})),this.parameters.domain=[0,e-1],this.chainnameDictPerModel[t.index]=i,this.scalePerModel[t.index]=this.getScale()}))}atomColor(t){const e=this.chainnameDictPerModel[t.modelIndex];return this.scalePerModel[t.modelIndex](e[t.chainname])}}Nl([Nt],jl.prototype,\"atomColor\",null),Fe.add(\"chainname\",jl);class Hl extends zt{constructor(t){super(t),this.rsrzDict={},this.rsccDict={},t.scale||(this.parameters.scale=\"RdYlBu\"),this.rsrzScale=this.getScale({domain:[2,0]}),this.rsccScale=this.getScale({domain:[.678,1]});const e=t.structure.validation;e&&(this.rsrzDict=e.rsrzDict,this.rsccDict=e.rsccDict)}atomColor(t){let e=t.resno+\"\";t.inscode&&(e+=\"^\"+t.inscode),t.chainname&&(e+=\":\"+t.chainname),e+=\"/\"+t.modelIndex;const i=this.rsrzDict[e];if(void 0!==i)return this.rsrzScale(i);const r=this.rsccDict[e];return void 0!==r?this.rsccScale(r):9474192}}Nl([Nt],Hl.prototype,\"atomColor\",null),Fe.add(\"densityfit\",Hl);const Wl={ARG:{CD:.1,CZ:.5,NE:-.1},ASN:{CG:.55,OD1:-.55},ASP:{CB:-.16,CG:.36,OD1:-.6,OD2:-.6},CYS:{CB:.19,SG:-.19},GLN:{CD:.55,OE1:-.55},GLU:{CD:.36,CG:-.16,OE1:-.6,OE2:-.6},HIS:{CB:.1,CD2:.2,CE1:.45,CG:.15,ND1:.05,NE2:.05},LYS:{CE:.25,NZ:.75},MET:{CE:.06,CG:.06,SD:-.12},PTR:{C:.55,CA:.1,CZ:.25,N:-.35,O:-.55,O1P:-.85,O2P:-.85,O3P:-.85,OG1:-1.1,P:1.4},SEP:{C:.55,CA:.1,CB:.25,N:-.35,O:-.55,O1P:-.85,O2P:-.85,O3P:-.85,OG1:-1.1,P:1.4},SER:{CB:.25,OG:-.25},THR:{CB:.25,OG1:-.25},TPO:{C:.55,CA:.1,CB:.25,N:-.35,O:-.55,OG1:-1.1,O1P:-.85,O2P:-.85,O3P:-.85,P:1.4},TRP:{CD1:.06,CD2:.1,CE2:-.04,CE3:-.03,CG:-.03,NE1:-.06},TYR:{CZ:.25,OH:-.25},backbone:{C:.55,O:-.55,N:-.35,CA:.1}};class ql extends zt{constructor(t){super(t),this.delta=new e,this.hCharges=[],t.scale||(this.parameters.scale=\"rwb\"),t.domain||(this.parameters.domain=[-50,50]),this.scale=this.getScale(),this.charges=new Float32Array(t.structure.atomCount);const i=[];t.structure.eachAtom((t=>{var r;if(this.charges[t.index]=(null!==(r=t).partialCharge?r.partialCharge:r.isProtein()&&(Wl[r.resname]&&Wl[r.resname][r.atomname]||Wl.backbone[r.atomname])||0)*t.occupancy,\"N\"===t.atomname){if(t.bondCount>=3)return;if(t.bondToElementCount(1))return;const r=function(t,i=new e){let r=!1,s=!1,n=!1;return i.set(2*t.x,2*t.y,2*t.z),t.eachBondedAtom((function(t){if(!r)return\"H\"===t.atomname?(i.set(t.x,t.y,t.z),void(r=!0)):void(s||\"CA\"!==t.atomname?n||\"C\"!==t.atomname||(n=!0,i.sub(t)):(i.sub(t),s=!0))})),r?i:s&&n?(i.normalize(),i.multiplyScalar(1.04),i.add(t),i):void 0}(t);void 0!==r&&(i.push(r),this.hCharges.push(.25*t.occupancy))}}));const r=t.structure.getBoundingBox();r.expandByScalar(1.04),this.hStore=function(t){const e=t.length,i=new Float32Array(e),r=new Float32Array(e),s=new Float32Array(e);for(let e=0;e{const s=e[t];0!==s&&(r+=s/i)})),this.hHash.eachWithin(t.x,t.y,t.z,12,((t,e)=>{const s=i[t];0!==s&&(r+=s/e)})),this.scale(332*r)}}Nl([Nt],ql.prototype,\"positionColor\",null),Fe.add(\"electrostatic\",ql);const Xl={H:16777215,HE:14286847,LI:13402367,BE:12779264,B:16758197,C:9474192,N:3166456,O:16715021,F:9494608,NE:11789301,NA:11230450,MG:9109248,AL:12560038,SI:1578e4,P:16744448,S:16777008,CL:2093087,AR:8442339,K:9388244,CA:4062976,SC:15132390,TI:12567239,V:10921643,CR:9083335,MN:10255047,FE:14706227,CO:15765664,NI:5296208,CU:13140019,ZN:8224944,GA:12750735,GE:6721423,AS:12419299,SE:16752896,BR:10889513,KR:6076625,RB:7351984,SR:65280,Y:9764863,ZR:9756896,NB:7586505,MO:5551541,TC:3907230,RU:2396047,RH:687500,PD:27013,AG:12632256,CD:16767375,IN:10909043,SN:6717568,SB:10380213,TE:13924864,I:9699476,XE:9699476,CS:5707663,BA:51456,LA:7394559,CE:16777159,PR:14286791,ND:13107143,PM:10747847,SM:9437127,EU:6422471,GD:4587463,TB:3211207,DY:2097095,HO:65436,ER:58997,TM:54354,YB:48952,LU:43812,HF:5096191,TA:5089023,W:2200790,RE:2522539,OS:2516630,IR:1528967,PT:13684960,AU:16765219,HG:12105936,TL:10900557,PB:5724513,BI:10375093,PO:11230208,AT:7688005,RN:4358806,FR:4325478,RA:32e3,AC:7384058,TH:47871,PA:41471,U:36863,NP:33023,PU:27647,AM:5528818,CM:7888099,BK:9064419,CF:10565332,ES:11739092,FM:11739066,MD:11734438,NO:12389767,LR:13041766,RF:13369433,DB:13697103,SG:14221381,BH:14680120,HS:15073326,MT:15400998,DS:16777215,RG:16777215,CN:16777215,UUT:16777215,FL:16777215,UUP:16777215,LV:16777215,UUH:16777215,D:16777152,T:16777120};class Yl extends zt{constructor(t){t.value=st(t.value,Xl.C),super(t)}atomColor(t){const e=t.element;return\"C\"===e?this.parameters.value:Xl[e]||16777215}}Nl([Nt],Yl.prototype,\"atomColor\",null),Fe.add(\"element\",Yl);class Kl extends zt{constructor(t){super(t),t.scale||(this.parameters.scale=\"Spectral\"),t.domain||(this.parameters.domain=[0,t.structure.entityList.length-1]),this.entityindexScale=this.getScale()}atomColor(t){return this.entityindexScale(t.entityIndex)}}Nl([Nt],Kl.prototype,\"atomColor\",null),Fe.add(\"entityindex\",Kl);class Zl extends zt{atomColor(t){const e=t.entity;switch(e?e.entityType:void 0){case 1:return 8374655;case 2:return 16629894;case 3:return 12496596;case 4:return 3697840;default:return 16777113}}}Nl([Nt],Zl.prototype,\"atomColor\",null),Fe.add(\"entitytype\",Zl);class Ql extends zt{constructor(t){super(t),this.geoAtomDict={},this.geoDict={};const e=t.structure.validation;e&&(this.geoAtomDict=e.geoAtomDict,this.geoDict=e.geoDict)}atomColor(t){let e,i=t.resno+\"\";t.inscode&&(i+=\"^\"+t.inscode),t.chainname&&(i+=\":\"+t.chainname),i+=\"/\"+t.modelIndex;const r=this.geoAtomDict[i];if(void 0!==r){const i=r[t.atomname]||0;s=i,e=16843009*((s=(858993459&(s-=s>>1&1431655765))+(s>>2&858993459))+(s>>4)&252645135)>>24}else e=this.geoDict[i]||0;var s;return 0===e?2188972:1===e?16703627:2===e?16018755:e>=3?10813478:9474192}}Nl([Nt],Ql.prototype,\"atomColor\",null),Fe.add(\"geoquality\",Ql);class Jl extends zt{constructor(t){super(t),this.resHF={},t.scale||(this.parameters.scale=\"RdYlGn\");for(const t in Js)this.resHF[t]=Js[t][0];if(this.defaultResidueHydrophobicity=tn[0],!t.domain){let t=1/0,e=-1/0;for(const i in this.resHF){const r=this.resHF[i];t=Math.min(t,r),e=Math.max(e,r)}this.parameters.domain=[t,0,e]}this.hfScale=this.getScale()}atomColor(t){return this.hfScale(this.resHF[t.resname]||this.defaultResidueHydrophobicity)}}Nl([Nt],Jl.prototype,\"atomColor\",null),Fe.add(\"hydrophobicity\",Jl);class th extends zt{constructor(t){super(t),t.scale||(this.parameters.scale=\"rainbow\"),t.domain||(this.parameters.domain=[0,t.structure.modelStore.count]),this.modelindexScale=this.getScale()}atomColor(t){return this.modelindexScale(t.modelIndex)}}Nl([Nt],th.prototype,\"atomColor\",null),Fe.add(\"modelindex\",th);class eh extends zt{atomColor(t){switch(t.residueType.moleculeType){case 1:return 3697840;case 2:return 15729279;case 3:return 12496596;case 4:return 16629894;case 5:return 12540695;case 6:return 8374655;default:return 16777113}}}Nl([Nt],eh.prototype,\"atomColor\",null),Fe.add(\"moleculetype\",eh);class ih extends zt{constructor(t){super(t),t.scale||(this.parameters.scale=\"PuBu\"),t.domain||(this.parameters.domain=[0,1]),this.occupancyScale=this.getScale()}atomColor(t){return this.occupancyScale(t.occupancy)}}Nl([Nt],ih.prototype,\"atomColor\",null),Fe.add(\"occupancy\",ih);class rh extends zt{constructor(t){super(t),t.scale||(this.parameters.scale=\"rwb\"),t.domain||(this.parameters.domain=[-1,1]),this.partialchargeScale=this.getScale()}atomColor(t){return this.partialchargeScale(t.partialCharge||0)}}function sh(){return 16777215*Math.random()}Nl([Nt],rh.prototype,\"atomColor\",null),Fe.add(\"partialcharge\",rh);class nh extends zt{atomColor(){return sh()}volumeColor(){return sh()}positionColor(){return sh()}}Nl([Nt],nh.prototype,\"atomColor\",null),Nl([Nt],nh.prototype,\"volumeColor\",null),Nl([Nt],nh.prototype,\"positionColor\",null),Fe.add(\"random\",nh);class oh extends zt{constructor(t){super(t),this.rciDict={},t.scale||(this.parameters.scale=\"RdYlBu\"),this.rciScale=this.getScale({domain:[.6,0]});const e=t.structure.validation;e&&(this.rciDict=e.rciDict)}atomColor(t){let e=`[${t.resname}]${t.resno}`;t.chainname&&(e+=\":\"+t.chainname);const i=this.rciDict[e];return void 0!==i?this.rciScale(i):9474192}}Nl([Nt],oh.prototype,\"atomColor\",null),Fe.add(\"randomcoilindex\",oh);class ah extends zt{constructor(t){super(t),this.scalePerChain={},t.scale||(this.parameters.scale=\"rainbow\",this.parameters.reverse=st(t.reverse,!0)),t.structure.eachChain((t=>{this.parameters.domain=[t.residueOffset,t.residueEnd],this.scalePerChain[t.index]=this.getScale()}))}atomColor(t){return this.scalePerChain[t.chainIndex](t.residueIndex)}}Nl([Nt],ah.prototype,\"atomColor\",null),Fe.add(\"residueindex\",ah);const ch={ALA:9240460,ARG:124,ASN:16743536,ASP:10485826,CYS:16777072,GLN:16731212,GLU:6684672,GLY:16777215,HIS:7368959,ILE:19456,LEU:4546117,LYS:4671416,MET:12099650,PHE:5459026,PRO:5395026,SER:16740418,THR:12078080,TRP:5195264,TYR:9203788,VAL:16747775,ASX:16711935,GLX:16711935,ASH:16711935,GLH:16711935,A:14423100,G:3329330,I:10145074,X:8190976,C:16766720,T:4286945,U:4251856,D:35723,DA:14423100,DG:3329330,DI:10145074,DX:8190976,DC:16766720,DT:4286945,DU:4251856,DD:35723};class lh extends zt{atomColor(t){return ch[t.resname]||16711935}}Nl([Nt],lh.prototype,\"atomColor\",null),Fe.add(\"resname\",lh);const hh=16711808,dh=10485888,uh=6291584,mh=16762880,ph=6324479,fh=16777215,gh=11403518,yh=16580962,bh=10921722;class xh extends zt{constructor(t){super(t),this.residueProxy=t.structure.getResidueProxy()}atomColor(t){const e=t.sstruc,i=this.residueProxy;return\"h\"===e?hh:\"g\"===e?dh:\"i\"===e?uh:\"e\"===e||\"b\"===e?mh:\"t\"===e?ph:(i.index=t.residueIndex,i.isDna()?gh:i.isRna()?yh:i.isSaccharide()?bh:i.isProtein()||\"s\"===e||\"l\"===e?fh:8421504)}}Nl([Nt],xh.prototype,\"atomColor\",null),Fe.add(\"sstruc\",xh);class vh extends zt{constructor(t){var e,i;super(t),t.scale||(this.parameters.scale=\"rwb\"),this.atomData=null===(e=this.parameters.data)||void 0===e?void 0:e.atomData,this.bondData=null===(i=this.parameters.data)||void 0===i?void 0:i.bondData,this.scale=this.getScale(this.parameters)}atomColor(t){var e;const i=null===(e=this.atomData)||void 0===e?void 0:e[t.index];return void 0!==i?this.scale(i):this.parameters.value}bondColor(t,e){var i;const r=null===(i=this.bondData)||void 0===i?void 0:i[t.index];return void 0!==r?this.scale(r):this.atomProxy?(this.atomProxy.index=e?t.atomIndex1:t.atomIndex2,this.atomColor(this.atomProxy)):this.parameters.value}}Nl([Nt],vh.prototype,\"atomColor\",null),Nl([Nt],vh.prototype,\"bondColor\",null),Fe.add(\"structuredata\",vh);class wh extends zt{atomColor(){return this.parameters.value}bondColor(){return this.parameters.value}valueColor(){return this.parameters.value}volumeColor(){return this.parameters.value}}Nl([Nt],wh.prototype,\"atomColor\",null),Nl([Nt],wh.prototype,\"bondColor\",null),Nl([Nt],wh.prototype,\"valueColor\",null),Nl([Nt],wh.prototype,\"volumeColor\",null),Fe.add(\"uniform\",wh);class Ah extends zt{constructor(t){super(t),this.valueScale=this.getScale()}volumeColor(t){return this.valueScale(this.parameters.volume.data[t])}}Nl([Nt],Ah.prototype,\"volumeColor\",null),Fe.add(\"value\",Ah);class _h extends zt{constructor(t){super(t),this.vec=new e,this.valueScale=this.getScale()}positionColor(t){const e=this.parameters.volume;if(!e||!e.inverseMatrix)return this.parameters.value;const i=this.vec,r=e.data,s=e.nx,n=e.ny,o=s*n;i.copy(t),i.applyMatrix4(e.inverseMatrix);const a=Math.floor(i.x),c=Math.floor(i.y),l=Math.floor(i.z),h=(l*n+c)*s+a,d=h+1,u=h+s,m=h+o,p=u+1,f=m+1,g=u+o,y=g+1,b=r[h],x=r[d],v=r[u],w=r[m],A=r[p],_=r[f],S=r[g],C=r[y],P=i.x-a,I=i.y-c,k=i.z-l,M=$t(b,x,P),T=$t(w,_,P),B=$t(v,A,P),D=$t(S,C,P),$=$t(M,B,I),O=$t(T,D,I),R=$t($,O,k);return this.valueScale(R)}}Nl([Nt],_h.prototype,\"positionColor\",null),Fe.add(\"volume\",_h);class Sh extends zr{constructor(t,e,i){const r=i||{};if(super(t,e,r),this.type=\"structure\",this.parameters=Object.assign({radiusType:{type:\"select\",options:pa.types},radiusData:{type:\"hidden\"},radiusSize:{type:\"number\",precision:3,max:10,min:.001},radiusScale:{type:\"number\",precision:3,max:10,min:.001},assembly:null,defaultAssembly:{type:\"hidden\"}},this.parameters),this.selection=new pe(r.sele),this.dataList=[],this.structure=t,this.structureView=this.structure.getView(this.selection),t.biomolDict){const e={default:\"default\",\"\":t.unitcell?\"AU\":\"FULL\"};Object.keys(t.biomolDict).forEach((function(t){e[t]=t})),this.parameters.assembly={type:\"select\",options:e,rebuild:!0}}else this.parameters.assembly=null}get defaultScale(){return{vdw:1,covalent:1,bfactor:.01,sstruc:1}}init(t){const e=t||{};e.colorScheme=st(e.colorScheme,\"element\"),this.setRadius(e.radius,e),this.radiusType=st(e.radiusType,\"vdw\"),this.radiusData=st(e.radiusData,{}),this.radiusSize=st(e.radiusSize,1),this.radiusScale=st(e.radiusScale,1),this.assembly=st(e.assembly,\"default\"),this.defaultAssembly=st(e.defaultAssembly,\"\"),\"auto\"===e.quality&&(e.quality=this.getQuality()),super.init(e),this.selection.signals.stringChanged.add((()=>{this.build()})),this.build()}setRadius(t,e){const i=Object.keys(ma);return\"string\"==typeof t&&i.includes(t.toLowerCase())?e.radiusType=t:void 0!==t&&(e.radiusType=\"size\",e.radiusSize=t),this}getAssembly(){const t=\"default\"===this.assembly?this.defaultAssembly:this.assembly;return this.structure.biomolDict[t]}getQuality(){let t;const e=this.structureView,i=this.getAssembly();t=i?i.getAtomCount(e):e.atomCount,Se&&(t*=4);return e.atomStore.count/e.residueStore.count<2&&(t*=10),t<15e3?\"high\":t<8e4?\"medium\":\"low\"}create(){if(0===this.structureView.atomCount)return;if(!this.structureView.hasCoords())return void(this.needsBuild=!0);this.needsBuild=!1;const t=this.getAssembly();if(t)t.partList.forEach(((t,e)=>{const i=t.getView(this.structureView);if(0===i.atomCount)return;const r=this.createData(i,e);r&&(r.sview=i,r.instanceList=t.getInstanceList(),this.dataList.push(r))}));else{const t=this.createData(this.structureView,0);t&&(t.sview=this.structureView,this.dataList.push(t))}}update(t){!this.lazy||this.visible?this.needsBuild?this.build():this.dataList.forEach((e=>{e.bufferList.length>0&&this.updateData(t,e)}),this):Object.assign(this.lazyProps.what,t)}updateData(t,e){this.build()}getColorParams(){return Object.assign(Object.assign({},super.getColorParams()),{structure:this.structure})}getRadiusParams(t){return{type:this.radiusType,scale:this.radiusScale,size:this.radiusSize,data:this.radiusData}}getAtomParams(t,e){return Object.assign({what:t,colorParams:this.getColorParams(),radiusParams:this.getRadiusParams()},e)}getBondParams(t,e){return Object.assign({what:t,colorParams:this.getColorParams(),radiusParams:this.getRadiusParams()},e)}getAtomRadius(t){if(this.structureView.atomSet.isSet(t.index)){return new pa(this.getRadiusParams()).atomRadius(t)}return 0}setSelection(t,e){return this.selection.setString(t,e),this}setParameters(t,e={},i=!1){const r=t||{};return this.setRadius(r.radius,r),void 0===r.radiusType&&void 0===r.radiusData&&void 0===r.radiusSize&&void 0===r.radiusScale||(e.radius=!0,Ie&&!this.disableImpostor||(i=!0)),void 0!==r.defaultAssembly&&r.defaultAssembly!==this.defaultAssembly&&(\"default\"===this.assembly&&void 0===r.assembly||\"default\"===r.assembly)&&(i=!0),super.setParameters(r,e,i),this}getParameters(){return Object.assign(super.getParameters(),{sele:this.selection?this.selection.string:void 0,defaultAssembly:this.defaultAssembly})}attach(t){const e=this.viewer,i=this.bufferList;this.dataList.forEach((function(t){t.bufferList.forEach((function(r){i.push(r),e.add(r,t.instanceList)}))})),this.setVisibility(this.visible),t()}clear(){this.dataList.length=0,super.clear()}dispose(){this.structureView.dispose(),super.dispose()}}class Ch extends Sh{constructor(t,e,i){super(t,e,i),this.n=0,this.parameters=Object.assign({labelVisible:{type:\"boolean\"},labelSize:{type:\"number\",precision:3,max:10,min:.001},labelColor:{type:\"color\"},labelFontFamily:{type:\"select\",options:{\"sans-serif\":\"sans-serif\",monospace:\"monospace\",serif:\"serif\"},buffer:\"fontFamily\"},labelFontStyle:{type:\"select\",options:{normal:\"normal\",italic:\"italic\"},buffer:\"fontStyle\"},labelFontWeight:{type:\"select\",options:{normal:\"normal\",bold:\"bold\"},buffer:\"fontWeight\"},labelsdf:{type:\"boolean\",buffer:\"sdf\"},labelXOffset:{type:\"number\",precision:1,max:20,min:-20,buffer:\"xOffset\"},labelYOffset:{type:\"number\",precision:1,max:20,min:-20,buffer:\"yOffset\"},labelZOffset:{type:\"number\",precision:1,max:20,min:-20,buffer:\"zOffset\"},labelAttachment:{type:\"select\",options:{\"bottom-left\":\"bottom-left\",\"bottom-center\":\"bottom-center\",\"bottom-right\":\"bottom-right\",\"middle-left\":\"middle-left\",\"middle-center\":\"middle-center\",\"middle-right\":\"middle-right\",\"top-left\":\"top-left\",\"top-center\":\"top-center\",\"top-right\":\"top-right\"},rebuild:!0},labelBorder:{type:\"boolean\",buffer:\"showBorder\"},labelBorderColor:{type:\"color\",buffer:\"borderColor\"},labelBorderWidth:{type:\"number\",precision:2,max:.3,min:0,buffer:\"borderWidth\"},labelBackground:{type:\"boolean\",rebuild:!0},labelBackgroundColor:{type:\"color\",buffer:\"backgroundColor\"},labelBackgroundMargin:{type:\"number\",precision:2,max:2,min:0,rebuild:!0},labelBackgroundOpacity:{type:\"range\",step:.01,max:1,min:0,buffer:\"backgroundOpacity\"},labelFixedSize:{type:\"boolean\",buffer:\"fixedSize\"},lineOpacity:{type:\"range\",min:0,max:1,step:.01},linewidth:{type:\"integer\",max:50,min:1,buffer:!0}},this.parameters,{flatShaded:null})}init(t){const e=t||{};this.labelVisible=st(e.labelVisible,!0),this.labelSize=st(e.labelSize,2),this.labelColor=st(e.labelColor,16777215),this.labelFontFamily=st(e.labelFontFamily,\"sans-serif\"),this.labelFontStyle=st(e.labelFontstyle,\"normal\"),this.labelFontWeight=st(e.labelFontWeight,\"bold\"),this.labelsdf=st(e.labelsdf,\"Chrome\"===Ae),this.labelXOffset=st(e.labelXOffset,0),this.labelYOffset=st(e.labelYOffset,0),this.labelZOffset=st(e.labelZOffset,.5),this.labelAttachment=st(e.labelAttachment,\"bottom-left\"),this.labelBorder=st(e.labelBorder,!1),this.labelBorderColor=st(e.labelBorderColor,\"lightgrey\"),this.labelBorderWidth=st(e.labelBorderWidth,.15),this.labelBackground=st(e.labelBackground,!1),this.labelBackgroundColor=st(e.labelBackgroundColor,\"lightgrey\"),this.labelBackgroundMargin=st(e.labelBackgroundMargin,.5),this.labelBackgroundOpacity=st(e.labelBackgroundOpacity,1),this.labelFixedSize=st(e.labelFixedSize,!1),this.lineOpacity=st(e.lineOpacity,1),this.linewidth=st(e.linewidth,2),super.init(e)}update(t){t.position?this.build():super.update(t)}updateData(t,e){const i={};if(t&&!t.labelSize||Object.assign(i,{size:Si(this.n,this.labelSize)}),!t||t.labelColor){const t=new s(this.labelColor);Object.assign(i,{color:Ci(this.n,t.r,t.g,t.b)})}this.textBuffer.setAttributes(i)}setParameters(t,e={},i=!1){return t&&t.labelSize&&(e.labelSize=!0),t&&(t.labelColor||0===t.labelColor)&&(e.labelColor=!0,i=!0),super.setParameters(t,e,i),t&&void 0!==t.opacity&&this.textBuffer.setParameters({opacity:1}),t&&void 0!==t.labelVisible&&this.setVisibility(this.visible),this}setVisibility(t,e){return super.setVisibility(t,!0),this.textBuffer&&this.textBuffer.setVisibility(this.labelVisible&&this.visible),e||this.viewer.requestRender(),this}getLabelBufferParams(t={}){return super.getBufferParams(Object.assign({fontFamily:this.labelFontFamily,fontStyle:this.labelFontStyle,fontWeight:this.labelFontWeight,sdf:this.labelsdf,xOffset:this.labelXOffset,yOffset:this.labelYOffset,zOffset:this.labelZOffset,attachment:this.labelAttachment,showBorder:this.labelBorder,borderColor:this.labelBorderColor,borderWidth:this.labelBorderWidth,showBackground:this.labelBackground,backgroundColor:this.labelBackgroundColor,backgroundMargin:this.labelBackgroundMargin,backgroundOpacity:this.labelBackgroundOpacity,fixedSize:this.labelFixedSize,disablePicking:!0,visible:this.labelVisible},t,{opacity:1}))}getAtomRadius(){return 0}}function Ph(t,e){const i=t.getAtomProxy(),r=new pe,s=e.length;if(0===s)return new Float32Array(0);const n=e[0].length,o=t.getAtomSet(),a=new Float32Array(s*n*3);let c=0;return e.forEach((function(e){let s=!1;for(let l=0;l 1.0 ){\\ngl_FragColor = vec4( backgroundColor, backgroundOpacity );\\n}else{\\nfloat sdf = texture2D( fontTexture, texCoord ).a;\\nif( showBorder ) sdf += borderWidth;\\nfloat a = smoothstep(padding - gamma, padding + gamma, sdf);\\nif( a < 0.2 ) discard;\\na *= opacity;\\nvec3 outgoingLight = vColor;\\nif( showBorder && sdf < ( padding + borderWidth ) ){\\noutgoingLight = borderColor;\\n}\\ngl_FragColor = vec4( outgoingLight, a );\\n}\\n#if defined( PICKING )\\nif( opacity < 0.3 )\\ndiscard;\\ngl_FragColor = vec4( vPickingColor, objectId );\\n#else\\n#include premultiplied_alpha_fragment\\n#include tonemapping_fragment\\n#include encodings_fragment\\n#include fog_fragment\\n#endif\\n}\");const Th={};const Bh={font:\"sans-serif\",size:36,style:\"normal\",variant:\"normal\",weight:\"normal\",outline:3,width:1024,height:1024};class Dh{constructor(t={}){this.gamma=1,this.mapped={},this.scratchW=0,this.scratchH=0,this.currentX=0,this.currentY=0,this.cutoff=.25,this.parameters=nt(t,Bh);const e=this.parameters;this.radius=e.size/8,this.padding=e.size/3;const i=this.lineHeight=e.size+2*e.outline+Math.round(e.size/4),r=this.maxWidth=e.width/4,s=this.canvas=document.createElement(\"canvas\");s.width=r,s.height=i;const n=this.context=this.canvas.getContext(\"2d\");n.font=`${e.style} ${e.variant} ${e.weight} ${e.size}px ${e.font}`,n.fillStyle=\"black\",n.textAlign=\"left\",n.textBaseline=\"bottom\",n.lineJoin=\"round\",this.gridOuter=new Float64Array(i*r),this.gridInner=new Float64Array(i*r),this.f=new Float64Array(Math.max(i,r)),this.d=new Float64Array(Math.max(i,r)),this.z=new Float64Array(Math.max(i,r)+1),this.v=new Int16Array(Math.max(i,r)),this.data=new Uint8Array(e.width*e.height*4),this.canvas2=document.createElement(\"canvas\"),this.canvas2.width=e.width,this.canvas2.height=e.height,this.context2=this.canvas2.getContext(\"2d\"),this.placeholder=this.map(String.fromCharCode(65533));for(let t=32;t<=126;++t)this.map(String.fromCharCode(t));this.map(String.fromCharCode(176)),this.map(String.fromCharCode(8491)),this.texture=new H(this.canvas2),this.texture.flipY=!1,this.texture.needsUpdate=!0}map(t){const e=this.parameters;return void 0===this.mapped[t]&&(this.draw(t),this.currentX+this.scratchW>e.width&&(this.currentX=0,this.currentY+=this.scratchH),this.currentY+this.scratchH>e.height&&console.warn(\"canvas to small\"),this.mapped[t]={x:this.currentX,y:this.currentY,w:this.scratchW,h:this.scratchH},this.context2.drawImage(this.canvas,0,0,this.scratchW,this.scratchH,this.currentX,this.currentY,this.scratchW,this.scratchH),this.currentX+=this.scratchW),this.mapped[t]}get(t){return this.mapped[t]||this.placeholder}draw(t){const e=this.parameters,i=this.lineHeight,r=e.outline,s=this.context,n=this.maxWidth,o=r,a=i-e.outline,c=s.measureText(t),l=Math.min(n,Math.ceil(c.width+2*o+1)),h=l*i;s.clearRect(0,0,l,i),s.fillText(t,o,a);const d=s.getImageData(0,0,l,i),u=d.data;for(let t=0;t= 0.0 ) {\\ntrimSegment( start, end );\\n} else if ( end.z < 0.0 && start.z >= 0.0 ) {\\ntrimSegment( end, start );\\n}\\n}\\nvec4 clipStart = projectionMatrix * start;\\nvec4 clipEnd = projectionMatrix * end;\\nvec2 ndcStart = clipStart.xy / clipStart.w;\\nvec2 ndcEnd = clipEnd.xy / clipEnd.w;\\nvec2 dir = ndcEnd - ndcStart;\\ndir.x *= aspect;\\ndir = normalize( dir );\\nvec2 offset = vec2( dir.y, - dir.x );\\ndir.x /= aspect;\\noffset.x /= aspect;\\nif ( mapping.x < 0.0 ) offset *= - 1.0;\\noffset *= linewidth;\\noffset /= resolution.y;\\nvec4 clip = ( mapping.y < 0.5 ) ? clipStart : clipEnd;\\noffset *= clip.w;\\nclip.xy += offset;\\ngl_Position = clip;\\n#ifndef PICKING\\nvViewPosition = ( projectionMatrixInverse * clip ).xyz;\\n#endif\\n#if defined( RADIUS_CLIP )\\nvClipCenter = -( modelViewMatrix * vec4( clipCenter, 1.0 ) ).xyz;\\n#endif\\n#include nearclip_vertex\\n}\"),Ve.add(\"shader/WideLine.frag\",\"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float clipNear;\\nuniform float clipRadius;\\n#if defined( RADIUS_CLIP )\\nvarying vec3 vClipCenter;\\n#endif\\n#ifdef PICKING\\nuniform float objectId;\\nvarying vec3 vPickingColor;\\n#else\\n#include common\\n#include fog_pars_fragment\\nvarying vec3 vViewPosition;\\nvarying vec3 vColor;\\nvarying vec3 vColor2;\\nvarying float flag;\\n#endif\\nvoid main() {\\n#include nearclip_fragment\\n#include radiusclip_fragment\\n#if defined( PICKING )\\nif( opacity < 0.3 )\\ndiscard;\\ngl_FragColor = vec4( vPickingColor, objectId );\\n#else\\nvec3 outgoingLight = vec3( 0.0 );\\nvec4 diffuseColor = vec4( diffuse, 1.0 );\\nif ( flag < 0.0 ) {\\ndiffuseColor.rgb *= vColor;\\n} else {\\ndiffuseColor.rgb *= vColor2;\\n}\\n#include alphatest_fragment\\noutgoingLight = diffuseColor.rgb;\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a * opacity );\\n#include premultiplied_alpha_fragment\\n#include tonemapping_fragment\\n#include encodings_fragment\\n#include fog_fragment\\n#endif\\n}\");const Fh=Object.assign({linewidth:2},zo),Lh=Object.assign({linewidth:{uniform:!0}},Vo);class Nh extends zc{constructor(e,r={}){super(e,r),this.parameterTypes=Lh,this.vertexShader=\"WideLine.vert\",this.fragmentShader=\"WideLine.frag\",!e.color2&&e.color&&(e.color2=e.color),this.addUniforms({linewidth:{value:this.parameters.linewidth},resolution:{value:new t},projectionMatrixInverse:{value:new i}}),this.addAttributes({position1:{type:\"v3\",value:null},position2:{type:\"v3\",value:null},color2:{type:\"c\",value:null}}),this.setAttributes(e),this.makeMapping()}get defaultParameters(){return Fh}setParameters(t){super.setParameters(t)}}je.add(\"wideline\",Nh);class zh extends Ch{constructor(t,e,i){super(t,e,i),this.type=\"angle\",this.parameters=Object.assign({atomTriple:{type:\"hidden\",rebuild:!0},vectorVisible:{type:\"boolean\",default:!0},arcVisible:{type:\"boolean\",default:!0},sectorVisible:{type:\"boolean\",default:!0}},this.parameters),this.init(i)}init(t){const e=t||{};e.side=st(e.side,\"double\"),e.opacity=st(e.opacity,.5),this.atomTriple=st(e.atomTriple,[]),this.arcVisible=st(e.arcVisible,!0),this.sectorVisible=st(e.sectorVisible,!0),this.vectorVisible=st(e.vectorVisible,!0),super.init(e)}createData(t){if(!t.atomCount||!this.atomTriple.length)return;const e=function(t,e){return function(t){const e=[],i=t.length/9;for(let r=0;r radius2) {\\ndiscard;\\n}\\n#ifdef CAP\\nsurface_point = front_point;\\n_normal = axis;\\n#else\\nsurface_point = ray_target + ( (-a1 - sqrt(d)) / a2 ) * ray_direction;\\ndNV = dot(-axis, ray_direction);\\nnear = dot(axis, end) / dNV;\\nnew_point2 = ray_direction * near + ray_origin;\\nif (dot(new_point2 - end, new_point2-base) < radius2) {\\ndiscard;\\n}\\ninterior = true;\\n#endif\\n}\\nif( end_cap_test > 0.0 )\\n{\\nfloat dNV;\\nfloat near;\\nvec3 end_point;\\nif ( ortho == 1.0 ) {\\nend_point = ray_target;\\n} else {\\ndNV = dot(axis, ray_direction);\\nif (dNV < 0.0) {\\ndiscard;\\n}\\nnear = dot(axis, end) / dNV;\\nend_point = ray_direction * near + ray_origin;\\n}\\n\\nif( dot(end_point - end, end_point-base) > radius2 ) {\\ndiscard;\\n}\\n#ifdef CAP\\nsurface_point = end_point;\\n_normal = axis;\\n#else\\nsurface_point = ray_target + ( (-a1 - sqrt(d)) / a2 ) * ray_direction;\\ndNV = dot(-axis, ray_direction);\\nnear = dot(-axis, (base)) / dNV;\\nnew_point2 = ray_direction * near + ray_origin;\\nif (dot(new_point2 - base, new_point2-base) < radius2) {\\ndiscard;\\n}\\ninterior = true;\\n#endif\\n}\\ngl_FragDepthEXT = calcDepth( surface_point );\\n\\n#ifdef NEAR_CLIP\\nif( calcClip( surface_point ) > 0.0 ){\\ndist = (-a1 - sqrt(d)) / a2;\\nsurface_point = ray_target + dist * ray_direction;\\nif( calcClip( surface_point ) > 0.0 ) {\\ndiscard;\\n}\\ninterior = true;\\ngl_FragDepthEXT = calcDepth( surface_point );\\nif( gl_FragDepthEXT >= 0.0 ){\\ngl_FragDepthEXT = max( 0.0, calcDepth( vec3( - ( clipNear - 0.5 ) ) ) + ( 0.0000001 / vRadius ) );\\n}\\n}else if( gl_FragDepthEXT <= 0.0 ){\\ndist = (-a1 - sqrt(d)) / a2;\\nsurface_point = ray_target + dist * ray_direction;\\ninterior = true;\\ngl_FragDepthEXT = calcDepth( surface_point );\\nif( gl_FragDepthEXT >= 0.0 ){\\ngl_FragDepthEXT = 0.0 + ( 0.0000001 / vRadius );\\n}\\n}\\n#else\\nif( gl_FragDepthEXT <= 0.0 ){\\ndist = (-a1 - sqrt(d)) / a2;\\nsurface_point = ray_target + dist * ray_direction;\\ninterior = true;\\ngl_FragDepthEXT = calcDepth( surface_point );\\nif( gl_FragDepthEXT >= 0.0 ){\\ngl_FragDepthEXT = 0.0 + ( 0.0000001 / vRadius );\\n}\\n}\\n#endif\\nif (gl_FragDepthEXT < 0.0) {\\ndiscard;\\n}\\nif (gl_FragDepthEXT > 1.0) {\\ndiscard;\\n}\\n#ifdef PICKING\\nif( opacity < 0.3 )\\ndiscard;\\ngl_FragColor = vec4( vPickingColor, objectId );\\n#else\\nvec3 vViewPosition = -surface_point;\\nvec3 vNormal = _normal;\\nvec3 vColor;\\nif( distSq3( surface_point, end ) < distSq3( surface_point, base ) ){\\nif( b < 0.0 ){\\nvColor = vColor1;\\n}else{\\nvColor = vColor2;\\n}\\n}else{\\nif( b > 0.0 ){\\nvColor = vColor1;\\n}else{\\nvColor = vColor2;\\n}\\n}\\nvec4 diffuseColor = vec4( diffuse, opacity );\\nReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\nvec3 totalEmissiveLight = emissive;\\n#include color_fragment\\n#include roughnessmap_fragment\\n#include metalnessmap_fragment\\nvec3 normal = normalize( vNormal );\\nvec3 geometryNormal = normal;\\n#include lights_physical_fragment\\n#include lights_fragment_begin\\n#include lights_fragment_end\\nvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveLight;\\nif( interior ){\\n#ifdef USE_INTERIOR_COLOR\\noutgoingLight.xyz = interiorColor;\\n#else\\n#ifdef DIFFUSE_INTERIOR\\noutgoingLight.xyz = vColor;\\n#endif\\n#endif\\noutgoingLight.xyz *= 1.0 - interiorDarkening;\\n}\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n#include premultiplied_alpha_fragment\\n#include tonemapping_fragment\\n#include encodings_fragment\\n#include fog_fragment\\n#endif\\n}\");const Xh=new Float32Array([-1,1,-1,-1,-1,-1,1,1,-1,1,1,1,1,-1,-1,1,-1,1]),Yh=new Uint16Array([0,1,2,1,4,2,2,4,3,4,5,3]);class Kh extends Fc{constructor(t,e={}){super(\"v3\",t,e)}get mapping(){return Xh}get mappingIndices(){return Yh}get mappingIndicesSize(){return 12}get mappingSize(){return 6}get mappingItemSize(){return 3}}const Zh=Object.assign({openEnded:!1},zo),Qh=Object.assign({openEnded:{updateShader:!0}},Vo);class Jh extends Kh{constructor(t,e={}){super(t,e),this.parameterTypes=Qh,this.isImpostor=!0,this.vertexShader=\"CylinderImpostor.vert\",this.fragmentShader=\"CylinderImpostor.frag\",this.addUniforms({modelViewMatrixInverse:{value:new i},ortho:{value:0}}),this.addAttributes({position1:{type:\"v3\",value:null},position2:{type:\"v3\",value:null},color2:{type:\"c\",value:null},radius:{type:\"f\",value:null}}),this.setAttributes(t),this.makeMapping()}get defaultParameters(){return Zh}getDefines(t){const e=Kh.prototype.getDefines.call(this,t);return this.parameters.openEnded||(e.CAP=1),e}}Object.assign({disableImpostor:!1},Hh,Zh);const td=class{constructor(t,e={}){return!t.color2&&t.color&&(t.color2=t.color),!Ie||e&&e.disableImpostor?new qh(t,e):new Jh(t,e)}};je.add(\"cylinder\",td);class ed extends Sh{constructor(t,e,i){super(t,e,i),this.type=\"axes\",this.parameters=Object.assign({radiusSize:{type:\"number\",precision:3,max:10,min:.001},sphereDetail:!0,radialSegments:!0,disableImpostor:!0,showAxes:{type:\"boolean\",rebuild:!0},showBox:{type:\"boolean\",rebuild:!0}},this.parameters,{assembly:null}),this.init(i)}init(t){const e=t||{};e.radiusSize=st(e.radiusSize,.5),e.colorValue=st(e.colorValue,\"lightgreen\"),e.useInteriorColor=st(e.useInteriorColor,!0),this.showAxes=st(e.showAxes,!0),this.showBox=st(e.showBox,!1),super.init(e)}getPrincipalAxes(){let t;const e=this.getAssembly();return e&&(t=e.partList[0].getSelection()),this.structureView.getPrincipalAxes(t)}getAxesData(t){const i=this.getPrincipalAxes(),r=new s(this.colorValue);let n=0,o=0;this.showAxes&&(n+=6,o+=3),this.showBox&&(n+=8,o+=12);const a=new Float32Array(3*n),c=Ci(n,r.r,r.g,r.b),l=Si(n,this.radiusSize),h=new Float32Array(3*o),d=new Float32Array(3*o),u=Ci(o,r.r,r.g,r.b),m=Si(o,this.radiusSize);let p=0;if(this.showAxes){const t=function(t,e){t.toArray(a,2*p),e.toArray(a,2*p+3),t.toArray(h,p),e.toArray(d,p),p+=3};t(i.begA,i.endA),t(i.begB,i.endB),t(i.begC,i.endC)}if(this.showBox){const r=new e,{d1a:s,d2a:n,d3a:o,d1b:c,d2b:l,d3b:u}=i.getProjectedScaleForAtoms(t);let m=2*p;const f=function(t,e,s){r.copy(i.center).addScaledVector(i.normVecA,t).addScaledVector(i.normVecB,e).addScaledVector(i.normVecC,s),r.toArray(a,m),m+=3};f(s,n,o),f(s,n,u),f(s,l,u),f(s,l,o),f(c,l,u),f(c,l,o),f(c,n,o),f(c,n,u);let g=p;const y=function(t,e){r.fromArray(a,2*p+3*t).toArray(h,g),r.fromArray(a,2*p+3*e).toArray(d,g),g+=3};y(0,1),y(0,3),y(0,6),y(1,2),y(1,7),y(2,3),y(2,4),y(3,5),y(4,5),y(4,7),y(5,6),y(6,7)}const f=new Kn(i);return{vertex:{position:a,color:c,radius:l,picking:f},edge:{position1:h,position2:d,color:u,color2:u,radius:m,picking:f}}}create(){const t=this.getAxesData(this.structureView);this.sphereBuffer=new Gc(t.vertex,this.getBufferParams({sphereDetail:this.sphereDetail,disableImpostor:this.disableImpostor,dullInterior:!0})),this.cylinderBuffer=new td(t.edge,this.getBufferParams({openEnded:!0,radialSegments:this.radialSegments,disableImpostor:this.disableImpostor,dullInterior:!0})),this.dataList.push({sview:this.structureView,bufferList:[this.sphereBuffer,this.cylinderBuffer]})}createData(t){}updateData(t,e){const i=this.getAxesData(e.sview),r={},s={};t&&!t.position||(Object.assign(r,{position:i.vertex.position}),Object.assign(s,{position1:i.edge.position1,position2:i.edge.position2})),t&&!t.color||(Object.assign(r,{color:i.vertex.color}),Object.assign(s,{color:i.edge.color,color2:i.edge.color})),t&&!t.radius||(Object.assign(r,{radius:i.vertex.radius}),Object.assign(s,{radius:i.edge.radius})),this.sphereBuffer.setAttributes(r),this.cylinderBuffer.setAttributes(s)}}Ne.add(\"axes\",ed);class id extends Sh{constructor(t,e,i){super(t,e,i),this.type=\"ball+stick\",this.parameters=Object.assign({sphereDetail:!0,radialSegments:!0,openEnded:!0,disableImpostor:!0,aspectRatio:{type:\"number\",precision:1,max:10,min:1},lineOnly:{type:\"boolean\",rebuild:!0},cylinderOnly:{type:\"boolean\",rebuild:!0},multipleBond:{type:\"select\",rebuild:!0,options:{off:\"off\",symmetric:\"symmetric\",offset:\"offset\"}},bondScale:{type:\"number\",precision:2,max:1,min:.01},bondSpacing:{type:\"number\",precision:2,max:2,min:.5},linewidth:{type:\"integer\",max:50,min:1,buffer:!0}},this.parameters),this.init(i)}init(t){var e=t||{};e.radiusType=st(e.radiusType,\"size\"),e.radiusSize=st(e.radiusSize,.15),e.useInteriorColor=st(e.useInteriorColor,!0),this.aspectRatio=st(e.aspectRatio,2),this.lineOnly=st(e.lineOnly,!1),this.cylinderOnly=st(e.cylinderOnly,!1),this.multipleBond=st(e.multipleBond,\"off\"),this.bondSpacing=st(e.bondSpacing,1),this.bondScale=st(e.bondScale,.4),this.linewidth=st(e.linewidth,2),super.init(e)}getAtomRadius(t){return this.aspectRatio*super.getAtomRadius(t)}getAtomParams(t,e){var i=super.getAtomParams(t,e);return i.radiusParams.scale*=this.aspectRatio,i}getAtomData(t,e,i){return t.getAtomData(this.getAtomParams(e,i))}getBondParams(t,e){return e=Object.assign({multipleBond:this.multipleBond,bondSpacing:this.bondSpacing,bondScale:this.bondScale},e),super.getBondParams(t,e)}getBondData(t,e,i){return t.getBondData(this.getBondParams(e,i))}createData(t){const e=[];if(this.lineOnly)this.lineBuffer=new Nh(this.getBondData(t,{position:!0,color:!0,picking:!0}),this.getBufferParams({linewidth:this.linewidth})),e.push(this.lineBuffer);else{const i=new td(this.getBondData(t),this.getBufferParams({openEnded:this.openEnded,radialSegments:this.radialSegments,disableImpostor:this.disableImpostor,dullInterior:!0}));if(e.push(i),!this.cylinderOnly){const i=new Gc(this.getAtomData(t),this.getBufferParams({sphereDetail:this.sphereDetail,disableImpostor:this.disableImpostor,dullInterior:!0}));e.push(i)}}return{bufferList:e}}updateData(t,e){\"off\"!==this.multipleBond&&t&&t.radius&&(t.position=!0);const i=this.getBondData(e.sview,t);if(this.lineOnly){const r={};t&&!t.position||Object.assign(r,{position1:i.position1,position2:i.position2}),t&&!t.color||Object.assign(r,{color:i.color,color2:i.color2}),e.bufferList[0].setAttributes(r)}else{var r={};if(t&&!t.position||Object.assign(r,{position1:i.position1,position2:i.position2}),t&&!t.color||Object.assign(r,{color:i.color,color2:i.color2}),t&&!t.radius||Object.assign(r,{radius:i.radius}),e.bufferList[0].setAttributes(r),!this.cylinderOnly){var s=this.getAtomData(e.sview,t),n={};t&&!t.position||Object.assign(n,{position:s.position}),t&&!t.color||Object.assign(n,{color:s.color}),t&&!t.radius||Object.assign(n,{radius:s.radius}),e.bufferList[1].setAttributes(n)}}}setParameters(t={}){let e=!1;const i={};return(t.aspectRatio||t.bondSpacing||t.bondScale)&&(Object.assign(i,{radius:!0}),Ie&&!this.disableImpostor||(e=!0)),super.setParameters(t,i,e),this}}Ne.add(\"ball+stick\",id);class rd extends id{constructor(t,e,i){super(t,e,i),this.type=\"backbone\",this.parameters=Object.assign({},this.parameters,{multipleBond:null,bondSpacing:null}),this.init(i)}init(t){var e=t||{};e.aspectRatio=st(e.aspectRatio,1),e.radiusSize=st(e.radiusSize,.25),super.init(e)}getAtomRadius(t){return t.isTrace()?super.getAtomRadius(t):0}getAtomData(t,e,i){return t.getBackboneAtomData(this.getAtomParams(e,i))}getBondData(t,e,i){return t.getBackboneBondData(this.getBondParams(e,i))}}Ne.add(\"backbone\",rd);class sd extends id{constructor(t,e,i){super(t,e,i),this.type=\"base\",this.parameters=Object.assign({},this.parameters,{multipleBond:null,bondSpacing:null})}init(t){let e=t||{};e.aspectRatio=st(e.aspectRatio,1),e.radiusSize=st(e.radiusSize,.3),super.init(e)}getAtomData(t,e,i){return t.getRungAtomData(this.getAtomParams(e,i))}getBondData(t,e,i){let r=this.getBondParams(e,i);return Object.assign(r.colorParams,{rung:!0}),t.getRungBondData(r)}}Ne.add(\"base\",sd);class nd{constructor(t,i){this.m=t,this.tension=i,this.dt=1/this.m,this.delta=1e-4,this.vec1=new e,this.vec2=new e,this.vDir=new e,this.vTan=new e,this.vNorm=new e,this.vBin=new e,this.m2=Math.ceil(this.m/2)}interpolateToArr(t,e,i,r,s,n,o){n[o+0]=Ot(t.x,e.x,i.x,r.x,s,this.tension),n[o+1]=Ot(t.y,e.y,i.y,r.y,s,this.tension),n[o+2]=Ot(t.z,e.z,i.z,r.z,s,this.tension)}interpolateToVec(t,e,i,r,s,n){n.x=Ot(t.x,e.x,i.x,r.x,s,this.tension),n.y=Ot(t.y,e.y,i.y,r.y,s,this.tension),n.z=Ot(t.z,e.z,i.z,r.z,s,this.tension)}interpolatePosition(t,e,i,r,s,n){for(var o=0;o1&&(l=1),this.interpolateToVec(t,e,i,r,c,this.vec1),this.interpolateToVec(t,e,i,r,l,this.vec2),this.vec2.sub(this.vec1).normalize(),this.vec2.toArray(s,h)}}vectorSubdivide(t,e,i,r,s){let n,o=e.next(),a=e.next(),c=e.next();const l=e.size,h=l-1;let d=r||0;for(let r=0;r0&&e{if(t.residueCount<4)return;i.push(t);const r=this.getSpline(t),s=this.getAspectRatio(t),n=r.getSubdividedPosition(),o=r.getSubdividedOrientation(),a=r.getSubdividedColor(this.getColorParams()),c=r.getSubdividedPicking(),l=r.getSubdividedSize(this.getRadiusParams());e.push(new hd(Object.assign({},n,o,a,c,l),this.getBufferParams({radialSegments:this.radialSegments,aspectRatio:s,capped:this.capped})))}),t.getSelection()),{bufferList:e,polymerList:i}}updateData(t,e){De&&Me.time(this.type+\" repr update\"),t=t||{};for(var i=0,r=e.polymerList.length;i0;Qr(A,b,_);const s=Zr(A,v)<0;if(ns(A,v,Zr(v,x)),Qr(S,x,A),ns(A,v,Zr(v,w)),Qr(C,w,A),0===rs(S)||0===rs(C))continue;os(S,S),os(C,C);const D=n[T]=us(S,C);a[T]=(vi*D).toFixed(1)+String.fromCharCode(176),Kr(k,S,v),os(k,k),Zr(k,C)<0&&ds(k,k),Ih(A,_,S,k,D/2),es(A,o,3*T);const $=Math.ceil(D/i),O=$+(e.extendLine?4:2),R=e.extendLine?36:0,E=new Float32Array(3*O),F=new Float32Array(3*O),L=new Float32Array(9*$),N=new Float32Array(R);c[T]=E,l[T]=F,h[T]=L,d[T]=N,e.extendLine&&(r?(Qr(A,f,y),os(A,A),ns(P,A,1/Zr(S,A)),Jr(P,P,y)):(ns(P,x,1/Zr(S,x)),Jr(P,P,g)),s?(Qr(A,b,g),os(A,A),ns(I,A,1/Zr(C,A)),Jr(I,I,g)):(ns(I,w,1/Zr(C,w)),Jr(I,I,y))),Jr(M,_,S);let z=0;e.extendLine?(es(f,E,z),es(P,F,z),z+=3,es(P,E,z),es(M,F,z),z+=3,es(P,N,0),es(M,N,3),es(r?y:g,N,6),es(r?y:g,N,9),es(M,N,12),es(_,N,15)):(es(_,E,z),es(M,F,z),z+=3);const V=function(t,e){const i=9*e;es(_,L,i),es(M,L,i+3),es(M,E,z),Ih(M,_,S,k,t),es(M,L,i+6),es(M,F,z),z+=3};let G=0;for(let t=i;t{const e=pd(i,t);Object.assign(t,e)})),e.side=st(e.side,\"double\"),e.opacity=st(e.opacity,.5),e.radiusType=st(e.radiusType,\"size\"),e.radiusSize=st(e.radiusSize,.15),super.init(e)}getHistogramBinBorderBufferParameters(){return this.getBufferParams({linewidth:this.histogramBinBorderWidth,visible:this.histogramBinBorderVisible,opacity:this.histogramBinBorderOpacity})}getBondArrowsBufferParameters(){return this.getBufferParams({linewidth:this.bondArrowWidth,visible:this.bondArrowVisible,opacity:this.bondArrowOpacity})}getOpaqueMiddleDiscBufferParameters(){return this.getBufferParams({visible:this.opaqueMiddleDiscVisible,opacity:this.opaqueMiddleDiscOpacity})}getHistogramBufferParameters(){return this.getBufferParams({visible:!0,opacity:this.histogramOpacity,side:\"double\"})}createData(t){if(!t.atomCount||!this.histogramsData.length)return;this.histogramsData.forEach((e=>e.atomPositions=Ph(t,[e.atomQuad])));const e=this.scaleBinToSectorArea?function(t){return Math.sqrt(t)}:function(t){return t};function i(t){const e=t.map((t=>t.length)),i=new Float32Array($i(e));let r=0;for(let e=0;et.startPoints))),position2:i(t.map((t=>t.endPoints))),color:i(t.map((t=>t.startColors))),color2:i(t.map((t=>t.endColors)))},e)}function s(t,e){return new Uo({position:i(t.map((t=>t.triangles))),color:i(t.map((t=>t.triangleColors)))},e)}this.histogramsData.forEach((t=>t.histogram360Scaled=t.histogram360.map(e)));const n=[];for(let t=0;t=3&&(e=yd(i)),void 0!==e&&n.push(e)}return this.frontHistogramBinBordersBuffer=r(n.map((t=>t.frontHistogramBinBorders)),this.getHistogramBinBorderBufferParameters()),this.backHistogramBinBordersBuffer=r(n.map((t=>t.backHistogramBinBorders)),this.getHistogramBinBorderBufferParameters()),this.adjacentBondArrowsBuffer=r(n.map((t=>t.adjacentBondArrows)),this.getBondArrowsBufferParameters()),this.distantBondArrowsBuffer=r(n.map((t=>t.distantBondArrows)),this.getBondArrowsBufferParameters()),this.opaqueMiddleDiscBuffer=s(n.map((t=>t.opaqueMiddleDisc)),this.getOpaqueMiddleDiscBufferParameters()),this.frontHistogramBuffer=s(n.map((t=>t.frontHistogram)),this.getHistogramBufferParameters()),this.backHistogramBuffer=s(n.map((t=>t.backHistogram)),this.getHistogramBufferParameters()),{bufferList:[].concat(this.frontHistogramBinBordersBuffer,this.backHistogramBinBordersBuffer,this.adjacentBondArrowsBuffer,this.distantBondArrowsBuffer,this.opaqueMiddleDiscBuffer,this.frontHistogramBuffer,this.backHistogramBuffer)}}setParameters(t){return super.setParameters(t,{},!1),t&&void 0!==t.histogramBinBorderVisible&&this.setVisibility(this.visible),this}setVisibility(t,e){return super.setVisibility(t,!0),this.frontHistogramBinBordersBuffer&&this.frontHistogramBinBordersBuffer.setVisibility(this.histogramBinBorderVisible),this.backHistogramBinBordersBuffer&&this.backHistogramBinBordersBuffer.setVisibility(this.histogramBinBorderVisible),e||this.viewer.requestRender(),this}}function yd(t){const e=t.atomPositions,i=t.histogram360Scaled,r=i.length<=180?360:2*i.length,s={triangles:new Float32Array(3*r*3),triangleColors:fd(t.opaqueMiddleDiscColor,3*r)},n={triangles:new Float32Array(3*i.length*3),triangleColors:fd(t.frontHistogramColor,3*i.length)},o={triangles:new Float32Array(3*i.length*3),triangleColors:fd(t.backHistogramColor,3*i.length)},a={startPoints:new Float32Array(3*i.length),endPoints:new Float32Array(3*i.length),startColors:fd(t.histogramBinBorderColor,i.length),endColors:fd(t.histogramBinBorderColor,i.length)},c={startPoints:new Float32Array(3*i.length),endPoints:new Float32Array(3*i.length),startColors:fd(t.histogramBinBorderColor,i.length),endColors:fd(t.histogramBinBorderColor,i.length)},l={startPoints:new Float32Array(6),endPoints:new Float32Array(6),startColors:fd(t.adjacentBondArrowColor,i.length),endColors:fd(t.adjacentBondArrowColor,i.length)},h={startPoints:new Float32Array(6),endPoints:new Float32Array(6),startColors:fd(t.distantBondArrowColor,i.length),endColors:fd(t.distantBondArrowColor,i.length)},d=Yr(),u=Yr(),m=Yr(),p=Yr(),f=Yr(),g=Yr(),y=Yr(),b=Yr(),x=Yr(),v=Yr(),w=Yr(),A=Yr(),_=Yr(),S=Yr(),C=Yr(),P=Yr(),I=[d,u,m,p];for(let t=0;t{let u=e[0],m=e[1];if(\"number\"==typeof u&&Number.isInteger(u)&&\"number\"==typeof m&&Number.isInteger(m)){if(!d.get(u)||!d.get(m))return void(h+=1);c.index=u,l.index=m}else{n.setString(u),o.setString(m);var p=t.getAtomIndices(n),f=t.getAtomIndices(o);if(!p.length||!f.length)return void(h+=1);c.index=p[0],l.index=f[0]}a.addBond(c,l,1),i-=h;var g=c.distanceTo(l);switch(this.labelUnit){case\"angstrom\":r[i]=g.toFixed(2)+\" \"+String.fromCharCode(8491);break;case\"nm\":r[i]=(g/10).toFixed(2)+\" nm\";break;default:r[i]=g.toFixed(2)}var y=3*i;s[y+0]=(c.x+l.x)/2,s[y+1]=(c.y+l.y)/2,s[y+2]=(c.z+l.z)/2})),h>0&&(i-=h,s=s.subarray(0,3*i));var u=new Os(a.count,!0);return{text:r,position:s,bondSet:u,bondStore:a}}getBondData(t,e,i){const r=t.getBondData(this.getBondParams(e,i));return r.picking&&(r.picking=new to(r.picking.array,r.picking.structure,i.bondStore)),r}createData(t){if(!t.atomCount||!this.atomPair.length)return;const e=this.atomPair.length,i=new s(this.labelColor),r=this.getDistanceData(t,this.atomPair);this.textBuffer=new Eh({position:r.position,size:Si(e,this.labelSize),color:Ci(e,i.r,i.g,i.b),text:r.text},this.getLabelBufferParams());const n={bondSet:r.bondSet,bondStore:r.bondStore},o=this.getBondData(t,{position:!0,color:!0,picking:!0,radius:this.useCylinder},n);return this.useCylinder?this.distanceBuffer=new td(o,this.getBufferParams({openEnded:this.openEnded,radialSegments:this.radialSegments,disableImpostor:this.disableImpostor,dullInterior:!0})):this.distanceBuffer=new Nh(ps(o),this.getBufferParams({linewidth:this.linewidth,visible:this.lineVisible,opacity:this.lineOpacity})),{bondSet:r.bondSet,bondStore:r.bondStore,position:r.position,bufferList:[this.textBuffer,this.distanceBuffer]}}updateData(t,e){super.updateData(t,e);const i={bondSet:e.bondSet,bondStore:e.bondStore},r=this.getBondData(e.sview,t,i),s={};t&&!t.color||Object.assign(s,{color:r.color,color2:r.color2}),t&&!t.radius||Object.assign(s,{radius:r.radius}),this.distanceBuffer.setAttributes(s)}setParameters(t){return super.setParameters(t,{},!1),this.useCylinder||(t&&t.lineOpacity&&this.distanceBuffer.setParameters({opacity:t.lineOpacity}),t&&void 0!==t.opacity&&this.distanceBuffer.setParameters({opacity:this.lineOpacity}),t&&t.linewidth&&this.distanceBuffer.setParameters({linewidth:t.linewidth})),this}}function xd(t){return 2*(t.position.length/3)*3}Ne.add(\"distance\",bd);const vd=Object.assign({scale:1,color:\"grey\"},zo);class wd extends Go{constructor(t,e={}){super({position:new Float32Array(xd(t)),color:new Float32Array(xd(t))},e),this.isLine=!0,this.vertexShader=\"Line.vert\",this.fragmentShader=\"Line.frag\";const i=new s(this.parameters.color),r=this.geometry.attributes;Ci(xd(t)/3,i.r,i.g,i.b,r.color.array),this.setAttributes(t)}get defaultParameters(){return vd}setAttributes(t={}){const e=this.geometry.attributes;let i,r,s;t.position&&t.vector&&(i=t.position,r=t.vector,s=e.position.array,e.position.needsUpdate=!0);const n=this.size/2,o=this.parameters.scale;if(i&&r)for(let t=0;t{if(t.residueCount<4)return;i.push(t);const r=new Ca(t),s=r.getPosition(),n=r.getColor(this.getColorParams()),o=r.getSize(this.getRadiusParams()),a=r.getPicking();e.push(new Gc({position:s.center,color:n.color,radius:o.size,picking:a.picking},this.getBufferParams({sphereDetail:this.sphereDetail,disableImpostor:this.disableImpostor,dullInterior:!0})),new wd({position:s.center,vector:s.axis},this.getBufferParams({color:\"skyblue\",scale:1})),new wd({position:s.center,vector:s.resdir},this.getBufferParams({color:\"lightgreen\",scale:1})))}),t.getSelection()),{bufferList:e,polymerList:i}}updateData(t,e){De&&Me.time(this.type+\" repr update\"),t=t||{};for(let i=0,r=e.polymerList.length;i radius2) {\\nspaceposition.y = mapping.y * 1.5 * radius1;\\nspaceposition.x = mapping.x * 1.5 * radius1;\\n} else {\\nspaceposition.y = mapping.y * 1.5 * radius2;\\nspaceposition.x = mapping.x * 1.5 * radius2;\\n}\\nspaceposition.w = 1.0;\\nvec4 e3 = vec4( 1.0 );\\nvec3 e1, e1_temp, e2, e2_temp;\\ne3.xyz = normalize(position_atom1-position_atom2);\\nif (e3.z == 0.0) { e3.z = 0.0000000000001;}\\nif ( (position_atom1.x - position_atom2.x) == 0.0) { position_atom1.x += 0.001;}\\nif ( (position_atom1.y - position_atom2.y) == 0.0) { position_atom1.y += 0.001;}\\nif ( (position_atom1.z - position_atom2.z) == 0.0) { position_atom1.z += 0.001;}\\nvec4 focus = vec4( 1.0 );\\nfocus.x = ( position_atom1.x*position_atom1.x - position_atom2.x*position_atom2.x +\\n( radius2*radius2 - radius1*radius1 )*e3.x*e3.x/shrink )/(2.0*(position_atom1.x - position_atom2.x));\\nfocus.y = ( position_atom1.y*position_atom1.y - position_atom2.y*position_atom2.y +\\n( radius2*radius2 - radius1*radius1 )*e3.y*e3.y/shrink )/(2.0*(position_atom1.y - position_atom2.y));\\nfocus.z = ( position_atom1.z*position_atom1.z - position_atom2.z*position_atom2.z +\\n( radius2*radius2 - radius1*radius1 )*e3.z*e3.z/shrink )/(2.0*(position_atom1.z - position_atom2.z));\\ne1.x = 1.0;\\ne1.y = 1.0;\\ne1.z = ( (e3.x*focus.x + e3.y*focus.y + e3.z*focus.z) - e1.x*e3.x - e1.y*e3.y)/e3.z;\\ne1_temp = e1 - focus.xyz;\\ne1 = normalize(e1_temp);\\ne2_temp = e1.yzx * e3.zxy - e1.zxy * e3.yzx;\\ne2 = normalize(e2_temp);\\nmat3 R= mat3( e1.xyz, e2.xyz, e3.xyz );\\nvertex_position.xyz = R * spaceposition.xyz;\\nvertex_position.w = 1.0;\\nvertex_position.x += (position_atom1.x+position_atom2.x) / 2.0;\\nvertex_position.y += (position_atom1.y+position_atom2.y) / 2.0;\\nvertex_position.z += (position_atom1.z+position_atom2.z) / 2.0;\\ngl_Position = modelViewProjectionMatrix * vertex_position;\\nvec4 i_near, i_far;\\nvec4 near = gl_Position;\\nnear.z = 0.0 ;\\nnear = modelViewProjectionMatrixInverse * near;\\ni_near = near;\\nvec4 far = gl_Position;\\nfar.z = far.w ;\\ni_far = modelViewProjectionMatrixInverse * far;\\nprime1 = vec4( position_atom1 - (position_atom1 - focus.xyz)*shrink, 1.0 );\\nprime2 = vec4( position_atom2 - (position_atom2 - focus.xyz)*shrink, 1.0 );\\nfloat Rsquare = (radius1*radius1/shrink) - (\\n(position_atom1.x - focus.x)*(position_atom1.x - focus.x) +\\n(position_atom1.y - focus.y)*(position_atom1.y - focus.y) +\\n(position_atom1.z - focus.z)*(position_atom1.z - focus.z)\\n);\\nfocus.w = Rsquare;\\nmatrix_near = mat4( i_near, i_far, focus, e3 );\\ngl_Position.z = 1.0;\\n}\"),Ve.add(\"shader/HyperballStickImpostor.frag\",\"#define STANDARD\\n#define IMPOSTOR\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 interiorColor;\\nuniform float interiorDarkening;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\nuniform float clipNear;\\nuniform float shrink;\\nuniform mat4 modelViewMatrix;\\nuniform mat4 modelViewProjectionMatrix;\\nuniform mat4 modelViewMatrixInverseTranspose;\\nuniform mat4 projectionMatrix;\\nvarying mat4 matrix_near;\\nvarying vec4 prime1;\\nvarying vec4 prime2;\\nvarying float vRadius;\\nvarying float vRadius2;\\n#ifdef PICKING\\nuniform float objectId;\\nvarying vec3 vPickingColor;\\n#else\\nvarying vec3 vColor1;\\nvarying vec3 vColor2;\\n#include common\\n#include fog_pars_fragment\\n#include bsdfs\\n#include lights_pars_begin\\n#include lights_physical_pars_fragment\\n#endif\\nbool interior = false;\\nfloat calcClip( vec4 cameraPos ){\\nreturn dot( cameraPos, vec4( 0.0, 0.0, 1.0, clipNear - 0.5 ) );\\n}\\nfloat calcClip( vec3 cameraPos ){\\nreturn calcClip( vec4( cameraPos, 1.0 ) );\\n}\\nfloat calcDepth( in vec3 cameraPos ){\\nvec2 clipZW = cameraPos.z * projectionMatrix[2].zw + projectionMatrix[3].zw;\\nreturn 0.5 + 0.5 * clipZW.x / clipZW.y;\\n}\\nstruct Ray {\\nvec3 origin ;\\nvec3 direction ;\\n};\\nbool cutoff_plane (vec3 M, vec3 cutoff, vec3 x3){\\nfloat a = x3.x;\\nfloat b = x3.y;\\nfloat c = x3.z;\\nfloat d = -x3.x*cutoff.x-x3.y*cutoff.y-x3.z*cutoff.z;\\nfloat l = a*M.x+b*M.y+c*M.z+d;\\nif (l<0.0) {return true;}\\nelse{return false;}\\n}\\nvec3 isect_surf(Ray r, mat4 matrix_coef){\\nvec4 direction = vec4(r.direction, 0.0);\\nvec4 origin = vec4(r.origin, 1.0);\\nfloat a = dot(direction,(matrix_coef*direction));\\nfloat b = dot(origin,(matrix_coef*direction));\\nfloat c = dot(origin,(matrix_coef*origin));\\nfloat delta =b*b-a*c;\\ngl_FragColor.a = 1.0;\\nif (delta<0.0){\\ndiscard;\\n}\\nfloat t1 =(-b-sqrt(delta))/a;\\nreturn r.origin+t1*r.direction;\\n}\\nvec3 isect_surf2(Ray r, mat4 matrix_coef){\\nvec4 direction = vec4(r.direction, 0.0);\\nvec4 origin = vec4(r.origin, 1.0);\\nfloat a = dot(direction,(matrix_coef*direction));\\nfloat b = dot(origin,(matrix_coef*direction));\\nfloat c = dot(origin,(matrix_coef*origin));\\nfloat delta =b*b-a*c;\\ngl_FragColor.a = 1.0;\\nif (delta<0.0){\\ndiscard;\\n}\\nfloat t2 =(-b+sqrt(delta))/a;\\nreturn r.origin+t2*r.direction;\\n}\\nRay primary_ray(vec4 near1, vec4 far1){\\nvec3 near=near1.xyz/near1.w;\\nvec3 far=far1.xyz/far1.w;\\nreturn Ray(near,far-near);\\n}\\nfloat update_z_buffer(vec3 M, mat4 ModelViewP){\\nfloat depth1;\\nvec4 Ms=(ModelViewP*vec4(M,1.0));\\nreturn depth1=(1.0+Ms.z/Ms.w)/2.0;\\n}\\nvoid main(){\\nfloat radius = max( vRadius, vRadius2 );\\nvec4 i_near, i_far, focus;\\nvec3 e3, e1, e1_temp, e2;\\ni_near = vec4(matrix_near[0][0],matrix_near[0][1],matrix_near[0][2],matrix_near[0][3]);\\ni_far = vec4(matrix_near[1][0],matrix_near[1][1],matrix_near[1][2],matrix_near[1][3]);\\nfocus = vec4(matrix_near[2][0],matrix_near[2][1],matrix_near[2][2],matrix_near[2][3]);\\ne3 = vec3(matrix_near[3][0],matrix_near[3][1],matrix_near[3][2]);\\ne1.x = 1.0;\\ne1.y = 1.0;\\ne1.z = ( (e3.x*focus.x + e3.y*focus.y + e3.z*focus.z) - e1.x*e3.x - e1.y*e3.y)/e3.z;\\ne1_temp = e1 - focus.xyz;\\ne1 = normalize(e1_temp);\\ne2 = normalize(cross(e1,e3));\\nvec4 equation = focus;\\nfloat shrinkfactor = shrink;\\nfloat t1 = -1.0/(1.0-shrinkfactor);\\nfloat t2 = 1.0/(shrinkfactor);\\nvec4 colonne1, colonne2, colonne3, colonne4;\\nmat4 mat;\\nvec3 equation1 = vec3(t2,t2,t1);\\nfloat A1 = - e1.x*equation.x - e1.y*equation.y - e1.z*equation.z;\\nfloat A2 = - e2.x*equation.x - e2.y*equation.y - e2.z*equation.z;\\nfloat A3 = - e3.x*equation.x - e3.y*equation.y - e3.z*equation.z;\\nfloat A11 = equation1.x*e1.x*e1.x + equation1.y*e2.x*e2.x + equation1.z*e3.x*e3.x;\\nfloat A21 = equation1.x*e1.x*e1.y + equation1.y*e2.x*e2.y + equation1.z*e3.x*e3.y;\\nfloat A31 = equation1.x*e1.x*e1.z + equation1.y*e2.x*e2.z + equation1.z*e3.x*e3.z;\\nfloat A41 = equation1.x*e1.x*A1 + equation1.y*e2.x*A2 + equation1.z*e3.x*A3;\\nfloat A22 = equation1.x*e1.y*e1.y + equation1.y*e2.y*e2.y + equation1.z*e3.y*e3.y;\\nfloat A32 = equation1.x*e1.y*e1.z + equation1.y*e2.y*e2.z + equation1.z*e3.y*e3.z;\\nfloat A42 = equation1.x*e1.y*A1 + equation1.y*e2.y*A2 + equation1.z*e3.y*A3;\\nfloat A33 = equation1.x*e1.z*e1.z + equation1.y*e2.z*e2.z + equation1.z*e3.z*e3.z;\\nfloat A43 = equation1.x*e1.z*A1 + equation1.y*e2.z*A2 + equation1.z*e3.z*A3;\\nfloat A44 = equation1.x*A1*A1 + equation1.y*A2*A2 + equation1.z*A3*A3 - equation.w;\\ncolonne1 = vec4(A11,A21,A31,A41);\\ncolonne2 = vec4(A21,A22,A32,A42);\\ncolonne3 = vec4(A31,A32,A33,A43);\\ncolonne4 = vec4(A41,A42,A43,A44);\\nmat = mat4(colonne1,colonne2,colonne3,colonne4);\\nRay ray = primary_ray(i_near,i_far) ;\\nvec3 M;\\nM = isect_surf(ray, mat);\\nif (cutoff_plane(M, prime1.xyz, -e3) || cutoff_plane(M, prime2.xyz, e3)){ discard; }\\nvec4 M1 = vec4(M,1.0);\\nvec4 M2 = mat*M1;\\nvec3 _normal = ( modelViewMatrixInverseTranspose * M2 ).xyz;\\ngl_FragDepthEXT = update_z_buffer(M, modelViewProjectionMatrix) ;\\n#ifdef NEAR_CLIP\\nif( calcClip( modelViewMatrix * vec4( M, 1.0 ) ) > 0.0 ){\\nM = isect_surf2(ray, mat);\\nif( calcClip( modelViewMatrix * vec4( M, 1.0 ) ) > 0.0 )\\ndiscard;\\ninterior = true;\\ngl_FragDepthEXT = update_z_buffer(M, modelViewProjectionMatrix) ;\\nif( gl_FragDepthEXT >= 0.0 ){\\ngl_FragDepthEXT = max( 0.0, calcDepth( vec3( - ( clipNear - 0.5 ) ) ) + ( 0.0000001 / radius ) );\\n}\\n}else if( gl_FragDepthEXT <= 0.0 ){\\nM = isect_surf2(ray, mat);\\ninterior = true;\\ngl_FragDepthEXT = update_z_buffer(M, modelViewProjectionMatrix);\\nif( gl_FragDepthEXT >= 0.0 ){\\ngl_FragDepthEXT = 0.0 + ( 0.0000001 / radius );\\n}\\n}\\n#else\\nif( gl_FragDepthEXT <= 0.0 ){\\nM = isect_surf2(ray, mat);\\ninterior = true;\\ngl_FragDepthEXT = update_z_buffer(M, modelViewProjectionMatrix) ;\\nif( gl_FragDepthEXT >= 0.0 ){\\ngl_FragDepthEXT = 0.0 + ( 0.0000001 / radius );\\n}\\n}\\n#endif\\nif (cutoff_plane(M, prime1.xyz, -e3) || cutoff_plane(M, prime2.xyz, e3)){ discard; }\\nif (gl_FragDepthEXT < 0.0)\\ndiscard;\\nif (gl_FragDepthEXT > 1.0)\\ndiscard;\\nfloat distance_ratio = ((M.x-prime2.x)*e3.x + (M.y-prime2.y)*e3.y +(M.z-prime2.z)*e3.z) /\\ndistance(prime2.xyz,prime1.xyz);\\n#ifdef PICKING\\nif( opacity < 0.3 )\\ndiscard;\\ngl_FragColor = vec4( vPickingColor, objectId );\\n#else\\nvec3 vViewPosition = -( modelViewMatrix * vec4( M, 1.0 ) ).xyz;\\nvec3 vNormal = _normal;\\nvec3 vColor;\\nif( distance_ratio>0.5 ){\\nvColor = vColor1;\\n}else{\\nvColor = vColor2;\\n}\\nvec4 diffuseColor = vec4( diffuse, opacity );\\nReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\nvec3 totalEmissiveLight = emissive;\\n#include color_fragment\\n#include roughnessmap_fragment\\n#include metalnessmap_fragment\\nvec3 normal = normalize( vNormal );\\nvec3 geometryNormal = normal;\\n#include lights_physical_fragment\\n#include lights_fragment_begin\\n#include lights_fragment_end\\nvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveLight;\\nif( interior ){\\n#ifdef USE_INTERIOR_COLOR\\noutgoingLight.xyz = interiorColor;\\n#else\\n#ifdef DIFFUSE_INTERIOR\\noutgoingLight.xyz = vColor;\\n#endif\\n#endif\\noutgoingLight.xyz *= 1.0 - interiorDarkening;\\n}\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n#include premultiplied_alpha_fragment\\n#include tonemapping_fragment\\n#include encodings_fragment\\n#include fog_fragment\\n#endif\\n}\");const Sd=new Float32Array([-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,-1,1,-1,1,1,-1,1,1,1,-1,1,1]),Cd=new Uint16Array([0,1,2,0,2,3,1,5,6,1,6,2,4,6,5,4,7,6,0,7,4,0,3,7,0,5,1,0,4,5,3,2,6,3,6,7]);class Pd extends Fc{constructor(t,e={}){super(\"v3\",t,e)}get mapping(){return Sd}get mappingIndices(){return Cd}get mappingIndicesSize(){return 36}get mappingSize(){return 8}get mappingItemSize(){return 3}}const Id=Object.assign({shrink:.14},zo),kd=Object.assign({shrink:{uniform:!0}},Vo);class Md extends Pd{constructor(t,e={}){super(t,e),this.parameterTypes=kd,this.isImpostor=!0,this.vertexShader=\"HyperballStickImpostor.vert\",this.fragmentShader=\"HyperballStickImpostor.frag\",this.addUniforms({modelViewProjectionMatrix:{value:new i},modelViewProjectionMatrixInverse:{value:new i},modelViewMatrixInverseTranspose:{value:new i},shrink:{value:this.parameters.shrink}}),this.addAttributes({position1:{type:\"v3\",value:null},position2:{type:\"v3\",value:null},color2:{type:\"c\",value:null},radius:{type:\"f\",value:null},radius2:{type:\"f\",value:null}}),this.setAttributes(t),this.makeMapping()}get defaultParameters(){return Id}}Object.assign({disableImpostor:!1},Hh,Id);const Td=class{constructor(t,e={}){return!Ie||e&&e.disableImpostor?(t.radius=function(t,e){const i=t.length,r=new Float32Array(i);for(let s=0;sa.push(r.atomLabel(t)))))}else if(\"residue\"===this.labelGrouping){e&&!e.position||(c=[]),e&&!e.color||(h=[]),e&&!e.radius||(l=[]),e&&!e.text||(a=[]),i.colorParams&&(i.colorParams.structure=t.getStructure());const d=Fe.getScheme(i.colorParams),u=new pa(i.radiusParams),m=t.getAtomProxy();let p=0;t.eachResidue((t=>{const i=3*p;t.isProtein()||t.isNucleic()?(m.index=t.traceAtomIndex,e&&!e.position||m.positionToArray(c,i)):(m.index=t.atomOffset,e&&!e.position||t.positionToArray(c,i)),e&&!e.color||d.atomColorToArray(m,h,i),e&&!e.radius||(l[p]=u.atomRadius(m)),e&&!e.text||a.push(r.atomLabel(m)),++p})),e&&!e.position||(s=new Float32Array(c)),e&&!e.color||(o=new Float32Array(h)),e&&!e.radius||(n=new Float32Array(l))}return{position:s,size:n,color:o,text:a}}createData(t){return{bufferList:[new Eh(this.getTextData(t,{position:!0,color:!0,radius:!0,text:!0}),this.getBufferParams({fontFamily:this.fontFamily,fontStyle:this.fontStyle,fontWeight:this.fontWeight,xOffset:this.xOffset,yOffset:this.yOffset,zOffset:this.zOffset,attachment:this.attachment,showBorder:this.showBorder,borderColor:this.borderColor,borderWidth:this.borderWidth,showBackground:this.showBackground,backgroundColor:this.backgroundColor,backgroundMargin:this.backgroundMargin,backgroundOpacity:this.backgroundOpacity,fixedSize:this.fixedSize}))]}}updateData(t,e){e.bufferList[0].setAttributes(this.getTextData(e.sview,t))}getAtomRadius(){return 0}}function Od(t){const e=t.getAtomSet(),i=t.getBondSet(),r=t.getBondProxy();return i.forEach((function(t){r.index=t,e.clear(r.atomIndex1),e.clear(r.atomIndex2)})),e}Ne.add(\"label\",$d);class Rd extends Sh{constructor(t,e,i){super(t,e,i),this.type=\"line\",this.parameters=Object.assign({multipleBond:{type:\"select\",rebuild:!0,options:{off:\"off\",symmetric:\"symmetric\",offset:\"offset\"}},bondSpacing:{type:\"number\",precision:2,max:2,min:.5},linewidth:{type:\"integer\",max:50,min:1,buffer:!0},lines:{type:\"boolean\",rebuild:!0},crosses:{type:\"select\",rebuild:!0,options:{off:\"off\",lone:\"lone\",all:\"all\"}},crossSize:{type:\"number\",precision:2,max:2,min:.1}},this.parameters,{flatShaded:null,side:null,wireframe:null,roughness:null,metalness:null}),this.init(i)}init(t){var e=t||{};this.multipleBond=st(e.multipleBond,\"off\"),this.bondSpacing=st(e.bondSpacing,1),this.linewidth=st(e.linewidth,2),this.lines=st(e.lines,!0),this.crosses=st(e.crosses,\"lone\"),this.crossSize=st(e.crossSize,.4),super.init(e)}getAtomRadius(t){return.1}getBondParams(t,e){return e=Object.assign({multipleBond:this.multipleBond,bondSpacing:this.bondSpacing,radiusParams:{type:\"size\",size:.1,scale:1}},e),super.getBondParams(t,e)}_crossData(t,e){if(t&&!t.position&&!t.color)return;const i={};\"lone\"===this.crosses&&Object.assign(i,{atomSet:Od(e)});const r=e.getAtomData(this.getAtomParams(t,i)),s={},n=r.position,o=r.color,a=r.picking,c=(n||o).length,l=3*c;let h=new Float32Array(0),d=new Float32Array(0),u=new Float32Array(0),m=new Float32Array(0),p=0,f=new Float32Array(0);t&&!t.position||(h=s.position1=new Float32Array(l),d=s.position2=new Float32Array(l),p=this.crossSize/2),t&&!t.color||(u=s.color=new Float32Array(l),m=s.color2=new Float32Array(l)),t&&!t.picking||(f=new Float32Array(3*r.picking.array.length));for(let e=0;el?u[f]=-1:(c=Math.sqrt(l-a),u[f]=Math.floor(c)),++f;p[g]=d,m[g]=u}}function k(i){var r,s,n,a,d,f,b,v,w,A,S,C,P,I,k,M,T,B,D=3*i,$=i;r=Math.floor(.5+o*(t[D]+u[0])),s=Math.floor(.5+o*(t[D+1]+u[1])),n=Math.floor(.5+o*(t[D+2]+u[2]));var O,R=e[$],E=m[R],F=0,L=l*h,N=p[R];for(A=0;A=c||I>=l||k>=h)){var z=P*L+I*h+k;if(g)if(y[z]&_){if(y[z]&_){var V=x[z];V!==D&&b*b+v*v+w*w<(a=r+b-Math.floor(.5+o*(t[V]+u[0])))*a+(d=s+v-Math.floor(.5+o*(t[V+1]+u[1])))*d+(f=n+w-Math.floor(.5+o*(t[V+2]+u[2])))*f&&(x[z]=i)}}else y[z]|=_,x[z]=i;else y[z]|=_}F++}}function M(e){var i,r;for(console.time(\"EDTSurface fillvoxels\"),i=0,r=y.length;i=c||_>=l||C>=h)){var L=A*F+_*h+C;if(y[L]&S){if(g){var N=x[L];b*b+v*v+w*w<(a=Math.floor(.5+o*(t[N]+u[0])))*a+(d=Math.floor(.5+o*(t[N+1]+u[1])))*d+(f=Math.floor(.5+o*(t[N+2]+u[2])))*f&&(x[L]=i)}}else y[L]|=S,g&&(x[L]=i)}R++}}function B(){var t,e,i,r;console.time(\"EDTSurface fastdistancemap\");var s,n=Ed(c,l,h,Uint16Array,3),o=l*h,d=f*f,u=0;for(t=0;t0);var A,P=a*a,I=new Uint16Array(3);for(t=0;t=P)||(y[s]|=C,g&&y[s]&S&&(n.toArray(t,e,i,I),A=I[0]*o+I[1]*h+I[2],x[s]=x[A])));console.timeEnd(\"EDTSurface fastdistancemap\")}function D(t,e,i,r){var s,n,o,a,d,u,m,p,f,g,x,v,w=new Uint16Array(3),A=0;if(0===i)return A;var I=-1,k=-1,M=-1,T=l*h;for(m=0,f=i;m-1&&k-1&&M-1&&(y[x=I*T+h*k+M]&_&&!(y[x]&S)?(e.fromArray(I,k,M,w),g=(a=I-w[0])*a+(d=k-w[1])*d+(u=M-w[2])*u,b[x]=g,y[x]|=S,y[x]|=C,r[A]=I,r[A+1]=k,r[A+2]=M,A+=3):y[x]&_&&y[x]&S&&(g=(a=I-w[0])*a+(d=k-w[1])*d+(u=M-w[2])*u)-1&&k-1&&M-1&&(y[x=I*T+h*k+M]&_&&!(y[x]&S)?(e.fromArray(I,k,M,w),g=(a=I-w[0])*a+(d=k-w[1])*d+(u=M-w[2])*u,b[x]=g,y[x]|=S,y[x]|=C,r[A]=I,r[A+1]=k,r[A+2]=M,A+=3):y[x]&_&&y[x]&S&&(g=(a=I-w[0])*a+(d=k-w[1])*d+(u=M-w[2])*u)-1&&k-1&&M-1&&(y[x=I*T+h*k+M]&_&&!(y[x]&S)?(e.fromArray(I,k,M,w),g=(a=I-w[0])*a+(d=k-w[1])*d+(u=M-w[2])*u,b[x]=g,y[x]|=S,y[x]|=C,r[A]=I,r[A+1]=k,r[A+2]=M,A+=3):y[x]&_&&y[x]&S&&(g=(a=I-w[0])*a+(d=k-w[1])*d+(u=M-w[2])*u)-1&&o-1&&d-1&&aT&&(T=O)}return{neighbourListLength:27*T+1,withinRadii:function(s,n,o,a,d){for(var u=0,m=p(s,c),f=p(n,l),g=p(o,h),y=Math.max(0,m-1),w=Math.max(0,f-1),_=Math.max(0,g-1),S=Math.min(b,m+2),C=Math.min(x,f+2),M=Math.min(v,g+2),T=y;Tu&&(u=h[t]);!function(){const t=$o(c,l,u,p,0);p=t.scaleFactor,y=t.dim,b=t.matrix,$=Math.max(5,2+Math.floor(m*p)),x=Si(y[0]*y[1]*y[2],-1001),v=new Int32Array(x.length),w=new Float32Array(y[0]),A=new Float32Array(y[1]),_=new Float32Array(y[2]),R(w,c[0],1/p),R(A,c[1],1/p),R(_,c[2],1/p)}(),function(){var t=0,e=2*Math.PI/g;C=new Float32Array(g),S=new Float32Array(g);for(var i=0;i=0;){if(n!==r&&n!==s&&F(n,t,e,i))return k=n,n;n=I[++o]}return k=-1,-1}function F(e,i,r,s){var n=3*e,o=d[e],a=t[n]-i,c=t[n+1]-r,l=t[n+2]-s;return a*a+c*c+l*l0&&u=0;)t{e(this._makeSurface(t.data.sd,i))}),(t=>{console.warn(\"MolecularSurface.getSurfaceWorker error - trying without worker\",t),this.worker.terminate(),this.worker=void 0;const r=this.getSurface(i);e(r)}))}else{const t=this.getSurface(i);e(t)}}dispose(){this.worker&&this.worker.terminate()}}class Vd extends Sh{constructor(t,e,i){super(t,e,i),this.type=\"surface\",this.parameters=Object.assign({surfaceType:{type:\"select\",rebuild:!0,options:{vws:\"vws\",sas:\"sas\",ms:\"ms\",ses:\"ses\",av:\"av\"}},probeRadius:{type:\"number\",precision:1,max:20,min:0,rebuild:!0},smooth:{type:\"integer\",precision:1,max:10,min:0,rebuild:!0},scaleFactor:{type:\"number\",precision:1,max:5,min:0,rebuild:!0},cutoff:{type:\"number\",precision:2,max:50,min:0,rebuild:!0},contour:{type:\"boolean\",rebuild:!0},background:{type:\"boolean\",rebuild:!0},opaqueBack:{type:\"boolean\",buffer:!0},filterSele:{type:\"text\",rebuild:!0},colorVolume:{type:\"hidden\"},useWorker:{type:\"boolean\",rebuild:!0}},this.parameters,{radius:null,scale:null}),this.__infoList=[],this.structure.signals.refreshed.add((()=>{this.__forceNewMolsurf=!0})),this.toBePrepared=!0,this.init(i)}init(t){const e=t||{};e.colorScheme=st(e.colorScheme,\"uniform\"),e.colorValue=st(e.colorValue,14540253),e.disablePicking=st(e.disablePicking,!0),this.surfaceType=st(e.surfaceType,\"ms\"),this.probeRadius=st(e.probeRadius,1.4),this.smooth=st(e.smooth,2),this.scaleFactor=st(e.scaleFactor,2),this.cutoff=st(e.cutoff,0),this.contour=st(e.contour,!1),this.background=st(e.background,!1),this.opaqueBack=st(e.opaqueBack,!0),this.filterSele=st(e.filterSele,\"\"),this.colorVolume=st(e.colorVolume,void 0),this.useWorker=st(e.useWorker,!0),super.init(t)}prepareData(t,i,r){let s=this.__infoList[i];if(s||(s={},this.__infoList[i]=s),s.molsurf&&s.sele===t.selection.string)r(i);else{if(this.filterSele){const s=t.structure.getView(new pe(this.filterSele)),n=s.boundingBox.getSize(new e),o=Math.max(n.x,n.y,n.z),a=t.getAtomSetWithinPoint(s.center,o/2+6);if(0===(t=t.getView(new pe(t.getAtomSetWithinSelection(a,3).toSeleString()))).atomCount)return void r(i)}s.sele=t.selection.string,s.molsurf=new zd(t);const n=this.getSurfaceParams(),o=t=>{s.surface=t,r(i)};this.useWorker?s.molsurf.getSurfaceWorker(n,o):o(s.molsurf.getSurface(n))}}prepare(t){if((this.__forceNewMolsurf||this.__sele!==this.selection.string||this.__surfaceParams!==JSON.stringify(this.getSurfaceParams()))&&(this.__infoList.forEach((t=>{t&&t.molsurf&&t.molsurf.dispose()})),this.__infoList.length=0),0===this.structureView.atomCount)return void t();const e=()=>{this.__sele=this.selection.string,this.__surfaceParams=JSON.stringify(this.getSurfaceParams()),this.__forceNewMolsurf=!1,t()},i=\"default\"===this.assembly?this.defaultAssembly:this.assembly,r=this.structure.biomolDict[i];r?r.partList.forEach(((t,i)=>{const s=t.getView(this.structureView);this.prepareData(s,i,(t=>{t===r.partList.length-1&&e()}))})):this.prepareData(this.structureView,0,e)}createData(t,e){const i=this.__infoList[e],r=i.surface;if(!r)return;const s={position:r.getPosition(),color:r.getColor(this.getColorParams()),index:r.getFilteredIndex(this.filterSele,t)},n=[];if(r.contour){const t=new Xo(s,this.getBufferParams({wireframe:!1}));n.push(t)}else{Object.assign(s,{normal:r.getNormal(),picking:r.getPicking(t.getStructure())});const e=new jo(s,this.getBufferParams({background:this.background,opaqueBack:this.opaqueBack,dullInterior:!1}));if(\"double\"==this.getBufferParams().side){const t=new qo(e);n.push(t)}else n.push(e)}return{bufferList:n,info:i}}updateData(t,e){const i={};if(t.position||t.radius)return this.__forceNewMolsurf=!0,void this.build();t.color&&(i.color=e.info.surface.getColor(this.getColorParams())),t.index&&(i.index=e.info.surface.getFilteredIndex(this.filterSele,e.sview)),e.bufferList[0].setAttributes(i)}setParameters(t,e={},i){return t&&t.filterSele&&(e.index=!0),t&&void 0!==t.colorVolume&&(e.color=!0),t&&t.wireframe&&(t.contour||void 0===t.contour&&this.contour)&&(t.wireframe=!1),super.setParameters(t,e,i),this}getSurfaceParams(t={}){return Object.assign({type:this.surfaceType,probeRadius:this.probeRadius,scaleFactor:this.scaleFactor,smooth:this.smooth&&!this.contour,cutoff:this.cutoff,contour:this.contour,useWorker:this.useWorker,radiusParams:this.getRadiusParams()},t)}getColorParams(){const t=super.getColorParams();return t.volume=this.colorVolume,t}getAtomRadius(){return 0}clear(){super.clear()}dispose(){this.__infoList.forEach((t=>{t&&t.molsurf&&t.molsurf.dispose()})),this.__infoList.length=0,super.dispose()}}Ne.add(\"surface\",Vd);class Gd extends Sh{constructor(t,e,i){super(t,e,i),this.type=\"point\",this.parameters=Object.assign({pointSize:{type:\"number\",precision:1,max:100,min:0,buffer:!0},sizeAttenuation:{type:\"boolean\",buffer:!0},sortParticles:{type:\"boolean\",rebuild:!0},useTexture:{type:\"boolean\",buffer:!0},alphaTest:{type:\"range\",step:.001,max:1,min:0,buffer:!0},forceTransparent:{type:\"boolean\",buffer:!0},edgeBleach:{type:\"range\",step:.001,max:1,min:0,buffer:!0}},this.parameters,{flatShaded:null,wireframe:null,linewidth:null,side:null,roughness:null,metalness:null}),this.init(i)}init(t){var e=t||{};this.pointSize=st(e.pointSize,1),this.sizeAttenuation=st(e.sizeAttenuation,!0),this.sortParticles=st(e.sortParticles,!1),this.useTexture=st(e.useTexture,!1),this.alphaTest=st(e.alphaTest,.5),this.forceTransparent=st(e.forceTransparent,!1),this.edgeBleach=st(e.edgeBleach,0),super.init(e)}createData(t){var e=t.getAtomData(this.getAtomParams({position:!0,color:!0,picking:!0}));return{bufferList:[new Wc(e,this.getBufferParams({pointSize:this.pointSize,sizeAttenuation:this.sizeAttenuation,sortParticles:this.sortParticles,useTexture:this.useTexture,alphaTest:this.alphaTest,forceTransparent:this.forceTransparent,edgeBleach:this.edgeBleach}))]}}updateData(t,e){var i=e.sview.getAtomData(this.getAtomParams(t)),r={};t&&!t.position||Object.assign(r,{position:i.position}),t&&!t.color||Object.assign(r,{color:i.color}),e.bufferList[0].setAttributes(r)}getAtomRadius(){return.1}}Ne.add(\"point\",Gd),Ve.add(\"shader/Ribbon.vert\",\"#define STANDARD\\nuniform float clipNear;\\nuniform vec3 clipCenter;\\n#if defined( NEAR_CLIP ) || defined( RADIUS_CLIP ) || !defined( PICKING )\\nvarying vec3 vViewPosition;\\n#endif\\n#if defined( RADIUS_CLIP )\\nvarying vec3 vClipCenter;\\n#endif\\nattribute vec3 dir;\\nattribute float size;\\n#ifdef PICKING\\n#include unpack_color\\nattribute float primitiveId;\\nvarying vec3 vPickingColor;\\n#else\\n#include color_pars_vertex\\n#ifndef FLAT_SHADED\\nvarying vec3 vNormal;\\n#endif\\n#endif\\n#include common\\nvoid main(void){\\n#ifdef PICKING\\nvPickingColor = unpackColor( primitiveId );\\n#else\\n#include color_vertex\\n#include beginnormal_vertex\\n#include defaultnormal_vertex\\n#ifndef FLAT_SHADED\\nvNormal = normalize( transformedNormal );\\n#endif\\n#endif\\n#include begin_vertex\\ntransformed += normalize( dir ) * size;\\n#include project_vertex\\n#if defined( NEAR_CLIP ) || defined( RADIUS_CLIP ) || !defined( PICKING )\\nvViewPosition = -mvPosition.xyz;\\n#endif\\n#if defined( RADIUS_CLIP )\\nvClipCenter = -( modelViewMatrix * vec4( clipCenter, 1.0 ) ).xyz;\\n#endif\\n#include nearclip_vertex\\n}\");const Ud=new Uint16Array([0,1,2,1,3,2]);function jd(t){return 3*(4*(t.position.length/3-1))}class Hd extends Uo{constructor(t,e={}){super({position:new Float32Array(jd(t)),color:new Float32Array(jd(t)),index:xt(jd(t),jd(t)/3),normal:new Float32Array(jd(t)),picking:t.picking},e),this.vertexShader=\"Ribbon.vert\";const i=t.position.length/3-1,r=4*i,s=3*r;this.addAttributes({dir:{type:\"v3\",value:new Float32Array(s)}}),this.addAttributes({size:{type:\"f\",value:new Float32Array(r)}}),t.primitiveId=Pi(i),this.setAttributes(t),this.makeIndex()}setAttributes(t={}){const e=this.size/4,i=this.geometry.attributes;let r,s,n,o,a,c,l,h,d,u,m,p,f,g,y,b,x,v,w;t.position&&(r=t.position,l=i.position.array,i.position.needsUpdate=!0),t.normal&&(s=t.normal,h=i.normal.array,i.normal.needsUpdate=!0),t.size&&(n=t.size,d=i.size.array,i.size.needsUpdate=!0),t.dir&&(o=t.dir,u=i.dir.array,i.dir.needsUpdate=!0),t.color&&(a=t.color,m=i.color.array,i.color.needsUpdate=!0),t.primitiveId&&(c=t.primitiveId,p=i.primitiveId.array,i.primitiveId.needsUpdate=!0);let A=n?n[0]:null;for(f=0;f{if(!(t.residueCount<4)){i.push(t);var r=new od(t,this.getSplineParams()),s=r.getSubdividedPosition(),n=r.getSubdividedOrientation(),o=r.getSubdividedColor(this.getColorParams()),a=r.getSubdividedPicking(),c=r.getSubdividedSize(this.getRadiusParams());e.push(new Hd({position:s.position,normal:n.binormal,dir:n.normal,color:o.color,size:c.size,picking:a.picking},this.getBufferParams()))}}),t.getSelection()),{bufferList:e,polymerList:i}}updateData(t,e){t=t||{};var i=0,r=e.polymerList.length;for(i=0;i{if(t.residueCount<4||t.isNucleic())return;const s=new Pa(t),n=s.getAxis(this.localAngle,this.centerDist,this.ssBorder,this.getColorParams(),this.getRadiusParams());e+=n.size.length,i.push(n),r.push(s)}),t.getSelection());const s={begin:new Float32Array(3*e),end:new Float32Array(3*e),size:new Float32Array(e),color:new Float32Array(3*e),picking:{}};let n=new Float32Array(e),o=0;i.forEach((function(t){s.begin.set(t.begin,3*o),s.end.set(t.end,3*o),s.size.set(t.size,o),s.color.set(t.color,3*o),n.set(t.picking.array,o),o+=t.size.length})),e&&(s.picking=new Yn(n,t.getStructure()));return{bufferList:[new td({position1:s.begin,position2:s.end,color:s.color,color2:s.color,radius:s.size,picking:s.picking},this.getBufferParams({openEnded:this.openEnded,radialSegments:this.radialSegments,disableImpostor:this.disableImpostor,dullInterior:!0}))],axisList:i,helixbundleList:r,axisData:s}}updateData(t,e){if((t=t||{}).position)this.build();else{var i={};if(t.color||t.radius){var r=0;e.helixbundleList.forEach((i=>{var s=i.getAxis(this.localAngle,this.centerDist,this.ssBorder,this.getColorParams(),this.getRadiusParams());t.color&&e.axisData.color.set(s.color,3*r),(t.radius||t.scale)&&e.axisData.size.set(s.size,r),r+=s.size.length})),t.color&&Object.assign(i,{color:e.axisData.color,color2:e.axisData.color}),(t.radius||t.scale)&&Object.assign(i,{radius:e.axisData.size})}e.bufferList[0].setAttributes(i)}}}Ne.add(\"rocket\",qd);class Xd extends dd{constructor(t,e,i){super(t,e,i),this.type=\"rope\",this.parameters=Object.assign({smooth:{type:\"integer\",max:15,min:0,rebuild:!0}},this.parameters,{aspectRatio:null,smoothSheet:null})}init(t){var e=t||{};e.aspectRatio=1,e.tension=st(e.tension,.5),e.radiusScale=st(e.radiusScale,5),e.smoothSheet=!1,this.smooth=st(e.smooth,2),super.init(e)}getSpline(t){var e=new Ca(t);return new od(t,this.getSplineParams({directional:!1,positionIterator:e.getCenterIterator(this.smooth)}))}}Ne.add(\"rope\",Xd);class Yd extends Sh{constructor(t,e,i){super(t,e,i),this.type=\"spacefill\",this.parameters=Object.assign({sphereDetail:!0,disableImpostor:!0},this.parameters),this.init(i)}init(t){var e=t||{};e.useInteriorColor=st(e.useInteriorColor,!0),super.init(e)}createData(t){return{bufferList:[new Gc(t.getAtomData(this.getAtomParams()),this.getBufferParams({sphereDetail:this.sphereDetail,dullInterior:!0,disableImpostor:this.disableImpostor}))]}}updateData(t,e){var i=e.sview.getAtomData(this.getAtomParams(t)),r={};t&&!t.position||Object.assign(r,{position:i.position}),t&&!t.color||Object.assign(r,{color:i.color}),t&&!t.radius||Object.assign(r,{radius:i.radius}),e.bufferList[0].setAttributes(r)}}function Kd(t){return 3*(t.position.length/3-1)*2}Ne.add(\"spacefill\",Yd);class Zd extends Go{constructor(t,e={}){super({position:new Float32Array(Kd(t)),color:new Float32Array(Kd(t))},e),this.isLine=!0,this.vertexShader=\"Line.vert\",this.fragmentShader=\"Line.frag\",this.setAttributes(t)}setAttributes(t){let e,i,r,s;const n=this.geometry.attributes;if(t.position&&(e=t.position,r=n.position.array,n.position.needsUpdate=!0),t.color&&(i=t.color,s=n.color.array,n.color.needsUpdate=!0),!e&&!i)return void Me.warn(\"TraceBuffer.prototype.setAttributes no data\");let o,a;const c=this.size-1;for(let t=0;t{if(!(t.residueCount<4)){i.push(t);var r=new od(t,this.getSplineParams()),s=r.getSubdividedPosition(),n=r.getSubdividedColor(this.getColorParams());e.push(new Zd(Object.assign({},s,n),this.getBufferParams()))}}),t.getSelection()),{bufferList:e,polymerList:i}}updateData(t,e){t=t||{};var i=0,r=e.polymerList.length;for(i=0;i{t.boundingBox||t.computeBoundingBox(),this.boundingBox.union(t.boundingBox)}))}}const lu=Object.assign({aspectRatio:1.5,radialSegments:50,openEnded:!1,disableImpostor:!1},zo);class hu{constructor(t,e={}){this.group=new m,this.wireframeGroup=new m,this.pickingGroup=new m,this.visible=!0,this.parameters=nt(e,this.defaultParameters),this.splitPosition=new Float32Array(t.position1.length),this.cylinderRadius=new Float32Array(t.radius.length);const r=this.makeAttributes(t),s={radialSegments:this.parameters.radialSegments,openEnded:this.parameters.openEnded,disableImpostor:this.parameters.disableImpostor};this.cylinderBuffer=new td(r.cylinder,s),this.coneBuffer=new au(r.cone,s),this.geometry=new cu([this.cylinderBuffer.geometry,this.coneBuffer.geometry]),this.matrix=st(e.matrix,new i),this.picking=t.picking}get defaultParameters(){return lu}set matrix(t){Go.prototype.setMatrix.call(this,t)}get matrix(){return this.group.matrix.clone()}get pickable(){return!!this.picking}makeAttributes(t={}){const i=this.splitPosition,r=this.cylinderRadius,s=this.parameters.aspectRatio;let n,o;const a={},c={};if(t.radius){for(n=0,o=r.length;n(this._beforeParse(),this._parse(),this._afterParse(),this[this.__objName])))}_parse(){}_beforeParse(){}_afterParse(){De&&Me.log(this[this.__objName])}}class Nu extends Lu{constructor(t,e){var i=e||{};super(t,i),this.firstModelOnly=st(i.firstModelOnly,!1),this.asTrajectory=st(i.asTrajectory,!1),this.cAlphaOnly=st(i.cAlphaOnly,!1),this.structure=new Cc(this.name,this.path),this.structureBuilder=new za(this.structure)}get type(){return\"structure\"}get __objName(){return\"structure\"}}class zu{constructor(t,e,i=\"\",r,s=[]){this.structure=t,this.index=e,this.description=i,this.entityType=function(t){switch(t=t.toLowerCase()){case\"polymer\":return 1;case\"non-polymer\":return 2;case\"macrolide\":return 3;case\"water\":return 4;default:return 0}}(r||\"\"),this.chainIndexList=s,s.forEach((function(i){t.chainStore.entityIndex[i]=e}))}get type(){return function(t){switch(t){case 1:return\"polymer\";case 2:return\"non-polymer\";case 3:return\"macrolide\";case 4:return\"water\";default:return}}(this.entityType)}getEntityType(){return this.entityType}isPolymer(){return 1===this.entityType}isNonPolymer(){return 2===this.entityType}isMacrolide(){return 3===this.entityType}isWater(){return 4===this.entityType}eachChain(t){const e=this.structure.getChainProxy();this.chainIndexList.forEach((function(i){e.index=i,t(e)}))}}const Vu={a:1,b:1,c:1,alpha:90,beta:90,gamma:90,spacegroup:\"P 1\"};class Gu{constructor(t=Vu){this.cartToFrac=new i,this.fracToCart=new i,this.a=t.a,this.b=t.b,this.c=t.c,this.alpha=t.alpha,this.beta=t.beta,this.gamma=t.gamma,this.spacegroup=t.spacegroup;const e=kt(this.alpha),r=kt(this.beta),s=kt(this.gamma),n=Math.cos(e),o=Math.cos(r),a=Math.cos(s),c=Math.sin(r),l=Math.sin(s);if(this.volume=this.a*this.b*this.c*Math.sqrt(1-n*n-o*o-a*a+2*n*o*a),void 0===t.cartToFrac){const t=this.a*this.b*l/this.volume,e=(o*a-n)/(c*l);this.fracToCart.set(this.a,0,0,0,this.b*a,this.b*l,0,0,this.c*o,-this.c*c*e,1/t,0,0,0,0,1).transpose(),this.cartToFrac.getInverse(this.fracToCart)}else this.cartToFrac.copy(t.cartToFrac),this.fracToCart.getInverse(this.cartToFrac)}getPosition(t){const i=new Float32Array(24);if(t.unitcell){const r=t.unitcell,s=t.center.clone().applyMatrix4(r.cartToFrac).floor(),n=new e;let o=0;const a=function(t,e,a){n.set(t,e,a).add(s).applyMatrix4(r.fracToCart).toArray(i,o),o+=3};a(0,0,0),a(1,0,0),a(0,1,0),a(0,0,1),a(1,1,0),a(1,0,1),a(0,1,1),a(1,1,1)}return i}getCenter(t){return function(t,i=new e){const r=t.length;for(let e=0;e0)continue;let e,i,r,s,a,g=0;if(n){if(s=S.split(Wu),g=10===s.length?1:0,D=s[2],p&&\"CA\"!==D)continue;e=parseFloat(s[6-g]),i=parseFloat(s[7-g]),r=parseFloat(s[8-g])}else{if(D=S.substr(12,4).trim(),p&&\"CA\"!==D)continue;e=parseFloat(S.substr(30,8)),i=parseFloat(S.substr(38,8)),r=parseFloat(S.substr(46,8))}if(m){const t=3*b;if(y[t+0]=e,y[t+1]=i,y[t+2]=r,b+=1,x)continue}n?(P=parseInt(s[1]),a=\"\",$=\"H\"===S[0],I=g?\"\":s[4],k=parseInt(s[5-g]),B=\"\",M=s[3],R=\"\",T=1):(P=parseInt(S.substr(6,5),h),l&&99999===P&&(h=16),$=\"H\"===S[0],I=S[21].trim(),k=parseInt(S.substr(22,4),d),l&&9999===k&&(d=16),B=S[26].trim(),M=S.substr(17,4).trim()||\"MOL\",O=parseFloat(S.substr(60,6)),R=S[16].trim(),T=parseFloat(S.substr(54,6)),t||(o?(a=S.substr(76,3).trim(),a in pn&&(a=pn[a])):(a=S.substr(76,2).trim(),I||(I=S.substr(72,4).trim())),E=parseInt((S.substr(79,1)+S.substr(78,1)).trim()))),dt.growIfFull(),dt.atomTypeId[pt]=ht.add(D,a),dt.x[pt]=e,dt.y[pt]=i,dt.z[pt]=r,dt.serial[pt]=P,dt.altloc[pt]=R.charCodeAt(0),dt.occupancy[pt]=isNaN(T)?0:T,n?(dt.partialCharge[pt]=parseFloat(s[9-g]),dt.radius[pt]=parseFloat(s[10-g])):(dt.bfactor[pt]=isNaN(O)?0:O,o&&(dt.partialCharge[pt]=parseFloat(S.substr(70,6))),isFinite(E)&&(dt.formalCharge||dt.addField(\"formalCharge\",1,\"int8\"),dt.formalCharge[pt]=E));const v=qu(k,I,B);!$||K[v]||ju.includes(M)?tt||et===I||(Q+=1,J=Q.toString()):et===I&&rt===M&&(cn.includes(M)||it===k&&st===B)||(Q+=1,J=Q.toString(),it=k,rt=M,st=B),c.addAtom(ft,I,J,M,k,$,void 0,B),U[P]=pt,pt+=1,tt=!1,et=I}else if(\"CONECT\"===C){const t=U[parseInt(S.substr(6,5))],e=[11,16,21,26],i={};if(void 0===t)continue;for(let r=0;r<4;++r){let s=parseInt(S.substr(e[r],5));if(!Number.isNaN(s)&&(s=U[s],void 0!==s))if(t0)continue;const s=e[l].replace(Zu,\"\");if(k&&\"CA\"!==s)continue;const T=parseFloat(e[x]),$=parseFloat(e[v]),O=parseFloat(e[w]);if(I){const e=3*r;if(t[e+0]=T,t[e+1]=$,t[e+2]=O,r+=1,X>0)continue}const R=e[h],E=parseInt(e[-1!==a?a:c]);let F=e[b];F=\"?\"===F?\"\":F;const L=e[o],N=e[d],z=\"H\"===e[p][0],V=e[g],Y=parseFloat(e[A]),K=parseFloat(e[_]);let Z=e[m];if(Z=\".\"===Z?\"\":Z,H.growIfFull(),H.atomTypeId[q]=j.add(s,V),H.x[q]=T,H.y[q]=$,H.z[q]=O,H.serial[q]=parseInt(e[f]),H.bfactor[q]=isNaN(Y)?0:Y,H.occupancy[q]=isNaN(K)?0:K,H.altloc[q]=Z.charCodeAt(0),C.addAtom(X,L,N,R,E,z,void 0,F),De){const t=B[N];void 0!==t&&t!==L&&De&&Me.warn(t,L)}B[N]=L;const Q=e[u];D[Q]||(D[Q]=new Set),D[Q].add(S.chainStore.count-1),q+=1}else{const t=n.match(Ku),e=t.length;N===L.length&&(N=0);for(let i=0;ic*c)return o.growIfFull(),o.atomTypeId[f]=o.atomTypeId[t],o.x[f]=u.x,o.y[f]=u.y,o.z[f]=u.z,o.occupancy[f]=o.occupancy[t],o.serial[f]=f,o.altloc[f]=\"A\".charCodeAt(0),s.addAtom(0,\"\",\"\",\"HET\",1,!0),void(f+=1)}}}))}}(T,S,C),C.finalize(),S.finalizeAtoms(),Wa(S),S.finalizeBonds();else{var Y=function(t,e,i){var r,s,n,o,a=[],c=[],l=t.struct_conf;if(null==l?void 0:l.pdbx_PDB_helix_class)for(em(l,\"id\"),r=0,s=l.beg_auth_seq_id.length;r0){o=o.split(\"(\");var l=c(o[0]),h=c(o[1]);Object.keys(l).forEach((function(t){Object.keys(h).forEach((function(e){var r=new i;r.multiplyMatrices(l[t],h[e]),s[t+\"x\"+e]=r}))}))}else s=c(o);var d=[];for(var u in s)d.push(s[u]);var m=t;/^(0|[1-9][0-9]*)$/.test(m)&&(m=\"BU\"+m);for(var p=a.asym_id_list[e].split(\",\"),f=0,g=p.length;fA){var _=w;w=A,A=_;var S=p;p=x,x=S}if(0!==w&&0!==A)for(var C=0;Cb)continue}d=I.substr(5,5).trim(),u=parseInt(I.substr(0,5)),m=parseInt(I.substr(15,5)),v.growIfFull(),v.atomTypeId[w]=x.add(h),v.x[w]=T,v.y[w]=B,v.z[w]=D,v.serial[w]=m,r.addAtom(A,\"\",\"\",d,u,!1,\"l\"),w+=1}}}(0,i.length,i)})),r.finalize(),i.finalizeAtoms(),Ha(i),Wa(i),i.finalizeBonds(),Ga(i),De&&Me.timeEnd(\"GroParser._parse \"+this.name)}});var om=[\"mmtfVersion\",\"mmtfProducer\",\"unitCell\",\"spaceGroup\",\"structureId\",\"title\",\"depositionDate\",\"releaseDate\",\"experimentalMethods\",\"resolution\",\"rFree\",\"rWork\",\"bioAssemblyList\",\"ncsOperatorList\",\"entityList\",\"groupList\",\"numBonds\",\"numAtoms\",\"numGroups\",\"numChains\",\"numModels\",\"groupsPerChain\",\"chainsPerModel\"].concat([\"xCoordList\",\"yCoordList\",\"zCoordList\",\"groupIdList\",\"groupTypeList\",\"chainIdList\",\"bFactorList\",\"atomIdList\",\"altLocList\",\"occupancyList\",\"secStructList\",\"insCodeList\",\"sequenceIndexList\",\"chainNameList\",\"bondAtomList\",\"bondOrderList\"]);function am(t,e,i){return e?new t(e.buffer,e.byteOffset,e.byteLength/(i||1)):void 0}function cm(t){return am(DataView,t)}function lm(t){return am(Int8Array,t)}function hm(t){return am(Int32Array,t,4)}function dm(t,e){var i=t.length/2;e||(e=new Int16Array(i));for(var r=0,s=0;rn&&++a;e=new Int32Array(a)}for(i=0,r=0;is){for(var n=[],o=0;o0&&(o.biomolDict[t]=e)}const O=a.unitCell;O&&Array.isArray(O)&&O[0]?o.unitcell=new Gu({a:O[0],b:O[1],c:O[2],alpha:O[3],beta:O[4],gamma:O[5],spacegroup:a.spaceGroup}):o.unitcell=void 0,Ka(o,!0),Ya(o,!0),o.finalizeAtoms(),o.finalizeBonds(),Za(o),De&&Me.timeEnd(\"MmtfParser._parse \"+this.name)}});const _m=/\\s+/,Sm={1:1,2:2,3:3,am:1,ar:1,du:1,un:1,nc:0};ze.add(\"mol2\",class extends Nu{get type(){return\"mol2\"}_parse(){De&&Me.time(\"Mol2Parser._parse \"+this.name);const t=this.structure,e=this.structureBuilder,i=this.firstModelOnly,r=this.asTrajectory,s=t.frames;let n,o,a=!1;const c=t.atomMap,l=t.atomStore;l.resize(Math.round(this.streamer.data.length/60)),l.addField(\"partialCharge\",1,\"float32\");let h=0,d=0,u=0,m=-1,p=0,f=0;const g=t.getAtomProxy(),y=t.getAtomProxy();this.streamer.eachChunkOfLines((function(b){!function(b,x,v){for(let w=b;wMOLECULE\"===b?(f=1,d=0,++m):\"@ATOM\"===b?(f=2,u=l.count,r&&(o=0,n=new Float32Array(3*p),s.push(n),m>0&&(a=!0))):f=\"@BOND\"===b?3:0;else if(1===f){if(0===d)t.title=b,t.id=b;else if(1===d){const t=b.split(_m);p=parseInt(t[0])}++d}else if(2===f){const t=b.split(_m);if(i&&m>0)continue;const s=parseFloat(t[2]),d=parseFloat(t[3]),u=parseFloat(t[4]);if(r){const t=3*o;if(n[t+0]=s,n[t+1]=d,n[t+2]=u,o+=1,a)continue}const p=t[0],f=t[1],g=t[5].split(\".\")[0],y=t[6]?parseInt(t[6]):1,x=t[7]?t[7]:\"\",v=t[8]?parseFloat(t[8]):0;l.growIfFull(),l.atomTypeId[h]=c.add(f,g),l.x[h]=s,l.y[h]=d,l.z[h]=u,l.serial[h]=p,l.partialCharge[h]=v,e.addAtom(m,\"\",\"\",x,y,!0),h+=1}else if(3===f){if(i&&m>0)continue;if(r&&m>0)continue;const e=b.split(_m);g.index=parseInt(e[1])-1+u,y.index=parseInt(e[2])-1+u;const s=Sm[e[3]];t.bondStore.addBond(g,y,s)}}}(0,b.length,b)})),e.finalize(),t.finalizeAtoms(),Ha(t),Ya(t,!0),Ka(t,!0),t.finalizeBonds(),ec(t),Ga(t),De&&Me.timeEnd(\"Mol2Parser._parse \"+this.name)}});ze.add(\"pdbqt\",class extends Xu{get type(){return\"pdbqt\"}});ze.add(\"pqr\",class extends Xu{get type(){return\"pqr\"}});const Cm=/> +<(.+)>/;class Pm extends Nu{get type(){return\"sdf\"}_parse(){De&&Me.time(\"SdfParser._parse \"+this.name);const t=this.structure,e=this.structureBuilder,i=this.firstModelOnly,r=this.asTrajectory,s=this.streamer.peekLines(2);t.id=s[0].trim(),t.title=s[1].trim();const n=t.frames;let o,a,c=!1;const l=t.atomMap,h=t.atomStore;h.resize(Math.round(this.streamer.data.length/50)),h.addField(\"formalCharge\",1,\"int8\");const d=t.getAtomProxy(),u=t.getAtomProxy();let m=0,p=0,f=0,g=0;const y=[];let b,x,v,w,A,_,S,C,P,I,k,M,T,B,D=!1,$={};t.extraData.sdf=y;let O=!1,R=!1,E=!1,F=[],L=[];const N=new Map;this.streamer.eachChunkOfLines((function(s){!function(s,z,V){for(let G=s;G-1,O?N.clear():(x=parseInt(s.substr(0,3)),v=parseInt(s.substr(3,3)),w=4,A=w+x,_=A,S=_+v,r&&(a=0,o=new Float32Array(3*x),n.push(o),f>0&&(c=!0)));else if(O&&\"COUNTS\"===F[0])x=parseInt(F[1]),r&&(a=0,o=new Float32Array(3*x),n.push(o),f>0&&(c=!0));else if(O&&2==F.length)\"ATOM\"===F[1]?\"BEGIN\"===F[0]?R=!0:\"END\"===F[0]&&(R=!1):\"BOND\"===F[1]&&(\"BEGIN\"===F[0]?E=!0:\"END\"===F[0]&&(E=!1));else if(R||!O&&p>=w&&p0)continue;let t=0;if(O){if(C=parseFloat(F[2]),P=parseFloat(F[3]),I=parseFloat(F[4]),M=F[1],T=parseInt(F[0]),N.set(T,m),k=M+T,F.length>6){let e=F.slice(6).find((t=>0===t.indexOf(\"CHG=\")));e&&(t=parseInt(e.substring(4)))}}else C=parseFloat(s.substr(0,10)),P=parseFloat(s.substr(10,10)),I=parseFloat(s.substr(20,10)),M=s.substr(31,3).trim(),k=M+(m-g+1);if(r){const t=3*a;if(o[t+0]=C,o[t+1]=P,o[t+2]=I,a+=1,c)continue}h.growIfFull(),h.atomTypeId[m]=l.add(k,M),h.x[m]=C,h.y[m]=P,h.z[m]=I,h.serial[m]=O?T:m,h.formalCharge[m]=t,e.addAtom(f,\"\",\"\",\"HET\",1,!0),m+=1}else if(E||!O&&p>=_&&p0)continue;if(r&&f>0)continue;O?(d.index=N.get(parseInt(F[2])),u.index=N.get(parseInt(F[3])),B=parseInt(F[1])):(d.index=parseInt(s.substr(0,3))-1+g,u.index=parseInt(s.substr(3,3))-1+g,B=parseInt(s.substr(6,3))),t.bondStore.addBond(d,u,B)}else if(\"M CHG\"===s.substr(0,6)){const t=parseInt(s.substr(6,3));for(let e=0,i=10;e\"===s.charAt(0)&&(b=s.match(Cm))?(D=b[1],$[D]=[]):!1!==D&&s&&$[D].push(s);++p}}}(0,s.length,s)})),e.finalize(),t.finalizeAtoms(),t.finalizeBonds(),ec(t),De&&Me.timeEnd(\"SdfParser._parse \"+this.name)}_postProcess(){ec(this.structure)}}ze.add(\"sdf\",Pm),ze.add(\"sd\",Pm),ze.add(\"mol\",Pm);function Im(t,e,i){return parseInt(t.substr(e,i).trim())}class km extends Nu{get type(){return\"prmtop\"}_parse(){De&&Me.time(\"PrmtopParser._parse \"+this.name);const t=this.structure,e=this.structureBuilder,i=t.atomMap,r=t.atomStore;r.addField(\"partialCharge\",1,\"float32\"),r.addField(\"radius\",1,\"float32\");const s=[],n={},o=[\"NATOM\",\"NTYPES\",\"NBONH\",\"MBONA\",\"NTHETH\",\"MTHETA\",\"NPHIH\",\"MPHIA\",\"NHPARM\",\"NPARM\",\"NNB\",\"NRES\",\"NBONA\",\"NTHETA\",\"NPHIA\",\"NUMBND\",\"NUMANG\",\"NPTRA\",\"NATYP\",\"NPHB\",\"IFPERT\",\"NBPER\",\"NGPER\",\"NDPER\",\"MBPER\",\"MGPER\",\"MDPER\",\"IFBOX\",\"NMXRS\",\"IFCAP\",\"NUMEXTRA\",\"NCOPY\"];let a,c,l,h,d;o.forEach((t=>{n[t]=0}));let u,m,p,f,g,y=new Uint8Array(0);this.streamer.eachChunkOfLines((function(t){!function(t,e,i){for(let b=t;b0)return void Me.error(\"dcd format with fixed atoms unsupported, aborting\");const p=n.NATOM,f=4*p;for(let i=0,a=n.NSET;i=1&&(i.timeOffset=(n.ISTART-1)*i.deltaTime),De&&Me.timeEnd(\"DcdParser._parse \"+this.name)}});const Fm={BYTE:1,CHAR:2,SHORT:3,INT:4,FLOAT:5,DOUBLE:6};function Lm(t){switch(Number(t)){case Fm.BYTE:return\"byte\";case Fm.CHAR:return\"char\";case Fm.SHORT:return\"short\";case Fm.INT:return\"int\";case Fm.FLOAT:return\"float\";case Fm.DOUBLE:return\"double\";default:return\"undefined\"}}function Nm(t){switch(Number(t)){case Fm.BYTE:case Fm.CHAR:return 1;case Fm.SHORT:return 2;case Fm.INT:case Fm.FLOAT:return 4;case Fm.DOUBLE:return 8;default:return-1}}function zm(t){switch(String(t)){case\"byte\":return Fm.BYTE;case\"char\":return Fm.CHAR;case\"short\":return Fm.SHORT;case\"int\":return Fm.INT;case\"float\":return Fm.FLOAT;case\"double\":return Fm.DOUBLE;default:return-1}}function Vm(t,e){if(1!==t){const i=new Array(t);for(let r=0;r6,\"non valid type \"+h);const d=t.readUint32();let u=t.readUint32();2===i&&(Om(u>0,\"offsets larger than 4GB not supported\"),u=t.readUint32()),c[0]===e&&(n+=d),s[r]={name:o,dimensions:c,attributes:l,type:Lm(h),size:d,offset:u,record:c[0]===e}}}return{variables:s,recordStep:n}}(t,r.recordId,e);return i.variables=s.variables,i.recordDimension.recordStep=s.recordStep,i}function Xm(t){let e;const i=t.readUint32();if(i===Um)return Om(t.readUint32()!==Um,\"wrong empty tag for list of attributes\"),[];{Om(i!==Wm,\"wrong tag for list of attributes\");const r=t.readUint32();e=new Array(r);for(let i=0;i6,\"non valid type \"+s);const n=t.readUint32(),o=Gm(t,s,n);Rm(t),e[i]={name:r,type:Lm(s),value:o}}}return e}class Ym{constructor(t){const e=new hi(t);e.setBigEndian(),Om(\"CDF\"!==e.readChars(3),\"should start with CDF\");const i=e.readByte();Om(i>2,\"unknown version\"),this.header=qm(e,i),this.buffer=e}get version(){return 1===this.header.version?\"classic format\":\"64-bit offset format\"}get recordDimension(){return this.header.recordDimension}get dimensions(){return this.header.dimensions}get globalAttributes(){return this.header.globalAttributes}get variables(){return this.header.variables}hasDataVariable(t){return-1!==this.header.variables.findIndex((function(e){return e.name===t}))}getDataVariable(t){let e;return e=\"string\"==typeof t?this.header.variables.find((function(e){return e.name===t})):t,Om(void 0===e,\"variable not found\"),this.buffer.seek(e.offset),e.record?function(t,e,i){const r=zm(e.type),s=e.size?e.size/Nm(r):1,n=i.length,o=new Array(n),a=i.recordStep;for(let e=0;e=1&&(e.timeOffset=s[0]),s.length>=2&&(e.deltaTime=s[1]-s[0]),De&&Me.timeEnd(\"NctrajParser._parse \"+this.name)}}ze.add(\"nctraj\",Km),ze.add(\"ncdf\",Km),ze.add(\"nc\",Km);ze.add(\"trr\",class extends $m{get type(){return\"trr\"}get isBinary(){return!0}_parse(){De&&Me.time(\"TrrParser._parse \"+this.name);const t=vt(this.streamer.data),e=new DataView(t),i=this.frames,r=i.coordinates,s=i.boxes,n=i.times;let o=0;for(;;){o+=8;const i=e.getInt32(o);o+=4,o+=i;const a=e.getInt32(o+8),c=e.getInt32(o+12),l=e.getInt32(o+16),h=e.getInt32(o+28),d=e.getInt32(o+32),u=e.getInt32(o+36),m=e.getInt32(o+40);o+=52;const p=a/9,f=3*m;if(8===p?n.push(e.getFloat64(o)):n.push(e.getFloat32(o)),o+=2*p,a){const t=new Float32Array(9);if(8===p)for(let i=0;i<9;++i)t[i]=10*e.getFloat64(o),o+=8;else for(let i=0;i<9;++i)t[i]=10*e.getFloat32(o),o+=4;s.push(t)}if(o+=c,o+=l,h){let i;if(8===p){i=new Float32Array(f);for(let t=0;t>8&65280|i>>24&255}i=new Float32Array(t,o,f);for(let t=0;t=t.byteLength)break}n.length>=1&&(i.timeOffset=n[0]),n.length>=2&&(i.deltaTime=n[1]-n[0]),De&&Me.timeEnd(\"TrrParser._parse \"+this.name)}});const Zm=new Uint32Array([0,0,0,0,0,0,0,0,0,8,10,12,16,20,25,32,40,50,64,80,101,128,161,203,256,322,406,512,645,812,1024,1290,1625,2048,2580,3250,4096,5060,6501,8192,10321,13003,16384,20642,26007,32768,41285,52015,65536,82570,104031,131072,165140,208063,262144,330280,416127,524287,660561,832255,1048576,1321122,1664510,2097152,2642245,3329021,4194304,5284491,6658042,8388607,10568983,13316085,16777216]);function Qm(t){let e=1,i=0;for(;t>=e&&i<32;)i++,e<<=1;return i}const Jm=new Uint8Array(32);function tp(t,e){let i=1,r=0;Jm[0]=1;for(let r=0;r>=8;for(;0!==s;)Jm[t++]=255&s,s>>=8;i=t}let s=1;for(i--;Jm[i]>=s;)r++,s*=2;return r+8*i}function ep(t,e,i,r){const s=(1<=8;)o=o<<8|e[a++],c|=o>>n<0&&(n>n&(1<8;)ip[a++]=ep(t,e,8,o),r-=8;r>0&&(ip[a++]=ep(t,e,r,o));for(let t=i-1;t>0;t--){let e=0;for(let i=a-1;i>=0;i--){e=e<<8|ip[i];const r=e/s[t]|0;ip[i]=r,e-=r*s[t]}n[t]=e}n[0]=ip[0]|ip[1]<<8|ip[2]<<16|ip[3]<<24}ze.add(\"xtc\",class extends $m{get type(){return\"xtc\"}get isBinary(){return!0}_parse(){De&&Me.time(\"XtcParser._parse \"+this.name);const t=vt(this.streamer.data),e=new DataView(t),i=this.frames,r=i.coordinates,s=i.boxes,n=i.times,o=new Int32Array(6),a=new Int32Array(3),c=new Int32Array(3),l=new Uint32Array(3),h=new Float32Array(3),d=new Float32Array(3);let u=0;const m=new Int32Array(3),p=new Uint32Array(m.buffer);for(;;){let i;const f=e.getInt32(u+4);u+=12;const g=3*f;n.push(e.getFloat32(u)),u+=4;const y=new Float32Array(9);for(let t=0;t<9;++t)y[t]=10*e.getFloat32(u),u+=4;if(s.push(y),f<=9){i=new Float32Array(f);for(let t=0;t16777215?(c[0]=Qm(a[0]),c[1]=Qm(a[1]),c[2]=Qm(a[2]),f=0):f=tp(3,a);let y=e.getInt32(u);u+=4;let b=y-1;b=9>b?9:b;let x=Zm[b]/2|0,v=Zm[y]/2|0;l[0]=l[1]=l[2]=Zm[y];let w=4*Math.ceil(e.getInt32(u)/4);u+=4;const A=1/n;let _=0,S=0;const C=new Uint8Array(t,u);for(h[0]=h[1]=h[2]=0;S0){h[0]=h[1]=h[2]=0;for(let t=0;t<_;t+=3){if(rp(m,C,3,y,l,h,p),S++,h[0]+=d[0]-v,h[1]+=d[1]-v,h[2]+=d[2]-v,0===t){let t=h[0];h[0]=d[0],d[0]=t,t=h[1],h[1]=d[1],d[1]=t,t=h[2],h[2]=d[2],d[2]=t,i[r++]=d[0]*A,i[r++]=d[1]*A,i[r++]=d[2]*A}else d[0]=h[0],d[1]=h[1],d[2]=h[2];i[r++]=h[0]*A,i[r++]=h[1]*A,i[r++]=h[2]*A}}else i[r++]=h[0]*A,i[r++]=h[1]*A,i[r++]=h[2]*A;if(y+=t,t<0?(v=x,x=y>9?Zm[y-1]/2|0:0):t>0&&(x=v,v=Zm[y]/2|0),l[0]=l[1]=l[2]=Zm[y],0===l[0]||0===l[1]||0===l[2])return void console.error(\"(xdrfile error) Undefined error.\")}u+=w}for(let t=0;t=t.byteLength)break}n.length>=1&&(i.timeOffset=n[0]),n.length>=2&&(i.deltaTime=n[1]-n[0]),De&&Me.timeEnd(\"XtcParser._parse \"+this.name)}});class sp extends Lu{constructor(t,e){const i=e||{};super(t,i),this.volume=new Eo(this.name,this.path),this.voxelSize=st(i.voxelSize,1)}get type(){return\"volume\"}get __objName(){return\"volume\"}_afterParse(){this.volume.setMatrix(this.getMatrix()),super._afterParse()}getMatrix(){return new i}}const np=/\\s+/,op=/-?\\d+(?:\\.\\d*)?(?:[eE][+-]?\\d+)?/g,ap=.529177210859;class cp extends sp{get type(){return\"cube\"}_parse(){De&&Me.time(\"CubeParser._parse \"+this.name);const t=this.volume,i=this.streamer.peekLines(6),r={},s=ap*this.voxelSize;function n(t,e){var r=i[t].trim().split(np)[e];return parseFloat(r)}r.atomCount=Math.abs(n(2,0)),r.originX=n(2,1)*ap,r.originY=n(2,2)*ap,r.originZ=n(2,3)*ap,r.NVX=n(3,0),r.NVY=n(4,0),r.NVZ=n(5,0),r.basisX=new e(n(3,1),n(3,2),n(3,3)).multiplyScalar(s),r.basisY=new e(n(4,1),n(4,2),n(4,3)).multiplyScalar(s),r.basisZ=new e(n(5,1),n(5,2),n(5,3)).multiplyScalar(s);const o=new Float32Array(r.NVX*r.NVY*r.NVZ);let a=0,c=0;const l=n(2,0)>0?0:1;this.streamer.eachChunkOfLines((function(t){!function(t,e,i){for(let s=t;s=r.atomCount+6+l){const e=t.match(op);for(let t=0,i=e.length;t>8&255}e.xStart=n[0],e.yStart=n[1],e.zStart=n[2],e.xExtent=n[3],e.yExtent=n[4],e.zExtent=n[5],e.xRate=n[6],e.yRate=n[7],e.zRate=n[8];const t=1/n[17],s=t*this.voxelSize;e.xlen=n[9]*s,e.ylen=n[10]*s,e.zlen=n[11]*s,e.alpha=n[12]*t,e.beta=n[13]*t,e.gamma=n[14]*t,i=n[15]/100,r=n[16],e.gamma=n[14]*t}t.header=e,De&&Me.log(e,i,r);const c=new Float32Array(e.xExtent*e.yExtent*e.zExtent);let l=512;const h=Math.ceil(e.xExtent/8),d=Math.ceil(e.yExtent/8),u=Math.ceil(e.zExtent/8);for(var m=0;ms){const t=i[r].trim();if(\"\"!==t){const e=t.split(hp);for(let t=0,i=e.length;t=s&&(p-s)%u!=0&&m=0?i-1:i+e/3)},parseNormalIndex:function(t,e){var i=parseInt(t,10);return 3*(i>=0?i-1:i+e/3)},addVertex:function(t,e,i){var r=this.vertices,s=this.object.geometry.vertices;s.push(r[t+0]),s.push(r[t+1]),s.push(r[t+2]),s.push(r[e+0]),s.push(r[e+1]),s.push(r[e+2]),s.push(r[i+0]),s.push(r[i+1]),s.push(r[i+2])},addVertexLine:function(t){var e=this.vertices,i=this.object.geometry.vertices;i.push(e[t+0]),i.push(e[t+1]),i.push(e[t+2])},addNormal:function(t,e,i){var r=this.normals,s=this.object.geometry.normals;s.push(r[t+0]),s.push(r[t+1]),s.push(r[t+2]),s.push(r[e+0]),s.push(r[e+1]),s.push(r[e+2]),s.push(r[i+0]),s.push(r[i+1]),s.push(r[i+2])},addFace:function(t,e,i,r,s,n,o,a){var c,l=this.vertices.length,h=this.parseVertexIndex(t,l),d=this.parseVertexIndex(e,l),u=this.parseVertexIndex(i,l);if(void 0===r?this.addVertex(h,d,u):(c=this.parseVertexIndex(r,l),this.addVertex(h,d,c),this.addVertex(d,u,c)),void 0!==s){var m=this.normals.length;h=this.parseNormalIndex(s,m),d=s===n?h:this.parseNormalIndex(n,m),u=s===o?h:this.parseNormalIndex(o,m),void 0===r?this.addNormal(h,d,u):(c=this.parseNormalIndex(a,m),this.addNormal(h,d,c),this.addNormal(d,u,c))}},addLineGeometry:function(t){this.object.geometry.type=\"Line\";for(var e=this.vertices.length,i=0,r=t.length;i0?x.setAttribute(\"normal\",new M(new Float32Array(b.normals),3)):x.computeVertexNormals(),y.push(x)}}return y}};ze.add(\"obj\",class extends kp{get type(){return\"obj\"}getLoader(){return new Mp}});const Tp=function(){this.propertyNameMapping={}};Tp.prototype={constructor:Tp,setPropertyNameMapping:function(t){this.propertyNameMapping=t},bin2str:function(t){for(var e=new Uint8Array(t),i=\"\",r=0;r=r.elements[o].count&&(o++,a=0);var h=this.parseASCIIElement(r.elements[o].properties,l);this.handleElement(i,r.elements[o].name,h),a++}}return this.postProcess(i)},postProcess:function(t){if(t.useColor){for(var e=0;e{const s=r.length;for(let n=0;n/g,\"\"),{declaration:e(),root:i()};function e(){if(!s(/^<\\?xml\\s*/))return;const t={attributes:{}};for(;!n()&&!o(\"?>\");){const e=r();if(!e)return t;t.attributes[e.name]=e.value}return s(/\\?>\\s*/),t}function i(){const t=s($p);if(!t)return;const e={name:t[1],attributes:{},children:[]};for(;!(n()||o(\">\")||o(\"?>\")||o(\"/>\"));){const t=r();if(!t)return e;e.attributes[t.name]=t.value}if(s(/^\\s*\\/>\\s*/))return e;let a;for(s(/\\??>\\s*/),e.content=function(){const t=s(Op);return t?t[1]:\"\"}();a=i();)e.children.push(a);return s(/^<\\/[\\w-:.]+>\\s*/),e}function r(){const t=s(Rp);var e;if(t)return{name:t[1],value:(e=t[2],e.replace(Dp,\"\"))}}function s(e){const i=t.match(e);if(i)return t=t.slice(i[0].length),i}function n(){return 0===t.length}function o(e){return 0===t.indexOf(e)}}class Fp extends Lu{constructor(t,e){const i=e||{};super(t,i),this.useDomParser=st(i.useDomParser,!1),this.xml={name:this.name,path:this.path,data:{}}}get type(){return\"xml\"}get __objName(){return\"xml\"}get isXml(){return!0}__xmlParser(t){return Ep(t)}__domParser(t){return(new window.DOMParser).parseFromString(t,\"text/xml\")}_parse(){De&&Me.time(\"XmlParser._parse \"+this.name),this.useDomParser?this.streamer.data instanceof Document?this.xml.data=this.streamer.data:this.xml.data=this.__domParser(this.streamer.asText()):this.xml.data=this.__xmlParser(this.streamer.asText()),De&&Me.timeEnd(\"XmlParser._parse \"+this.name)}}function Lp(t,e){const i=t.getNamedItem(e);return null!==i?i.value:\"\"}function Np(t,e,i=!1){const r=Lp(t,\"icode\").trim(),s=Lp(t,\"chain\").trim(),n=Lp(t,\"altcode\");let o=Lp(t,\"resnum\");return r&&(o+=\"^\"+r),s&&(o+=\":\"+s),e&&(o+=\".\"+e),i&&n.trim()&&(o+=\"%\"+n),o+=\"/\"+(parseInt(Lp(t,\"model\"))-1),o}function zp(t){const e=Lp(t,\"chain\").trim();let i=`[${Lp(t,\"rescode\")}]${Lp(t,\"resnum\")}`;return e&&(i+=`:${e}`),i}function Vp(t,e,i){void 0===t[e]?t[e]=i:t[e]|=i}function Gp(t,e){return null!==t&&t.value===e}function Up(t,e,i){let r=0;const s=e.getElementsByTagName(\"clash\");for(let e=0,i=s.length;e0&&(r+=1);e.getElementsByTagName(\"bond-outlier\").length>0&&(r+=1);return e.getElementsByTagName(\"plane-outlier\").length>0&&(r+=1),Gp(i.getNamedItem(\"rota\"),\"OUTLIER\")&&(r+=1),Gp(i.getNamedItem(\"rama\"),\"OUTLIER\")&&(r+=1),Gp(i.getNamedItem(\"RNApucker\"),\"outlier\")&&(r+=1),r}ze.add(\"xml\",Fp);class jp{constructor(t,e){this.name=t,this.path=e,this.rsrzDict={},this.rsccDict={},this.rciDict={},this.clashDict={},this.clashArray=[],this.geoDict={},this.geoAtomDict={},this.atomDict={},this.clashSele=\"NONE\"}get type(){return\"validation\"}fromXml(t){De&&Me.time(\"Validation.fromXml\");const e=this.rsrzDict,i=this.rsccDict,r=this.rciDict,s=this.clashDict,n=this.clashArray,o=this.geoDict,a=this.geoAtomDict,c=this.atomDict,l=t.getElementsByTagName(\"Entry\");if(1===l.length){const t=l[0].getElementsByTagName(\"chemical_shift_list\");if(1===t.length){const e=t[0].getElementsByTagName(\"random_coil_index\");for(let t=0,i=e.length;t0&&(o[r]=t)}else{const t=e.getElementsByTagName(\"clash\"),i=e.getElementsByTagName(\"mog-bond-outlier\"),n=e.getElementsByTagName(\"mog-angle-outlier\");if(i.length>0||n.length>0||t.length>0){const e={};a[r]=e;for(let i=0,r=t.length;i>>16&65535|0,o=0;0!==i;){i-=o=i>2e3?2e3:i;do{n=n+(s=s+e[r++]|0)|0}while(--o);s%=65521,n%=65521}return s|n<<16|0}ze.add(\"validation\",class extends Fp{constructor(t,e){super(t,e||{}),this.useDomParser=!0,this.validation=new jp(this.name,this.path)}get __objName(){return\"validation\"}get isXml(){return!0}_parse(){super._parse(),De&&Me.time(\"ValidationParser._parse \"+this.name),this.validation.fromXml(this.xml.data),De&&Me.timeEnd(\"ValidationParser._parse \"+this.name)}});var Xp=function(){for(var t,e=[],i=0;i<256;i++){t=i;for(var r=0;r<8;r++)t=1&t?3988292384^t>>>1:t>>>1;e[i]=t}return e}();function Yp(t,e,i,r){var s=Xp,n=r+i;t^=-1;for(var o=r;o>>8^s[255&(t^e[o])];return-1^t}var Kp=30,Zp=12;function Qp(t,e){var i,r,s,n,o,a,c,l,h,d,u,m,p,f,g,y,b,x,v,w,A,_,S,C,P;i=t.state,r=t.next_in,C=t.input,s=r+(t.avail_in-5),n=t.next_out,P=t.output,o=n-(e-t.avail_out),a=n+(t.avail_out-257),c=i.dmax,l=i.wsize,h=i.whave,d=i.wnext,u=i.window,m=i.hold,p=i.bits,f=i.lencode,g=i.distcode,y=(1<>>=v=x>>>24,p-=v,0===(v=x>>>16&255))P[n++]=65535&x;else{if(!(16&v)){if(0==(64&v)){x=f[(65535&x)+(m&(1<>>=v,p-=v),p<15&&(m+=C[r++]<>>=v=x>>>24,p-=v,!(16&(v=x>>>16&255))){if(0==(64&v)){x=g[(65535&x)+(m&(1<c){t.msg=\"invalid distance too far back\",i.mode=Kp;break t}if(m>>>=v,p-=v,A>(v=n-o)){if((v=A-v)>h&&i.sane){t.msg=\"invalid distance too far back\",i.mode=Kp;break t}if(_=0,S=u,0===d){if(_+=l-v,v2;)P[n++]=S[_++],P[n++]=S[_++],P[n++]=S[_++],w-=3;w&&(P[n++]=S[_++],w>1&&(P[n++]=S[_++]))}else{_=n-A;do{P[n++]=P[_++],P[n++]=P[_++],P[n++]=P[_++],w-=3}while(w>2);w&&(P[n++]=P[_++],w>1&&(P[n++]=P[_++]))}break}}break}}while(r>3,m&=(1<<(p-=w<<3))-1,t.next_in=r,t.next_out=n,t.avail_in=r=1&&0===T[w];w--);if(A>w&&(A=w),0===w)return s[n++]=20971520,s[n++]=20971520,a.bits=1,0;for(v=1;v0&&(t===rf||1!==w))return-1;for(B[1]=0,b=1;btf||t===nf&&P>ef)return 1;for(;;){p=b-S,o[x]m?(f=D[$+o[x]],g=k[M+o[x]]):(f=96,g=0),c=1<>S)+(l-=c)]=p<<24|f<<16|g|0}while(0!==l);for(c=1<>=1;if(0!==c?(I&=c-1,I+=c):I=0,x++,0==--T[b]){if(b===w)break;b=e[i+o[x]]}if(b>A&&(I&d)!==h){for(0===S&&(S=A),u+=v,C=1<<(_=b-S);_+Stf||t===nf&&P>ef)return 1;s[h=I&d]=A<<24|_<<16|u-n|0}}return 0!==I&&(s[u+I]=b-S<<24|64<<16|0),a.bits=A,0}var df=1,uf=2,mf=0,pf=-2,ff=1,gf=12,yf=30,bf=852,xf=592;function vf(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function wf(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function Af(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,function(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg=\"\",e.wrap&&(t.adler=1&e.wrap),e.mode=ff,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(bf),e.distcode=e.distdyn=new Int32Array(xf),e.sane=1,e.back=-1,mf):pf}(t)):pf}function _f(t,e){var i,r;return t?(r=new wf,t.state=r,r.window=null,i=function(t,e){var i,r;return t&&t.state?(r=t.state,e<0?(i=0,e=-e):(i=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?pf:(null!==r.window&&r.wbits!==e&&(r.window=null),r.wrap=i,r.wbits=e,Af(t))):pf}(t,e),i!==mf&&(t.state=null),i):pf}var Sf,Cf,Pf=!0;function If(t){if(Pf){var e;for(Sf=new Int32Array(512),Cf=new Int32Array(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(hf(df,t.lens,0,288,Sf,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;hf(uf,t.lens,0,32,Cf,0,t.work,{bits:5}),Pf=!1}t.lencode=Sf,t.lenbits=9,t.distcode=Cf,t.distbits=5}function kf(t,e,i,r){var s,n=t.state;return null===n.window&&(n.wsize=1<=n.wsize?(Wp(n.window,e,i-n.wsize,n.wsize,0),n.wnext=0,n.whave=n.wsize):((s=n.wsize-n.wnext)>r&&(s=r),Wp(n.window,e,i-r,s,n.wnext),(r-=s)?(Wp(n.window,e,i-r,r,0),n.wnext=r,n.whave=n.wsize):(n.wnext+=s,n.wnext===n.wsize&&(n.wnext=0),n.whave>>8&255,i.check=Yp(i.check,I,2,0),l=0,h=0,i.mode=2;break}if(i.flags=0,i.head&&(i.head.done=!1),!(1&i.wrap)||(((255&l)<<8)+(l>>8))%31){t.msg=\"incorrect header check\",i.mode=yf;break}if(8!=(15&l)){t.msg=\"unknown compression method\",i.mode=yf;break}if(h-=4,A=8+(15&(l>>>=4)),0===i.wbits)i.wbits=A;else if(A>i.wbits){t.msg=\"invalid window size\",i.mode=yf;break}i.dmax=1<>8&1),512&i.flags&&(I[0]=255&l,I[1]=l>>>8&255,i.check=Yp(i.check,I,2,0)),l=0,h=0,i.mode=3;case 3:for(;h<32;){if(0===a)break t;a--,l+=r[n++]<>>8&255,I[2]=l>>>16&255,I[3]=l>>>24&255,i.check=Yp(i.check,I,4,0)),l=0,h=0,i.mode=4;case 4:for(;h<16;){if(0===a)break t;a--,l+=r[n++]<>8),512&i.flags&&(I[0]=255&l,I[1]=l>>>8&255,i.check=Yp(i.check,I,2,0)),l=0,h=0,i.mode=5;case 5:if(1024&i.flags){for(;h<16;){if(0===a)break t;a--,l+=r[n++]<>>8&255,i.check=Yp(i.check,I,2,0)),l=0,h=0}else i.head&&(i.head.extra=null);i.mode=6;case 6:if(1024&i.flags&&((m=i.length)>a&&(m=a),m&&(i.head&&(A=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Array(i.head.extra_len)),Wp(i.head.extra,r,n,m,A)),512&i.flags&&(i.check=Yp(i.check,r,m,n)),a-=m,n+=m,i.length-=m),i.length))break t;i.length=0,i.mode=7;case 7:if(2048&i.flags){if(0===a)break t;m=0;do{A=r[n+m++],i.head&&A&&i.length<65536&&(i.head.name+=String.fromCharCode(A))}while(A&&m>9&1,i.head.done=!0),t.adler=i.check=0,i.mode=gf;break;case 10:for(;h<32;){if(0===a)break t;a--,l+=r[n++]<>>=7&h,h-=7&h,i.mode=27;break}for(;h<3;){if(0===a)break t;a--,l+=r[n++]<>>=1)){case 0:i.mode=14;break;case 1:if(If(i),i.mode=20,6===e){l>>>=2,h-=2;break t}break;case 2:i.mode=17;break;case 3:t.msg=\"invalid block type\",i.mode=yf}l>>>=2,h-=2;break;case 14:for(l>>>=7&h,h-=7&h;h<32;){if(0===a)break t;a--,l+=r[n++]<>>16^65535)){t.msg=\"invalid stored block lengths\",i.mode=yf;break}if(i.length=65535&l,l=0,h=0,i.mode=15,6===e)break t;case 15:i.mode=16;case 16:if(m=i.length){if(m>a&&(m=a),m>c&&(m=c),0===m)break t;Wp(s,r,n,m,o),a-=m,n+=m,c-=m,o+=m,i.length-=m;break}i.mode=gf;break;case 17:for(;h<14;){if(0===a)break t;a--,l+=r[n++]<>>=5,h-=5,i.ndist=1+(31&l),l>>>=5,h-=5,i.ncode=4+(15&l),l>>>=4,h-=4,i.nlen>286||i.ndist>30){t.msg=\"too many length or distance symbols\",i.mode=yf;break}i.have=0,i.mode=18;case 18:for(;i.have>>=3,h-=3}for(;i.have<19;)i.lens[k[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,S={bits:i.lenbits},_=hf(0,i.lens,0,19,i.lencode,0,i.work,S),i.lenbits=S.bits,_){t.msg=\"invalid code lengths set\",i.mode=yf;break}i.have=0,i.mode=19;case 19:for(;i.have>>16&255,b=65535&P,!((g=P>>>24)<=h);){if(0===a)break t;a--,l+=r[n++]<>>=g,h-=g,i.lens[i.have++]=b;else{if(16===b){for(C=g+2;h>>=g,h-=g,0===i.have){t.msg=\"invalid bit length repeat\",i.mode=yf;break}A=i.lens[i.have-1],m=3+(3&l),l>>>=2,h-=2}else if(17===b){for(C=g+3;h>>=g)),l>>>=3,h-=3}else{for(C=g+7;h>>=g)),l>>>=7,h-=7}if(i.have+m>i.nlen+i.ndist){t.msg=\"invalid bit length repeat\",i.mode=yf;break}for(;m--;)i.lens[i.have++]=A}}if(i.mode===yf)break;if(0===i.lens[256]){t.msg=\"invalid code -- missing end-of-block\",i.mode=yf;break}if(i.lenbits=9,S={bits:i.lenbits},_=hf(df,i.lens,0,i.nlen,i.lencode,0,i.work,S),i.lenbits=S.bits,_){t.msg=\"invalid literal/lengths set\",i.mode=yf;break}if(i.distbits=6,i.distcode=i.distdyn,S={bits:i.distbits},_=hf(uf,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,S),i.distbits=S.bits,_){t.msg=\"invalid distances set\",i.mode=yf;break}if(i.mode=20,6===e)break t;case 20:i.mode=21;case 21:if(a>=6&&c>=258){t.next_out=o,t.avail_out=c,t.next_in=n,t.avail_in=a,i.hold=l,i.bits=h,Qp(t,u),o=t.next_out,s=t.output,c=t.avail_out,n=t.next_in,r=t.input,a=t.avail_in,l=i.hold,h=i.bits,i.mode===gf&&(i.back=-1);break}for(i.back=0;y=(P=i.lencode[l&(1<>>16&255,b=65535&P,!((g=P>>>24)<=h);){if(0===a)break t;a--,l+=r[n++]<>x)])>>>16&255,b=65535&P,!(x+(g=P>>>24)<=h);){if(0===a)break t;a--,l+=r[n++]<>>=x,h-=x,i.back+=x}if(l>>>=g,h-=g,i.back+=g,i.length=b,0===y){i.mode=26;break}if(32&y){i.back=-1,i.mode=gf;break}if(64&y){t.msg=\"invalid literal/length code\",i.mode=yf;break}i.extra=15&y,i.mode=22;case 22:if(i.extra){for(C=i.extra;h>>=i.extra,h-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=23;case 23:for(;y=(P=i.distcode[l&(1<>>16&255,b=65535&P,!((g=P>>>24)<=h);){if(0===a)break t;a--,l+=r[n++]<>x)])>>>16&255,b=65535&P,!(x+(g=P>>>24)<=h);){if(0===a)break t;a--,l+=r[n++]<>>=x,h-=x,i.back+=x}if(l>>>=g,h-=g,i.back+=g,64&y){t.msg=\"invalid distance code\",i.mode=yf;break}i.offset=b,i.extra=15&y,i.mode=24;case 24:if(i.extra){for(C=i.extra;h>>=i.extra,h-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){t.msg=\"invalid distance too far back\",i.mode=yf;break}i.mode=25;case 25:if(0===c)break t;if(m=u-c,i.offset>m){if((m=i.offset-m)>i.whave&&i.sane){t.msg=\"invalid distance too far back\",i.mode=yf;break}m>i.wnext?(m-=i.wnext,p=i.wsize-m):p=i.wnext-m,m>i.length&&(m=i.length),f=i.window}else f=s,p=o-i.offset,m=i.length;m>c&&(m=c),c-=m,i.length-=m;do{s[o++]=f[p++]}while(--m);0===i.length&&(i.mode=21);break;case 26:if(0===c)break t;s[o++]=i.length,c--,i.mode=21;break;case 27:if(i.wrap){for(;h<32;){if(0===a)break t;a--,l|=r[n++]<=252?6:Of>=248?5:Of>=240?4:Of>=224?3:Of>=192?2:1;function Rf(t){var e,i,r,s,n,o=t.length,a=0;for(s=0;s>>6,e[n++]=128|63&i):i<65536?(e[n++]=224|i>>>12,e[n++]=128|i>>>6&63,e[n++]=128|63&i):(e[n++]=240|i>>>18,e[n++]=128|i>>>12&63,e[n++]=128|i>>>6&63,e[n++]=128|63&i);return e}function Ef(t,e){var i,r,s,n,o=e||t.length,a=new Array(2*o);for(r=0,i=0;i4)a[r++]=65533,i+=n-1;else{for(s&=2===n?31:3===n?15:7;n>1&&i1?a[r++]=65533:s<65536?a[r++]=s:(s-=65536,a[r++]=55296|s>>10&1023,a[r++]=56320|1023&s)}return function(t,e){if(e<65537&&(t.subarray&&Df||!t.subarray&&Bf))return String.fromCharCode.apply(null,Hp(t,e));for(var i=\"\",r=0;rt.length&&(e=t.length),i=e-1;i>=0&&128==(192&t[i]);)i--;return i<0||0===i?e:i+$f[t[i]]>e?i:e}$f[254]=$f[254]=1;var Lf=0,Nf={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"};function zf(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}function Vf(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}var Gf=Object.prototype.toString;function Uf(t){if(!(this instanceof Uf))return new Uf(t);this.options=function(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var i=e.shift();if(i){if(\"object\"!=typeof i)throw new TypeError(i+\"must be non-object\");for(var r in i)i.hasOwnProperty(r)&&(t[r]=i[r])}}return t}({chunkSize:16384,windowBits:0,to:\"\"},t||{});var e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new zf,this.strm.avail_out=0;var i,r,s,n=_f(this.strm,e.windowBits);if(n!==Lf)throw new Error(Nf[n]);this.header=new Vf,i=this.strm,r=this.header,i&&i.state&&(0==(2&(s=i.state).wrap)||(s.head=r,r.done=!1))}Uf.prototype.push=function(t,e){var i,r,s,n,o,a,c=this.strm,l=this.options.chunkSize,h=this.options.dictionary,d=!1;if(this.ended)return!1;r=e===~~e?e:!0===e?4:0,\"string\"==typeof t?c.input=function(t){for(var e=new Uint8Array(t.length),i=0,r=e.length;i0||0===c.avail_out)&&1!==i);return 1===i&&(r=4),4===r?(i=function(t){if(!t||!t.state)return pf;var e=t.state;return e.window&&(e.window=null),t.state=null,mf}(this.strm),this.onEnd(i),this.ended=!0,i===Lf):2!==r||(this.onEnd(Lf),c.avail_out=0,!0)},Uf.prototype.onData=function(t){this.chunks.push(t)},Uf.prototype.onEnd=function(t){t===Lf&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=function(t){var e,i,r,s,n,o;for(r=0,e=0,i=t.length;e({path:t,data:e.data})))}getUrl(t){const e=ri(t);return`${this.baseUrl}file/${e.path}${e.query}`}getCountUrl(t){const e=ri(t);return`${this.baseUrl}traj/numframes/${e.path}${e.query}`}getFrameUrl(t,e){const i=ri(t);return`${this.baseUrl}traj/frame/${e}/${i.path}${i.query}`}getFrameParams(t,e){return`atomIndices=${e.join(\";\")}`}getPathUrl(t,e){const i=ri(t);return`${this.baseUrl}traj/path/${e}/${i.path}${i.query}`}getExt(t){return ri(t).ext}}function ig(t,e){return{type:\"integer\",max:t,min:e}}function rg(t,e,i){return{type:\"number\",precision:t,max:e,min:i}}function sg(t,e,i){return{type:\"range\",step:t,max:e,min:i}}function ng(...t){return{type:\"select\",options:t.reduce(((t,e)=>Object.assign(Object.assign({},t),{[e]:e})),{})}}const og={backgroundColor:{type:\"color\"},quality:ng(\"auto\",\"low\",\"medium\",\"high\"),sampleLevel:sg(1,5,-1),impostor:{type:\"boolean\"},workerDefault:{type:\"boolean\"},rotateSpeed:rg(1,10,0),zoomSpeed:rg(1,10,0),panSpeed:rg(1,10,0),clipNear:sg(1,100,0),clipFar:sg(1,100,0),clipDist:ig(200,0),clipMode:ng(\"scene\",\"camera\"),clipScale:ng(\"relative\",\"absolute\"),fogNear:sg(1,100,0),fogFar:sg(1,100,0),cameraType:ng(\"perspective\",\"orthographic\",\"stereo\"),cameraEyeSep:rg(3,1,.01),cameraFov:sg(1,120,15),lightColor:{type:\"color\"},lightIntensity:rg(2,10,0),ambientColor:{type:\"color\"},ambientIntensity:rg(2,10,0),hoverTimeout:ig(1e4,-1),tooltip:{type:\"boolean\"},mousePreset:ng(...Object.keys(Zo))};const ag=\"2.2.2\";export{zh as AngleRepresentation,hu as ArrowBuffer,La as Assembly,ed as AxesRepresentation,rd as BackboneRepresentation,id as BallAndStickRepresentation,sd as BaseRepresentation,fu as BoxBuffer,Tc as BufferRepresentation,dd as CartoonRepresentation,hl as Collection,zt as Colormaker,Fe as ColormakerRegistry,ll as Component,$l as ComponentCollection,au as ConeBuffer,ud as ContactRepresentation,ui as Counter,td as CylinderBuffer,Le as DatasourceRegistry,De as Debug,Ge as DecompressorRegistry,gd as DihedralHistogramRepresentation,md as DihedralRepresentation,bd as DistanceRepresentation,wu as EllipsoidBuffer,pl as Frames,Ad as HelixorientRepresentation,Bd as HyperballRepresentation,$a as Kdtree,ta as KeyActions,$d as LabelRepresentation,tr as LeftMouseButton,_d as LicoriceRepresentation,Rd as LineRepresentation,We as ListingDatasource,eg as MdsrvDatasource,Te as MeasurementDefaultParams,Uo as MeshBuffer,er as MiddleMouseButton,zd as MolecularSurface,Vd as MolecularSurfaceRepresentation,Ko as MouseActions,Pu as OctahedronBuffer,ze as ParserRegistry,ai as PdbWriter,br as PickingProxy,Wc as PointBuffer,Gd as PointRepresentation,Nr as Queue,dl as RepresentationCollection,nl as RepresentationElement,Ne as RepresentationRegistry,Wd as RibbonRepresentation,ir as RightMouseButton,qd as RocketRepresentation,Xd as RopeRepresentation,Re as ScriptExtensions,ci as SdfWriter,pe as Selection,Mc as Shape,Ll as ShapeComponent,Yd as SpacefillRepresentation,Ts as SpatialHash,Gc as SphereBuffer,Fl as Stage,tg as StaticDatasource,di as StlWriter,Cc as Structure,Tl as StructureComponent,Ml as StructureComponentDefaultParameters,Sh as StructureRepresentation,fl as Superposition,Bl as SurfaceComponent,Bu as TetrahedronBuffer,Eh as TextBuffer,Fu as TorusBuffer,Qd as TraceRepresentation,qe as TrajectoryDatasource,yl as TrajectoryPlayer,Jd as TubeRepresentation,og as UIStageParameters,tu as UnitcellRepresentation,eu as ValidationRepresentation,ag as Version,Ji as Viewer,Eo as Volume,Dl as VolumeComponent,Nh as WidelineBuffer,ni as autoLoad,ic as concatStructures,dt as download,at as flatten,si as getDataInfo,ri as getFileInfo,rt as getQuery,tc as guessElement,Oe as setDebug,Xe as setListingDatasource,Be as setMeasurementDefaultParams,Ye as setTrajectoryDatasource,kl as superpose,ut as throttle,gt as uniqueArray};\n//# sourceMappingURL=ngl.esm.js.map\n","import { Structure } from 'ngl'\nimport { AppModel } from './model'\n\nexport function getOffset(\n model: AppModel,\n rowName: string,\n structure: Structure,\n mouseCol: number,\n startPos: number,\n) {\n const rn = structure.residueStore.count\n const rp = structure.getResidueProxy()\n const pos = model.msaview.relativePxToBp(rowName, mouseCol)\n for (let i = 0; i < rn; ++i) {\n rp.index = i\n if (rp.resno === pos + startPos - 1) {\n return rp\n }\n }\n}\n","import React, { useCallback, useState, useEffect, useRef } from 'react'\nimport { getSnapshot } from 'mobx-state-tree'\nimport { observer } from 'mobx-react'\nimport { Button, Select, MenuItem, TextField } from '@mui/material'\nimport {\n Stage,\n StaticDatasource,\n DatasourceRegistry,\n Component,\n Structure,\n} from 'ngl'\nimport { AppModel } from './model'\nimport { getOffset } from './util'\nimport Annotation from 'ngl/dist/declarations/component/annotation'\n\nDatasourceRegistry.add(\n 'data',\n new StaticDatasource('https://files.rcsb.org/download/'),\n)\nconst ProteinPanel = observer(function ({ model }: { model: AppModel }) {\n const annotations = useRef([])\n const [type, setType] = useState('cartoon')\n const [res, setRes] = useState([])\n const [stage, setStage] = useState()\n const [isMouseHovering, setMouseHovering] = useState(false)\n const { msaview, nglSelection } = model\n const { selectedStructures, mouseCol } = msaview\n const structures = getSnapshot(selectedStructures)\n\n const stageElementRef = useCallback((element: HTMLDivElement) => {\n if (element) {\n const currentStage = new Stage(element)\n setStage(currentStage)\n }\n }, [])\n\n useEffect(() => {\n return () => stage?.dispose()\n }, [stage])\n\n useEffect(() => {\n if (!structures.length || !stage) {\n return\n }\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n ;(async () => {\n // Handle window resizing\n window.addEventListener('resize', () => {\n stage.handleResize()\n })\n\n const res = await Promise.all(\n structures.map(\n selection =>\n stage.loadFile(\n `data://${selection.structure.pdb}.pdb`,\n ) as Promise,\n ),\n )\n setRes(res)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n stage.signals.hovered.add((pickingProxy: any) => {\n if (pickingProxy && (pickingProxy.atom || pickingProxy.bond)) {\n const atom = pickingProxy.atom || pickingProxy.closestBondAtom\n msaview.setMouseoveredColumn(\n atom.resno - structures[0]?.structure.startPos,\n atom.chainname,\n pickingProxy.picker.structure.name,\n )\n }\n })\n })()\n }, [msaview, structures, stage])\n\n useEffect(() => {\n if (stage) {\n for (const elt of res) {\n elt.removeAllRepresentations()\n elt.addRepresentation(type, { sele: nglSelection })\n }\n stage.autoView()\n }\n }, [type, res, stage, nglSelection])\n\n useEffect(() => {\n if (structures.length && !isMouseHovering) {\n res.forEach((elt, index) => {\n if (annotations.current.length) {\n elt.removeAnnotation(annotations.current[index])\n }\n annotations.current = []\n if (mouseCol !== undefined) {\n // @ts-expect-error\n const structure = elt.structure as Structure\n const offset = getOffset(\n model,\n structures[index].id,\n structure,\n mouseCol,\n structures[0].structure.startPos,\n )\n if (offset) {\n const ap = structure.getAtomProxy()\n ap.index = offset.atomOffset\n\n annotations.current.push(\n // @ts-expect-error\n elt.addAnnotation(ap.positionToVector3(), offset.qualifiedName()),\n )\n }\n }\n stage?.viewer.requestRender()\n })\n }\n }, [model, mouseCol, structures, stage?.viewer, res, isMouseHovering])\n\n return selectedStructures.length ? (\n
\n
\n msaview.clearSelectedStructures()}\n variant=\"contained\"\n >\n Clear\n \n\n
\n \n
\n model.setNGLSelection(event.target.value)}\n />\n
\n\n setMouseHovering(true)}\n onMouseLeave={() => setMouseHovering(false)}\n />\n
\n ) : null\n})\n\nexport default ProteinPanel\n"],"names":["value","x","target","output","index","source","nextKey","REVISION","CullFaceNone","CullFaceBack","CullFaceFront","PCFShadowMap","PCFSoftShadowMap","VSMShadowMap","FrontSide","BackSide","DoubleSide","FlatShading","NoBlending","NormalBlending","AdditiveBlending","SubtractiveBlending","MultiplyBlending","CustomBlending","AddEquation","SubtractEquation","ReverseSubtractEquation","MinEquation","MaxEquation","ZeroFactor","OneFactor","SrcColorFactor","OneMinusSrcColorFactor","SrcAlphaFactor","OneMinusSrcAlphaFactor","DstAlphaFactor","OneMinusDstAlphaFactor","DstColorFactor","OneMinusDstColorFactor","SrcAlphaSaturateFactor","NeverDepth","AlwaysDepth","LessDepth","LessEqualDepth","EqualDepth","GreaterEqualDepth","GreaterDepth","NotEqualDepth","MultiplyOperation","MixOperation","AddOperation","NoToneMapping","LinearToneMapping","ReinhardToneMapping","CineonToneMapping","ACESFilmicToneMapping","CustomToneMapping","UVMapping","CubeReflectionMapping","CubeRefractionMapping","EquirectangularReflectionMapping","EquirectangularRefractionMapping","CubeUVReflectionMapping","CubeUVRefractionMapping","RepeatWrapping","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestFilter","NearestMipmapNearestFilter","NearestMipmapLinearFilter","LinearFilter","LinearMipmapNearestFilter","LinearMipmapLinearFilter","UnsignedByteType","ByteType","ShortType","UnsignedShortType","IntType","UnsignedIntType","FloatType","HalfFloatType","UnsignedShort4444Type","UnsignedShort5551Type","UnsignedShort565Type","UnsignedInt248Type","AlphaFormat","RGBFormat","RGBAFormat","LuminanceFormat","LuminanceAlphaFormat","RGBEFormat","DepthFormat","DepthStencilFormat","RedFormat","RedIntegerFormat","RGFormat","RGIntegerFormat","RGBIntegerFormat","RGBAIntegerFormat","RGB_S3TC_DXT1_Format","RGBA_S3TC_DXT1_Format","RGBA_S3TC_DXT3_Format","RGBA_S3TC_DXT5_Format","RGB_PVRTC_4BPPV1_Format","RGB_PVRTC_2BPPV1_Format","RGBA_PVRTC_4BPPV1_Format","RGBA_PVRTC_2BPPV1_Format","RGB_ETC1_Format","RGB_ETC2_Format","RGBA_ETC2_EAC_Format","RGBA_ASTC_4x4_Format","RGBA_ASTC_5x4_Format","RGBA_ASTC_5x5_Format","RGBA_ASTC_6x5_Format","RGBA_ASTC_6x6_Format","RGBA_ASTC_8x5_Format","RGBA_ASTC_8x6_Format","RGBA_ASTC_8x8_Format","RGBA_ASTC_10x5_Format","RGBA_ASTC_10x6_Format","RGBA_ASTC_10x8_Format","RGBA_ASTC_10x10_Format","RGBA_ASTC_12x10_Format","RGBA_ASTC_12x12_Format","RGBA_BPTC_Format","SRGB8_ALPHA8_ASTC_4x4_Format","SRGB8_ALPHA8_ASTC_5x4_Format","SRGB8_ALPHA8_ASTC_5x5_Format","SRGB8_ALPHA8_ASTC_6x5_Format","SRGB8_ALPHA8_ASTC_6x6_Format","SRGB8_ALPHA8_ASTC_8x5_Format","SRGB8_ALPHA8_ASTC_8x6_Format","SRGB8_ALPHA8_ASTC_8x8_Format","SRGB8_ALPHA8_ASTC_10x5_Format","SRGB8_ALPHA8_ASTC_10x6_Format","SRGB8_ALPHA8_ASTC_10x8_Format","SRGB8_ALPHA8_ASTC_10x10_Format","SRGB8_ALPHA8_ASTC_12x10_Format","SRGB8_ALPHA8_ASTC_12x12_Format","LoopOnce","LoopRepeat","LoopPingPong","InterpolateDiscrete","InterpolateLinear","InterpolateSmooth","ZeroCurvatureEnding","ZeroSlopeEnding","WrapAroundEnding","NormalAnimationBlendMode","AdditiveAnimationBlendMode","TrianglesDrawMode","LinearEncoding","sRGBEncoding","GammaEncoding","RGBEEncoding","LogLuvEncoding","RGBM7Encoding","RGBM16Encoding","RGBDEncoding","BasicDepthPacking","RGBADepthPacking","TangentSpaceNormalMap","ObjectSpaceNormalMap","KeepStencilOp","AlwaysStencilFunc","StaticDrawUsage","DynamicDrawUsage","EventDispatcher","type","listener","listeners","listenerArray","event","array","i","l","_lut","MathUtils","d0","d1","d2","d3","min","max","n","m","a1","a2","b1","b2","y","t","low","high","range","degrees","radians","q","a","b","c","order","cos","sin","c2","s2","c13","s13","c1_3","s1_3","c3_1","s3_1","Vector2","scalar","v","w","s","e","minVal","maxVal","length","dx","dy","alpha","v1","v2","offset","attribute","center","angle","Matrix3","n11","n12","n13","n21","n22","n23","n31","n32","n33","te","me","xAxis","yAxis","zAxis","ae","be","a11","a12","a13","a21","a22","a23","a31","a32","a33","b11","b12","b13","b21","b22","b23","b31","b32","b33","d","f","g","h","matrix","throwOnDegenerate","t11","t12","t13","det","detInv","tmp","matrix4","r","tx","ty","sx","sy","rotation","cx","cy","theta","_canvas","ImageUtils","image","canvas","context","textureId","Texture","mapping","wrapS","wrapT","magFilter","minFilter","format","anisotropy","encoding","meta","isRootObject","url","uv","Vector4","z","m11","m12","m13","m21","m22","m23","m31","m32","m33","xx","yy","zz","xy","xz","yz","WebGLRenderTarget","width","height","options","WebGLMultisampleRenderTarget","Quaternion","qa","qb","qm","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","x0","y0","z0","w0","x1","y1","z1","w1","dir","sqrSin","len","tDir","quaternion","euler","update","c1","c3","s1","s3","axis","halfAngle","trace","vFrom","vTo","step","p","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","callback","_vector","Vector3","_quaternion","qx","qy","qz","qw","ix","iy","iz","iw","camera","ax","ay","az","bx","by","bz","denominator","planeNormal","normal","dz","radius","phi","sinPhiRadius","sz","_v1","_m1","Matrix4","_zero","_one","_x","_y","_z","n14","n24","n34","n41","n42","n43","n44","scaleX","scaleY","scaleZ","af","bf","ce","cf","de","df","ac","ad","bc","bd","eye","up","a14","a24","a34","a41","a42","a43","a44","b14","b24","b34","b41","b42","b43","b44","t14","scaleXSq","scaleYSq","scaleZSq","position","scale","x2","y2","z2","wx","wy","wz","invSX","invSY","invSZ","left","right","top","bottom","near","far","_matrix","_quaternion$1","Euler","clamp","newOrder","optionalResult","Layers","channel","layers","_object3DId","_v1$1","_q1","_m1$1","_target","_position","_scale","_quaternion$2","_xAxis","_yAxis","_zAxis","_addedEvent","_removedEvent","Object3D","onRotationChange","onQuaternionChange","distance","vector","parent","object","id","name","children","force","updateParents","updateChildren","serialize","library","element","parameters","shapes","shape","uuids","geometries","extractFromCache","materials","textures","images","cache","values","key","data","recursive","child","Scene","_points","_vector$1","_box","Box3","_v0","_v1$2","_v2","_f0","_f1","_f2","_center","_extents","_triangleNormal","_testAxis","minX","minY","minZ","maxX","maxY","maxZ","points","il","size","halfSize","box","point","geometry","sphere","plane","triangle","axes","satForAxes","v0","extents","j","p0","p1","p2","_box$1","Sphere","optionalCenter","maxRadiusSq","radiusSum","deltaLengthSq","_vector$2","_segCenter","_segDir","_diff","_edge1","_edge2","_normal","Ray","origin","direction","ray","directionDistance","optionalPointOnRay","optionalPointOnSegment","segExtent","a01","b0","s0","sqrDist","extDet","invDet","tca","radius2","thc","t0","t1","distToPoint","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","backfaceCulling","DdN","sign","DdQxE2","DdE1xQ","QdN","_vector1","_vector2","_normalMatrix","Plane","constant","inverseNormalLength","line","startSign","endSign","optionalNormalMatrix","normalMatrix","referencePoint","_v0$1","_v1$3","_v2$1","_v3","_vab","_vac","_vbc","_vap","_vbp","_vcp","Triangle","targetLengthSq","dot00","dot01","dot02","dot11","dot12","denom","invDenom","u","p3","uv1","uv2","uv3","i0","i1","i2","d4","vc","d5","d6","vb","va","_colorKeywords","_hslA","_hslB","Color","hue2rgb","SRGBToLinear","LinearToSRGB","hex","style","handleAlpha","string","color","components","gammaFactor","safeInverse","hue","saturation","lightness","delta","color1","color2","Face3","materialIndex","materialId","Material","newValue","currentValue","isRoot","srcPlanes","dstPlanes","MeshBasicMaterial","_vector$3","_vector2$1","BufferAttribute","itemSize","normalized","index1","index2","colors","vectors","Int8BufferAttribute","Uint8BufferAttribute","Uint8ClampedBufferAttribute","Int16BufferAttribute","Uint16BufferAttribute","Int32BufferAttribute","Uint32BufferAttribute","Float32BufferAttribute","Float64BufferAttribute","DirectGeometry","groups","group","faces","face","vertices","faceVertexUvs","hasFaceVertexUv","hasFaceVertexUv2","morphTargets","morphTargetsLength","morphTargetsPosition","morphNormals","morphNormalsLength","morphTargetsNormal","skinIndices","skinWeights","hasSkinIndices","hasSkinWeights","vertexNormals","vertexColors","vertexUvs","morphTarget","morphNormal","arrayMax","_bufferGeometryId","_m1$2","_obj","_offset","_box$2","_boxMorphTargets","_vector$4","BufferGeometry","start","count","tangent","positions","lineDistances","direct","normals","uvs","uvs2","morphAttributesPosition","morphAttribute","morphTargetsRelative","jl","positionAttribute","normalAttribute","pA","pB","pC","nA","nB","nC","cb","ab","vA","vB","vC","attributes","attributeArray1","attribute2","attributeArray2","attributeOffset","convertBufferAttribute","indices","array2","geometry2","newAttribute","morphAttributes","morphArray","attributeData","hasMorphAttributes","attributeArray","boundingSphere","boundingBox","_inverseMatrix","_ray","_sphere","_vA","_vB","_vC","_tempA","_tempB","_tempC","_morphA","_morphB","_morphC","_uvA","_uvB","_uvC","_intersectionPoint","_intersectionPointWorld","Mesh","material","keys","ml","raycaster","intersects","matrixWorld","intersection","morphPosition","drawRange","groupMaterial","end","checkBufferGeometryIntersection","isMultiMaterial","fl","faceMaterial","fvA","fvB","fvC","checkIntersection","uvs_f","intersect","morphInfluences","influence","_geometryId","_m1$3","_obj$1","_offset$1","Geometry","scope","addFace","areaWeighted","vl","tmpGeo","dstNormalsFace","dstNormalsVertex","faceNormal","materialIndexOffset","vertexOffset","vertices1","vertices2","faces1","faces2","colors1","colors2","vertexCopy","faceCopy","faceVertexNormals","faceVertexColors","faceVertexUvs2","uvsCopy","k","kl","mesh","verticesMap","unique","changes","precision","faceIndicesToRemove","idx","diff","materialIndexSort","uvs1","newUvs1","newUvs2","vertex","normalsHash","colorsHash","uvsHash","hasMaterial","hasFaceUv","hasFaceNormal","hasFaceVertexNormal","hasFaceColor","hasFaceVertexColor","faceType","setBit","getUvIndex","getNormalIndex","getColorIndex","enabled","hash","srcVertexNormal","destVertexNormal","BoxGeometry","depth","widthSegments","heightSegments","depthSegments","BoxBufferGeometry","numberOfVertices","groupStart","buildPlane","udir","vdir","gridX","gridY","segmentWidth","segmentHeight","widthHalf","heightHalf","depthHalf","gridX1","gridY1","vertexCounter","groupCount","cloneUniforms","src","property","mergeUniforms","uniforms","merged","UniformsUtils","default_vertex","default_fragment","ShaderMaterial","extensions","Camera","PerspectiveCamera","fov","aspect","focalLength","vExtentSlope","fullWidth","fullHeight","view","skew","CubeCamera","renderTarget","cameraPX","cameraNX","cameraPY","cameraNY","cameraPZ","cameraNZ","renderer","scene","currentXrEnabled","currentRenderTarget","generateMipmaps","stencil","WebGLCubeRenderTarget","dummy","texture","shader","DataTexture","_sphere$1","_vector$5","Frustum","p4","p5","planes","frustum","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","sprite","negRadius","UniformsLib","WebGLAnimation","isAnimating","animationLoop","requestId","onAnimationFrame","time","frame","WebGLAttributes","gl","capabilities","isWebGL2","buffers","createBuffer","bufferType","usage","buffer","updateBuffer","updateRange","get","remove","PlaneGeometry","PlaneBufferGeometry","width_half","height_half","segment_width","segment_height","alphamap_fragment","alphamap_pars_fragment","alphatest_fragment","aomap_fragment","aomap_pars_fragment","begin_vertex","beginnormal_vertex","bsdfs","bumpmap_pars_fragment","clipping_planes_fragment","clipping_planes_pars_fragment","clipping_planes_pars_vertex","clipping_planes_vertex","color_fragment","color_pars_fragment","color_pars_vertex","color_vertex","common","cube_uv_reflection_fragment","defaultnormal_vertex","displacementmap_pars_vertex","displacementmap_vertex","emissivemap_fragment","emissivemap_pars_fragment","encodings_fragment","encodings_pars_fragment","envmap_fragment","envmap_common_pars_fragment","envmap_pars_fragment","envmap_pars_vertex","envmap_vertex","fog_vertex","fog_pars_vertex","fog_fragment","fog_pars_fragment","gradientmap_pars_fragment","lightmap_fragment","lightmap_pars_fragment","lights_lambert_vertex","lights_pars_begin","envmap_physical_pars_fragment","lights_toon_fragment","lights_toon_pars_fragment","lights_phong_fragment","lights_phong_pars_fragment","lights_physical_fragment","lights_physical_pars_fragment","lights_fragment_begin","lights_fragment_maps","lights_fragment_end","logdepthbuf_fragment","logdepthbuf_pars_fragment","logdepthbuf_pars_vertex","logdepthbuf_vertex","map_fragment","map_pars_fragment","map_particle_fragment","map_particle_pars_fragment","metalnessmap_fragment","metalnessmap_pars_fragment","morphnormal_vertex","morphtarget_pars_vertex","morphtarget_vertex","normal_fragment_begin","normal_fragment_maps","normalmap_pars_fragment","clearcoat_normal_fragment_begin","clearcoat_normal_fragment_maps","clearcoat_pars_fragment","packing","premultiplied_alpha_fragment","project_vertex","dithering_fragment","dithering_pars_fragment","roughnessmap_fragment","roughnessmap_pars_fragment","shadowmap_pars_fragment","shadowmap_pars_vertex","shadowmap_vertex","shadowmask_pars_fragment","skinbase_vertex","skinning_pars_vertex","skinning_vertex","skinnormal_vertex","specularmap_fragment","specularmap_pars_fragment","tonemapping_fragment","tonemapping_pars_fragment","uv_pars_fragment","uv_pars_vertex","uv_vertex","uv2_pars_fragment","uv2_pars_vertex","uv2_vertex","worldpos_vertex","background_frag","background_vert","cube_frag","cube_vert","depth_frag","depth_vert","distanceRGBA_frag","distanceRGBA_vert","equirect_frag","equirect_vert","linedashed_frag","linedashed_vert","meshbasic_frag","meshbasic_vert","meshlambert_frag","meshlambert_vert","meshmatcap_frag","meshmatcap_vert","meshtoon_frag","meshtoon_vert","meshphong_frag","meshphong_vert","meshphysical_frag","meshphysical_vert","normal_frag","normal_vert","points_frag","points_vert","shadow_frag","shadow_vert","sprite_frag","sprite_vert","ShaderChunk","ShaderLib","WebGLBackground","state","objects","premultipliedAlpha","clearColor","clearAlpha","planeMesh","boxMesh","currentBackground","currentBackgroundVersion","currentTonemapping","render","renderList","forceClear","background","xr","session","setClear","WebGLBindingStates","maxVertexAttributes","extension","vaoAvailable","bindingStates","defaultState","createBindingState","currentState","setup","program","updateBuffers","getBindingState","bindVertexArrayObject","needsUpdate","saveCache","wireframe","setupVertexAttributes","createVertexArrayObject","vao","deleteVertexArrayObject","programMap","stateMap","newAttributes","enabledAttributes","attributeDivisors","cachedAttributes","geometryAttributes","cachedAttribute","geometryAttribute","initAttributes","enableAttribute","enableAttributeAndDivisor","meshPerAttribute","disableUnusedAttributes","vertexAttribPointer","stride","programAttributes","materialDefaultAttributeValues","programAttribute","bytesPerElement","dispose","reset","geometryId","programId","releaseStatesOfGeometry","releaseStatesOfProgram","resetDefaultState","WebGLBufferRenderer","info","mode","setMode","renderInstances","primcount","methodName","WebGLCapabilities","maxAnisotropy","getMaxAnisotropy","getMaxPrecision","maxPrecision","logarithmicDepthBuffer","maxTextures","maxVertexTextures","maxTextureSize","maxCubemapSize","maxAttributes","maxVertexUniforms","maxVaryings","maxFragmentUniforms","vertexTextures","floatFragmentTextures","floatVertexTextures","maxSamples","WebGLClipping","globalState","numGlobalPlanes","localClippingEnabled","renderingShadows","viewNormalMatrix","uniform","enableLocalClipping","projectPlanes","resetGlobalState","clipIntersection","clipShadows","fromCache","nGlobal","lGlobal","dstArray","skipTransform","nPlanes","flatSize","viewMatrix","i4","WebGLExtensions","WebGLGeometries","wireframeAttributes","onGeometryDispose","buffergeometry","updateWireframeAttribute","geometryIndex","geometryPosition","version","previousAttribute","getWireframeAttribute","currentAttribute","WebGLIndexedBufferRenderer","setIndex","WebGLInfo","memory","instanceCount","numericalSort","absNumericalSort","WebGLMorphtargets","influencesList","workInfluences","objectInfluences","influences","morphInfluencesSum","morphBaseInfluence","WebGLObjects","updateMap","CubeTexture","DataTexture2DArray","DataTexture3D","emptyTexture","emptyTexture2dArray","emptyTexture3d","emptyCubeTexture","arrayCacheF32","arrayCacheI32","mat4array","mat3array","mat2array","flatten","nBlocks","blockSize","firstElem","arraysEqual","copyArray","allocTexUnits","setValueV1f","setValueV2f","setValueV3f","setValueV4f","setValueM2","elements","setValueM3","setValueM4","setValueT1","unit","setValueT2DArray1","setValueT3D1","setValueT6","setValueV1i","setValueV2i","setValueV3i","setValueV4i","setValueV1ui","getSingularSetter","setValueV1fArray","setValueV1iArray","setValueV2iArray","setValueV3iArray","setValueV4iArray","setValueV2fArray","setValueV3fArray","setValueV4fArray","setValueM2Array","setValueM3Array","setValueM4Array","setValueT1Array","units","setValueT6Array","getPureArraySetter","SingleUniform","activeInfo","addr","PureArrayUniform","StructuredUniform","seq","RePathPart","addUniform","container","uniformObject","parseUniform","path","pathLength","match","matchEnd","idIsIndex","subscript","next","WebGLUniforms","WebGLShader","programIdCount","addLineNumbers","lines","getEncodingComponents","getShaderErrors","status","log","getTexelDecodingFunction","functionName","getTexelEncodingFunction","getToneMappingFunction","toneMapping","toneMappingName","generateExtensions","filterEmptyLine","generateDefines","defines","chunks","fetchAttributeLocations","replaceLightNums","replaceClippingPlaneNums","includePattern","resolveIncludes","includeReplacer","include","deprecatedUnrollLoopPattern","unrollLoopPattern","unrollLoops","loopReplacer","deprecatedLoopReplacer","snippet","generatePrecision","precisionstring","generateShadowMapTypeDefine","shadowMapTypeDefine","generateEnvMapTypeDefine","envMapTypeDefine","generateEnvMapModeDefine","envMapModeDefine","generateEnvMapBlendingDefine","envMapBlendingDefine","WebGLProgram","cacheKey","vertexShader","fragmentShader","gammaFactorDefine","customExtensions","customDefines","prefixVertex","prefixFragment","isGLSL3ShaderMaterial","versionRegex","vertexGlsl","fragmentGlsl","glVertexShader","glFragmentShader","programLog","vertexLog","fragmentLog","runnable","haveDiagnostics","vertexErrors","fragmentErrors","cachedUniforms","WebGLPrograms","programs","shaderIDs","parameterNames","getShaderObject","shaderID","shaderobject","allocateBones","bones","nVertexMatrices","maxBones","getTextureEncodingFromMap","map","getParameters","lights","shadows","nClipPlanes","nClipIntersection","fog","environment","envMap","getProgramCacheKey","acquireProgram","pl","preexistingProgram","releaseProgram","WebGLProperties","properties","painterSortStable","reversePainterSortStable","WebGLRenderList","renderItems","renderItemsIndex","opaque","transparent","defaultProgram","init","getNextRenderItem","groupOrder","renderItem","push","unshift","sort","customOpaqueSort","customTransparentSort","finish","WebGLRenderLists","lists","onSceneDispose","cameras","list","UniformsCache","light","ShadowUniformsCache","nextVersion","shadowCastingLightsFirst","lightA","lightB","WebGLLights","shadowCache","vector3","matrix42","directionalLength","pointLength","spotLength","rectAreaLength","hemiLength","numDirectionalShadows","numPointShadows","numSpotShadows","intensity","shadowMap","shadow","shadowUniforms","WebGLRenderState","lightsArray","shadowsArray","pushLight","pushShadow","shadowLight","setupLights","WebGLRenderStates","renderStates","renderState","MeshDepthMaterial","MeshDistanceMaterial","vsm_frag","vsm_vert","WebGLShadowMap","_renderer","_objects","_frustum","_shadowMapSize","_viewportSize","_viewport","_depthMaterials","_distanceMaterials","_materialCache","shadowSide","shadowMaterialVertical","shadowMaterialHorizonal","fullScreenTri","fullScreenMesh","activeCubeFace","activeMipmapLevel","_state","shadowFrameExtents","pars","viewportCount","vp","viewport","renderObject","VSMPass","getDepthMaterialVariant","useMorphing","useSkinning","useInstancing","getDistanceMaterialVariant","getDepthMaterial","shadowCameraNear","shadowCameraFar","result","getMaterialVariant","customMaterial","keyA","keyB","materialsForVariant","cachedMaterial","shadowCamera","depthMaterial","WebGLState","ColorBuffer","locked","currentColorMask","currentColorClear","colorMask","lock","DepthBuffer","currentDepthMask","currentDepthFunc","currentDepthClear","depthTest","enable","disable","depthMask","depthFunc","StencilBuffer","currentStencilMask","currentStencilFunc","currentStencilRef","currentStencilFuncMask","currentStencilFail","currentStencilZFail","currentStencilZPass","currentStencilClear","stencilTest","stencilMask","stencilFunc","stencilRef","stencilFail","stencilZFail","stencilZPass","colorBuffer","depthBuffer","stencilBuffer","enabledCapabilities","currentProgram","currentBlendingEnabled","currentBlending","currentBlendEquation","currentBlendSrc","currentBlendDst","currentBlendEquationAlpha","currentBlendSrcAlpha","currentBlendDstAlpha","currentPremultipledAlpha","currentFlipSided","currentCullFace","currentLineWidth","currentPolygonOffsetFactor","currentPolygonOffsetUnits","lineWidthAvailable","glVersion","currentTextureSlot","currentBoundTextures","currentScissor","currentViewport","createTexture","emptyTextures","setFlipSided","setCullFace","setBlending","useProgram","equationToGL","factorToGL","blending","blendEquation","blendSrc","blendDst","blendEquationAlpha","blendSrcAlpha","blendDstAlpha","setMaterial","frontFaceCW","flipSided","stencilWrite","setPolygonOffset","cullFace","setLineWidth","polygonOffset","factor","setScissorTest","scissorTest","activeTexture","webglSlot","bindTexture","webglType","webglTexture","boundTexture","unbindTexture","compressedTexImage2D","error","texImage2D","texImage3D","scissor","WebGLTextures","_gl","utils","_videoTextures","useOffscreenCanvas","createCanvas","resizeImage","needsPowerOfTwo","needsNewCanvas","maxSize","floor","isPowerOfTwo","textureNeedsPowerOfTwo","textureNeedsGenerateMipmaps","supportsMips","generateMipmap","textureProperties","getInternalFormat","internalFormatName","glFormat","glType","internalFormat","filterFallback","onTextureDispose","deallocateTexture","onRenderTargetDispose","deallocateRenderTarget","renderTargetProperties","textureUnits","resetTextureUnits","allocateTextureUnit","textureUnit","setTexture2D","slot","updateVideoTexture","uploadTexture","setTexture2DArray","setTexture3D","setTextureCube","initTexture","isCompressed","isDataTexture","cubeImage","glInternalFormat","setTextureParameters","mipmaps","mipmap","mipmapImage","setTextureCubeDynamic","wrappingToGL","filterToGL","textureType","setupFrameBufferTexture","framebuffer","attachment","textureTarget","setupRenderBufferStorage","renderbuffer","isMultisample","depthTexture","samples","getRenderTargetSamples","setupDepthTexture","webglDepthTexture","setupDepthRenderbuffer","isCube","setupRenderTarget","updateRenderTargetMipmap","updateMultisampleRenderTarget","mask","warnedTexture2D","warnedTextureCube","safeSetTexture2D","safeSetTextureCube","WebGLUtils","convert","ArrayCamera","Group","WebXRController","inputSource","referenceSpace","inputPose","gripPose","targetRay","grip","WebXRManager","framebufferScaleFactor","referenceSpaceType","pose","controllers","inputSourcesMap","cameraL","cameraR","cameraVR","_currentDepthNear","_currentDepthFar","controller","onSessionEvent","onSessionEnd","animation","onRequestReferenceSpace","layerInit","baseLayer","updateInputSources","inputSources","cameraLPos","cameraRPos","setProjectionFromUnion","ipd","projL","projR","topFov","bottomFov","leftFov","rightFov","zOffset","xOffset","near2","far2","left2","right2","top2","bottom2","updateCamera","onAnimationFrameCallback","views","cameraVRNeedsUpdate","WebGLMaterials","refreshFogUniforms","refreshMaterialUniforms","pixelRatio","refreshUniformsCommon","refreshUniformsLambert","refreshUniformsToon","refreshUniformsPhong","refreshUniformsPhysical","refreshUniformsStandard","refreshUniformsMatcap","refreshUniformsDepth","refreshUniformsDistance","refreshUniformsNormal","refreshUniformsLine","refreshUniformsDash","refreshUniformsPoints","refreshUniformsSprites","uvScaleMap","uv2ScaleMap","WebGLRenderer","_context","_alpha","_depth","_stencil","_antialias","_premultipliedAlpha","_preserveDrawingBuffer","_powerPreference","_failIfMajorPerformanceCaveat","currentRenderList","currentRenderState","_this","_isContextLost","_framebuffer","_currentActiveCubeFace","_currentActiveMipmapLevel","_currentRenderTarget","_currentFramebuffer","_currentMaterialId","_currentCamera","_currentArrayCamera","_currentViewport","_currentScissor","_currentScissorTest","_width","_height","_pixelRatio","_opaqueSort","_transparentSort","_scissor","_scissorTest","_clipping","_clippingEnabled","_localClippingEnabled","_projScreenMatrix","_vector3","_emptyScene","getTargetPixelRatio","getContext","contextNames","contextAttributes","contextName","onContextLost","onContextRestore","programCache","renderLists","morphtargets","bufferRenderer","indexedBufferRenderer","initGLContext","updateStyle","boolean","method","bits","onMaterialDispose","deallocateMaterial","releaseMaterialProgramReference","programInfo","renderObjectImmediate","setProgram","rangeFactor","dataCount","rangeStart","rangeCount","drawStart","drawEnd","drawCount","lineWidth","compiled","material2","initMaterial","projectObject","opaqueObjects","transparentObjects","renderObjects","sortObjects","overrideMaterial","camera2","materialProperties","lightsStateVersion","programCacheKey","programChange","materialNeedsLights","progUniforms","uniformsList","useCache","refreshProgram","refreshMaterial","refreshLights","p_uniforms","m_uniforms","uCamPos","skeleton","boneMatrices","boneTexture","markUniformsLightsNeedsUpdate","__webglFramebuffer","activeCubeFaceIndex","restore","textureFormat","level","levelScale","srcTexture","dstTexture","WebGL1Renderer","FogExp2","density","Fog","InterleavedBuffer","ib","_vector$6","InterleavedBufferAttribute","interleavedBuffer","SpriteMaterial","_geometry","_intersectPoint","_worldScale","_mvPosition","_alignedPosition","_rotatedPosition","_viewWorldMatrix","_vA$1","_vB$1","_vC$1","_uvA$1","_uvB$1","_uvC$1","Sprite","float32Array","transformVertex","vertexPosition","mvPosition","_v1$4","_v2$2","LOD","levels","SkinnedMesh","bindMatrix","skinWeight","basePosition","skinIndex","weight","boneIndex","_offsetMatrix","_identityMatrix","Skeleton","boneInverses","inverse","bone","Bone","_instanceLocalMatrix","_instanceWorldMatrix","_instanceIntersects","_mesh","InstancedMesh","raycastTimes","instanceId","LineBasicMaterial","_start","_end","_inverseMatrix$1","_ray$1","_sphere$2","Line","threshold","localThreshold","localThresholdSq","vStart","vEnd","interSegment","interRay","nbVertices","_start$1","_end$1","LineSegments","LineLoop","PointsMaterial","_inverseMatrix$2","_ray$2","_sphere$3","_position$1","Points","testPoint","rayPointDistanceSq","intersectPoint","VideoTexture","video","CompressedTexture","CanvasTexture","DepthTexture","WireframeGeometry","edge","edges","edge1","edge2","o","ol","ParametricGeometry","func","slices","stacks","ParametricBufferGeometry","EPS","pu","pv","sliceCount","PolyhedronGeometry","detail","PolyhedronBufferGeometry","vertexBuffer","uvBuffer","subdivide","applyRadius","generateUVs","getVertexByIndex","subdivideFace","cols","aj","bj","rows","pushVertex","azimuth","inclination","correctUVs","correctSeam","centroid","uvA","uvB","uvC","azi","correctUV","TetrahedronGeometry","TetrahedronBufferGeometry","OctahedronGeometry","OctahedronBufferGeometry","IcosahedronGeometry","IcosahedronBufferGeometry","DodecahedronGeometry","DodecahedronBufferGeometry","TubeGeometry","tubularSegments","radialSegments","closed","taper","bufferGeometry","TubeBufferGeometry","frames","P","generateBufferData","generateSegment","generateIndices","N","B","TorusKnotGeometry","tube","heightScale","TorusKnotBufferGeometry","P1","P2","T","calculatePositionOnCurve","cu","su","quOverP","cs","TorusGeometry","arc","TorusBufferGeometry","Earcut","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","triangles","invSize","eliminateHoles","earcutLinked","clockwise","last","signedArea","insertNode","equals","removeNode","filterPoints","again","area","ear","pass","indexCurve","stop","prev","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","zOrder","locallyInside","isValidDiagonal","splitPolygon","queue","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","hx","hy","mx","my","tanMin","tan","sectorContainsSector","sortLinked","tail","numMerges","pSize","qSize","inSize","leftmost","px","py","intersectsPolygon","middleInside","q1","q2","o1","o2","o3","o4","onSegment","num","inside","Node","an","bp","sum","ShapeUtils","contour","pts","holes","removeDupEndPts","addContour","holeIndex","ExtrudeGeometry","ExtrudeBufferGeometry","toJSON","verticesArray","uvArray","addShape","placeholder","curveSegments","steps","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","extrudePath","uvgen","WorldUVGenerator","extrudePts","extrudeByPath","splineTube","binormal","position2","shapePoints","hl","ahole","scalePt2","pt","vec","vlen","flen","getBevelVec","inPt","inPrev","inNext","v_trans_x","v_trans_y","shrink_by","v_prev_x","v_prev_y","v_next_x","v_next_y","v_prev_lensq","collinear0","v_prev_len","v_next_len","ptPrevShift_x","ptPrevShift_y","ptNextShift_x","ptNextShift_y","sf","v_trans_lensq","direction_eq","contourMovements","holesMovements","oneHoleMovements","verticesMovements","bs","vert","buildLidFaces","buildSideFaces","layer","f3","layeroffset","sidewalls","sl","slen1","slen2","f4","addVertex","nextIndex","addUV","vector2","indexA","indexB","indexC","a_x","a_y","b_x","b_y","c_x","c_y","indexD","a_z","b_z","c_z","d_x","d_y","d_z","TextGeometry","text","TextBufferGeometry","font","SphereGeometry","phiStart","phiLength","thetaStart","thetaLength","SphereBufferGeometry","thetaEnd","grid","verticesRow","uOffset","RingGeometry","innerRadius","outerRadius","thetaSegments","phiSegments","RingBufferGeometry","radiusStep","segment","thetaSegmentLevel","LatheGeometry","segments","LatheBufferGeometry","inverseSegments","base","n1","n2","ShapeGeometry","ShapeBufferGeometry","toJSON$1","indexOffset","shapeVertices","shapeHoles","shapeHole","EdgesGeometry","thresholdAngle","thresholdDot","sourceVertices","CylinderGeometry","radiusTop","radiusBottom","openEnded","CylinderBufferGeometry","indexArray","halfHeight","generateTorso","generateCap","slope","indexRow","sinTheta","cosTheta","centerIndexStart","centerIndexEnd","ConeGeometry","ConeBufferGeometry","CircleGeometry","CircleBufferGeometry","Geometries","ShadowMaterial","RawShaderMaterial","MeshStandardMaterial","MeshPhysicalMaterial","MeshPhongMaterial","MeshToonMaterial","MeshNormalMaterial","MeshLambertMaterial","MeshMatcapMaterial","LineDashedMaterial","Materials","AnimationUtils","from","to","forceClone","times","compareTime","nValues","srcOffset","jsonKeys","valuePropertyName","sourceClip","startFrame","endFrame","fps","clip","tracks","track","valueSize","minStartTime","targetClip","referenceFrame","referenceClip","numTracks","referenceTime","referenceTrack","referenceTrackType","targetTrack","lastIndex","referenceValue","startIndex","interpolant","numTimes","valueStart","Interpolant","parameterPositions","sampleValues","sampleSize","resultBuffer","pp","validate_interval","seek","linear_scan","forward_scan","giveUpAt","t1global","mid","CubicInterpolant","iPrev","iNext","tPrev","tNext","halfDt","o0","oP","oN","wP","wN","ppp","sP","sN","LinearInterpolant","offset1","offset0","weight1","weight0","DiscreteInterpolant","KeyframeTrack","interpolation","trackType","json","factoryMethod","message","timeOffset","timeScale","startTime","endTime","nKeys","valid","prevTime","currTime","smoothInterpolation","writeIndex","keep","timeNext","offsetP","offsetN","readOffset","writeOffset","TypedKeyframeTrack","BooleanKeyframeTrack","ColorKeyframeTrack","NumberKeyframeTrack","QuaternionLinearInterpolant","QuaternionKeyframeTrack","StringKeyframeTrack","VectorKeyframeTrack","AnimationClip","duration","blendMode","getTrackTypeForValueTypeName","typeName","parseKeyframeTrack","jsonTracks","frameTime","clipTracks","morphTargetSequence","noLoop","numMorphTargets","objectOrClipArray","clipArray","animationToMorphTargets","pattern","parts","animationMorphTargets","clips","addNonemptyTrack","trackName","animationKeys","propertyName","destTracks","clipName","hierarchyTracks","morphTargetNames","morphTargetName","animationKey","boneName","Cache","file","LoadingManager","onLoad","onProgress","onError","isLoading","itemsLoaded","itemsTotal","urlModifier","handlers","transform","regex","loader","DefaultLoadingManager","Loader","manager","resolve","reject","crossOrigin","resourcePath","requestHeader","loading","FileLoader","cached","dataUriRegex","dataUriRegexResult","request","mimeType","isBase64","response","responseType","callbacks","header","AnimationLoader","animations","CompressedTextureLoader","loaded","loadTexture","texDatas","DataTextureLoader","texData","ImageLoader","onImageLoad","onImageError","CubeTextureLoader","urls","TextureLoader","isJPEG","Curve","optionalTarget","divisions","lengths","current","arcLengths","targetArcLength","comparison","lengthBefore","segmentLength","segmentFraction","t2","pt1","pt2","tangents","binormals","mat","tz","EllipseCurve","aX","aY","xRadius","yRadius","aStartAngle","aEndAngle","aClockwise","aRotation","twoPi","deltaAngle","samePoints","ArcCurve","aRadius","CubicPoly","c0","x3","tension","dt0","dt1","dt2","t3","pz","CatmullRomCurve3","curveType","intPoint","pow","CatmullRom","QuadraticBezierP0","QuadraticBezierP1","QuadraticBezierP2","QuadraticBezier","CubicBezierP0","CubicBezierP1","CubicBezierP2","CubicBezierP3","CubicBezier","CubicBezierCurve","v3","CubicBezierCurve3","LineCurve","LineCurve3","QuadraticBezierCurve","QuadraticBezierCurve3","SplineCurve","Curves","CurvePath","curve","startPoint","endPoint","curveLengths","lens","sums","curves","resolution","Path","aCPx","aCPy","aCP1x","aCP1y","aCP2x","aCP2y","npts","firstPoint","lastPoint","Shape","holesPts","Light","HemisphereLight","skyColor","groundColor","LightShadow","shadowMatrix","projScreenMatrix","lookTarget","lightPositionWorld","viewportIndex","SpotLightShadow","SpotLight","penumbra","decay","power","PointLightShadow","PointLight","OrthographicCamera","scaleW","scaleH","DirectionalLightShadow","DirectionalLight","AmbientLight","RectAreaLight","SphericalHarmonics3","coefficients","coeff","sh","shBasis","LightProbe","MaterialLoader","getTexture","normalScale","LoaderUtils","InstancedBufferGeometry","InstancedBufferAttribute","BufferGeometryLoader","interleavedBufferMap","arrayBufferMap","getInterleavedBuffer","uuid","getArrayBuffer","TYPED_ARRAYS","arrayBuffer","typedArray","bufferAttribute","bufferAttributeConstr","ObjectLoader","metadata","geometryShapes","bufferGeometryLoader","loadImage","currentUrl","parseConstant","TEXTURE_MAPPING","TEXTURE_WRAPPING","TEXTURE_FILTER","getGeometry","getMaterial","instanceMatrix","ImageBitmapLoader","res","blob","imageBitmap","ShapePath","isCCW","noHoles","toShapesNoHoles","inSubpaths","tmpPath","tmpShape","isPointInsidePolygon","inPolygon","polyLen","edgeLowPt","edgeHighPt","edgeDx","edgeDy","perpEdge","isClockWise","subPaths","solid","holesFirst","betterShapeHoles","newShapes","newShapeHoles","mainIdx","tmpPoints","ambiguous","toChange","sIdx","sLen","sho","hIdx","ho","hole_unassigned","s2Idx","tmpHoles","Font","paths","createPaths","chars","line_height","offsetX","offsetY","char","ret","createPath","glyph","cpx","cpy","cpx1","cpy1","cpx2","cpy2","outline","FontLoader","AudioContext","AudioLoader","bufferCopy","audioBuffer","HemisphereLightProbe","sky","ground","AmbientLightProbe","_eyeRight","_eyeLeft","StereoCamera","projectionMatrix","eyeSepHalf","eyeSepOnProjection","ymax","xmin","xmax","Clock","autoStart","newTime","_position$2","_quaternion$3","_scale$1","_orientation","AudioListener","Audio","audioNode","mediaElement","mediaStream","delay","filter","_position$3","_quaternion$4","_scale$2","_orientation$1","PositionalAudio","coneInnerAngle","coneOuterAngle","coneOuterGain","panner","AudioAnalyser","audio","fftSize","PropertyMixer","binding","mixFunction","mixFunctionAdditive","setIdentity","accuIndex","currentWeight","mix","weightAdditive","originalValueOffset","endIndex","targetIndex","workOffset","_RESERVED_CHARS_RE","_reservedRe","_wordChar","_wordCharOrDot","_directoryRe","_nodeRe","_objectRe","_propertyRe","_trackRe","_supportedObjectNames","Composite","targetGroup","optionalParsedPath","parsedPath","PropertyBinding","firstValidIndex","bindings","rootNode","root","matches","results","lastDot","objectName","nodeName","searchNodeSubtree","childNode","subTreeNode","dest","targetArray","sourceArray","targetObject","propertyIndex","objectIndex","nodeProperty","versioning","bindingType","AnimationObjectGroup","indicesByUUID","parsedPaths","nBindings","knownObject","nObjects","nCachedObjects","firstActiveIndex","lastCachedObject","bindingsForPath","lastCached","lastCachedIndex","firstActiveObject","firstActive","lastObject","indicesByPath","lastBindingsIndex","lastBindings","lastBindingsPath","AnimationAction","mixer","localRoot","nTracks","interpolants","interpolantSettings","repetitions","fadeOutAction","warp","fadeInDuration","fadeOutDuration","startEndRatio","endStartRatio","fadeInAction","weightInterpolant","action","startTimeScale","endTimeScale","now","timeScaleInterpolant","deltaTime","timeDirection","timeRunning","clipTime","propertyMixers","interpolantValue","loop","loopCount","pingPong","handle_stop","loopDelta","pending","atStart","atEnd","settings","weightNow","weightThen","AnimationMixer","prototypeAction","rootUuid","bindingsByRoot","bindingsByName","clipUuid","actionsForClip","actions","actionsByClip","knownActions","lastInactiveAction","cacheIndex","knownActionsForClip","lastKnownAction","byClipCacheIndex","actionByRoot","prevIndex","lastActiveIndex","firstInactiveAction","firstInactiveIndex","lastActiveAction","bindingByName","propBinding","lastInactiveBinding","firstInactiveBinding","lastActiveBinding","lastActiveInterpolant","optionalRoot","clipObject","existingAction","newAction","nActions","timeInSeconds","actionsToRemove","Uniform","InstancedInterleavedBuffer","Raycaster","ascSort","intersectObject","coords","Spherical","other","Cylindrical","_vector$7","Box2","_startP","_startEnd","Line3","clampToLine","startEnd2","ImmediateRenderObject","_vector$8","SpotLightHelper","coneLength","coneWidth","_vector$9","_boneMatrix","_matrixWorldInv","getBoneList","boneList","SkeletonHelper","PointLightHelper","sphereSize","_vector$a","_color1","_color2","HemisphereLightHelper","GridHelper","PolarGridHelper","radials","circles","_v1$5","_v2$3","_v3$1","DirectionalLightHelper","_vector$b","_camera","CameraHelper","pointMap","colorFrustum","colorCone","colorUp","colorTarget","colorCross","addLine","addPoint","setPoint","_box$3","BoxHelper","Box3Helper","PlaneHelper","positions2","_axis","_lineGeometry","_coneGeometry","ArrowHelper","headLength","headWidth","AxesHelper","LOD_MIN","LOD_MAX","SIZE_MAX","EXTRA_LOD_SIGMA","TOTAL_LODS","MAX_SAMPLES","ENCODINGS","_flatCamera","_lodPlanes","_sizeLods","_sigmas","_createPlanes","_oldTarget","PHI","INV_PHI","_axisDirections","PMREMGenerator","_getBlurShader","sigma","cubeUVRenderTarget","equirectangular","cubemap","_getCubemapShader","_getEquirectShader","outputTarget","_setViewport","params","_isLDR","_createRenderTarget","tmpMesh","cubeCamera","upSign","forwardSign","outputEncoding","maxComponent","fExp","col","autoClear","poleAxis","lodIn","lodOut","pingPongRenderTarget","targetIn","targetOut","sigmaRadians","blurMaterial","STANDARD_DEVIATIONS","blurMesh","blurUniforms","pixels","radiansPerPixel","sigmaPixels","weights","outputSize","lod","sizeLod","texelSize","cubeFaces","positionSize","uvSize","faceIndexSize","faceIndex","coordinates","fill","_getCommonVertexShader","_getEncodings","construct","getPoint","Spline","filmGauge","DEG2RAD","LAB_CONSTANTS","PI","PITHIRD","RAD2DEG","TWOPI","_average_lrgb","_guess_formats","_guess_formats_sorted","_input","_interpolators","abs","atan2","bezier","blend","blend_f","brewer","burn","chroma","clip_rgb","cmyk2rgb","css2rgb","darken","dodge","each","hcg2rgb","hex2rgb","hsi2rgb","hsl2css","hsl2rgb","hsv2rgb","interpolate","interpolate_hsx","interpolate_lab","interpolate_lrgb","interpolate_num","interpolate_rgb","lab2lch","lab2rgb","lab_xyz","lch2lab","lch2rgb","lighten","limit","luminance_x","multiply","num2rgb","overlay","rgb2cmyk","rgb2css","rgb2hcg","rgb2hex","rgb2hsi","rgb2hsl","rgb2hsv","rgb2lab","rgb2lch","rgb2luminance","rgb2num","rgb2temperature","rgb2xyz","rgb_xyz","rnd","round","screen","sqrt","temperature2rgb","unpack","w3cx11","xyz_lab","xyz_rgb","slice","classToType","ref","obj","strType","args","rgb","ctor","module","exports","arg","chk","len1","ref1","I","I0","I1","lab0","lab1","lab2","lab3","ref2","lab","rotations","gamma","dh","dl","fract","amp","cos_a","sin_a","code","digits","col1","col2","interpol","xyz0","xyz1","xyz","A","cnt","first","xyz2","channels","hxa","str","ref3","ref4","ref5","_c","_g","css","aa","hsl","rgba","L","lum","cur_lum","eps","max_iter","test","lm","kelvin","temp","maxTemp","minTemp","l1","l2","sum_sq","C","L1","L2","c4","dH2","delA","delB","delC","delL","h1","sc","modechan","amount","lch","out","val","_classes","_colorCache","_colors","_correctLightness","_domain","_gamma","_max","_min","_mode","_nacol","_out","_padding","_pos","_spread","_useCache","getClass","getColor","resetCache","setColors","tmap","bypassMap","classes","domain","_m","_o","L0","L_actual","L_diff","L_ideal","pol","numColors","dd","dm","add","visit","ag","ah","ai","ak","al","am","assignments","best","centroids","cluster","clusterSizes","dist","kClusters","limits","max_log","min_log","mindist","nb_iters","newCentroids","pb","pr","ref10","ref11","ref12","ref13","ref14","ref6","ref7","ref8","ref9","repeat","tmpKMeansBreaks","hue0","hue1","lbv","lbv0","lbv1","sat","sat0","sat1","this","global","SignalBinding","signal","isOnce","listenerContext","priority","paramsArr","handlerReturn","validateListener","fnName","Signal","self","cur","signals","re","sprintf","sprintf_format","sprintf_parse","vsprintf","fmt","argv","parse_tree","cursor","tree_length","ph","pad","pad_character","pad_length","is_positive","sprintf_cache","_fmt","arg_names","field_list","replacement_field","field_match","rt","st","nt","ot","ct","lt","mt","ft","gt","yt","bt","xt","vt","wt","At","_t","St","Ct","Pt","It","kt","Mt","Tt","Bt","Dt","$t","Ot","Rt","Et","Ft","Lt","Nt","zt","J.scale","Vt","Gt","Ut","jt","Ht","Wt","qt","Xt","Yt","Kt","Zt","Qt","Jt","ee","ie","se","ne","oe","le","he","ue","pe","et","fe","Fe","ge","ye","xe","ve","we","Ae","_e","Se","Ce","Pe","Ie","ke","Me","Te","De","$e","Re","Ee","Le","Ne","ze","Ve","Ge","Ue","je","He","qe","Ke","Ze","Qe","Je","ti","ei","ii","ri","si","ni","li","hi","ui","tt.Signal","mi","pi","fi","gi","yi","bi","xi","vi","wi","Ai","_i","Si","Ci","Pi","Ii","ki","Mi","Ti","Bi","Di","$i","Oi","Ri","Ei","Fi","Li","Ni","zi","Vi","Gi","Ui","ji","Hi","Wi","qi","Xi","Yi","Ki","Zi","Qi","Ji","D","_","S","M","rr","sr","nr","or","ar","cr","lr","hr","dr","ur","mr","fr","gr","yr","br","vr","wr","Ar","_r","Sr","Cr","Pr","Ir","kr","Mr","Tr","Br","Dr","$r","Or","Rr","Er","Fr","Lr","Nr","zr","Vr","Gr","Ur","jr","Hr","Yr","Wr","qr","Xr","Kr","Zr","Qr","Jr","ts","es","is","rs","ss","ns","os","as","ls","hs","ds","us","ms","ps","fs","gs","ys","xs","vs","ws","As","_s","Ss","Cs","Ps","Is","ks","Ms","Ts","Bs","Ds","$s","Os","Rs","Es","Fs","Ls","Ns","zs","Vs","Gs","Us","js","Hs","Ws","qs","Xs","Ys","Ks","Zs","Qs","Js","tn","en","rn","sn","nn","on","cn","ln","hn","dn","un","mn","pn","fn","gn","yn","bn","xn","vn","wn","An","_n","Sn","Cn","Pn","In","kn","Mn","Tn","Bn","Dn","$n","On","Rn","En","Fn","Nn","Ln","zn","Vn","Gn","$","O","R","E","F","Un","jn","Hn","Wn","Qn","qn","Xn","Yn","Kn","Zn","Jn","eo","io","ro","so","no","oo","ao","co","lo","V","G","U","H","W","X","uo","mo","po","fo","go","yo","bo","xo","vo","wo","Ao","So","Co","Po","Io","ko","Mo","To","Bo","Do","$o","Oo","Ro","Eo","Fo","Lo","No","zo","Vo","Go","Uo","jo","Ho","Wo","qo","Xo","Yo","Ko","Zo","Qo","Jo","ta","ea","ia","ra","sa","na","oa","ca","la","ha","da","ua","ma","pa","fa","ga","ya","ba","xa","wa","Aa","_a","Sa","Ca","Pa","Ia","ka","Ma","Ta","Ba","Da","$a","Oa","Ra","Ea","Fa","La","Na","za","Va","Ga","Ua","ja","Ha","Wa","Ya","Ka","Xa","Za","Qa","Ja","tc","ec","rc","nc","oc","cc","lc","hc","dc","uc","mc","yc","pc","fc","gc","xc","wc","Ac","Sc","Cc","Pc","Ic","kc","Mc","Tc","Bc","Dc","$c","Oc","Rc","Ec","Fc","Lc","Nc","zc","Vc","Gc","Uc","jc","Hc","Wc","qc","Xc","Yc","Kc","Zc","Qc","Jc","tl","el","rl","nl","cl","ll","ul","yl","bl","xl","wl","Al","_l","Sl","Cl","Pl","Il","Ml","Tl","Bl","Dl","$l","Ol","Rl","El","Fl","Ll","Nl","zl","Vl","Gl","Ul","Hl","Wl","ql","Xl","Yl","Kl","Zl","Ql","Jl","th","eh","ih","rh","oh","ch","lh","hh","uh","mh","fh","gh","yh","bh","xh","vh","wh","Ah","_h","Sh","Ch","Ph","Ih","kh","Mh","Th","Bh","Dh","$h","Oh","Rh","Eh","Fh","Lh","Nh","zh","Vh","Gh","Uh","jh","Hh","Wh","qh","Xh","Yh","Kh","Zh","Qh","Jh","td","ed","rd","sd","nd","od","cd","ld","hd","ud","md","pd","fd","gd","yd","xd","vd","wd","Ad","_d","Sd","Cd","Pd","Id","kd","Md","Td","Bd","Dd","it","$d","Od","Rd","Ed","Fd","Ld","Nd","Y","K","Z","Q","J","tt","zd","Vd","Gd","Ud","jd","Hd","Wd","qd","Xd","Yd","Kd","Zd","Qd","Jd","tu","eu","iu","ru","nu","ou","au","lu","hu","du","uu","mu","fu","gu","yu","bu","xu","vu","wu","Au","_u","Su","Cu","Pu","Iu","ku","Mu","Tu","Bu","Du","$u","Ou","Ru","Eu","Fu","Lu","Nu","zu","Vu","Gu","Uu","ju","Hu","Wu","qu","Xu","at","ht","dt","ut","Yu","Ku","Zu","Qu","Ju","tm","em","im","rm","sm","nm","om","cm","hm","um","mm","pm","fm","gm","ym","bm","xm","vm","wm","Am","Sm","Cm","Pm","Im","km","Mm","Tm","Bm","Dm","$m","Om","Rm","Em","Fm","Lm","Nm","zm","Vm","Gm","Um","jm","Hm","Wm","Xm","Ym","Km","Zm","Qm","Jm","tp","ep","ip","rp","sp","np","op","ap","cp","lp","hp","dp","mp","fp","gp","yp","xp","wp","Ap","_p","Sp","Cp","Pp","Ip","kp","Mp","Tp","Bp","Dp","$p","Op","Rp","Ep","Fp","Lp","Np","zp","Vp","Gp","Up","jp","Hp","Wp","qp","Xp","Yp","Kp","Zp","Qp","Jp","tf","ef","rf","nf","of","lf","hf","uf","mf","pf","ff","gf","yf","xf","vf","wf","Af","_f","Sf","Cf","Pf","If","kf","Mf","Tf","Bf","Df","$f","Of","Rf","Ef","Ff","Lf","Nf","zf","Vf","Gf","Uf","jf","Hf","Wf","qf","Xf","Yf","Kf","Zf","Qf","Jf","tg","ig","rg","sg","ng","getOffset","model","rowName","structure","mouseCol","startPos","pos","DatasourceRegistry","StaticDatasource","ProteinPanel","observer","annotations","useRef","setType","useState","setRes","stage","setStage","isMouseHovering","setMouseHovering","msaview","nglSelection","selectedStructures","structures","getSnapshot","stageElementRef","useCallback","currentStage","Stage","useEffect","selection","pickingProxy","atom","elt","jsxs","jsx","Button","Select","MenuItem","TextField"],"mappings":"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AA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAE1BC,GAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAExBC,GAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAEnBC,GAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEnBC,GAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEnBC,GAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAElBC,GAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAElBC,GAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEhBC,GAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEhBC,GAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEjBC,GAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEjBC,GAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEpBC,GAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEpBC,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEdC,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEdC,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEdC,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEdC,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEdC,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEdC,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEdC,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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G,CAAC,IAAI,IAAI,IAAI,EAAE,EAAEC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAEC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAEC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAEC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAEC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAEC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,KAAK,GAAG,EAAE,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,IAAI,CAAC,KAAK,MAAM,IAAI,EAAE,IAAI,CAAC,KAAK,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,IAAI,CAAC,MAAM,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,IAAI,CAAC,MAAM,MAAM,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,GAAG,EAAE,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAEC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAEC,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAEC,GAAG,OAAO,KAAKD,EAAE,EAAEE,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAEC,GAAG,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,EAAEC,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,KAAK,IAAI,EAAEt2C,GAAGo2C,GAAG,OAAOC,EAAE,EAAEE,GAAG,CAAC,MAAM,MAAM,MAAM,MAAM,IAAI,MAAM,MAAM,OAAO,OAAO,KAAK,EAAEC,GAAG,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,MAAM,MAAM,MAAM,MAAM,KAAK,MAAM,MAAM,KAAK,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,MAAM,KAAK,KAAK,MAAM,MAAM,MAAM,KAAK,KAAK,MAAM,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,MAAM,MAAM,MAAM,MAAM,KAAK,MAAM,IAAI,KAAK,MAAM,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,MAAM,MAAM,IAAI,MAAM,KAAK,MAAM,MAAM,KAAK,KAAK,MAAM,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK,MAAM,MAAM,KAAK,MAAM,KAAK,MAAM,MAAM,KAAK,MAAM,MAAM,KAAK,KAAK,MAAM,MAAM,KAAK,MAAM,MAAM,KAAK,KAAK,MAAM,MAAM,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,MAAM,KAAK,MAAM,MAAM,MAAM,IAAI,MAAM,MAAM,IAAI,MAAM,KAAK,KAAK,MAAM,KAAK,MAAM,MAAM,KAAK,MAAM,MAAM,MAAM,MAAM,KAAK,EAAEC,GAAG,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,EAAEC,GAAG,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,KAAK,KAAK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KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAASC,IAAI,CAAC,OAAO,IAAI,WAAW,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE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AAE,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,SAASC,GAAG,EAAE,EAAE,CAAC,IAAIt9G,EAAEwG,EAAE,EAAE,MAAM9D,EAAE,CAAA,EAAG,OAAO,EAAE,QAAS,SAASC,EAAE,CAAC3C,EAAE,EAAE,MAAMU,EAAE,GAAGiC,EAAE,QAAS,SAASA,EAAE,CAACjC,EAAE,EAAEV,GAAG,CAAC,EAAE2C,CAAC,GAAID,EAAE,EAAE8D,GAAG,CAAC,EAAE9F,CAAC,CAAG,EAACgC,CAAC,CAAC,MAAM66G,GAAG,CAAC,SAASD,GAAG,0BAA0B,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAA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","x_google_ignoreList":[0,1,2,3,4]} \ No newline at end of file diff --git a/assets/SettingsDialog-DgUIctQT.js b/assets/SettingsDialog-DgUIctQT.js deleted file mode 100644 index b2b355d4..00000000 --- a/assets/SettingsDialog-DgUIctQT.js +++ /dev/null @@ -1,2 +0,0 @@ -import{m as S,o as f,R as e,B as k,C as n,a as s,b as i,T as x,d as p,M as T,u as N,D as y,e as D,F as A}from"./index-D3BxRj96.js";const B=S()(t=>({field:{margin:t.spacing(4)},flex:{display:"flex"}}));function r(t){return e.createElement("div",null,e.createElement(A,{...t}))}const M=f(function({model:t}){const{classes:l}=B(),{bgColor:m,colWidth:h,colorSchemeName:v,drawTree:u,drawNodeBubbles:E,labelsAlignRight:g,noTree:w,rowHeight:d,showBranchLen:b,treeWidthMatchesArea:o,treeWidth:C}=t;return e.createElement(e.Fragment,null,e.createElement("div",null,e.createElement(k,{onClick:()=>t.clearHidden()},"Clear hidden"),e.createElement("h1",null,"Tree options"),e.createElement(r,{control:e.createElement(n,{checked:b,onChange:()=>t.setShowBranchLen(!b)}),label:"Show branch length?"}),e.createElement(r,{control:e.createElement(n,{checked:E,onChange:()=>t.setDrawNodeBubbles(!E)}),label:"Draw clickable bubbles on tree branches?"}),e.createElement(r,{control:e.createElement(n,{checked:u,onChange:()=>t.setDrawTree(!u)}),label:"Show tree?"}),e.createElement(r,{control:e.createElement(n,{checked:g,onChange:()=>t.setLabelsAlignRight(!g)}),label:"Tree labels align right?"}),w?null:e.createElement("div",null,e.createElement(r,{control:e.createElement(n,{checked:o,onChange:()=>t.setTreeWidthMatchesArea(!o)}),label:"Make tree width fit to tree area?"}),o?null:e.createElement("div",{className:l.flex},e.createElement(s,null,"Tree width (",C,"px)"),e.createElement(i,{className:l.field,min:50,max:600,value:C,onChange:(a,c)=>t.setTreeWidth(c)})))),e.createElement("div",null,e.createElement("h1",null,"MSA options"),e.createElement(r,{control:e.createElement(n,{checked:m,onChange:()=>t.setBgColor(!m)}),label:"Color background tiles of MSA?"}),e.createElement("div",{className:l.flex},e.createElement(s,null,"Column width (",h,"px)"),e.createElement(i,{className:l.field,min:1,max:50,value:h,onChange:(a,c)=>t.setColWidth(c)})),e.createElement("div",{className:l.flex},e.createElement(s,null,"Row height (",d,"px)"),e.createElement(i,{className:l.field,min:1,max:50,value:d,onChange:(a,c)=>t.setRowHeight(c)})),e.createElement(x,{select:!0,label:"Color scheme",value:v,onChange:a=>t.setColorSchemeName(a.target.value)},Object.keys(p).map(a=>e.createElement(T,{key:a,value:a},a)))))}),W=f(function({model:t,onClose:l}){return e.createElement(N.Dialog,{open:!0,onClose:()=>l(),title:"Settings"},e.createElement(y,null,e.createElement(M,{model:t}),e.createElement(D,null,e.createElement(k,{onClick:()=>l(),variant:"contained",color:"primary"},"Submit"))))});export{W as default}; -//# sourceMappingURL=SettingsDialog-DgUIctQT.js.map diff --git a/assets/SettingsDialog-DgUIctQT.js.map b/assets/SettingsDialog-DgUIctQT.js.map deleted file mode 100644 index 22f11825..00000000 --- a/assets/SettingsDialog-DgUIctQT.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SettingsDialog-DgUIctQT.js","sources":["../../../lib/dist/components/dialogs/SettingsDialog.js"],"sourcesContent":["import React from 'react';\nimport { observer } from 'mobx-react';\nimport { makeStyles } from 'tss-react/mui';\nimport { Dialog } from '@jbrowse/core/ui';\nimport { Button, Checkbox, DialogActions, DialogContent, FormControlLabel, MenuItem, Slider, TextField, Typography, } from '@mui/material';\nimport colorSchemes from '../../colorSchemes';\nconst useStyles = makeStyles()(theme => ({\n field: {\n margin: theme.spacing(4),\n },\n flex: {\n display: 'flex',\n },\n}));\nfunction FormControlLabel2(rest) {\n return (React.createElement(\"div\", null,\n React.createElement(FormControlLabel, { ...rest })));\n}\nconst SettingsContent = observer(function ({ model }) {\n const { classes } = useStyles();\n const { bgColor, colWidth, colorSchemeName, drawTree, drawNodeBubbles, labelsAlignRight, noTree, rowHeight, showBranchLen, treeWidthMatchesArea, treeWidth, } = model;\n return (React.createElement(React.Fragment, null,\n React.createElement(\"div\", null,\n React.createElement(Button, { onClick: () => model.clearHidden() }, \"Clear hidden\"),\n React.createElement(\"h1\", null, \"Tree options\"),\n React.createElement(FormControlLabel2, { control: React.createElement(Checkbox, { checked: showBranchLen, onChange: () => model.setShowBranchLen(!showBranchLen) }), label: \"Show branch length?\" }),\n React.createElement(FormControlLabel2, { control: React.createElement(Checkbox, { checked: drawNodeBubbles, onChange: () => model.setDrawNodeBubbles(!drawNodeBubbles) }), label: \"Draw clickable bubbles on tree branches?\" }),\n React.createElement(FormControlLabel2, { control: React.createElement(Checkbox, { checked: drawTree, onChange: () => model.setDrawTree(!drawTree) }), label: \"Show tree?\" }),\n React.createElement(FormControlLabel2, { control: React.createElement(Checkbox, { checked: labelsAlignRight, onChange: () => model.setLabelsAlignRight(!labelsAlignRight) }), label: \"Tree labels align right?\" }),\n !noTree ? (React.createElement(\"div\", null,\n React.createElement(FormControlLabel2, { control: React.createElement(Checkbox, { checked: treeWidthMatchesArea, onChange: () => model.setTreeWidthMatchesArea(!treeWidthMatchesArea) }), label: \"Make tree width fit to tree area?\" }),\n !treeWidthMatchesArea ? (React.createElement(\"div\", { className: classes.flex },\n React.createElement(Typography, null,\n \"Tree width (\",\n treeWidth,\n \"px)\"),\n React.createElement(Slider, { className: classes.field, min: 50, max: 600, value: treeWidth, onChange: (_, val) => model.setTreeWidth(val) }))) : null)) : null),\n React.createElement(\"div\", null,\n React.createElement(\"h1\", null, \"MSA options\"),\n React.createElement(FormControlLabel2, { control: React.createElement(Checkbox, { checked: bgColor, onChange: () => model.setBgColor(!bgColor) }), label: \"Color background tiles of MSA?\" }),\n React.createElement(\"div\", { className: classes.flex },\n React.createElement(Typography, null,\n \"Column width (\",\n colWidth,\n \"px)\"),\n React.createElement(Slider, { className: classes.field, min: 1, max: 50, value: colWidth, onChange: (_, val) => model.setColWidth(val) })),\n React.createElement(\"div\", { className: classes.flex },\n React.createElement(Typography, null,\n \"Row height (\",\n rowHeight,\n \"px)\"),\n React.createElement(Slider, { className: classes.field, min: 1, max: 50, value: rowHeight, onChange: (_, val) => model.setRowHeight(val) })),\n React.createElement(TextField, { select: true, label: \"Color scheme\", value: colorSchemeName, onChange: event => model.setColorSchemeName(event.target.value) }, Object.keys(colorSchemes).map(option => (React.createElement(MenuItem, { key: option, value: option }, option)))))));\n});\nconst SettingsDialog = observer(function ({ model, onClose, }) {\n return (React.createElement(Dialog, { open: true, onClose: () => onClose(), title: \"Settings\" },\n React.createElement(DialogContent, null,\n React.createElement(SettingsContent, { model: model }),\n React.createElement(DialogActions, null,\n React.createElement(Button, { onClick: () => onClose(), variant: \"contained\", color: \"primary\" }, \"Submit\")))));\n});\nexport default SettingsDialog;\n//# sourceMappingURL=SettingsDialog.js.map"],"names":["useStyles","makeStyles","theme","FormControlLabel2","rest","React","FormControlLabel","SettingsContent","observer","model","classes","bgColor","colWidth","colorSchemeName","drawTree","drawNodeBubbles","labelsAlignRight","noTree","rowHeight","showBranchLen","treeWidthMatchesArea","treeWidth","Button","Checkbox","Typography","Slider","_","val","TextField","event","colorSchemes","option","MenuItem","SettingsDialog","onClose","Dialog","DialogContent","DialogActions"],"mappings":"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"} \ No newline at end of file diff --git a/assets/SettingsDialog-OKj4PsCr.js b/assets/SettingsDialog-OKj4PsCr.js new file mode 100644 index 00000000..f5cfb948 --- /dev/null +++ b/assets/SettingsDialog-OKj4PsCr.js @@ -0,0 +1,2 @@ +import{m as C,o as h,R as e,f as u,h as g,T as S,i as f,M as k,k as x,D as w,l as v,B as T,C as p,F as N}from"./index-yx-9MxwX.js";const d=C()(l=>({field:{margin:l.spacing(4)},flex:{display:"flex"}}));function y(l){return e.createElement("div",null,e.createElement(N,{...l}))}function c({checked:l,label:t,onChange:a}){return e.createElement(y,{control:e.createElement(p,{checked:l,onChange:a}),label:t})}const A=h(function({model:l}){return e.createElement(e.Fragment,null,e.createElement(M,{model:l}),e.createElement(D,{model:l}))}),M=h(function({model:t}){const{classes:a}=d(),{drawTree:s,drawNodeBubbles:o,labelsAlignRight:i,noTree:m,showBranchLen:n,treeWidthMatchesArea:r,treeWidth:E}=t;return e.createElement("div",null,e.createElement("h1",null,"Tree options"),e.createElement(c,{checked:n,onChange:()=>t.setShowBranchLen(!n),label:"Show branch length?"}),e.createElement(c,{checked:o,onChange:()=>t.setDrawNodeBubbles(!o),label:"Draw clickable bubbles on tree branches?"}),e.createElement(c,{checked:s,onChange:()=>t.setDrawTree(!s),label:"Show tree?"}),e.createElement(c,{checked:i,onChange:()=>t.setLabelsAlignRight(!i),label:"Tree labels align right?"}),m?null:e.createElement("div",null,e.createElement(c,{checked:r,onChange:()=>t.setTreeWidthMatchesArea(!r),label:"Make tree width fit to tree area?"}),r?null:e.createElement("div",{className:a.flex},e.createElement(u,null,"Tree width (",E,"px)"),e.createElement(g,{className:a.field,min:50,max:600,value:E,onChange:(B,b)=>t.setTreeWidth(b)}))))}),D=h(function({model:t}){const{classes:a}=d(),{bgColor:s,colWidth:o,colorSchemeName:i,rowHeight:m}=t;return e.createElement("div",null,e.createElement("h1",null,"MSA options"),e.createElement(c,{checked:s,onChange:()=>t.setBgColor(!s),label:"Color background tiles of MSA?"}),e.createElement("div",{className:a.flex},e.createElement(u,null,"Column width (",o,"px)"),e.createElement(g,{className:a.field,min:1,max:50,value:o,onChange:(n,r)=>t.setColWidth(r)})),e.createElement("div",{className:a.flex},e.createElement(u,null,"Row height (",m,"px)"),e.createElement(g,{className:a.field,min:1,max:50,value:m,onChange:(n,r)=>t.setRowHeight(r)})),e.createElement(S,{select:!0,label:"Color scheme",value:i,onChange:n=>t.setColorSchemeName(n.target.value)},Object.keys(f).map(n=>e.createElement(k,{key:n,value:n},n))))}),R=h(function({model:l,onClose:t}){return e.createElement(x.Dialog,{open:!0,onClose:()=>t(),title:"Settings",maxWidth:"xl"},e.createElement(w,{style:{width:"80em"}},e.createElement(A,{model:l}),e.createElement(v,null,e.createElement(T,{onClick:()=>t(),variant:"contained",color:"primary"},"Submit"))))});export{R as default}; +//# sourceMappingURL=SettingsDialog-OKj4PsCr.js.map diff --git a/assets/SettingsDialog-OKj4PsCr.js.map b/assets/SettingsDialog-OKj4PsCr.js.map new file mode 100644 index 00000000..e2683110 --- /dev/null +++ b/assets/SettingsDialog-OKj4PsCr.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SettingsDialog-OKj4PsCr.js","sources":["../../../lib/dist/components/dialogs/SettingsDialog.js"],"sourcesContent":["import React from 'react';\nimport { observer } from 'mobx-react';\nimport { makeStyles } from 'tss-react/mui';\nimport { Dialog } from '@jbrowse/core/ui';\nimport { Button, Checkbox, DialogActions, DialogContent, FormControlLabel, MenuItem, Slider, TextField, Typography, } from '@mui/material';\nimport colorSchemes from '../../colorSchemes';\nconst useStyles = makeStyles()(theme => ({\n field: {\n margin: theme.spacing(4),\n },\n flex: {\n display: 'flex',\n },\n}));\nfunction FormControlLabel2(rest) {\n return (React.createElement(\"div\", null,\n React.createElement(FormControlLabel, { ...rest })));\n}\nfunction Checkbox2({ checked, label, onChange, }) {\n return (React.createElement(FormControlLabel2, { control: React.createElement(Checkbox, { checked: checked, onChange: onChange }), label: label }));\n}\nconst SettingsContent = observer(function ({ model }) {\n return (React.createElement(React.Fragment, null,\n React.createElement(TreeSettings, { model: model }),\n React.createElement(MSASettings, { model: model })));\n});\nconst TreeSettings = observer(function TreeSettings({ model, }) {\n const { classes } = useStyles();\n const { drawTree, drawNodeBubbles, labelsAlignRight, noTree, showBranchLen, treeWidthMatchesArea, treeWidth, } = model;\n return (React.createElement(\"div\", null,\n React.createElement(\"h1\", null, \"Tree options\"),\n React.createElement(Checkbox2, { checked: showBranchLen, onChange: () => model.setShowBranchLen(!showBranchLen), label: \"Show branch length?\" }),\n React.createElement(Checkbox2, { checked: drawNodeBubbles, onChange: () => model.setDrawNodeBubbles(!drawNodeBubbles), label: \"Draw clickable bubbles on tree branches?\" }),\n React.createElement(Checkbox2, { checked: drawTree, onChange: () => model.setDrawTree(!drawTree), label: \"Show tree?\" }),\n React.createElement(Checkbox2, { checked: labelsAlignRight, onChange: () => model.setLabelsAlignRight(!labelsAlignRight), label: \"Tree labels align right?\" }),\n !noTree ? (React.createElement(\"div\", null,\n React.createElement(Checkbox2, { checked: treeWidthMatchesArea, onChange: () => model.setTreeWidthMatchesArea(!treeWidthMatchesArea), label: \"Make tree width fit to tree area?\" }),\n !treeWidthMatchesArea ? (React.createElement(\"div\", { className: classes.flex },\n React.createElement(Typography, null,\n \"Tree width (\",\n treeWidth,\n \"px)\"),\n React.createElement(Slider, { className: classes.field, min: 50, max: 600, value: treeWidth, onChange: (_, val) => model.setTreeWidth(val) }))) : null)) : null));\n});\nconst MSASettings = observer(function MSASettings({ model, }) {\n const { classes } = useStyles();\n const { bgColor, colWidth, colorSchemeName, rowHeight } = model;\n return (React.createElement(\"div\", null,\n React.createElement(\"h1\", null, \"MSA options\"),\n React.createElement(Checkbox2, { checked: bgColor, onChange: () => model.setBgColor(!bgColor), label: \"Color background tiles of MSA?\" }),\n React.createElement(\"div\", { className: classes.flex },\n React.createElement(Typography, null,\n \"Column width (\",\n colWidth,\n \"px)\"),\n React.createElement(Slider, { className: classes.field, min: 1, max: 50, value: colWidth, onChange: (_, val) => model.setColWidth(val) })),\n React.createElement(\"div\", { className: classes.flex },\n React.createElement(Typography, null,\n \"Row height (\",\n rowHeight,\n \"px)\"),\n React.createElement(Slider, { className: classes.field, min: 1, max: 50, value: rowHeight, onChange: (_, val) => model.setRowHeight(val) })),\n React.createElement(TextField, { select: true, label: \"Color scheme\", value: colorSchemeName, onChange: event => model.setColorSchemeName(event.target.value) }, Object.keys(colorSchemes).map(option => (React.createElement(MenuItem, { key: option, value: option }, option))))));\n});\nconst SettingsDialog = observer(function ({ model, onClose, }) {\n return (React.createElement(Dialog, { open: true, onClose: () => onClose(), title: \"Settings\", maxWidth: \"xl\" },\n React.createElement(DialogContent, { style: { width: '80em' } },\n React.createElement(SettingsContent, { model: model }),\n React.createElement(DialogActions, null,\n React.createElement(Button, { onClick: () => onClose(), variant: \"contained\", color: \"primary\" }, \"Submit\")))));\n});\nexport default SettingsDialog;\n//# sourceMappingURL=SettingsDialog.js.map"],"names":["useStyles","makeStyles","theme","FormControlLabel2","rest","React","FormControlLabel","Checkbox2","checked","label","onChange","Checkbox","SettingsContent","observer","model","TreeSettings","MSASettings","classes","drawTree","drawNodeBubbles","labelsAlignRight","noTree","showBranchLen","treeWidthMatchesArea","treeWidth","Typography","Slider","_","val","bgColor","colWidth","colorSchemeName","rowHeight","TextField","event","colorSchemes","option","MenuItem","SettingsDialog","onClose","Dialog","DialogContent","DialogActions","Button"],"mappings":"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"} \ No newline at end of file diff --git a/assets/TrackInfoDialog-3dRdC0uy.js b/assets/TrackInfoDialog-3dRdC0uy.js new file mode 100644 index 00000000..a99f23c7 --- /dev/null +++ b/assets/TrackInfoDialog-3dRdC0uy.js @@ -0,0 +1,2 @@ +import{p as s,q as c,m as i,o as p,r as d,R as e,k as u,D as m,B as r,l as C}from"./index-yx-9MxwX.js";var b=c();const g=s(b),k=i()(a=>({textArea:{padding:a.spacing(2),overflow:"auto",background:"#ddd",wordBreak:"break-word"}})),E=p(function({model:a,onClose:t}){const[l,o]=d.useState("Copy to clipboard"),{classes:n}=k();return e.createElement(u.Dialog,{open:!0,onClose:t,fullWidth:!0,maxWidth:"lg",title:`Track info - ${a.name}`},e.createElement(m,null,e.createElement(r,{variant:"contained",color:"primary",onClick:()=>{g(a.data),o("Copied!"),setTimeout(()=>{o("Copy to clipboard")},300)}},l),e.createElement("pre",{className:n.textArea},a.data)),e.createElement(C,null,e.createElement(r,{variant:"contained",onClick:t,color:"secondary"},"Close")))});export{E as default}; +//# sourceMappingURL=TrackInfoDialog-3dRdC0uy.js.map diff --git a/assets/TrackInfoDialog-qvHczhmR.js.map b/assets/TrackInfoDialog-3dRdC0uy.js.map similarity index 68% rename from assets/TrackInfoDialog-qvHczhmR.js.map rename to assets/TrackInfoDialog-3dRdC0uy.js.map index f7b1c5d5..6dce8277 100644 --- a/assets/TrackInfoDialog-qvHczhmR.js.map +++ b/assets/TrackInfoDialog-3dRdC0uy.js.map @@ -1 +1 @@ -{"version":3,"file":"TrackInfoDialog-qvHczhmR.js","sources":["../../../lib/dist/components/dialogs/TrackInfoDialog.js"],"sourcesContent":["import React, { useState } from 'react';\nimport copy from 'copy-to-clipboard';\nimport { observer } from 'mobx-react';\nimport { Dialog } from '@jbrowse/core/ui';\nimport { Button, DialogActions, DialogContent } from '@mui/material';\nimport { makeStyles } from 'tss-react/mui';\nconst useStyles = makeStyles()(theme => ({\n textArea: {\n padding: theme.spacing(2),\n overflow: 'auto',\n background: '#ddd',\n wordBreak: 'break-word',\n },\n}));\nconst TrackInfoDialog = observer(function ({ model, onClose, }) {\n const [label, setLabel] = useState('Copy to clipboard');\n const { classes } = useStyles();\n return (React.createElement(Dialog, { open: true, onClose: onClose, fullWidth: true, maxWidth: \"lg\", title: `Track info - ${model.name}` },\n React.createElement(DialogContent, null,\n React.createElement(Button, { variant: \"contained\", color: \"primary\", onClick: () => {\n copy(model.data);\n setLabel('Copied!');\n setTimeout(() => {\n setLabel('Copy to clipboard');\n }, 300);\n } }, label),\n React.createElement(\"pre\", { className: classes.textArea }, model.data)),\n React.createElement(DialogActions, null,\n React.createElement(Button, { variant: \"contained\", onClick: onClose, color: \"secondary\" }, \"Close\"))));\n});\nexport default TrackInfoDialog;\n//# sourceMappingURL=TrackInfoDialog.js.map"],"names":["useStyles","makeStyles","theme","TrackInfoDialog","observer","model","onClose","label","setLabel","useState","classes","React","Dialog","DialogContent","Button","copy","DialogActions"],"mappings":"gGAMA,MAAMA,EAAYC,EAAY,EAACC,IAAU,CACrC,SAAU,CACN,QAASA,EAAM,QAAQ,CAAC,EACxB,SAAU,OACV,WAAY,OACZ,UAAW,YACd,CACL,EAAE,EACIC,EAAkBC,EAAS,SAAU,CAAE,MAAAC,EAAO,QAAAC,CAAO,EAAK,CAC5D,KAAM,CAACC,EAAOC,CAAQ,EAAIC,EAAQ,SAAC,mBAAmB,EAChD,CAAE,QAAAC,GAAYV,IACpB,OAAQW,EAAM,cAAcC,EAAM,OAAE,CAAE,KAAM,GAAM,QAASN,EAAS,UAAW,GAAM,SAAU,KAAM,MAAO,gBAAgBD,EAAM,IAAI,EAAI,EACtIM,EAAM,cAAcE,EAAe,KAC/BF,EAAM,cAAcG,EAAQ,CAAE,QAAS,YAAa,MAAO,UAAW,QAAS,IAAM,CAC7EC,EAAKV,EAAM,IAAI,EACfG,EAAS,SAAS,EAClB,WAAW,IAAM,CACbA,EAAS,mBAAmB,CAC/B,EAAE,GAAG,CACT,CAAA,EAAID,CAAK,EACdI,EAAM,cAAc,MAAO,CAAE,UAAWD,EAAQ,QAAU,EAAEL,EAAM,IAAI,CAAC,EAC3EM,EAAM,cAAcK,EAAe,KAC/BL,EAAM,cAAcG,EAAQ,CAAE,QAAS,YAAa,QAASR,EAAS,MAAO,WAAW,EAAI,OAAO,CAAC,CAAC,CACjH,CAAC"} \ No newline at end of file +{"version":3,"file":"TrackInfoDialog-3dRdC0uy.js","sources":["../../../lib/dist/components/dialogs/TrackInfoDialog.js"],"sourcesContent":["import React, { useState } from 'react';\nimport copy from 'copy-to-clipboard';\nimport { observer } from 'mobx-react';\nimport { Dialog } from '@jbrowse/core/ui';\nimport { Button, DialogActions, DialogContent } from '@mui/material';\nimport { makeStyles } from 'tss-react/mui';\nconst useStyles = makeStyles()(theme => ({\n textArea: {\n padding: theme.spacing(2),\n overflow: 'auto',\n background: '#ddd',\n wordBreak: 'break-word',\n },\n}));\nconst TrackInfoDialog = observer(function ({ model, onClose, }) {\n const [label, setLabel] = useState('Copy to clipboard');\n const { classes } = useStyles();\n return (React.createElement(Dialog, { open: true, onClose: onClose, fullWidth: true, maxWidth: \"lg\", title: `Track info - ${model.name}` },\n React.createElement(DialogContent, null,\n React.createElement(Button, { variant: \"contained\", color: \"primary\", onClick: () => {\n copy(model.data);\n setLabel('Copied!');\n setTimeout(() => {\n setLabel('Copy to clipboard');\n }, 300);\n } }, label),\n React.createElement(\"pre\", { className: classes.textArea }, model.data)),\n React.createElement(DialogActions, null,\n React.createElement(Button, { variant: \"contained\", onClick: onClose, color: \"secondary\" }, \"Close\"))));\n});\nexport default TrackInfoDialog;\n//# sourceMappingURL=TrackInfoDialog.js.map"],"names":["useStyles","makeStyles","theme","TrackInfoDialog","observer","model","onClose","label","setLabel","useState","classes","React","Dialog","DialogContent","Button","copy","DialogActions"],"mappings":"8HAMMA,EAAYC,EAAY,EAACC,IAAU,CACrC,SAAU,CACN,QAASA,EAAM,QAAQ,CAAC,EACxB,SAAU,OACV,WAAY,OACZ,UAAW,YACd,CACL,EAAE,EACIC,EAAkBC,EAAS,SAAU,CAAE,MAAAC,EAAO,QAAAC,CAAO,EAAK,CAC5D,KAAM,CAACC,EAAOC,CAAQ,EAAIC,EAAQ,SAAC,mBAAmB,EAChD,CAAE,QAAAC,GAAYV,IACpB,OAAQW,EAAM,cAAcC,EAAM,OAAE,CAAE,KAAM,GAAM,QAASN,EAAS,UAAW,GAAM,SAAU,KAAM,MAAO,gBAAgBD,EAAM,IAAI,EAAI,EACtIM,EAAM,cAAcE,EAAe,KAC/BF,EAAM,cAAcG,EAAQ,CAAE,QAAS,YAAa,MAAO,UAAW,QAAS,IAAM,CAC7EC,EAAKV,EAAM,IAAI,EACfG,EAAS,SAAS,EAClB,WAAW,IAAM,CACbA,EAAS,mBAAmB,CAC/B,EAAE,GAAG,CACT,CAAA,EAAID,CAAK,EACdI,EAAM,cAAc,MAAO,CAAE,UAAWD,EAAQ,QAAU,EAAEL,EAAM,IAAI,CAAC,EAC3EM,EAAM,cAAcK,EAAe,KAC/BL,EAAM,cAAcG,EAAQ,CAAE,QAAS,YAAa,QAASR,EAAS,MAAO,WAAW,EAAI,OAAO,CAAC,CAAC,CACjH,CAAC"} \ No newline at end of file diff --git a/assets/TrackInfoDialog-qvHczhmR.js b/assets/TrackInfoDialog-qvHczhmR.js deleted file mode 100644 index 767b59c5..00000000 --- a/assets/TrackInfoDialog-qvHczhmR.js +++ /dev/null @@ -1,2 +0,0 @@ -import{m as s,o as c,r as i,R as e,u as d,D as u,B as r,h as p,e as m}from"./index-D3BxRj96.js";const g=s()(a=>({textArea:{padding:a.spacing(2),overflow:"auto",background:"#ddd",wordBreak:"break-word"}})),b=c(function({model:a,onClose:t}){const[n,o]=i.useState("Copy to clipboard"),{classes:l}=g();return e.createElement(d.Dialog,{open:!0,onClose:t,fullWidth:!0,maxWidth:"lg",title:`Track info - ${a.name}`},e.createElement(u,null,e.createElement(r,{variant:"contained",color:"primary",onClick:()=>{p(a.data),o("Copied!"),setTimeout(()=>{o("Copy to clipboard")},300)}},n),e.createElement("pre",{className:l.textArea},a.data)),e.createElement(m,null,e.createElement(r,{variant:"contained",onClick:t,color:"secondary"},"Close")))});export{b as default}; -//# sourceMappingURL=TrackInfoDialog-qvHczhmR.js.map diff --git a/assets/TracklistDialog-DbttIMmt.js b/assets/TracklistDialog-DbttIMmt.js deleted file mode 100644 index fa893e83..00000000 --- a/assets/TracklistDialog-DbttIMmt.js +++ /dev/null @@ -1,2 +0,0 @@ -import{o,R as e,u as r,D as c,a as s,f as i,F as m,C as u,e as d,B as p}from"./index-D3BxRj96.js";const E=o(function({model:t,onClose:n}){const{tracks:l}=t;return e.createElement(r.Dialog,{onClose:()=>n(),open:!0,title:"Add track"},e.createElement(c,null,e.createElement(s,null,"Open relevant per-alignment tracks e.g. protein domains"),e.createElement(i,null,l.map(a=>e.createElement(m,{key:a.model.id,control:e.createElement(u,{checked:!t.turnedOffTracks.has(a.model.id),onChange:()=>{t.toggleTrack(a.model.id)}}),label:a.model.name}))),e.createElement(d,null,e.createElement(p,{onClick:()=>n(),variant:"contained",color:"primary"},"Close"))))});export{E as default}; -//# sourceMappingURL=TracklistDialog-DbttIMmt.js.map diff --git a/assets/TracklistDialog-DurU9Wr1.js b/assets/TracklistDialog-DurU9Wr1.js new file mode 100644 index 00000000..4ab51e31 --- /dev/null +++ b/assets/TracklistDialog-DurU9Wr1.js @@ -0,0 +1,2 @@ +import{o,R as e,k as r,D as c,f as s,n as i,F as m,C as u,l as d,B as p}from"./index-yx-9MxwX.js";const k=o(function({model:a,onClose:n}){const{tracks:l}=a;return e.createElement(r.Dialog,{onClose:()=>n(),open:!0,title:"Add track"},e.createElement(c,null,e.createElement(s,null,"Open relevant per-alignment tracks e.g. protein domains"),e.createElement(i,null,l.map(t=>e.createElement(m,{key:t.model.id,control:e.createElement(u,{checked:!a.turnedOffTracks.has(t.model.id),onChange:()=>{a.toggleTrack(t.model.id)}}),label:t.model.name}))),e.createElement(d,null,e.createElement(p,{onClick:()=>n(),variant:"contained",color:"primary"},"Close"))))});export{k as default}; +//# sourceMappingURL=TracklistDialog-DurU9Wr1.js.map diff --git a/assets/TracklistDialog-DbttIMmt.js.map b/assets/TracklistDialog-DurU9Wr1.js.map similarity index 97% rename from assets/TracklistDialog-DbttIMmt.js.map rename to assets/TracklistDialog-DurU9Wr1.js.map index 9184a963..2a627202 100644 --- a/assets/TracklistDialog-DbttIMmt.js.map +++ b/assets/TracklistDialog-DurU9Wr1.js.map @@ -1 +1 @@ -{"version":3,"file":"TracklistDialog-DbttIMmt.js","sources":["../../../lib/dist/components/dialogs/TracklistDialog.js"],"sourcesContent":["import React from 'react';\nimport { Dialog } from '@jbrowse/core/ui';\nimport { DialogContent, FormControlLabel, FormGroup, Checkbox, DialogActions, Button, Typography, } from '@mui/material';\nimport { observer } from 'mobx-react';\nexport default observer(function ({ model, onClose, }) {\n const { tracks } = model;\n return (React.createElement(Dialog, { onClose: () => onClose(), open: true, title: \"Add track\" },\n React.createElement(DialogContent, null,\n React.createElement(Typography, null, \"Open relevant per-alignment tracks e.g. protein domains\"),\n React.createElement(FormGroup, null, tracks.map(track => {\n return (React.createElement(FormControlLabel, { key: track.model.id, control: React.createElement(Checkbox, { checked: !model.turnedOffTracks.has(track.model.id), onChange: () => {\n model.toggleTrack(track.model.id);\n } }), label: track.model.name }));\n })),\n React.createElement(DialogActions, null,\n React.createElement(Button, { onClick: () => onClose(), variant: \"contained\", color: \"primary\" }, \"Close\")))));\n});\n//# sourceMappingURL=TracklistDialog.js.map"],"names":["TracklistDialog","observer","model","onClose","tracks","React","Dialog","DialogContent","Typography","FormGroup","track","FormControlLabel","Checkbox","DialogActions","Button"],"mappings":"kGAIA,MAAeA,EAAAC,EAAS,SAAU,CAAE,MAAAC,EAAO,QAAAC,GAAY,CACnD,KAAM,CAAE,OAAAC,CAAQ,EAAGF,EACnB,OAAQG,EAAM,cAAcC,EAAM,OAAE,CAAE,QAAS,IAAMH,EAAO,EAAI,KAAM,GAAM,MAAO,WAAa,EAC5FE,EAAM,cAAcE,EAAe,KAC/BF,EAAM,cAAcG,EAAY,KAAM,yDAAyD,EAC/FH,EAAM,cAAcI,EAAW,KAAML,EAAO,IAAIM,GACpCL,EAAM,cAAcM,EAAkB,CAAE,IAAKD,EAAM,MAAM,GAAI,QAASL,EAAM,cAAcO,EAAU,CAAE,QAAS,CAACV,EAAM,gBAAgB,IAAIQ,EAAM,MAAM,EAAE,EAAG,SAAU,IAAM,CACvKR,EAAM,YAAYQ,EAAM,MAAM,EAAE,CAC5D,CAA2B,CAAA,EAAG,MAAOA,EAAM,MAAM,IAAM,CAAA,CAC1C,CAAC,EACFL,EAAM,cAAcQ,EAAe,KAC/BR,EAAM,cAAcS,EAAQ,CAAE,QAAS,IAAMX,EAAS,EAAE,QAAS,YAAa,MAAO,SAAS,EAAI,OAAO,CAAC,CAAC,CAAC,CAC5H,CAAC"} \ No newline at end of file +{"version":3,"file":"TracklistDialog-DurU9Wr1.js","sources":["../../../lib/dist/components/dialogs/TracklistDialog.js"],"sourcesContent":["import React from 'react';\nimport { Dialog } from '@jbrowse/core/ui';\nimport { DialogContent, FormControlLabel, FormGroup, Checkbox, DialogActions, Button, Typography, } from '@mui/material';\nimport { observer } from 'mobx-react';\nexport default observer(function ({ model, onClose, }) {\n const { tracks } = model;\n return (React.createElement(Dialog, { onClose: () => onClose(), open: true, title: \"Add track\" },\n React.createElement(DialogContent, null,\n React.createElement(Typography, null, \"Open relevant per-alignment tracks e.g. protein domains\"),\n React.createElement(FormGroup, null, tracks.map(track => {\n return (React.createElement(FormControlLabel, { key: track.model.id, control: React.createElement(Checkbox, { checked: !model.turnedOffTracks.has(track.model.id), onChange: () => {\n model.toggleTrack(track.model.id);\n } }), label: track.model.name }));\n })),\n React.createElement(DialogActions, null,\n React.createElement(Button, { onClick: () => onClose(), variant: \"contained\", color: \"primary\" }, \"Close\")))));\n});\n//# sourceMappingURL=TracklistDialog.js.map"],"names":["TracklistDialog","observer","model","onClose","tracks","React","Dialog","DialogContent","Typography","FormGroup","track","FormControlLabel","Checkbox","DialogActions","Button"],"mappings":"kGAIA,MAAeA,EAAAC,EAAS,SAAU,CAAE,MAAAC,EAAO,QAAAC,GAAY,CACnD,KAAM,CAAE,OAAAC,CAAQ,EAAGF,EACnB,OAAQG,EAAM,cAAcC,EAAM,OAAE,CAAE,QAAS,IAAMH,EAAO,EAAI,KAAM,GAAM,MAAO,WAAa,EAC5FE,EAAM,cAAcE,EAAe,KAC/BF,EAAM,cAAcG,EAAY,KAAM,yDAAyD,EAC/FH,EAAM,cAAcI,EAAW,KAAML,EAAO,IAAIM,GACpCL,EAAM,cAAcM,EAAkB,CAAE,IAAKD,EAAM,MAAM,GAAI,QAASL,EAAM,cAAcO,EAAU,CAAE,QAAS,CAACV,EAAM,gBAAgB,IAAIQ,EAAM,MAAM,EAAE,EAAG,SAAU,IAAM,CACvKR,EAAM,YAAYQ,EAAM,MAAM,EAAE,CAC5D,CAA2B,CAAA,EAAG,MAAOA,EAAM,MAAM,IAAM,CAAA,CAC1C,CAAC,EACFL,EAAM,cAAcQ,EAAe,KAC/BR,EAAM,cAAcS,EAAQ,CAAE,QAAS,IAAMX,EAAS,EAAE,QAAS,YAAa,MAAO,SAAS,EAAI,OAAO,CAAC,CAAC,CAAC,CAC5H,CAAC"} \ No newline at end of file diff --git a/assets/TreeNodeInfoDialog-R16aJE9_.js b/assets/TreeNodeInfoDialog-R16aJE9_.js deleted file mode 100644 index 07ffaf4a..00000000 --- a/assets/TreeNodeInfoDialog-R16aJE9_.js +++ /dev/null @@ -1,2 +0,0 @@ -import{o as i,R as e,u,D as c}from"./index-D3BxRj96.js";import{B as t}from"./index-DrQDdWjW.js";const E=i(function({info:o,model:n,nodeName:a,onClose:l}){const{treeMetadata:s}=n,r=s[a];return e.createElement(u.Dialog,{onClose:()=>l(),open:!0,title:"Tree node info"},e.createElement(c,null,e.createElement(t.BaseCard,{title:"Attributes"},e.createElement(t.Attributes,{attributes:{nodeName:a,...o}})),r?e.createElement(t.BaseCard,{title:"Extra metadata"},e.createElement(t.Attributes,{attributes:r})):null))});export{E as default}; -//# sourceMappingURL=TreeNodeInfoDialog-R16aJE9_.js.map diff --git a/assets/TreeNodeInfoDialog-R16aJE9_.js.map b/assets/TreeNodeInfoDialog-R16aJE9_.js.map deleted file mode 100644 index e5ead57c..00000000 --- a/assets/TreeNodeInfoDialog-R16aJE9_.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TreeNodeInfoDialog-R16aJE9_.js","sources":["../../../lib/dist/components/TreePanel/dialogs/TreeNodeInfoDialog.js"],"sourcesContent":["import React from 'react';\nimport { Dialog } from '@jbrowse/core/ui';\nimport { DialogContent } from '@mui/material';\nimport { observer } from 'mobx-react';\nimport { Attributes, BaseCard, } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail';\nexport default observer(function ({ info, model, nodeName, onClose, }) {\n const { treeMetadata } = model;\n const metadata = treeMetadata[nodeName];\n return (React.createElement(Dialog, { onClose: () => onClose(), open: true, title: \"Tree node info\" },\n React.createElement(DialogContent, null,\n React.createElement(BaseCard, { title: \"Attributes\" },\n React.createElement(Attributes, { attributes: { nodeName, ...info } })),\n metadata ? (React.createElement(BaseCard, { title: \"Extra metadata\" },\n React.createElement(Attributes, { attributes: metadata }))) : null)));\n});\n//# sourceMappingURL=TreeNodeInfoDialog.js.map"],"names":["TreeNodeInfoDialog","observer","info","model","nodeName","onClose","treeMetadata","metadata","React","Dialog","DialogContent","BaseCard","Attributes"],"mappings":"gGAKA,MAAAA,EAAeC,EAAS,SAAU,CAAE,KAAAC,EAAM,MAAAC,EAAO,SAAAC,EAAU,QAAAC,CAAO,EAAK,CACnE,KAAM,CAAE,aAAAC,CAAc,EAAGH,EACnBI,EAAWD,EAAaF,CAAQ,EACtC,OAAQI,EAAM,cAAcC,EAAM,OAAE,CAAE,QAAS,IAAMJ,EAAO,EAAI,KAAM,GAAM,MAAO,gBAAkB,EACjGG,EAAM,cAAcE,EAAe,KAC/BF,EAAM,cAAcG,EAAAA,SAAU,CAAE,MAAO,YAAc,EACjDH,EAAM,cAAcI,EAAAA,WAAY,CAAE,WAAY,CAAE,SAAAR,EAAU,GAAGF,CAAM,CAAA,CAAE,CAAC,EAC1EK,EAAYC,EAAM,cAAcG,EAAQ,SAAE,CAAE,MAAO,gBAAkB,EACjEH,EAAM,cAAcI,EAAAA,WAAY,CAAE,WAAYL,EAAU,CAAC,EAAK,IAAI,CAAC,CACnF,CAAC"} \ No newline at end of file diff --git a/assets/TreeNodeInfoDialog-oP2bcXgW.js b/assets/TreeNodeInfoDialog-oP2bcXgW.js new file mode 100644 index 00000000..f8b1f660 --- /dev/null +++ b/assets/TreeNodeInfoDialog-oP2bcXgW.js @@ -0,0 +1,3 @@ +import{o as f,m as g,R as e,k as E,D as p,T as x}from"./index-yx-9MxwX.js";import{B as t}from"./index-BAq0vo4N.js";const C=g()({textAreaFont:{fontFamily:"Courier New"},dialogContent:{background:"lightgrey",margin:4,width:"80em"}}),w=f(function({info:l,model:s,nodeName:a,onClose:o}){const{classes:r}=C(),{treeMetadata:i,rows:u}=s,n=i[a],[c,m]=u.find(d=>d[0]===a);return e.createElement(E.Dialog,{onClose:()=>o(),open:!0,title:"Tree node info",maxWidth:"xl"},e.createElement(p,null,e.createElement(t.BaseCard,{title:"Attributes"},e.createElement(t.Attributes,{attributes:{nodeName:a,...l}})),e.createElement(t.BaseCard,{title:"Sequence"},e.createElement(x,{variant:"outlined",multiline:!0,className:r.dialogContent,minRows:5,maxRows:10,fullWidth:!0,value:`>${c} +${m.replaceAll("-","")}`,InputProps:{readOnly:!0,classes:{input:r.textAreaFont}}})),n?e.createElement(t.BaseCard,{title:"Extra metadata"},e.createElement(t.Attributes,{attributes:n})):null))});export{w as default}; +//# sourceMappingURL=TreeNodeInfoDialog-oP2bcXgW.js.map diff --git a/assets/TreeNodeInfoDialog-oP2bcXgW.js.map b/assets/TreeNodeInfoDialog-oP2bcXgW.js.map new file mode 100644 index 00000000..8bd72811 --- /dev/null +++ b/assets/TreeNodeInfoDialog-oP2bcXgW.js.map @@ -0,0 +1 @@ +{"version":3,"file":"TreeNodeInfoDialog-oP2bcXgW.js","sources":["../../../lib/dist/components/TreePanel/dialogs/TreeNodeInfoDialog.js"],"sourcesContent":["import React from 'react';\nimport { Dialog } from '@jbrowse/core/ui';\nimport { DialogContent, TextField } from '@mui/material';\nimport { observer } from 'mobx-react';\nimport { Attributes, BaseCard, } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail';\nimport { makeStyles } from 'tss-react/mui';\nconst useStyles = makeStyles()({\n textAreaFont: {\n fontFamily: 'Courier New',\n },\n dialogContent: {\n background: 'lightgrey',\n margin: 4,\n width: '80em',\n },\n});\nexport default observer(function ({ info, model, nodeName, onClose, }) {\n const { classes } = useStyles();\n const { treeMetadata, rows } = model;\n const metadata = treeMetadata[nodeName];\n const [name, sequence] = rows.find(f => f[0] === nodeName);\n return (React.createElement(Dialog, { onClose: () => onClose(), open: true, title: \"Tree node info\", maxWidth: \"xl\" },\n React.createElement(DialogContent, null,\n React.createElement(BaseCard, { title: \"Attributes\" },\n React.createElement(Attributes, { attributes: { nodeName, ...info } })),\n React.createElement(BaseCard, { title: \"Sequence\" },\n React.createElement(TextField, { variant: \"outlined\", multiline: true, className: classes.dialogContent, minRows: 5, maxRows: 10, fullWidth: true, value: `>${name}\\n${sequence.replaceAll('-', '')}`, InputProps: {\n readOnly: true,\n classes: {\n input: classes.textAreaFont,\n },\n } })),\n metadata ? (React.createElement(BaseCard, { title: \"Extra metadata\" },\n React.createElement(Attributes, { attributes: metadata }))) : null)));\n});\n//# sourceMappingURL=TreeNodeInfoDialog.js.map"],"names":["useStyles","makeStyles","TreeNodeInfoDialog","observer","info","model","nodeName","onClose","classes","treeMetadata","rows","metadata","name","sequence","f","React","Dialog","DialogContent","BaseCard","Attributes","TextField"],"mappings":"mHAMA,MAAMA,EAAYC,EAAU,EAAG,CAC3B,aAAc,CACV,WAAY,aACf,EACD,cAAe,CACX,WAAY,YACZ,OAAQ,EACR,MAAO,MACV,CACL,CAAC,EACDC,EAAeC,EAAS,SAAU,CAAE,KAAAC,EAAM,MAAAC,EAAO,SAAAC,EAAU,QAAAC,CAAO,EAAK,CACnE,KAAM,CAAE,QAAAC,GAAYR,IACd,CAAE,aAAAS,EAAc,KAAAC,CAAM,EAAGL,EACzBM,EAAWF,EAAaH,CAAQ,EAChC,CAACM,EAAMC,CAAQ,EAAIH,EAAK,KAAKI,GAAKA,EAAE,CAAC,IAAMR,CAAQ,EACzD,OAAQS,EAAM,cAAcC,SAAQ,CAAE,QAAS,IAAMT,IAAW,KAAM,GAAM,MAAO,iBAAkB,SAAU,IAAM,EACjHQ,EAAM,cAAcE,EAAe,KAC/BF,EAAM,cAAcG,EAAAA,SAAU,CAAE,MAAO,YAAc,EACjDH,EAAM,cAAcI,EAAAA,WAAY,CAAE,WAAY,CAAE,SAAAb,EAAU,GAAGF,CAAM,CAAA,CAAE,CAAC,EAC1EW,EAAM,cAAcG,EAAAA,SAAU,CAAE,MAAO,UAAY,EAC/CH,EAAM,cAAcK,EAAW,CAAE,QAAS,WAAY,UAAW,GAAM,UAAWZ,EAAQ,cAAe,QAAS,EAAG,QAAS,GAAI,UAAW,GAAM,MAAO,IAAII,CAAI;AAAA,EAAKC,EAAS,WAAW,IAAK,EAAE,CAAC,GAAI,WAAY,CAC3M,SAAU,GACV,QAAS,CACL,MAAOL,EAAQ,YAClB,CACJ,CAAA,CAAE,CAAC,EACZG,EAAYI,EAAM,cAAcG,EAAQ,SAAE,CAAE,MAAO,gBAAkB,EACjEH,EAAM,cAAcI,EAAAA,WAAY,CAAE,WAAYR,EAAU,CAAC,EAAK,IAAI,CAAC,CACnF,CAAC"} \ No newline at end of file diff --git a/assets/index-DrQDdWjW.js b/assets/index-BAq0vo4N.js similarity index 60% rename from assets/index-DrQDdWjW.js rename to assets/index-BAq0vo4N.js index 23db0c29..f1c38042 100644 --- a/assets/index-DrQDdWjW.js +++ b/assets/index-BAq0vo4N.js @@ -1,15 +1,15 @@ -import{q as Lu,s as Tu,j as v,c as X,r as a,t as da,v as Rt,u as Kt,w as Ht,x as Du,y as bt,z as $u,H as Au,A as pa,E as ho,G as Ru,I as fa,J as _e,_ as m,K as he,N as ze,O as xe,P as Z,Q as xt,U as Mr,V as $t,W as Ie,X as De,Y as ga,Z as ml,$ as ma,a0 as Hu,a1 as ba,i as kr,a2 as Co,M as dt,a3 as Dt,a4 as _u,a5 as Ct,a6 as Vu,a7 as Nu,a8 as bl,a9 as pt,aa as Me,ab as Gu,ac as nr,ad as zu,ae as ju,af as ha,F as Bu,ag as Ca,ah as Uu,T as wa,ai as hl,aj as qu,ak as Wu,al as Ku,am as xn,an as Qu,ao as Sa,C as Zu,k as Ju,S as Yu,ap as Xu,B as ec,aq as tc,ar as rc,as as oc,at as lc,au as nc,av as z,aw as ac,ax as ic,ay as sc}from"./index-D3BxRj96.js";function uc(e,t){return()=>null}var cc={},wo={},dc=Tu;Object.defineProperty(wo,"__esModule",{value:!0});wo.default=void 0;var pc=dc(Lu()),fc=v;wo.default=(0,pc.default)((0,fc.jsx)("path",{d:"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"}),"ExpandMore");var Cl={},qr={},vn;function gc(){if(vn)return qr;vn=1;var e=X&&X.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(qr,"__esModule",{value:!0});const t=e(a),r=Rt,o=Kt,l=e(da);function n({handleClose:i}){return t.default.createElement(o.Dialog,{maxWidth:"xl",open:!0,onClose:()=>i(),title:"Feature sequence panel help"},t.default.createElement(r.DialogContent,null,t.default.createElement(r.Typography,{paragraph:!0},'The "Feature sequence" panel shows the underlying genomic sequence for a given feature, fetched from the reference genome.'),t.default.createElement(r.Typography,null,"For gene features, this panel does special calculations to e.g. stitch together the coding sequence, the options are:"),t.default.createElement("ul",null,t.default.createElement("li",null,"CDS - shows the stitched together CDS sequences"),t.default.createElement("li",null,'Protein - the translated coding sequence, with the "standard" genetic code'),t.default.createElement("li",null,"cDNA - shows the 'copy DNA' of transcript, formed from exon sequences"),t.default.createElement("li",null,"Genomic w/ introns +/- Nbp up+down stream - the sequence underlying the entire gene including including introns, with UTR and CDS highlighted")),t.default.createElement(r.Typography,{paragraph:!0},"For other feature types, the options are:"),t.default.createElement("ul",null,t.default.createElement("li",null,"Genomic +/- Nbp up+down stream - the reference genome sequence underlying the feature, with the up and downstream sequence")),t.default.createElement(r.Typography,null,'Note 1: you can use the "gear icon" ',t.default.createElement(l.default,null)," to edit the number of bp displayed up/downstream and in the intron region"),t.default.createElement(r.Typography,null,"Note 2: The 'Copy HTML' function retains the colors from the sequence panel but cannot be pasted into some programs like notepad that only expect plain text.")),t.default.createElement(r.DialogActions,null,t.default.createElement(r.Button,{onClick:()=>i(),autoFocus:!0,variant:"contained"},"Close")))}return qr.default=n,qr}var Wr={},hr={},Fn;function mc(){if(Fn)return hr;Fn=1,Object.defineProperty(hr,"__esModule",{value:!0}),hr.useFeatureSequence=void 0;const e=a,t=Ht,r=Du,o=5e5;function l(n,i,s,u){const[d,c]=(0,e.useState)(),[p,f]=(0,e.useState)();return(0,e.useEffect)(()=>{var b;let g=!1;if(!n)return()=>{};const{assemblyManager:h,rpcManager:x}=(0,t.getSession)(n),[S]=((b=n.view)===null||b===void 0?void 0:b.assemblyNames)||[];async function C(E,T,_){const F=await h.waitForAssembly(S);if(!F)throw new Error("assembly not found");const L="getSequence",k=await x.call(L,"CoreGetFeatures",{adapterConfig:(0,r.getConf)(F,["sequence","adapter"]),sessionId:L,regions:[{start:E,end:T,refName:F.getCanonicalRefName(_),assemblyName:S}]}),[H]=k;return(H==null?void 0:H.get("seq"))||""}return(async()=>{try{f(void 0);const{start:E,end:T,refName:_}=i;if(!u&&T-E>o)c({error:`Genomic sequence larger than ${o}bp, use "force load" button to display`});else{const F=E-s,L=T+s,k=await C(E,T,_),H=await C(Math.max(0,F),E,_),A=await C(T,L,_);g||c({seq:k,upstream:H,downstream:A})}}catch(E){console.error(E),f(E)}})(),()=>{g=!0}},[i,n,s,u]),{sequence:d,error:p}}return hr.useFeatureSequence=l,hr}var Kr={},yn;function bc(){if(yn)return Kr;yn=1;var e=X&&X.__createBinding||(Object.create?function(d,c,p,f){f===void 0&&(f=p);var b=Object.getOwnPropertyDescriptor(c,p);(!b||("get"in b?!c.__esModule:b.writable||b.configurable))&&(b={enumerable:!0,get:function(){return c[p]}}),Object.defineProperty(d,f,b)}:function(d,c,p,f){f===void 0&&(f=p),d[f]=c[p]}),t=X&&X.__setModuleDefault||(Object.create?function(d,c){Object.defineProperty(d,"default",{enumerable:!0,value:c})}:function(d,c){d.default=c}),r=X&&X.__importStar||function(d){if(d&&d.__esModule)return d;var c={};if(d!=null)for(var p in d)p!=="default"&&Object.prototype.hasOwnProperty.call(d,p)&&e(c,d,p);return t(c,d),c};Object.defineProperty(Kr,"__esModule",{value:!0});const o=r(a),l=Rt,n=Kt,s=(0,bt.makeStyles)()(d=>({formElt:{margin:d.spacing(3),width:400},dialogContent:{width:"80em"}}));function u({handleClose:d,intronBp:c,upDownBp:p}){const{classes:f}=s(),[b,g]=(0,o.useState)(`${c}`),[h,x]=(0,o.useState)(`${p}`),S=!Number.isNaN(+b),C=!Number.isNaN(+h);return o.default.createElement(n.Dialog,{maxWidth:"xl",open:!0,onClose:()=>d(),title:"Feature sequence settings"},o.default.createElement(l.DialogContent,{className:f.dialogContent},o.default.createElement(l.TextField,{label:"Number of intronic bases around splice site to display",className:f.formElt,value:b,helperText:S?"":"Not a number",error:!S,onChange:E=>g(E.target.value)}),o.default.createElement(l.TextField,{label:"Number of bases up/down stream of feature to display",className:f.formElt,value:h,helperText:C?"":"Not a number",error:!C,onChange:E=>x(E.target.value)})),o.default.createElement(l.DialogActions,null,o.default.createElement(l.Button,{onClick:()=>d({upDownBp:+h,intronBp:+b}),disabled:!S||!C,color:"primary",variant:"contained"},"Submit"),o.default.createElement(l.Button,{onClick:()=>d(),color:"secondary",autoFocus:!0,variant:"contained"},"Cancel")))}return Kr.default=u,Kr}var Qr={},Ge={};Object.defineProperty(Ge,"__esModule",{value:!0});Ge.ellipses=Ge.calculateUTRs2=Ge.calculateUTRs=Ge.revlist=Ge.dedupe=Ge.stitch=void 0;function hc(e,t){return e.map(r=>t.slice(r.start,r.end)).join("")}Ge.stitch=hc;function In(e){return`${e.start}-${e.end}`}function Cc(e){return e.filter((t,r,o)=>!r||In(t)!==In(o[r-1]))}Ge.dedupe=Cc;function wc(e,t){return e.map(r=>({...r,start:t-r.end,end:t-r.start})).sort((r,o)=>r.start-o.start)}Ge.revlist=wc;function Sc(e,t){if(!e.length)return[];const r=e.at(0),o=e.at(-1),l=t.findIndex(c=>c.end>=r.start&&c.start<=r.start),n=t.findIndex(c=>c.end>=o.end&&c.start<=o.end),i=t[n],s=t[l],u=[...t.slice(0,l),{start:s.start,end:r.start}].map(c=>({...c,type:"five_prime_UTR"})),d=[{start:o.end,end:i.end},...t.slice(n+1)].map(c=>({...c,type:"three_prime_UTR"}));return[...u,...d]}Ge.calculateUTRs=Sc;function Oc(e,t){if(!e.length)return[];const r=e.at(0),o=e.at(-1),l=[{start:t.start,end:r.start}].map(i=>({...i,type:"five_prime_UTR"})),n=[{start:o.end,end:t.end}].map(i=>({...i,type:"three_prime_UTR"}));return[...l,...n]}Ge.calculateUTRs2=Oc;function Pc(e){return e.length>20?`${e.slice(0,20)}...`:e}Ge.ellipses=Pc;var Zr={},qe={},Mn;function So(){return Mn||(Mn=1,Object.defineProperty(qe,"__esModule",{value:!0}),qe.genomeColor=qe.updownstreamColor=qe.cdsColor=qe.proteinColor=qe.utrColor=qe.intronColor=void 0,qe.intronColor=void 0,qe.utrColor="rgb(200,240,240)",qe.proteinColor="rgb(220,160,220)",qe.cdsColor="rgb(220,220,180)",qe.updownstreamColor="rgba(250,200,200)",qe.genomeColor="rgb(200,280,200)"),qe}var kn;function xc(){if(kn)return Zr;kn=1;var e=X&&X.__importDefault||function(l){return l&&l.__esModule?l:{default:l}};Object.defineProperty(Zr,"__esModule",{value:!0});const t=e(a),r=So();function o({utr:l,cds:n,exons:i,sequence:s,upstream:u,downstream:d,includeIntrons:c,collapseIntron:p,intronBp:f}){const b=(n.length?[...n,...l].sort((g,h)=>g.start-h.start):i).filter(g=>g.start!==g.end);return t.default.createElement(t.default.Fragment,null,u?t.default.createElement("span",{style:{background:r.updownstreamColor}},u):null,b.map((g,h)=>{var x;const S=s.slice(g.end,(x=b[h+1])===null||x===void 0?void 0:x.start);return t.default.createElement(t.default.Fragment,{key:JSON.stringify(g)},t.default.createElement("span",{style:{background:g.type==="CDS"?r.cdsColor:r.utrColor}},s.slice(g.start,g.end)),c&&hf*2?`${S.slice(0,f)}...${S.slice(-f)}`:S):null)}),d?t.default.createElement("span",{style:{background:r.updownstreamColor}},d):null)}return Zr.default=o,Zr}var Jr={},En;function vc(){if(En)return Jr;En=1;var e=X&&X.__importDefault||function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(Jr,"__esModule",{value:!0});const t=e(a),r=Ge,o=So();function l({cds:n,sequence:i,codonTable:s}){const u=(0,r.stitch)(n,i);let d="";for(let c=0;ck.start-H.start).map(k=>({...k,start:k.start-f.start,end:k.end-f.start}));let T=(0,o.dedupe)(E.filter(k=>k.type==="CDS")),_=(0,o.dedupe)(E.filter(k=>k.type.match(/utr/i))),F=(0,o.dedupe)(E.filter(k=>k.type==="exon"));!_.length&&T.length&&F.length&&(_=(0,o.calculateUTRs)(T,F)),!_.length&&T.length&&!F.length&&(_=(0,o.calculateUTRs2)(T,{start:0,end:f.end-f.start,type:"gene"})),f.strand===-1&&([h,x,S]=[(0,r.revcom)(h),(0,r.revcom)(S),(0,r.revcom)(x)],T=(0,o.revlist)(T,h.length),F=(0,o.revlist)(F,h.length),_=(0,o.revlist)(_,h.length));const L=(0,r.generateCodonTable)(r.defaultCodonTable);return t.default.createElement("div",{ref:p,"data-testid":"sequence_panel"},t.default.createElement("div",{style:{fontFamily:"monospace",wordWrap:"break-word",overflow:"auto",color:"black",fontSize:12,maxWidth:600,maxHeight:300}},t.default.createElement("span",{style:{background:"white"}},`>${f.name||f.id||`${f.refName}:${f.start+1}-${f.end}`}-${b} -`),t.default.createElement("br",null),b==="genomic"?t.default.createElement(i.default,{sequence:h}):b==="genomic_sequence_updownstream"?t.default.createElement(i.default,{sequence:h,upstream:x,downstream:S}):b==="cds"?t.default.createElement(s.default,{cds:T,sequence:h}):b==="cdna"?t.default.createElement(l.default,{exons:F,cds:T,utr:_,sequence:h,intronBp:g}):b==="protein"?t.default.createElement(n.default,{cds:T,codonTable:L,sequence:h}):b==="gene"?t.default.createElement(l.default,{exons:F,cds:T,utr:_,sequence:h,includeIntrons:!0,intronBp:g}):b==="gene_collapsed_intron"?t.default.createElement(l.default,{exons:F,cds:T,sequence:h,utr:_,includeIntrons:!0,collapseIntron:!0,intronBp:g}):b==="gene_updownstream"?t.default.createElement(l.default,{exons:F,cds:T,sequence:h,utr:_,upstream:x,downstream:S,includeIntrons:!0,intronBp:g}):b==="gene_updownstream_collapsed_intron"?t.default.createElement(l.default,{exons:F,cds:T,sequence:h,utr:_,upstream:x,downstream:S,includeIntrons:!0,collapseIntron:!0,intronBp:g}):t.default.createElement("div",null,"Unknown type")))});return Qr.default=u,Qr}var $n;function Mc(){if($n)return Wr;$n=1;var e=X&&X.__createBinding||(Object.create?function(S,C,E,T){T===void 0&&(T=E);var _=Object.getOwnPropertyDescriptor(C,E);(!_||("get"in _?!C.__esModule:_.writable||_.configurable))&&(_={enumerable:!0,get:function(){return C[E]}}),Object.defineProperty(S,T,_)}:function(S,C,E,T){T===void 0&&(T=E),S[T]=C[E]}),t=X&&X.__setModuleDefault||(Object.create?function(S,C){Object.defineProperty(S,"default",{enumerable:!0,value:C})}:function(S,C){S.default=C}),r=X&&X.__importStar||function(S){if(S&&S.__esModule)return S;var C={};if(S!=null)for(var E in S)E!=="default"&&Object.prototype.hasOwnProperty.call(S,E)&&e(C,S,E);return t(C,S),C},o=X&&X.__importDefault||function(S){return S&&S.__esModule?S:{default:S}};Object.defineProperty(Wr,"__esModule",{value:!0});const l=r(a),n=Rt,i=bt,s=o($u),u=Ht,d=Kt,c=o(da),p=mc(),f=(0,l.lazy)(()=>Promise.resolve().then(()=>r(bc()))),b=(0,l.lazy)(()=>Promise.resolve().then(()=>r(Ic()))),g=(0,i.makeStyles)()(S=>({button:{margin:S.spacing(1)},formControl:{margin:0},container2:{marginTop:S.spacing(1)}}));function h({model:S,feature:C}){var E,T;const{classes:_}=g(),F=C,L=(0,l.useRef)(null),[k,H]=(0,u.useLocalStorage)("intronBp",10),[A,P]=(0,u.useLocalStorage)("upDownBp",500),[R,y]=(0,l.useState)(!1),[w,O]=(0,l.useState)(!1),[M,D]=(0,l.useState)(!1),I=(E=F.subfeatures)===null||E===void 0?void 0:E.some(ee=>ee.type==="CDS"),$=(T=F.subfeatures)===null||T===void 0?void 0:T.some(ee=>ee.type==="exon"),N=$||I,{sequence:j,error:G}=(0,p.useFeatureSequence)(S,C,A,M),[U,K]=(0,l.useState)(I?"cds":$?"cdna":"genomic"),J={...I?{cds:"CDS"}:{},...I?{protein:"Protein"}:{},...N?{cdna:"cDNA"}:{},...N?{gene:"Genomic w/ full introns"}:{},...N?{gene_updownstream:`Genomic w/ full introns +/- ${A}bp up+down stream`}:{},...N?{gene_collapsed_intron:`Genomic w/ ${k}bp intron`}:{},...N?{gene_updownstream_collapsed_intron:`Genomic w/ ${k}bp intron +/- ${A}bp up+down stream `}:{},...N?{}:{genomic:"Genomic"},...N?{}:{genomic_sequence_updownstream:`Genomic +/- ${A}bp up+down stream`}};return l.default.createElement("div",{className:_.container2},l.default.createElement(n.FormControl,{className:_.formControl},l.default.createElement(n.Select,{value:U,onChange:ee=>K(ee.target.value)},Object.entries(J).map(([ee,le])=>l.default.createElement(n.MenuItem,{key:ee,value:ee},le)))),l.default.createElement(n.FormControl,{className:_.formControl},l.default.createElement(n.Button,{className:_.button,variant:"contained",onClick:()=>{const ee=L.current;ee&&((0,s.default)(ee.textContent||"",{format:"text/plain"}),y(!0),setTimeout(()=>y(!1),1e3))}},R?"Copied to clipboard!":"Copy plaintext")),l.default.createElement(n.FormControl,{className:_.formControl},l.default.createElement(n.Tooltip,{title:"The 'Copy HTML' function retains the colors from the sequence panel but cannot be pasted into some programs like notepad that only expect plain text"},l.default.createElement(n.Button,{className:_.button,variant:"contained",onClick:()=>{const ee=L.current;ee&&((0,s.default)(ee.innerHTML,{format:"text/html"}),O(!0),setTimeout(()=>O(!1),1e3))}},w?"Copied to clipboard!":"Copy HTML"))),l.default.createElement(x,{upDownBp:A,intronBp:k,setIntronBp:H,setUpDownBp:P}),l.default.createElement("br",null),F.type==="gene"?l.default.createElement(n.Typography,null,"Note: inspect subfeature sequences for protein/CDS computations"):null,G?l.default.createElement(n.Typography,{color:"error"},`${G}`):j?j?"error"in j?l.default.createElement(l.default.Fragment,null,l.default.createElement(n.Typography,{color:"error"},j.error),l.default.createElement(n.Button,{variant:"contained",color:"inherit",onClick:()=>D(!0)},"Force load")):l.default.createElement(l.Suspense,{fallback:l.default.createElement(d.LoadingEllipses,null)},l.default.createElement(b,{ref:L,feature:F,mode:U,sequence:j,intronBp:k})):l.default.createElement(n.Typography,null,"No sequence found"):l.default.createElement(d.LoadingEllipses,null))}Wr.default=h;function x({intronBp:S,upDownBp:C,setIntronBp:E,setUpDownBp:T}){const{classes:_}=g(),[F,L]=(0,l.useState)(!1);return l.default.createElement(l.default.Fragment,null,l.default.createElement(n.FormControl,{className:_.formControl},l.default.createElement(n.IconButton,{onClick:()=>L(!0)},l.default.createElement(c.default,null))),F?l.default.createElement(l.Suspense,{fallback:null},l.default.createElement(f,{handleClose:k=>{if(k){const{upDownBp:H,intronBp:A}=k;E(A),T(H)}L(!1)},upDownBp:C,intronBp:S})):null)}return Wr}var kc=X&&X.__createBinding||(Object.create?function(e,t,r,o){o===void 0&&(o=r);var l=Object.getOwnPropertyDescriptor(t,r);(!l||("get"in l?!t.__esModule:l.writable||l.configurable))&&(l={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,l)}:function(e,t,r,o){o===void 0&&(o=r),e[o]=t[r]}),Ec=X&&X.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),wl=X&&X.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&kc(t,e,r);return Ec(t,e),t},Lc=X&&X.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Cl,"__esModule",{value:!0});const et=wl(a),Uo=Rt,Tc=bt,Dc=pa,$c=Kt,Ac=Ht,Rc=Lc(Au),Hc=(0,et.lazy)(()=>Promise.resolve().then(()=>wl(gc()))),_c=(0,et.lazy)(()=>Promise.resolve().then(()=>wl(Mc()))),Oa=(0,Tc.makeStyles)()(e=>({formControl:{margin:0},container:{marginTop:e.spacing(4),marginBottom:e.spacing(4)}})),Vc=(0,Dc.observer)(function({model:e}){const{classes:t}=Oa(),r=(0,Ac.getSession)(e);return et.default.createElement(Uo.FormControl,{className:t.formControl},et.default.createElement(Uo.IconButton,{onClick:()=>r.queueDialog(o=>[Hc,{handleClose:o}])},et.default.createElement(Rc.default,null)))});function Nc({model:e,feature:t}){const{classes:r}=Oa(),[o,l]=(0,et.useState)(!1);return e?et.default.createElement("div",{className:r.container},et.default.createElement(Uo.Button,{variant:"contained",onClick:()=>l(!o)},o?"Hide feature sequence":"Show feature sequence"),et.default.createElement(Vc,{model:e}),o?et.default.createElement(et.Suspense,{fallback:et.default.createElement($c.LoadingEllipses,null)},et.default.createElement(_c,{key:t.uniqueId,model:e,feature:t})):null):null}Cl.default=Nc;var Oo={},pr={},Gc=X&&X.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(pr,"__esModule",{value:!0});const Ao=Gc(a),zc=Rt,jc=bt,Bc=(0,jc.makeStyles)()(e=>({fieldDescription:{"&:hover":{background:e.palette.mode==="dark"?"#e65100":"yellow"}},fieldName:{wordBreak:"break-all",minWidth:90,borderBottom:"1px solid #0003",fontSize:12,background:e.palette.action.disabledBackground,marginRight:e.spacing(1),padding:e.spacing(.5)}}));function Uc({description:e,name:t,width:r,prefix:o=[]}){const{classes:l,cx:n}=Bc(),i=[...o,t].join(".");return e?Ao.default.createElement(zc.Tooltip,{title:e,placement:"left"},Ao.default.createElement("div",{className:n(l.fieldDescription,l.fieldName)},i)):Ao.default.createElement("div",{className:l.fieldName,style:{width:r}},i)}pr.default=Uc;var Er={},Pa=X&&X.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Er,"__esModule",{value:!0});const eo=Pa(a),qc=bt,Wc=Pa(ho),Kc=Rt,Qc=Kt,Zc=(0,qc.makeStyles)()(e=>({fieldValue:{wordBreak:"break-word",maxHeight:300,fontSize:12,padding:e.spacing(.5),overflow:"auto"}}));function Jc({value:e}){const{classes:t}=Zc(),r=`${e}`.match(/^https?:\/\//);return eo.default.createElement("div",{className:t.fieldValue},eo.default.isValidElement(e)?e:r?eo.default.createElement(Kc.Link,{href:`${e}`},`${e}`):eo.default.createElement(Qc.SanitizedHTML,{html:(0,Wc.default)(e)?JSON.stringify(e):String(e)}))}Er.default=Jc;var Sl=X&&X.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Oo,"__esModule",{value:!0});const Ro=Sl(a),Yc=bt,Xc=Sl(pr),ed=Sl(Er),td=(0,Yc.makeStyles)()({field:{display:"flex",flexWrap:"wrap"}});function rd({name:e,value:t,description:r,prefix:o,width:l}){const{classes:n}=td();return t!=null?Ro.default.createElement("div",{className:n.field},Ro.default.createElement(Xc.default,{prefix:o,description:r,name:e,width:l}),Ro.default.createElement(ed.default,{value:t})):null}Oo.default=rd;var to={},ct={},od=X&&X.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ct,"__esModule",{value:!0});ct.accessNested=ct.generateMaxWidth=ct.generateTitle=ct.isEmpty=void 0;const An=od(ho),Rn=Ht,ld=Ge;function nd(e){return Object.keys(e).length===0}ct.isEmpty=nd;function ad(e,t,r){return[(0,ld.ellipses)(`${e}`||`${t}`),`${r}`].filter(o=>!!o).join(" - ")}ct.generateTitle=ad;function id(e,t){return Math.ceil((0,Rn.max)(e.map(r=>(0,Rn.measureText)([...t,r[0]].join("."),12))))+10}ct.generateMaxWidth=id;function sd(e,t={}){let r=t;return e.forEach(o=>{(0,An.default)(r)&&(r=r[o])}),typeof r=="string"?r:(0,An.default)(r)&&typeof(r==null?void 0:r.Description)=="string"?r.Description:void 0}ct.accessNested=sd;var Ol={};const Pl=a.createContext(void 0);function ce(){const e=a.useContext(Pl);if(e===void 0)throw new Error(["MUI: Could not find the data grid context.","It looks like you rendered your component outside of a DataGrid, DataGridPro or DataGridPremium parent component.","This can also happen if you are bundling multiple versions of the data grid."].join(` -`));return e}const ud=()=>a.useRef({}),xa=a.createContext(void 0),Y=()=>{const e=a.useContext(xa);if(!e)throw new Error("MUI: useGridRootProps should only be used inside the DataGrid, DataGridPro or DataGridPremium component.");return e},va=a.createContext(void 0);function _t(){const e=a.useContext(va);if(e===void 0)throw new Error(["MUI: Could not find the data grid private context.","It looks like you rendered your component outside of a DataGrid, DataGridPro or DataGridPremium parent component.","This can also happen if you are bundling multiple versions of the data grid."].join(` -`));return e}const Hn={};function xl(e,t){const r=a.useRef(Hn);return r.current===Hn&&(r.current=e(t)),r}const cd=[];function Fa(e){a.useEffect(e,cd)}const vt=(e,t="warning")=>{let r=!1;const o=Array.isArray(e)?e.join(` -`):e;return()=>{r||(r=!0,t==="error"?console.error(o):console.warn(o))}},dd=Object.is;function ya(e,t){if(e===t)return!0;if(!(e instanceof Object)||!(t instanceof Object))return!1;let r=0,o=0;for(const l in e)if(r+=1,!dd(e[l],t[l])||!(l in t))return!1;for(const l in t)o+=1;return r===o}vt(["MUI: `useGridSelector` has been called before the initialization of the state.","This hook can only be used inside the context of the grid."]);function pd(e){return e.acceptsApiRef}function _n(e,t){return pd(t)?t(e):t(e.current.state)}const fd=Object.is,vl=ya,gd=()=>({state:null,equals:null,selector:null}),Q=(e,t,r=fd)=>{const o=xl(gd),l=o.current.selector!==null,[n,i]=a.useState(l?null:_n(e,t));return o.current.state=n,o.current.equals=r,o.current.selector=t,Fa(()=>e.current.store.subscribe(()=>{const s=_n(e,o.current.selector);o.current.equals(o.current.state,s)||(o.current.state=s,i(s))})),n};function be(e){return Ru("MuiDataGrid",e)}const V=fa("MuiDataGrid",["actionsCell","aggregationColumnHeader","aggregationColumnHeader--alignLeft","aggregationColumnHeader--alignCenter","aggregationColumnHeader--alignRight","aggregationColumnHeaderLabel","autoHeight","autosizing","booleanCell","cell--editable","cell--editing","cell--textCenter","cell--textLeft","cell--textRight","cell--withRenderer","cell--rangeTop","cell--rangeBottom","cell--rangeLeft","cell--rangeRight","cell--selectionMode","cell","cellContent","cellCheckbox","cellSkeleton","checkboxInput","columnHeader--alignCenter","columnHeader--alignLeft","columnHeader--alignRight","columnHeader--dragging","columnHeader--moving","columnHeader--numeric","columnHeader--sortable","columnHeader--sorted","columnHeader--filtered","columnHeader","columnHeaderCheckbox","columnHeaderDraggableContainer","columnHeaderDropZone","columnHeaderTitle","columnHeaderTitleContainer","columnHeaderTitleContainerContent","columnGroupHeader","columnHeader--filledGroup","columnHeader--emptyGroup","columnHeader--showColumnBorder","columnHeaders","columnHeadersInner","columnHeadersInner--scrollable","columnSeparator--resizable","columnSeparator--resizing","columnSeparator--sideLeft","columnSeparator--sideRight","columnSeparator","columnsPanel","columnsPanelRow","detailPanel","detailPanels","detailPanelToggleCell","detailPanelToggleCell--expanded","footerCell","panel","panelHeader","panelWrapper","panelContent","panelFooter","paper","editBooleanCell","editInputCell","filterForm","filterFormDeleteIcon","filterFormLogicOperatorInput","filterFormColumnInput","filterFormOperatorInput","filterFormValueInput","filterIcon","footerContainer","headerFilterRow","iconButtonContainer","iconSeparator","main","menu","menuIcon","menuIconButton","menuOpen","menuList","overlay","overlayWrapper","overlayWrapperInner","root","root--densityStandard","root--densityComfortable","root--densityCompact","root--disableUserSelection","row","row--editable","row--editing","row--lastVisible","row--dragging","row--dynamicHeight","row--detailPanelExpanded","rowReorderCellPlaceholder","rowCount","rowReorderCellContainer","rowReorderCell","rowReorderCell--draggable","scrollArea--left","scrollArea--right","scrollArea","selectedRowCount","sortIcon","toolbarContainer","toolbarFilterList","virtualScroller","virtualScrollerContent","virtualScrollerContent--overflowed","virtualScrollerRenderZone","pinnedColumns","pinnedColumns--left","pinnedColumns--right","pinnedColumnHeaders","pinnedColumnHeaders--left","pinnedColumnHeaders--right","withBorderColor","cell--withRightBorder","columnHeader--withRightBorder","treeDataGroupingCell","treeDataGroupingCellToggle","groupingCriteriaCell","groupingCriteriaCellToggle","pinnedRows","pinnedRows--top","pinnedRows--bottom","pinnedRowsRenderZone"]);var io="NOT_FOUND";function md(e){var t;return{get:function(o){return t&&e(t.key,o)?t.value:io},put:function(o,l){t={key:o,value:l}},getEntries:function(){return t?[t]:[]},clear:function(){t=void 0}}}function bd(e,t){var r=[];function o(s){var u=r.findIndex(function(c){return t(s,c.key)});if(u>-1){var d=r[u];return u>0&&(r.splice(u,1),r.unshift(d)),d.value}return io}function l(s,u){o(s)===io&&(r.unshift({key:s,value:u}),r.length>e&&r.pop())}function n(){return r}function i(){r=[]}return{get:o,put:l,getEntries:n,clear:i}}var hd=function(t,r){return t===r};function Cd(e){return function(r,o){if(r===null||o===null||r.length!==o.length)return!1;for(var l=r.length,n=0;n1?t-1:0),o=1;o{if(i.length>0)throw new Error("Unsupported number of selectors");let s;if(e&&t&&r&&o&&l&&n)s=(u,d)=>{const c=er(u),p=d??(c?u.current.instanceId:tr),f=c?u.current.state:u,b=e(f,p),g=t(f,p),h=r(f,p),x=o(f,p),S=l(f,p);return n(b,g,h,x,S)};else if(e&&t&&r&&o&&l)s=(u,d)=>{const c=er(u),p=d??(c?u.current.instanceId:tr),f=c?u.current.state:u,b=e(f,p),g=t(f,p),h=r(f,p),x=o(f,p);return l(b,g,h,x)};else if(e&&t&&r&&o)s=(u,d)=>{const c=er(u),p=d??(c?u.current.instanceId:tr),f=c?u.current.state:u,b=e(f,p),g=t(f,p),h=r(f,p);return o(b,g,h)};else if(e&&t&&r)s=(u,d)=>{const c=er(u),p=d??(c?u.current.instanceId:tr),f=c?u.current.state:u,b=e(f,p),g=t(f,p);return r(b,g)};else if(e&&t)s=(u,d)=>{const c=er(u),p=d??(c?u.current.instanceId:tr),f=c?u.current.state:u,b=e(f,p);return t(b)};else throw new Error("Missing arguments");return s.acceptsApiRef=!0,s},Te=(...e)=>{const t=(...r)=>{var o,l;const[n,i]=r,s=er(n),u=s?n.current.instanceId:i??tr,d=s?n.current.state:n,{cache:c}=Pd;if(c.get(u)&&(o=c.get(u))!=null&&o.get(e)){var p;return(p=c.get(u))==null?void 0:p.get(e)(d,u)}const f=Od(...e);return c.get(u)||c.set(u,new Map),(l=c.get(u))==null||l.set(e,f),f(d,u)};return t.acceptsApiRef=!0,t},Bt=e=>e.columns,Pt=pe(Bt,e=>e.orderedFields),Vt=pe(Bt,e=>e.lookup),ft=Te(Pt,Vt,(e,t)=>e.map(r=>t[r])),at=pe(Bt,e=>e.columnVisibilityModel),He=Te(ft,at,(e,t)=>e.filter(r=>t[r.field]!==!1)),Lr=Te(He,e=>e.map(t=>t.field)),qt=Te(He,e=>{const t=[];let r=0;for(let o=0;o{const r=e.length;return r===0?0:t[r-1]+e[r-1].computedWidth}),Fl=Te(ft,e=>e.filter(t=>t.filterable)),Ia=Te(ft,e=>e.reduce((t,r)=>(r.filterable&&(t[r.field]=r),t),{})),Tr=e=>e.columnGrouping,Ma=Te(Tr,e=>{var t;return(t=e==null?void 0:e.unwrappedGroupingModel)!=null?t:{}}),yl=Te(Tr,e=>{var t;return(t=e==null?void 0:e.lookup)!=null?t:{}}),ka=Te(Tr,e=>{var t;return(t=e==null?void 0:e.headerStructure)!=null?t:[]}),fr=pe(Tr,e=>{var t;return(t=e==null?void 0:e.maxDepth)!=null?t:0}),ht=e=>e.rows,Dr=pe(ht,e=>e.totalRowCount),Ea=pe(ht,e=>e.loading),La=pe(ht,e=>e.totalTopLevelRowCount),Ot=pe(ht,e=>e.dataRowIdToModelLookup),Or=pe(ht,e=>e.dataRowIdToIdLookup),nt=pe(ht,e=>e.tree),Ta=pe(ht,e=>e.groupingName),qo=pe(ht,e=>e.treeDepths),$r=Te(ht,e=>{const t=Object.entries(e.treeDepths);return t.length===0?1:t.filter(([,r])=>r>0).map(([r])=>Number(r)).sort((r,o)=>o-r)[0]+1}),or=pe(ht,e=>e.dataRowIds),xd=pe(ht,e=>e==null?void 0:e.additionalRowGroups),gr=Te(xd,e=>{var t,r;const o=e==null?void 0:e.pinnedRows;return{bottom:o==null||(t=o.bottom)==null?void 0:t.map(l=>{var n;return{id:l.id,model:(n=l.model)!=null?n:{}}}),top:o==null||(r=o.top)==null?void 0:r.map(l=>{var n;return{id:l.id,model:(n=l.model)!=null?n:{}}})}}),vd=pe(gr,e=>{var t,r;return((e==null||(t=e.top)==null?void 0:t.length)||0)+((e==null||(r=e.bottom)==null?void 0:r.length)||0)}),Da=()=>{var e;const t=_t(),r=Y(),o=Q(t,He),l=Q(t,Dr),n=Q(t,fr),i=Q(t,vd);let s="grid";return(e=r.experimentalFeatures)!=null&&e.ariaV7&&r.treeData&&(s="treegrid"),{role:s,"aria-colcount":o.length,"aria-rowcount":n+1+i+l,"aria-multiselectable":!r.disableMultipleRowSelection}},Fd=e=>{const{classes:t}=e;return he({root:["main"]},be,t)},yd=_e("div",{name:"MuiDataGrid",slot:"Main",overridesResolver:(e,t)=>t.main})(()=>({position:"relative",flexGrow:1,display:"flex",flexDirection:"column",overflow:"hidden"})),Id=a.forwardRef((e,t)=>{var r;const o=Y(),l=Fd(o),n=(r=o.experimentalFeatures)!=null&&r.ariaV7?Da:null,i=typeof n=="function"?n():null;return v.jsx(yd,m({ref:t,className:l.root,ownerState:o},i,{children:e.children}))}),$a=e=>e.sorting,vo=pe($a,e=>e.sortedRows),Fo=Te(vo,Ot,(e,t)=>e.map(r=>{var o;return{id:r,model:(o=t[r])!=null?o:{}}})),tt=pe($a,e=>e.sortModel),Aa=Te(tt,e=>e.reduce((r,o,l)=>(r[o.field]={sortDirection:o.sort,sortIndex:e.length>1?l+1:void 0},r),{})),Il=e=>e.filter,Re=pe(Il,e=>e.filterModel),Ra=pe(Re,e=>e.quickFilterValues),Ha=e=>e.visibleRowsLookup,Ml=pe(Il,e=>e.filteredRowsLookup),Md=pe(Il,e=>e.filteredDescendantCountLookup),Mt=Te(Ha,Fo,(e,t)=>t.filter(r=>e[r.id]!==!1)),ar=Te(Mt,e=>e.map(t=>t.id)),_a=Te(Ml,Fo,(e,t)=>t.filter(r=>e[r.id]!==!1)),Va=Te(_a,e=>e.map(t=>t.id)),kl=Te(Mt,nt,$r,(e,t,r)=>r<2?e:e.filter(o=>{var l;return((l=t[o.id])==null?void 0:l.depth)===0})),El=pe(Mt,e=>e.length),Ar=pe(kl,e=>e.length),Ll=Te(Re,Vt,(e,t)=>{var r;return(r=e.items)==null?void 0:r.filter(o=>{var l,n;if(!o.field)return!1;const i=t[o.field];if(!(i!=null&&i.filterOperators)||(i==null||(l=i.filterOperators)==null?void 0:l.length)===0)return!1;const s=i.filterOperators.find(u=>u.value===o.operator);return s?!s.InputComponent||o.value!=null&&((n=o.value)==null?void 0:n.toString())!=="":!1})}),Na=Te(Ll,e=>e.reduce((r,o)=>(r[o.field]?r[o.field].push(o):r[o.field]=[o],r),{})),Rr=e=>e.focus,Ze=pe(Rr,e=>e.cell),Ga=pe(Rr,e=>e.columnHeader),kd=pe(Rr,e=>e.columnHeaderFilter),Pr=pe(Rr,e=>e.columnGroupHeader),Hr=e=>e.tabIndex,xr=pe(Hr,e=>e.cell),Tl=pe(Hr,e=>e.columnHeader),Ed=pe(Hr,e=>e.columnHeaderFilter),za=pe(Hr,e=>e.columnGroupHeader),yo=e=>e.density,Dl=pe(yo,e=>e.value),Qt=pe(yo,e=>e.factor),so=e=>e.columnMenu;function ja(e){const{VirtualScrollerComponent:t,ColumnHeadersProps:r,children:o}=e,l=_t(),n=Y(),i=a.useRef(null),s=Q(l,He),u=Q(l,Na),d=Q(l,Aa),c=Q(l,qt),p=Q(l,Tl),f=Q(l,xr),b=Q(l,za),g=Q(l,Ga),h=Q(l,Pr),x=Q(l,Qt),S=Q(l,fr),C=Q(l,so),E=Q(l,at),T=Q(l,ka),_=!(b===null&&p===null&&f===null);ze(()=>{l.current.computeSizeAndPublishResizeEvent();const A=i.current;if(typeof ResizeObserver>"u")return()=>{};let P;const R=new ResizeObserver(()=>{P=requestAnimationFrame(()=>{l.current.computeSizeAndPublishResizeEvent()})});return A&&R.observe(A),()=>{P&&window.cancelAnimationFrame(P),A&&R.unobserve(A)}},[l]);const F=a.useRef(null),L=a.useRef(null),k=a.useRef(null);l.current.register("private",{columnHeadersContainerElementRef:L,columnHeadersElementRef:F,virtualScrollerRef:k,mainElementRef:i});const H=!!l.current.getRootDimensions();return v.jsxs(Id,{ref:i,children:[v.jsx(n.slots.columnHeaders,m({ref:L,innerRef:F,visibleColumns:s,filterColumnLookup:u,sortColumnLookup:d,columnPositions:c,columnHeaderTabIndexState:p,columnGroupHeaderTabIndexState:b,columnHeaderFocus:g,columnGroupHeaderFocus:h,densityFactor:x,headerGroupingMaxDepth:S,columnMenuState:C,columnVisibility:E,columnGroupsHeaderStructure:T,hasOtherElementInTabSequence:_},r)),H&&v.jsx(t,{ref:k}),o]})}function Ba(){var e;const t=Y();return t.hideFooter?null:v.jsx(t.slots.footer,m({},(e=t.slotProps)==null?void 0:e.footer))}const Ue="auto-generated-group-node-root",ir=Symbol("mui.id_autogenerated"),Ld=()=>({type:"group",id:Ue,depth:-1,groupingField:null,groupingKey:null,isAutoGenerated:!0,children:[],childrenFromPath:{},childrenExpanded:!0,parent:null});function Ua(e,t,r="A row was provided without id in the rows prop:"){if(e==null)throw new Error(["MUI: The data grid component requires all rows to have a unique `id` property.","Alternatively, you can use the `getRowId` prop to specify a custom id for each row.",r,JSON.stringify(t)].join(` -`))}const uo=(e,t,r)=>{const o=t?t(e):e.id;return Ua(o,e,r),o},oo=({rows:e,getRowId:t,loading:r,rowCount:o})=>{const l={type:"full",rows:[]},n={},i={};for(let s=0;s{const r=e[Ue];return Math.max(t,r.children.length+(r.footerId==null?0:1))},Wa=({apiRef:e,rowCountProp:t=0,loadingProp:r,previousTree:o,previousTreeDepths:l})=>{const n=e.current.caches.rows,{tree:i,treeDepths:s,dataRowIds:u,groupingName:d}=e.current.applyStrategyProcessor("rowTreeCreation",{previousTree:o,previousTreeDepths:l,updates:n.updates,dataRowIdToIdLookup:n.dataRowIdToIdLookup,dataRowIdToModelLookup:n.dataRowIdToModelLookup}),c=e.current.unstable_applyPipeProcessors("hydrateRows",{tree:i,treeDepths:s,dataRowIdToIdLookup:n.dataRowIdToIdLookup,dataRowIds:u,dataRowIdToModelLookup:n.dataRowIdToModelLookup});return e.current.caches.rows.updates={type:"partial",actions:{insert:[],modify:[],remove:[]},idToActionLookup:{}},m({},c,{totalRowCount:Math.max(t,c.dataRowIds.length),totalTopLevelRowCount:qa({tree:c.tree,rowCountProp:t}),groupingName:d,loading:r})},vr=e=>e.type==="skeletonRow"||e.type==="footer"||e.type==="group"&&e.isAutoGenerated||e.type==="pinnedRow"&&e.isAutoGenerated,$l=(e,t,r)=>{const o=e[t];if(o.type!=="group")return[];const l=[];for(let n=0;n{var o,l,n;if(e.updates.type==="full")throw new Error("MUI: Unable to prepare a partial update if a full update is not applied yet");const i=new Map;r.forEach(f=>{const b=uo(f,t,"A row was provided without id when calling updateRows():");i.has(b)?i.set(b,m({},i.get(b),f)):i.set(b,f)});const s={type:"partial",actions:{insert:[...(o=e.updates.actions.insert)!=null?o:[]],modify:[...(l=e.updates.actions.modify)!=null?l:[]],remove:[...(n=e.updates.actions.remove)!=null?n:[]]},idToActionLookup:m({},e.updates.idToActionLookup)},u=m({},e.dataRowIdToModelLookup),d=m({},e.dataRowIdToIdLookup),c={insert:{},modify:{},remove:{}};i.forEach((f,b)=>{const g=s.idToActionLookup[b];if(f._action==="delete"){if(g==="remove"||!u[b])return;g!=null&&(c[g][b]=!0),s.actions.remove.push(b),delete u[b],delete d[b];return}const h=u[b];if(h){g==="remove"?(c.remove[b]=!0,s.actions.modify.push(b)):g==null&&s.actions.modify.push(b),u[b]=m({},h,f);return}g==="remove"?(c.remove[b]=!0,s.actions.insert.push(b)):g==null&&s.actions.insert.push(b),u[b]=f,d[b]=b});const p=Object.keys(c);for(let f=0;f0&&(s.actions[b]=s.actions[b].filter(h=>!g[h]))}return{dataRowIdToModelLookup:u,dataRowIdToIdLookup:d,updates:s,rowsBeforePartialUpdates:e.rowsBeforePartialUpdates,loadingPropBeforePartialUpdates:e.loadingPropBeforePartialUpdates,rowCountPropBeforePartialUpdates:e.rowCountPropBeforePartialUpdates}};function Ka(e){var t,r;const o=gr(e),l=(o==null||(t=o.top)==null?void 0:t.reduce((i,s)=>(i+=e.current.unstable_getRowHeight(s.id),i),0))||0,n=(o==null||(r=o.bottom)==null?void 0:r.reduce((i,s)=>(i+=e.current.unstable_getRowHeight(s.id),i),0))||0;return{top:l,bottom:n}}function Qa(e,t){const r=Qt(e);return`var(--DataGrid-overlayHeight, ${2*Math.floor(t*r)}px)`}const Dd=_e("div",{name:"MuiDataGrid",slot:"OverlayWrapper",shouldForwardProp:e=>e!=="overlayType",overridesResolver:(e,t)=>t.overlayWrapper})(({overlayType:e})=>({position:"sticky",top:0,left:0,width:0,height:0,zIndex:e==="loadingOverlay"?5:4})),$d=_e("div",{name:"MuiDataGrid",slot:"OverlayWrapperInner",shouldForwardProp:e=>e!=="overlayType",overridesResolver:(e,t)=>t.overlayWrapperInner})({}),Ad=e=>{const{classes:t}=e;return he({root:["overlayWrapper"],inner:["overlayWrapperInner"]},be,t)};function Rd(e){var t,r;const o=ce(),l=Y(),[n,i]=a.useState(()=>{var c,p;return(c=(p=o.current.getRootDimensions())==null?void 0:p.viewportInnerSize)!=null?c:null}),s=a.useCallback(()=>{var c,p;i((c=(p=o.current.getRootDimensions())==null?void 0:p.viewportInnerSize)!=null?c:null)},[o]);ze(()=>o.current.subscribeEvent("viewportInnerSizeChange",s),[o,s]);let u=(t=n==null?void 0:n.height)!=null?t:0;l.autoHeight&&u===0&&(u=Qa(o,l.rowHeight));const d=Ad(m({},e,{classes:l.classes}));return n?v.jsx(Dd,{className:xe(d.root),overlayType:e.overlayType,children:v.jsx($d,m({className:xe(d.inner),style:{height:u,width:(r=n==null?void 0:n.width)!=null?r:0}},e))}):null}function Za(){const e=ce(),t=Y(),r=Q(e,Dr),o=Q(e,El),l=Q(e,Ea),n=!l&&r===0,i=!l&&r>0&&o===0;let s=null,u="";if(n){var d;s=v.jsx(t.slots.noRowsOverlay,m({},(d=t.slotProps)==null?void 0:d.noRowsOverlay)),u="noRowsOverlay"}if(i){var c;s=v.jsx(t.slots.noResultsOverlay,m({},(c=t.slotProps)==null?void 0:c.noResultsOverlay)),u="noResultsOverlay"}if(l){var p;s=v.jsx(t.slots.loadingOverlay,m({},(p=t.slotProps)==null?void 0:p.loadingOverlay)),u="loadingOverlay"}return s===null?null:v.jsx(Rd,{overlayType:u,children:s})}function Io(e){return a.memo(e,ya)}let Ho;function Ja(){return Ho===void 0&&document.createElement("div").focus({get preventScroll(){return Ho=!0,!1}}),Ho}var mt=function(e){return e.Cell="cell",e.Row="row",e}(mt||{}),ye=function(e){return e.Edit="edit",e.View="view",e}(ye||{}),ke=function(e){return e.Edit="edit",e.View="view",e}(ke||{}),Ke=function(e){return e.And="and",e.Or="or",e}(Ke||{}),wt=function(e){return e.enterKeyDown="enterKeyDown",e.cellDoubleClick="cellDoubleClick",e.printableKeyDown="printableKeyDown",e.deleteKeyDown="deleteKeyDown",e.pasteKeyDown="pasteKeyDown",e}(wt||{}),lt=function(e){return e.cellFocusOut="cellFocusOut",e.escapeKeyDown="escapeKeyDown",e.enterKeyDown="enterKeyDown",e.tabKeyDown="tabKeyDown",e.shiftTabKeyDown="shiftTabKeyDown",e}(lt||{}),Ft=function(e){return e.enterKeyDown="enterKeyDown",e.cellDoubleClick="cellDoubleClick",e.printableKeyDown="printableKeyDown",e.deleteKeyDown="deleteKeyDown",e}(Ft||{}),St=function(e){return e.rowFocusOut="rowFocusOut",e.escapeKeyDown="escapeKeyDown",e.enterKeyDown="enterKeyDown",e.tabKeyDown="tabKeyDown",e.shiftTabKeyDown="shiftTabKeyDown",e}(St||{});function Al(e){return e.field!==void 0}function Hd(e){return e.scrollHeight>e.clientHeight||e.scrollWidth>e.clientWidth}function _d(e,t){return e.closest(`.${t}`)}function Rl(e){return e.replace(/["\\]/g,"\\$&")}function Vd(e,t){return e.querySelector(`[role="columnheader"][data-field="${Rl(t)}"]`)}function Ya(e){return`.${V.row}[data-id="${Rl(String(e))}"]`}function Nd(e,t){return e.querySelector(Ya(t))}function Gd(e,{id:t,field:r}){const o=Ya(t),l=`.${V.cell}[data-field="${Rl(r)}"]`,n=`${o} ${l}`;return e.querySelector(n)}function _r(e){return e.target.nodeType===1&&!e.currentTarget.contains(e.target)}function me(e,t,r){const o=a.useRef(!0);a.useEffect(()=>{o.current=!1,e.current.register(r,t)},[e,r,t]),o.current&&e.current.register(r,t)}class lr extends Error{}function zd(e,t){const{getRowId:r}=t,o=a.useCallback(g=>({field:g,colDef:e.current.getColumn(g)}),[e]),l=a.useCallback(g=>{const h=e.current.getRow(g);if(!h)throw new lr(`No row with id #${g} found`);return{id:g,columns:e.current.getAllColumns(),row:h}},[e]),n=a.useCallback((g,h)=>{const x=e.current.getRow(g),S=e.current.getRowNode(g);if(!x||!S)throw new lr(`No row with id #${g} found`);const C=Ze(e),E=xr(e);return{id:g,field:h,row:x,rowNode:S,value:x[h],colDef:e.current.getColumn(h),cellMode:e.current.getCellMode(g,h),api:e.current,hasFocus:C!==null&&C.field===h&&C.id===g,tabIndex:E&&E.field===h&&E.id===g?0:-1}},[e]),i=a.useCallback((g,h)=>{const x=e.current.getColumn(h),S=e.current.getCellValue(g,h),C=e.current.getRow(g),E=e.current.getRowNode(g);if(!C||!E)throw new lr(`No row with id #${g} found`);const T=Ze(e),_=xr(e),F={id:g,field:h,row:C,rowNode:E,colDef:x,cellMode:e.current.getCellMode(g,h),hasFocus:T!==null&&T.field===h&&T.id===g,tabIndex:_&&_.field===h&&_.id===g?0:-1,value:S,formattedValue:S,isEditable:!1};return x&&x.valueFormatter&&(F.formattedValue=x.valueFormatter({id:g,field:F.field,value:F.value,api:e.current})),F.isEditable=x&&e.current.isCellEditable(F),F},[e]),s=a.useCallback((g,h)=>{const x=e.current.getColumn(h);if(!x||!x.valueGetter){const S=e.current.getRow(g);if(!S)throw new lr(`No row with id #${g} found`);return S[h]}return x.valueGetter(n(g,h))},[e,n]),u=a.useCallback((g,h)=>{var x;const S=ir in g?g[ir]:(x=r==null?void 0:r(g))!=null?x:g.id,C=h.field;return!h||!h.valueGetter?g[C]:h.valueGetter(n(S,C))},[n,r]),d=a.useCallback((g,h)=>{var x;const S=u(g,h);if(!h||!h.valueFormatter)return S;const C=(x=r?r(g):g.id)!=null?x:g[ir],E=h.field;return h.valueFormatter({id:C,field:E,value:S,api:e.current})},[e,r,u]),c=a.useCallback(g=>e.current.rootElementRef.current?Vd(e.current.rootElementRef.current,g):null,[e]),p=a.useCallback(g=>e.current.rootElementRef.current?Nd(e.current.rootElementRef.current,g):null,[e]),f=a.useCallback((g,h)=>e.current.rootElementRef.current?Gd(e.current.rootElementRef.current,{id:g,field:h}):null,[e]);me(e,{getCellValue:s,getCellParams:i,getCellElement:f,getRowValue:u,getRowFormattedValue:d,getRowParams:l,getRowElement:p,getColumnHeaderParams:o,getColumnHeaderElement:c},"public")}const jd=["changeReason","unstable_updateValueOnRender"],Bd=["align","children","editCellState","colIndex","column","cellMode","field","formattedValue","hasFocus","height","isEditable","isSelected","rowId","tabIndex","style","value","width","className","showRightBorder","extendRowFullWidth","row","colSpan","disableDragEvents","isNotVisible","onClick","onDoubleClick","onMouseDown","onMouseUp","onMouseOver","onKeyDown","onKeyUp","onDragEnter","onDragOver"],Ud=["column","rowId","editCellState","align","children","colIndex","height","width","className","showRightBorder","extendRowFullWidth","row","colSpan","disableDragEvents","isNotVisible","onClick","onDoubleClick","onMouseDown","onMouseUp","onMouseOver","onKeyDown","onKeyUp","onDragEnter","onDragOver","style"],qd=["changeReason","unstable_updateValueOnRender"],co={id:-1,field:"__unset__",row:{},rowNode:{id:-1,depth:0,type:"leaf",parent:-1,groupingKey:null},colDef:{type:"string",field:"__unset__",computedWidth:0},cellMode:ye.View,hasFocus:!1,tabIndex:-1,value:null,formattedValue:"__unset__",isEditable:!1,api:{}},Xa=e=>{const{align:t,showRightBorder:r,isEditable:o,isSelected:l,isSelectionMode:n,classes:i}=e,s={root:["cell",`cell--text${$t(t)}`,o&&"cell--editable",l&&"selected",r&&"cell--withRightBorder",n&&!o&&"cell--selectionMode","withBorderColor"],content:["cellContent"]};return he(s,be,i)},Wd=a.forwardRef((e,t)=>{const{column:r,rowId:o,editCellState:l}=e,n=ce(),i=Y(),s=r.field,u=Q(n,()=>{try{const H=n.current.getCellParams(o,s);return H.api=n.current,H}catch(k){if(k instanceof lr)return co;throw k}},vl),d=Q(n,()=>n.current.unstable_applyPipeProcessors("isCellSelected",!1,{id:o,field:s}));if(u===co)return null;const{cellMode:c,hasFocus:p,isEditable:f,value:b,formattedValue:g}=u,h=r.type==="actions",x=(c==="view"||!f)&&!h?u.tabIndex:-1,{classes:S,getCellClassName:C}=i,E=n.current.unstable_applyPipeProcessors("cellClassName",[],{id:o,field:s});r.cellClassName&&E.push(typeof r.cellClassName=="function"?r.cellClassName(u):r.cellClassName),C&&E.push(C(u));let T;if(l==null&&r.renderCell&&(T=r.renderCell(u),E.push(V["cell--withRenderer"]),E.push(S==null?void 0:S["cell--withRenderer"])),l!=null&&r.renderEditCell){const k=n.current.getRowWithUpdatedValues(o,r.field),H=Z(l,jd),A=m({},u,{row:k},H);T=r.renderEditCell(A),E.push(V["cell--editing"]),E.push(S==null?void 0:S["cell--editing"])}const{slots:_}=i,F=_.cell,L=m({},e,{ref:t,field:s,formattedValue:g,hasFocus:p,isEditable:f,isSelected:d,value:b,cellMode:c,children:T,tabIndex:x,className:xe(E)});return a.createElement(F,L)}),Kd=a.forwardRef((e,t)=>{var r;const{align:o,children:l,colIndex:n,column:i,cellMode:s,field:u,formattedValue:d,hasFocus:c,height:p,isEditable:f,isSelected:b,rowId:g,tabIndex:h,style:x,value:S,width:C,className:E,showRightBorder:T,colSpan:_,disableDragEvents:F,isNotVisible:L,onClick:k,onDoubleClick:H,onMouseDown:A,onMouseUp:P,onMouseOver:R,onKeyDown:y,onKeyUp:w,onDragEnter:O,onDragOver:M}=e,D=Z(e,Bd),I=d??S,$=a.useRef(null),N=xt(t,$),j=a.useRef(null),G=ce(),U=Y(),K={align:o,showRightBorder:T,isEditable:f,classes:U.classes,isSelected:b},J=Xa(K),ee=a.useCallback(de=>B=>{const q=G.current.getCellParams(g,u||"");G.current.publishEvent(de,q,B),P&&P(B)},[G,u,P,g]),le=a.useCallback(de=>B=>{const q=G.current.getCellParams(g,u||"");G.current.publishEvent(de,q,B),A&&A(B)},[G,u,A,g]),Ce=a.useCallback((de,B)=>q=>{if(!G.current.getRow(g))return;const ae=G.current.getCellParams(g,u||"");G.current.publishEvent(de,ae,q),B&&B(q)},[G,u,g]),ve=a.useMemo(()=>L?{padding:0,opacity:0,width:0,border:0}:m({minWidth:C,maxWidth:C,minHeight:p,maxHeight:p==="auto"?"none":p},x),[C,p,L,x]);a.useEffect(()=>{if(!c||s===ye.Edit)return;const de=Mr(G.current.rootElementRef.current);if($.current&&!$.current.contains(de.activeElement)){const B=$.current.querySelector('[tabindex="0"]'),q=j.current||B||$.current;if(Ja())q.focus({preventScroll:!0});else{const ae=G.current.getScrollPosition();q.focus(),G.current.scroll(ae)}}},[c,s,G]);let se=D.onFocus;const ie=i.type==="actions";let ue=l;if(ue===void 0){const de=I==null?void 0:I.toString();ue=v.jsx("div",{className:J.content,title:de,role:"presentation",children:de})}a.isValidElement(ue)&&ie&&(ue=a.cloneElement(ue,{focusElementRef:j}));const we=F?null:{onDragEnter:Ce("cellDragEnter",O),onDragOver:Ce("cellDragOver",M)},Fe=(r=U.experimentalFeatures)==null?void 0:r.ariaV7;return v.jsx("div",m({ref:N,className:xe(E,J.root),role:Fe?"gridcell":"cell","data-field":u,"data-colindex":n,"aria-colindex":n+1,"aria-colspan":_,style:ve,tabIndex:h,onClick:Ce("cellClick",k),onDoubleClick:Ce("cellDoubleClick",H),onMouseOver:Ce("cellMouseOver",R),onMouseDown:le("cellMouseDown"),onMouseUp:ee("cellMouseUp"),onKeyDown:Ce("cellKeyDown",y),onKeyUp:Ce("cellKeyUp",w)},we,D,{onFocus:se,children:ue}))}),Qd=Io(Wd),Zd=a.forwardRef((e,t)=>{var r,o,l,n;const{column:i,rowId:s,editCellState:u,align:d,colIndex:c,height:p,width:f,className:b,showRightBorder:g,colSpan:h,disableDragEvents:x,isNotVisible:S,onClick:C,onDoubleClick:E,onMouseDown:T,onMouseUp:_,onMouseOver:F,onKeyDown:L,onKeyUp:k,onDragEnter:H,onDragOver:A,style:P}=e,R=Z(e,Ud),y=ce(),w=Y(),O=i.field,M=Q(y,()=>{try{const te=y.current.getCellParams(s,O);return te.api=y.current,te}catch(W){if(W instanceof lr)return co;throw W}},vl),D=Q(y,()=>y.current.unstable_applyPipeProcessors("isCellSelected",!1,{id:s,field:O})),{cellMode:I,hasFocus:$,isEditable:N,value:j,formattedValue:G}=M,U=i.type==="actions"&&((r=(o=i).getActions)==null?void 0:r.call(o,y.current.getRowParams(s)).some(W=>!W.props.disabled)),K=(I==="view"||!N)&&!U?M.tabIndex:-1,{classes:J,getCellClassName:ee}=w,le=y.current.unstable_applyPipeProcessors("cellClassName",[],{id:s,field:O});i.cellClassName&&le.push(typeof i.cellClassName=="function"?i.cellClassName(M):i.cellClassName),ee&&le.push(ee(M));const Ce=G??j,ve=a.useRef(null),se=xt(t,ve),ie=a.useRef(null),ue=(l=w.unstable_cellSelection)!=null?l:!1,we={align:d,showRightBorder:g,isEditable:N,classes:w.classes,isSelected:D,isSelectionMode:ue},Fe=Xa(we),de=a.useCallback(W=>te=>{const oe=y.current.getCellParams(s,O||"");y.current.publishEvent(W,oe,te),_&&_(te)},[y,O,_,s]),B=a.useCallback(W=>te=>{const oe=y.current.getCellParams(s,O||"");y.current.publishEvent(W,oe,te),T&&T(te)},[y,O,T,s]),q=a.useCallback((W,te)=>oe=>{if(!y.current.getRow(s))return;const Oe=y.current.getCellParams(s,O||"");y.current.publishEvent(W,Oe,oe),te&&te(oe)},[y,O,s]),ae=a.useMemo(()=>S?m({padding:0,opacity:0,width:0,border:0},P):m({minWidth:f,maxWidth:f,minHeight:p,maxHeight:p==="auto"?"none":p},P),[f,p,S,P]);if(a.useEffect(()=>{if(!$||I===ye.Edit)return;const W=Mr(y.current.rootElementRef.current);if(ve.current&&!ve.current.contains(W.activeElement)){const te=ve.current.querySelector('[tabindex="0"]'),oe=ie.current||te||ve.current;if(Ja())oe.focus({preventScroll:!0});else{const Oe=y.current.getScrollPosition();oe.focus(),y.current.scroll(Oe)}}},[$,I,y]),M===co)return null;let fe=R.onFocus,ge;if(u==null&&i.renderCell&&(ge=i.renderCell(M),le.push(V["cell--withRenderer"]),le.push(J==null?void 0:J["cell--withRenderer"])),u!=null&&i.renderEditCell){const W=y.current.getRowWithUpdatedValues(s,i.field),te=Z(u,qd),oe=m({},M,{row:W},te);ge=i.renderEditCell(oe),le.push(V["cell--editing"]),le.push(J==null?void 0:J["cell--editing"])}if(ge===void 0){const W=Ce==null?void 0:Ce.toString();ge=v.jsx("div",{className:Fe.content,title:W,role:"presentation",children:W})}a.isValidElement(ge)&&U&&(ge=a.cloneElement(ge,{focusElementRef:ie}));const Se=x?null:{onDragEnter:q("cellDragEnter",H),onDragOver:q("cellDragOver",A)},ne=(n=w.experimentalFeatures)==null?void 0:n.ariaV7;return v.jsx("div",m({ref:se,className:xe(b,le,Fe.root),role:ne?"gridcell":"cell","data-field":O,"data-colindex":c,"aria-colindex":c+1,"aria-colspan":h,style:ae,tabIndex:K,onClick:q("cellClick",C),onDoubleClick:q("cellDoubleClick",E),onMouseOver:q("cellMouseOver",F),onMouseDown:B("cellMouseDown"),onMouseUp:de("cellMouseUp"),onKeyDown:q("cellKeyDown",L),onKeyUp:q("cellKeyUp",k)},Se,R,{onFocus:fe,children:ge}))}),Wo=Io(Zd),Jd=["id","value","formattedValue","api","field","row","rowNode","colDef","cellMode","isEditable","hasFocus","tabIndex"],Yd=e=>{const{classes:t}=e;return he({root:["booleanCell"]},be,t)};function Xd(e){const{value:t}=e,r=Z(e,Jd),o=ce(),l=Y(),n={classes:l.classes},i=Yd(n),s=a.useMemo(()=>t?l.slots.booleanCellTrueIcon:l.slots.booleanCellFalseIcon,[l.slots.booleanCellFalseIcon,l.slots.booleanCellTrueIcon,t]);return v.jsx(s,m({fontSize:"small",className:i.root,titleAccess:o.current.getLocaleText(t?"booleanCellTrueLabel":"booleanCellFalseLabel"),"data-value":!!t},r))}const ei=a.memo(Xd),ti=e=>vr(e.rowNode)?"":v.jsx(ei,m({},e)),ep=["id","value","formattedValue","api","field","row","rowNode","colDef","cellMode","isEditable","tabIndex","className","hasFocus","isValidating","isProcessingProps","error","onValueChange"],tp=e=>{const{classes:t}=e;return he({root:["editBooleanCell"]},be,t)};function ri(e){var t;const{id:r,value:o,field:l,className:n,hasFocus:i,onValueChange:s}=e,u=Z(e,ep),d=ce(),c=a.useRef(null),p=Ie(),[f,b]=a.useState(o),g=Y(),h={classes:g.classes},x=tp(h),S=a.useCallback(async C=>{const E=C.target.checked;s&&await s(C,E),b(E),await d.current.setEditCellValue({id:r,field:l,value:E},C)},[d,l,r,s]);return a.useEffect(()=>{b(o)},[o]),ze(()=>{i&&c.current.focus()},[i]),v.jsx("label",m({htmlFor:p,className:xe(x.root,n)},u,{children:v.jsx(g.slots.baseCheckbox,m({id:p,inputRef:c,checked:!!f,onChange:S,size:"small"},(t=g.slotProps)==null?void 0:t.baseCheckbox))}))}const oi=e=>v.jsx(ri,m({},e)),rp=["id","value","formattedValue","api","field","row","rowNode","colDef","cellMode","isEditable","tabIndex","hasFocus","inputProps","isValidating","isProcessingProps","onValueChange"],op=De(ga)({fontSize:"inherit"}),lp=e=>{const{classes:t}=e;return he({root:["editInputCell"]},be,t)};function li(e){const{id:t,value:r,field:o,colDef:l,hasFocus:n,inputProps:i,onValueChange:s}=e,u=Z(e,rp),d=l.type==="dateTime",c=ce(),p=a.useRef(),f=a.useMemo(()=>{let T;r==null?T=null:r instanceof Date?T=r:T=new Date((r??"").toString());let _;return T==null||Number.isNaN(T.getTime())?_="":_=new Date(T.getTime()-T.getTimezoneOffset()*60*1e3).toISOString().substr(0,d?16:10),{parsed:T,formatted:_}},[r,d]),[b,g]=a.useState(f),x={classes:Y().classes},S=lp(x),C=a.useCallback(T=>{if(T==="")return null;const[_,F]=T.split("T"),[L,k,H]=_.split("-"),A=new Date;if(A.setFullYear(Number(L),Number(k)-1,Number(H)),A.setHours(0,0,0,0),F){const[P,R]=F.split(":");A.setHours(Number(P),Number(R),0,0)}return A},[]),E=a.useCallback(async T=>{const _=T.target.value,F=C(_);s&&await s(T,F),g({parsed:F,formatted:_}),c.current.setEditCellValue({id:t,field:o,value:F},T)},[c,o,t,s,C]);return a.useEffect(()=>{g(T=>{var _,F;return f.parsed!==T.parsed&&((_=f.parsed)==null?void 0:_.getTime())!==((F=T.parsed)==null?void 0:F.getTime())?f:T})},[f]),ze(()=>{n&&p.current.focus()},[n]),v.jsx(op,m({inputRef:p,fullWidth:!0,className:S.root,type:d?"datetime-local":"date",inputProps:m({max:d?"9999-12-31T23:59":"9999-12-31"},i),value:b.formatted,onChange:E},u))}const Hl=e=>v.jsx(li,m({},e)),np=["id","value","formattedValue","api","field","row","rowNode","colDef","cellMode","isEditable","tabIndex","hasFocus","isValidating","debounceMs","isProcessingProps","onValueChange"],ap=e=>{const{classes:t}=e;return he({root:["editInputCell"]},be,t)},ip=De(ga,{name:"MuiDataGrid",slot:"EditInputCell",overridesResolver:(e,t)=>t.editInputCell})(({theme:e})=>m({},e.typography.body2,{padding:"1px 0","& input":{padding:"0 16px",height:"100%"}})),ni=a.forwardRef((e,t)=>{const r=Y(),{id:o,value:l,field:n,colDef:i,hasFocus:s,debounceMs:u=200,isProcessingProps:d,onValueChange:c}=e,p=Z(e,np),f=ce(),b=a.useRef(),[g,h]=a.useState(l),x=ap(r),S=a.useCallback(async E=>{const T=E.target.value;c&&await c(E,T);const _=f.current.getColumn(n);let F=T;_.valueParser&&(F=_.valueParser(T,f.current.getCellParams(o,n))),h(F),f.current.setEditCellValue({id:o,field:n,value:F,debounceMs:u,unstable_skipValueParser:!0},E)},[f,u,n,o,c]),C=f.current.unstable_getEditCellMeta(o,n);return a.useEffect(()=>{(C==null?void 0:C.changeReason)!=="debouncedSetEditCellValue"&&h(l)},[C,l]),ze(()=>{s&&b.current.focus()},[s]),v.jsx(ip,m({ref:t,inputRef:b,className:x.root,ownerState:r,fullWidth:!0,type:i.type==="number"?i.type:"text",value:g??"",onChange:S,endAdornment:d?v.jsx(r.slots.loadIcon,{fontSize:"small",color:"action"}):void 0},p))}),ai=e=>v.jsx(ni,m({},e)),po=e=>e==="Escape",sp=e=>e==="Enter",Mo=e=>e==="Tab",ii=e=>e===" ",up=e=>e.indexOf("Arrow")===0,cp=e=>e==="Home"||e==="End",dp=e=>e.indexOf("Page")===0;function si(e){return e.key.length===1&&!e.ctrlKey&&!e.metaKey}const fo=e=>cp(e)||up(e)||dp(e)||ii(e),pp=e=>!!e.key,_l=e=>Mo(e)||po(e);function Ut(e){return(e==null?void 0:e.type)==="singleSelect"}function Ko(e,t,r){if(t===void 0)return;const o=t.find(l=>{const n=r(l);return String(n)===String(e)});return r(o)}const fp=["id","value","formattedValue","api","field","row","rowNode","colDef","cellMode","isEditable","tabIndex","className","hasFocus","isValidating","isProcessingProps","error","onValueChange","initialOpen","getOptionLabel","getOptionValue"],gp=["MenuProps"];function mp(e){return!!e.key}function ui(e){var t,r,o;const l=Y(),{id:n,value:i,field:s,row:u,colDef:d,hasFocus:c,error:p,onValueChange:f,initialOpen:b=l.editMode===mt.Cell,getOptionLabel:g,getOptionValue:h}=e,x=Z(e,fp),S=ce(),C=a.useRef(),E=a.useRef(),[T,_]=a.useState(b),L=(r=(((t=l.slotProps)==null?void 0:t.baseSelect)||{}).native)!=null?r:!1,k=((o=l.slotProps)==null?void 0:o.baseSelect)||{},{MenuProps:H}=k,A=Z(k,gp);if(ze(()=>{if(c){var D;(D=E.current)==null||D.focus()}},[c]),!Ut(d))return null;let P;if(typeof(d==null?void 0:d.valueOptions)=="function"?P=d==null?void 0:d.valueOptions({id:n,row:u,field:s}):P=d==null?void 0:d.valueOptions,!P)return null;const R=h||d.getOptionValue,y=g||d.getOptionLabel,w=async D=>{if(!Ut(d)||!P)return;_(!1);const I=D.target,$=Ko(I.value,P,R);f&&await f(D,$),await S.current.setEditCellValue({id:n,field:s,value:$},D)},O=(D,I)=>{if(l.editMode===mt.Row){_(!1);return}if(I==="backdropClick"||po(D.key)){const $=S.current.getCellParams(n,s);S.current.publishEvent("cellEditStop",m({},$,{reason:po(D.key)?lt.escapeKeyDown:lt.cellFocusOut}))}},M=D=>{mp(D)&&D.key==="Enter"||_(!0)};return!P||!d?null:v.jsx(l.slots.baseSelect,m({ref:C,inputRef:E,value:i,onChange:w,open:T,onOpen:M,MenuProps:m({onClose:O},H),error:p,native:L,fullWidth:!0},x,A,{children:P.map(D=>{var I;const $=R(D);return a.createElement(l.slots.baseSelectOption,m({},((I=l.slotProps)==null?void 0:I.baseSelectOption)||{},{native:L,key:$,value:$}),y(D))})}))}const ci=e=>v.jsx(ui,m({},e)),bp=["open","target","onClose","children","position","className","onExited"],hp=e=>{const{classes:t}=e;return he({root:["menu"]},be,t)},Cp=De(ml,{name:"MuiDataGrid",slot:"Menu",overridesResolver:(e,t)=>t.menu})(({theme:e})=>({zIndex:e.zIndex.modal,[`& .${V.menuList}`]:{outline:0}})),wp={"bottom-start":"top left","bottom-end":"top right"};function Vr(e){var t;const{open:r,target:o,onClose:l,children:n,position:i,className:s,onExited:u}=e,d=Z(e,bp),c=ce(),p=Y(),f=hp(p),b=a.useRef(null);ze(()=>{if(r)b.current=document.activeElement instanceof HTMLElement?document.activeElement:null;else{var x,S;(x=b.current)==null||(S=x.focus)==null||S.call(x),b.current=null}},[r]),a.useEffect(()=>{const x=r?"menuOpen":"menuClose";c.current.publishEvent(x,{target:o})},[c,r,o]);const g=x=>S=>{x&&x(),u&&u(S)},h=x=>{x.target&&(o===x.target||o!=null&&o.contains(x.target))||l(x)};return v.jsx(Cp,m({as:p.slots.basePopper,className:xe(s,f.root),ownerState:p,open:r,anchorEl:o,transition:!0,placement:i},d,(t=p.slotProps)==null?void 0:t.basePopper,{children:({TransitionProps:x,placement:S})=>v.jsx(ma,{onClickAway:h,mouseEvent:"onMouseDown",children:v.jsx(Hu,m({},x,{style:{transformOrigin:wp[S]},onExited:g(x==null?void 0:x.onExited),children:v.jsx(ba,{children:n})}))})}))}const Sp=["api","colDef","id","hasFocus","isEditable","field","value","formattedValue","row","rowNode","cellMode","tabIndex","position","focusElementRef"],Op=e=>typeof e.getActions=="function";function di(e){var t;const{colDef:r,id:o,hasFocus:l,tabIndex:n,position:i="bottom-end",focusElementRef:s}=e,u=Z(e,Sp),[d,c]=a.useState(-1),[p,f]=a.useState(!1),b=ce(),g=a.useRef(null),h=a.useRef(null),x=a.useRef(!1),S=a.useRef({}),C=kr(),E=Ie(),T=Ie(),_=Y();if(!Op(r))throw new Error("MUI: Missing the `getActions` property in the `GridColDef`.");const F=r.getActions(b.current.getRowParams(o)),L=F.filter(M=>!M.props.showInMenu),k=F.filter(M=>M.props.showInMenu),H=L.length+(k.length?1:0);a.useLayoutEffect(()=>{l||Object.entries(S.current).forEach(([M,D])=>{D==null||D.stop({},()=>{delete S.current[M]})})},[l]),a.useEffect(()=>{if(d<0||!g.current||d>=g.current.children.length)return;g.current.children[d].focus({preventScroll:!0})},[d]),a.useEffect(()=>{l||(c(-1),x.current=!1)},[l]),a.useImperativeHandle(s,()=>({focus(){if(!x.current){const M=F.findIndex(D=>!D.props.disabled);c(M)}}}),[F]),a.useEffect(()=>{d>=H&&c(H-1)},[d,H]);const A=()=>{f(!0),c(H-1),x.current=!0},P=()=>{f(!1)},R=M=>D=>{S.current[M]=D},y=(M,D)=>I=>{c(M),x.current=!0,D&&D(I)},w=M=>{if(H<=1)return;const D=($,N)=>{var j;if($<0||$>F.length)return $;const G=C.direction==="rtl"?-1:1,U=(N==="left"?-1:1)*G;return(j=F[$+U])!=null&&j.props.disabled?D($+U,N):$+U};let I=d;M.key==="ArrowRight"?I=D(d,"right"):M.key==="ArrowLeft"&&(I=D(d,"left")),!(I<0||I>=H)&&I!==d&&(M.preventDefault(),M.stopPropagation(),c(I))},O=M=>{M.key==="Tab"&&M.preventDefault(),["Tab","Escape"].includes(M.key)&&P()};return v.jsxs("div",m({role:"menu",ref:g,tabIndex:-1,className:V.actionsCell,onKeyDown:w},u,{children:[L.map((M,D)=>a.cloneElement(M,{key:D,touchRippleRef:R(D),onClick:y(D,M.props.onClick),tabIndex:d===D?n:-1})),k.length>0&&T&&v.jsx(_.slots.baseIconButton,m({ref:h,id:T,"aria-label":b.current.getLocaleText("actionsCellMore"),"aria-haspopup":"menu","aria-expanded":p,"aria-controls":p?E:void 0,role:"menuitem",size:"small",onClick:A,touchRippleRef:R(T),tabIndex:d===L.length?n:-1},(t=_.slotProps)==null?void 0:t.baseIconButton,{children:v.jsx(_.slots.moreActionsIcon,{fontSize:"small"})})),k.length>0&&v.jsx(Vr,{open:p,target:h.current,position:i,onClose:P,children:v.jsx(Co,{id:E,className:V.menuList,onKeyDown:O,"aria-labelledby":T,variant:"menu",autoFocusItem:!0,children:k.map((M,D)=>a.cloneElement(M,{key:D,closeMenu:P}))})})]}))}const pi=e=>v.jsx(di,m({},e)),Pp=["label","icon","showInMenu","onClick"],xp=["label","icon","showInMenu","onClick","closeMenuOnClick","closeMenu"],vp=a.forwardRef((e,t)=>{const r=Y();if(!e.showInMenu){var o;const{label:p,icon:f,onClick:b}=e,g=Z(e,Pp),h=x=>{b==null||b(x)};return v.jsx(r.slots.baseIconButton,m({ref:t,size:"small",role:"menuitem","aria-label":p},g,{onClick:h},(o=r.slotProps)==null?void 0:o.baseIconButton,{children:a.cloneElement(f,{fontSize:"small"})}))}const{label:l,icon:n,onClick:i,closeMenuOnClick:s=!0,closeMenu:u}=e,d=Z(e,xp),c=p=>{i==null||i(p),s&&(u==null||u())};return v.jsxs(dt,m({ref:t},d,{onClick:c,children:[n&&v.jsx(Dt,{children:n}),l]}))}),Fp=["field","align","width","contentWidth"],yp=e=>{const{align:t,classes:r}=e,o={root:["cell","cellSkeleton",`cell--text${$t(t)}`,"withBorderColor"]};return he(o,be,r)};function fi(e){const{align:t,width:r,contentWidth:o}=e,l=Z(e,Fp),i={classes:Y().classes,align:t},s=yp(i);return v.jsx("div",m({className:s.root,style:{width:r}},l,{children:v.jsx(_u,{width:`${o}%`})}))}function Ip(e){return e.vars?e.vars.palette.TableCell.border:e.palette.mode==="light"?Vu(Ct(e.palette.divider,1),.88):Nu(Ct(e.palette.divider,1),.68)}const Vn={[`.${V.columnSeparator}, .${V["columnSeparator--resizing"]}`]:{visibility:"visible",width:"auto"}},Nn={[`& .${V.iconButtonContainer}`]:{visibility:"visible",width:"auto"},[`& .${V.menuIcon}`]:{width:"auto",visibility:"visible"}},Mp=De("div",{name:"MuiDataGrid",slot:"Root",overridesResolver:(e,t)=>[{[`&.${V.autoHeight}`]:t.autoHeight},{[`&.${V.aggregationColumnHeader}`]:t.aggregationColumnHeader},{[`&.${V["aggregationColumnHeader--alignLeft"]}`]:t["aggregationColumnHeader--alignLeft"]},{[`&.${V["aggregationColumnHeader--alignCenter"]}`]:t["aggregationColumnHeader--alignCenter"]},{[`&.${V["aggregationColumnHeader--alignRight"]}`]:t["aggregationColumnHeader--alignRight"]},{[`&.${V.aggregationColumnHeaderLabel}`]:t.aggregationColumnHeaderLabel},{[`&.${V["root--disableUserSelection"]} .${V.cell}`]:t["root--disableUserSelection"]},{[`&.${V.autosizing}`]:t.autosizing},{[`& .${V.editBooleanCell}`]:t.editBooleanCell},{[`& .${V["cell--editing"]}`]:t["cell--editing"]},{[`& .${V["cell--textCenter"]}`]:t["cell--textCenter"]},{[`& .${V["cell--textLeft"]}`]:t["cell--textLeft"]},{[`& .${V["cell--textRight"]}`]:t["cell--textRight"]},{[`& .${V["cell--withRenderer"]}`]:t["cell--withRenderer"]},{[`& .${V.cell}`]:t.cell},{[`& .${V["cell--rangeTop"]}`]:t["cell--rangeTop"]},{[`& .${V["cell--rangeBottom"]}`]:t["cell--rangeBottom"]},{[`& .${V["cell--rangeLeft"]}`]:t["cell--rangeLeft"]},{[`& .${V["cell--rangeRight"]}`]:t["cell--rangeRight"]},{[`& .${V["cell--withRightBorder"]}`]:t["cell--withRightBorder"]},{[`& .${V.cellContent}`]:t.cellContent},{[`& .${V.cellCheckbox}`]:t.cellCheckbox},{[`& .${V.cellSkeleton}`]:t.cellSkeleton},{[`& .${V.checkboxInput}`]:t.checkboxInput},{[`& .${V["columnHeader--alignCenter"]}`]:t["columnHeader--alignCenter"]},{[`& .${V["columnHeader--alignLeft"]}`]:t["columnHeader--alignLeft"]},{[`& .${V["columnHeader--alignRight"]}`]:t["columnHeader--alignRight"]},{[`& .${V["columnHeader--dragging"]}`]:t["columnHeader--dragging"]},{[`& .${V["columnHeader--moving"]}`]:t["columnHeader--moving"]},{[`& .${V["columnHeader--numeric"]}`]:t["columnHeader--numeric"]},{[`& .${V["columnHeader--sortable"]}`]:t["columnHeader--sortable"]},{[`& .${V["columnHeader--sorted"]}`]:t["columnHeader--sorted"]},{[`& .${V["columnHeader--withRightBorder"]}`]:t["columnHeader--withRightBorder"]},{[`& .${V.columnHeader}`]:t.columnHeader},{[`& .${V.headerFilterRow}`]:t.headerFilterRow},{[`& .${V.columnHeaderCheckbox}`]:t.columnHeaderCheckbox},{[`& .${V.columnHeaderDraggableContainer}`]:t.columnHeaderDraggableContainer},{[`& .${V.columnHeaderTitleContainer}`]:t.columnHeaderTitleContainer},{[`& .${V["columnSeparator--resizable"]}`]:t["columnSeparator--resizable"]},{[`& .${V["columnSeparator--resizing"]}`]:t["columnSeparator--resizing"]},{[`& .${V.columnSeparator}`]:t.columnSeparator},{[`& .${V.filterIcon}`]:t.filterIcon},{[`& .${V.iconSeparator}`]:t.iconSeparator},{[`& .${V.menuIcon}`]:t.menuIcon},{[`& .${V.menuIconButton}`]:t.menuIconButton},{[`& .${V.menuOpen}`]:t.menuOpen},{[`& .${V.menuList}`]:t.menuList},{[`& .${V["row--editable"]}`]:t["row--editable"]},{[`& .${V["row--editing"]}`]:t["row--editing"]},{[`& .${V["row--dragging"]}`]:t["row--dragging"]},{[`& .${V.row}`]:t.row},{[`& .${V.rowReorderCellPlaceholder}`]:t.rowReorderCellPlaceholder},{[`& .${V.rowReorderCell}`]:t.rowReorderCell},{[`& .${V["rowReorderCell--draggable"]}`]:t["rowReorderCell--draggable"]},{[`& .${V.sortIcon}`]:t.sortIcon},{[`& .${V.withBorderColor}`]:t.withBorderColor},{[`& .${V.treeDataGroupingCell}`]:t.treeDataGroupingCell},{[`& .${V.treeDataGroupingCellToggle}`]:t.treeDataGroupingCellToggle},{[`& .${V.detailPanelToggleCell}`]:t.detailPanelToggleCell},{[`& .${V["detailPanelToggleCell--expanded"]}`]:t["detailPanelToggleCell--expanded"]},t.root]})(({theme:e})=>{const t=Ip(e),r=e.shape.borderRadius;return m({"--unstable_DataGrid-radius":typeof r=="number"?`${r}px`:r,"--unstable_DataGrid-headWeight":e.typography.fontWeightMedium,"--unstable_DataGrid-overlayBackground":e.vars?`rgba(${e.vars.palette.background.defaultChannel} / ${e.vars.palette.action.disabledOpacity})`:Ct(e.palette.background.default,e.palette.action.disabledOpacity),"--DataGrid-cellOffsetMultiplier":2,flex:1,boxSizing:"border-box",position:"relative",borderWidth:"1px",borderStyle:"solid",borderColor:t,borderRadius:"var(--unstable_DataGrid-radius)",color:(e.vars||e).palette.text.primary},e.typography.body2,{outline:"none",height:"100%",display:"flex",minWidth:0,minHeight:0,flexDirection:"column",overflowAnchor:"none",[`&.${V.autoHeight}`]:{height:"auto",[`& .${V["row--lastVisible"]} .${V.cell}`]:{borderBottomColor:"transparent"}},[`&.${V.autosizing}`]:{[`& .${V.columnHeaderTitleContainerContent} > *`]:{overflow:"visible !important"},[`& .${V.cell} > *`]:{overflow:"visible !important",whiteSpace:"nowrap"},[`& .${V.groupingCriteriaCell}`]:{width:"unset"},[`& .${V.treeDataGroupingCell}`]:{width:"unset"}},[`& .${V["virtualScrollerContent--overflowed"]} .${V["row--lastVisible"]} .${V.cell}`]:{borderBottomColor:"transparent"},[`& .${V.columnHeader}, & .${V.cell}`]:{WebkitTapHighlightColor:"transparent",lineHeight:null,padding:"0 10px",boxSizing:"border-box"},[`& .${V.columnHeader}:focus-within, & .${V.cell}:focus-within`]:{outline:`solid ${e.vars?`rgba(${e.vars.palette.primary.mainChannel} / 0.5)`:Ct(e.palette.primary.main,.5)} 1px`,outlineWidth:1,outlineOffset:-1},[`& .${V.columnHeader}:focus, & .${V.cell}:focus`]:{outline:`solid ${e.palette.primary.main} 1px`},[`& .${V.columnHeaderCheckbox}, & .${V.cellCheckbox}`]:{padding:0,justifyContent:"center",alignItems:"center"},[`& .${V.columnHeader}`]:{position:"relative",display:"flex",alignItems:"center"},[`& .${V["columnHeader--sorted"]} .${V.iconButtonContainer}, & .${V["columnHeader--filtered"]} .${V.iconButtonContainer}`]:{visibility:"visible",width:"auto"},[`& .${V.columnHeader}:not(.${V["columnHeader--sorted"]}) .${V.sortIcon}`]:{opacity:0,transition:e.transitions.create(["opacity"],{duration:e.transitions.duration.shorter})},[`& .${V.columnHeaderTitleContainer}`]:{display:"flex",alignItems:"center",minWidth:0,flex:1,whiteSpace:"nowrap",overflow:"hidden",position:"relative"},[`& .${V.columnHeaderTitleContainerContent}`]:{overflow:"hidden",display:"flex",alignItems:"center"},[`& .${V["columnHeader--filledGroup"]} .${V.columnHeaderTitleContainer}`]:{borderBottomWidth:"1px",borderBottomStyle:"solid",boxSizing:"border-box"},[`& .${V["columnHeader--filledGroup"]}.${V["columnHeader--showColumnBorder"]} .${V.columnHeaderTitleContainer}`]:{borderBottom:"none"},[`& .${V["columnHeader--filledGroup"]}.${V["columnHeader--showColumnBorder"]}`]:{borderBottomWidth:"1px",borderBottomStyle:"solid",boxSizing:"border-box"},[`& .${V.headerFilterRow}`]:{borderTop:`1px solid ${t}`},[`& .${V.sortIcon}, & .${V.filterIcon}`]:{fontSize:"inherit"},[`& .${V["columnHeader--sortable"]}`]:{cursor:"pointer"},[`& .${V["columnHeader--alignCenter"]} .${V.columnHeaderTitleContainer}`]:{justifyContent:"center"},[`& .${V["columnHeader--alignRight"]} .${V.columnHeaderDraggableContainer}, & .${V["columnHeader--alignRight"]} .${V.columnHeaderTitleContainer}`]:{flexDirection:"row-reverse"},[`& .${V["columnHeader--alignCenter"]} .${V.menuIcon}, & .${V["columnHeader--alignRight"]} .${V.menuIcon}`]:{marginRight:"auto",marginLeft:-6},[`& .${V["columnHeader--alignRight"]} .${V.menuIcon}, & .${V["columnHeader--alignRight"]} .${V.menuIcon}`]:{marginRight:"auto",marginLeft:-10},[`& .${V["columnHeader--moving"]}`]:{backgroundColor:(e.vars||e).palette.action.hover},[`& .${V.columnSeparator}`]:{visibility:"hidden",position:"absolute",zIndex:100,display:"flex",flexDirection:"column",justifyContent:"center",color:t},"@media (hover: hover)":{[`& .${V.columnHeaders}:hover`]:Vn,[`& .${V.columnHeader}:hover`]:Nn,[`& .${V.columnHeader}:not(.${V["columnHeader--sorted"]}):hover .${V.sortIcon}`]:{opacity:.5}},"@media (hover: none)":{[`& .${V.columnHeaders}`]:Vn,[`& .${V.columnHeader}`]:Nn},[`& .${V["columnSeparator--sideLeft"]}`]:{left:-12},[`& .${V["columnSeparator--sideRight"]}`]:{right:-12},[`& .${V["columnSeparator--resizable"]}`]:{cursor:"col-resize",touchAction:"none","&:hover":{color:(e.vars||e).palette.text.primary,"@media (hover: none)":{color:t}},[`&.${V["columnSeparator--resizing"]}`]:{color:(e.vars||e).palette.text.primary},"& svg":{pointerEvents:"none"}},[`& .${V.iconSeparator}`]:{color:"inherit"},[`& .${V.menuIcon}`]:{width:0,visibility:"hidden",fontSize:20,marginRight:-10,display:"flex",alignItems:"center"},[`.${V.menuOpen}`]:{visibility:"visible",width:"auto"},[`& .${V.row}`]:{display:"flex",width:"fit-content",breakInside:"avoid","&:hover, &.Mui-hovered":{backgroundColor:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},"&.Mui-selected":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:Ct(e.palette.primary.main,e.palette.action.selectedOpacity),"&:hover, &.Mui-hovered":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc( +import{z as Eu,A as Lu,j as x,c as X,r as a,E as ca,G as Rt,k as Kt,u as Ht,H as Tu,I as bt,q as Du,J as $u,K as da,N as bo,O as Au,P as pa,Q as _e,U as m,V as he,W as ze,X as xe,Y as J,Z as xt,$ as Ir,a0 as $t,a1 as Ie,a2 as De,a3 as fa,a4 as gl,a5 as ga,a6 as Ru,a7 as ma,s as Mr,a8 as ho,M as dt,a9 as Dt,aa as Hu,ab as Ct,ac as _u,ad as Vu,ae as ml,af as pt,ag as Me,ah as Nu,ai as nr,aj as Gu,ak as zu,al as ba,F as ju,am as ha,an as Bu,T as Ca,ao as bl,ap as Uu,aq as qu,ar as Wu,as as Pn,at as Or,au as Ku,av as wa,C as Qu,t as Zu,S as Ju,aw as Yu,B as Xu,ax as ec,ay as tc,az as rc,aA as oc,aB as lc,aC as G,aD as nc,aE as ac,aF as ic}from"./index-yx-9MxwX.js";function sc(e,t){return()=>null}var uc={},Co={},cc=Lu;Object.defineProperty(Co,"__esModule",{value:!0});Co.default=void 0;var dc=cc(Eu()),pc=x;Co.default=(0,dc.default)((0,pc.jsx)("path",{d:"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"}),"ExpandMore");var hl={},Ur={},xn;function fc(){if(xn)return Ur;xn=1;var e=X&&X.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(Ur,"__esModule",{value:!0});const t=e(a),r=Rt,o=Kt,l=e(ca);function n({handleClose:i}){return t.default.createElement(o.Dialog,{maxWidth:"xl",open:!0,onClose:()=>i(),title:"Feature sequence panel help"},t.default.createElement(r.DialogContent,null,t.default.createElement(r.Typography,{paragraph:!0},'The "Feature sequence" panel shows the underlying genomic sequence for a given feature, fetched from the reference genome.'),t.default.createElement(r.Typography,null,"For gene features, this panel does special calculations to e.g. stitch together the coding sequence, the options are:"),t.default.createElement("ul",null,t.default.createElement("li",null,"CDS - shows the stitched together CDS sequences"),t.default.createElement("li",null,'Protein - the translated coding sequence, with the "standard" genetic code'),t.default.createElement("li",null,"cDNA - shows the 'copy DNA' of transcript, formed from exon sequences"),t.default.createElement("li",null,"Genomic w/ introns +/- Nbp up+down stream - the sequence underlying the entire gene including including introns, with UTR and CDS highlighted")),t.default.createElement(r.Typography,{paragraph:!0},"For other feature types, the options are:"),t.default.createElement("ul",null,t.default.createElement("li",null,"Genomic +/- Nbp up+down stream - the reference genome sequence underlying the feature, with the up and downstream sequence")),t.default.createElement(r.Typography,null,'Note 1: you can use the "gear icon" ',t.default.createElement(l.default,null)," to edit the number of bp displayed up/downstream and in the intron region"),t.default.createElement(r.Typography,null,"Note 2: The 'Copy HTML' function retains the colors from the sequence panel but cannot be pasted into some programs like notepad that only expect plain text.")),t.default.createElement(r.DialogActions,null,t.default.createElement(r.Button,{onClick:()=>i(),autoFocus:!0,variant:"contained"},"Close")))}return Ur.default=n,Ur}var qr={},hr={},vn;function gc(){if(vn)return hr;vn=1,Object.defineProperty(hr,"__esModule",{value:!0}),hr.useFeatureSequence=void 0;const e=a,t=Ht,r=Tu,o=5e5;function l(n,i,s,u){const[d,c]=(0,e.useState)(),[p,f]=(0,e.useState)();return(0,e.useEffect)(()=>{var b;let g=!1;if(!n)return()=>{};const{assemblyManager:h,rpcManager:P}=(0,t.getSession)(n),[w]=((b=n.view)===null||b===void 0?void 0:b.assemblyNames)||[];async function C(E,T,_){const F=await h.waitForAssembly(w);if(!F)throw new Error("assembly not found");const L="getSequence",I=await P.call(L,"CoreGetFeatures",{adapterConfig:(0,r.getConf)(F,["sequence","adapter"]),sessionId:L,regions:[{start:E,end:T,refName:F.getCanonicalRefName(_),assemblyName:w}]}),[H]=I;return(H==null?void 0:H.get("seq"))||""}return(async()=>{try{f(void 0);const{start:E,end:T,refName:_}=i;if(!u&&T-E>o)c({error:`Genomic sequence larger than ${o}bp, use "force load" button to display`});else{const F=E-s,L=T+s,I=await C(E,T,_),H=await C(Math.max(0,F),E,_),$=await C(T,L,_);g||c({seq:I,upstream:H,downstream:$})}}catch(E){console.error(E),f(E)}})(),()=>{g=!0}},[i,n,s,u]),{sequence:d,error:p}}return hr.useFeatureSequence=l,hr}var Wr={},Fn;function mc(){if(Fn)return Wr;Fn=1;var e=X&&X.__createBinding||(Object.create?function(d,c,p,f){f===void 0&&(f=p);var b=Object.getOwnPropertyDescriptor(c,p);(!b||("get"in b?!c.__esModule:b.writable||b.configurable))&&(b={enumerable:!0,get:function(){return c[p]}}),Object.defineProperty(d,f,b)}:function(d,c,p,f){f===void 0&&(f=p),d[f]=c[p]}),t=X&&X.__setModuleDefault||(Object.create?function(d,c){Object.defineProperty(d,"default",{enumerable:!0,value:c})}:function(d,c){d.default=c}),r=X&&X.__importStar||function(d){if(d&&d.__esModule)return d;var c={};if(d!=null)for(var p in d)p!=="default"&&Object.prototype.hasOwnProperty.call(d,p)&&e(c,d,p);return t(c,d),c};Object.defineProperty(Wr,"__esModule",{value:!0});const o=r(a),l=Rt,n=Kt,s=(0,bt.makeStyles)()(d=>({formElt:{margin:d.spacing(3),width:400},dialogContent:{width:"80em"}}));function u({handleClose:d,intronBp:c,upDownBp:p}){const{classes:f}=s(),[b,g]=(0,o.useState)(`${c}`),[h,P]=(0,o.useState)(`${p}`),w=!Number.isNaN(+b),C=!Number.isNaN(+h);return o.default.createElement(n.Dialog,{maxWidth:"xl",open:!0,onClose:()=>d(),title:"Feature sequence settings"},o.default.createElement(l.DialogContent,{className:f.dialogContent},o.default.createElement(l.TextField,{label:"Number of intronic bases around splice site to display",className:f.formElt,value:b,helperText:w?"":"Not a number",error:!w,onChange:E=>g(E.target.value)}),o.default.createElement(l.TextField,{label:"Number of bases up/down stream of feature to display",className:f.formElt,value:h,helperText:C?"":"Not a number",error:!C,onChange:E=>P(E.target.value)})),o.default.createElement(l.DialogActions,null,o.default.createElement(l.Button,{onClick:()=>d({upDownBp:+h,intronBp:+b}),disabled:!w||!C,color:"primary",variant:"contained"},"Submit"),o.default.createElement(l.Button,{onClick:()=>d(),color:"secondary",autoFocus:!0,variant:"contained"},"Cancel")))}return Wr.default=u,Wr}var Kr={},Ge={};Object.defineProperty(Ge,"__esModule",{value:!0});Ge.ellipses=Ge.calculateUTRs2=Ge.calculateUTRs=Ge.revlist=Ge.dedupe=Ge.stitch=void 0;function bc(e,t){return e.map(r=>t.slice(r.start,r.end)).join("")}Ge.stitch=bc;function yn(e){return`${e.start}-${e.end}`}function hc(e){return e.filter((t,r,o)=>!r||yn(t)!==yn(o[r-1]))}Ge.dedupe=hc;function Cc(e,t){return e.map(r=>({...r,start:t-r.end,end:t-r.start})).sort((r,o)=>r.start-o.start)}Ge.revlist=Cc;function wc(e,t){if(!e.length)return[];const r=e.at(0),o=e.at(-1),l=t.findIndex(c=>c.end>=r.start&&c.start<=r.start),n=t.findIndex(c=>c.end>=o.end&&c.start<=o.end),i=t[n],s=t[l],u=[...t.slice(0,l),{start:s.start,end:r.start}].map(c=>({...c,type:"five_prime_UTR"})),d=[{start:o.end,end:i.end},...t.slice(n+1)].map(c=>({...c,type:"three_prime_UTR"}));return[...u,...d]}Ge.calculateUTRs=wc;function Sc(e,t){if(!e.length)return[];const r=e.at(0),o=e.at(-1),l=[{start:t.start,end:r.start}].map(i=>({...i,type:"five_prime_UTR"})),n=[{start:o.end,end:t.end}].map(i=>({...i,type:"three_prime_UTR"}));return[...l,...n]}Ge.calculateUTRs2=Sc;function Oc(e){return e.length>20?`${e.slice(0,20)}...`:e}Ge.ellipses=Oc;var Qr={},qe={},In;function wo(){return In||(In=1,Object.defineProperty(qe,"__esModule",{value:!0}),qe.genomeColor=qe.updownstreamColor=qe.cdsColor=qe.proteinColor=qe.utrColor=qe.intronColor=void 0,qe.intronColor=void 0,qe.utrColor="rgb(200,240,240)",qe.proteinColor="rgb(220,160,220)",qe.cdsColor="rgb(220,220,180)",qe.updownstreamColor="rgba(250,200,200)",qe.genomeColor="rgb(200,280,200)"),qe}var Mn;function Pc(){if(Mn)return Qr;Mn=1;var e=X&&X.__importDefault||function(l){return l&&l.__esModule?l:{default:l}};Object.defineProperty(Qr,"__esModule",{value:!0});const t=e(a),r=wo();function o({utr:l,cds:n,exons:i,sequence:s,upstream:u,downstream:d,includeIntrons:c,collapseIntron:p,intronBp:f}){const b=(n.length?[...n,...l].sort((g,h)=>g.start-h.start):i).filter(g=>g.start!==g.end);return t.default.createElement(t.default.Fragment,null,u?t.default.createElement("span",{style:{background:r.updownstreamColor}},u):null,b.map((g,h)=>{var P;const w=s.slice(g.end,(P=b[h+1])===null||P===void 0?void 0:P.start);return t.default.createElement(t.default.Fragment,{key:JSON.stringify(g)},t.default.createElement("span",{style:{background:g.type==="CDS"?r.cdsColor:r.utrColor}},s.slice(g.start,g.end)),c&&hf*2?`${w.slice(0,f)}...${w.slice(-f)}`:w):null)}),d?t.default.createElement("span",{style:{background:r.updownstreamColor}},d):null)}return Qr.default=o,Qr}var Zr={},kn;function xc(){if(kn)return Zr;kn=1;var e=X&&X.__importDefault||function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(Zr,"__esModule",{value:!0});const t=e(a),r=Ge,o=wo();function l({cds:n,sequence:i,codonTable:s}){const u=(0,r.stitch)(n,i);let d="";for(let c=0;cI.start-H.start).map(I=>({...I,start:I.start-f.start,end:I.end-f.start}));let T=(0,o.dedupe)(E.filter(I=>I.type==="CDS")),_=(0,o.dedupe)(E.filter(I=>I.type.match(/utr/i))),F=(0,o.dedupe)(E.filter(I=>I.type==="exon"));!_.length&&T.length&&F.length&&(_=(0,o.calculateUTRs)(T,F)),!_.length&&T.length&&!F.length&&(_=(0,o.calculateUTRs2)(T,{start:0,end:f.end-f.start,type:"gene"})),f.strand===-1&&([h,P,w]=[(0,r.revcom)(h),(0,r.revcom)(w),(0,r.revcom)(P)],T=(0,o.revlist)(T,h.length),F=(0,o.revlist)(F,h.length),_=(0,o.revlist)(_,h.length));const L=(0,r.generateCodonTable)(r.defaultCodonTable);return t.default.createElement("div",{ref:p,"data-testid":"sequence_panel"},t.default.createElement("div",{style:{fontFamily:"monospace",wordWrap:"break-word",overflow:"auto",color:"black",fontSize:12,maxWidth:600,maxHeight:300}},t.default.createElement("span",{style:{background:"white"}},`>${f.name||f.id||`${f.refName}:${f.start+1}-${f.end}`}-${b} +`),t.default.createElement("br",null),b==="genomic"?t.default.createElement(i.default,{sequence:h}):b==="genomic_sequence_updownstream"?t.default.createElement(i.default,{sequence:h,upstream:P,downstream:w}):b==="cds"?t.default.createElement(s.default,{cds:T,sequence:h}):b==="cdna"?t.default.createElement(l.default,{exons:F,cds:T,utr:_,sequence:h,intronBp:g}):b==="protein"?t.default.createElement(n.default,{cds:T,codonTable:L,sequence:h}):b==="gene"?t.default.createElement(l.default,{exons:F,cds:T,utr:_,sequence:h,includeIntrons:!0,intronBp:g}):b==="gene_collapsed_intron"?t.default.createElement(l.default,{exons:F,cds:T,sequence:h,utr:_,includeIntrons:!0,collapseIntron:!0,intronBp:g}):b==="gene_updownstream"?t.default.createElement(l.default,{exons:F,cds:T,sequence:h,utr:_,upstream:P,downstream:w,includeIntrons:!0,intronBp:g}):b==="gene_updownstream_collapsed_intron"?t.default.createElement(l.default,{exons:F,cds:T,sequence:h,utr:_,upstream:P,downstream:w,includeIntrons:!0,collapseIntron:!0,intronBp:g}):t.default.createElement("div",null,"Unknown type")))});return Kr.default=u,Kr}var Dn;function Ic(){if(Dn)return qr;Dn=1;var e=X&&X.__createBinding||(Object.create?function(w,C,E,T){T===void 0&&(T=E);var _=Object.getOwnPropertyDescriptor(C,E);(!_||("get"in _?!C.__esModule:_.writable||_.configurable))&&(_={enumerable:!0,get:function(){return C[E]}}),Object.defineProperty(w,T,_)}:function(w,C,E,T){T===void 0&&(T=E),w[T]=C[E]}),t=X&&X.__setModuleDefault||(Object.create?function(w,C){Object.defineProperty(w,"default",{enumerable:!0,value:C})}:function(w,C){w.default=C}),r=X&&X.__importStar||function(w){if(w&&w.__esModule)return w;var C={};if(w!=null)for(var E in w)E!=="default"&&Object.prototype.hasOwnProperty.call(w,E)&&e(C,w,E);return t(C,w),C},o=X&&X.__importDefault||function(w){return w&&w.__esModule?w:{default:w}};Object.defineProperty(qr,"__esModule",{value:!0});const l=r(a),n=Rt,i=bt,s=o(Du()),u=Ht,d=Kt,c=o(ca),p=gc(),f=(0,l.lazy)(()=>Promise.resolve().then(()=>r(mc()))),b=(0,l.lazy)(()=>Promise.resolve().then(()=>r(yc()))),g=(0,i.makeStyles)()(w=>({button:{margin:w.spacing(1)},formControl:{margin:0},container2:{marginTop:w.spacing(1)}}));function h({model:w,feature:C}){var E,T;const{classes:_}=g(),F=C,L=(0,l.useRef)(null),[I,H]=(0,u.useLocalStorage)("intronBp",10),[$,v]=(0,u.useLocalStorage)("upDownBp",500),[R,y]=(0,l.useState)(!1),[S,O]=(0,l.useState)(!1),[M,A]=(0,l.useState)(!1),k=(E=F.subfeatures)===null||E===void 0?void 0:E.some(ee=>ee.type==="CDS"),D=(T=F.subfeatures)===null||T===void 0?void 0:T.some(ee=>ee.type==="exon"),N=D||k,{sequence:j,error:z}=(0,p.useFeatureSequence)(w,C,$,M),[B,Z]=(0,l.useState)(k?"cds":D?"cdna":"genomic"),Q={...k?{cds:"CDS"}:{},...k?{protein:"Protein"}:{},...N?{cdna:"cDNA"}:{},...N?{gene:"Genomic w/ full introns"}:{},...N?{gene_updownstream:`Genomic w/ full introns +/- ${$}bp up+down stream`}:{},...N?{gene_collapsed_intron:`Genomic w/ ${I}bp intron`}:{},...N?{gene_updownstream_collapsed_intron:`Genomic w/ ${I}bp intron +/- ${$}bp up+down stream `}:{},...N?{}:{genomic:"Genomic"},...N?{}:{genomic_sequence_updownstream:`Genomic +/- ${$}bp up+down stream`}};return l.default.createElement("div",{className:_.container2},l.default.createElement(n.FormControl,{className:_.formControl},l.default.createElement(n.Select,{value:B,onChange:ee=>Z(ee.target.value)},Object.entries(Q).map(([ee,oe])=>l.default.createElement(n.MenuItem,{key:ee,value:ee},oe)))),l.default.createElement(n.FormControl,{className:_.formControl},l.default.createElement(n.Button,{className:_.button,variant:"contained",onClick:()=>{const ee=L.current;ee&&((0,s.default)(ee.textContent||"",{format:"text/plain"}),y(!0),setTimeout(()=>y(!1),1e3))}},R?"Copied to clipboard!":"Copy plaintext")),l.default.createElement(n.FormControl,{className:_.formControl},l.default.createElement(n.Tooltip,{title:"The 'Copy HTML' function retains the colors from the sequence panel but cannot be pasted into some programs like notepad that only expect plain text"},l.default.createElement(n.Button,{className:_.button,variant:"contained",onClick:()=>{const ee=L.current;ee&&((0,s.default)(ee.innerHTML,{format:"text/html"}),O(!0),setTimeout(()=>O(!1),1e3))}},S?"Copied to clipboard!":"Copy HTML"))),l.default.createElement(P,{upDownBp:$,intronBp:I,setIntronBp:H,setUpDownBp:v}),l.default.createElement("br",null),F.type==="gene"?l.default.createElement(n.Typography,null,"Note: inspect subfeature sequences for protein/CDS computations"):null,z?l.default.createElement(n.Typography,{color:"error"},`${z}`):j?j?"error"in j?l.default.createElement(l.default.Fragment,null,l.default.createElement(n.Typography,{color:"error"},j.error),l.default.createElement(n.Button,{variant:"contained",color:"inherit",onClick:()=>A(!0)},"Force load")):l.default.createElement(l.Suspense,{fallback:l.default.createElement(d.LoadingEllipses,null)},l.default.createElement(b,{ref:L,feature:F,mode:B,sequence:j,intronBp:I})):l.default.createElement(n.Typography,null,"No sequence found"):l.default.createElement(d.LoadingEllipses,null))}qr.default=h;function P({intronBp:w,upDownBp:C,setIntronBp:E,setUpDownBp:T}){const{classes:_}=g(),[F,L]=(0,l.useState)(!1);return l.default.createElement(l.default.Fragment,null,l.default.createElement(n.FormControl,{className:_.formControl},l.default.createElement(n.IconButton,{onClick:()=>L(!0)},l.default.createElement(c.default,null))),F?l.default.createElement(l.Suspense,{fallback:null},l.default.createElement(f,{handleClose:I=>{if(I){const{upDownBp:H,intronBp:$}=I;E($),T(H)}L(!1)},upDownBp:C,intronBp:w})):null)}return qr}var Mc=X&&X.__createBinding||(Object.create?function(e,t,r,o){o===void 0&&(o=r);var l=Object.getOwnPropertyDescriptor(t,r);(!l||("get"in l?!t.__esModule:l.writable||l.configurable))&&(l={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,l)}:function(e,t,r,o){o===void 0&&(o=r),e[o]=t[r]}),kc=X&&X.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Cl=X&&X.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&Mc(t,e,r);return kc(t,e),t},Ec=X&&X.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(hl,"__esModule",{value:!0});const et=Cl(a),Bo=Rt,Lc=bt,Tc=da,Dc=Kt,$c=Ht,Ac=Ec($u),Rc=(0,et.lazy)(()=>Promise.resolve().then(()=>Cl(fc()))),Hc=(0,et.lazy)(()=>Promise.resolve().then(()=>Cl(Ic()))),Sa=(0,Lc.makeStyles)()(e=>({formControl:{margin:0},container:{marginTop:e.spacing(4),marginBottom:e.spacing(4)}})),_c=(0,Tc.observer)(function({model:e}){const{classes:t}=Sa(),r=(0,$c.getSession)(e);return et.default.createElement(Bo.FormControl,{className:t.formControl},et.default.createElement(Bo.IconButton,{onClick:()=>r.queueDialog(o=>[Rc,{handleClose:o}])},et.default.createElement(Ac.default,null)))});function Vc({model:e,feature:t}){const{classes:r}=Sa(),[o,l]=(0,et.useState)(!1);return e?et.default.createElement("div",{className:r.container},et.default.createElement(Bo.Button,{variant:"contained",onClick:()=>l(!o)},o?"Hide feature sequence":"Show feature sequence"),et.default.createElement(_c,{model:e}),o?et.default.createElement(et.Suspense,{fallback:et.default.createElement(Dc.LoadingEllipses,null)},et.default.createElement(Hc,{key:t.uniqueId,model:e,feature:t})):null):null}hl.default=Vc;var So={},pr={},Nc=X&&X.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(pr,"__esModule",{value:!0});const $o=Nc(a),Gc=Rt,zc=bt,jc=(0,zc.makeStyles)()(e=>({fieldDescription:{"&:hover":{background:e.palette.mode==="dark"?"#e65100":"yellow"}},fieldName:{wordBreak:"break-all",minWidth:90,borderBottom:"1px solid #0003",fontSize:12,background:e.palette.action.disabledBackground,marginRight:e.spacing(1),padding:e.spacing(.5)}}));function Bc({description:e,name:t,width:r,prefix:o=[]}){const{classes:l,cx:n}=jc(),i=[...o,t].join(".");return e?$o.default.createElement(Gc.Tooltip,{title:e,placement:"left"},$o.default.createElement("div",{className:n(l.fieldDescription,l.fieldName)},i)):$o.default.createElement("div",{className:l.fieldName,style:{width:r}},i)}pr.default=Bc;var kr={},Oa=X&&X.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(kr,"__esModule",{value:!0});const Xr=Oa(a),Uc=bt,qc=Oa(bo),Wc=Rt,Kc=Kt,Qc=(0,Uc.makeStyles)()(e=>({fieldValue:{wordBreak:"break-word",maxHeight:300,fontSize:12,padding:e.spacing(.5),overflow:"auto"}}));function Zc({value:e}){const{classes:t}=Qc(),r=`${e}`.match(/^https?:\/\//);return Xr.default.createElement("div",{className:t.fieldValue},Xr.default.isValidElement(e)?e:r?Xr.default.createElement(Wc.Link,{href:`${e}`},`${e}`):Xr.default.createElement(Kc.SanitizedHTML,{html:(0,qc.default)(e)?JSON.stringify(e):String(e)}))}kr.default=Zc;var wl=X&&X.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(So,"__esModule",{value:!0});const Ao=wl(a),Jc=bt,Yc=wl(pr),Xc=wl(kr),ed=(0,Jc.makeStyles)()({field:{display:"flex",flexWrap:"wrap"}});function td({name:e,value:t,description:r,prefix:o,width:l}){const{classes:n}=ed();return t!=null?Ao.default.createElement("div",{className:n.field},Ao.default.createElement(Yc.default,{prefix:o,description:r,name:e,width:l}),Ao.default.createElement(Xc.default,{value:t})):null}So.default=td;var eo={},ct={},rd=X&&X.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ct,"__esModule",{value:!0});ct.accessNested=ct.generateMaxWidth=ct.generateTitle=ct.isEmpty=void 0;const $n=rd(bo),An=Ht,od=Ge;function ld(e){return Object.keys(e).length===0}ct.isEmpty=ld;function nd(e,t,r){return[(0,od.ellipses)(`${e}`||`${t}`),`${r}`].filter(o=>!!o).join(" - ")}ct.generateTitle=nd;function ad(e,t){return Math.ceil((0,An.max)(e.map(r=>(0,An.measureText)([...t,r[0]].join("."),12))))+10}ct.generateMaxWidth=ad;function id(e,t={}){let r=t;return e.forEach(o=>{(0,$n.default)(r)&&(r=r[o])}),typeof r=="string"?r:(0,$n.default)(r)&&typeof(r==null?void 0:r.Description)=="string"?r.Description:void 0}ct.accessNested=id;var Sl={};const Ol=a.createContext(void 0);function ce(){const e=a.useContext(Ol);if(e===void 0)throw new Error(["MUI: Could not find the data grid context.","It looks like you rendered your component outside of a DataGrid, DataGridPro or DataGridPremium parent component.","This can also happen if you are bundling multiple versions of the data grid."].join(` +`));return e}const sd=()=>a.useRef({}),Pa=a.createContext(void 0),Y=()=>{const e=a.useContext(Pa);if(!e)throw new Error("MUI: useGridRootProps should only be used inside the DataGrid, DataGridPro or DataGridPremium component.");return e},xa=a.createContext(void 0);function _t(){const e=a.useContext(xa);if(e===void 0)throw new Error(["MUI: Could not find the data grid private context.","It looks like you rendered your component outside of a DataGrid, DataGridPro or DataGridPremium parent component.","This can also happen if you are bundling multiple versions of the data grid."].join(` +`));return e}const Rn={};function Pl(e,t){const r=a.useRef(Rn);return r.current===Rn&&(r.current=e(t)),r}const ud=[];function va(e){a.useEffect(e,ud)}const vt=(e,t="warning")=>{let r=!1;const o=Array.isArray(e)?e.join(` +`):e;return()=>{r||(r=!0,t==="error"?console.error(o):console.warn(o))}},cd=Object.is;function Fa(e,t){if(e===t)return!0;if(!(e instanceof Object)||!(t instanceof Object))return!1;let r=0,o=0;for(const l in e)if(r+=1,!cd(e[l],t[l])||!(l in t))return!1;for(const l in t)o+=1;return r===o}vt(["MUI: `useGridSelector` has been called before the initialization of the state.","This hook can only be used inside the context of the grid."]);function dd(e){return e.acceptsApiRef}function Hn(e,t){return dd(t)?t(e):t(e.current.state)}const pd=Object.is,xl=Fa,fd=()=>({state:null,equals:null,selector:null}),K=(e,t,r=pd)=>{const o=Pl(fd),l=o.current.selector!==null,[n,i]=a.useState(l?null:Hn(e,t));return o.current.state=n,o.current.equals=r,o.current.selector=t,va(()=>e.current.store.subscribe(()=>{const s=Hn(e,o.current.selector);o.current.equals(o.current.state,s)||(o.current.state=s,i(s))})),n};function be(e){return Au("MuiDataGrid",e)}const V=pa("MuiDataGrid",["actionsCell","aggregationColumnHeader","aggregationColumnHeader--alignLeft","aggregationColumnHeader--alignCenter","aggregationColumnHeader--alignRight","aggregationColumnHeaderLabel","autoHeight","autosizing","booleanCell","cell--editable","cell--editing","cell--textCenter","cell--textLeft","cell--textRight","cell--withRenderer","cell--rangeTop","cell--rangeBottom","cell--rangeLeft","cell--rangeRight","cell--selectionMode","cell","cellContent","cellCheckbox","cellSkeleton","checkboxInput","columnHeader--alignCenter","columnHeader--alignLeft","columnHeader--alignRight","columnHeader--dragging","columnHeader--moving","columnHeader--numeric","columnHeader--sortable","columnHeader--sorted","columnHeader--filtered","columnHeader","columnHeaderCheckbox","columnHeaderDraggableContainer","columnHeaderDropZone","columnHeaderTitle","columnHeaderTitleContainer","columnHeaderTitleContainerContent","columnGroupHeader","columnHeader--filledGroup","columnHeader--emptyGroup","columnHeader--showColumnBorder","columnHeaders","columnHeadersInner","columnHeadersInner--scrollable","columnSeparator--resizable","columnSeparator--resizing","columnSeparator--sideLeft","columnSeparator--sideRight","columnSeparator","columnsPanel","columnsPanelRow","detailPanel","detailPanels","detailPanelToggleCell","detailPanelToggleCell--expanded","footerCell","panel","panelHeader","panelWrapper","panelContent","panelFooter","paper","editBooleanCell","editInputCell","filterForm","filterFormDeleteIcon","filterFormLogicOperatorInput","filterFormColumnInput","filterFormOperatorInput","filterFormValueInput","filterIcon","footerContainer","headerFilterRow","iconButtonContainer","iconSeparator","main","menu","menuIcon","menuIconButton","menuOpen","menuList","overlay","overlayWrapper","overlayWrapperInner","root","root--densityStandard","root--densityComfortable","root--densityCompact","root--disableUserSelection","row","row--editable","row--editing","row--lastVisible","row--dragging","row--dynamicHeight","row--detailPanelExpanded","rowReorderCellPlaceholder","rowCount","rowReorderCellContainer","rowReorderCell","rowReorderCell--draggable","scrollArea--left","scrollArea--right","scrollArea","selectedRowCount","sortIcon","toolbarContainer","toolbarFilterList","virtualScroller","virtualScrollerContent","virtualScrollerContent--overflowed","virtualScrollerRenderZone","pinnedColumns","pinnedColumns--left","pinnedColumns--right","pinnedColumnHeaders","pinnedColumnHeaders--left","pinnedColumnHeaders--right","withBorderColor","cell--withRightBorder","columnHeader--withRightBorder","treeDataGroupingCell","treeDataGroupingCellToggle","groupingCriteriaCell","groupingCriteriaCellToggle","pinnedRows","pinnedRows--top","pinnedRows--bottom","pinnedRowsRenderZone"]);var ao="NOT_FOUND";function gd(e){var t;return{get:function(o){return t&&e(t.key,o)?t.value:ao},put:function(o,l){t={key:o,value:l}},getEntries:function(){return t?[t]:[]},clear:function(){t=void 0}}}function md(e,t){var r=[];function o(s){var u=r.findIndex(function(c){return t(s,c.key)});if(u>-1){var d=r[u];return u>0&&(r.splice(u,1),r.unshift(d)),d.value}return ao}function l(s,u){o(s)===ao&&(r.unshift({key:s,value:u}),r.length>e&&r.pop())}function n(){return r}function i(){r=[]}return{get:o,put:l,getEntries:n,clear:i}}var bd=function(t,r){return t===r};function hd(e){return function(r,o){if(r===null||o===null||r.length!==o.length)return!1;for(var l=r.length,n=0;n1?t-1:0),o=1;o{if(i.length>0)throw new Error("Unsupported number of selectors");let s;if(e&&t&&r&&o&&l&&n)s=(u,d)=>{const c=er(u),p=d??(c?u.current.instanceId:tr),f=c?u.current.state:u,b=e(f,p),g=t(f,p),h=r(f,p),P=o(f,p),w=l(f,p);return n(b,g,h,P,w)};else if(e&&t&&r&&o&&l)s=(u,d)=>{const c=er(u),p=d??(c?u.current.instanceId:tr),f=c?u.current.state:u,b=e(f,p),g=t(f,p),h=r(f,p),P=o(f,p);return l(b,g,h,P)};else if(e&&t&&r&&o)s=(u,d)=>{const c=er(u),p=d??(c?u.current.instanceId:tr),f=c?u.current.state:u,b=e(f,p),g=t(f,p),h=r(f,p);return o(b,g,h)};else if(e&&t&&r)s=(u,d)=>{const c=er(u),p=d??(c?u.current.instanceId:tr),f=c?u.current.state:u,b=e(f,p),g=t(f,p);return r(b,g)};else if(e&&t)s=(u,d)=>{const c=er(u),p=d??(c?u.current.instanceId:tr),f=c?u.current.state:u,b=e(f,p);return t(b)};else throw new Error("Missing arguments");return s.acceptsApiRef=!0,s},Te=(...e)=>{const t=(...r)=>{var o,l;const[n,i]=r,s=er(n),u=s?n.current.instanceId:i??tr,d=s?n.current.state:n,{cache:c}=Od;if(c.get(u)&&(o=c.get(u))!=null&&o.get(e)){var p;return(p=c.get(u))==null?void 0:p.get(e)(d,u)}const f=Sd(...e);return c.get(u)||c.set(u,new Map),(l=c.get(u))==null||l.set(e,f),f(d,u)};return t.acceptsApiRef=!0,t},Bt=e=>e.columns,Pt=pe(Bt,e=>e.orderedFields),Vt=pe(Bt,e=>e.lookup),ft=Te(Pt,Vt,(e,t)=>e.map(r=>t[r])),at=pe(Bt,e=>e.columnVisibilityModel),He=Te(ft,at,(e,t)=>e.filter(r=>t[r.field]!==!1)),Er=Te(He,e=>e.map(t=>t.field)),qt=Te(He,e=>{const t=[];let r=0;for(let o=0;o{const r=e.length;return r===0?0:t[r-1]+e[r-1].computedWidth}),vl=Te(ft,e=>e.filter(t=>t.filterable)),ya=Te(ft,e=>e.reduce((t,r)=>(r.filterable&&(t[r.field]=r),t),{})),Lr=e=>e.columnGrouping,Ia=Te(Lr,e=>{var t;return(t=e==null?void 0:e.unwrappedGroupingModel)!=null?t:{}}),Fl=Te(Lr,e=>{var t;return(t=e==null?void 0:e.lookup)!=null?t:{}}),Ma=Te(Lr,e=>{var t;return(t=e==null?void 0:e.headerStructure)!=null?t:[]}),fr=pe(Lr,e=>{var t;return(t=e==null?void 0:e.maxDepth)!=null?t:0}),ht=e=>e.rows,Tr=pe(ht,e=>e.totalRowCount),ka=pe(ht,e=>e.loading),Ea=pe(ht,e=>e.totalTopLevelRowCount),Ot=pe(ht,e=>e.dataRowIdToModelLookup),Pr=pe(ht,e=>e.dataRowIdToIdLookup),nt=pe(ht,e=>e.tree),La=pe(ht,e=>e.groupingName),Uo=pe(ht,e=>e.treeDepths),Dr=Te(ht,e=>{const t=Object.entries(e.treeDepths);return t.length===0?1:t.filter(([,r])=>r>0).map(([r])=>Number(r)).sort((r,o)=>o-r)[0]+1}),or=pe(ht,e=>e.dataRowIds),Pd=pe(ht,e=>e==null?void 0:e.additionalRowGroups),gr=Te(Pd,e=>{var t,r;const o=e==null?void 0:e.pinnedRows;return{bottom:o==null||(t=o.bottom)==null?void 0:t.map(l=>{var n;return{id:l.id,model:(n=l.model)!=null?n:{}}}),top:o==null||(r=o.top)==null?void 0:r.map(l=>{var n;return{id:l.id,model:(n=l.model)!=null?n:{}}})}}),xd=pe(gr,e=>{var t,r;return((e==null||(t=e.top)==null?void 0:t.length)||0)+((e==null||(r=e.bottom)==null?void 0:r.length)||0)}),Ta=()=>{var e;const t=_t(),r=Y(),o=K(t,He),l=K(t,Tr),n=K(t,fr),i=K(t,xd);let s="grid";return(e=r.experimentalFeatures)!=null&&e.ariaV7&&r.treeData&&(s="treegrid"),{role:s,"aria-colcount":o.length,"aria-rowcount":n+1+i+l,"aria-multiselectable":!r.disableMultipleRowSelection}},vd=e=>{const{classes:t}=e;return he({root:["main"]},be,t)},Fd=_e("div",{name:"MuiDataGrid",slot:"Main",overridesResolver:(e,t)=>t.main})(()=>({position:"relative",flexGrow:1,display:"flex",flexDirection:"column",overflow:"hidden"})),yd=a.forwardRef((e,t)=>{var r;const o=Y(),l=vd(o),n=(r=o.experimentalFeatures)!=null&&r.ariaV7?Ta:null,i=typeof n=="function"?n():null;return x.jsx(Fd,m({ref:t,className:l.root,ownerState:o},i,{children:e.children}))}),Da=e=>e.sorting,xo=pe(Da,e=>e.sortedRows),vo=Te(xo,Ot,(e,t)=>e.map(r=>{var o;return{id:r,model:(o=t[r])!=null?o:{}}})),tt=pe(Da,e=>e.sortModel),$a=Te(tt,e=>e.reduce((r,o,l)=>(r[o.field]={sortDirection:o.sort,sortIndex:e.length>1?l+1:void 0},r),{})),yl=e=>e.filter,Re=pe(yl,e=>e.filterModel),Aa=pe(Re,e=>e.quickFilterValues),Ra=e=>e.visibleRowsLookup,Il=pe(yl,e=>e.filteredRowsLookup),Id=pe(yl,e=>e.filteredDescendantCountLookup),Mt=Te(Ra,vo,(e,t)=>t.filter(r=>e[r.id]!==!1)),ar=Te(Mt,e=>e.map(t=>t.id)),Ha=Te(Il,vo,(e,t)=>t.filter(r=>e[r.id]!==!1)),_a=Te(Ha,e=>e.map(t=>t.id)),Ml=Te(Mt,nt,Dr,(e,t,r)=>r<2?e:e.filter(o=>{var l;return((l=t[o.id])==null?void 0:l.depth)===0})),kl=pe(Mt,e=>e.length),$r=pe(Ml,e=>e.length),El=Te(Re,Vt,(e,t)=>{var r;return(r=e.items)==null?void 0:r.filter(o=>{var l,n;if(!o.field)return!1;const i=t[o.field];if(!(i!=null&&i.filterOperators)||(i==null||(l=i.filterOperators)==null?void 0:l.length)===0)return!1;const s=i.filterOperators.find(u=>u.value===o.operator);return s?!s.InputComponent||o.value!=null&&((n=o.value)==null?void 0:n.toString())!=="":!1})}),Va=Te(El,e=>e.reduce((r,o)=>(r[o.field]?r[o.field].push(o):r[o.field]=[o],r),{})),Ar=e=>e.focus,Ze=pe(Ar,e=>e.cell),Na=pe(Ar,e=>e.columnHeader),Md=pe(Ar,e=>e.columnHeaderFilter),xr=pe(Ar,e=>e.columnGroupHeader),Rr=e=>e.tabIndex,vr=pe(Rr,e=>e.cell),Ll=pe(Rr,e=>e.columnHeader),kd=pe(Rr,e=>e.columnHeaderFilter),Ga=pe(Rr,e=>e.columnGroupHeader),Fo=e=>e.density,Tl=pe(Fo,e=>e.value),Qt=pe(Fo,e=>e.factor),io=e=>e.columnMenu;function za(e){const{VirtualScrollerComponent:t,ColumnHeadersProps:r,children:o}=e,l=_t(),n=Y(),i=a.useRef(null),s=K(l,He),u=K(l,Va),d=K(l,$a),c=K(l,qt),p=K(l,Ll),f=K(l,vr),b=K(l,Ga),g=K(l,Na),h=K(l,xr),P=K(l,Qt),w=K(l,fr),C=K(l,io),E=K(l,at),T=K(l,Ma),_=!(b===null&&p===null&&f===null);ze(()=>{l.current.computeSizeAndPublishResizeEvent();const $=i.current;if(typeof ResizeObserver>"u")return()=>{};let v;const R=new ResizeObserver(()=>{v=requestAnimationFrame(()=>{l.current.computeSizeAndPublishResizeEvent()})});return $&&R.observe($),()=>{v&&window.cancelAnimationFrame(v),$&&R.unobserve($)}},[l]);const F=a.useRef(null),L=a.useRef(null),I=a.useRef(null);l.current.register("private",{columnHeadersContainerElementRef:L,columnHeadersElementRef:F,virtualScrollerRef:I,mainElementRef:i});const H=!!l.current.getRootDimensions();return x.jsxs(yd,{ref:i,children:[x.jsx(n.slots.columnHeaders,m({ref:L,innerRef:F,visibleColumns:s,filterColumnLookup:u,sortColumnLookup:d,columnPositions:c,columnHeaderTabIndexState:p,columnGroupHeaderTabIndexState:b,columnHeaderFocus:g,columnGroupHeaderFocus:h,densityFactor:P,headerGroupingMaxDepth:w,columnMenuState:C,columnVisibility:E,columnGroupsHeaderStructure:T,hasOtherElementInTabSequence:_},r)),H&&x.jsx(t,{ref:I}),o]})}function ja(){var e;const t=Y();return t.hideFooter?null:x.jsx(t.slots.footer,m({},(e=t.slotProps)==null?void 0:e.footer))}const Ue="auto-generated-group-node-root",ir=Symbol("mui.id_autogenerated"),Ed=()=>({type:"group",id:Ue,depth:-1,groupingField:null,groupingKey:null,isAutoGenerated:!0,children:[],childrenFromPath:{},childrenExpanded:!0,parent:null});function Ba(e,t,r="A row was provided without id in the rows prop:"){if(e==null)throw new Error(["MUI: The data grid component requires all rows to have a unique `id` property.","Alternatively, you can use the `getRowId` prop to specify a custom id for each row.",r,JSON.stringify(t)].join(` +`))}const so=(e,t,r)=>{const o=t?t(e):e.id;return Ba(o,e,r),o},ro=({rows:e,getRowId:t,loading:r,rowCount:o})=>{const l={type:"full",rows:[]},n={},i={};for(let s=0;s{const r=e[Ue];return Math.max(t,r.children.length+(r.footerId==null?0:1))},qa=({apiRef:e,rowCountProp:t=0,loadingProp:r,previousTree:o,previousTreeDepths:l})=>{const n=e.current.caches.rows,{tree:i,treeDepths:s,dataRowIds:u,groupingName:d}=e.current.applyStrategyProcessor("rowTreeCreation",{previousTree:o,previousTreeDepths:l,updates:n.updates,dataRowIdToIdLookup:n.dataRowIdToIdLookup,dataRowIdToModelLookup:n.dataRowIdToModelLookup}),c=e.current.unstable_applyPipeProcessors("hydrateRows",{tree:i,treeDepths:s,dataRowIdToIdLookup:n.dataRowIdToIdLookup,dataRowIds:u,dataRowIdToModelLookup:n.dataRowIdToModelLookup});return e.current.caches.rows.updates={type:"partial",actions:{insert:[],modify:[],remove:[]},idToActionLookup:{}},m({},c,{totalRowCount:Math.max(t,c.dataRowIds.length),totalTopLevelRowCount:Ua({tree:c.tree,rowCountProp:t}),groupingName:d,loading:r})},Fr=e=>e.type==="skeletonRow"||e.type==="footer"||e.type==="group"&&e.isAutoGenerated||e.type==="pinnedRow"&&e.isAutoGenerated,Dl=(e,t,r)=>{const o=e[t];if(o.type!=="group")return[];const l=[];for(let n=0;n{var o,l,n;if(e.updates.type==="full")throw new Error("MUI: Unable to prepare a partial update if a full update is not applied yet");const i=new Map;r.forEach(f=>{const b=so(f,t,"A row was provided without id when calling updateRows():");i.has(b)?i.set(b,m({},i.get(b),f)):i.set(b,f)});const s={type:"partial",actions:{insert:[...(o=e.updates.actions.insert)!=null?o:[]],modify:[...(l=e.updates.actions.modify)!=null?l:[]],remove:[...(n=e.updates.actions.remove)!=null?n:[]]},idToActionLookup:m({},e.updates.idToActionLookup)},u=m({},e.dataRowIdToModelLookup),d=m({},e.dataRowIdToIdLookup),c={insert:{},modify:{},remove:{}};i.forEach((f,b)=>{const g=s.idToActionLookup[b];if(f._action==="delete"){if(g==="remove"||!u[b])return;g!=null&&(c[g][b]=!0),s.actions.remove.push(b),delete u[b],delete d[b];return}const h=u[b];if(h){g==="remove"?(c.remove[b]=!0,s.actions.modify.push(b)):g==null&&s.actions.modify.push(b),u[b]=m({},h,f);return}g==="remove"?(c.remove[b]=!0,s.actions.insert.push(b)):g==null&&s.actions.insert.push(b),u[b]=f,d[b]=b});const p=Object.keys(c);for(let f=0;f0&&(s.actions[b]=s.actions[b].filter(h=>!g[h]))}return{dataRowIdToModelLookup:u,dataRowIdToIdLookup:d,updates:s,rowsBeforePartialUpdates:e.rowsBeforePartialUpdates,loadingPropBeforePartialUpdates:e.loadingPropBeforePartialUpdates,rowCountPropBeforePartialUpdates:e.rowCountPropBeforePartialUpdates}};function Wa(e){var t,r;const o=gr(e),l=(o==null||(t=o.top)==null?void 0:t.reduce((i,s)=>(i+=e.current.unstable_getRowHeight(s.id),i),0))||0,n=(o==null||(r=o.bottom)==null?void 0:r.reduce((i,s)=>(i+=e.current.unstable_getRowHeight(s.id),i),0))||0;return{top:l,bottom:n}}function Ka(e,t){const r=Qt(e);return`var(--DataGrid-overlayHeight, ${2*Math.floor(t*r)}px)`}const Td=_e("div",{name:"MuiDataGrid",slot:"OverlayWrapper",shouldForwardProp:e=>e!=="overlayType",overridesResolver:(e,t)=>t.overlayWrapper})(({overlayType:e})=>({position:"sticky",top:0,left:0,width:0,height:0,zIndex:e==="loadingOverlay"?5:4})),Dd=_e("div",{name:"MuiDataGrid",slot:"OverlayWrapperInner",shouldForwardProp:e=>e!=="overlayType",overridesResolver:(e,t)=>t.overlayWrapperInner})({}),$d=e=>{const{classes:t}=e;return he({root:["overlayWrapper"],inner:["overlayWrapperInner"]},be,t)};function Ad(e){var t,r;const o=ce(),l=Y(),[n,i]=a.useState(()=>{var c,p;return(c=(p=o.current.getRootDimensions())==null?void 0:p.viewportInnerSize)!=null?c:null}),s=a.useCallback(()=>{var c,p;i((c=(p=o.current.getRootDimensions())==null?void 0:p.viewportInnerSize)!=null?c:null)},[o]);ze(()=>o.current.subscribeEvent("viewportInnerSizeChange",s),[o,s]);let u=(t=n==null?void 0:n.height)!=null?t:0;l.autoHeight&&u===0&&(u=Ka(o,l.rowHeight));const d=$d(m({},e,{classes:l.classes}));return n?x.jsx(Td,{className:xe(d.root),overlayType:e.overlayType,children:x.jsx(Dd,m({className:xe(d.inner),style:{height:u,width:(r=n==null?void 0:n.width)!=null?r:0}},e))}):null}function Qa(){const e=ce(),t=Y(),r=K(e,Tr),o=K(e,kl),l=K(e,ka),n=!l&&r===0,i=!l&&r>0&&o===0;let s=null,u="";if(n){var d;s=x.jsx(t.slots.noRowsOverlay,m({},(d=t.slotProps)==null?void 0:d.noRowsOverlay)),u="noRowsOverlay"}if(i){var c;s=x.jsx(t.slots.noResultsOverlay,m({},(c=t.slotProps)==null?void 0:c.noResultsOverlay)),u="noResultsOverlay"}if(l){var p;s=x.jsx(t.slots.loadingOverlay,m({},(p=t.slotProps)==null?void 0:p.loadingOverlay)),u="loadingOverlay"}return s===null?null:x.jsx(Ad,{overlayType:u,children:s})}function yo(e){return a.memo(e,Fa)}let Ro;function Za(){return Ro===void 0&&document.createElement("div").focus({get preventScroll(){return Ro=!0,!1}}),Ro}var mt=function(e){return e.Cell="cell",e.Row="row",e}(mt||{}),ye=function(e){return e.Edit="edit",e.View="view",e}(ye||{}),ke=function(e){return e.Edit="edit",e.View="view",e}(ke||{}),Ke=function(e){return e.And="and",e.Or="or",e}(Ke||{}),wt=function(e){return e.enterKeyDown="enterKeyDown",e.cellDoubleClick="cellDoubleClick",e.printableKeyDown="printableKeyDown",e.deleteKeyDown="deleteKeyDown",e.pasteKeyDown="pasteKeyDown",e}(wt||{}),lt=function(e){return e.cellFocusOut="cellFocusOut",e.escapeKeyDown="escapeKeyDown",e.enterKeyDown="enterKeyDown",e.tabKeyDown="tabKeyDown",e.shiftTabKeyDown="shiftTabKeyDown",e}(lt||{}),Ft=function(e){return e.enterKeyDown="enterKeyDown",e.cellDoubleClick="cellDoubleClick",e.printableKeyDown="printableKeyDown",e.deleteKeyDown="deleteKeyDown",e}(Ft||{}),St=function(e){return e.rowFocusOut="rowFocusOut",e.escapeKeyDown="escapeKeyDown",e.enterKeyDown="enterKeyDown",e.tabKeyDown="tabKeyDown",e.shiftTabKeyDown="shiftTabKeyDown",e}(St||{});function $l(e){return e.field!==void 0}function Rd(e){return e.scrollHeight>e.clientHeight||e.scrollWidth>e.clientWidth}function Hd(e,t){return e.closest(`.${t}`)}function Al(e){return e.replace(/["\\]/g,"\\$&")}function _d(e,t){return e.querySelector(`[role="columnheader"][data-field="${Al(t)}"]`)}function Ja(e){return`.${V.row}[data-id="${Al(String(e))}"]`}function Vd(e,t){return e.querySelector(Ja(t))}function Nd(e,{id:t,field:r}){const o=Ja(t),l=`.${V.cell}[data-field="${Al(r)}"]`,n=`${o} ${l}`;return e.querySelector(n)}function Hr(e){return e.target.nodeType===1&&!e.currentTarget.contains(e.target)}function me(e,t,r){const o=a.useRef(!0);a.useEffect(()=>{o.current=!1,e.current.register(r,t)},[e,r,t]),o.current&&e.current.register(r,t)}class lr extends Error{}function Gd(e,t){const{getRowId:r}=t,o=a.useCallback(g=>({field:g,colDef:e.current.getColumn(g)}),[e]),l=a.useCallback(g=>{const h=e.current.getRow(g);if(!h)throw new lr(`No row with id #${g} found`);return{id:g,columns:e.current.getAllColumns(),row:h}},[e]),n=a.useCallback((g,h)=>{const P=e.current.getRow(g),w=e.current.getRowNode(g);if(!P||!w)throw new lr(`No row with id #${g} found`);const C=Ze(e),E=vr(e);return{id:g,field:h,row:P,rowNode:w,value:P[h],colDef:e.current.getColumn(h),cellMode:e.current.getCellMode(g,h),api:e.current,hasFocus:C!==null&&C.field===h&&C.id===g,tabIndex:E&&E.field===h&&E.id===g?0:-1}},[e]),i=a.useCallback((g,h)=>{const P=e.current.getColumn(h),w=e.current.getCellValue(g,h),C=e.current.getRow(g),E=e.current.getRowNode(g);if(!C||!E)throw new lr(`No row with id #${g} found`);const T=Ze(e),_=vr(e),F={id:g,field:h,row:C,rowNode:E,colDef:P,cellMode:e.current.getCellMode(g,h),hasFocus:T!==null&&T.field===h&&T.id===g,tabIndex:_&&_.field===h&&_.id===g?0:-1,value:w,formattedValue:w,isEditable:!1};return P&&P.valueFormatter&&(F.formattedValue=P.valueFormatter({id:g,field:F.field,value:F.value,api:e.current})),F.isEditable=P&&e.current.isCellEditable(F),F},[e]),s=a.useCallback((g,h)=>{const P=e.current.getColumn(h);if(!P||!P.valueGetter){const w=e.current.getRow(g);if(!w)throw new lr(`No row with id #${g} found`);return w[h]}return P.valueGetter(n(g,h))},[e,n]),u=a.useCallback((g,h)=>{var P;const w=ir in g?g[ir]:(P=r==null?void 0:r(g))!=null?P:g.id,C=h.field;return!h||!h.valueGetter?g[C]:h.valueGetter(n(w,C))},[n,r]),d=a.useCallback((g,h)=>{var P;const w=u(g,h);if(!h||!h.valueFormatter)return w;const C=(P=r?r(g):g.id)!=null?P:g[ir],E=h.field;return h.valueFormatter({id:C,field:E,value:w,api:e.current})},[e,r,u]),c=a.useCallback(g=>e.current.rootElementRef.current?_d(e.current.rootElementRef.current,g):null,[e]),p=a.useCallback(g=>e.current.rootElementRef.current?Vd(e.current.rootElementRef.current,g):null,[e]),f=a.useCallback((g,h)=>e.current.rootElementRef.current?Nd(e.current.rootElementRef.current,{id:g,field:h}):null,[e]);me(e,{getCellValue:s,getCellParams:i,getCellElement:f,getRowValue:u,getRowFormattedValue:d,getRowParams:l,getRowElement:p,getColumnHeaderParams:o,getColumnHeaderElement:c},"public")}const zd=["changeReason","unstable_updateValueOnRender"],jd=["align","children","editCellState","colIndex","column","cellMode","field","formattedValue","hasFocus","height","isEditable","isSelected","rowId","tabIndex","style","value","width","className","showRightBorder","extendRowFullWidth","row","colSpan","disableDragEvents","isNotVisible","onClick","onDoubleClick","onMouseDown","onMouseUp","onMouseOver","onKeyDown","onKeyUp","onDragEnter","onDragOver"],Bd=["column","rowId","editCellState","align","children","colIndex","height","width","className","showRightBorder","extendRowFullWidth","row","colSpan","disableDragEvents","isNotVisible","onClick","onDoubleClick","onMouseDown","onMouseUp","onMouseOver","onKeyDown","onKeyUp","onDragEnter","onDragOver","style"],Ud=["changeReason","unstable_updateValueOnRender"],uo={id:-1,field:"__unset__",row:{},rowNode:{id:-1,depth:0,type:"leaf",parent:-1,groupingKey:null},colDef:{type:"string",field:"__unset__",computedWidth:0},cellMode:ye.View,hasFocus:!1,tabIndex:-1,value:null,formattedValue:"__unset__",isEditable:!1,api:{}},Ya=e=>{const{align:t,showRightBorder:r,isEditable:o,isSelected:l,isSelectionMode:n,classes:i}=e,s={root:["cell",`cell--text${$t(t)}`,o&&"cell--editable",l&&"selected",r&&"cell--withRightBorder",n&&!o&&"cell--selectionMode","withBorderColor"],content:["cellContent"]};return he(s,be,i)},qd=a.forwardRef((e,t)=>{const{column:r,rowId:o,editCellState:l}=e,n=ce(),i=Y(),s=r.field,u=K(n,()=>{try{const H=n.current.getCellParams(o,s);return H.api=n.current,H}catch(I){if(I instanceof lr)return uo;throw I}},xl),d=K(n,()=>n.current.unstable_applyPipeProcessors("isCellSelected",!1,{id:o,field:s}));if(u===uo)return null;const{cellMode:c,hasFocus:p,isEditable:f,value:b,formattedValue:g}=u,h=r.type==="actions",P=(c==="view"||!f)&&!h?u.tabIndex:-1,{classes:w,getCellClassName:C}=i,E=n.current.unstable_applyPipeProcessors("cellClassName",[],{id:o,field:s});r.cellClassName&&E.push(typeof r.cellClassName=="function"?r.cellClassName(u):r.cellClassName),C&&E.push(C(u));let T;if(l==null&&r.renderCell&&(T=r.renderCell(u),E.push(V["cell--withRenderer"]),E.push(w==null?void 0:w["cell--withRenderer"])),l!=null&&r.renderEditCell){const I=n.current.getRowWithUpdatedValues(o,r.field),H=J(l,zd),$=m({},u,{row:I},H);T=r.renderEditCell($),E.push(V["cell--editing"]),E.push(w==null?void 0:w["cell--editing"])}const{slots:_}=i,F=_.cell,L=m({},e,{ref:t,field:s,formattedValue:g,hasFocus:p,isEditable:f,isSelected:d,value:b,cellMode:c,children:T,tabIndex:P,className:xe(E)});return a.createElement(F,L)}),Wd=a.forwardRef((e,t)=>{var r;const{align:o,children:l,colIndex:n,column:i,cellMode:s,field:u,formattedValue:d,hasFocus:c,height:p,isEditable:f,isSelected:b,rowId:g,tabIndex:h,style:P,value:w,width:C,className:E,showRightBorder:T,colSpan:_,disableDragEvents:F,isNotVisible:L,onClick:I,onDoubleClick:H,onMouseDown:$,onMouseUp:v,onMouseOver:R,onKeyDown:y,onKeyUp:S,onDragEnter:O,onDragOver:M}=e,A=J(e,jd),k=d??w,D=a.useRef(null),N=xt(t,D),j=a.useRef(null),z=ce(),B=Y(),Z={align:o,showRightBorder:T,isEditable:f,classes:B.classes,isSelected:b},Q=Ya(Z),ee=a.useCallback(de=>U=>{const q=z.current.getCellParams(g,u||"");z.current.publishEvent(de,q,U),v&&v(U)},[z,u,v,g]),oe=a.useCallback(de=>U=>{const q=z.current.getCellParams(g,u||"");z.current.publishEvent(de,q,U),$&&$(U)},[z,u,$,g]),Ce=a.useCallback((de,U)=>q=>{if(!z.current.getRow(g))return;const ae=z.current.getCellParams(g,u||"");z.current.publishEvent(de,ae,q),U&&U(q)},[z,u,g]),ve=a.useMemo(()=>L?{padding:0,opacity:0,width:0,border:0}:m({minWidth:C,maxWidth:C,minHeight:p,maxHeight:p==="auto"?"none":p},P),[C,p,L,P]);a.useEffect(()=>{if(!c||s===ye.Edit)return;const de=Ir(z.current.rootElementRef.current);if(D.current&&!D.current.contains(de.activeElement)){const U=D.current.querySelector('[tabindex="0"]'),q=j.current||U||D.current;if(Za())q.focus({preventScroll:!0});else{const ae=z.current.getScrollPosition();q.focus(),z.current.scroll(ae)}}},[c,s,z]);let se=A.onFocus;const ie=i.type==="actions";let ue=l;if(ue===void 0){const de=k==null?void 0:k.toString();ue=x.jsx("div",{className:Q.content,title:de,role:"presentation",children:de})}a.isValidElement(ue)&&ie&&(ue=a.cloneElement(ue,{focusElementRef:j}));const we=F?null:{onDragEnter:Ce("cellDragEnter",O),onDragOver:Ce("cellDragOver",M)},Fe=(r=B.experimentalFeatures)==null?void 0:r.ariaV7;return x.jsx("div",m({ref:N,className:xe(E,Q.root),role:Fe?"gridcell":"cell","data-field":u,"data-colindex":n,"aria-colindex":n+1,"aria-colspan":_,style:ve,tabIndex:h,onClick:Ce("cellClick",I),onDoubleClick:Ce("cellDoubleClick",H),onMouseOver:Ce("cellMouseOver",R),onMouseDown:oe("cellMouseDown"),onMouseUp:ee("cellMouseUp"),onKeyDown:Ce("cellKeyDown",y),onKeyUp:Ce("cellKeyUp",S)},we,A,{onFocus:se,children:ue}))}),Kd=yo(qd),Qd=a.forwardRef((e,t)=>{var r,o,l,n;const{column:i,rowId:s,editCellState:u,align:d,colIndex:c,height:p,width:f,className:b,showRightBorder:g,colSpan:h,disableDragEvents:P,isNotVisible:w,onClick:C,onDoubleClick:E,onMouseDown:T,onMouseUp:_,onMouseOver:F,onKeyDown:L,onKeyUp:I,onDragEnter:H,onDragOver:$,style:v}=e,R=J(e,Bd),y=ce(),S=Y(),O=i.field,M=K(y,()=>{try{const te=y.current.getCellParams(s,O);return te.api=y.current,te}catch(W){if(W instanceof lr)return uo;throw W}},xl),A=K(y,()=>y.current.unstable_applyPipeProcessors("isCellSelected",!1,{id:s,field:O})),{cellMode:k,hasFocus:D,isEditable:N,value:j,formattedValue:z}=M,B=i.type==="actions"&&((r=(o=i).getActions)==null?void 0:r.call(o,y.current.getRowParams(s)).some(W=>!W.props.disabled)),Z=(k==="view"||!N)&&!B?M.tabIndex:-1,{classes:Q,getCellClassName:ee}=S,oe=y.current.unstable_applyPipeProcessors("cellClassName",[],{id:s,field:O});i.cellClassName&&oe.push(typeof i.cellClassName=="function"?i.cellClassName(M):i.cellClassName),ee&&oe.push(ee(M));const Ce=z??j,ve=a.useRef(null),se=xt(t,ve),ie=a.useRef(null),ue=(l=S.unstable_cellSelection)!=null?l:!1,we={align:d,showRightBorder:g,isEditable:N,classes:S.classes,isSelected:A,isSelectionMode:ue},Fe=Ya(we),de=a.useCallback(W=>te=>{const le=y.current.getCellParams(s,O||"");y.current.publishEvent(W,le,te),_&&_(te)},[y,O,_,s]),U=a.useCallback(W=>te=>{const le=y.current.getCellParams(s,O||"");y.current.publishEvent(W,le,te),T&&T(te)},[y,O,T,s]),q=a.useCallback((W,te)=>le=>{if(!y.current.getRow(s))return;const Oe=y.current.getCellParams(s,O||"");y.current.publishEvent(W,Oe,le),te&&te(le)},[y,O,s]),ae=a.useMemo(()=>w?m({padding:0,opacity:0,width:0,border:0},v):m({minWidth:f,maxWidth:f,minHeight:p,maxHeight:p==="auto"?"none":p},v),[f,p,w,v]);if(a.useEffect(()=>{if(!D||k===ye.Edit)return;const W=Ir(y.current.rootElementRef.current);if(ve.current&&!ve.current.contains(W.activeElement)){const te=ve.current.querySelector('[tabindex="0"]'),le=ie.current||te||ve.current;if(Za())le.focus({preventScroll:!0});else{const Oe=y.current.getScrollPosition();le.focus(),y.current.scroll(Oe)}}},[D,k,y]),M===uo)return null;let fe=R.onFocus,ge;if(u==null&&i.renderCell&&(ge=i.renderCell(M),oe.push(V["cell--withRenderer"]),oe.push(Q==null?void 0:Q["cell--withRenderer"])),u!=null&&i.renderEditCell){const W=y.current.getRowWithUpdatedValues(s,i.field),te=J(u,Ud),le=m({},M,{row:W},te);ge=i.renderEditCell(le),oe.push(V["cell--editing"]),oe.push(Q==null?void 0:Q["cell--editing"])}if(ge===void 0){const W=Ce==null?void 0:Ce.toString();ge=x.jsx("div",{className:Fe.content,title:W,role:"presentation",children:W})}a.isValidElement(ge)&&B&&(ge=a.cloneElement(ge,{focusElementRef:ie}));const Se=P?null:{onDragEnter:q("cellDragEnter",H),onDragOver:q("cellDragOver",$)},ne=(n=S.experimentalFeatures)==null?void 0:n.ariaV7;return x.jsx("div",m({ref:se,className:xe(b,oe,Fe.root),role:ne?"gridcell":"cell","data-field":O,"data-colindex":c,"aria-colindex":c+1,"aria-colspan":h,style:ae,tabIndex:Z,onClick:q("cellClick",C),onDoubleClick:q("cellDoubleClick",E),onMouseOver:q("cellMouseOver",F),onMouseDown:U("cellMouseDown"),onMouseUp:de("cellMouseUp"),onKeyDown:q("cellKeyDown",L),onKeyUp:q("cellKeyUp",I)},Se,R,{onFocus:fe,children:ge}))}),qo=yo(Qd),Zd=["id","value","formattedValue","api","field","row","rowNode","colDef","cellMode","isEditable","hasFocus","tabIndex"],Jd=e=>{const{classes:t}=e;return he({root:["booleanCell"]},be,t)};function Yd(e){const{value:t}=e,r=J(e,Zd),o=ce(),l=Y(),n={classes:l.classes},i=Jd(n),s=a.useMemo(()=>t?l.slots.booleanCellTrueIcon:l.slots.booleanCellFalseIcon,[l.slots.booleanCellFalseIcon,l.slots.booleanCellTrueIcon,t]);return x.jsx(s,m({fontSize:"small",className:i.root,titleAccess:o.current.getLocaleText(t?"booleanCellTrueLabel":"booleanCellFalseLabel"),"data-value":!!t},r))}const Xa=a.memo(Yd),ei=e=>Fr(e.rowNode)?"":x.jsx(Xa,m({},e)),Xd=["id","value","formattedValue","api","field","row","rowNode","colDef","cellMode","isEditable","tabIndex","className","hasFocus","isValidating","isProcessingProps","error","onValueChange"],ep=e=>{const{classes:t}=e;return he({root:["editBooleanCell"]},be,t)};function ti(e){var t;const{id:r,value:o,field:l,className:n,hasFocus:i,onValueChange:s}=e,u=J(e,Xd),d=ce(),c=a.useRef(null),p=Ie(),[f,b]=a.useState(o),g=Y(),h={classes:g.classes},P=ep(h),w=a.useCallback(async C=>{const E=C.target.checked;s&&await s(C,E),b(E),await d.current.setEditCellValue({id:r,field:l,value:E},C)},[d,l,r,s]);return a.useEffect(()=>{b(o)},[o]),ze(()=>{i&&c.current.focus()},[i]),x.jsx("label",m({htmlFor:p,className:xe(P.root,n)},u,{children:x.jsx(g.slots.baseCheckbox,m({id:p,inputRef:c,checked:!!f,onChange:w,size:"small"},(t=g.slotProps)==null?void 0:t.baseCheckbox))}))}const ri=e=>x.jsx(ti,m({},e)),tp=["id","value","formattedValue","api","field","row","rowNode","colDef","cellMode","isEditable","tabIndex","hasFocus","inputProps","isValidating","isProcessingProps","onValueChange"],rp=De(fa)({fontSize:"inherit"}),op=e=>{const{classes:t}=e;return he({root:["editInputCell"]},be,t)};function oi(e){const{id:t,value:r,field:o,colDef:l,hasFocus:n,inputProps:i,onValueChange:s}=e,u=J(e,tp),d=l.type==="dateTime",c=ce(),p=a.useRef(),f=a.useMemo(()=>{let T;r==null?T=null:r instanceof Date?T=r:T=new Date((r??"").toString());let _;return T==null||Number.isNaN(T.getTime())?_="":_=new Date(T.getTime()-T.getTimezoneOffset()*60*1e3).toISOString().substr(0,d?16:10),{parsed:T,formatted:_}},[r,d]),[b,g]=a.useState(f),P={classes:Y().classes},w=op(P),C=a.useCallback(T=>{if(T==="")return null;const[_,F]=T.split("T"),[L,I,H]=_.split("-"),$=new Date;if($.setFullYear(Number(L),Number(I)-1,Number(H)),$.setHours(0,0,0,0),F){const[v,R]=F.split(":");$.setHours(Number(v),Number(R),0,0)}return $},[]),E=a.useCallback(async T=>{const _=T.target.value,F=C(_);s&&await s(T,F),g({parsed:F,formatted:_}),c.current.setEditCellValue({id:t,field:o,value:F},T)},[c,o,t,s,C]);return a.useEffect(()=>{g(T=>{var _,F;return f.parsed!==T.parsed&&((_=f.parsed)==null?void 0:_.getTime())!==((F=T.parsed)==null?void 0:F.getTime())?f:T})},[f]),ze(()=>{n&&p.current.focus()},[n]),x.jsx(rp,m({inputRef:p,fullWidth:!0,className:w.root,type:d?"datetime-local":"date",inputProps:m({max:d?"9999-12-31T23:59":"9999-12-31"},i),value:b.formatted,onChange:E},u))}const Rl=e=>x.jsx(oi,m({},e)),lp=["id","value","formattedValue","api","field","row","rowNode","colDef","cellMode","isEditable","tabIndex","hasFocus","isValidating","debounceMs","isProcessingProps","onValueChange"],np=e=>{const{classes:t}=e;return he({root:["editInputCell"]},be,t)},ap=De(fa,{name:"MuiDataGrid",slot:"EditInputCell",overridesResolver:(e,t)=>t.editInputCell})(({theme:e})=>m({},e.typography.body2,{padding:"1px 0","& input":{padding:"0 16px",height:"100%"}})),li=a.forwardRef((e,t)=>{const r=Y(),{id:o,value:l,field:n,colDef:i,hasFocus:s,debounceMs:u=200,isProcessingProps:d,onValueChange:c}=e,p=J(e,lp),f=ce(),b=a.useRef(),[g,h]=a.useState(l),P=np(r),w=a.useCallback(async E=>{const T=E.target.value;c&&await c(E,T);const _=f.current.getColumn(n);let F=T;_.valueParser&&(F=_.valueParser(T,f.current.getCellParams(o,n))),h(F),f.current.setEditCellValue({id:o,field:n,value:F,debounceMs:u,unstable_skipValueParser:!0},E)},[f,u,n,o,c]),C=f.current.unstable_getEditCellMeta(o,n);return a.useEffect(()=>{(C==null?void 0:C.changeReason)!=="debouncedSetEditCellValue"&&h(l)},[C,l]),ze(()=>{s&&b.current.focus()},[s]),x.jsx(ap,m({ref:t,inputRef:b,className:P.root,ownerState:r,fullWidth:!0,type:i.type==="number"?i.type:"text",value:g??"",onChange:w,endAdornment:d?x.jsx(r.slots.loadIcon,{fontSize:"small",color:"action"}):void 0},p))}),ni=e=>x.jsx(li,m({},e)),co=e=>e==="Escape",ip=e=>e==="Enter",Io=e=>e==="Tab",ai=e=>e===" ",sp=e=>e.indexOf("Arrow")===0,up=e=>e==="Home"||e==="End",cp=e=>e.indexOf("Page")===0;function ii(e){return e.key.length===1&&!e.ctrlKey&&!e.metaKey}const po=e=>up(e)||sp(e)||cp(e)||ai(e),dp=e=>!!e.key,Hl=e=>Io(e)||co(e);function Ut(e){return(e==null?void 0:e.type)==="singleSelect"}function Wo(e,t,r){if(t===void 0)return;const o=t.find(l=>{const n=r(l);return String(n)===String(e)});return r(o)}const pp=["id","value","formattedValue","api","field","row","rowNode","colDef","cellMode","isEditable","tabIndex","className","hasFocus","isValidating","isProcessingProps","error","onValueChange","initialOpen","getOptionLabel","getOptionValue"],fp=["MenuProps"];function gp(e){return!!e.key}function si(e){var t,r,o;const l=Y(),{id:n,value:i,field:s,row:u,colDef:d,hasFocus:c,error:p,onValueChange:f,initialOpen:b=l.editMode===mt.Cell,getOptionLabel:g,getOptionValue:h}=e,P=J(e,pp),w=ce(),C=a.useRef(),E=a.useRef(),[T,_]=a.useState(b),L=(r=(((t=l.slotProps)==null?void 0:t.baseSelect)||{}).native)!=null?r:!1,I=((o=l.slotProps)==null?void 0:o.baseSelect)||{},{MenuProps:H}=I,$=J(I,fp);if(ze(()=>{if(c){var A;(A=E.current)==null||A.focus()}},[c]),!Ut(d))return null;let v;if(typeof(d==null?void 0:d.valueOptions)=="function"?v=d==null?void 0:d.valueOptions({id:n,row:u,field:s}):v=d==null?void 0:d.valueOptions,!v)return null;const R=h||d.getOptionValue,y=g||d.getOptionLabel,S=async A=>{if(!Ut(d)||!v)return;_(!1);const k=A.target,D=Wo(k.value,v,R);f&&await f(A,D),await w.current.setEditCellValue({id:n,field:s,value:D},A)},O=(A,k)=>{if(l.editMode===mt.Row){_(!1);return}if(k==="backdropClick"||co(A.key)){const D=w.current.getCellParams(n,s);w.current.publishEvent("cellEditStop",m({},D,{reason:co(A.key)?lt.escapeKeyDown:lt.cellFocusOut}))}},M=A=>{gp(A)&&A.key==="Enter"||_(!0)};return!v||!d?null:x.jsx(l.slots.baseSelect,m({ref:C,inputRef:E,value:i,onChange:S,open:T,onOpen:M,MenuProps:m({onClose:O},H),error:p,native:L,fullWidth:!0},P,$,{children:v.map(A=>{var k;const D=R(A);return a.createElement(l.slots.baseSelectOption,m({},((k=l.slotProps)==null?void 0:k.baseSelectOption)||{},{native:L,key:D,value:D}),y(A))})}))}const ui=e=>x.jsx(si,m({},e)),mp=["open","target","onClose","children","position","className","onExited"],bp=e=>{const{classes:t}=e;return he({root:["menu"]},be,t)},hp=De(gl,{name:"MuiDataGrid",slot:"Menu",overridesResolver:(e,t)=>t.menu})(({theme:e})=>({zIndex:e.zIndex.modal,[`& .${V.menuList}`]:{outline:0}})),Cp={"bottom-start":"top left","bottom-end":"top right"};function _r(e){var t;const{open:r,target:o,onClose:l,children:n,position:i,className:s,onExited:u}=e,d=J(e,mp),c=ce(),p=Y(),f=bp(p),b=a.useRef(null);ze(()=>{if(r)b.current=document.activeElement instanceof HTMLElement?document.activeElement:null;else{var P,w;(P=b.current)==null||(w=P.focus)==null||w.call(P),b.current=null}},[r]),a.useEffect(()=>{const P=r?"menuOpen":"menuClose";c.current.publishEvent(P,{target:o})},[c,r,o]);const g=P=>w=>{P&&P(),u&&u(w)},h=P=>{P.target&&(o===P.target||o!=null&&o.contains(P.target))||l(P)};return x.jsx(hp,m({as:p.slots.basePopper,className:xe(s,f.root),ownerState:p,open:r,anchorEl:o,transition:!0,placement:i},d,(t=p.slotProps)==null?void 0:t.basePopper,{children:({TransitionProps:P,placement:w})=>x.jsx(ga,{onClickAway:h,mouseEvent:"onMouseDown",children:x.jsx(Ru,m({},P,{style:{transformOrigin:Cp[w]},onExited:g(P==null?void 0:P.onExited),children:x.jsx(ma,{children:n})}))})}))}const wp=["api","colDef","id","hasFocus","isEditable","field","value","formattedValue","row","rowNode","cellMode","tabIndex","position","focusElementRef"],Sp=e=>typeof e.getActions=="function";function ci(e){var t;const{colDef:r,id:o,hasFocus:l,tabIndex:n,position:i="bottom-end",focusElementRef:s}=e,u=J(e,wp),[d,c]=a.useState(-1),[p,f]=a.useState(!1),b=ce(),g=a.useRef(null),h=a.useRef(null),P=a.useRef(!1),w=a.useRef({}),C=Mr(),E=Ie(),T=Ie(),_=Y();if(!Sp(r))throw new Error("MUI: Missing the `getActions` property in the `GridColDef`.");const F=r.getActions(b.current.getRowParams(o)),L=F.filter(M=>!M.props.showInMenu),I=F.filter(M=>M.props.showInMenu),H=L.length+(I.length?1:0);a.useLayoutEffect(()=>{l||Object.entries(w.current).forEach(([M,A])=>{A==null||A.stop({},()=>{delete w.current[M]})})},[l]),a.useEffect(()=>{if(d<0||!g.current||d>=g.current.children.length)return;g.current.children[d].focus({preventScroll:!0})},[d]),a.useEffect(()=>{l||(c(-1),P.current=!1)},[l]),a.useImperativeHandle(s,()=>({focus(){if(!P.current){const M=F.findIndex(A=>!A.props.disabled);c(M)}}}),[F]),a.useEffect(()=>{d>=H&&c(H-1)},[d,H]);const $=()=>{f(!0),c(H-1),P.current=!0},v=()=>{f(!1)},R=M=>A=>{w.current[M]=A},y=(M,A)=>k=>{c(M),P.current=!0,A&&A(k)},S=M=>{if(H<=1)return;const A=(D,N)=>{var j;if(D<0||D>F.length)return D;const z=C.direction==="rtl"?-1:1,B=(N==="left"?-1:1)*z;return(j=F[D+B])!=null&&j.props.disabled?A(D+B,N):D+B};let k=d;M.key==="ArrowRight"?k=A(d,"right"):M.key==="ArrowLeft"&&(k=A(d,"left")),!(k<0||k>=H)&&k!==d&&(M.preventDefault(),M.stopPropagation(),c(k))},O=M=>{M.key==="Tab"&&M.preventDefault(),["Tab","Escape"].includes(M.key)&&v()};return x.jsxs("div",m({role:"menu",ref:g,tabIndex:-1,className:V.actionsCell,onKeyDown:S},u,{children:[L.map((M,A)=>a.cloneElement(M,{key:A,touchRippleRef:R(A),onClick:y(A,M.props.onClick),tabIndex:d===A?n:-1})),I.length>0&&T&&x.jsx(_.slots.baseIconButton,m({ref:h,id:T,"aria-label":b.current.getLocaleText("actionsCellMore"),"aria-haspopup":"menu","aria-expanded":p,"aria-controls":p?E:void 0,role:"menuitem",size:"small",onClick:$,touchRippleRef:R(T),tabIndex:d===L.length?n:-1},(t=_.slotProps)==null?void 0:t.baseIconButton,{children:x.jsx(_.slots.moreActionsIcon,{fontSize:"small"})})),I.length>0&&x.jsx(_r,{open:p,target:h.current,position:i,onClose:v,children:x.jsx(ho,{id:E,className:V.menuList,onKeyDown:O,"aria-labelledby":T,variant:"menu",autoFocusItem:!0,children:I.map((M,A)=>a.cloneElement(M,{key:A,closeMenu:v}))})})]}))}const di=e=>x.jsx(ci,m({},e)),Op=["label","icon","showInMenu","onClick"],Pp=["label","icon","showInMenu","onClick","closeMenuOnClick","closeMenu"],xp=a.forwardRef((e,t)=>{const r=Y();if(!e.showInMenu){var o;const{label:p,icon:f,onClick:b}=e,g=J(e,Op),h=P=>{b==null||b(P)};return x.jsx(r.slots.baseIconButton,m({ref:t,size:"small",role:"menuitem","aria-label":p},g,{onClick:h},(o=r.slotProps)==null?void 0:o.baseIconButton,{children:a.cloneElement(f,{fontSize:"small"})}))}const{label:l,icon:n,onClick:i,closeMenuOnClick:s=!0,closeMenu:u}=e,d=J(e,Pp),c=p=>{i==null||i(p),s&&(u==null||u())};return x.jsxs(dt,m({ref:t},d,{onClick:c,children:[n&&x.jsx(Dt,{children:n}),l]}))}),vp=["field","align","width","contentWidth"],Fp=e=>{const{align:t,classes:r}=e,o={root:["cell","cellSkeleton",`cell--text${$t(t)}`,"withBorderColor"]};return he(o,be,r)};function pi(e){const{align:t,width:r,contentWidth:o}=e,l=J(e,vp),i={classes:Y().classes,align:t},s=Fp(i);return x.jsx("div",m({className:s.root,style:{width:r}},l,{children:x.jsx(Hu,{width:`${o}%`})}))}function yp(e){return e.vars?e.vars.palette.TableCell.border:e.palette.mode==="light"?_u(Ct(e.palette.divider,1),.88):Vu(Ct(e.palette.divider,1),.68)}const _n={[`.${V.columnSeparator}, .${V["columnSeparator--resizing"]}`]:{visibility:"visible",width:"auto"}},Vn={[`& .${V.iconButtonContainer}`]:{visibility:"visible",width:"auto"},[`& .${V.menuIcon}`]:{width:"auto",visibility:"visible"}},Ip=De("div",{name:"MuiDataGrid",slot:"Root",overridesResolver:(e,t)=>[{[`&.${V.autoHeight}`]:t.autoHeight},{[`&.${V.aggregationColumnHeader}`]:t.aggregationColumnHeader},{[`&.${V["aggregationColumnHeader--alignLeft"]}`]:t["aggregationColumnHeader--alignLeft"]},{[`&.${V["aggregationColumnHeader--alignCenter"]}`]:t["aggregationColumnHeader--alignCenter"]},{[`&.${V["aggregationColumnHeader--alignRight"]}`]:t["aggregationColumnHeader--alignRight"]},{[`&.${V.aggregationColumnHeaderLabel}`]:t.aggregationColumnHeaderLabel},{[`&.${V["root--disableUserSelection"]} .${V.cell}`]:t["root--disableUserSelection"]},{[`&.${V.autosizing}`]:t.autosizing},{[`& .${V.editBooleanCell}`]:t.editBooleanCell},{[`& .${V["cell--editing"]}`]:t["cell--editing"]},{[`& .${V["cell--textCenter"]}`]:t["cell--textCenter"]},{[`& .${V["cell--textLeft"]}`]:t["cell--textLeft"]},{[`& .${V["cell--textRight"]}`]:t["cell--textRight"]},{[`& .${V["cell--withRenderer"]}`]:t["cell--withRenderer"]},{[`& .${V.cell}`]:t.cell},{[`& .${V["cell--rangeTop"]}`]:t["cell--rangeTop"]},{[`& .${V["cell--rangeBottom"]}`]:t["cell--rangeBottom"]},{[`& .${V["cell--rangeLeft"]}`]:t["cell--rangeLeft"]},{[`& .${V["cell--rangeRight"]}`]:t["cell--rangeRight"]},{[`& .${V["cell--withRightBorder"]}`]:t["cell--withRightBorder"]},{[`& .${V.cellContent}`]:t.cellContent},{[`& .${V.cellCheckbox}`]:t.cellCheckbox},{[`& .${V.cellSkeleton}`]:t.cellSkeleton},{[`& .${V.checkboxInput}`]:t.checkboxInput},{[`& .${V["columnHeader--alignCenter"]}`]:t["columnHeader--alignCenter"]},{[`& .${V["columnHeader--alignLeft"]}`]:t["columnHeader--alignLeft"]},{[`& .${V["columnHeader--alignRight"]}`]:t["columnHeader--alignRight"]},{[`& .${V["columnHeader--dragging"]}`]:t["columnHeader--dragging"]},{[`& .${V["columnHeader--moving"]}`]:t["columnHeader--moving"]},{[`& .${V["columnHeader--numeric"]}`]:t["columnHeader--numeric"]},{[`& .${V["columnHeader--sortable"]}`]:t["columnHeader--sortable"]},{[`& .${V["columnHeader--sorted"]}`]:t["columnHeader--sorted"]},{[`& .${V["columnHeader--withRightBorder"]}`]:t["columnHeader--withRightBorder"]},{[`& .${V.columnHeader}`]:t.columnHeader},{[`& .${V.headerFilterRow}`]:t.headerFilterRow},{[`& .${V.columnHeaderCheckbox}`]:t.columnHeaderCheckbox},{[`& .${V.columnHeaderDraggableContainer}`]:t.columnHeaderDraggableContainer},{[`& .${V.columnHeaderTitleContainer}`]:t.columnHeaderTitleContainer},{[`& .${V["columnSeparator--resizable"]}`]:t["columnSeparator--resizable"]},{[`& .${V["columnSeparator--resizing"]}`]:t["columnSeparator--resizing"]},{[`& .${V.columnSeparator}`]:t.columnSeparator},{[`& .${V.filterIcon}`]:t.filterIcon},{[`& .${V.iconSeparator}`]:t.iconSeparator},{[`& .${V.menuIcon}`]:t.menuIcon},{[`& .${V.menuIconButton}`]:t.menuIconButton},{[`& .${V.menuOpen}`]:t.menuOpen},{[`& .${V.menuList}`]:t.menuList},{[`& .${V["row--editable"]}`]:t["row--editable"]},{[`& .${V["row--editing"]}`]:t["row--editing"]},{[`& .${V["row--dragging"]}`]:t["row--dragging"]},{[`& .${V.row}`]:t.row},{[`& .${V.rowReorderCellPlaceholder}`]:t.rowReorderCellPlaceholder},{[`& .${V.rowReorderCell}`]:t.rowReorderCell},{[`& .${V["rowReorderCell--draggable"]}`]:t["rowReorderCell--draggable"]},{[`& .${V.sortIcon}`]:t.sortIcon},{[`& .${V.withBorderColor}`]:t.withBorderColor},{[`& .${V.treeDataGroupingCell}`]:t.treeDataGroupingCell},{[`& .${V.treeDataGroupingCellToggle}`]:t.treeDataGroupingCellToggle},{[`& .${V.detailPanelToggleCell}`]:t.detailPanelToggleCell},{[`& .${V["detailPanelToggleCell--expanded"]}`]:t["detailPanelToggleCell--expanded"]},t.root]})(({theme:e})=>{const t=yp(e),r=e.shape.borderRadius;return m({"--unstable_DataGrid-radius":typeof r=="number"?`${r}px`:r,"--unstable_DataGrid-headWeight":e.typography.fontWeightMedium,"--unstable_DataGrid-overlayBackground":e.vars?`rgba(${e.vars.palette.background.defaultChannel} / ${e.vars.palette.action.disabledOpacity})`:Ct(e.palette.background.default,e.palette.action.disabledOpacity),"--DataGrid-cellOffsetMultiplier":2,flex:1,boxSizing:"border-box",position:"relative",borderWidth:"1px",borderStyle:"solid",borderColor:t,borderRadius:"var(--unstable_DataGrid-radius)",color:(e.vars||e).palette.text.primary},e.typography.body2,{outline:"none",height:"100%",display:"flex",minWidth:0,minHeight:0,flexDirection:"column",overflowAnchor:"none",[`&.${V.autoHeight}`]:{height:"auto",[`& .${V["row--lastVisible"]} .${V.cell}`]:{borderBottomColor:"transparent"}},[`&.${V.autosizing}`]:{[`& .${V.columnHeaderTitleContainerContent} > *`]:{overflow:"visible !important"},[`& .${V.cell} > *`]:{overflow:"visible !important",whiteSpace:"nowrap"},[`& .${V.groupingCriteriaCell}`]:{width:"unset"},[`& .${V.treeDataGroupingCell}`]:{width:"unset"}},[`& .${V["virtualScrollerContent--overflowed"]} .${V["row--lastVisible"]} .${V.cell}`]:{borderBottomColor:"transparent"},[`& .${V.columnHeader}, & .${V.cell}`]:{WebkitTapHighlightColor:"transparent",lineHeight:null,padding:"0 10px",boxSizing:"border-box"},[`& .${V.columnHeader}:focus-within, & .${V.cell}:focus-within`]:{outline:`solid ${e.vars?`rgba(${e.vars.palette.primary.mainChannel} / 0.5)`:Ct(e.palette.primary.main,.5)} 1px`,outlineWidth:1,outlineOffset:-1},[`& .${V.columnHeader}:focus, & .${V.cell}:focus`]:{outline:`solid ${e.palette.primary.main} 1px`},[`& .${V.columnHeaderCheckbox}, & .${V.cellCheckbox}`]:{padding:0,justifyContent:"center",alignItems:"center"},[`& .${V.columnHeader}`]:{position:"relative",display:"flex",alignItems:"center"},[`& .${V["columnHeader--sorted"]} .${V.iconButtonContainer}, & .${V["columnHeader--filtered"]} .${V.iconButtonContainer}`]:{visibility:"visible",width:"auto"},[`& .${V.columnHeader}:not(.${V["columnHeader--sorted"]}) .${V.sortIcon}`]:{opacity:0,transition:e.transitions.create(["opacity"],{duration:e.transitions.duration.shorter})},[`& .${V.columnHeaderTitleContainer}`]:{display:"flex",alignItems:"center",minWidth:0,flex:1,whiteSpace:"nowrap",overflow:"hidden",position:"relative"},[`& .${V.columnHeaderTitleContainerContent}`]:{overflow:"hidden",display:"flex",alignItems:"center"},[`& .${V["columnHeader--filledGroup"]} .${V.columnHeaderTitleContainer}`]:{borderBottomWidth:"1px",borderBottomStyle:"solid",boxSizing:"border-box"},[`& .${V["columnHeader--filledGroup"]}.${V["columnHeader--showColumnBorder"]} .${V.columnHeaderTitleContainer}`]:{borderBottom:"none"},[`& .${V["columnHeader--filledGroup"]}.${V["columnHeader--showColumnBorder"]}`]:{borderBottomWidth:"1px",borderBottomStyle:"solid",boxSizing:"border-box"},[`& .${V.headerFilterRow}`]:{borderTop:`1px solid ${t}`},[`& .${V.sortIcon}, & .${V.filterIcon}`]:{fontSize:"inherit"},[`& .${V["columnHeader--sortable"]}`]:{cursor:"pointer"},[`& .${V["columnHeader--alignCenter"]} .${V.columnHeaderTitleContainer}`]:{justifyContent:"center"},[`& .${V["columnHeader--alignRight"]} .${V.columnHeaderDraggableContainer}, & .${V["columnHeader--alignRight"]} .${V.columnHeaderTitleContainer}`]:{flexDirection:"row-reverse"},[`& .${V["columnHeader--alignCenter"]} .${V.menuIcon}, & .${V["columnHeader--alignRight"]} .${V.menuIcon}`]:{marginRight:"auto",marginLeft:-6},[`& .${V["columnHeader--alignRight"]} .${V.menuIcon}, & .${V["columnHeader--alignRight"]} .${V.menuIcon}`]:{marginRight:"auto",marginLeft:-10},[`& .${V["columnHeader--moving"]}`]:{backgroundColor:(e.vars||e).palette.action.hover},[`& .${V.columnSeparator}`]:{visibility:"hidden",position:"absolute",zIndex:100,display:"flex",flexDirection:"column",justifyContent:"center",color:t},"@media (hover: hover)":{[`& .${V.columnHeaders}:hover`]:_n,[`& .${V.columnHeader}:hover`]:Vn,[`& .${V.columnHeader}:not(.${V["columnHeader--sorted"]}):hover .${V.sortIcon}`]:{opacity:.5}},"@media (hover: none)":{[`& .${V.columnHeaders}`]:_n,[`& .${V.columnHeader}`]:Vn},[`& .${V["columnSeparator--sideLeft"]}`]:{left:-12},[`& .${V["columnSeparator--sideRight"]}`]:{right:-12},[`& .${V["columnSeparator--resizable"]}`]:{cursor:"col-resize",touchAction:"none","&:hover":{color:(e.vars||e).palette.text.primary,"@media (hover: none)":{color:t}},[`&.${V["columnSeparator--resizing"]}`]:{color:(e.vars||e).palette.text.primary},"& svg":{pointerEvents:"none"}},[`& .${V.iconSeparator}`]:{color:"inherit"},[`& .${V.menuIcon}`]:{width:0,visibility:"hidden",fontSize:20,marginRight:-10,display:"flex",alignItems:"center"},[`.${V.menuOpen}`]:{visibility:"visible",width:"auto"},[`& .${V.row}`]:{display:"flex",width:"fit-content",breakInside:"avoid","&:hover, &.Mui-hovered":{backgroundColor:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},"&.Mui-selected":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:Ct(e.palette.primary.main,e.palette.action.selectedOpacity),"&:hover, &.Mui-hovered":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc( ${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.hoverOpacity} - ))`:Ct(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:Ct(e.palette.primary.main,e.palette.action.selectedOpacity)}}}},[`& .${V.cell}`]:{display:"flex",alignItems:"center",borderBottom:"1px solid","&.Mui-selected":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:Ct(e.palette.primary.main,e.palette.action.selectedOpacity),"&:hover, &.Mui-hovered":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity+e.palette.action.hoverOpacity})`:Ct(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:Ct(e.palette.primary.main,e.palette.action.selectedOpacity)}}}},[`&.${V["root--disableUserSelection"]} .${V.cell}`]:{userSelect:"none"},[`& .${V.row}:not(.${V["row--dynamicHeight"]}) > .${V.cell}`]:{overflow:"hidden",whiteSpace:"nowrap"},[`& .${V.cellContent}`]:{overflow:"hidden",textOverflow:"ellipsis"},[`& .${V.cell}.${V["cell--selectionMode"]}`]:{cursor:"default"},[`& .${V.cell}.${V["cell--editing"]}`]:{padding:1,display:"flex",boxShadow:e.shadows[2],backgroundColor:(e.vars||e).palette.background.paper,"&:focus-within":{outline:`solid ${(e.vars||e).palette.primary.main} 1px`,outlineOffset:"-1px"}},[`& .${V["row--editing"]}`]:{boxShadow:e.shadows[2]},[`& .${V["row--editing"]} .${V.cell}`]:{boxShadow:e.shadows[0],backgroundColor:(e.vars||e).palette.background.paper},[`& .${V.editBooleanCell}`]:{display:"flex",height:"100%",width:"100%",alignItems:"center",justifyContent:"center"},[`& .${V.booleanCell}[data-value="true"]`]:{color:(e.vars||e).palette.text.secondary},[`& .${V.booleanCell}[data-value="false"]`]:{color:(e.vars||e).palette.text.disabled},[`& .${V.actionsCell}`]:{display:"inline-flex",alignItems:"center",gridGap:e.spacing(1)},[`& .${V.rowReorderCell}`]:{display:"inline-flex",flex:1,alignItems:"center",justifyContent:"center",opacity:(e.vars||e).palette.action.disabledOpacity},[`& .${V["rowReorderCell--draggable"]}`]:{cursor:"move",opacity:1},[`& .${V.rowReorderCellContainer}`]:{padding:0,alignItems:"stretch"},[`.${V.withBorderColor}`]:{borderColor:t},[`& .${V["cell--withRightBorder"]}`]:{borderRightWidth:"1px",borderRightStyle:"solid"},[`& .${V["columnHeader--withRightBorder"]}`]:{borderRightWidth:"1px",borderRightStyle:"solid"},[`& .${V["cell--textLeft"]}`]:{justifyContent:"flex-start"},[`& .${V["cell--textRight"]}`]:{justifyContent:"flex-end"},[`& .${V["cell--textCenter"]}`]:{justifyContent:"center"},[`& .${V.columnHeaderDraggableContainer}`]:{display:"flex",width:"100%",height:"100%"},[`& .${V.rowReorderCellPlaceholder}`]:{display:"none"},[`& .${V["columnHeader--dragging"]}, & .${V["row--dragging"]}`]:{background:(e.vars||e).palette.background.paper,padding:"0 12px",borderRadius:"var(--unstable_DataGrid-radius)",opacity:(e.vars||e).palette.action.disabledOpacity},[`& .${V["row--dragging"]}`]:{background:(e.vars||e).palette.background.paper,padding:"0 12px",borderRadius:"var(--unstable_DataGrid-radius)",opacity:(e.vars||e).palette.action.disabledOpacity,[`& .${V.rowReorderCellPlaceholder}`]:{display:"flex"}},[`& .${V.treeDataGroupingCell}`]:{display:"flex",alignItems:"center",width:"100%"},[`& .${V.treeDataGroupingCellToggle}`]:{flex:"0 0 28px",alignSelf:"stretch",marginRight:e.spacing(2)},[`& .${V.groupingCriteriaCell}`]:{display:"flex",alignItems:"center",width:"100%"},[`& .${V.groupingCriteriaCellToggle}`]:{flex:"0 0 28px",alignSelf:"stretch",marginRight:e.spacing(2)}})}),kp=["children","className"],Ep=e=>{const{autoHeight:t,density:r,classes:o}=e,l={root:["root",t&&"autoHeight",`root--density${$t(r)}`,"withBorderColor"]};return he(l,be,o)},gi=a.forwardRef(function(t,r){var o;const l=Y(),{children:n,className:i}=t,s=Z(t,kp),u=_t(),d=Q(u,Dl),c=a.useRef(null),p=xt(c,r),f=(o=l.experimentalFeatures)!=null&&o.ariaV7?null:Da,b=typeof f=="function"?f():null,g=m({},l,{density:d}),h=Ep(g);u.current.register("public",{rootElementRef:c});const[x,S]=a.useState(!1);return ze(()=>{S(!0)},[]),x?v.jsx(Mp,m({ref:p,className:xe(i,h.root),ownerState:g},b,s,{children:n})):null}),Lp=["className"],Tp=e=>{const{classes:t}=e;return he({root:["footerContainer","withBorderColor"]},be,t)},Dp=_e("div",{name:"MuiDataGrid",slot:"FooterContainer",overridesResolver:(e,t)=>t.footerContainer})({display:"flex",justifyContent:"space-between",alignItems:"center",minHeight:52,borderTop:"1px solid"}),mi=a.forwardRef(function(t,r){const{className:o}=t,l=Z(t,Lp),n=Y(),i=Tp(n);return v.jsx(Dp,m({ref:r,className:xe(i.root,o),ownerState:n},l))}),$p=["className"],Ap=e=>{const{classes:t}=e;return he({root:["overlay"]},be,t)},Rp=_e("div",{name:"MuiDataGrid",slot:"Overlay",overridesResolver:(e,t)=>t.overlay})({width:"100%",height:"100%",display:"flex",alignSelf:"center",alignItems:"center",justifyContent:"center",backgroundColor:"var(--unstable_DataGrid-overlayBackground)"}),ko=a.forwardRef(function(t,r){const{className:o}=t,l=Z(t,$p),n=Y(),i=Ap(n);return v.jsx(Rp,m({ref:r,className:xe(i.root,o),ownerState:n},l))}),Hp=["className","children"],_p=e=>{const{classes:t}=e;return he({root:["toolbarContainer"]},be,t)},Vp=_e("div",{name:"MuiDataGrid",slot:"ToolbarContainer",overridesResolver:(e,t)=>t.toolbarContainer})(({theme:e})=>({display:"flex",alignItems:"center",flexWrap:"wrap",gap:e.spacing(1),padding:e.spacing(.5,.5,0)})),bi=a.forwardRef(function(t,r){const{className:o,children:l}=t,n=Z(t,Hp),i=Y(),s=_p(i);return l?v.jsx(Vp,m({ref:r,className:xe(o,s.root),ownerState:i},n,{children:l})):null}),Np=["className"],Gp=e=>{const{classes:t}=e;return he({root:["iconButtonContainer"]},be,t)},zp=_e("div",{name:"MuiDataGrid",slot:"IconButtonContainer",overridesResolver:(e,t)=>t.iconButtonContainer})(()=>({display:"flex",visibility:"hidden",width:0})),hi=a.forwardRef(function(t,r){const{className:o}=t,l=Z(t,Np),n=Y(),i=Gp(n);return v.jsx(zp,m({ref:r,className:xe(i.root,o),ownerState:n},l))}),jp=e=>{const{classes:t}=e;return he({icon:["sortIcon"]},be,t)};function Bp(e,t,r,o){let l;const n={};return t==="asc"?l=e.columnSortedAscendingIcon:t==="desc"?l=e.columnSortedDescendingIcon:(l=e.columnUnsortedIcon,n.sortingOrder=o),l?v.jsx(l,m({fontSize:"small",className:r},n)):null}function Up(e){var t;const{direction:r,index:o,sortingOrder:l}=e,n=ce(),i=Y(),s=m({},e,{classes:i.classes}),u=jp(s),d=Bp(i.slots,r,u.icon,l);if(!d)return null;const c=v.jsx(i.slots.baseIconButton,m({tabIndex:-1,"aria-label":n.current.getLocaleText("columnHeaderSortIconLabel"),title:n.current.getLocaleText("columnHeaderSortIconLabel"),size:"small"},(t=i.slotProps)==null?void 0:t.baseIconButton,{children:d}));return v.jsxs(hi,{children:[o!=null&&v.jsx(bl,{badgeContent:o,color:"default",children:c}),o==null&&c]})}const Ci=a.memo(Up),qp=e=>{const{classes:t,open:r}=e;return he({root:["menuIcon",r&&"menuOpen"],button:["menuIconButton"]},be,t)},Wp=a.memo(e=>{var t,r;const{colDef:o,open:l,columnMenuId:n,columnMenuButtonId:i,iconButtonRef:s}=e,u=ce(),d=Y(),c=m({},e,{classes:d.classes}),p=qp(c),f=a.useCallback(b=>{b.preventDefault(),b.stopPropagation(),u.current.toggleColumnMenu(o.field)},[u,o.field]);return v.jsx("div",{className:p.root,children:v.jsx(d.slots.baseTooltip,m({title:u.current.getLocaleText("columnMenuLabel"),enterDelay:1e3},(t=d.slotProps)==null?void 0:t.baseTooltip,{children:v.jsx(d.slots.baseIconButton,m({ref:s,tabIndex:-1,className:p.button,"aria-label":u.current.getLocaleText("columnMenuLabel"),size:"small",onClick:f,"aria-haspopup":"menu","aria-expanded":l,"aria-controls":l?n:void 0,id:i},(r=d.slotProps)==null?void 0:r.baseIconButton,{children:v.jsx(d.slots.columnMenuIcon,{fontSize:"small"})}))}))})});function wi({columnMenuId:e,columnMenuButtonId:t,ContentComponent:r,contentComponentProps:o,field:l,open:n,target:i,onExited:s}){const u=ce(),d=u.current.getColumn(l),c=pt(p=>{p&&(p.stopPropagation(),i!=null&&i.contains(p.target))||u.current.hideColumnMenu()});return!i||!d?null:v.jsx(Vr,{placement:`bottom-${d.align==="right"?"start":"end"}`,open:n,target:i,onClose:c,onExited:s,children:v.jsx(r,m({colDef:d,hideMenu:c,open:n,id:e,labelledby:t},o))})}const Kp=["className"],Qp=e=>{const{classes:t}=e;return he({root:["columnHeaderTitle"]},be,t)},Zp=_e("div",{name:"MuiDataGrid",slot:"ColumnHeaderTitle",overridesResolver:(e,t)=>t.columnHeaderTitle})({textOverflow:"ellipsis",overflow:"hidden",whiteSpace:"nowrap",fontWeight:"var(--unstable_DataGrid-headWeight)"}),Jp=a.forwardRef(function(t,r){const{className:o}=t,l=Z(t,Kp),n=Y(),i=Qp(n);return v.jsx(Zp,m({ref:r,className:xe(i.root,o),ownerState:n},l))});function Si(e){var t;const{label:r,description:o}=e,l=Y(),n=a.useRef(null),[i,s]=a.useState(""),u=a.useCallback(()=>{if(!o&&n!=null&&n.current){const d=Hd(n.current);s(d?r:"")}},[o,r]);return v.jsx(l.slots.baseTooltip,m({title:o||i},(t=l.slotProps)==null?void 0:t.baseTooltip,{children:v.jsx(Jp,{onMouseOver:u,ref:n,children:r})}))}const Yp=["resizable","resizing","height","side"];var Vl=function(e){return e.Left="left",e.Right="right",e}(Vl||{});const Xp=e=>{const{resizable:t,resizing:r,classes:o,side:l}=e,n={root:["columnSeparator",t&&"columnSeparator--resizable",r&&"columnSeparator--resizing",l&&`columnSeparator--side${$t(l)}`],icon:["iconSeparator"]};return he(n,be,o)};function ef(e){const{height:t,side:r=Vl.Right}=e,o=Z(e,Yp),l=Y(),n=m({},e,{side:r,classes:l.classes}),i=Xp(n),s=a.useCallback(u=>{u.preventDefault(),u.stopPropagation()},[]);return v.jsx("div",m({className:i.root,style:{minHeight:t,opacity:l.showColumnVerticalBorder?0:1}},o,{onClick:s,children:v.jsx(l.slots.columnResizeIcon,{className:i.icon})}))}const Oi=a.memo(ef),tf=["classes","columnMenuOpen","colIndex","height","isResizing","sortDirection","hasFocus","tabIndex","separatorSide","isDraggable","headerComponent","description","elementId","width","columnMenuIconButton","columnMenu","columnTitleIconButtons","headerClassName","label","resizable","draggableContainerProps","columnHeaderSeparatorProps"],Pi=a.forwardRef(function(t,r){const{classes:o,columnMenuOpen:l,colIndex:n,height:i,isResizing:s,sortDirection:u,hasFocus:d,tabIndex:c,separatorSide:p,isDraggable:f,headerComponent:b,description:g,width:h,columnMenuIconButton:x=null,columnMenu:S=null,columnTitleIconButtons:C=null,headerClassName:E,label:T,resizable:_,draggableContainerProps:F,columnHeaderSeparatorProps:L}=t,k=Z(t,tf),H=_t(),A=Y(),P=a.useRef(null),[R,y]=a.useState(l),w=xt(P,r);let O="none";return u!=null&&(O=u==="asc"?"ascending":"descending"),a.useEffect(()=>{R||y(l)},[R,l]),a.useLayoutEffect(()=>{const M=H.current.state.columnMenu;if(d&&!M.open){const I=P.current.querySelector('[tabindex="0"]')||P.current;I==null||I.focus(),H.current.columnHeadersContainerElementRef.current.scrollLeft=0}},[H,d]),v.jsxs("div",m({ref:w,className:xe(o.root,E),style:{height:i,width:h,minWidth:h,maxWidth:h},role:"columnheader",tabIndex:c,"aria-colindex":n+1,"aria-sort":O,"aria-label":b==null?T:void 0},k,{children:[v.jsxs("div",m({className:o.draggableContainer,draggable:f,role:"presentation"},F,{children:[v.jsxs("div",{className:o.titleContainer,role:"presentation",children:[v.jsx("div",{className:o.titleContainerContent,children:b!==void 0?b:v.jsx(Si,{label:T,description:g,columnWidth:h})}),C]}),x]})),v.jsx(Oi,m({resizable:!A.disableColumnResize&&!!_,resizing:s,height:i,side:p},L)),S]}))}),rf=e=>{const{colDef:t,classes:r,isDragging:o,sortDirection:l,showRightBorder:n,filterItemsCounter:i}=e,s=l!=null,u=i!=null&&i>0,d=t.type==="number",c={root:["columnHeader",t.headerAlign==="left"&&"columnHeader--alignLeft",t.headerAlign==="center"&&"columnHeader--alignCenter",t.headerAlign==="right"&&"columnHeader--alignRight",t.sortable&&"columnHeader--sortable",o&&"columnHeader--moving",s&&"columnHeader--sorted",u&&"columnHeader--filtered",d&&"columnHeader--numeric","withBorderColor",n&&"columnHeader--withRightBorder"],draggableContainer:["columnHeaderDraggableContainer"],titleContainer:["columnHeaderTitleContainer"],titleContainerContent:["columnHeaderTitleContainerContent"]};return he(c,be,r)};function xi(e){var t,r,o,l;const{colDef:n,columnMenuOpen:i,colIndex:s,headerHeight:u,isResizing:d,sortDirection:c,sortIndex:p,filterItemsCounter:f,hasFocus:b,tabIndex:g,disableReorder:h,separatorSide:x}=e,S=_t(),C=Y(),E=a.useRef(null),T=Ie(),_=Ie(),F=a.useRef(null),[L,k]=a.useState(i),H=a.useMemo(()=>!C.disableColumnReorder&&!h&&!n.disableReorder,[C.disableColumnReorder,h,n.disableReorder]);let A;n.renderHeader&&(A=n.renderHeader(S.current.getColumnHeaderParams(n.field)));const P=m({},e,{classes:C.classes,showRightBorder:C.showColumnVerticalBorder}),R=rf(P),y=a.useCallback(K=>J=>{_r(J)||S.current.publishEvent(K,S.current.getColumnHeaderParams(n.field),J)},[S,n.field]),w=a.useMemo(()=>({onClick:y("columnHeaderClick"),onDoubleClick:y("columnHeaderDoubleClick"),onMouseOver:y("columnHeaderOver"),onMouseOut:y("columnHeaderOut"),onMouseEnter:y("columnHeaderEnter"),onMouseLeave:y("columnHeaderLeave"),onKeyDown:y("columnHeaderKeyDown"),onFocus:y("columnHeaderFocus"),onBlur:y("columnHeaderBlur")}),[y]),O=a.useMemo(()=>H?{onDragStart:y("columnHeaderDragStart"),onDragEnter:y("columnHeaderDragEnter"),onDragOver:y("columnHeaderDragOver"),onDragEnd:y("columnHeaderDragEnd")}:{},[H,y]),M=a.useMemo(()=>({onMouseDown:y("columnSeparatorMouseDown"),onDoubleClick:y("columnSeparatorDoubleClick")}),[y]);a.useEffect(()=>{L||k(i)},[L,i]);const D=a.useCallback(()=>{k(!1)},[]),I=!C.disableColumnMenu&&!n.disableColumnMenu&&v.jsx(Wp,{colDef:n,columnMenuId:T,columnMenuButtonId:_,open:L,iconButtonRef:F}),$=v.jsx(wi,{columnMenuId:T,columnMenuButtonId:_,field:n.field,open:i,target:F.current,ContentComponent:C.slots.columnMenu,contentComponentProps:(t=C.slotProps)==null?void 0:t.columnMenu,onExited:D}),N=(r=n.sortingOrder)!=null?r:C.sortingOrder,j=v.jsxs(a.Fragment,{children:[!C.disableColumnFilter&&v.jsx(C.slots.columnHeaderFilterIconButton,m({field:n.field,counter:f},(o=C.slotProps)==null?void 0:o.columnHeaderFilterIconButton)),n.sortable&&!n.hideSortIcons&&v.jsx(Ci,{direction:c,index:p,sortingOrder:N})]});a.useLayoutEffect(()=>{const K=S.current.state.columnMenu;if(b&&!K.open){const ee=E.current.querySelector('[tabindex="0"]')||E.current;ee==null||ee.focus(),S.current.columnHeadersContainerElementRef.current.scrollLeft=0}},[S,b]);const G=typeof n.headerClassName=="function"?n.headerClassName({field:n.field,colDef:n}):n.headerClassName,U=(l=n.headerName)!=null?l:n.field;return v.jsx(Pi,m({ref:E,classes:R,columnMenuOpen:i,colIndex:s,height:u,isResizing:d,sortDirection:c,hasFocus:b,tabIndex:g,separatorSide:x,isDraggable:H,headerComponent:A,description:n.description,elementId:n.field,width:n.computedWidth,columnMenuIconButton:I,columnTitleIconButtons:j,headerClassName:G,label:U,resizable:!C.disableColumnResize&&!!n.resizable,"data-field":n.field,columnMenu:$,draggableContainerProps:O,columnHeaderSeparatorProps:M},w))}const ur=()=>({items:[],logicOperator:Ke.And,quickFilterValues:[],quickFilterLogicOperator:Ke.And}),Gn=1e3;class of{constructor(t=Gn){this.timeouts=new Map,this.cleanupTimeout=Gn,this.cleanupTimeout=t}register(t,r,o){this.timeouts||(this.timeouts=new Map);const l=setTimeout(()=>{typeof r=="function"&&r(),this.timeouts.delete(o.cleanupToken)},this.cleanupTimeout);this.timeouts.set(o.cleanupToken,l)}unregister(t){const r=this.timeouts.get(t.cleanupToken);r&&(this.timeouts.delete(t.cleanupToken),clearTimeout(r))}reset(){this.timeouts&&(this.timeouts.forEach((t,r)=>{this.unregister({cleanupToken:r})}),this.timeouts=void 0)}}class lf{constructor(){this.registry=new FinalizationRegistry(t=>{typeof t=="function"&&t()})}register(t,r,o){this.registry.register(t,r,o)}unregister(t){this.registry.unregister(t)}reset(){}}var gt=function(e){return e.DataGrid="DataGrid",e.DataGridPro="DataGridPro",e}(gt||{});class nf{}function vi(e){let t=0;return function(o,l,n,i){e.registry===null&&(e.registry=typeof FinalizationRegistry<"u"?new lf:new of);const[s]=a.useState(new nf),u=a.useRef(null),d=a.useRef();d.current=n;const c=a.useRef(null);if(!u.current&&d.current){const p=(f,b,g)=>{if(!b.defaultMuiPrevented){var h;(h=d.current)==null||h.call(d,f,b,g)}};u.current=o.current.subscribeEvent(l,p,i),t+=1,c.current={cleanupToken:t},e.registry.register(s,()=>{var f;(f=u.current)==null||f.call(u),u.current=null,c.current=null},c.current)}else!d.current&&u.current&&(u.current(),u.current=null,c.current&&(e.registry.unregister(c.current),c.current=null));a.useEffect(()=>{if(!u.current&&d.current){const p=(f,b,g)=>{if(!b.defaultMuiPrevented){var h;(h=d.current)==null||h.call(d,f,b,g)}};u.current=o.current.subscribeEvent(l,p,i)}return c.current&&e.registry&&(e.registry.unregister(c.current),c.current=null),()=>{var p;(p=u.current)==null||p.call(u),u.current=null}},[o,l,i])}}const Qo={registry:null},af=()=>{var e;(e=Qo.registry)==null||e.reset(),Qo.registry=null},re=vi(Qo),sf={isFirst:!0};function Ee(e,t,r){re(e,t,r,sf)}function je(e,t){const r=a.useRef(null);if(r.current)return r.current;const o=e.current.getLogger(t);return r.current=o,o}function uf(e){return typeof e=="number"&&!Number.isNaN(e)}function Fi(e){return typeof e=="function"}function Nl(e){return typeof e=="object"&&e!==null}function cf(){try{const e="__some_random_key_you_are_not_going_to_use__";return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch{return!1}}function lo(e){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}const cr=(e,t,r)=>Math.max(t,Math.min(r,e));function It(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(e.constructor!==t.constructor)return!1;if(Array.isArray(e)){const l=e.length;if(l!==t.length)return!1;for(let n=0;n{let t=e+=1831565813;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}}function pf(e,t,r){const o=df(e);return()=>t+(r-t)*o()}function yi(e){return typeof structuredClone=="function"?structuredClone(e):JSON.parse(JSON.stringify(e))}const Ii=(e,t,r,o,l)=>{const n=je(e,"useNativeEventListener"),[i,s]=a.useState(!1),u=a.useRef(o),d=a.useCallback(c=>u.current&&u.current(c),[]);a.useEffect(()=>{u.current=o},[o]),a.useEffect(()=>{let c;if(Fi(t)?c=t():c=t&&t.current?t.current:null,c&&r&&!i){n.debug(`Binding native ${r} event`),c.addEventListener(r,d,l);const p=c;s(!0);const f=()=>{n.debug(`Clearing native ${r} event`),p.removeEventListener(r,d,l)};e.current.subscribeEvent("unmount",f)}},[t,d,r,i,n,l,e])},mr=e=>{const t=a.useRef(!0);t.current&&(t.current=!1,e())},ff=100,gf=e=>e?0:100,Mi=(e,t)=>t>0&&e>0?Math.ceil(e/t):0;vt(["MUI: the 'rowCount' prop is undefined while using paginationMode='server'","For more detail, see http://mui.com/components/data-grid/pagination/#basic-implementation"],"error");const ki=e=>({page:0,pageSize:e?0:100}),mf=(e,t=0)=>t===0?e:Math.max(Math.min(e,t-1),0),Ei=(e,t)=>{if(t===gt.DataGrid&&e>ff)throw new Error(["MUI: `pageSize` cannot exceed 100 in the MIT version of the DataGrid.","You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature."].join(` -`))},Gl=e=>e.pagination,ot=pe(Gl,e=>e.paginationModel),Li=pe(ot,e=>e.page),Ti=pe(ot,e=>e.pageSize),bf=pe(ot,Ar,(e,t)=>Mi(t,e.pageSize)),Eo=Te(ot,nt,$r,Mt,kl,(e,t,r,o,l)=>{const n=l.length,i=Math.min(e.pageSize*e.page,n-1),s=Math.min(i+e.pageSize-1,n-1);if(i===-1||s===-1)return null;if(r<2)return{firstRowIndex:i,lastRowIndex:s};const u=l[i],d=s-i+1,c=o.findIndex(g=>g.id===u.id);let p=c,f=0;for(;p0)&&(p+=1),h===0&&(f+=1))}return{firstRowIndex:c,lastRowIndex:p-1}}),Di=Te(Mt,Eo,(e,t)=>t?e.slice(t.firstRowIndex,t.lastRowIndex+1):[]),zl=Te(ar,Eo,(e,t)=>t?e.slice(t.firstRowIndex,t.lastRowIndex+1):[]),At=e=>e.preferencePanel;var st=function(e){return e.filters="filters",e.columns="columns",e}(st||{});const dr=e=>e.rowsMeta,rt=e=>e.rowSelection,$i=pe(rt,e=>e.length),Ai=Te(rt,Ot,(e,t)=>new Map(e.map(r=>[r,t[r]]))),Fr=Te(rt,e=>e.reduce((t,r)=>(t[r]=r,t),{})),hf=vt(["MUI: The `sortModel` can only contain a single item when the `disableMultipleColumnsSorting` prop is set to `true`.","If you are using the community version of the `DataGrid`, this prop is always `true`."],"error"),Ri=(e,t)=>t&&e.length>1?(hf(),[e[0]]):e,zn=(e,t)=>r=>m({},r,{sorting:m({},r.sorting,{sortModel:Ri(e,t)})}),Cf=e=>e==="desc",wf=(e,t)=>{const r=t.current.getColumn(e.field);if(!r)return null;const o=Cf(e.sort)?(...n)=>-1*r.sortComparator(...n):r.sortComparator;return{getSortCellParams:n=>({id:n,field:r.field,rowNode:t.current.getRowNode(n),value:t.current.getCellValue(n,r.field),api:t.current}),comparator:o}},Sf=(e,t,r)=>e.reduce((o,l,n)=>{if(o!==0)return o;const i=t.params[n],s=r.params[n];return o=l.comparator(i.value,s.value,i,s),o},0),Of=(e,t)=>{const r=e.map(o=>wf(o,t)).filter(o=>!!o);return r.length===0?null:o=>o.map(l=>({node:l,params:r.map(n=>n.getSortCellParams(l.id))})).sort((l,n)=>Sf(r,l,n)).map(l=>l.node.id)},jn=(e,t)=>{const r=e.indexOf(t);return!t||r===-1||r+1===e.length?e[0]:e[r+1]},jl=(e,t)=>e==null&&t!=null?-1:t==null&&e!=null?1:e==null&&t==null?0:null,Pf=new Intl.Collator,Hi=(e,t)=>{const r=jl(e,t);return r!==null?r:typeof e=="string"?Pf.compare(e.toString(),t.toString()):e-t},Bl=(e,t)=>{const r=jl(e,t);return r!==null?r:Number(e)-Number(t)},Ul=(e,t)=>{const r=jl(e,t);return r!==null?r:e>t?1:ee.headerFiltering,_i=pe(ql,e=>e.editing),Vi=pe(ql,e=>e.menuOpen),Ni=(e,t)=>{const r={enabled:!t.disableVirtualization,enabledForColumns:!0};return m({},e,{virtualization:r})};function Gi(e,t){const r=n=>{e.current.setState(i=>m({},i,{virtualization:m({},i.virtualization,{enabled:n})}))};me(e,{unstable_setVirtualization:r,unstable_setColumnVirtualization:n=>{e.current.setState(i=>m({},i,{virtualization:m({},i.virtualization,{enabledForColumns:n})}))}},"public"),a.useEffect(()=>{r(!t.disableVirtualization)},[t.disableVirtualization])}const Wl=e=>e.virtualization,zi=pe(Wl,e=>e.enabled),Kl=pe(Wl,e=>e.enabledForColumns),xf=e=>{const{classes:t}=e;return he({icon:["filterIcon"]},be,t)};function ji(e){var t,r;const{counter:o,field:l,onClick:n}=e,i=ce(),s=Y(),u=m({},e,{classes:s.classes}),d=xf(u),c=Q(i,At),p=Ie(),f=Ie(),b=a.useCallback(x=>{x.preventDefault(),x.stopPropagation();const{open:S,openedPanelValue:C}=At(i.current.state);S&&C===st.filters?i.current.hideFilterPanel():i.current.showFilterPanel(void 0,f,p),n&&n(i.current.getColumnHeaderParams(l),x)},[i,l,n,f,p]);if(!o)return null;const g=c.open&&c.labelId===p,h=v.jsx(s.slots.baseIconButton,m({id:p,onClick:b,color:"default","aria-label":i.current.getLocaleText("columnHeaderFiltersLabel"),size:"small",tabIndex:-1,"aria-haspopup":"menu","aria-expanded":g,"aria-controls":g?f:void 0},(t=s.slotProps)==null?void 0:t.baseIconButton,{children:v.jsx(s.slots.columnFilteredIcon,{className:d.icon,fontSize:"small"})}));return v.jsx(s.slots.baseTooltip,m({title:i.current.getLocaleText("columnHeaderFiltersTooltipActive")(o),enterDelay:1e3},(r=s.slotProps)==null?void 0:r.baseTooltip,{children:v.jsxs(hi,{children:[o>1&&v.jsx(bl,{badgeContent:o,color:"default",children:h}),o===1&&h]})}))}const vf=["field","id","value","formattedValue","row","rowNode","colDef","isEditable","cellMode","hasFocus","tabIndex","api"],Ff=e=>{const{classes:t}=e;return he({root:["checkboxInput"]},be,t)},Bi=a.forwardRef(function(t,r){var o;const{field:l,id:n,value:i,rowNode:s,hasFocus:u,tabIndex:d}=t,c=Z(t,vf),p=ce(),f=Y(),b={classes:f.classes},g=Ff(b),h=a.useRef(null),x=a.useRef(null),S=xt(h,r),C=p.current.getCellElement(n,l),E=L=>{const k={value:L.target.checked,id:n};p.current.publishEvent("rowSelectionCheckboxChange",k,L)};a.useLayoutEffect(()=>{d===0&&C&&(C.tabIndex=-1)},[C,d]),a.useEffect(()=>{if(u){var L;const k=(L=h.current)==null?void 0:L.querySelector("input");k==null||k.focus({preventScroll:!0})}else x.current&&x.current.stop({})},[u]);const T=a.useCallback(L=>{ii(L.key)&&L.stopPropagation()},[]);if(s.type==="footer"||s.type==="pinnedRow")return null;const _=p.current.isRowSelectable(n),F=p.current.getLocaleText(i?"checkboxSelectionUnselectRow":"checkboxSelectionSelectRow");return v.jsx(f.slots.baseCheckbox,m({ref:S,tabIndex:d,checked:i,onChange:E,className:g.root,inputProps:{"aria-label":F},onKeyDown:T,disabled:!_,touchRippleRef:x},(o=f.slotProps)==null?void 0:o.baseCheckbox,c))}),Ui=Bi,yf=["field","colDef"],If=e=>{const{classes:t}=e;return he({root:["checkboxInput"]},be,t)},qi=a.forwardRef(function(t,r){var o;const l=Z(t,yf),[,n]=a.useState(!1),i=ce(),s=Y(),u={classes:s.classes},d=If(u),c=Q(i,Tl),p=Q(i,rt),f=Q(i,ar),b=Q(i,zl),g=a.useMemo(()=>typeof s.isRowSelectable!="function"?p:p.filter(k=>i.current.getRow(k)?s.isRowSelectable(i.current.getRowParams(k)):!1),[i,s.isRowSelectable,p]),h=a.useMemo(()=>(!s.pagination||!s.checkboxSelectionVisibleOnly?f:b).reduce((H,A)=>(H[A]=!0,H),{}),[s.pagination,s.checkboxSelectionVisibleOnly,b,f]),x=a.useMemo(()=>g.filter(k=>h[k]).length,[g,h]),S=x>0&&x0,E=k=>{const H={value:k.target.checked};i.current.publishEvent("headerSelectionCheckboxChange",H)},T=c!==null&&c.field===t.field?0:-1;a.useLayoutEffect(()=>{const k=i.current.getColumnHeaderElement(t.field);T===0&&k&&(k.tabIndex=-1)},[T,i,t.field]);const _=a.useCallback(k=>{k.key===" "&&i.current.publishEvent("headerSelectionCheckboxChange",{value:!C})},[i,C]),F=a.useCallback(()=>{n(k=>!k)},[]);a.useEffect(()=>i.current.subscribeEvent("rowSelectionChange",F),[i,F]);const L=i.current.getLocaleText(C?"checkboxSelectionUnselectAllRows":"checkboxSelectionSelectAllRows");return v.jsx(s.slots.baseCheckbox,m({ref:r,indeterminate:S,checked:C,onChange:E,className:d.root,inputProps:{"aria-label":L},tabIndex:T,onKeyDown:_},(o=s.slotProps)==null?void 0:o.baseCheckbox,l))}),Zo=Me(v.jsx("path",{d:"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z"}),"ArrowUpward"),Jo=Me(v.jsx("path",{d:"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z"}),"ArrowDownward"),Yo=Me(v.jsx("path",{d:"M8.59 16.59 13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z"}),"KeyboardArrowRight"),Xo=Me(v.jsx("path",{d:"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"}),"ExpandMore"),Wi=Me(v.jsx("path",{d:"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"}),"FilterList"),el=Me(v.jsx("path",{d:"M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39c.51-.66.04-1.61-.79-1.61H5.04c-.83 0-1.3.95-.79 1.61z"}),"FilterAlt"),Ki=Me(v.jsx("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"}),"Search"),Mf=Me(v.jsx("path",{d:"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"}),"Menu"),kf=Me(v.jsx("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"}),"CheckCircle"),Qi=Me(v.jsx("path",{d:"M6 5H3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm14 0h-3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm-7 0h-3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1z"}),"ColumnIcon"),Zi=Me(v.jsx("path",{d:"M11 19V5h2v14z"}),"Separator"),Ji=Me(v.jsx("path",{d:"M4 15h16v-2H4v2zm0 4h16v-2H4v2zm0-8h16V9H4v2zm0-6v2h16V5H4z"}),"ViewHeadline"),Yi=Me(v.jsx("path",{d:"M21,8H3V4h18V8z M21,10H3v4h18V10z M21,16H3v4h18V16z"}),"TableRows"),Xi=Me(v.jsx("path",{d:"M4 18h17v-6H4v6zM4 5v6h17V5H4z"}),"ViewStream"),es=Me(v.jsx("path",{d:"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"}),"TripleDotsVertical"),no=Me(v.jsx("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close"),tl=Me(v.jsx("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"}),"Add"),ts=Me(v.jsx("path",{d:"M19 13H5v-2h14v2z"}),"Remove"),rs=Me(v.jsx("path",{d:"M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z"}),"Load"),rl=Me(v.jsx("path",{d:"M11 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm-2-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"}),"Drag"),os=Me(v.jsx("path",{d:"M19 12v7H5v-7H3v7c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-7h-2zm-6 .67l2.59-2.58L17 11.5l-5 5-5-5 1.41-1.41L11 12.67V3h2z"}),"SaveAlt"),ls=Me(v.jsx("path",{d:"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"}),"Check"),ns=Me(v.jsx("path",{d:"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"}),"MoreVert"),as=Me(v.jsx("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78l3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"}),"VisibilityOff"),is=Me(v.jsx("g",{children:v.jsx("path",{d:"M14.67,5v14H9.33V5H14.67z M15.67,19H21V5h-5.33V19z M8.33,19V5H3v14H8.33z"})}),"ViewColumn"),ss=Me(v.jsx("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Clear"),Ef=Me(v.jsx("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"}),"Delete"),us=Me(v.jsx("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zm2.46-7.12l1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12zM15.5 4l-1-1h-5l-1 1H5v2h14V4z"}),"Delete"),Lf=["hideMenu","colDef","id","labelledby","className","children","open"],Tf=De(Co)(()=>({minWidth:248})),cs=a.forwardRef(function(t,r){const{hideMenu:o,id:l,labelledby:n,className:i,children:s,open:u}=t,d=Z(t,Lf),c=a.useCallback(p=>{Mo(p.key)&&p.preventDefault(),_l(p.key)&&o(p)},[o]);return v.jsx(Tf,m({id:l,ref:r,className:xe(V.menuList,i),"aria-labelledby":n,onKeyDown:c,autoFocus:u},d,{children:s}))}),Df=["displayOrder"],$f=e=>{const t=_t(),{defaultSlots:r,defaultSlotProps:o,slots:l={},slotProps:n={},hideMenu:i,colDef:s,addDividers:u=!0}=e,d=a.useMemo(()=>m({},r,l),[r,l]),c=a.useMemo(()=>{if(!n||Object.keys(n).length===0)return o;const b=m({},n);return Object.entries(o).forEach(([g,h])=>{b[g]=m({},h,n[g]||{})}),b},[o,n]),p=t.current.unstable_applyPipeProcessors("columnMenu",[],e.colDef),f=a.useMemo(()=>{const b=Object.keys(r);return Object.keys(l).filter(g=>!b.includes(g))},[l,r]);return a.useMemo(()=>{const h=Array.from(new Set([...p,...f])).filter(x=>d[x]!=null).sort((x,S)=>{const C=c[x],E=c[S],T=Number.isFinite(C==null?void 0:C.displayOrder)?C.displayOrder:100,_=Number.isFinite(E==null?void 0:E.displayOrder)?E.displayOrder:100;return T-_});return h.reduce((x,S,C)=>{let E={colDef:s,onClick:i};const T=c[S];if(T){const _=Z(T,Df);E=m({},E,_)}return u&&C!==h.length-1?[...x,[d[S],E],[Gu,{}]]:[...x,[d[S],E]]},[])},[u,s,p,i,d,c,f])};function ds(e){const{colDef:t,onClick:r}=e,o=ce(),l=Y(),s=He(o).filter(d=>d.disableColumnMenu!==!0).length===1,u=a.useCallback(d=>{s||(o.current.setColumnVisibility(t.field,!1),r(d))},[o,t.field,r,s]);return l.disableColumnSelector||t.hideable===!1?null:v.jsxs(dt,{onClick:u,disabled:s,children:[v.jsx(Dt,{children:v.jsx(l.slots.columnMenuHideIcon,{fontSize:"small"})}),v.jsx(nr,{children:o.current.getLocaleText("columnMenuHideColumn")})]})}function ps(e){const{onClick:t}=e,r=ce(),o=Y(),l=a.useCallback(n=>{t(n),r.current.showPreferences(st.columns)},[r,t]);return o.disableColumnSelector?null:v.jsxs(dt,{onClick:l,children:[v.jsx(Dt,{children:v.jsx(o.slots.columnMenuManageColumnsIcon,{fontSize:"small"})}),v.jsx(nr,{children:r.current.getLocaleText("columnMenuManageColumns")})]})}function fs(e){return v.jsxs(a.Fragment,{children:[v.jsx(ds,m({},e)),v.jsx(ps,m({},e))]})}function gs(e){const{colDef:t,onClick:r}=e,o=ce(),l=Y(),n=a.useCallback(i=>{r(i),o.current.showFilterPanel(t.field)},[o,t.field,r]);return l.disableColumnFilter||!t.filterable?null:v.jsxs(dt,{onClick:n,children:[v.jsx(Dt,{children:v.jsx(l.slots.columnMenuFilterIcon,{fontSize:"small"})}),v.jsx(nr,{children:o.current.getLocaleText("columnMenuFilter")})]})}function ms(e){var t;const{colDef:r,onClick:o}=e,l=ce(),n=Q(l,tt),i=Y(),s=a.useMemo(()=>{if(!r)return null;const p=n.find(f=>f.field===r.field);return p==null?void 0:p.sort},[r,n]),u=(t=r.sortingOrder)!=null?t:i.sortingOrder,d=a.useCallback(p=>{o(p);const f=p.currentTarget.getAttribute("data-value")||null;l.current.sortColumn(r,f===s?null:f)},[l,r,o,s]);if(!r||!r.sortable||!u.some(p=>!!p))return null;const c=p=>{const f=l.current.getLocaleText(p);return typeof f=="function"?f(r):f};return v.jsxs(a.Fragment,{children:[u.includes("asc")&&s!=="asc"?v.jsxs(dt,{onClick:d,"data-value":"asc",children:[v.jsx(Dt,{children:v.jsx(i.slots.columnMenuSortAscendingIcon,{fontSize:"small"})}),v.jsx(nr,{children:c("columnMenuSortAsc")})]}):null,u.includes("desc")&&s!=="desc"?v.jsxs(dt,{onClick:d,"data-value":"desc",children:[v.jsx(Dt,{children:v.jsx(i.slots.columnMenuSortDescendingIcon,{fontSize:"small"})}),v.jsx(nr,{children:c("columnMenuSortDesc")})]}):null,u.includes(null)&&s!=null?v.jsxs(dt,{onClick:d,children:[v.jsx(Dt,{}),v.jsx(nr,{children:l.current.getLocaleText("columnMenuUnsort")})]}):null]})}const Af=["defaultSlots","defaultSlotProps","slots","slotProps"],bs={columnMenuSortItem:ms,columnMenuFilterItem:gs,columnMenuColumnsItem:fs},hs={columnMenuSortItem:{displayOrder:10},columnMenuFilterItem:{displayOrder:20},columnMenuColumnsItem:{displayOrder:30}},Cs=a.forwardRef(function(t,r){const{defaultSlots:o,defaultSlotProps:l,slots:n,slotProps:i}=t,s=Z(t,Af),u=$f(m({},s,{defaultSlots:o,defaultSlotProps:l,slots:n,slotProps:i}));return v.jsx(cs,m({ref:r},s,{children:u.map(([d,c],p)=>v.jsx(d,m({},c),p))}))}),ws=a.forwardRef(function(t,r){return v.jsx(Cs,m({},t,{ref:r,defaultSlots:bs,defaultSlotProps:hs}))}),Rf=["className"],Hf=e=>{const{classes:t}=e;return he({root:["panelContent"]},be,t)},_f=_e("div",{name:"MuiDataGrid",slot:"PanelContent",overridesResolver:(e,t)=>t.panelContent})({display:"flex",flexDirection:"column",overflow:"auto",flex:"1 1",maxHeight:400});function Ql(e){const{className:t}=e,r=Z(e,Rf),o=Y(),l=Hf(o);return v.jsx(_f,m({className:xe(t,l.root),ownerState:o},r))}const Vf=["className"],Nf=e=>{const{classes:t}=e;return he({root:["panelFooter"]},be,t)},Gf=_e("div",{name:"MuiDataGrid",slot:"PanelFooter",overridesResolver:(e,t)=>t.panelFooter})(({theme:e})=>({padding:e.spacing(.5),display:"flex",justifyContent:"space-between"}));function Zl(e){const{className:t}=e,r=Z(e,Vf),o=Y(),l=Nf(o);return v.jsx(Gf,m({className:xe(t,l.root),ownerState:o},r))}const zf=["className"],jf=e=>{const{classes:t}=e;return he({root:["panelHeader"]},be,t)},Bf=_e("div",{name:"MuiDataGrid",slot:"PanelHeader",overridesResolver:(e,t)=>t.panelHeader})(({theme:e})=>({padding:e.spacing(1)}));function Ss(e){const{className:t}=e,r=Z(e,zf),o=Y(),l=jf(o);return v.jsx(Bf,m({className:xe(t,l.root),ownerState:o},r))}const Uf=["className","slotProps"],qf=e=>{const{classes:t}=e;return he({root:["panelWrapper"]},be,t)},Wf=De("div",{name:"MuiDataGrid",slot:"PanelWrapper",overridesResolver:(e,t)=>t.panelWrapper})({display:"flex",flexDirection:"column",flex:1,"&:focus":{outline:0}}),Kf=()=>!0,Jl=a.forwardRef(function(t,r){const{className:o,slotProps:l={}}=t,n=Z(t,Uf),i=Y(),s=qf(i);return v.jsx(zu,m({open:!0,disableEnforceFocus:!0,isEnabled:Kf},l.TrapFocus,{children:v.jsx(Wf,m({ref:r,tabIndex:-1,className:xe(o,s.root),ownerState:i},n))}))}),Os=!1,Qf=["sort","searchPredicate","autoFocusSearchField","disableHideAllButton","disableShowAllButton","getTogglableColumns"],Zf=e=>{const{classes:t}=e;return he({root:["columnsPanel"],columnsPanelRow:["columnsPanelRow"]},be,t)},Jf=De("div",{name:"MuiDataGrid",slot:"ColumnsPanel",overridesResolver:(e,t)=>t.columnsPanel})({padding:"8px 0px 8px 8px"}),Yf=De("div",{name:"MuiDataGrid",slot:"ColumnsPanelRow",overridesResolver:(e,t)=>t.columnsPanelRow})(({theme:e})=>({display:"flex",justifyContent:"space-between",padding:"1px 8px 1px 7px",[`& .${ju.root}`]:{marginRight:e.spacing(.5)}})),Xf=De(ha)({justifyContent:"flex-end"}),Bn=new Intl.Collator,eg=(e,t)=>(e.headerName||e.field).toLowerCase().indexOf(t)>-1;function Ps(e){var t,r,o;const l=ce(),n=a.useRef(null),i=Q(l,ft),s=Q(l,at),u=Y(),[d,c]=a.useState(""),p=Zf(u),{sort:f,searchPredicate:b=eg,autoFocusSearchField:g=!0,disableHideAllButton:h=!1,disableShowAllButton:x=!1,getTogglableColumns:S}=e,C=Z(e,Qf),E=a.useMemo(()=>{switch(f){case"asc":return[...i].sort((P,R)=>Bn.compare(P.headerName||P.field,R.headerName||R.field));case"desc":return[...i].sort((P,R)=>-Bn.compare(P.headerName||P.field,R.headerName||R.field));default:return i}},[i,f]),T=P=>{const{name:R}=P.target;l.current.setColumnVisibility(R,s[R]===!1)},_=a.useCallback(P=>{const R=at(l),y=m({},R),w=S?S(i):null;return i.forEach(O=>{O.hideable&&(w==null||w.includes(O.field))&&(P?delete y[O.field]:y[O.field]=!1)}),l.current.setColumnVisibilityModel(y)},[l,i,S]),F=a.useCallback(P=>{c(P.target.value)},[]),L=a.useMemo(()=>{const P=S?S(E):null,R=P?E.filter(({field:y})=>P.includes(y)):E;return d?R.filter(y=>b(y,d.toLowerCase())):R},[E,d,b,S]),k=a.useRef(null);a.useEffect(()=>{g?n.current.focus():k.current&&typeof k.current.focus=="function"&&k.current.focus()},[g]);let H=!1;const A=P=>H===!1&&P.hideable!==!1?(H=!0,!0):!1;return v.jsxs(Jl,m({},C,{children:[v.jsx(Ss,{children:v.jsx(u.slots.baseTextField,m({label:l.current.getLocaleText("columnsPanelTextFieldLabel"),placeholder:l.current.getLocaleText("columnsPanelTextFieldPlaceholder"),inputRef:n,value:d,onChange:F,variant:"standard",fullWidth:!0},(t=u.slotProps)==null?void 0:t.baseTextField))}),v.jsx(Ql,{children:v.jsx(Jf,{className:p.root,ownerState:u,children:L.map(P=>{var R;return v.jsxs(Yf,{className:p.columnsPanelRow,ownerState:u,children:[v.jsx(Bu,{control:v.jsx(u.slots.baseSwitch,m({disabled:P.hideable===!1,checked:s[P.field]!==!1,onClick:T,name:P.field,size:"small",inputRef:A(P)?k:void 0},(R=u.slotProps)==null?void 0:R.baseSwitch)),label:P.headerName||P.field}),!u.disableColumnReorder&&Os&&v.jsx(Xf,{draggable:!0,"aria-label":l.current.getLocaleText("columnsPanelDragIconLabel"),title:l.current.getLocaleText("columnsPanelDragIconLabel"),size:"small",disabled:!0,children:v.jsx(u.slots.columnReorderIcon,{})})]},P.field)})})}),x&&h?null:v.jsxs(Zl,{children:[h?v.jsx("span",{}):v.jsx(u.slots.baseButton,m({onClick:()=>_(!1)},(r=u.slotProps)==null?void 0:r.baseButton,{disabled:h,children:l.current.getLocaleText("columnsPanelHideAllButton")})),x?null:v.jsx(u.slots.baseButton,m({onClick:()=>_(!0)},(o=u.slotProps)==null?void 0:o.baseButton,{disabled:x,children:l.current.getLocaleText("columnsPanelShowAllButton")}))]})]}))}const tg=["children","className","classes"],xs=fa("MuiDataGrid",["panel","paper"]),rg=De(ml,{name:"MuiDataGrid",slot:"Panel",overridesResolver:(e,t)=>t.panel})(({theme:e})=>({zIndex:e.zIndex.modal})),og=De(ba,{name:"MuiDataGrid",slot:"Paper",overridesResolver:(e,t)=>t.paper})(({theme:e})=>({backgroundColor:(e.vars||e).palette.background.paper,minWidth:300,maxHeight:450,display:"flex"})),vs=a.forwardRef((e,t)=>{const{children:r,className:o}=e,l=Z(e,tg),n=ce(),i=Y(),s=xs,[u,d]=a.useState(!1),c=a.useCallback(()=>{n.current.hidePreferences()},[n]),p=a.useCallback(h=>{po(h.key)&&n.current.hidePreferences()},[n]),f=a.useMemo(()=>[{name:"flip",enabled:!1},{name:"isPlaced",enabled:!0,phase:"main",fn:()=>{d(!0)},effect:()=>()=>{d(!1)}}],[]),[b,g]=a.useState(null);return a.useEffect(()=>{var h;const x=(h=n.current.rootElementRef)==null||(h=h.current)==null?void 0:h.querySelector(`.${V.columnHeaders}`);x&&g(x)},[n]),b?v.jsx(rg,m({ref:t,placement:"bottom-start",className:xe(o,s.panel),ownerState:i,anchorEl:b,modifiers:f},l,{children:v.jsx(ma,{mouseEvent:"onMouseUp",onClickAway:c,children:v.jsx(og,{className:s.paper,ownerState:i,elevation:8,onKeyDown:p,children:u&&r})})})):null}),Fs=a.forwardRef(function(t,r){var o,l,n;const i=ce(),s=Q(i,ft),u=Y(),d=Q(i,At),c=i.current.unstable_applyPipeProcessors("preferencePanel",null,(o=d.openedPanelValue)!=null?o:st.filters);return v.jsx(u.slots.panel,m({ref:r,as:u.slots.basePopper,open:s.length>0&&d.open,id:d.panelId,"aria-labelledby":d.labelId},(l=u.slotProps)==null?void 0:l.panel,t,(n=u.slotProps)==null?void 0:n.basePopper,{children:c}))}),lg=["item","hasMultipleFilters","deleteFilter","applyFilterChanges","multiFilterOperator","showMultiFilterOperators","disableMultiFilterOperator","applyMultiFilterOperatorChanges","focusElementRef","logicOperators","columnsSort","filterColumns","deleteIconProps","logicOperatorInputProps","operatorInputProps","columnInputProps","valueInputProps","children"],ng=["InputComponentProps"],ag=e=>{const{classes:t}=e;return he({root:["filterForm"],deleteIcon:["filterFormDeleteIcon"],logicOperatorInput:["filterFormLogicOperatorInput"],columnInput:["filterFormColumnInput"],operatorInput:["filterFormOperatorInput"],valueInput:["filterFormValueInput"]},be,t)},ig=De("div",{name:"MuiDataGrid",slot:"FilterForm",overridesResolver:(e,t)=>t.filterForm})(({theme:e})=>({display:"flex",padding:e.spacing(1)})),sg=De("div",{name:"MuiDataGrid",slot:"FilterFormDeleteIcon",overridesResolver:(e,t)=>t.filterFormDeleteIcon})(({theme:e})=>({flexShrink:0,justifyContent:"flex-end",marginRight:e.spacing(.5),marginBottom:e.spacing(.2)})),ug=De("div",{name:"MuiDataGrid",slot:"FilterFormLogicOperatorInput",overridesResolver:(e,t)=>t.filterFormLogicOperatorInput})({minWidth:55,marginRight:5,justifyContent:"end"}),cg=De("div",{name:"MuiDataGrid",slot:"FilterFormColumnInput",overridesResolver:(e,t)=>t.filterFormColumnInput})({width:150}),dg=De("div",{name:"MuiDataGrid",slot:"FilterFormOperatorInput",overridesResolver:(e,t)=>t.filterFormOperatorInput})({width:120}),pg=De("div",{name:"MuiDataGrid",slot:"FilterFormValueInput",overridesResolver:(e,t)=>t.filterFormValueInput})({width:190}),fg=e=>{switch(e){case Ke.And:return"filterPanelOperatorAnd";case Ke.Or:return"filterPanelOperatorOr";default:throw new Error("MUI: Invalid `logicOperator` property in the `GridFilterPanel`.")}},Cr=e=>e.headerName||e.field,Un=new Intl.Collator,ys=a.forwardRef(function(t,r){var o,l,n,i,s,u,d,c,p,f;const{item:b,hasMultipleFilters:g,deleteFilter:h,applyFilterChanges:x,multiFilterOperator:S,showMultiFilterOperators:C,disableMultiFilterOperator:E,applyMultiFilterOperatorChanges:T,focusElementRef:_,logicOperators:F=[Ke.And,Ke.Or],columnsSort:L,filterColumns:k,deleteIconProps:H={},logicOperatorInputProps:A={},operatorInputProps:P={},columnInputProps:R={},valueInputProps:y={}}=t,w=Z(t,lg),O=ce(),M=Q(O,Fl),D=Q(O,Re),I=Ie(),$=Ie(),N=Ie(),j=Ie(),G=Y(),U=ag(G),K=a.useRef(null),J=a.useRef(null),ee=g&&F.length>0,le=((o=G.slotProps)==null?void 0:o.baseFormControl)||{},ve=(n=(((l=G.slotProps)==null?void 0:l.baseSelect)||{}).native)!=null?n:!0,se=((i=G.slotProps)==null?void 0:i.baseInputLabel)||{},ie=((s=G.slotProps)==null?void 0:s.baseSelectOption)||{},{InputComponentProps:ue}=y,we=Z(y,ng),Fe=a.useMemo(()=>{if(k===void 0||typeof k!="function")return M;const ne=k({field:b.field,columns:M,currentFilters:(D==null?void 0:D.items)||[]});return M.filter(W=>ne.includes(W.field))},[k,D==null?void 0:D.items,M,b.field]),de=a.useMemo(()=>{switch(L){case"asc":return Fe.sort((ne,W)=>Un.compare(Cr(ne),Cr(W)));case"desc":return Fe.sort((ne,W)=>-Un.compare(Cr(ne),Cr(W)));default:return Fe}},[Fe,L]),B=b.field?O.current.getColumn(b.field):null,q=a.useMemo(()=>{var ne;return!b.operator||!B?null:(ne=B.filterOperators)==null?void 0:ne.find(W=>W.value===b.operator)},[b,B]),ae=a.useCallback(ne=>{const W=ne.target.value,te=O.current.getColumn(W);if(te.field===B.field)return;const oe=te.filterOperators.find(Le=>Le.value===b.operator)||te.filterOperators[0],Oe=!oe.InputComponent||oe.InputComponent!==(q==null?void 0:q.InputComponent)||te.type!==B.type;x(m({},b,{field:W,operator:oe.value,value:Oe?void 0:b.value}))},[O,x,b,B,q]),fe=a.useCallback(ne=>{const W=ne.target.value,te=B==null?void 0:B.filterOperators.find(Oe=>Oe.value===W),oe=!(te!=null&&te.InputComponent)||(te==null?void 0:te.InputComponent)!==(q==null?void 0:q.InputComponent);x(m({},b,{operator:W,value:oe?void 0:b.value}))},[x,b,B,q]),ge=a.useCallback(ne=>{const W=ne.target.value===Ke.And.toString()?Ke.And:Ke.Or;T(W)},[T]),Se=()=>{G.disableMultipleColumnsFiltering?b.value===void 0?h(b):x(m({},b,{value:void 0})):h(b)};return a.useImperativeHandle(_,()=>({focus:()=>{if(q!=null&&q.InputComponent){var ne;K==null||(ne=K.current)==null||ne.focus()}else J.current.focus()}}),[q]),v.jsxs(ig,m({ref:r,className:U.root,"data-id":b.id,ownerState:G},w,{children:[v.jsx(sg,m({variant:"standard",as:G.slots.baseFormControl},le,H,{className:xe(U.deleteIcon,le.className,H.className),ownerState:G,children:v.jsx(G.slots.baseIconButton,m({"aria-label":O.current.getLocaleText("filterPanelDeleteIconLabel"),title:O.current.getLocaleText("filterPanelDeleteIconLabel"),onClick:Se,size:"small"},(u=G.slotProps)==null?void 0:u.baseIconButton,{children:v.jsx(G.slots.filterPanelDeleteIcon,{fontSize:"small"})}))})),v.jsx(ug,m({variant:"standard",as:G.slots.baseFormControl},le,A,{sx:m({display:ee?"flex":"none",visibility:C?"visible":"hidden"},le.sx||{},A.sx||{}),className:xe(U.logicOperatorInput,le.className,A.className),ownerState:G,children:v.jsx(G.slots.baseSelect,m({inputProps:{"aria-label":O.current.getLocaleText("filterPanelLogicOperator")},value:S,onChange:ge,disabled:!!E||F.length===1,native:ve},(d=G.slotProps)==null?void 0:d.baseSelect,{children:F.map(ne=>a.createElement(G.slots.baseSelectOption,m({},ie,{native:ve,key:ne.toString(),value:ne.toString()}),O.current.getLocaleText(fg(ne))))}))})),v.jsxs(cg,m({variant:"standard",as:G.slots.baseFormControl},le,R,{className:xe(U.columnInput,le.className,R.className),ownerState:G,children:[v.jsx(G.slots.baseInputLabel,m({},se,{htmlFor:I,id:$,children:O.current.getLocaleText("filterPanelColumns")})),v.jsx(G.slots.baseSelect,m({labelId:$,id:I,label:O.current.getLocaleText("filterPanelColumns"),value:b.field||"",onChange:ae,native:ve},(c=G.slotProps)==null?void 0:c.baseSelect,{children:de.map(ne=>a.createElement(G.slots.baseSelectOption,m({},ie,{native:ve,key:ne.field,value:ne.field}),Cr(ne)))}))]})),v.jsxs(dg,m({variant:"standard",as:G.slots.baseFormControl},le,P,{className:xe(U.operatorInput,le.className,P.className),ownerState:G,children:[v.jsx(G.slots.baseInputLabel,m({},se,{htmlFor:N,id:j,children:O.current.getLocaleText("filterPanelOperator")})),v.jsx(G.slots.baseSelect,m({labelId:j,label:O.current.getLocaleText("filterPanelOperator"),id:N,value:b.operator,onChange:fe,native:ve,inputRef:J},(p=G.slotProps)==null?void 0:p.baseSelect,{children:B==null||(f=B.filterOperators)==null?void 0:f.map(ne=>a.createElement(G.slots.baseSelectOption,m({},ie,{native:ve,key:ne.value,value:ne.value}),ne.label||O.current.getLocaleText(`filterOperator${$t(ne.value)}`)))}))]})),v.jsx(pg,m({variant:"standard",as:G.slots.baseFormControl},le,we,{className:xe(U.valueInput,le.className,we.className),ownerState:G,children:q!=null&&q.InputComponent?v.jsx(q.InputComponent,m({apiRef:O,item:b,applyValue:x,focusElementRef:K},q.InputComponentProps,ue)):null}))]}))});class Yl{constructor(){this.currentId=0,this.clear=()=>{this.currentId!==0&&(clearTimeout(this.currentId),this.currentId=0)},this.disposeEffect=()=>this.clear}static create(){return new Yl}start(t,r){this.clear(),this.currentId=setTimeout(r,t)}}function Xl(){const e=xl(Yl.create).current;return Fa(e.disposeEffect),e}const gg=["item","applyValue","type","apiRef","focusElementRef","tabIndex","disabled","isFilterActive","clearButton","InputProps"];function ut(e){var t,r;const{item:o,applyValue:l,type:n,apiRef:i,focusElementRef:s,tabIndex:u,disabled:d,clearButton:c,InputProps:p}=e,f=Z(e,gg),b=Xl(),[g,h]=a.useState((t=o.value)!=null?t:""),[x,S]=a.useState(!1),C=Ie(),E=Y(),T=a.useCallback(_=>{const{value:F}=_.target;h(String(F)),S(!0),b.start(E.filterDebounceMs,()=>{const L=m({},o,{value:F,fromInput:C});l(L),S(!1)})},[C,l,o,E.filterDebounceMs,b]);return a.useEffect(()=>{if(o.fromInput!==C||o.value===void 0){var F;h(String((F=o.value)!=null?F:""))}},[C,o]),v.jsx(E.slots.baseTextField,m({id:C,label:i.current.getLocaleText("filterPanelInputLabel"),placeholder:i.current.getLocaleText("filterPanelInputPlaceholder"),value:g,onChange:T,variant:"standard",type:n||"text",InputProps:m({},x||c?{endAdornment:x?v.jsx(E.slots.loadIcon,{fontSize:"small",color:"action"}):c}:{},{disabled:d},p,{inputProps:m({tabIndex:u},p==null?void 0:p.inputProps)}),InputLabelProps:{shrink:!0},inputRef:s},f,(r=E.slotProps)==null?void 0:r.baseTextField))}const mg=["item","applyValue","type","apiRef","focusElementRef","InputProps","isFilterActive","clearButton","tabIndex","disabled"];function jt(e){var t,r;const{item:o,applyValue:l,type:n,apiRef:i,focusElementRef:s,InputProps:u,clearButton:d,tabIndex:c,disabled:p}=e,f=Z(e,mg),b=Xl(),[g,h]=a.useState((t=o.value)!=null?t:""),[x,S]=a.useState(!1),C=Ie(),E=Y(),T=a.useCallback(_=>{const F=_.target.value;h(String(F)),S(!0),b.start(E.filterDebounceMs,()=>{l(m({},o,{value:F})),S(!1)})},[l,o,E.filterDebounceMs,b]);return a.useEffect(()=>{var _;const F=(_=o.value)!=null?_:"";h(String(F))},[o.value]),v.jsx(E.slots.baseTextField,m({fullWidth:!0,id:C,label:i.current.getLocaleText("filterPanelInputLabel"),placeholder:i.current.getLocaleText("filterPanelInputPlaceholder"),value:g,onChange:T,variant:"standard",type:n||"text",InputLabelProps:{shrink:!0},inputRef:s,InputProps:m({},x||d?{endAdornment:x?v.jsx(E.slots.loadIcon,{fontSize:"small",color:"action"}):d}:{},{disabled:p},u,{inputProps:m({max:n==="datetime-local"?"9999-12-31T23:59":"9999-12-31",tabIndex:c},u==null?void 0:u.inputProps)})},f,(r=E.slotProps)==null?void 0:r.baseTextField))}const bg=["item","applyValue","type","apiRef","focusElementRef","getOptionLabel","getOptionValue","placeholder","tabIndex","label","isFilterActive","clearButton","InputLabelProps"],hg=({column:{valueOptions:e,field:t},OptionComponent:r,getOptionLabel:o,getOptionValue:l,isSelectNative:n,baseSelectOptionProps:i})=>(typeof e=="function"?["",...e({field:t})]:["",...e||[]]).map(u=>{const d=l(u),c=o(u);return a.createElement(r,m({},i,{native:n,key:d,value:d}),c)}),Cg=De("div")({display:"flex",alignItems:"flex-end",width:"100%","& button":{margin:"auto 0px 5px 5px"}});function ol(e){var t,r,o,l,n,i,s,u;const{item:d,applyValue:c,type:p,apiRef:f,focusElementRef:b,getOptionLabel:g,getOptionValue:h,placeholder:x,tabIndex:S,label:C,clearButton:E}=e,T=Z(e,bg),[_,F]=a.useState((t=d.value)!=null?t:""),L=Ie(),k=Ie(),H=Y(),A=(r=(o=H.slotProps)==null||(o=o.baseSelect)==null?void 0:o.native)!=null?r:!0;let P=null;if(d.field){const D=f.current.getColumn(d.field);Ut(D)&&(P=D)}const R=h||((l=P)==null?void 0:l.getOptionValue),y=g||((n=P)==null?void 0:n.getOptionLabel),w=a.useMemo(()=>{if(P)return typeof P.valueOptions=="function"?P.valueOptions({field:P.field}):P.valueOptions},[P]),O=a.useCallback(D=>{let I=D.target.value;I=Ko(I,w,R),F(String(I)),c(m({},d,{value:I}))},[w,R,c,d]);if(a.useEffect(()=>{var D;let I;if(w!==void 0){if(I=Ko(d.value,w,R),I!==d.value){c(m({},d,{value:I}));return}}else I=d.value;I=(D=I)!=null?D:"",F(String(I))},[d,w,c,R]),!Ut(P)||!Ut(P))return null;const M=C??f.current.getLocaleText("filterPanelInputLabel");return v.jsxs(Cg,{children:[v.jsxs(H.slots.baseFormControl,{children:[v.jsx(H.slots.baseInputLabel,m({},(i=H.slotProps)==null?void 0:i.baseInputLabel,{id:k,htmlFor:L,shrink:!0,variant:"standard",children:M})),v.jsx(H.slots.baseSelect,m({id:L,label:M,labelId:k,value:_,onChange:O,variant:"standard",type:p||"text",inputProps:{tabIndex:S,ref:b,placeholder:x??f.current.getLocaleText("filterPanelInputPlaceholder")},native:A},T,(s=H.slotProps)==null?void 0:s.baseSelect,{children:hg({column:P,OptionComponent:H.slots.baseSelectOption,getOptionLabel:y,getOptionValue:R,isSelectNative:A,baseSelectOptionProps:(u=H.slotProps)==null?void 0:u.baseSelectOption})}))]}),E]})}const wg=["item","applyValue","apiRef","focusElementRef","isFilterActive","clearButton","tabIndex","label","InputLabelProps"],Sg=De("div")({display:"flex",alignItems:"center",width:"100%","& button":{margin:"auto 0px 5px 5px"}});function Is(e){var t,r,o,l;const{item:n,applyValue:i,apiRef:s,focusElementRef:u,clearButton:d,tabIndex:c,label:p}=e,f=Z(e,wg),[b,g]=a.useState(n.value||""),h=Y(),x=Ie(),S=Ie(),C=((t=h.slotProps)==null?void 0:t.baseSelect)||{},E=(r=C.native)!=null?r:!0,T=((o=h.slotProps)==null?void 0:o.baseSelectOption)||{},_=a.useCallback(L=>{const k=L.target.value;g(k),i(m({},n,{value:k}))},[i,n]);a.useEffect(()=>{g(n.value||"")},[n.value]);const F=p??s.current.getLocaleText("filterPanelInputLabel");return v.jsxs(Sg,{children:[v.jsxs(h.slots.baseFormControl,{fullWidth:!0,children:[v.jsx(h.slots.baseInputLabel,m({},(l=h.slotProps)==null?void 0:l.baseInputLabel,{id:x,shrink:!0,variant:"standard",children:F})),v.jsxs(h.slots.baseSelect,m({labelId:x,id:S,label:F,value:b,onChange:_,variant:"standard",native:E,displayEmpty:!0,inputProps:{ref:u,tabIndex:c}},f,C,{children:[v.jsx(h.slots.baseSelectOption,m({},T,{native:E,value:"",children:s.current.getLocaleText("filterValueAny")})),v.jsx(h.slots.baseSelectOption,m({},T,{native:E,value:"true",children:s.current.getLocaleText("filterValueTrue")})),v.jsx(h.slots.baseSelectOption,m({},T,{native:E,value:"false",children:s.current.getLocaleText("filterValueFalse")}))]}))]}),d]})}const Og=["logicOperators","columnsSort","filterFormProps","getColumnForNewFilter","children","disableAddFilterButton","disableRemoveAllButton"],qn=e=>({field:e.field,operator:e.filterOperators[0].value,id:Math.round(Math.random()*1e5)}),Ms=a.forwardRef(function(t,r){var o,l;const n=ce(),i=Y(),s=Q(n,Re),u=Q(n,Fl),d=a.useRef(null),c=a.useRef(null),{logicOperators:p=[Ke.And,Ke.Or],columnsSort:f,filterFormProps:b,getColumnForNewFilter:g,disableAddFilterButton:h=!1,disableRemoveAllButton:x=!1}=t,S=Z(t,Og),C=n.current.upsertFilterItem,E=a.useCallback(P=>{n.current.setFilterLogicOperator(P)},[n]),T=a.useCallback(()=>{let P;if(g&&typeof g=="function"){const R=g({currentFilters:(s==null?void 0:s.items)||[],columns:u});if(R===null)return null;P=u.find(({field:y})=>y===R)}else P=u.find(R=>{var y;return(y=R.filterOperators)==null?void 0:y.length});return P?qn(P):null},[s==null?void 0:s.items,u,g]),_=a.useCallback(()=>{if(g===void 0||typeof g!="function")return T();const P=s.items.length?s.items:[T()].filter(Boolean),R=g({currentFilters:P,columns:u});if(R===null)return null;const y=u.find(({field:w})=>w===R);return y?qn(y):null},[s.items,u,g,T]),F=a.useMemo(()=>s.items.length?s.items:(c.current||(c.current=T()),c.current?[c.current]:[]),[s.items,T]),L=F.length>1,k=()=>{const P=_();P&&n.current.upsertFilterItems([...F,P])},H=a.useCallback(P=>{const R=F.length===1;n.current.deleteFilterItem(P),R&&n.current.hideFilterPanel()},[n,F.length]),A=()=>{F.length===1&&F[0].value===void 0&&(n.current.deleteFilterItem(F[0]),n.current.hideFilterPanel()),n.current.setFilterModel(m({},s,{items:[]}))};return a.useEffect(()=>{p.length>0&&s.logicOperator&&!p.includes(s.logicOperator)&&E(p[0])},[p,E,s.logicOperator]),a.useEffect(()=>{F.length>0&&d.current.focus()},[F.length]),v.jsxs(Jl,m({ref:r},S,{children:[v.jsx(Ql,{children:F.map((P,R)=>v.jsx(ys,m({item:P,applyFilterChanges:C,deleteFilter:H,hasMultipleFilters:L,showMultiFilterOperators:R>0,multiFilterOperator:s.logicOperator,disableMultiFilterOperator:R!==1,applyMultiFilterOperatorChanges:E,focusElementRef:R===F.length-1?d:null,logicOperators:p,columnsSort:f},b),P.id==null?R:P.id))}),!i.disableMultipleColumnsFiltering&&!(h&&x)?v.jsxs(Zl,{children:[h?v.jsx("span",{}):v.jsx(i.slots.baseButton,m({onClick:k,startIcon:v.jsx(i.slots.filterPanelAddIcon,{})},(o=i.slotProps)==null?void 0:o.baseButton,{children:n.current.getLocaleText("filterPanelAddFilter")})),x?null:v.jsx(i.slots.baseButton,m({onClick:A,startIcon:v.jsx(i.slots.filterPanelRemoveAllIcon,{})},(l=i.slotProps)==null?void 0:l.baseButton,{children:n.current.getLocaleText("filterPanelRemoveAll")}))]}):null]}))}),Pg=["item","applyValue","type","apiRef","focusElementRef","color","error","helperText","size","variant"];function en(e){const{item:t,applyValue:r,type:o,apiRef:l,focusElementRef:n,color:i,error:s,helperText:u,size:d,variant:c}=e,p=Z(e,Pg),f={color:i,error:s,helperText:u,size:d,variant:c},[b,g]=a.useState(t.value||[]),h=Ie(),x=Y();a.useEffect(()=>{var C;const E=(C=t.value)!=null?C:[];g(E.map(String))},[t.value]);const S=a.useCallback((C,E)=>{g(E.map(String)),r(m({},t,{value:[...E]}))},[r,t]);return v.jsx(Ca,m({multiple:!0,freeSolo:!0,options:[],filterOptions:(C,E)=>{const{inputValue:T}=E;return T==null||T===""?[]:[T]},id:h,value:b,onChange:S,renderTags:(C,E)=>C.map((T,_)=>v.jsx(x.slots.baseChip,m({variant:"outlined",size:"small",label:T},E({index:_})))),renderInput:C=>{var E;return v.jsx(x.slots.baseTextField,m({},C,{label:l.current.getLocaleText("filterPanelInputLabel"),placeholder:l.current.getLocaleText("filterPanelInputPlaceholder"),InputLabelProps:m({},C.InputLabelProps,{shrink:!0}),inputRef:n,type:o||"text"},f,(E=x.slotProps)==null?void 0:E.baseTextField))}},p))}const xg=["item","applyValue","type","apiRef","focusElementRef","color","error","helperText","size","variant","getOptionLabel","getOptionValue"],vg=Uu();function ks(e){var t,r;const{item:o,applyValue:l,apiRef:n,focusElementRef:i,color:s,error:u,helperText:d,size:c,variant:p="standard",getOptionLabel:f,getOptionValue:b}=e,g=Z(e,xg),h={color:s,error:u,helperText:d,size:c,variant:p},x=Ie(),S=Y();let C=null;if(o.field){const A=n.current.getColumn(o.field);Ut(A)&&(C=A)}const E=b||((t=C)==null?void 0:t.getOptionValue),T=f||((r=C)==null?void 0:r.getOptionLabel),_=a.useCallback((A,P)=>E(A)===E(P),[E]),F=a.useMemo(()=>{var A;return(A=C)!=null&&A.valueOptions?typeof C.valueOptions=="function"?C.valueOptions({field:C.field}):C.valueOptions:[]},[C]),L=a.useMemo(()=>F==null?void 0:F.map(E),[F,E]),k=a.useMemo(()=>Array.isArray(o.value)?F!==void 0?o.value.map(P=>L==null?void 0:L.findIndex(R=>R===P)).filter(P=>P>=0).map(P=>F[P]):o.value:[],[o.value,F,L]);a.useEffect(()=>{(!Array.isArray(o.value)||k.length!==o.value.length)&&l(m({},o,{value:k.map(E)}))},[o,k,l,E]);const H=a.useCallback((A,P)=>{l(m({},o,{value:P.map(E)}))},[l,o,E]);return v.jsx(Ca,m({multiple:!0,options:F,isOptionEqualToValue:_,filterOptions:vg,id:x,value:k,onChange:H,getOptionLabel:T,renderTags:(A,P)=>A.map((R,y)=>v.jsx(S.slots.baseChip,m({variant:"outlined",size:"small",label:T(R)},P({index:y})))),renderInput:A=>{var P;return v.jsx(S.slots.baseTextField,m({},A,{label:n.current.getLocaleText("filterPanelInputLabel"),placeholder:n.current.getLocaleText("filterPanelInputPlaceholder"),InputLabelProps:m({},A.InputLabelProps,{shrink:!0}),inputRef:i,type:"singleSelect"},h,(P=S.slotProps)==null?void 0:P.baseTextField))}},g))}const Fg=["onClick"],Es=a.forwardRef(function(t,r){var o;const{onClick:l}=t,n=Z(t,Fg),i=Ie(),s=Ie(),u=ce(),d=Y(),c=Q(u,At),p=b=>{c.open&&c.openedPanelValue===st.columns?u.current.hidePreferences():u.current.showPreferences(st.columns,s,i),l==null||l(b)};if(d.disableColumnSelector)return null;const f=c.open&&c.panelId===s;return v.jsx(d.slots.baseButton,m({ref:r,id:i,size:"small","aria-label":u.current.getLocaleText("toolbarColumnsLabel"),"aria-haspopup":"menu","aria-expanded":f,"aria-controls":f?s:void 0,startIcon:v.jsx(d.slots.columnSelectorIcon,{})},n,{onClick:p},(o=d.slotProps)==null?void 0:o.baseButton,{children:u.current.getLocaleText("toolbarColumns")}))}),yg=["onClick"],Ls=a.forwardRef(function(t,r){var o;const{onClick:l}=t,n=Z(t,yg),i=ce(),s=Y(),u=Q(i,Dl),d=Ie(),c=Ie(),[p,f]=a.useState(!1),b=a.useRef(null),g=xt(r,b),h=[{icon:v.jsx(s.slots.densityCompactIcon,{}),label:i.current.getLocaleText("toolbarDensityCompact"),value:"compact"},{icon:v.jsx(s.slots.densityStandardIcon,{}),label:i.current.getLocaleText("toolbarDensityStandard"),value:"standard"},{icon:v.jsx(s.slots.densityComfortableIcon,{}),label:i.current.getLocaleText("toolbarDensityComfortable"),value:"comfortable"}],x=a.useMemo(()=>{switch(u){case"compact":return v.jsx(s.slots.densityCompactIcon,{});case"comfortable":return v.jsx(s.slots.densityComfortableIcon,{});default:return v.jsx(s.slots.densityStandardIcon,{})}},[u,s]),S=F=>{f(L=>!L),l==null||l(F)},C=()=>{f(!1)},E=F=>{i.current.setDensity(F),f(!1)},T=F=>{Mo(F.key)&&F.preventDefault(),_l(F.key)&&f(!1)};if(s.disableDensitySelector)return null;const _=h.map((F,L)=>v.jsxs(dt,{onClick:()=>E(F.value),selected:F.value===u,children:[v.jsx(Dt,{children:F.icon}),F.label]},L));return v.jsxs(a.Fragment,{children:[v.jsx(s.slots.baseButton,m({ref:g,size:"small",startIcon:x,"aria-label":i.current.getLocaleText("toolbarDensityLabel"),"aria-haspopup":"menu","aria-expanded":p,"aria-controls":p?c:void 0,id:d},n,{onClick:S},(o=s.slotProps)==null?void 0:o.baseButton,{children:i.current.getLocaleText("toolbarDensity")})),v.jsx(Vr,{open:p,target:b.current,onClose:C,position:"bottom-start",children:v.jsx(Co,{id:c,className:V.menuList,"aria-labelledby":d,onKeyDown:T,autoFocusItem:p,children:_})})]})}),Ig=["componentsProps"],Mg=e=>{const{classes:t}=e;return he({root:["toolbarFilterList"]},be,t)},kg=De("ul",{name:"MuiDataGrid",slot:"ToolbarFilterList",overridesResolver:(e,t)=>t.toolbarFilterList})(({theme:e})=>({margin:e.spacing(1,1,.5),padding:e.spacing(0,1)})),Ts=a.forwardRef(function(t,r){var o,l;const{componentsProps:n={}}=t,i=Z(t,Ig),s=n.button||{},u=ce(),d=Y(),c=Q(u,Ll),p=Q(u,Vt),f=Q(u,At),b=Mg(d),g=Ie(),h=Ie(),x=a.useMemo(()=>{if(f.open)return u.current.getLocaleText("toolbarFiltersTooltipHide");if(c.length===0)return u.current.getLocaleText("toolbarFiltersTooltipShow");const E=_=>p[_.field].filterOperators.find(F=>F.value===_.operator).label||u.current.getLocaleText(`filterOperator${$t(_.operator)}`).toString(),T=_=>{const{getValueAsString:F}=p[_.field].filterOperators.find(L=>L.value===_.operator);return F?F(_.value):_.value};return v.jsxs("div",{children:[u.current.getLocaleText("toolbarFiltersTooltipActive")(c.length),v.jsx(kg,{className:b.root,ownerState:d,children:c.map((_,F)=>m({},p[_.field]&&v.jsx("li",{children:`${p[_.field].headerName||_.field} + ))`:Ct(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:Ct(e.palette.primary.main,e.palette.action.selectedOpacity)}}}},[`& .${V.cell}`]:{display:"flex",alignItems:"center",borderBottom:"1px solid","&.Mui-selected":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:Ct(e.palette.primary.main,e.palette.action.selectedOpacity),"&:hover, &.Mui-hovered":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity+e.palette.action.hoverOpacity})`:Ct(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:Ct(e.palette.primary.main,e.palette.action.selectedOpacity)}}}},[`&.${V["root--disableUserSelection"]} .${V.cell}`]:{userSelect:"none"},[`& .${V.row}:not(.${V["row--dynamicHeight"]}) > .${V.cell}`]:{overflow:"hidden",whiteSpace:"nowrap"},[`& .${V.cellContent}`]:{overflow:"hidden",textOverflow:"ellipsis"},[`& .${V.cell}.${V["cell--selectionMode"]}`]:{cursor:"default"},[`& .${V.cell}.${V["cell--editing"]}`]:{padding:1,display:"flex",boxShadow:e.shadows[2],backgroundColor:(e.vars||e).palette.background.paper,"&:focus-within":{outline:`solid ${(e.vars||e).palette.primary.main} 1px`,outlineOffset:"-1px"}},[`& .${V["row--editing"]}`]:{boxShadow:e.shadows[2]},[`& .${V["row--editing"]} .${V.cell}`]:{boxShadow:e.shadows[0],backgroundColor:(e.vars||e).palette.background.paper},[`& .${V.editBooleanCell}`]:{display:"flex",height:"100%",width:"100%",alignItems:"center",justifyContent:"center"},[`& .${V.booleanCell}[data-value="true"]`]:{color:(e.vars||e).palette.text.secondary},[`& .${V.booleanCell}[data-value="false"]`]:{color:(e.vars||e).palette.text.disabled},[`& .${V.actionsCell}`]:{display:"inline-flex",alignItems:"center",gridGap:e.spacing(1)},[`& .${V.rowReorderCell}`]:{display:"inline-flex",flex:1,alignItems:"center",justifyContent:"center",opacity:(e.vars||e).palette.action.disabledOpacity},[`& .${V["rowReorderCell--draggable"]}`]:{cursor:"move",opacity:1},[`& .${V.rowReorderCellContainer}`]:{padding:0,alignItems:"stretch"},[`.${V.withBorderColor}`]:{borderColor:t},[`& .${V["cell--withRightBorder"]}`]:{borderRightWidth:"1px",borderRightStyle:"solid"},[`& .${V["columnHeader--withRightBorder"]}`]:{borderRightWidth:"1px",borderRightStyle:"solid"},[`& .${V["cell--textLeft"]}`]:{justifyContent:"flex-start"},[`& .${V["cell--textRight"]}`]:{justifyContent:"flex-end"},[`& .${V["cell--textCenter"]}`]:{justifyContent:"center"},[`& .${V.columnHeaderDraggableContainer}`]:{display:"flex",width:"100%",height:"100%"},[`& .${V.rowReorderCellPlaceholder}`]:{display:"none"},[`& .${V["columnHeader--dragging"]}, & .${V["row--dragging"]}`]:{background:(e.vars||e).palette.background.paper,padding:"0 12px",borderRadius:"var(--unstable_DataGrid-radius)",opacity:(e.vars||e).palette.action.disabledOpacity},[`& .${V["row--dragging"]}`]:{background:(e.vars||e).palette.background.paper,padding:"0 12px",borderRadius:"var(--unstable_DataGrid-radius)",opacity:(e.vars||e).palette.action.disabledOpacity,[`& .${V.rowReorderCellPlaceholder}`]:{display:"flex"}},[`& .${V.treeDataGroupingCell}`]:{display:"flex",alignItems:"center",width:"100%"},[`& .${V.treeDataGroupingCellToggle}`]:{flex:"0 0 28px",alignSelf:"stretch",marginRight:e.spacing(2)},[`& .${V.groupingCriteriaCell}`]:{display:"flex",alignItems:"center",width:"100%"},[`& .${V.groupingCriteriaCellToggle}`]:{flex:"0 0 28px",alignSelf:"stretch",marginRight:e.spacing(2)}})}),Mp=["children","className"],kp=e=>{const{autoHeight:t,density:r,classes:o}=e,l={root:["root",t&&"autoHeight",`root--density${$t(r)}`,"withBorderColor"]};return he(l,be,o)},fi=a.forwardRef(function(t,r){var o;const l=Y(),{children:n,className:i}=t,s=J(t,Mp),u=_t(),d=K(u,Tl),c=a.useRef(null),p=xt(c,r),f=(o=l.experimentalFeatures)!=null&&o.ariaV7?null:Ta,b=typeof f=="function"?f():null,g=m({},l,{density:d}),h=kp(g);u.current.register("public",{rootElementRef:c});const[P,w]=a.useState(!1);return ze(()=>{w(!0)},[]),P?x.jsx(Ip,m({ref:p,className:xe(i,h.root),ownerState:g},b,s,{children:n})):null}),Ep=["className"],Lp=e=>{const{classes:t}=e;return he({root:["footerContainer","withBorderColor"]},be,t)},Tp=_e("div",{name:"MuiDataGrid",slot:"FooterContainer",overridesResolver:(e,t)=>t.footerContainer})({display:"flex",justifyContent:"space-between",alignItems:"center",minHeight:52,borderTop:"1px solid"}),gi=a.forwardRef(function(t,r){const{className:o}=t,l=J(t,Ep),n=Y(),i=Lp(n);return x.jsx(Tp,m({ref:r,className:xe(i.root,o),ownerState:n},l))}),Dp=["className"],$p=e=>{const{classes:t}=e;return he({root:["overlay"]},be,t)},Ap=_e("div",{name:"MuiDataGrid",slot:"Overlay",overridesResolver:(e,t)=>t.overlay})({width:"100%",height:"100%",display:"flex",alignSelf:"center",alignItems:"center",justifyContent:"center",backgroundColor:"var(--unstable_DataGrid-overlayBackground)"}),Mo=a.forwardRef(function(t,r){const{className:o}=t,l=J(t,Dp),n=Y(),i=$p(n);return x.jsx(Ap,m({ref:r,className:xe(i.root,o),ownerState:n},l))}),Rp=["className","children"],Hp=e=>{const{classes:t}=e;return he({root:["toolbarContainer"]},be,t)},_p=_e("div",{name:"MuiDataGrid",slot:"ToolbarContainer",overridesResolver:(e,t)=>t.toolbarContainer})(({theme:e})=>({display:"flex",alignItems:"center",flexWrap:"wrap",gap:e.spacing(1),padding:e.spacing(.5,.5,0)})),mi=a.forwardRef(function(t,r){const{className:o,children:l}=t,n=J(t,Rp),i=Y(),s=Hp(i);return l?x.jsx(_p,m({ref:r,className:xe(o,s.root),ownerState:i},n,{children:l})):null}),Vp=["className"],Np=e=>{const{classes:t}=e;return he({root:["iconButtonContainer"]},be,t)},Gp=_e("div",{name:"MuiDataGrid",slot:"IconButtonContainer",overridesResolver:(e,t)=>t.iconButtonContainer})(()=>({display:"flex",visibility:"hidden",width:0})),bi=a.forwardRef(function(t,r){const{className:o}=t,l=J(t,Vp),n=Y(),i=Np(n);return x.jsx(Gp,m({ref:r,className:xe(i.root,o),ownerState:n},l))}),zp=e=>{const{classes:t}=e;return he({icon:["sortIcon"]},be,t)};function jp(e,t,r,o){let l;const n={};return t==="asc"?l=e.columnSortedAscendingIcon:t==="desc"?l=e.columnSortedDescendingIcon:(l=e.columnUnsortedIcon,n.sortingOrder=o),l?x.jsx(l,m({fontSize:"small",className:r},n)):null}function Bp(e){var t;const{direction:r,index:o,sortingOrder:l}=e,n=ce(),i=Y(),s=m({},e,{classes:i.classes}),u=zp(s),d=jp(i.slots,r,u.icon,l);if(!d)return null;const c=x.jsx(i.slots.baseIconButton,m({tabIndex:-1,"aria-label":n.current.getLocaleText("columnHeaderSortIconLabel"),title:n.current.getLocaleText("columnHeaderSortIconLabel"),size:"small"},(t=i.slotProps)==null?void 0:t.baseIconButton,{children:d}));return x.jsxs(bi,{children:[o!=null&&x.jsx(ml,{badgeContent:o,color:"default",children:c}),o==null&&c]})}const hi=a.memo(Bp),Up=e=>{const{classes:t,open:r}=e;return he({root:["menuIcon",r&&"menuOpen"],button:["menuIconButton"]},be,t)},qp=a.memo(e=>{var t,r;const{colDef:o,open:l,columnMenuId:n,columnMenuButtonId:i,iconButtonRef:s}=e,u=ce(),d=Y(),c=m({},e,{classes:d.classes}),p=Up(c),f=a.useCallback(b=>{b.preventDefault(),b.stopPropagation(),u.current.toggleColumnMenu(o.field)},[u,o.field]);return x.jsx("div",{className:p.root,children:x.jsx(d.slots.baseTooltip,m({title:u.current.getLocaleText("columnMenuLabel"),enterDelay:1e3},(t=d.slotProps)==null?void 0:t.baseTooltip,{children:x.jsx(d.slots.baseIconButton,m({ref:s,tabIndex:-1,className:p.button,"aria-label":u.current.getLocaleText("columnMenuLabel"),size:"small",onClick:f,"aria-haspopup":"menu","aria-expanded":l,"aria-controls":l?n:void 0,id:i},(r=d.slotProps)==null?void 0:r.baseIconButton,{children:x.jsx(d.slots.columnMenuIcon,{fontSize:"small"})}))}))})});function Ci({columnMenuId:e,columnMenuButtonId:t,ContentComponent:r,contentComponentProps:o,field:l,open:n,target:i,onExited:s}){const u=ce(),d=u.current.getColumn(l),c=pt(p=>{p&&(p.stopPropagation(),i!=null&&i.contains(p.target))||u.current.hideColumnMenu()});return!i||!d?null:x.jsx(_r,{placement:`bottom-${d.align==="right"?"start":"end"}`,open:n,target:i,onClose:c,onExited:s,children:x.jsx(r,m({colDef:d,hideMenu:c,open:n,id:e,labelledby:t},o))})}const Wp=["className"],Kp=e=>{const{classes:t}=e;return he({root:["columnHeaderTitle"]},be,t)},Qp=_e("div",{name:"MuiDataGrid",slot:"ColumnHeaderTitle",overridesResolver:(e,t)=>t.columnHeaderTitle})({textOverflow:"ellipsis",overflow:"hidden",whiteSpace:"nowrap",fontWeight:"var(--unstable_DataGrid-headWeight)"}),Zp=a.forwardRef(function(t,r){const{className:o}=t,l=J(t,Wp),n=Y(),i=Kp(n);return x.jsx(Qp,m({ref:r,className:xe(i.root,o),ownerState:n},l))});function wi(e){var t;const{label:r,description:o}=e,l=Y(),n=a.useRef(null),[i,s]=a.useState(""),u=a.useCallback(()=>{if(!o&&n!=null&&n.current){const d=Rd(n.current);s(d?r:"")}},[o,r]);return x.jsx(l.slots.baseTooltip,m({title:o||i},(t=l.slotProps)==null?void 0:t.baseTooltip,{children:x.jsx(Zp,{onMouseOver:u,ref:n,children:r})}))}const Jp=["resizable","resizing","height","side"];var _l=function(e){return e.Left="left",e.Right="right",e}(_l||{});const Yp=e=>{const{resizable:t,resizing:r,classes:o,side:l}=e,n={root:["columnSeparator",t&&"columnSeparator--resizable",r&&"columnSeparator--resizing",l&&`columnSeparator--side${$t(l)}`],icon:["iconSeparator"]};return he(n,be,o)};function Xp(e){const{height:t,side:r=_l.Right}=e,o=J(e,Jp),l=Y(),n=m({},e,{side:r,classes:l.classes}),i=Yp(n),s=a.useCallback(u=>{u.preventDefault(),u.stopPropagation()},[]);return x.jsx("div",m({className:i.root,style:{minHeight:t,opacity:l.showColumnVerticalBorder?0:1}},o,{onClick:s,children:x.jsx(l.slots.columnResizeIcon,{className:i.icon})}))}const Si=a.memo(Xp),ef=["classes","columnMenuOpen","colIndex","height","isResizing","sortDirection","hasFocus","tabIndex","separatorSide","isDraggable","headerComponent","description","elementId","width","columnMenuIconButton","columnMenu","columnTitleIconButtons","headerClassName","label","resizable","draggableContainerProps","columnHeaderSeparatorProps"],Oi=a.forwardRef(function(t,r){const{classes:o,columnMenuOpen:l,colIndex:n,height:i,isResizing:s,sortDirection:u,hasFocus:d,tabIndex:c,separatorSide:p,isDraggable:f,headerComponent:b,description:g,width:h,columnMenuIconButton:P=null,columnMenu:w=null,columnTitleIconButtons:C=null,headerClassName:E,label:T,resizable:_,draggableContainerProps:F,columnHeaderSeparatorProps:L}=t,I=J(t,ef),H=_t(),$=Y(),v=a.useRef(null),[R,y]=a.useState(l),S=xt(v,r);let O="none";return u!=null&&(O=u==="asc"?"ascending":"descending"),a.useEffect(()=>{R||y(l)},[R,l]),a.useLayoutEffect(()=>{const M=H.current.state.columnMenu;if(d&&!M.open){const k=v.current.querySelector('[tabindex="0"]')||v.current;k==null||k.focus(),H.current.columnHeadersContainerElementRef.current.scrollLeft=0}},[H,d]),x.jsxs("div",m({ref:S,className:xe(o.root,E),style:{height:i,width:h,minWidth:h,maxWidth:h},role:"columnheader",tabIndex:c,"aria-colindex":n+1,"aria-sort":O,"aria-label":b==null?T:void 0},I,{children:[x.jsxs("div",m({className:o.draggableContainer,draggable:f,role:"presentation"},F,{children:[x.jsxs("div",{className:o.titleContainer,role:"presentation",children:[x.jsx("div",{className:o.titleContainerContent,children:b!==void 0?b:x.jsx(wi,{label:T,description:g,columnWidth:h})}),C]}),P]})),x.jsx(Si,m({resizable:!$.disableColumnResize&&!!_,resizing:s,height:i,side:p},L)),w]}))}),tf=e=>{const{colDef:t,classes:r,isDragging:o,sortDirection:l,showRightBorder:n,filterItemsCounter:i}=e,s=l!=null,u=i!=null&&i>0,d=t.type==="number",c={root:["columnHeader",t.headerAlign==="left"&&"columnHeader--alignLeft",t.headerAlign==="center"&&"columnHeader--alignCenter",t.headerAlign==="right"&&"columnHeader--alignRight",t.sortable&&"columnHeader--sortable",o&&"columnHeader--moving",s&&"columnHeader--sorted",u&&"columnHeader--filtered",d&&"columnHeader--numeric","withBorderColor",n&&"columnHeader--withRightBorder"],draggableContainer:["columnHeaderDraggableContainer"],titleContainer:["columnHeaderTitleContainer"],titleContainerContent:["columnHeaderTitleContainerContent"]};return he(c,be,r)};function Pi(e){var t,r,o,l;const{colDef:n,columnMenuOpen:i,colIndex:s,headerHeight:u,isResizing:d,sortDirection:c,sortIndex:p,filterItemsCounter:f,hasFocus:b,tabIndex:g,disableReorder:h,separatorSide:P}=e,w=_t(),C=Y(),E=a.useRef(null),T=Ie(),_=Ie(),F=a.useRef(null),[L,I]=a.useState(i),H=a.useMemo(()=>!C.disableColumnReorder&&!h&&!n.disableReorder,[C.disableColumnReorder,h,n.disableReorder]);let $;n.renderHeader&&($=n.renderHeader(w.current.getColumnHeaderParams(n.field)));const v=m({},e,{classes:C.classes,showRightBorder:C.showColumnVerticalBorder}),R=tf(v),y=a.useCallback(Z=>Q=>{Hr(Q)||w.current.publishEvent(Z,w.current.getColumnHeaderParams(n.field),Q)},[w,n.field]),S=a.useMemo(()=>({onClick:y("columnHeaderClick"),onDoubleClick:y("columnHeaderDoubleClick"),onMouseOver:y("columnHeaderOver"),onMouseOut:y("columnHeaderOut"),onMouseEnter:y("columnHeaderEnter"),onMouseLeave:y("columnHeaderLeave"),onKeyDown:y("columnHeaderKeyDown"),onFocus:y("columnHeaderFocus"),onBlur:y("columnHeaderBlur")}),[y]),O=a.useMemo(()=>H?{onDragStart:y("columnHeaderDragStart"),onDragEnter:y("columnHeaderDragEnter"),onDragOver:y("columnHeaderDragOver"),onDragEnd:y("columnHeaderDragEnd")}:{},[H,y]),M=a.useMemo(()=>({onMouseDown:y("columnSeparatorMouseDown"),onDoubleClick:y("columnSeparatorDoubleClick")}),[y]);a.useEffect(()=>{L||I(i)},[L,i]);const A=a.useCallback(()=>{I(!1)},[]),k=!C.disableColumnMenu&&!n.disableColumnMenu&&x.jsx(qp,{colDef:n,columnMenuId:T,columnMenuButtonId:_,open:L,iconButtonRef:F}),D=x.jsx(Ci,{columnMenuId:T,columnMenuButtonId:_,field:n.field,open:i,target:F.current,ContentComponent:C.slots.columnMenu,contentComponentProps:(t=C.slotProps)==null?void 0:t.columnMenu,onExited:A}),N=(r=n.sortingOrder)!=null?r:C.sortingOrder,j=x.jsxs(a.Fragment,{children:[!C.disableColumnFilter&&x.jsx(C.slots.columnHeaderFilterIconButton,m({field:n.field,counter:f},(o=C.slotProps)==null?void 0:o.columnHeaderFilterIconButton)),n.sortable&&!n.hideSortIcons&&x.jsx(hi,{direction:c,index:p,sortingOrder:N})]});a.useLayoutEffect(()=>{const Z=w.current.state.columnMenu;if(b&&!Z.open){const ee=E.current.querySelector('[tabindex="0"]')||E.current;ee==null||ee.focus(),w.current.columnHeadersContainerElementRef.current.scrollLeft=0}},[w,b]);const z=typeof n.headerClassName=="function"?n.headerClassName({field:n.field,colDef:n}):n.headerClassName,B=(l=n.headerName)!=null?l:n.field;return x.jsx(Oi,m({ref:E,classes:R,columnMenuOpen:i,colIndex:s,height:u,isResizing:d,sortDirection:c,hasFocus:b,tabIndex:g,separatorSide:P,isDraggable:H,headerComponent:$,description:n.description,elementId:n.field,width:n.computedWidth,columnMenuIconButton:k,columnTitleIconButtons:j,headerClassName:z,label:B,resizable:!C.disableColumnResize&&!!n.resizable,"data-field":n.field,columnMenu:D,draggableContainerProps:O,columnHeaderSeparatorProps:M},S))}const ur=()=>({items:[],logicOperator:Ke.And,quickFilterValues:[],quickFilterLogicOperator:Ke.And}),Nn=1e3;class rf{constructor(t=Nn){this.timeouts=new Map,this.cleanupTimeout=Nn,this.cleanupTimeout=t}register(t,r,o){this.timeouts||(this.timeouts=new Map);const l=setTimeout(()=>{typeof r=="function"&&r(),this.timeouts.delete(o.cleanupToken)},this.cleanupTimeout);this.timeouts.set(o.cleanupToken,l)}unregister(t){const r=this.timeouts.get(t.cleanupToken);r&&(this.timeouts.delete(t.cleanupToken),clearTimeout(r))}reset(){this.timeouts&&(this.timeouts.forEach((t,r)=>{this.unregister({cleanupToken:r})}),this.timeouts=void 0)}}class of{constructor(){this.registry=new FinalizationRegistry(t=>{typeof t=="function"&&t()})}register(t,r,o){this.registry.register(t,r,o)}unregister(t){this.registry.unregister(t)}reset(){}}var gt=function(e){return e.DataGrid="DataGrid",e.DataGridPro="DataGridPro",e}(gt||{});class lf{}function xi(e){let t=0;return function(o,l,n,i){e.registry===null&&(e.registry=typeof FinalizationRegistry<"u"?new of:new rf);const[s]=a.useState(new lf),u=a.useRef(null),d=a.useRef();d.current=n;const c=a.useRef(null);if(!u.current&&d.current){const p=(f,b,g)=>{if(!b.defaultMuiPrevented){var h;(h=d.current)==null||h.call(d,f,b,g)}};u.current=o.current.subscribeEvent(l,p,i),t+=1,c.current={cleanupToken:t},e.registry.register(s,()=>{var f;(f=u.current)==null||f.call(u),u.current=null,c.current=null},c.current)}else!d.current&&u.current&&(u.current(),u.current=null,c.current&&(e.registry.unregister(c.current),c.current=null));a.useEffect(()=>{if(!u.current&&d.current){const p=(f,b,g)=>{if(!b.defaultMuiPrevented){var h;(h=d.current)==null||h.call(d,f,b,g)}};u.current=o.current.subscribeEvent(l,p,i)}return c.current&&e.registry&&(e.registry.unregister(c.current),c.current=null),()=>{var p;(p=u.current)==null||p.call(u),u.current=null}},[o,l,i])}}const Ko={registry:null},nf=()=>{var e;(e=Ko.registry)==null||e.reset(),Ko.registry=null},re=xi(Ko),af={isFirst:!0};function Ee(e,t,r){re(e,t,r,af)}function je(e,t){const r=a.useRef(null);if(r.current)return r.current;const o=e.current.getLogger(t);return r.current=o,o}function sf(e){return typeof e=="number"&&!Number.isNaN(e)}function vi(e){return typeof e=="function"}function Vl(e){return typeof e=="object"&&e!==null}function uf(){try{const e="__some_random_key_you_are_not_going_to_use__";return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch{return!1}}function oo(e){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}const cr=(e,t,r)=>Math.max(t,Math.min(r,e));function It(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(e.constructor!==t.constructor)return!1;if(Array.isArray(e)){const l=e.length;if(l!==t.length)return!1;for(let n=0;n{let t=e+=1831565813;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}}function df(e,t,r){const o=cf(e);return()=>t+(r-t)*o()}function Fi(e){return typeof structuredClone=="function"?structuredClone(e):JSON.parse(JSON.stringify(e))}const yi=(e,t,r,o,l)=>{const n=je(e,"useNativeEventListener"),[i,s]=a.useState(!1),u=a.useRef(o),d=a.useCallback(c=>u.current&&u.current(c),[]);a.useEffect(()=>{u.current=o},[o]),a.useEffect(()=>{let c;if(vi(t)?c=t():c=t&&t.current?t.current:null,c&&r&&!i){n.debug(`Binding native ${r} event`),c.addEventListener(r,d,l);const p=c;s(!0);const f=()=>{n.debug(`Clearing native ${r} event`),p.removeEventListener(r,d,l)};e.current.subscribeEvent("unmount",f)}},[t,d,r,i,n,l,e])},mr=e=>{const t=a.useRef(!0);t.current&&(t.current=!1,e())},pf=100,ff=e=>e?0:100,Ii=(e,t)=>t>0&&e>0?Math.ceil(e/t):0;vt(["MUI: the 'rowCount' prop is undefined while using paginationMode='server'","For more detail, see http://mui.com/components/data-grid/pagination/#basic-implementation"],"error");const Mi=e=>({page:0,pageSize:e?0:100}),gf=(e,t=0)=>t===0?e:Math.max(Math.min(e,t-1),0),ki=(e,t)=>{if(t===gt.DataGrid&&e>pf)throw new Error(["MUI: `pageSize` cannot exceed 100 in the MIT version of the DataGrid.","You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature."].join(` +`))},Nl=e=>e.pagination,ot=pe(Nl,e=>e.paginationModel),Ei=pe(ot,e=>e.page),Li=pe(ot,e=>e.pageSize),mf=pe(ot,$r,(e,t)=>Ii(t,e.pageSize)),ko=Te(ot,nt,Dr,Mt,Ml,(e,t,r,o,l)=>{const n=l.length,i=Math.min(e.pageSize*e.page,n-1),s=Math.min(i+e.pageSize-1,n-1);if(i===-1||s===-1)return null;if(r<2)return{firstRowIndex:i,lastRowIndex:s};const u=l[i],d=s-i+1,c=o.findIndex(g=>g.id===u.id);let p=c,f=0;for(;p0)&&(p+=1),h===0&&(f+=1))}return{firstRowIndex:c,lastRowIndex:p-1}}),Ti=Te(Mt,ko,(e,t)=>t?e.slice(t.firstRowIndex,t.lastRowIndex+1):[]),Gl=Te(ar,ko,(e,t)=>t?e.slice(t.firstRowIndex,t.lastRowIndex+1):[]),At=e=>e.preferencePanel;var st=function(e){return e.filters="filters",e.columns="columns",e}(st||{});const dr=e=>e.rowsMeta,rt=e=>e.rowSelection,Di=pe(rt,e=>e.length),$i=Te(rt,Ot,(e,t)=>new Map(e.map(r=>[r,t[r]]))),yr=Te(rt,e=>e.reduce((t,r)=>(t[r]=r,t),{})),bf=vt(["MUI: The `sortModel` can only contain a single item when the `disableMultipleColumnsSorting` prop is set to `true`.","If you are using the community version of the `DataGrid`, this prop is always `true`."],"error"),Ai=(e,t)=>t&&e.length>1?(bf(),[e[0]]):e,Gn=(e,t)=>r=>m({},r,{sorting:m({},r.sorting,{sortModel:Ai(e,t)})}),hf=e=>e==="desc",Cf=(e,t)=>{const r=t.current.getColumn(e.field);if(!r)return null;const o=hf(e.sort)?(...n)=>-1*r.sortComparator(...n):r.sortComparator;return{getSortCellParams:n=>({id:n,field:r.field,rowNode:t.current.getRowNode(n),value:t.current.getCellValue(n,r.field),api:t.current}),comparator:o}},wf=(e,t,r)=>e.reduce((o,l,n)=>{if(o!==0)return o;const i=t.params[n],s=r.params[n];return o=l.comparator(i.value,s.value,i,s),o},0),Sf=(e,t)=>{const r=e.map(o=>Cf(o,t)).filter(o=>!!o);return r.length===0?null:o=>o.map(l=>({node:l,params:r.map(n=>n.getSortCellParams(l.id))})).sort((l,n)=>wf(r,l,n)).map(l=>l.node.id)},zn=(e,t)=>{const r=e.indexOf(t);return!t||r===-1||r+1===e.length?e[0]:e[r+1]},zl=(e,t)=>e==null&&t!=null?-1:t==null&&e!=null?1:e==null&&t==null?0:null,Of=new Intl.Collator,Ri=(e,t)=>{const r=zl(e,t);return r!==null?r:typeof e=="string"?Of.compare(e.toString(),t.toString()):e-t},jl=(e,t)=>{const r=zl(e,t);return r!==null?r:Number(e)-Number(t)},Bl=(e,t)=>{const r=zl(e,t);return r!==null?r:e>t?1:ee.headerFiltering,Hi=pe(Ul,e=>e.editing),_i=pe(Ul,e=>e.menuOpen),Vi=(e,t)=>{const r={enabled:!t.disableVirtualization,enabledForColumns:!0};return m({},e,{virtualization:r})};function Ni(e,t){const r=n=>{e.current.setState(i=>m({},i,{virtualization:m({},i.virtualization,{enabled:n})}))};me(e,{unstable_setVirtualization:r,unstable_setColumnVirtualization:n=>{e.current.setState(i=>m({},i,{virtualization:m({},i.virtualization,{enabledForColumns:n})}))}},"public"),a.useEffect(()=>{r(!t.disableVirtualization)},[t.disableVirtualization])}const ql=e=>e.virtualization,Gi=pe(ql,e=>e.enabled),Wl=pe(ql,e=>e.enabledForColumns),Pf=e=>{const{classes:t}=e;return he({icon:["filterIcon"]},be,t)};function zi(e){var t,r;const{counter:o,field:l,onClick:n}=e,i=ce(),s=Y(),u=m({},e,{classes:s.classes}),d=Pf(u),c=K(i,At),p=Ie(),f=Ie(),b=a.useCallback(P=>{P.preventDefault(),P.stopPropagation();const{open:w,openedPanelValue:C}=At(i.current.state);w&&C===st.filters?i.current.hideFilterPanel():i.current.showFilterPanel(void 0,f,p),n&&n(i.current.getColumnHeaderParams(l),P)},[i,l,n,f,p]);if(!o)return null;const g=c.open&&c.labelId===p,h=x.jsx(s.slots.baseIconButton,m({id:p,onClick:b,color:"default","aria-label":i.current.getLocaleText("columnHeaderFiltersLabel"),size:"small",tabIndex:-1,"aria-haspopup":"menu","aria-expanded":g,"aria-controls":g?f:void 0},(t=s.slotProps)==null?void 0:t.baseIconButton,{children:x.jsx(s.slots.columnFilteredIcon,{className:d.icon,fontSize:"small"})}));return x.jsx(s.slots.baseTooltip,m({title:i.current.getLocaleText("columnHeaderFiltersTooltipActive")(o),enterDelay:1e3},(r=s.slotProps)==null?void 0:r.baseTooltip,{children:x.jsxs(bi,{children:[o>1&&x.jsx(ml,{badgeContent:o,color:"default",children:h}),o===1&&h]})}))}const xf=["field","id","value","formattedValue","row","rowNode","colDef","isEditable","cellMode","hasFocus","tabIndex","api"],vf=e=>{const{classes:t}=e;return he({root:["checkboxInput"]},be,t)},ji=a.forwardRef(function(t,r){var o;const{field:l,id:n,value:i,rowNode:s,hasFocus:u,tabIndex:d}=t,c=J(t,xf),p=ce(),f=Y(),b={classes:f.classes},g=vf(b),h=a.useRef(null),P=a.useRef(null),w=xt(h,r),C=p.current.getCellElement(n,l),E=L=>{const I={value:L.target.checked,id:n};p.current.publishEvent("rowSelectionCheckboxChange",I,L)};a.useLayoutEffect(()=>{d===0&&C&&(C.tabIndex=-1)},[C,d]),a.useEffect(()=>{if(u){var L;const I=(L=h.current)==null?void 0:L.querySelector("input");I==null||I.focus({preventScroll:!0})}else P.current&&P.current.stop({})},[u]);const T=a.useCallback(L=>{ai(L.key)&&L.stopPropagation()},[]);if(s.type==="footer"||s.type==="pinnedRow")return null;const _=p.current.isRowSelectable(n),F=p.current.getLocaleText(i?"checkboxSelectionUnselectRow":"checkboxSelectionSelectRow");return x.jsx(f.slots.baseCheckbox,m({ref:w,tabIndex:d,checked:i,onChange:E,className:g.root,inputProps:{"aria-label":F},onKeyDown:T,disabled:!_,touchRippleRef:P},(o=f.slotProps)==null?void 0:o.baseCheckbox,c))}),Bi=ji,Ff=["field","colDef"],yf=e=>{const{classes:t}=e;return he({root:["checkboxInput"]},be,t)},Ui=a.forwardRef(function(t,r){var o;const l=J(t,Ff),[,n]=a.useState(!1),i=ce(),s=Y(),u={classes:s.classes},d=yf(u),c=K(i,Ll),p=K(i,rt),f=K(i,ar),b=K(i,Gl),g=a.useMemo(()=>typeof s.isRowSelectable!="function"?p:p.filter(I=>i.current.getRow(I)?s.isRowSelectable(i.current.getRowParams(I)):!1),[i,s.isRowSelectable,p]),h=a.useMemo(()=>(!s.pagination||!s.checkboxSelectionVisibleOnly?f:b).reduce((H,$)=>(H[$]=!0,H),{}),[s.pagination,s.checkboxSelectionVisibleOnly,b,f]),P=a.useMemo(()=>g.filter(I=>h[I]).length,[g,h]),w=P>0&&P0,E=I=>{const H={value:I.target.checked};i.current.publishEvent("headerSelectionCheckboxChange",H)},T=c!==null&&c.field===t.field?0:-1;a.useLayoutEffect(()=>{const I=i.current.getColumnHeaderElement(t.field);T===0&&I&&(I.tabIndex=-1)},[T,i,t.field]);const _=a.useCallback(I=>{I.key===" "&&i.current.publishEvent("headerSelectionCheckboxChange",{value:!C})},[i,C]),F=a.useCallback(()=>{n(I=>!I)},[]);a.useEffect(()=>i.current.subscribeEvent("rowSelectionChange",F),[i,F]);const L=i.current.getLocaleText(C?"checkboxSelectionUnselectAllRows":"checkboxSelectionSelectAllRows");return x.jsx(s.slots.baseCheckbox,m({ref:r,indeterminate:w,checked:C,onChange:E,className:d.root,inputProps:{"aria-label":L},tabIndex:T,onKeyDown:_},(o=s.slotProps)==null?void 0:o.baseCheckbox,l))}),Qo=Me(x.jsx("path",{d:"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z"}),"ArrowUpward"),Zo=Me(x.jsx("path",{d:"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z"}),"ArrowDownward"),Jo=Me(x.jsx("path",{d:"M8.59 16.59 13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z"}),"KeyboardArrowRight"),Yo=Me(x.jsx("path",{d:"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"}),"ExpandMore"),qi=Me(x.jsx("path",{d:"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"}),"FilterList"),Xo=Me(x.jsx("path",{d:"M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39c.51-.66.04-1.61-.79-1.61H5.04c-.83 0-1.3.95-.79 1.61z"}),"FilterAlt"),Wi=Me(x.jsx("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"}),"Search"),If=Me(x.jsx("path",{d:"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"}),"Menu"),Mf=Me(x.jsx("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"}),"CheckCircle"),Ki=Me(x.jsx("path",{d:"M6 5H3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm14 0h-3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm-7 0h-3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1z"}),"ColumnIcon"),Qi=Me(x.jsx("path",{d:"M11 19V5h2v14z"}),"Separator"),Zi=Me(x.jsx("path",{d:"M4 15h16v-2H4v2zm0 4h16v-2H4v2zm0-8h16V9H4v2zm0-6v2h16V5H4z"}),"ViewHeadline"),Ji=Me(x.jsx("path",{d:"M21,8H3V4h18V8z M21,10H3v4h18V10z M21,16H3v4h18V16z"}),"TableRows"),Yi=Me(x.jsx("path",{d:"M4 18h17v-6H4v6zM4 5v6h17V5H4z"}),"ViewStream"),Xi=Me(x.jsx("path",{d:"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"}),"TripleDotsVertical"),lo=Me(x.jsx("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close"),el=Me(x.jsx("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"}),"Add"),es=Me(x.jsx("path",{d:"M19 13H5v-2h14v2z"}),"Remove"),ts=Me(x.jsx("path",{d:"M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z"}),"Load"),tl=Me(x.jsx("path",{d:"M11 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm-2-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"}),"Drag"),rs=Me(x.jsx("path",{d:"M19 12v7H5v-7H3v7c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-7h-2zm-6 .67l2.59-2.58L17 11.5l-5 5-5-5 1.41-1.41L11 12.67V3h2z"}),"SaveAlt"),os=Me(x.jsx("path",{d:"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"}),"Check"),ls=Me(x.jsx("path",{d:"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"}),"MoreVert"),ns=Me(x.jsx("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78l3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"}),"VisibilityOff"),as=Me(x.jsx("g",{children:x.jsx("path",{d:"M14.67,5v14H9.33V5H14.67z M15.67,19H21V5h-5.33V19z M8.33,19V5H3v14H8.33z"})}),"ViewColumn"),is=Me(x.jsx("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Clear"),kf=Me(x.jsx("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"}),"Delete"),ss=Me(x.jsx("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zm2.46-7.12l1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12zM15.5 4l-1-1h-5l-1 1H5v2h14V4z"}),"Delete"),Ef=["hideMenu","colDef","id","labelledby","className","children","open"],Lf=De(ho)(()=>({minWidth:248})),us=a.forwardRef(function(t,r){const{hideMenu:o,id:l,labelledby:n,className:i,children:s,open:u}=t,d=J(t,Ef),c=a.useCallback(p=>{Io(p.key)&&p.preventDefault(),Hl(p.key)&&o(p)},[o]);return x.jsx(Lf,m({id:l,ref:r,className:xe(V.menuList,i),"aria-labelledby":n,onKeyDown:c,autoFocus:u},d,{children:s}))}),Tf=["displayOrder"],Df=e=>{const t=_t(),{defaultSlots:r,defaultSlotProps:o,slots:l={},slotProps:n={},hideMenu:i,colDef:s,addDividers:u=!0}=e,d=a.useMemo(()=>m({},r,l),[r,l]),c=a.useMemo(()=>{if(!n||Object.keys(n).length===0)return o;const b=m({},n);return Object.entries(o).forEach(([g,h])=>{b[g]=m({},h,n[g]||{})}),b},[o,n]),p=t.current.unstable_applyPipeProcessors("columnMenu",[],e.colDef),f=a.useMemo(()=>{const b=Object.keys(r);return Object.keys(l).filter(g=>!b.includes(g))},[l,r]);return a.useMemo(()=>{const h=Array.from(new Set([...p,...f])).filter(P=>d[P]!=null).sort((P,w)=>{const C=c[P],E=c[w],T=Number.isFinite(C==null?void 0:C.displayOrder)?C.displayOrder:100,_=Number.isFinite(E==null?void 0:E.displayOrder)?E.displayOrder:100;return T-_});return h.reduce((P,w,C)=>{let E={colDef:s,onClick:i};const T=c[w];if(T){const _=J(T,Tf);E=m({},E,_)}return u&&C!==h.length-1?[...P,[d[w],E],[Nu,{}]]:[...P,[d[w],E]]},[])},[u,s,p,i,d,c,f])};function cs(e){const{colDef:t,onClick:r}=e,o=ce(),l=Y(),s=He(o).filter(d=>d.disableColumnMenu!==!0).length===1,u=a.useCallback(d=>{s||(o.current.setColumnVisibility(t.field,!1),r(d))},[o,t.field,r,s]);return l.disableColumnSelector||t.hideable===!1?null:x.jsxs(dt,{onClick:u,disabled:s,children:[x.jsx(Dt,{children:x.jsx(l.slots.columnMenuHideIcon,{fontSize:"small"})}),x.jsx(nr,{children:o.current.getLocaleText("columnMenuHideColumn")})]})}function ds(e){const{onClick:t}=e,r=ce(),o=Y(),l=a.useCallback(n=>{t(n),r.current.showPreferences(st.columns)},[r,t]);return o.disableColumnSelector?null:x.jsxs(dt,{onClick:l,children:[x.jsx(Dt,{children:x.jsx(o.slots.columnMenuManageColumnsIcon,{fontSize:"small"})}),x.jsx(nr,{children:r.current.getLocaleText("columnMenuManageColumns")})]})}function ps(e){return x.jsxs(a.Fragment,{children:[x.jsx(cs,m({},e)),x.jsx(ds,m({},e))]})}function fs(e){const{colDef:t,onClick:r}=e,o=ce(),l=Y(),n=a.useCallback(i=>{r(i),o.current.showFilterPanel(t.field)},[o,t.field,r]);return l.disableColumnFilter||!t.filterable?null:x.jsxs(dt,{onClick:n,children:[x.jsx(Dt,{children:x.jsx(l.slots.columnMenuFilterIcon,{fontSize:"small"})}),x.jsx(nr,{children:o.current.getLocaleText("columnMenuFilter")})]})}function gs(e){var t;const{colDef:r,onClick:o}=e,l=ce(),n=K(l,tt),i=Y(),s=a.useMemo(()=>{if(!r)return null;const p=n.find(f=>f.field===r.field);return p==null?void 0:p.sort},[r,n]),u=(t=r.sortingOrder)!=null?t:i.sortingOrder,d=a.useCallback(p=>{o(p);const f=p.currentTarget.getAttribute("data-value")||null;l.current.sortColumn(r,f===s?null:f)},[l,r,o,s]);if(!r||!r.sortable||!u.some(p=>!!p))return null;const c=p=>{const f=l.current.getLocaleText(p);return typeof f=="function"?f(r):f};return x.jsxs(a.Fragment,{children:[u.includes("asc")&&s!=="asc"?x.jsxs(dt,{onClick:d,"data-value":"asc",children:[x.jsx(Dt,{children:x.jsx(i.slots.columnMenuSortAscendingIcon,{fontSize:"small"})}),x.jsx(nr,{children:c("columnMenuSortAsc")})]}):null,u.includes("desc")&&s!=="desc"?x.jsxs(dt,{onClick:d,"data-value":"desc",children:[x.jsx(Dt,{children:x.jsx(i.slots.columnMenuSortDescendingIcon,{fontSize:"small"})}),x.jsx(nr,{children:c("columnMenuSortDesc")})]}):null,u.includes(null)&&s!=null?x.jsxs(dt,{onClick:d,children:[x.jsx(Dt,{}),x.jsx(nr,{children:l.current.getLocaleText("columnMenuUnsort")})]}):null]})}const $f=["defaultSlots","defaultSlotProps","slots","slotProps"],ms={columnMenuSortItem:gs,columnMenuFilterItem:fs,columnMenuColumnsItem:ps},bs={columnMenuSortItem:{displayOrder:10},columnMenuFilterItem:{displayOrder:20},columnMenuColumnsItem:{displayOrder:30}},hs=a.forwardRef(function(t,r){const{defaultSlots:o,defaultSlotProps:l,slots:n,slotProps:i}=t,s=J(t,$f),u=Df(m({},s,{defaultSlots:o,defaultSlotProps:l,slots:n,slotProps:i}));return x.jsx(us,m({ref:r},s,{children:u.map(([d,c],p)=>x.jsx(d,m({},c),p))}))}),Cs=a.forwardRef(function(t,r){return x.jsx(hs,m({},t,{ref:r,defaultSlots:ms,defaultSlotProps:bs}))}),Af=["className"],Rf=e=>{const{classes:t}=e;return he({root:["panelContent"]},be,t)},Hf=_e("div",{name:"MuiDataGrid",slot:"PanelContent",overridesResolver:(e,t)=>t.panelContent})({display:"flex",flexDirection:"column",overflow:"auto",flex:"1 1",maxHeight:400});function Kl(e){const{className:t}=e,r=J(e,Af),o=Y(),l=Rf(o);return x.jsx(Hf,m({className:xe(t,l.root),ownerState:o},r))}const _f=["className"],Vf=e=>{const{classes:t}=e;return he({root:["panelFooter"]},be,t)},Nf=_e("div",{name:"MuiDataGrid",slot:"PanelFooter",overridesResolver:(e,t)=>t.panelFooter})(({theme:e})=>({padding:e.spacing(.5),display:"flex",justifyContent:"space-between"}));function Ql(e){const{className:t}=e,r=J(e,_f),o=Y(),l=Vf(o);return x.jsx(Nf,m({className:xe(t,l.root),ownerState:o},r))}const Gf=["className"],zf=e=>{const{classes:t}=e;return he({root:["panelHeader"]},be,t)},jf=_e("div",{name:"MuiDataGrid",slot:"PanelHeader",overridesResolver:(e,t)=>t.panelHeader})(({theme:e})=>({padding:e.spacing(1)}));function ws(e){const{className:t}=e,r=J(e,Gf),o=Y(),l=zf(o);return x.jsx(jf,m({className:xe(t,l.root),ownerState:o},r))}const Bf=["className","slotProps"],Uf=e=>{const{classes:t}=e;return he({root:["panelWrapper"]},be,t)},qf=De("div",{name:"MuiDataGrid",slot:"PanelWrapper",overridesResolver:(e,t)=>t.panelWrapper})({display:"flex",flexDirection:"column",flex:1,"&:focus":{outline:0}}),Wf=()=>!0,Zl=a.forwardRef(function(t,r){const{className:o,slotProps:l={}}=t,n=J(t,Bf),i=Y(),s=Uf(i);return x.jsx(Gu,m({open:!0,disableEnforceFocus:!0,isEnabled:Wf},l.TrapFocus,{children:x.jsx(qf,m({ref:r,tabIndex:-1,className:xe(o,s.root),ownerState:i},n))}))}),Ss=!1,Kf=["sort","searchPredicate","autoFocusSearchField","disableHideAllButton","disableShowAllButton","getTogglableColumns"],Qf=e=>{const{classes:t}=e;return he({root:["columnsPanel"],columnsPanelRow:["columnsPanelRow"]},be,t)},Zf=De("div",{name:"MuiDataGrid",slot:"ColumnsPanel",overridesResolver:(e,t)=>t.columnsPanel})({padding:"8px 0px 8px 8px"}),Jf=De("div",{name:"MuiDataGrid",slot:"ColumnsPanelRow",overridesResolver:(e,t)=>t.columnsPanelRow})(({theme:e})=>({display:"flex",justifyContent:"space-between",padding:"1px 8px 1px 7px",[`& .${zu.root}`]:{marginRight:e.spacing(.5)}})),Yf=De(ba)({justifyContent:"flex-end"}),jn=new Intl.Collator,Xf=(e,t)=>(e.headerName||e.field).toLowerCase().indexOf(t)>-1;function Os(e){var t,r,o;const l=ce(),n=a.useRef(null),i=K(l,ft),s=K(l,at),u=Y(),[d,c]=a.useState(""),p=Qf(u),{sort:f,searchPredicate:b=Xf,autoFocusSearchField:g=!0,disableHideAllButton:h=!1,disableShowAllButton:P=!1,getTogglableColumns:w}=e,C=J(e,Kf),E=a.useMemo(()=>{switch(f){case"asc":return[...i].sort((v,R)=>jn.compare(v.headerName||v.field,R.headerName||R.field));case"desc":return[...i].sort((v,R)=>-jn.compare(v.headerName||v.field,R.headerName||R.field));default:return i}},[i,f]),T=v=>{const{name:R}=v.target;l.current.setColumnVisibility(R,s[R]===!1)},_=a.useCallback(v=>{const R=at(l),y=m({},R),S=w?w(i):null;return i.forEach(O=>{O.hideable&&(S==null||S.includes(O.field))&&(v?delete y[O.field]:y[O.field]=!1)}),l.current.setColumnVisibilityModel(y)},[l,i,w]),F=a.useCallback(v=>{c(v.target.value)},[]),L=a.useMemo(()=>{const v=w?w(E):null,R=v?E.filter(({field:y})=>v.includes(y)):E;return d?R.filter(y=>b(y,d.toLowerCase())):R},[E,d,b,w]),I=a.useRef(null);a.useEffect(()=>{g?n.current.focus():I.current&&typeof I.current.focus=="function"&&I.current.focus()},[g]);let H=!1;const $=v=>H===!1&&v.hideable!==!1?(H=!0,!0):!1;return x.jsxs(Zl,m({},C,{children:[x.jsx(ws,{children:x.jsx(u.slots.baseTextField,m({label:l.current.getLocaleText("columnsPanelTextFieldLabel"),placeholder:l.current.getLocaleText("columnsPanelTextFieldPlaceholder"),inputRef:n,value:d,onChange:F,variant:"standard",fullWidth:!0},(t=u.slotProps)==null?void 0:t.baseTextField))}),x.jsx(Kl,{children:x.jsx(Zf,{className:p.root,ownerState:u,children:L.map(v=>{var R;return x.jsxs(Jf,{className:p.columnsPanelRow,ownerState:u,children:[x.jsx(ju,{control:x.jsx(u.slots.baseSwitch,m({disabled:v.hideable===!1,checked:s[v.field]!==!1,onClick:T,name:v.field,size:"small",inputRef:$(v)?I:void 0},(R=u.slotProps)==null?void 0:R.baseSwitch)),label:v.headerName||v.field}),!u.disableColumnReorder&&Ss&&x.jsx(Yf,{draggable:!0,"aria-label":l.current.getLocaleText("columnsPanelDragIconLabel"),title:l.current.getLocaleText("columnsPanelDragIconLabel"),size:"small",disabled:!0,children:x.jsx(u.slots.columnReorderIcon,{})})]},v.field)})})}),P&&h?null:x.jsxs(Ql,{children:[h?x.jsx("span",{}):x.jsx(u.slots.baseButton,m({onClick:()=>_(!1)},(r=u.slotProps)==null?void 0:r.baseButton,{disabled:h,children:l.current.getLocaleText("columnsPanelHideAllButton")})),P?null:x.jsx(u.slots.baseButton,m({onClick:()=>_(!0)},(o=u.slotProps)==null?void 0:o.baseButton,{disabled:P,children:l.current.getLocaleText("columnsPanelShowAllButton")}))]})]}))}const eg=["children","className","classes"],Ps=pa("MuiDataGrid",["panel","paper"]),tg=De(gl,{name:"MuiDataGrid",slot:"Panel",overridesResolver:(e,t)=>t.panel})(({theme:e})=>({zIndex:e.zIndex.modal})),rg=De(ma,{name:"MuiDataGrid",slot:"Paper",overridesResolver:(e,t)=>t.paper})(({theme:e})=>({backgroundColor:(e.vars||e).palette.background.paper,minWidth:300,maxHeight:450,display:"flex"})),xs=a.forwardRef((e,t)=>{const{children:r,className:o}=e,l=J(e,eg),n=ce(),i=Y(),s=Ps,[u,d]=a.useState(!1),c=a.useCallback(()=>{n.current.hidePreferences()},[n]),p=a.useCallback(h=>{co(h.key)&&n.current.hidePreferences()},[n]),f=a.useMemo(()=>[{name:"flip",enabled:!1},{name:"isPlaced",enabled:!0,phase:"main",fn:()=>{d(!0)},effect:()=>()=>{d(!1)}}],[]),[b,g]=a.useState(null);return a.useEffect(()=>{var h;const P=(h=n.current.rootElementRef)==null||(h=h.current)==null?void 0:h.querySelector(`.${V.columnHeaders}`);P&&g(P)},[n]),b?x.jsx(tg,m({ref:t,placement:"bottom-start",className:xe(o,s.panel),ownerState:i,anchorEl:b,modifiers:f},l,{children:x.jsx(ga,{mouseEvent:"onMouseUp",onClickAway:c,children:x.jsx(rg,{className:s.paper,ownerState:i,elevation:8,onKeyDown:p,children:u&&r})})})):null}),vs=a.forwardRef(function(t,r){var o,l,n;const i=ce(),s=K(i,ft),u=Y(),d=K(i,At),c=i.current.unstable_applyPipeProcessors("preferencePanel",null,(o=d.openedPanelValue)!=null?o:st.filters);return x.jsx(u.slots.panel,m({ref:r,as:u.slots.basePopper,open:s.length>0&&d.open,id:d.panelId,"aria-labelledby":d.labelId},(l=u.slotProps)==null?void 0:l.panel,t,(n=u.slotProps)==null?void 0:n.basePopper,{children:c}))}),og=["item","hasMultipleFilters","deleteFilter","applyFilterChanges","multiFilterOperator","showMultiFilterOperators","disableMultiFilterOperator","applyMultiFilterOperatorChanges","focusElementRef","logicOperators","columnsSort","filterColumns","deleteIconProps","logicOperatorInputProps","operatorInputProps","columnInputProps","valueInputProps","children"],lg=["InputComponentProps"],ng=e=>{const{classes:t}=e;return he({root:["filterForm"],deleteIcon:["filterFormDeleteIcon"],logicOperatorInput:["filterFormLogicOperatorInput"],columnInput:["filterFormColumnInput"],operatorInput:["filterFormOperatorInput"],valueInput:["filterFormValueInput"]},be,t)},ag=De("div",{name:"MuiDataGrid",slot:"FilterForm",overridesResolver:(e,t)=>t.filterForm})(({theme:e})=>({display:"flex",padding:e.spacing(1)})),ig=De("div",{name:"MuiDataGrid",slot:"FilterFormDeleteIcon",overridesResolver:(e,t)=>t.filterFormDeleteIcon})(({theme:e})=>({flexShrink:0,justifyContent:"flex-end",marginRight:e.spacing(.5),marginBottom:e.spacing(.2)})),sg=De("div",{name:"MuiDataGrid",slot:"FilterFormLogicOperatorInput",overridesResolver:(e,t)=>t.filterFormLogicOperatorInput})({minWidth:55,marginRight:5,justifyContent:"end"}),ug=De("div",{name:"MuiDataGrid",slot:"FilterFormColumnInput",overridesResolver:(e,t)=>t.filterFormColumnInput})({width:150}),cg=De("div",{name:"MuiDataGrid",slot:"FilterFormOperatorInput",overridesResolver:(e,t)=>t.filterFormOperatorInput})({width:120}),dg=De("div",{name:"MuiDataGrid",slot:"FilterFormValueInput",overridesResolver:(e,t)=>t.filterFormValueInput})({width:190}),pg=e=>{switch(e){case Ke.And:return"filterPanelOperatorAnd";case Ke.Or:return"filterPanelOperatorOr";default:throw new Error("MUI: Invalid `logicOperator` property in the `GridFilterPanel`.")}},Cr=e=>e.headerName||e.field,Bn=new Intl.Collator,Fs=a.forwardRef(function(t,r){var o,l,n,i,s,u,d,c,p,f;const{item:b,hasMultipleFilters:g,deleteFilter:h,applyFilterChanges:P,multiFilterOperator:w,showMultiFilterOperators:C,disableMultiFilterOperator:E,applyMultiFilterOperatorChanges:T,focusElementRef:_,logicOperators:F=[Ke.And,Ke.Or],columnsSort:L,filterColumns:I,deleteIconProps:H={},logicOperatorInputProps:$={},operatorInputProps:v={},columnInputProps:R={},valueInputProps:y={}}=t,S=J(t,og),O=ce(),M=K(O,vl),A=K(O,Re),k=Ie(),D=Ie(),N=Ie(),j=Ie(),z=Y(),B=ng(z),Z=a.useRef(null),Q=a.useRef(null),ee=g&&F.length>0,oe=((o=z.slotProps)==null?void 0:o.baseFormControl)||{},ve=(n=(((l=z.slotProps)==null?void 0:l.baseSelect)||{}).native)!=null?n:!0,se=((i=z.slotProps)==null?void 0:i.baseInputLabel)||{},ie=((s=z.slotProps)==null?void 0:s.baseSelectOption)||{},{InputComponentProps:ue}=y,we=J(y,lg),Fe=a.useMemo(()=>{if(I===void 0||typeof I!="function")return M;const ne=I({field:b.field,columns:M,currentFilters:(A==null?void 0:A.items)||[]});return M.filter(W=>ne.includes(W.field))},[I,A==null?void 0:A.items,M,b.field]),de=a.useMemo(()=>{switch(L){case"asc":return Fe.sort((ne,W)=>Bn.compare(Cr(ne),Cr(W)));case"desc":return Fe.sort((ne,W)=>-Bn.compare(Cr(ne),Cr(W)));default:return Fe}},[Fe,L]),U=b.field?O.current.getColumn(b.field):null,q=a.useMemo(()=>{var ne;return!b.operator||!U?null:(ne=U.filterOperators)==null?void 0:ne.find(W=>W.value===b.operator)},[b,U]),ae=a.useCallback(ne=>{const W=ne.target.value,te=O.current.getColumn(W);if(te.field===U.field)return;const le=te.filterOperators.find(Le=>Le.value===b.operator)||te.filterOperators[0],Oe=!le.InputComponent||le.InputComponent!==(q==null?void 0:q.InputComponent)||te.type!==U.type;P(m({},b,{field:W,operator:le.value,value:Oe?void 0:b.value}))},[O,P,b,U,q]),fe=a.useCallback(ne=>{const W=ne.target.value,te=U==null?void 0:U.filterOperators.find(Oe=>Oe.value===W),le=!(te!=null&&te.InputComponent)||(te==null?void 0:te.InputComponent)!==(q==null?void 0:q.InputComponent);P(m({},b,{operator:W,value:le?void 0:b.value}))},[P,b,U,q]),ge=a.useCallback(ne=>{const W=ne.target.value===Ke.And.toString()?Ke.And:Ke.Or;T(W)},[T]),Se=()=>{z.disableMultipleColumnsFiltering?b.value===void 0?h(b):P(m({},b,{value:void 0})):h(b)};return a.useImperativeHandle(_,()=>({focus:()=>{if(q!=null&&q.InputComponent){var ne;Z==null||(ne=Z.current)==null||ne.focus()}else Q.current.focus()}}),[q]),x.jsxs(ag,m({ref:r,className:B.root,"data-id":b.id,ownerState:z},S,{children:[x.jsx(ig,m({variant:"standard",as:z.slots.baseFormControl},oe,H,{className:xe(B.deleteIcon,oe.className,H.className),ownerState:z,children:x.jsx(z.slots.baseIconButton,m({"aria-label":O.current.getLocaleText("filterPanelDeleteIconLabel"),title:O.current.getLocaleText("filterPanelDeleteIconLabel"),onClick:Se,size:"small"},(u=z.slotProps)==null?void 0:u.baseIconButton,{children:x.jsx(z.slots.filterPanelDeleteIcon,{fontSize:"small"})}))})),x.jsx(sg,m({variant:"standard",as:z.slots.baseFormControl},oe,$,{sx:m({display:ee?"flex":"none",visibility:C?"visible":"hidden"},oe.sx||{},$.sx||{}),className:xe(B.logicOperatorInput,oe.className,$.className),ownerState:z,children:x.jsx(z.slots.baseSelect,m({inputProps:{"aria-label":O.current.getLocaleText("filterPanelLogicOperator")},value:w,onChange:ge,disabled:!!E||F.length===1,native:ve},(d=z.slotProps)==null?void 0:d.baseSelect,{children:F.map(ne=>a.createElement(z.slots.baseSelectOption,m({},ie,{native:ve,key:ne.toString(),value:ne.toString()}),O.current.getLocaleText(pg(ne))))}))})),x.jsxs(ug,m({variant:"standard",as:z.slots.baseFormControl},oe,R,{className:xe(B.columnInput,oe.className,R.className),ownerState:z,children:[x.jsx(z.slots.baseInputLabel,m({},se,{htmlFor:k,id:D,children:O.current.getLocaleText("filterPanelColumns")})),x.jsx(z.slots.baseSelect,m({labelId:D,id:k,label:O.current.getLocaleText("filterPanelColumns"),value:b.field||"",onChange:ae,native:ve},(c=z.slotProps)==null?void 0:c.baseSelect,{children:de.map(ne=>a.createElement(z.slots.baseSelectOption,m({},ie,{native:ve,key:ne.field,value:ne.field}),Cr(ne)))}))]})),x.jsxs(cg,m({variant:"standard",as:z.slots.baseFormControl},oe,v,{className:xe(B.operatorInput,oe.className,v.className),ownerState:z,children:[x.jsx(z.slots.baseInputLabel,m({},se,{htmlFor:N,id:j,children:O.current.getLocaleText("filterPanelOperator")})),x.jsx(z.slots.baseSelect,m({labelId:j,label:O.current.getLocaleText("filterPanelOperator"),id:N,value:b.operator,onChange:fe,native:ve,inputRef:Q},(p=z.slotProps)==null?void 0:p.baseSelect,{children:U==null||(f=U.filterOperators)==null?void 0:f.map(ne=>a.createElement(z.slots.baseSelectOption,m({},ie,{native:ve,key:ne.value,value:ne.value}),ne.label||O.current.getLocaleText(`filterOperator${$t(ne.value)}`)))}))]})),x.jsx(dg,m({variant:"standard",as:z.slots.baseFormControl},oe,we,{className:xe(B.valueInput,oe.className,we.className),ownerState:z,children:q!=null&&q.InputComponent?x.jsx(q.InputComponent,m({apiRef:O,item:b,applyValue:P,focusElementRef:Z},q.InputComponentProps,ue)):null}))]}))});class Jl{constructor(){this.currentId=0,this.clear=()=>{this.currentId!==0&&(clearTimeout(this.currentId),this.currentId=0)},this.disposeEffect=()=>this.clear}static create(){return new Jl}start(t,r){this.clear(),this.currentId=setTimeout(r,t)}}function Yl(){const e=Pl(Jl.create).current;return va(e.disposeEffect),e}const fg=["item","applyValue","type","apiRef","focusElementRef","tabIndex","disabled","isFilterActive","clearButton","InputProps","variant"];function ut(e){var t,r;const{item:o,applyValue:l,type:n,apiRef:i,focusElementRef:s,tabIndex:u,disabled:d,clearButton:c,InputProps:p,variant:f="standard"}=e,b=J(e,fg),g=Yl(),[h,P]=a.useState((t=o.value)!=null?t:""),[w,C]=a.useState(!1),E=Ie(),T=Y(),_=a.useCallback(F=>{const{value:L}=F.target;P(String(L)),C(!0),g.start(T.filterDebounceMs,()=>{const I=m({},o,{value:L,fromInput:E});l(I),C(!1)})},[E,l,o,T.filterDebounceMs,g]);return a.useEffect(()=>{if(o.fromInput!==E||o.value===void 0){var L;P(String((L=o.value)!=null?L:""))}},[E,o]),x.jsx(T.slots.baseTextField,m({id:E,label:i.current.getLocaleText("filterPanelInputLabel"),placeholder:i.current.getLocaleText("filterPanelInputPlaceholder"),value:h,onChange:_,variant:f,type:n||"text",InputProps:m({},w||c?{endAdornment:w?x.jsx(T.slots.loadIcon,{fontSize:"small",color:"action"}):c}:{},{disabled:d},p,{inputProps:m({tabIndex:u},p==null?void 0:p.inputProps)}),InputLabelProps:{shrink:!0},inputRef:s},b,(r=T.slotProps)==null?void 0:r.baseTextField))}const gg=["item","applyValue","type","apiRef","focusElementRef","InputProps","isFilterActive","clearButton","tabIndex","disabled"];function jt(e){var t,r;const{item:o,applyValue:l,type:n,apiRef:i,focusElementRef:s,InputProps:u,clearButton:d,tabIndex:c,disabled:p}=e,f=J(e,gg),b=Yl(),[g,h]=a.useState((t=o.value)!=null?t:""),[P,w]=a.useState(!1),C=Ie(),E=Y(),T=a.useCallback(_=>{const F=_.target.value;h(String(F)),w(!0),b.start(E.filterDebounceMs,()=>{l(m({},o,{value:F})),w(!1)})},[l,o,E.filterDebounceMs,b]);return a.useEffect(()=>{var _;const F=(_=o.value)!=null?_:"";h(String(F))},[o.value]),x.jsx(E.slots.baseTextField,m({fullWidth:!0,id:C,label:i.current.getLocaleText("filterPanelInputLabel"),placeholder:i.current.getLocaleText("filterPanelInputPlaceholder"),value:g,onChange:T,variant:"standard",type:n||"text",InputLabelProps:{shrink:!0},inputRef:s,InputProps:m({},P||d?{endAdornment:P?x.jsx(E.slots.loadIcon,{fontSize:"small",color:"action"}):d}:{},{disabled:p},u,{inputProps:m({max:n==="datetime-local"?"9999-12-31T23:59":"9999-12-31",tabIndex:c},u==null?void 0:u.inputProps)})},f,(r=E.slotProps)==null?void 0:r.baseTextField))}const mg=["item","applyValue","type","apiRef","focusElementRef","getOptionLabel","getOptionValue","placeholder","tabIndex","label","variant","isFilterActive","clearButton","InputLabelProps"],bg=({column:{valueOptions:e,field:t},OptionComponent:r,getOptionLabel:o,getOptionValue:l,isSelectNative:n,baseSelectOptionProps:i})=>(typeof e=="function"?["",...e({field:t})]:["",...e||[]]).map(u=>{const d=l(u),c=o(u);return a.createElement(r,m({},i,{native:n,key:d,value:d}),c)}),hg=De("div")({display:"flex",alignItems:"flex-end",width:"100%","& button":{margin:"auto 0px 5px 5px"}});function rl(e){var t,r,o,l,n,i,s,u;const{item:d,applyValue:c,type:p,apiRef:f,focusElementRef:b,getOptionLabel:g,getOptionValue:h,placeholder:P,tabIndex:w,label:C,variant:E="standard",clearButton:T}=e,_=J(e,mg),[F,L]=a.useState((t=d.value)!=null?t:""),I=Ie(),H=Ie(),$=Y(),v=(r=(o=$.slotProps)==null||(o=o.baseSelect)==null?void 0:o.native)!=null?r:!0;let R=null;if(d.field){const k=f.current.getColumn(d.field);Ut(k)&&(R=k)}const y=h||((l=R)==null?void 0:l.getOptionValue),S=g||((n=R)==null?void 0:n.getOptionLabel),O=a.useMemo(()=>{if(R)return typeof R.valueOptions=="function"?R.valueOptions({field:R.field}):R.valueOptions},[R]),M=a.useCallback(k=>{let D=k.target.value;D=Wo(D,O,y),L(String(D)),c(m({},d,{value:D}))},[O,y,c,d]);if(a.useEffect(()=>{var k;let D;if(O!==void 0){if(D=Wo(d.value,O,y),D!==d.value){c(m({},d,{value:D}));return}}else D=d.value;D=(k=D)!=null?k:"",L(String(D))},[d,O,c,y]),!Ut(R)||!Ut(R))return null;const A=C??f.current.getLocaleText("filterPanelInputLabel");return x.jsxs(hg,{children:[x.jsxs($.slots.baseFormControl,{children:[x.jsx($.slots.baseInputLabel,m({},(i=$.slotProps)==null?void 0:i.baseInputLabel,{id:H,htmlFor:I,shrink:!0,variant:E,children:A})),x.jsx($.slots.baseSelect,m({id:I,label:A,labelId:H,value:F,onChange:M,variant:E,type:p||"text",inputProps:{tabIndex:w,ref:b,placeholder:P??f.current.getLocaleText("filterPanelInputPlaceholder")},native:v,notched:E==="outlined"?!0:void 0},_,(s=$.slotProps)==null?void 0:s.baseSelect,{children:bg({column:R,OptionComponent:$.slots.baseSelectOption,getOptionLabel:S,getOptionValue:y,isSelectNative:v,baseSelectOptionProps:(u=$.slotProps)==null?void 0:u.baseSelectOption})}))]}),T]})}const Cg=["item","applyValue","apiRef","focusElementRef","isFilterActive","clearButton","tabIndex","label","variant","InputLabelProps"],wg=De("div")({display:"flex",alignItems:"center",width:"100%","& button":{margin:"auto 0px 5px 5px"}});function ys(e){var t,r,o,l;const{item:n,applyValue:i,apiRef:s,focusElementRef:u,clearButton:d,tabIndex:c,label:p,variant:f="standard"}=e,b=J(e,Cg),[g,h]=a.useState(n.value||""),P=Y(),w=Ie(),C=Ie(),E=((t=P.slotProps)==null?void 0:t.baseSelect)||{},T=(r=E.native)!=null?r:!0,_=((o=P.slotProps)==null?void 0:o.baseSelectOption)||{},F=a.useCallback(I=>{const H=I.target.value;h(H),i(m({},n,{value:H}))},[i,n]);a.useEffect(()=>{h(n.value||"")},[n.value]);const L=p??s.current.getLocaleText("filterPanelInputLabel");return x.jsxs(wg,{children:[x.jsxs(P.slots.baseFormControl,{fullWidth:!0,children:[x.jsx(P.slots.baseInputLabel,m({},(l=P.slotProps)==null?void 0:l.baseInputLabel,{id:w,shrink:!0,variant:f,children:L})),x.jsxs(P.slots.baseSelect,m({labelId:w,id:C,label:L,value:g,onChange:F,variant:f,notched:f==="outlined"?!0:void 0,native:T,displayEmpty:!0,inputProps:{ref:u,tabIndex:c}},b,E,{children:[x.jsx(P.slots.baseSelectOption,m({},_,{native:T,value:"",children:s.current.getLocaleText("filterValueAny")})),x.jsx(P.slots.baseSelectOption,m({},_,{native:T,value:"true",children:s.current.getLocaleText("filterValueTrue")})),x.jsx(P.slots.baseSelectOption,m({},_,{native:T,value:"false",children:s.current.getLocaleText("filterValueFalse")}))]}))]}),d]})}const Sg=["logicOperators","columnsSort","filterFormProps","getColumnForNewFilter","children","disableAddFilterButton","disableRemoveAllButton"],Un=e=>({field:e.field,operator:e.filterOperators[0].value,id:Math.round(Math.random()*1e5)}),Is=a.forwardRef(function(t,r){var o,l;const n=ce(),i=Y(),s=K(n,Re),u=K(n,vl),d=a.useRef(null),c=a.useRef(null),{logicOperators:p=[Ke.And,Ke.Or],columnsSort:f,filterFormProps:b,getColumnForNewFilter:g,disableAddFilterButton:h=!1,disableRemoveAllButton:P=!1}=t,w=J(t,Sg),C=n.current.upsertFilterItem,E=a.useCallback(v=>{n.current.setFilterLogicOperator(v)},[n]),T=a.useCallback(()=>{let v;if(g&&typeof g=="function"){const R=g({currentFilters:(s==null?void 0:s.items)||[],columns:u});if(R===null)return null;v=u.find(({field:y})=>y===R)}else v=u.find(R=>{var y;return(y=R.filterOperators)==null?void 0:y.length});return v?Un(v):null},[s==null?void 0:s.items,u,g]),_=a.useCallback(()=>{if(g===void 0||typeof g!="function")return T();const v=s.items.length?s.items:[T()].filter(Boolean),R=g({currentFilters:v,columns:u});if(R===null)return null;const y=u.find(({field:S})=>S===R);return y?Un(y):null},[s.items,u,g,T]),F=a.useMemo(()=>s.items.length?s.items:(c.current||(c.current=T()),c.current?[c.current]:[]),[s.items,T]),L=F.length>1,I=()=>{const v=_();v&&n.current.upsertFilterItems([...F,v])},H=a.useCallback(v=>{const R=F.length===1;n.current.deleteFilterItem(v),R&&n.current.hideFilterPanel()},[n,F.length]),$=()=>{F.length===1&&F[0].value===void 0&&(n.current.deleteFilterItem(F[0]),n.current.hideFilterPanel()),n.current.setFilterModel(m({},s,{items:[]}))};return a.useEffect(()=>{p.length>0&&s.logicOperator&&!p.includes(s.logicOperator)&&E(p[0])},[p,E,s.logicOperator]),a.useEffect(()=>{F.length>0&&d.current.focus()},[F.length]),x.jsxs(Zl,m({ref:r},w,{children:[x.jsx(Kl,{children:F.map((v,R)=>x.jsx(Fs,m({item:v,applyFilterChanges:C,deleteFilter:H,hasMultipleFilters:L,showMultiFilterOperators:R>0,multiFilterOperator:s.logicOperator,disableMultiFilterOperator:R!==1,applyMultiFilterOperatorChanges:E,focusElementRef:R===F.length-1?d:null,logicOperators:p,columnsSort:f},b),v.id==null?R:v.id))}),!i.disableMultipleColumnsFiltering&&!(h&&P)?x.jsxs(Ql,{children:[h?x.jsx("span",{}):x.jsx(i.slots.baseButton,m({onClick:I,startIcon:x.jsx(i.slots.filterPanelAddIcon,{})},(o=i.slotProps)==null?void 0:o.baseButton,{children:n.current.getLocaleText("filterPanelAddFilter")})),P?null:x.jsx(i.slots.baseButton,m({onClick:$,startIcon:x.jsx(i.slots.filterPanelRemoveAllIcon,{})},(l=i.slotProps)==null?void 0:l.baseButton,{children:n.current.getLocaleText("filterPanelRemoveAll")}))]}):null]}))}),Og=["item","applyValue","type","apiRef","focusElementRef","color","error","helperText","size","variant"];function Xl(e){const{item:t,applyValue:r,type:o,apiRef:l,focusElementRef:n,color:i,error:s,helperText:u,size:d,variant:c}=e,p=J(e,Og),f={color:i,error:s,helperText:u,size:d,variant:c},[b,g]=a.useState(t.value||[]),h=Ie(),P=Y();a.useEffect(()=>{var C;const E=(C=t.value)!=null?C:[];g(E.map(String))},[t.value]);const w=a.useCallback((C,E)=>{g(E.map(String)),r(m({},t,{value:[...E]}))},[r,t]);return x.jsx(ha,m({multiple:!0,freeSolo:!0,options:[],filterOptions:(C,E)=>{const{inputValue:T}=E;return T==null||T===""?[]:[T]},id:h,value:b,onChange:w,renderTags:(C,E)=>C.map((T,_)=>x.jsx(P.slots.baseChip,m({variant:"outlined",size:"small",label:T},E({index:_})))),renderInput:C=>{var E;return x.jsx(P.slots.baseTextField,m({},C,{label:l.current.getLocaleText("filterPanelInputLabel"),placeholder:l.current.getLocaleText("filterPanelInputPlaceholder"),InputLabelProps:m({},C.InputLabelProps,{shrink:!0}),inputRef:n,type:o||"text"},f,(E=P.slotProps)==null?void 0:E.baseTextField))}},p))}const Pg=["item","applyValue","type","apiRef","focusElementRef","color","error","helperText","size","variant","getOptionLabel","getOptionValue"],xg=Bu();function Ms(e){var t,r;const{item:o,applyValue:l,apiRef:n,focusElementRef:i,color:s,error:u,helperText:d,size:c,variant:p="standard",getOptionLabel:f,getOptionValue:b}=e,g=J(e,Pg),h={color:s,error:u,helperText:d,size:c,variant:p},P=Ie(),w=Y();let C=null;if(o.field){const $=n.current.getColumn(o.field);Ut($)&&(C=$)}const E=b||((t=C)==null?void 0:t.getOptionValue),T=f||((r=C)==null?void 0:r.getOptionLabel),_=a.useCallback(($,v)=>E($)===E(v),[E]),F=a.useMemo(()=>{var $;return($=C)!=null&&$.valueOptions?typeof C.valueOptions=="function"?C.valueOptions({field:C.field}):C.valueOptions:[]},[C]),L=a.useMemo(()=>F==null?void 0:F.map(E),[F,E]),I=a.useMemo(()=>Array.isArray(o.value)?F!==void 0?o.value.map(v=>L==null?void 0:L.findIndex(R=>R===v)).filter(v=>v>=0).map(v=>F[v]):o.value:[],[o.value,F,L]);a.useEffect(()=>{(!Array.isArray(o.value)||I.length!==o.value.length)&&l(m({},o,{value:I.map(E)}))},[o,I,l,E]);const H=a.useCallback(($,v)=>{l(m({},o,{value:v.map(E)}))},[l,o,E]);return x.jsx(ha,m({multiple:!0,options:F,isOptionEqualToValue:_,filterOptions:xg,id:P,value:I,onChange:H,getOptionLabel:T,renderTags:($,v)=>$.map((R,y)=>x.jsx(w.slots.baseChip,m({variant:"outlined",size:"small",label:T(R)},v({index:y})))),renderInput:$=>{var v;return x.jsx(w.slots.baseTextField,m({},$,{label:n.current.getLocaleText("filterPanelInputLabel"),placeholder:n.current.getLocaleText("filterPanelInputPlaceholder"),InputLabelProps:m({},$.InputLabelProps,{shrink:!0}),inputRef:i,type:"singleSelect"},h,(v=w.slotProps)==null?void 0:v.baseTextField))}},g))}const vg=["onClick"],ks=a.forwardRef(function(t,r){var o;const{onClick:l}=t,n=J(t,vg),i=Ie(),s=Ie(),u=ce(),d=Y(),c=K(u,At),p=b=>{c.open&&c.openedPanelValue===st.columns?u.current.hidePreferences():u.current.showPreferences(st.columns,s,i),l==null||l(b)};if(d.disableColumnSelector)return null;const f=c.open&&c.panelId===s;return x.jsx(d.slots.baseButton,m({ref:r,id:i,size:"small","aria-label":u.current.getLocaleText("toolbarColumnsLabel"),"aria-haspopup":"menu","aria-expanded":f,"aria-controls":f?s:void 0,startIcon:x.jsx(d.slots.columnSelectorIcon,{})},n,{onClick:p},(o=d.slotProps)==null?void 0:o.baseButton,{children:u.current.getLocaleText("toolbarColumns")}))}),Fg=["onClick"],Es=a.forwardRef(function(t,r){var o;const{onClick:l}=t,n=J(t,Fg),i=ce(),s=Y(),u=K(i,Tl),d=Ie(),c=Ie(),[p,f]=a.useState(!1),b=a.useRef(null),g=xt(r,b),h=[{icon:x.jsx(s.slots.densityCompactIcon,{}),label:i.current.getLocaleText("toolbarDensityCompact"),value:"compact"},{icon:x.jsx(s.slots.densityStandardIcon,{}),label:i.current.getLocaleText("toolbarDensityStandard"),value:"standard"},{icon:x.jsx(s.slots.densityComfortableIcon,{}),label:i.current.getLocaleText("toolbarDensityComfortable"),value:"comfortable"}],P=a.useMemo(()=>{switch(u){case"compact":return x.jsx(s.slots.densityCompactIcon,{});case"comfortable":return x.jsx(s.slots.densityComfortableIcon,{});default:return x.jsx(s.slots.densityStandardIcon,{})}},[u,s]),w=F=>{f(L=>!L),l==null||l(F)},C=()=>{f(!1)},E=F=>{i.current.setDensity(F),f(!1)},T=F=>{Io(F.key)&&F.preventDefault(),Hl(F.key)&&f(!1)};if(s.disableDensitySelector)return null;const _=h.map((F,L)=>x.jsxs(dt,{onClick:()=>E(F.value),selected:F.value===u,children:[x.jsx(Dt,{children:F.icon}),F.label]},L));return x.jsxs(a.Fragment,{children:[x.jsx(s.slots.baseButton,m({ref:g,size:"small",startIcon:P,"aria-label":i.current.getLocaleText("toolbarDensityLabel"),"aria-haspopup":"menu","aria-expanded":p,"aria-controls":p?c:void 0,id:d},n,{onClick:w},(o=s.slotProps)==null?void 0:o.baseButton,{children:i.current.getLocaleText("toolbarDensity")})),x.jsx(_r,{open:p,target:b.current,onClose:C,position:"bottom-start",children:x.jsx(ho,{id:c,className:V.menuList,"aria-labelledby":d,onKeyDown:T,autoFocusItem:p,children:_})})]})}),yg=["componentsProps"],Ig=e=>{const{classes:t}=e;return he({root:["toolbarFilterList"]},be,t)},Mg=De("ul",{name:"MuiDataGrid",slot:"ToolbarFilterList",overridesResolver:(e,t)=>t.toolbarFilterList})(({theme:e})=>({margin:e.spacing(1,1,.5),padding:e.spacing(0,1)})),Ls=a.forwardRef(function(t,r){var o,l;const{componentsProps:n={}}=t,i=J(t,yg),s=n.button||{},u=ce(),d=Y(),c=K(u,El),p=K(u,Vt),f=K(u,At),b=Ig(d),g=Ie(),h=Ie(),P=a.useMemo(()=>{if(f.open)return u.current.getLocaleText("toolbarFiltersTooltipHide");if(c.length===0)return u.current.getLocaleText("toolbarFiltersTooltipShow");const E=_=>p[_.field].filterOperators.find(F=>F.value===_.operator).label||u.current.getLocaleText(`filterOperator${$t(_.operator)}`).toString(),T=_=>{const{getValueAsString:F}=p[_.field].filterOperators.find(L=>L.value===_.operator);return F?F(_.value):_.value};return x.jsxs("div",{children:[u.current.getLocaleText("toolbarFiltersTooltipActive")(c.length),x.jsx(Mg,{className:b.root,ownerState:d,children:c.map((_,F)=>m({},p[_.field]&&x.jsx("li",{children:`${p[_.field].headerName||_.field} ${E(_)} - ${_.value!=null?T(_):""}`},F)))})]})},[u,d,f.open,c,p,b]),S=E=>{var T;const{open:_,openedPanelValue:F}=f;_&&F===st.filters?u.current.hidePreferences():u.current.showPreferences(st.filters,h,g),(T=s.onClick)==null||T.call(s,E)};if(d.disableColumnFilter)return null;const C=f.open&&f.panelId===h;return v.jsx(d.slots.baseTooltip,m({title:x,enterDelay:1e3},i,(o=d.slotProps)==null?void 0:o.baseTooltip,{children:v.jsx(d.slots.baseButton,m({ref:r,id:g,size:"small","aria-label":u.current.getLocaleText("toolbarFiltersLabel"),"aria-controls":C?h:void 0,"aria-expanded":C,"aria-haspopup":!0,startIcon:v.jsx(bl,{badgeContent:c.length,color:"primary",children:v.jsx(d.slots.openFilterButtonIcon,{})})},s,{onClick:S},(l=d.slotProps)==null?void 0:l.baseButton,{children:u.current.getLocaleText("toolbarFilters")}))}))}),Eg=["children","onClick"],Ds=a.forwardRef(function(t,r){var o;const{children:l,onClick:n}=t,i=Z(t,Eg),s=ce(),u=Y(),d=Ie(),c=Ie(),[p,f]=a.useState(!1),b=a.useRef(null),g=xt(r,b),h=C=>{f(E=>!E),n==null||n(C)},x=()=>f(!1),S=C=>{Mo(C.key)&&C.preventDefault(),_l(C.key)&&x()};return l==null?null:v.jsxs(a.Fragment,{children:[v.jsx(u.slots.baseButton,m({ref:g,size:"small",startIcon:v.jsx(u.slots.exportIcon,{}),"aria-expanded":p,"aria-label":s.current.getLocaleText("toolbarExportLabel"),"aria-haspopup":"menu","aria-controls":p?c:void 0,id:d},i,{onClick:h},(o=u.slotProps)==null?void 0:o.baseButton,{children:s.current.getLocaleText("toolbarExport")})),v.jsx(Vr,{open:p,target:b.current,onClose:x,position:"bottom-start",children:v.jsx(Co,{id:c,className:V.menuList,"aria-labelledby":d,onKeyDown:S,autoFocusItem:p,children:a.Children.map(l,C=>a.isValidElement(C)?a.cloneElement(C,{hideMenu:x}):C)})})]})}),Lg=["hideMenu","options"],Tg=["hideMenu","options"],Dg=["csvOptions","printOptions","excelOptions"];function $s(e){const t=ce(),{hideMenu:r,options:o}=e,l=Z(e,Lg);return v.jsx(dt,m({onClick:()=>{t.current.exportDataAsCsv(o),r==null||r()}},l,{children:t.current.getLocaleText("toolbarExportCSV")}))}function As(e){const t=ce(),{hideMenu:r,options:o}=e,l=Z(e,Tg);return v.jsx(dt,m({onClick:()=>{t.current.exportDataAsPrint(o),r==null||r()}},l,{children:t.current.getLocaleText("toolbarExportPrint")}))}const Rs=a.forwardRef(function(t,r){const{csvOptions:o={},printOptions:l={},excelOptions:n}=t,i=Z(t,Dg),u=ce().current.unstable_applyPipeProcessors("exportMenu",[],{excelOptions:n,csvOptions:o,printOptions:l}).sort((d,c)=>d.componentName>c.componentName?1:-1);return u.length===0?null:v.jsx(Ds,m({},i,{ref:r,children:u.map((d,c)=>a.cloneElement(d.component,{key:c}))}))}),$g=["quickFilterParser","quickFilterFormatter","debounceMs"],Ag=De(wa,{name:"MuiDataGrid",slot:"ToolbarQuickFilter",overridesResolver:(e,t)=>t.toolbarQuickFilter})(({theme:e})=>({width:"auto",paddingBottom:e.spacing(.5),"& input":{marginLeft:e.spacing(.5)},"& .MuiInput-underline:before":{borderBottom:`1px solid ${(e.vars||e).palette.divider}`},"& input[type=search]::-ms-clear,\n& input[type=search]::-ms-reveal":{display:"none",width:0,height:0},'& input[type="search"]::-webkit-search-decoration,\n & input[type="search"]::-webkit-search-cancel-button,\n & input[type="search"]::-webkit-search-results-button,\n & input[type="search"]::-webkit-search-results-decoration':{display:"none"}})),Rg=e=>e.split(" ").filter(t=>t!==""),Hg=e=>e.join(" ");function Hs(e){var t,r;const o=ce(),l=Y(),n=Q(o,Ra),{quickFilterParser:i=Rg,quickFilterFormatter:s=Hg,debounceMs:u=l.filterDebounceMs}=e,d=Z(e,$g),[c,p]=a.useState(()=>s(n??[])),f=a.useRef(n);a.useEffect(()=>{It(f.current,n)||(f.current=n,p(S=>It(i(S),n)?S:s(n??[])))},[n,s,i]);const b=a.useCallback(S=>{const C=i(S);f.current=C,o.current.setQuickFilterValues(C)},[o,i]),g=a.useMemo(()=>hl(b,u),[b,u]),h=a.useCallback(S=>{const C=S.target.value;p(C),g(C)},[g]),x=a.useCallback(()=>{p(""),b("")},[b]);return v.jsx(Ag,m({as:l.slots.baseTextField,ownerState:l,variant:"standard",value:c,onChange:h,placeholder:o.current.getLocaleText("toolbarQuickFilterPlaceholder"),"aria-label":o.current.getLocaleText("toolbarQuickFilterLabel"),type:"search"},d,{InputProps:m({startAdornment:v.jsx(l.slots.quickFilterIcon,{fontSize:"small"}),endAdornment:v.jsx(l.slots.baseIconButton,m({"aria-label":o.current.getLocaleText("toolbarQuickFilterDeleteIconLabel"),size:"small",sx:{visibility:c?"visible":"hidden"},onClick:x},(t=l.slotProps)==null?void 0:t.baseIconButton,{children:v.jsx(l.slots.quickFilterClearIcon,{fontSize:"small"})}))},d.InputProps)},(r=l.slotProps)==null?void 0:r.baseTextField))}const _g=["className","csvOptions","printOptions","excelOptions","showQuickFilter","quickFilterProps"],Vg=a.forwardRef(function(t,r){const{csvOptions:o,printOptions:l,excelOptions:n,showQuickFilter:i=!1,quickFilterProps:s={}}=t,u=Z(t,_g),d=Y();return d.disableColumnFilter&&d.disableColumnSelector&&d.disableDensitySelector&&!i?null:v.jsxs(bi,m({ref:r},u,{children:[v.jsx(Es,{}),v.jsx(Ts,{}),v.jsx(Ls,{}),v.jsx(Rs,{csvOptions:o,printOptions:l,excelOptions:n}),v.jsx(qu,{sx:{flex:1}}),i&&v.jsx(Hs,m({},s))]}))}),Ng=["className","selectedRowCount"],Gg=e=>{const{classes:t}=e;return he({root:["selectedRowCount"]},be,t)},zg=_e("div",{name:"MuiDataGrid",slot:"SelectedRowCount",overridesResolver:(e,t)=>t.selectedRowCount})(({theme:e})=>({alignItems:"center",display:"flex",margin:e.spacing(0,2),visibility:"hidden",width:0,height:0,[e.breakpoints.up("sm")]:{visibility:"visible",width:"auto",height:"auto"}})),_s=a.forwardRef(function(t,r){const{className:o,selectedRowCount:l}=t,n=Z(t,Ng),i=ce(),s=Y(),u=Gg(s),d=i.current.getLocaleText("footerRowSelected")(l);return v.jsx(zg,m({ref:r,className:xe(u.root,o),ownerState:s},n,{children:d}))}),Vs=a.forwardRef(function(t,r){var o,l;const n=ce(),i=Y(),s=Q(n,La),u=Q(n,$i),d=Q(n,Ar),c=!i.hideFooterSelectedRowCount&&u>0?v.jsx(_s,{selectedRowCount:u}):v.jsx("div",{}),p=!i.hideFooterRowCount&&!i.pagination?v.jsx(i.slots.footerRowCount,m({},(o=i.slotProps)==null?void 0:o.footerRowCount,{rowCount:s,visibleRowCount:d})):null,f=i.pagination&&!i.hideFooterPagination&&i.slots.pagination&&v.jsx(i.slots.pagination,m({},(l=i.slotProps)==null?void 0:l.pagination));return v.jsxs(mi,m({ref:r},t,{children:[c,p,f]}))});function Ns(){var e,t;const r=Y();return v.jsxs(a.Fragment,{children:[v.jsx(r.slots.preferencesPanel,m({},(e=r.slotProps)==null?void 0:e.preferencesPanel)),r.slots.toolbar&&v.jsx(r.slots.toolbar,m({},(t=r.slotProps)==null?void 0:t.toolbar))]})}const Gs=a.forwardRef(function(t,r){return v.jsx(ko,m({ref:r},t,{children:v.jsx(Wu,{})}))}),zs=a.forwardRef(function(t,r){const l=ce().current.getLocaleText("noRowsLabel");return v.jsx(ko,m({ref:r},t,{children:l}))}),jg=De(Ku)(({theme:e})=>({[`& .${xn.selectLabel}`]:{display:"none",[e.breakpoints.up("sm")]:{display:"block"}},[`& .${xn.input}`]:{display:"none",[e.breakpoints.up("sm")]:{display:"inline-flex"}}})),js=a.forwardRef(function(t,r){const o=ce(),l=Y(),n=Q(o,ot),i=Q(o,Ar),s=a.useMemo(()=>{var b,g;return(b=(g=l.rowCount)!=null?g:i)!=null?b:0},[l.rowCount,i]),u=a.useMemo(()=>Math.floor(s/(n.pageSize||1)),[s,n.pageSize]),d=a.useCallback(b=>{const g=Number(b.target.value);o.current.setPageSize(g)},[o]),c=a.useCallback((b,g)=>{o.current.setPage(g)},[o]),f=(b=>{for(let g=0;g{const{classes:t}=e;return he({root:["rowCount"]},be,t)},qg=_e("div",{name:"MuiDataGrid",slot:"RowCount",overridesResolver:(e,t)=>t.rowCount})(({theme:e})=>({alignItems:"center",display:"flex",margin:e.spacing(0,2)})),Bs=a.forwardRef(function(t,r){const{className:o,rowCount:l,visibleRowCount:n}=t,i=Z(t,Bg),s=ce(),u=Y(),d=Ug(u);if(l===0)return null;const c=n{let r,o;return t.pagination&&t.paginationMode==="client"?(o=Eo(e),r=Di(e)):(r=Mt(e),r.length===0?o=null:o={firstRowIndex:0,lastRowIndex:r.length-1}),{rows:r,range:o}},Zt=(e,t)=>{const r=go(e,t);return a.useMemo(()=>({rows:r.rows,range:r.range}),[r.rows,r.range])},ll={current:null};function Nr(e){return e.isInternal=!0,e}function mo(e){return e!==void 0&&e.isInternal===!0}function Wg(e){return Nr((t,r)=>{const o=e(t,r);return o&&(l=>o(l.value,l.row,r,ll.current))})}function Gr(e){return e.map(t=>m({},t,{getApplyFilterFn:Wg(t.getApplyFilterFnV7),getApplyFilterFnV7:Nr(t.getApplyFilterFnV7)}))}function Us(e){return Nr((t,r,o)=>{const l=e(t,r,o);return l&&(n=>l(n.value,n.row,r,o))})}function qs(e){return{current:e.current.getPublicApi()}}let wr;function Kg(){if(wr!==void 0)return wr;try{wr=new Function("return true")()}catch{wr=!1}return wr}const nl=(e,t)=>{const r=m({},e);if(r.id==null&&(r.id=Math.round(Math.random()*1e5)),r.operator==null){const o=Vt(t)[r.field];r.operator=o&&o.filterOperators[0].value}return r},Qg=vt(["MUI: The `filterModel` can only contain a single item when the `disableMultipleColumnsFiltering` prop is set to `true`.","If you are using the community version of the `DataGrid`, this prop is always `true`."],"error"),Zg=vt("MUI: The `id` field is required on `filterModel.items` when you use multiple filters.","error"),Jg=vt("MUI: The `operator` field is required on `filterModel.items`, one or more of your filtering item has no `operator` provided.","error"),Ws=(e,t,r)=>{const o=e.items.length>1;let l;o&&t?(Qg(),l=[e.items[0]]):l=e.items;const n=o&&l.some(s=>s.id==null),i=l.some(s=>s.operator==null);return n&&Zg(),i&&Jg(),i||n?m({},e,{items:l.map(s=>nl(s,r))}):e.items!==l?m({},e,{items:l}):e},Wn=(e,t,r)=>o=>m({},o,{filterModel:Ws(e,t,r)}),Tt=e=>typeof e=="string"?e.normalize("NFD").replace(/[\u0300-\u036f]/g,""):e,Ks=(e,t)=>{if(!e.field||!e.operator)return null;const r=t.current.getColumn(e.field);if(!r)return null;let o;if(r.valueParser){var l;const b=r.valueParser;o=Array.isArray(e.value)?(l=e.value)==null?void 0:l.map(g=>b(g)):b(e.value)}else o=e.value;const{ignoreDiacritics:n}=t.current.rootProps;n&&(o=Tt(o));const i=m({},e,{value:o}),s=r.filterOperators;if(!(s!=null&&s.length))throw new Error(`MUI: No filter operators found for column '${r.field}'.`);const u=s.find(b=>b.value===i.operator);if(!u)throw new Error(`MUI: No filter operator found for column '${r.field}' and operator value '${i.operator}'.`);const d=!mo(u.getApplyFilterFn),c=!mo(u.getApplyFilterFnV7),p=qs(t);if(u.getApplyFilterFnV7&&!(d&&!c)){const b=u.getApplyFilterFnV7(i,r);return typeof b!="function"?null:{v7:!0,item:i,fn:g=>{let h=t.current.getRowValue(g,r);return n&&(h=Tt(h)),b(h,g,r,p)}}}const f=u.getApplyFilterFn(i,r);return typeof f!="function"?null:{v7:!1,item:i,fn:b=>{const g=t.current.getCellParams(b,i.field);ll.current=p,n&&(g.value=Tt(g.value));const h=f(g);return ll.current=null,h}}};let Kn=1;const Yg=(e,t,r)=>{const{items:o}=e,l=o.map(s=>Ks(s,t)).filter(s=>!!s);if(l.length===0)return null;if(r||!Kg())return(s,u)=>{const d={};for(let c=0;c{var T;const{open:_,openedPanelValue:F}=f;_&&F===st.filters?u.current.hidePreferences():u.current.showPreferences(st.filters,h,g),(T=s.onClick)==null||T.call(s,E)};if(d.disableColumnFilter)return null;const C=f.open&&f.panelId===h;return x.jsx(d.slots.baseTooltip,m({title:P,enterDelay:1e3},i,(o=d.slotProps)==null?void 0:o.baseTooltip,{children:x.jsx(d.slots.baseButton,m({ref:r,id:g,size:"small","aria-label":u.current.getLocaleText("toolbarFiltersLabel"),"aria-controls":C?h:void 0,"aria-expanded":C,"aria-haspopup":!0,startIcon:x.jsx(ml,{badgeContent:c.length,color:"primary",children:x.jsx(d.slots.openFilterButtonIcon,{})})},s,{onClick:w},(l=d.slotProps)==null?void 0:l.baseButton,{children:u.current.getLocaleText("toolbarFilters")}))}))}),kg=["children","onClick"],Ts=a.forwardRef(function(t,r){var o;const{children:l,onClick:n}=t,i=J(t,kg),s=ce(),u=Y(),d=Ie(),c=Ie(),[p,f]=a.useState(!1),b=a.useRef(null),g=xt(r,b),h=C=>{f(E=>!E),n==null||n(C)},P=()=>f(!1),w=C=>{Io(C.key)&&C.preventDefault(),Hl(C.key)&&P()};return l==null?null:x.jsxs(a.Fragment,{children:[x.jsx(u.slots.baseButton,m({ref:g,size:"small",startIcon:x.jsx(u.slots.exportIcon,{}),"aria-expanded":p,"aria-label":s.current.getLocaleText("toolbarExportLabel"),"aria-haspopup":"menu","aria-controls":p?c:void 0,id:d},i,{onClick:h},(o=u.slotProps)==null?void 0:o.baseButton,{children:s.current.getLocaleText("toolbarExport")})),x.jsx(_r,{open:p,target:b.current,onClose:P,position:"bottom-start",children:x.jsx(ho,{id:c,className:V.menuList,"aria-labelledby":d,onKeyDown:w,autoFocusItem:p,children:a.Children.map(l,C=>a.isValidElement(C)?a.cloneElement(C,{hideMenu:P}):C)})})]})}),Eg=["hideMenu","options"],Lg=["hideMenu","options"],Tg=["csvOptions","printOptions","excelOptions"];function Ds(e){const t=ce(),{hideMenu:r,options:o}=e,l=J(e,Eg);return x.jsx(dt,m({onClick:()=>{t.current.exportDataAsCsv(o),r==null||r()}},l,{children:t.current.getLocaleText("toolbarExportCSV")}))}function $s(e){const t=ce(),{hideMenu:r,options:o}=e,l=J(e,Lg);return x.jsx(dt,m({onClick:()=>{t.current.exportDataAsPrint(o),r==null||r()}},l,{children:t.current.getLocaleText("toolbarExportPrint")}))}const As=a.forwardRef(function(t,r){const{csvOptions:o={},printOptions:l={},excelOptions:n}=t,i=J(t,Tg),u=ce().current.unstable_applyPipeProcessors("exportMenu",[],{excelOptions:n,csvOptions:o,printOptions:l}).sort((d,c)=>d.componentName>c.componentName?1:-1);return u.length===0?null:x.jsx(Ts,m({},i,{ref:r,children:u.map((d,c)=>a.cloneElement(d.component,{key:c}))}))}),Dg=["quickFilterParser","quickFilterFormatter","debounceMs"],$g=De(Ca,{name:"MuiDataGrid",slot:"ToolbarQuickFilter",overridesResolver:(e,t)=>t.toolbarQuickFilter})(({theme:e})=>({width:"auto",paddingBottom:e.spacing(.5),"& input":{marginLeft:e.spacing(.5)},"& .MuiInput-underline:before":{borderBottom:`1px solid ${(e.vars||e).palette.divider}`},"& input[type=search]::-ms-clear,\n& input[type=search]::-ms-reveal":{display:"none",width:0,height:0},'& input[type="search"]::-webkit-search-decoration,\n & input[type="search"]::-webkit-search-cancel-button,\n & input[type="search"]::-webkit-search-results-button,\n & input[type="search"]::-webkit-search-results-decoration':{display:"none"}})),Ag=e=>e.split(" ").filter(t=>t!==""),Rg=e=>e.join(" ");function Rs(e){var t,r;const o=ce(),l=Y(),n=K(o,Aa),{quickFilterParser:i=Ag,quickFilterFormatter:s=Rg,debounceMs:u=l.filterDebounceMs}=e,d=J(e,Dg),[c,p]=a.useState(()=>s(n??[])),f=a.useRef(n);a.useEffect(()=>{It(f.current,n)||(f.current=n,p(w=>It(i(w),n)?w:s(n??[])))},[n,s,i]);const b=a.useCallback(w=>{const C=i(w);f.current=C,o.current.setQuickFilterValues(C)},[o,i]),g=a.useMemo(()=>bl(b,u),[b,u]),h=a.useCallback(w=>{const C=w.target.value;p(C),g(C)},[g]),P=a.useCallback(()=>{p(""),b("")},[b]);return x.jsx($g,m({as:l.slots.baseTextField,ownerState:l,variant:"standard",value:c,onChange:h,placeholder:o.current.getLocaleText("toolbarQuickFilterPlaceholder"),"aria-label":o.current.getLocaleText("toolbarQuickFilterLabel"),type:"search"},d,{InputProps:m({startAdornment:x.jsx(l.slots.quickFilterIcon,{fontSize:"small"}),endAdornment:x.jsx(l.slots.baseIconButton,m({"aria-label":o.current.getLocaleText("toolbarQuickFilterDeleteIconLabel"),size:"small",sx:{visibility:c?"visible":"hidden"},onClick:P},(t=l.slotProps)==null?void 0:t.baseIconButton,{children:x.jsx(l.slots.quickFilterClearIcon,{fontSize:"small"})}))},d.InputProps)},(r=l.slotProps)==null?void 0:r.baseTextField))}const Hg=["className","csvOptions","printOptions","excelOptions","showQuickFilter","quickFilterProps"],_g=a.forwardRef(function(t,r){const{csvOptions:o,printOptions:l,excelOptions:n,showQuickFilter:i=!1,quickFilterProps:s={}}=t,u=J(t,Hg),d=Y();return d.disableColumnFilter&&d.disableColumnSelector&&d.disableDensitySelector&&!i?null:x.jsxs(mi,m({ref:r},u,{children:[x.jsx(ks,{}),x.jsx(Ls,{}),x.jsx(Es,{}),x.jsx(As,{csvOptions:o,printOptions:l,excelOptions:n}),x.jsx(Uu,{sx:{flex:1}}),i&&x.jsx(Rs,m({},s))]}))}),Vg=["className","selectedRowCount"],Ng=e=>{const{classes:t}=e;return he({root:["selectedRowCount"]},be,t)},Gg=_e("div",{name:"MuiDataGrid",slot:"SelectedRowCount",overridesResolver:(e,t)=>t.selectedRowCount})(({theme:e})=>({alignItems:"center",display:"flex",margin:e.spacing(0,2),visibility:"hidden",width:0,height:0,[e.breakpoints.up("sm")]:{visibility:"visible",width:"auto",height:"auto"}})),Hs=a.forwardRef(function(t,r){const{className:o,selectedRowCount:l}=t,n=J(t,Vg),i=ce(),s=Y(),u=Ng(s),d=i.current.getLocaleText("footerRowSelected")(l);return x.jsx(Gg,m({ref:r,className:xe(u.root,o),ownerState:s},n,{children:d}))}),_s=a.forwardRef(function(t,r){var o,l;const n=ce(),i=Y(),s=K(n,Ea),u=K(n,Di),d=K(n,$r),c=!i.hideFooterSelectedRowCount&&u>0?x.jsx(Hs,{selectedRowCount:u}):x.jsx("div",{}),p=!i.hideFooterRowCount&&!i.pagination?x.jsx(i.slots.footerRowCount,m({},(o=i.slotProps)==null?void 0:o.footerRowCount,{rowCount:s,visibleRowCount:d})):null,f=i.pagination&&!i.hideFooterPagination&&i.slots.pagination&&x.jsx(i.slots.pagination,m({},(l=i.slotProps)==null?void 0:l.pagination));return x.jsxs(gi,m({ref:r},t,{children:[c,p,f]}))});function Vs(){var e,t;const r=Y();return x.jsxs(a.Fragment,{children:[x.jsx(r.slots.preferencesPanel,m({},(e=r.slotProps)==null?void 0:e.preferencesPanel)),r.slots.toolbar&&x.jsx(r.slots.toolbar,m({},(t=r.slotProps)==null?void 0:t.toolbar))]})}const Ns=a.forwardRef(function(t,r){return x.jsx(Mo,m({ref:r},t,{children:x.jsx(qu,{})}))}),Gs=a.forwardRef(function(t,r){const l=ce().current.getLocaleText("noRowsLabel");return x.jsx(Mo,m({ref:r},t,{children:l}))}),zg=De(Wu)(({theme:e})=>({[`& .${Pn.selectLabel}`]:{display:"none",[e.breakpoints.up("sm")]:{display:"block"}},[`& .${Pn.input}`]:{display:"none",[e.breakpoints.up("sm")]:{display:"inline-flex"}}})),zs=a.forwardRef(function(t,r){const o=ce(),l=Y(),n=K(o,ot),i=K(o,$r),s=a.useMemo(()=>{var b,g;return(b=(g=l.rowCount)!=null?g:i)!=null?b:0},[l.rowCount,i]),u=a.useMemo(()=>Math.floor(s/(n.pageSize||1)),[s,n.pageSize]),d=a.useCallback(b=>{const g=Number(b.target.value);o.current.setPageSize(g)},[o]),c=a.useCallback((b,g)=>{o.current.setPage(g)},[o]),f=(b=>{for(let g=0;g{const{classes:t}=e;return he({root:["rowCount"]},be,t)},Ug=_e("div",{name:"MuiDataGrid",slot:"RowCount",overridesResolver:(e,t)=>t.rowCount})(({theme:e})=>({alignItems:"center",display:"flex",margin:e.spacing(0,2)})),js=a.forwardRef(function(t,r){const{className:o,rowCount:l,visibleRowCount:n}=t,i=J(t,jg),s=ce(),u=Y(),d=Bg(u);if(l===0)return null;const c=n{let r,o;return t.pagination&&t.paginationMode==="client"?(o=ko(e),r=Ti(e)):(r=Mt(e),r.length===0?o=null:o={firstRowIndex:0,lastRowIndex:r.length-1}),{rows:r,range:o}},Zt=(e,t)=>{const r=fo(e,t);return a.useMemo(()=>({rows:r.rows,range:r.range}),[r.rows,r.range])},ol={current:null};function Vr(e){return e.isInternal=!0,e}function go(e){return e!==void 0&&e.isInternal===!0}function qg(e){return Vr((t,r)=>{const o=e(t,r);return o&&(l=>o(l.value,l.row,r,ol.current))})}function Nr(e){return e.map(t=>m({},t,{getApplyFilterFn:qg(t.getApplyFilterFnV7),getApplyFilterFnV7:Vr(t.getApplyFilterFnV7)}))}function Bs(e){return Vr((t,r,o)=>{const l=e(t,r,o);return l&&(n=>l(n.value,n.row,r,o))})}function Us(e){return{current:e.current.getPublicApi()}}let wr;function Wg(){if(wr!==void 0)return wr;try{wr=new Function("return true")()}catch{wr=!1}return wr}const ll=(e,t)=>{const r=m({},e);if(r.id==null&&(r.id=Math.round(Math.random()*1e5)),r.operator==null){const o=Vt(t)[r.field];r.operator=o&&o.filterOperators[0].value}return r},Kg=vt(["MUI: The `filterModel` can only contain a single item when the `disableMultipleColumnsFiltering` prop is set to `true`.","If you are using the community version of the `DataGrid`, this prop is always `true`."],"error"),Qg=vt("MUI: The `id` field is required on `filterModel.items` when you use multiple filters.","error"),Zg=vt("MUI: The `operator` field is required on `filterModel.items`, one or more of your filtering item has no `operator` provided.","error"),qs=(e,t,r)=>{const o=e.items.length>1;let l;o&&t?(Kg(),l=[e.items[0]]):l=e.items;const n=o&&l.some(s=>s.id==null),i=l.some(s=>s.operator==null);return n&&Qg(),i&&Zg(),i||n?m({},e,{items:l.map(s=>ll(s,r))}):e.items!==l?m({},e,{items:l}):e},qn=(e,t,r)=>o=>m({},o,{filterModel:qs(e,t,r)}),Tt=e=>typeof e=="string"?e.normalize("NFD").replace(/[\u0300-\u036f]/g,""):e,Ws=(e,t)=>{if(!e.field||!e.operator)return null;const r=t.current.getColumn(e.field);if(!r)return null;let o;if(r.valueParser){var l;const b=r.valueParser;o=Array.isArray(e.value)?(l=e.value)==null?void 0:l.map(g=>b(g)):b(e.value)}else o=e.value;const{ignoreDiacritics:n}=t.current.rootProps;n&&(o=Tt(o));const i=m({},e,{value:o}),s=r.filterOperators;if(!(s!=null&&s.length))throw new Error(`MUI: No filter operators found for column '${r.field}'.`);const u=s.find(b=>b.value===i.operator);if(!u)throw new Error(`MUI: No filter operator found for column '${r.field}' and operator value '${i.operator}'.`);const d=!go(u.getApplyFilterFn),c=!go(u.getApplyFilterFnV7),p=Us(t);if(u.getApplyFilterFnV7&&!(d&&!c)){const b=u.getApplyFilterFnV7(i,r);return typeof b!="function"?null:{v7:!0,item:i,fn:g=>{let h=t.current.getRowValue(g,r);return n&&(h=Tt(h)),b(h,g,r,p)}}}const f=u.getApplyFilterFn(i,r);return typeof f!="function"?null:{v7:!1,item:i,fn:b=>{const g=t.current.getCellParams(b,i.field);ol.current=p,n&&(g.value=Tt(g.value));const h=f(g);return ol.current=null,h}}};let Wn=1;const Jg=(e,t,r)=>{const{items:o}=e,l=o.map(s=>Ws(s,t)).filter(s=>!!s);if(l.length===0)return null;if(r||!Wg())return(s,u)=>{const d={};for(let c=0;c`const shouldApply${u} = !shouldApplyFilter || shouldApplyFilter(${JSON.stringify(s.item.field)});`).join(` `)} @@ -20,24 +20,24 @@ ${l.map((s,u)=>` ${JSON.stringify(String(s.item.id))}: !shouldApply${u} `)} }; -return result$$;`.replaceAll("$$",String(Kn)));return Kn+=1,(s,u)=>n(t.current.getRowId,l,s,u)},Xg=(e,t)=>{var r,o,l;const n=(r=(o=e.quickFilterValues)==null?void 0:o.filter(Boolean))!=null?r:[];if(n.length===0)return null;const s=((l=e.quickFilterExcludeHiddenColumns)!=null?l:!1)?Lr(t):Pt(t),u=[],{ignoreDiacritics:d}=t.current.rootProps,c=qs(t);return s.forEach(p=>{const f=t.current.getColumn(p),b=f==null?void 0:f.getApplyQuickFilterFn,g=f==null?void 0:f.getApplyQuickFilterFnV7,h=!mo(b),x=!mo(g);g&&!(h&&!x)?u.push({column:f,appliers:n.map(S=>{const C=d?Tt(S):S;return{v7:!0,fn:g(C,f,c)}})}):b&&u.push({column:f,appliers:n.map(S=>{const C=d?Tt(S):S;return{v7:!1,fn:b(C,f,c)}})})}),function(f,b){const g={},h={};e:for(let S=0;S{const o=Yg(e,t,r),l=Xg(e,t);return function(i,s,u){var d,c;u.passingFilterItems=(d=o==null?void 0:o(i,s))!=null?d:null,u.passingQuickFilterValues=(c=l==null?void 0:l(i,s))!=null?c:null}},Qn=e=>e!=null,tm=(e,t,r)=>(e.cleanedFilterItems||(e.cleanedFilterItems=r.filter(o=>Ks(o,t)!==null)),e.cleanedFilterItems),rm=(e,t,r,o,l)=>{const n=tm(l,o,r.items),i=e.filter(Qn),s=t.filter(Qn);if(i.length>0){var u;const c=f=>i.some(b=>b[f.id]);if(((u=r.logicOperator)!=null?u:ur().logicOperator)===Ke.And){if(!n.every(c))return!1}else if(!n.some(c))return!1}if(s.length>0&&r.quickFilterValues!=null){var d;const c=f=>s.some(b=>b[f]);if(((d=r.quickFilterLogicOperator)!=null?d:ur().quickFilterLogicOperator)===Ke.And){if(!r.quickFilterValues.every(c))return!1}else if(!r.quickFilterValues.some(c))return!1}return!0},al=Nr(e=>{if(!e)return null;const t=new RegExp(lo(e),"i");return(r,o,l,n)=>{let i=n.current.getRowFormattedValue(o,l);return n.current.ignoreDiacritics&&(i=Tt(i)),i!=null?t.test(i.toString()):!1}}),Qs=(e=!1)=>Gr([{value:"contains",getApplyFilterFnV7:t=>{if(!t.value)return null;const r=e?t.value:t.value.trim(),o=new RegExp(lo(r),"i");return l=>l!=null?o.test(String(l)):!1},InputComponent:ut},{value:"equals",getApplyFilterFnV7:t=>{if(!t.value)return null;const r=e?t.value:t.value.trim(),o=new Intl.Collator(void 0,{sensitivity:"base",usage:"search"});return l=>l!=null?o.compare(r,l.toString())===0:!1},InputComponent:ut},{value:"startsWith",getApplyFilterFnV7:t=>{if(!t.value)return null;const r=e?t.value:t.value.trim(),o=new RegExp(`^${lo(r)}.*$`,"i");return l=>l!=null?o.test(l.toString()):!1},InputComponent:ut},{value:"endsWith",getApplyFilterFnV7:t=>{if(!t.value)return null;const r=e?t.value:t.value.trim(),o=new RegExp(`.*${lo(r)}$`,"i");return l=>l!=null?o.test(l.toString()):!1},InputComponent:ut},{value:"isEmpty",getApplyFilterFnV7:()=>t=>t===""||t==null,requiresFilterValue:!1},{value:"isNotEmpty",getApplyFilterFnV7:()=>t=>t!==""&&t!=null,requiresFilterValue:!1},{value:"isAnyOf",getApplyFilterFnV7:t=>{if(!Array.isArray(t.value)||t.value.length===0)return null;const r=e?t.value:t.value.map(l=>l.trim()),o=new Intl.Collator(void 0,{sensitivity:"base",usage:"search"});return l=>l!=null?r.some(n=>o.compare(n,l.toString()||"")===0):!1},InputComponent:en}]),it={width:100,minWidth:50,maxWidth:1/0,hideable:!0,sortable:!0,resizable:!0,filterable:!0,groupable:!0,pinnable:!0,aggregable:!0,editable:!1,sortComparator:Hi,type:"string",align:"left",filterOperators:Qs(),renderEditCell:ai,getApplyQuickFilterFn:Us(al),getApplyQuickFilterFnV7:al},Zs=()=>Gr([{value:"is",getApplyFilterFnV7:e=>{if(!e.value)return null;const t=e.value==="true";return r=>!!r===t},InputComponent:Is}]);function om({value:e,api:t}){return e?t.getLocaleText("booleanCellTrueLabel"):t.getLocaleText("booleanCellFalseLabel")}const lm=e=>{switch(e.toLowerCase().trim()){case"true":case"yes":case"1":return!0;case"false":case"no":case"0":case"null":case"undefined":return!1;default:return}},tn=m({},it,{type:"boolean",align:"center",headerAlign:"center",renderCell:ti,renderEditCell:oi,sortComparator:Bl,valueFormatter:om,filterOperators:Zs(),getApplyQuickFilterFn:void 0,getApplyQuickFilterFnV7:void 0,aggregable:!1,pastedValueParser:e=>lm(e)}),yt="__check__",Jt=m({},tn,{field:yt,type:"checkboxSelection",width:50,resizable:!1,sortable:!1,filterable:!1,aggregable:!1,disableColumnMenu:!0,disableReorder:!0,disableExport:!0,getApplyQuickFilterFn:void 0,getApplyQuickFilterFnV7:void 0,valueGetter:e=>Fr(e.api.state,e.api.instanceId)[e.id]!==void 0,renderHeader:e=>v.jsx(qi,m({},e)),renderCell:e=>v.jsx(Ui,m({},e))}),zr="actions",Js=m({},it,{sortable:!1,filterable:!1,aggregable:!1,width:100,align:"center",headerAlign:"center",headerName:"",disableColumnMenu:!0,disableExport:!0,renderCell:pi,getApplyQuickFilterFn:void 0,getApplyQuickFilterFnV7:void 0}),rn="__detail_panel_toggle__",We=e=>e.editRows,nm=["selected","hovered","rowId","row","index","style","position","rowHeight","className","visibleColumns","renderedColumns","containerWidth","firstColumnToRender","lastColumnToRender","isLastVisible","focusedCellColumnIndexNotInRange","isNotVisible","focusedCell","tabbableCell","onClick","onDoubleClick","onMouseEnter","onMouseLeave","onMouseOut","onMouseOver"],am=e=>{const{editable:t,editing:r,selected:o,isLastVisible:l,rowHeight:n,classes:i}=e;return he({root:["row",o&&"selected",t&&"row--editable",r&&"row--editing",l&&"row--lastVisible",n==="auto"&&"row--dynamicHeight"]},be,i)};function im({width:e}){if(!e)return null;const t={width:e};return v.jsx("div",{className:`${V.cell} ${V.withBorderColor}`,style:t})}const sm=a.forwardRef(function(t,r){const{selected:o,hovered:l,rowId:n,row:i,index:s,style:u,position:d,rowHeight:c,className:p,visibleColumns:f,renderedColumns:b,containerWidth:g,firstColumnToRender:h,isLastVisible:x=!1,focusedCellColumnIndexNotInRange:S,isNotVisible:C,focusedCell:E,onClick:T,onDoubleClick:_,onMouseEnter:F,onMouseLeave:L,onMouseOut:k,onMouseOver:H}=t,A=Z(t,nm),P=ce(),R=a.useRef(null),y=Y(),w=Zt(P,y),O=Q(P,xo),M=Q(P,tt),D=Q(P,$r),I=Q(P,fr),$=Q(P,We),N=xt(R,r),j=s+I+2,G={selected:o,hovered:l,isLastVisible:x,classes:y.classes,editing:P.current.getRowMode(n)===ke.Edit,editable:y.editMode===mt.Row,rowHeight:c},U=am(G);a.useLayoutEffect(()=>{c==="auto"&&R.current&&typeof ResizeObserver>"u"&&P.current.unstable_storeRowHeightMeasurement(n,R.current.clientHeight,d)},[P,c,n,d]),a.useLayoutEffect(()=>{if(w.range){const Oe=P.current.getRowIndexRelativeToVisibleRows(n);Oe!=null&&P.current.unstable_setLastMeasuredRowIndex(Oe)}const W=R.current;if(!W||c!=="auto"||typeof ResizeObserver>"u")return;const oe=new ResizeObserver(Oe=>{const[Le]=Oe,Je=Le.borderBoxSize&&Le.borderBoxSize.length>0?Le.borderBoxSize[0].blockSize:Le.contentRect.height;P.current.unstable_storeRowHeightMeasurement(n,Je,d)});return oe.observe(W),()=>oe.disconnect()},[P,w.range,s,c,n,d]);const K=a.useCallback((W,te)=>oe=>{_r(oe)||P.current.getRow(n)&&(P.current.publishEvent(W,P.current.getRowParams(n),oe),te&&te(oe))},[P,n]),J=a.useCallback(W=>{const te=_d(W.target,V.cell),oe=te==null?void 0:te.getAttribute("data-field");if(oe){if(oe===Jt.field||oe===rn||oe==="__reorder__"||P.current.getCellMode(n,oe)===ye.Edit)return;const Oe=P.current.getColumn(oe);if((Oe==null?void 0:Oe.type)===zr)return}K("rowClick",T)(W)},[P,T,K,n]),{slots:ee,slotProps:le,disableColumnReorder:Ce}=y,ve=ee.cell===Wo?Wo:Qd,se=y.rowReordering,ie=(W,te)=>{var oe,Oe;const Le=Ce&&W.disableReorder||!se&&!!M.length&&D>1&&Object.keys($).length>0,Je=(oe=(Oe=$[n])==null?void 0:Oe[W.field])!=null?oe:null;let Ye=!1;return S!==void 0&&f[S].field===W.field&&(Ye=!0),v.jsx(ve,m({column:W,width:te.width,rowId:n,height:c,showRightBorder:te.showRightBorder,align:W.align||"left",colIndex:te.indexRelativeToAllColumns,colSpan:te.colSpan,disableDragEvents:Le,editCellState:Je,isNotVisible:Ye},le==null?void 0:le.cell),W.field)},ue=Q(P,()=>m({},P.current.unstable_getRowInternalSizes(n)),vl);let we=c;if(we==="auto"&&ue){let W=0;const te=Object.entries(ue).reduce((oe,[Oe,Le])=>/^base[A-Z]/.test(Oe)?(W+=1,Le>oe?Le:oe):oe,0);te>0&&W>1&&(we=te)}const Fe=a.useMemo(()=>{if(C)return{opacity:0,width:0,height:0};const W=m({},u,{maxHeight:c==="auto"?"none":c,minHeight:we});if(ue!=null&&ue.spacingTop){const te=y.rowSpacingType==="border"?"borderTopWidth":"marginTop";W[te]=ue.spacingTop}if(ue!=null&&ue.spacingBottom){const te=y.rowSpacingType==="border"?"borderBottomWidth":"marginBottom";let oe=W[te];typeof oe!="number"&&(oe=parseInt(oe||"0",10)),oe+=ue.spacingBottom,W[te]=oe}return W},[C,c,u,we,ue,y.rowSpacingType]),de=P.current.unstable_applyPipeProcessors("rowClassName",[],n);if(typeof y.getRowClassName=="function"){var B;const W=s-(((B=w.range)==null?void 0:B.firstRowIndex)||0),te=m({},P.current.getRowParams(n),{isFirstVisible:W===0,isLastVisible:W===w.rows.length-1,indexRelativeToCurrentPage:W});de.push(y.getRowClassName(te))}const q=pf(1e4,20,80),ae=P.current.getRowNode(n);if(!ae)return null;const fe=ae.type,ge=[];for(let W=0;W0&&v.jsx(im,{width:Se})]}))}),Ys=Io(sm);function Xs({privateApiRef:e,props:t,children:r}){const o=a.useRef(e.current.getPublicApi());return v.jsx(xa.Provider,{value:t,children:v.jsx(va.Provider,{value:e,children:v.jsx(Pl.Provider,{value:o,children:r})})})}const um=cf()&&window.localStorage.getItem("DEBUG")!=null,Sr=()=>{},cm={debug:Sr,info:Sr,warn:Sr,error:Sr},Zn=["debug","info","warn","error"];function Jn(e,t,r=console){const o=Zn.indexOf(t);if(o===-1)throw new Error(`MUI: Log level ${t} not recognized.`);return Zn.reduce((n,i,s)=>(s>=o?n[i]=(...u)=>{const[d,...c]=u;r[i](`MUI: ${e} - ${d}`,...c)}:n[i]=Sr,n),{})}const dm=(e,t)=>{const r=a.useCallback(o=>um?Jn(o,"debug",t.logger):t.logLevel?Jn(o,t.logLevel.toString(),t.logger):cm,[t.logLevel,t.logger]);me(e,{getLogger:r},"private")};class on{static create(t){return new on(t)}constructor(t){this.value=void 0,this.listeners=void 0,this.subscribe=r=>(this.listeners.add(r),()=>{this.listeners.delete(r)}),this.getSnapshot=()=>this.value,this.update=r=>{this.value=r,this.listeners.forEach(o=>o(r))},this.value=t,this.listeners=new Set}}class pm{constructor(){this.maxListeners=20,this.warnOnce=!1,this.events={}}on(t,r,o={}){let l=this.events[t];l||(l={highPriority:new Map,regular:new Map},this.events[t]=l),o.isFirst?l.highPriority.set(r,!0):l.regular.set(r,!0)}removeListener(t,r){this.events[t]&&(this.events[t].regular.delete(r),this.events[t].highPriority.delete(r))}removeAllListeners(){this.events={}}emit(t,...r){const o=this.events[t];if(!o)return;const l=Array.from(o.highPriority.keys()),n=Array.from(o.regular.keys());for(let i=l.length-1;i>=0;i-=1){const s=l[i];o.highPriority.has(s)&&s.apply(this,r)}for(let i=0;ie.isPropagationStopped!==void 0;let Yn=0;function gm(e){var t;const r=(t=e.current)==null?void 0:t[eu];if(r)return r;const o={},l={state:o,store:on.create(o),instanceId:{id:Yn}};return Yn+=1,l.getPublicApi=()=>e.current,l.register=(n,i)=>{Object.keys(i).forEach(s=>{const u=i[s],d=l[s];if((d==null?void 0:d.spying)===!0?d.target=u:l[s]=u,n==="public"){const c=e.current,p=c[s];(p==null?void 0:p.spying)===!0?p.target=u:c[s]=u}})},l.register("private",{caches:{},eventManager:new pm}),l}function mm(e){return{get state(){return e.current.state},get store(){return e.current.store},get instanceId(){return e.current.instanceId},[eu]:e.current}}function bm(e,t){const r=a.useRef(),o=a.useRef();o.current||(o.current=gm(r)),r.current||(r.current=mm(o));const l=a.useCallback((...i)=>{const[s,u,d={}]=i;if(d.defaultMuiPrevented=!1,fm(d)&&d.isPropagationStopped())return;const c=t.signature===gt.DataGridPro?{api:o.current.getPublicApi()}:{};o.current.eventManager.emit(s,u,d,c)},[o,t.signature]),n=a.useCallback((i,s,u)=>{o.current.eventManager.on(i,s,u);const d=o.current;return()=>{d.eventManager.removeListener(i,s)}},[o]);return me(o,{subscribeEvent:n,publishEvent:l},"public"),a.useImperativeHandle(e,()=>r.current,[r]),a.useEffect(()=>{const i=o.current;return()=>{i.publishEvent("unmount")}},[o]),o}const hm=(e,t)=>{const r=a.useCallback(o=>{if(t.localeText[o]==null)throw new Error(`Missing translation for key ${o}.`);return t.localeText[o]},[t.localeText]);e.current.register("public",{getLocaleText:r})};function yr(e){"@babel/helpers - typeof";return yr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},yr(e)}function Cm(e,t){if(yr(e)!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var o=r.call(e,t||"default");if(yr(o)!="object")return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Ir(e){var t=Cm(e,"string");return yr(t)=="symbol"?t:String(t)}const wm=e=>{const t=a.useRef({}),r=a.useRef(!1),o=a.useCallback(c=>{r.current||!c||(r.current=!0,Object.values(c.appliers).forEach(p=>{p()}),r.current=!1)},[]),l=a.useCallback((c,p,f)=>{t.current[c]||(t.current[c]={processors:new Map,appliers:{}});const b=t.current[c];return b.processors.get(p)!==f&&(b.processors.set(p,f),o(b)),()=>{t.current[c].processors.set(p,null)}},[o]),n=a.useCallback((c,p,f)=>(t.current[c]||(t.current[c]={processors:new Map,appliers:{}}),t.current[c].appliers[p]=f,()=>{const b=t.current[c].appliers,g=Z(b,[p].map(Ir));t.current[c].appliers=g}),[]),i=a.useCallback(c=>{const p=t.current[c];o(p)},[o]),s=a.useCallback((...c)=>{const[p,f,b]=c;return t.current[p]?Array.from(t.current[p].processors.values()).reduce((h,x)=>x?x(h,b):h,f):f},[]),u={registerPipeProcessor:l,registerPipeApplier:n,requestPipeProcessorsApplication:i},d={unstable_applyPipeProcessors:s};me(e,u,"private"),me(e,d,"public")},Ae=(e,t,r)=>{const o=a.useRef(),l=a.useRef(`mui-${Math.round(Math.random()*1e9)}`),n=a.useCallback(()=>{o.current=e.current.registerPipeProcessor(t,l.current,r)},[e,r,t]);mr(()=>{n()});const i=a.useRef(!0);a.useEffect(()=>(i.current?i.current=!1:n(),()=>{o.current&&(o.current(),o.current=null)}),[n])},ln=(e,t,r)=>{const o=a.useRef(),l=a.useRef(`mui-${Math.round(Math.random()*1e9)}`),n=a.useCallback(()=>{o.current=e.current.registerPipeApplier(t,l.current,r)},[e,r,t]);mr(()=>{n()});const i=a.useRef(!0);a.useEffect(()=>(i.current?i.current=!1:n(),()=>{o.current&&(o.current(),o.current=null)}),[n])},bo=(e,t,r,o)=>{const l=a.useCallback(()=>{e.current.registerStrategyProcessor(t,r,o)},[e,o,r,t]);mr(()=>{l()});const n=a.useRef(!0);a.useEffect(()=>{n.current?n.current=!1:l()},[l])},Wt="none",Xn={rowTreeCreation:"rowTree",filtering:"rowTree",sorting:"rowTree",visibleRowsLookupCreation:"rowTree"},Sm=e=>{const t=a.useRef(new Map),r=a.useRef({}),o=a.useCallback((u,d,c)=>{const p=()=>{const g=r.current[d],h=Z(g,[u].map(Ir));r.current[d]=h};r.current[d]||(r.current[d]={});const f=r.current[d],b=f[u];return f[u]=c,!b||b===c||u===e.current.getActiveStrategy(Xn[d])&&e.current.publishEvent("activeStrategyProcessorChange",d),p},[e]),l=a.useCallback((u,d)=>{const c=e.current.getActiveStrategy(Xn[u]);if(c==null)throw new Error("Can't apply a strategy processor before defining an active strategy");const p=r.current[u];if(!p||!p[c])throw new Error(`No processor found for processor "${u}" on strategy "${c}"`);const f=p[c];return f(d)},[e]),n=a.useCallback(u=>{var d;const p=Array.from(t.current.entries()).find(([,f])=>f.group!==u?!1:f.isAvailable());return(d=p==null?void 0:p[0])!=null?d:Wt},[]),i=a.useCallback((u,d,c)=>{t.current.set(d,{group:u,isAvailable:c}),e.current.publishEvent("strategyAvailabilityChange")},[e]);me(e,{registerStrategyProcessor:o,applyStrategyProcessor:l,getActiveStrategy:n,setStrategyAvailability:i},"private")},Om=(e,t)=>{const r=a.useRef({}),[,o]=a.useState(),l=a.useCallback(c=>{r.current[c.stateId]=c},[]),n=a.useCallback((c,p)=>{let f;if(Fi(c)?f=c(e.current.state):f=c,e.current.state===f)return!1;let b=!1;const g=[];if(Object.keys(r.current).forEach(h=>{const x=r.current[h],S=x.stateSelector(e.current.state,e.current.instanceId),C=x.stateSelector(f,e.current.instanceId);C!==S&&(g.push({stateId:x.stateId,hasPropChanged:C!==x.propModel}),x.propModel!==void 0&&C!==x.propModel&&(b=!0))}),g.length>1)throw new Error(`You're not allowed to update several sub-state in one transaction. You already updated ${g[0].stateId}, therefore, you're not allowed to update ${g.map(h=>h.stateId).join(", ")} in the same transaction.`);if(b||(e.current.state=f,e.current.publishEvent&&e.current.publishEvent("stateChange",f),e.current.store.update(f)),g.length===1){const{stateId:h,hasPropChanged:x}=g[0],S=r.current[h],C=S.stateSelector(f,e.current.instanceId);if(S.propOnChange&&x){const E=t.signature===gt.DataGridPro?{api:e.current,reason:p}:{reason:p};S.propOnChange(C,E)}b||e.current.publishEvent(S.changeEvent,C,{reason:p})}return!b},[e,t.signature]),i=a.useCallback((c,p,f)=>e.current.setState(b=>m({},b,{[c]:p(b[c])}),f),[e]),s=a.useCallback(()=>o(()=>e.current.state),[e]),u={setState:n,forceUpdate:s},d={updateControlState:i,registerControlState:l};me(e,u,"public"),me(e,d,"private")},Pm=(e,t)=>{const r=bm(e,t);return dm(r,t),Om(r,t),wm(r),Sm(r),hm(r,t),r.current.register("private",{rootProps:t}),r},Qe=(e,t,r)=>{const o=a.useRef(!1);o.current||(t.current.state=e(t.current.state,r,t),o.current=!0)},xm=/(\d+)-(\d+)-(\d+)/,vm=/(\d+)-(\d+)-(\d+)T(\d+):(\d+)/;function Yt(e,t,r,o){if(!e.value)return null;const[l,n,i,s,u]=e.value.match(r?vm:xm).slice(1).map(Number),d=new Date(l,n-1,i,s||0,u||0).getTime();return c=>{if(!c)return!1;if(o)return t(c.getTime(),d);const f=new Date(c).setHours(r?c.getHours():0,r?c.getMinutes():0,0,0);return t(f,d)}}const nn=e=>Gr([{value:"is",getApplyFilterFnV7:t=>Yt(t,(r,o)=>r===o,e),InputComponent:jt,InputComponentProps:{type:e?"datetime-local":"date"}},{value:"not",getApplyFilterFnV7:t=>Yt(t,(r,o)=>r!==o,e),InputComponent:jt,InputComponentProps:{type:e?"datetime-local":"date"}},{value:"after",getApplyFilterFnV7:t=>Yt(t,(r,o)=>r>o,e),InputComponent:jt,InputComponentProps:{type:e?"datetime-local":"date"}},{value:"onOrAfter",getApplyFilterFnV7:t=>Yt(t,(r,o)=>r>=o,e),InputComponent:jt,InputComponentProps:{type:e?"datetime-local":"date"}},{value:"before",getApplyFilterFnV7:t=>Yt(t,(r,o)=>rYt(t,(r,o)=>r<=o,e),InputComponent:jt,InputComponentProps:{type:e?"datetime-local":"date"}},{value:"isEmpty",getApplyFilterFnV7:()=>t=>t==null,requiresFilterValue:!1},{value:"isNotEmpty",getApplyFilterFnV7:()=>t=>t!=null,requiresFilterValue:!1}]);function tu({value:e,columnType:t,rowId:r,field:o}){if(!(e instanceof Date))throw new Error([`MUI: \`${t}\` column type only accepts \`Date\` objects as values.`,"Use `valueGetter` to transform the value into a `Date` object.",`Row ID: ${r}, field: "${o}".`].join(` -`))}function ru({value:e,field:t,id:r}){return e?(tu({value:e,columnType:"date",rowId:r,field:t}),e.toLocaleDateString()):""}function ou({value:e,field:t,id:r}){return e?(tu({value:e,columnType:"dateTime",rowId:r,field:t}),e.toLocaleString()):""}const lu=m({},it,{type:"date",sortComparator:Ul,valueFormatter:ru,filterOperators:nn(),renderEditCell:Hl,pastedValueParser:e=>new Date(e)}),nu=m({},it,{type:"dateTime",sortComparator:Ul,valueFormatter:ou,filterOperators:nn(!0),renderEditCell:Hl,pastedValueParser:e=>new Date(e)}),kt=e=>e==null?null:Number(e),il=Nr(e=>e==null||Number.isNaN(e)||e===""?null:t=>kt(t)===kt(e)),au=()=>Gr([{value:"=",getApplyFilterFnV7:e=>e.value==null||Number.isNaN(e.value)?null:t=>kt(t)===e.value,InputComponent:ut,InputComponentProps:{type:"number"}},{value:"!=",getApplyFilterFnV7:e=>e.value==null||Number.isNaN(e.value)?null:t=>kt(t)!==e.value,InputComponent:ut,InputComponentProps:{type:"number"}},{value:">",getApplyFilterFnV7:e=>e.value==null||Number.isNaN(e.value)?null:t=>t==null?!1:kt(t)>e.value,InputComponent:ut,InputComponentProps:{type:"number"}},{value:">=",getApplyFilterFnV7:e=>e.value==null||Number.isNaN(e.value)?null:t=>t==null?!1:kt(t)>=e.value,InputComponent:ut,InputComponentProps:{type:"number"}},{value:"<",getApplyFilterFnV7:e=>e.value==null||Number.isNaN(e.value)?null:t=>t==null?!1:kt(t)e.value==null||Number.isNaN(e.value)?null:t=>t==null?!1:kt(t)<=e.value,InputComponent:ut,InputComponentProps:{type:"number"}},{value:"isEmpty",getApplyFilterFnV7:()=>e=>e==null,requiresFilterValue:!1},{value:"isNotEmpty",getApplyFilterFnV7:()=>e=>e!=null,requiresFilterValue:!1},{value:"isAnyOf",getApplyFilterFnV7:e=>!Array.isArray(e.value)||e.value.length===0?null:t=>t!=null&&e.value.includes(Number(t)),InputComponent:en,InputComponentProps:{type:"number"}}]),iu=m({},it,{type:"number",align:"right",headerAlign:"right",sortComparator:Bl,valueParser:e=>e===""?null:Number(e),valueFormatter:({value:e})=>uf(e)?e.toLocaleString():e||"",filterOperators:au(),getApplyQuickFilterFn:Us(il),getApplyQuickFilterFnV7:il}),Xt=e=>e==null||!Nl(e)?e:e.value,su=()=>Gr([{value:"is",getApplyFilterFnV7:e=>e.value==null||e.value===""?null:t=>Xt(t)===Xt(e.value),InputComponent:ol},{value:"not",getApplyFilterFnV7:e=>e.value==null||e.value===""?null:t=>Xt(t)!==Xt(e.value),InputComponent:ol},{value:"isAnyOf",getApplyFilterFnV7:e=>{if(!Array.isArray(e.value)||e.value.length===0)return null;const t=e.value.map(Xt);return r=>t.includes(Xt(r))},InputComponent:ks}]),Fm=e=>typeof e[0]=="object",ym=e=>Nl(e)?e.value:e,Im=e=>Nl(e)?e.label:String(e),uu=m({},it,{type:"singleSelect",getOptionLabel:Im,getOptionValue:ym,valueFormatter(e){const{id:t,field:r,value:o,api:l}=e,n=e.api.getColumn(r);if(!Ut(n))return"";let i;if(typeof n.valueOptions=="function"?i=n.valueOptions({id:t,row:t?l.getRow(t):null,field:r}):i=n.valueOptions,o==null)return"";if(!i)return o;if(!Fm(i))return n.getOptionLabel(o);const s=i.find(u=>n.getOptionValue(u)===o);return s?n.getOptionLabel(s):""},renderEditCell:ci,filterOperators:su(),pastedValueParser:(e,t)=>{const r=t.colDef,o=r.valueOptions,l=typeof o=="function"?o({field:r.field}):o||[],n=r.getOptionValue;if(l.find(s=>n(s)===e))return e}}),an="__default__",cu=()=>({string:it,number:iu,date:lu,dateTime:nu,boolean:tn,singleSelect:uu,[zr]:Js,[an]:it});function sl(e,t){return typeof e=="string"&&[t,` -`,"\r",'"'].some(r=>e.includes(r))?`"${e.replace(/"/g,'""')}"`:e}const du=(e,t)=>{const{delimiterCharacter:r,ignoreValueFormatter:o}=t;let l;if(o){var n;const s=e.colDef.type;if(s==="number")l=String(e.value);else if(s==="date"||s==="dateTime"){var i;l=(i=e.value)==null?void 0:i.toISOString()}else typeof((n=e.value)==null?void 0:n.toString)=="function"?l=e.value.toString():l=e.value}else l=e.formattedValue;return sl(l,r)};vt(["MUI: When the value of a field is an object or a `renderCell` is provided, the CSV export might not display the value correctly.","You can provide a `valueFormatter` with a string representation to be used."]);class ul{constructor(t){this.options=void 0,this.rowString="",this.isEmpty=!0,this.options=t}addValue(t){this.isEmpty||(this.rowString+=this.options.delimiterCharacter),t==null?this.rowString+="":typeof this.options.sanitizeCellValue=="function"?this.rowString+=this.options.sanitizeCellValue(t,this.options.delimiterCharacter):this.rowString+=t,this.isEmpty=!1}getRowString(){return this.rowString}}const Mm=({id:e,columns:t,getCellParams:r,delimiterCharacter:o,ignoreValueFormatter:l})=>{const n=new ul({delimiterCharacter:o});return t.forEach(i=>{const s=r(e,i.field);n.addValue(du(s,{delimiterCharacter:o,ignoreValueFormatter:l}))}),n.getRowString()};function km(e){const{columns:t,rowIds:r,delimiterCharacter:o,includeHeaders:l,includeColumnGroupsHeaders:n,ignoreValueFormatter:i,apiRef:s}=e,u=r.reduce((b,g)=>`${b}${Mm({id:g,columns:t,getCellParams:s.current.getCellParams,delimiterCharacter:o,ignoreValueFormatter:i})}\r -`,"").trim();if(!l)return u;const d=t.filter(b=>b.field!==Jt.field),c=[];if(n){const b=s.current.unstable_getAllGroupDetails();let g=0;const h=d.reduce((x,S)=>{const C=s.current.unstable_getColumnGroupPath(S.field);return x[S.field]=C,g=Math.max(g,C.length),x},{});for(let x=0;x{const E=(h[C.field]||[])[x],T=b[E];S.addValue(T?T.headerName||T.groupId:"")})}}const p=new ul({delimiterCharacter:o,sanitizeCellValue:sl});return d.forEach(b=>{p.addValue(b.headerName||b.field)}),c.push(p),`${`${c.map(b=>b.getRowString()).join(`\r +return result$$;`.replaceAll("$$",String(Wn)));return Wn+=1,(s,u)=>n(t.current.getRowId,l,s,u)},Yg=(e,t)=>{var r,o,l;const n=(r=(o=e.quickFilterValues)==null?void 0:o.filter(Boolean))!=null?r:[];if(n.length===0)return null;const s=((l=e.quickFilterExcludeHiddenColumns)!=null?l:!1)?Er(t):Pt(t),u=[],{ignoreDiacritics:d}=t.current.rootProps,c=Us(t);return s.forEach(p=>{const f=t.current.getColumn(p),b=f==null?void 0:f.getApplyQuickFilterFn,g=f==null?void 0:f.getApplyQuickFilterFnV7,h=!go(b),P=!go(g);g&&!(h&&!P)?u.push({column:f,appliers:n.map(w=>{const C=d?Tt(w):w;return{v7:!0,fn:g(C,f,c)}})}):b&&u.push({column:f,appliers:n.map(w=>{const C=d?Tt(w):w;return{v7:!1,fn:b(C,f,c)}})})}),function(f,b){const g={},h={};e:for(let w=0;w{const o=Jg(e,t,r),l=Yg(e,t);return function(i,s,u){var d,c;u.passingFilterItems=(d=o==null?void 0:o(i,s))!=null?d:null,u.passingQuickFilterValues=(c=l==null?void 0:l(i,s))!=null?c:null}},Kn=e=>e!=null,em=(e,t,r)=>(e.cleanedFilterItems||(e.cleanedFilterItems=r.filter(o=>Ws(o,t)!==null)),e.cleanedFilterItems),tm=(e,t,r,o,l)=>{const n=em(l,o,r.items),i=e.filter(Kn),s=t.filter(Kn);if(i.length>0){var u;const c=f=>i.some(b=>b[f.id]);if(((u=r.logicOperator)!=null?u:ur().logicOperator)===Ke.And){if(!n.every(c))return!1}else if(!n.some(c))return!1}if(s.length>0&&r.quickFilterValues!=null){var d;const c=f=>s.some(b=>b[f]);if(((d=r.quickFilterLogicOperator)!=null?d:ur().quickFilterLogicOperator)===Ke.And){if(!r.quickFilterValues.every(c))return!1}else if(!r.quickFilterValues.some(c))return!1}return!0},nl=Vr(e=>{if(!e)return null;const t=new RegExp(oo(e),"i");return(r,o,l,n)=>{let i=n.current.getRowFormattedValue(o,l);return n.current.ignoreDiacritics&&(i=Tt(i)),i!=null?t.test(i.toString()):!1}}),Ks=(e=!1)=>Nr([{value:"contains",getApplyFilterFnV7:t=>{if(!t.value)return null;const r=e?t.value:t.value.trim(),o=new RegExp(oo(r),"i");return l=>l!=null?o.test(String(l)):!1},InputComponent:ut},{value:"equals",getApplyFilterFnV7:t=>{if(!t.value)return null;const r=e?t.value:t.value.trim(),o=new Intl.Collator(void 0,{sensitivity:"base",usage:"search"});return l=>l!=null?o.compare(r,l.toString())===0:!1},InputComponent:ut},{value:"startsWith",getApplyFilterFnV7:t=>{if(!t.value)return null;const r=e?t.value:t.value.trim(),o=new RegExp(`^${oo(r)}.*$`,"i");return l=>l!=null?o.test(l.toString()):!1},InputComponent:ut},{value:"endsWith",getApplyFilterFnV7:t=>{if(!t.value)return null;const r=e?t.value:t.value.trim(),o=new RegExp(`.*${oo(r)}$`,"i");return l=>l!=null?o.test(l.toString()):!1},InputComponent:ut},{value:"isEmpty",getApplyFilterFnV7:()=>t=>t===""||t==null,requiresFilterValue:!1},{value:"isNotEmpty",getApplyFilterFnV7:()=>t=>t!==""&&t!=null,requiresFilterValue:!1},{value:"isAnyOf",getApplyFilterFnV7:t=>{if(!Array.isArray(t.value)||t.value.length===0)return null;const r=e?t.value:t.value.map(l=>l.trim()),o=new Intl.Collator(void 0,{sensitivity:"base",usage:"search"});return l=>l!=null?r.some(n=>o.compare(n,l.toString()||"")===0):!1},InputComponent:Xl}]),it={width:100,minWidth:50,maxWidth:1/0,hideable:!0,sortable:!0,resizable:!0,filterable:!0,groupable:!0,pinnable:!0,aggregable:!0,editable:!1,sortComparator:Ri,type:"string",align:"left",filterOperators:Ks(),renderEditCell:ni,getApplyQuickFilterFn:Bs(nl),getApplyQuickFilterFnV7:nl},Qs=()=>Nr([{value:"is",getApplyFilterFnV7:e=>{if(!e.value)return null;const t=e.value==="true";return r=>!!r===t},InputComponent:ys}]);function rm({value:e,api:t}){return e?t.getLocaleText("booleanCellTrueLabel"):t.getLocaleText("booleanCellFalseLabel")}const om=e=>{switch(e.toLowerCase().trim()){case"true":case"yes":case"1":return!0;case"false":case"no":case"0":case"null":case"undefined":return!1;default:return}},en=m({},it,{type:"boolean",align:"center",headerAlign:"center",renderCell:ei,renderEditCell:ri,sortComparator:jl,valueFormatter:rm,filterOperators:Qs(),getApplyQuickFilterFn:void 0,getApplyQuickFilterFnV7:void 0,aggregable:!1,pastedValueParser:e=>om(e)}),yt="__check__",Jt=m({},en,{field:yt,type:"checkboxSelection",width:50,resizable:!1,sortable:!1,filterable:!1,aggregable:!1,disableColumnMenu:!0,disableReorder:!0,disableExport:!0,getApplyQuickFilterFn:void 0,getApplyQuickFilterFnV7:void 0,valueGetter:e=>yr(e.api.state,e.api.instanceId)[e.id]!==void 0,renderHeader:e=>x.jsx(Ui,m({},e)),renderCell:e=>x.jsx(Bi,m({},e))}),Gr="actions",Zs=m({},it,{sortable:!1,filterable:!1,aggregable:!1,width:100,align:"center",headerAlign:"center",headerName:"",disableColumnMenu:!0,disableExport:!0,renderCell:di,getApplyQuickFilterFn:void 0,getApplyQuickFilterFnV7:void 0}),tn="__detail_panel_toggle__",We=e=>e.editRows,lm=["selected","hovered","rowId","row","index","style","position","rowHeight","className","visibleColumns","renderedColumns","containerWidth","firstColumnToRender","lastColumnToRender","isLastVisible","focusedCellColumnIndexNotInRange","isNotVisible","focusedCell","tabbableCell","onClick","onDoubleClick","onMouseEnter","onMouseLeave","onMouseOut","onMouseOver"],nm=e=>{const{editable:t,editing:r,selected:o,isLastVisible:l,rowHeight:n,classes:i}=e;return he({root:["row",o&&"selected",t&&"row--editable",r&&"row--editing",l&&"row--lastVisible",n==="auto"&&"row--dynamicHeight"]},be,i)};function am({width:e}){if(!e)return null;const t={width:e};return x.jsx("div",{className:`${V.cell} ${V.withBorderColor}`,style:t})}const im=a.forwardRef(function(t,r){const{selected:o,hovered:l,rowId:n,row:i,index:s,style:u,position:d,rowHeight:c,className:p,visibleColumns:f,renderedColumns:b,containerWidth:g,firstColumnToRender:h,isLastVisible:P=!1,focusedCellColumnIndexNotInRange:w,isNotVisible:C,focusedCell:E,onClick:T,onDoubleClick:_,onMouseEnter:F,onMouseLeave:L,onMouseOut:I,onMouseOver:H}=t,$=J(t,lm),v=ce(),R=a.useRef(null),y=Y(),S=Zt(v,y),O=K(v,Po),M=K(v,tt),A=K(v,Dr),k=K(v,fr),D=K(v,We),N=xt(R,r),j=s+k+2,z={selected:o,hovered:l,isLastVisible:P,classes:y.classes,editing:v.current.getRowMode(n)===ke.Edit,editable:y.editMode===mt.Row,rowHeight:c},B=nm(z);a.useLayoutEffect(()=>{c==="auto"&&R.current&&typeof ResizeObserver>"u"&&v.current.unstable_storeRowHeightMeasurement(n,R.current.clientHeight,d)},[v,c,n,d]),a.useLayoutEffect(()=>{if(S.range){const Oe=v.current.getRowIndexRelativeToVisibleRows(n);Oe!=null&&v.current.unstable_setLastMeasuredRowIndex(Oe)}const W=R.current;if(!W||c!=="auto"||typeof ResizeObserver>"u")return;const le=new ResizeObserver(Oe=>{const[Le]=Oe,Je=Le.borderBoxSize&&Le.borderBoxSize.length>0?Le.borderBoxSize[0].blockSize:Le.contentRect.height;v.current.unstable_storeRowHeightMeasurement(n,Je,d)});return le.observe(W),()=>le.disconnect()},[v,S.range,s,c,n,d]);const Z=a.useCallback((W,te)=>le=>{Hr(le)||v.current.getRow(n)&&(v.current.publishEvent(W,v.current.getRowParams(n),le),te&&te(le))},[v,n]),Q=a.useCallback(W=>{const te=Hd(W.target,V.cell),le=te==null?void 0:te.getAttribute("data-field");if(le){if(le===Jt.field||le===tn||le==="__reorder__"||v.current.getCellMode(n,le)===ye.Edit)return;const Oe=v.current.getColumn(le);if((Oe==null?void 0:Oe.type)===Gr)return}Z("rowClick",T)(W)},[v,T,Z,n]),{slots:ee,slotProps:oe,disableColumnReorder:Ce}=y,ve=ee.cell===qo?qo:Kd,se=y.rowReordering,ie=(W,te)=>{var le,Oe;const Le=Ce&&W.disableReorder||!se&&!!M.length&&A>1&&Object.keys(D).length>0,Je=(le=(Oe=D[n])==null?void 0:Oe[W.field])!=null?le:null;let Ye=!1;return w!==void 0&&f[w].field===W.field&&(Ye=!0),x.jsx(ve,m({column:W,width:te.width,rowId:n,height:c,showRightBorder:te.showRightBorder,align:W.align||"left",colIndex:te.indexRelativeToAllColumns,colSpan:te.colSpan,disableDragEvents:Le,editCellState:Je,isNotVisible:Ye},oe==null?void 0:oe.cell),W.field)},ue=K(v,()=>m({},v.current.unstable_getRowInternalSizes(n)),xl);let we=c;if(we==="auto"&&ue){let W=0;const te=Object.entries(ue).reduce((le,[Oe,Le])=>/^base[A-Z]/.test(Oe)?(W+=1,Le>le?Le:le):le,0);te>0&&W>1&&(we=te)}const Fe=a.useMemo(()=>{if(C)return{opacity:0,width:0,height:0};const W=m({},u,{maxHeight:c==="auto"?"none":c,minHeight:we});if(ue!=null&&ue.spacingTop){const te=y.rowSpacingType==="border"?"borderTopWidth":"marginTop";W[te]=ue.spacingTop}if(ue!=null&&ue.spacingBottom){const te=y.rowSpacingType==="border"?"borderBottomWidth":"marginBottom";let le=W[te];typeof le!="number"&&(le=parseInt(le||"0",10)),le+=ue.spacingBottom,W[te]=le}return W},[C,c,u,we,ue,y.rowSpacingType]),de=v.current.unstable_applyPipeProcessors("rowClassName",[],n);if(typeof y.getRowClassName=="function"){var U;const W=s-(((U=S.range)==null?void 0:U.firstRowIndex)||0),te=m({},v.current.getRowParams(n),{isFirstVisible:W===0,isLastVisible:W===S.rows.length-1,indexRelativeToCurrentPage:W});de.push(y.getRowClassName(te))}const q=df(1e4,20,80),ae=v.current.getRowNode(n);if(!ae)return null;const fe=ae.type,ge=[];for(let W=0;W0&&x.jsx(am,{width:Se})]}))}),Js=yo(im);function Ys({privateApiRef:e,props:t,children:r}){const o=a.useRef(e.current.getPublicApi());return x.jsx(Pa.Provider,{value:t,children:x.jsx(xa.Provider,{value:e,children:x.jsx(Ol.Provider,{value:o,children:r})})})}const sm=uf()&&window.localStorage.getItem("DEBUG")!=null,Sr=()=>{},um={debug:Sr,info:Sr,warn:Sr,error:Sr},Qn=["debug","info","warn","error"];function Zn(e,t,r=console){const o=Qn.indexOf(t);if(o===-1)throw new Error(`MUI: Log level ${t} not recognized.`);return Qn.reduce((n,i,s)=>(s>=o?n[i]=(...u)=>{const[d,...c]=u;r[i](`MUI: ${e} - ${d}`,...c)}:n[i]=Sr,n),{})}const cm=(e,t)=>{const r=a.useCallback(o=>sm?Zn(o,"debug",t.logger):t.logLevel?Zn(o,t.logLevel.toString(),t.logger):um,[t.logLevel,t.logger]);me(e,{getLogger:r},"private")};class rn{static create(t){return new rn(t)}constructor(t){this.value=void 0,this.listeners=void 0,this.subscribe=r=>(this.listeners.add(r),()=>{this.listeners.delete(r)}),this.getSnapshot=()=>this.value,this.update=r=>{this.value=r,this.listeners.forEach(o=>o(r))},this.value=t,this.listeners=new Set}}class dm{constructor(){this.maxListeners=20,this.warnOnce=!1,this.events={}}on(t,r,o={}){let l=this.events[t];l||(l={highPriority:new Map,regular:new Map},this.events[t]=l),o.isFirst?l.highPriority.set(r,!0):l.regular.set(r,!0)}removeListener(t,r){this.events[t]&&(this.events[t].regular.delete(r),this.events[t].highPriority.delete(r))}removeAllListeners(){this.events={}}emit(t,...r){const o=this.events[t];if(!o)return;const l=Array.from(o.highPriority.keys()),n=Array.from(o.regular.keys());for(let i=l.length-1;i>=0;i-=1){const s=l[i];o.highPriority.has(s)&&s.apply(this,r)}for(let i=0;ie.isPropagationStopped!==void 0;let Jn=0;function fm(e){var t;const r=(t=e.current)==null?void 0:t[Xs];if(r)return r;const o={},l={state:o,store:rn.create(o),instanceId:{id:Jn}};return Jn+=1,l.getPublicApi=()=>e.current,l.register=(n,i)=>{Object.keys(i).forEach(s=>{const u=i[s],d=l[s];if((d==null?void 0:d.spying)===!0?d.target=u:l[s]=u,n==="public"){const c=e.current,p=c[s];(p==null?void 0:p.spying)===!0?p.target=u:c[s]=u}})},l.register("private",{caches:{},eventManager:new dm}),l}function gm(e){return{get state(){return e.current.state},get store(){return e.current.store},get instanceId(){return e.current.instanceId},[Xs]:e.current}}function mm(e,t){const r=a.useRef(),o=a.useRef();o.current||(o.current=fm(r)),r.current||(r.current=gm(o));const l=a.useCallback((...i)=>{const[s,u,d={}]=i;if(d.defaultMuiPrevented=!1,pm(d)&&d.isPropagationStopped())return;const c=t.signature===gt.DataGridPro?{api:o.current.getPublicApi()}:{};o.current.eventManager.emit(s,u,d,c)},[o,t.signature]),n=a.useCallback((i,s,u)=>{o.current.eventManager.on(i,s,u);const d=o.current;return()=>{d.eventManager.removeListener(i,s)}},[o]);return me(o,{subscribeEvent:n,publishEvent:l},"public"),a.useImperativeHandle(e,()=>r.current,[r]),a.useEffect(()=>{const i=o.current;return()=>{i.publishEvent("unmount")}},[o]),o}const bm=(e,t)=>{const r=a.useCallback(o=>{if(t.localeText[o]==null)throw new Error(`Missing translation for key ${o}.`);return t.localeText[o]},[t.localeText]);e.current.register("public",{getLocaleText:r})},hm=e=>{const t=a.useRef({}),r=a.useRef(!1),o=a.useCallback(c=>{r.current||!c||(r.current=!0,Object.values(c.appliers).forEach(p=>{p()}),r.current=!1)},[]),l=a.useCallback((c,p,f)=>{t.current[c]||(t.current[c]={processors:new Map,appliers:{}});const b=t.current[c];return b.processors.get(p)!==f&&(b.processors.set(p,f),o(b)),()=>{t.current[c].processors.set(p,null)}},[o]),n=a.useCallback((c,p,f)=>(t.current[c]||(t.current[c]={processors:new Map,appliers:{}}),t.current[c].appliers[p]=f,()=>{const b=t.current[c].appliers,g=J(b,[p].map(Or));t.current[c].appliers=g}),[]),i=a.useCallback(c=>{const p=t.current[c];o(p)},[o]),s=a.useCallback((...c)=>{const[p,f,b]=c;return t.current[p]?Array.from(t.current[p].processors.values()).reduce((h,P)=>P?P(h,b):h,f):f},[]),u={registerPipeProcessor:l,registerPipeApplier:n,requestPipeProcessorsApplication:i},d={unstable_applyPipeProcessors:s};me(e,u,"private"),me(e,d,"public")},Ae=(e,t,r)=>{const o=a.useRef(),l=a.useRef(`mui-${Math.round(Math.random()*1e9)}`),n=a.useCallback(()=>{o.current=e.current.registerPipeProcessor(t,l.current,r)},[e,r,t]);mr(()=>{n()});const i=a.useRef(!0);a.useEffect(()=>(i.current?i.current=!1:n(),()=>{o.current&&(o.current(),o.current=null)}),[n])},on=(e,t,r)=>{const o=a.useRef(),l=a.useRef(`mui-${Math.round(Math.random()*1e9)}`),n=a.useCallback(()=>{o.current=e.current.registerPipeApplier(t,l.current,r)},[e,r,t]);mr(()=>{n()});const i=a.useRef(!0);a.useEffect(()=>(i.current?i.current=!1:n(),()=>{o.current&&(o.current(),o.current=null)}),[n])},mo=(e,t,r,o)=>{const l=a.useCallback(()=>{e.current.registerStrategyProcessor(t,r,o)},[e,o,r,t]);mr(()=>{l()});const n=a.useRef(!0);a.useEffect(()=>{n.current?n.current=!1:l()},[l])},Wt="none",Yn={rowTreeCreation:"rowTree",filtering:"rowTree",sorting:"rowTree",visibleRowsLookupCreation:"rowTree"},Cm=e=>{const t=a.useRef(new Map),r=a.useRef({}),o=a.useCallback((u,d,c)=>{const p=()=>{const g=r.current[d],h=J(g,[u].map(Or));r.current[d]=h};r.current[d]||(r.current[d]={});const f=r.current[d],b=f[u];return f[u]=c,!b||b===c||u===e.current.getActiveStrategy(Yn[d])&&e.current.publishEvent("activeStrategyProcessorChange",d),p},[e]),l=a.useCallback((u,d)=>{const c=e.current.getActiveStrategy(Yn[u]);if(c==null)throw new Error("Can't apply a strategy processor before defining an active strategy");const p=r.current[u];if(!p||!p[c])throw new Error(`No processor found for processor "${u}" on strategy "${c}"`);const f=p[c];return f(d)},[e]),n=a.useCallback(u=>{var d;const p=Array.from(t.current.entries()).find(([,f])=>f.group!==u?!1:f.isAvailable());return(d=p==null?void 0:p[0])!=null?d:Wt},[]),i=a.useCallback((u,d,c)=>{t.current.set(d,{group:u,isAvailable:c}),e.current.publishEvent("strategyAvailabilityChange")},[e]);me(e,{registerStrategyProcessor:o,applyStrategyProcessor:l,getActiveStrategy:n,setStrategyAvailability:i},"private")},wm=(e,t)=>{const r=a.useRef({}),[,o]=a.useState(),l=a.useCallback(c=>{r.current[c.stateId]=c},[]),n=a.useCallback((c,p)=>{let f;if(vi(c)?f=c(e.current.state):f=c,e.current.state===f)return!1;let b=!1;const g=[];if(Object.keys(r.current).forEach(h=>{const P=r.current[h],w=P.stateSelector(e.current.state,e.current.instanceId),C=P.stateSelector(f,e.current.instanceId);C!==w&&(g.push({stateId:P.stateId,hasPropChanged:C!==P.propModel}),P.propModel!==void 0&&C!==P.propModel&&(b=!0))}),g.length>1)throw new Error(`You're not allowed to update several sub-state in one transaction. You already updated ${g[0].stateId}, therefore, you're not allowed to update ${g.map(h=>h.stateId).join(", ")} in the same transaction.`);if(b||(e.current.state=f,e.current.publishEvent&&e.current.publishEvent("stateChange",f),e.current.store.update(f)),g.length===1){const{stateId:h,hasPropChanged:P}=g[0],w=r.current[h],C=w.stateSelector(f,e.current.instanceId);if(w.propOnChange&&P){const E=t.signature===gt.DataGridPro?{api:e.current,reason:p}:{reason:p};w.propOnChange(C,E)}b||e.current.publishEvent(w.changeEvent,C,{reason:p})}return!b},[e,t.signature]),i=a.useCallback((c,p,f)=>e.current.setState(b=>m({},b,{[c]:p(b[c])}),f),[e]),s=a.useCallback(()=>o(()=>e.current.state),[e]),u={setState:n,forceUpdate:s},d={updateControlState:i,registerControlState:l};me(e,u,"public"),me(e,d,"private")},Sm=(e,t)=>{const r=mm(e,t);return cm(r,t),wm(r,t),hm(r),Cm(r),bm(r,t),r.current.register("private",{rootProps:t}),r},Qe=(e,t,r)=>{const o=a.useRef(!1);o.current||(t.current.state=e(t.current.state,r,t),o.current=!0)},Om=/(\d+)-(\d+)-(\d+)/,Pm=/(\d+)-(\d+)-(\d+)T(\d+):(\d+)/;function Yt(e,t,r,o){if(!e.value)return null;const[l,n,i,s,u]=e.value.match(r?Pm:Om).slice(1).map(Number),d=new Date(l,n-1,i,s||0,u||0).getTime();return c=>{if(!c)return!1;if(o)return t(c.getTime(),d);const f=new Date(c).setHours(r?c.getHours():0,r?c.getMinutes():0,0,0);return t(f,d)}}const ln=e=>Nr([{value:"is",getApplyFilterFnV7:t=>Yt(t,(r,o)=>r===o,e),InputComponent:jt,InputComponentProps:{type:e?"datetime-local":"date"}},{value:"not",getApplyFilterFnV7:t=>Yt(t,(r,o)=>r!==o,e),InputComponent:jt,InputComponentProps:{type:e?"datetime-local":"date"}},{value:"after",getApplyFilterFnV7:t=>Yt(t,(r,o)=>r>o,e),InputComponent:jt,InputComponentProps:{type:e?"datetime-local":"date"}},{value:"onOrAfter",getApplyFilterFnV7:t=>Yt(t,(r,o)=>r>=o,e),InputComponent:jt,InputComponentProps:{type:e?"datetime-local":"date"}},{value:"before",getApplyFilterFnV7:t=>Yt(t,(r,o)=>rYt(t,(r,o)=>r<=o,e),InputComponent:jt,InputComponentProps:{type:e?"datetime-local":"date"}},{value:"isEmpty",getApplyFilterFnV7:()=>t=>t==null,requiresFilterValue:!1},{value:"isNotEmpty",getApplyFilterFnV7:()=>t=>t!=null,requiresFilterValue:!1}]);function eu({value:e,columnType:t,rowId:r,field:o}){if(!(e instanceof Date))throw new Error([`MUI: \`${t}\` column type only accepts \`Date\` objects as values.`,"Use `valueGetter` to transform the value into a `Date` object.",`Row ID: ${r}, field: "${o}".`].join(` +`))}function tu({value:e,field:t,id:r}){return e?(eu({value:e,columnType:"date",rowId:r,field:t}),e.toLocaleDateString()):""}function ru({value:e,field:t,id:r}){return e?(eu({value:e,columnType:"dateTime",rowId:r,field:t}),e.toLocaleString()):""}const ou=m({},it,{type:"date",sortComparator:Bl,valueFormatter:tu,filterOperators:ln(),renderEditCell:Rl,pastedValueParser:e=>new Date(e)}),lu=m({},it,{type:"dateTime",sortComparator:Bl,valueFormatter:ru,filterOperators:ln(!0),renderEditCell:Rl,pastedValueParser:e=>new Date(e)}),kt=e=>e==null?null:Number(e),al=Vr(e=>e==null||Number.isNaN(e)||e===""?null:t=>kt(t)===kt(e)),nu=()=>Nr([{value:"=",getApplyFilterFnV7:e=>e.value==null||Number.isNaN(e.value)?null:t=>kt(t)===e.value,InputComponent:ut,InputComponentProps:{type:"number"}},{value:"!=",getApplyFilterFnV7:e=>e.value==null||Number.isNaN(e.value)?null:t=>kt(t)!==e.value,InputComponent:ut,InputComponentProps:{type:"number"}},{value:">",getApplyFilterFnV7:e=>e.value==null||Number.isNaN(e.value)?null:t=>t==null?!1:kt(t)>e.value,InputComponent:ut,InputComponentProps:{type:"number"}},{value:">=",getApplyFilterFnV7:e=>e.value==null||Number.isNaN(e.value)?null:t=>t==null?!1:kt(t)>=e.value,InputComponent:ut,InputComponentProps:{type:"number"}},{value:"<",getApplyFilterFnV7:e=>e.value==null||Number.isNaN(e.value)?null:t=>t==null?!1:kt(t)e.value==null||Number.isNaN(e.value)?null:t=>t==null?!1:kt(t)<=e.value,InputComponent:ut,InputComponentProps:{type:"number"}},{value:"isEmpty",getApplyFilterFnV7:()=>e=>e==null,requiresFilterValue:!1},{value:"isNotEmpty",getApplyFilterFnV7:()=>e=>e!=null,requiresFilterValue:!1},{value:"isAnyOf",getApplyFilterFnV7:e=>!Array.isArray(e.value)||e.value.length===0?null:t=>t!=null&&e.value.includes(Number(t)),InputComponent:Xl,InputComponentProps:{type:"number"}}]),au=m({},it,{type:"number",align:"right",headerAlign:"right",sortComparator:jl,valueParser:e=>e===""?null:Number(e),valueFormatter:({value:e})=>sf(e)?e.toLocaleString():e||"",filterOperators:nu(),getApplyQuickFilterFn:Bs(al),getApplyQuickFilterFnV7:al}),Xt=e=>e==null||!Vl(e)?e:e.value,iu=()=>Nr([{value:"is",getApplyFilterFnV7:e=>e.value==null||e.value===""?null:t=>Xt(t)===Xt(e.value),InputComponent:rl},{value:"not",getApplyFilterFnV7:e=>e.value==null||e.value===""?null:t=>Xt(t)!==Xt(e.value),InputComponent:rl},{value:"isAnyOf",getApplyFilterFnV7:e=>{if(!Array.isArray(e.value)||e.value.length===0)return null;const t=e.value.map(Xt);return r=>t.includes(Xt(r))},InputComponent:Ms}]),xm=e=>typeof e[0]=="object",vm=e=>Vl(e)?e.value:e,Fm=e=>Vl(e)?e.label:String(e),su=m({},it,{type:"singleSelect",getOptionLabel:Fm,getOptionValue:vm,valueFormatter(e){const{id:t,field:r,value:o,api:l}=e,n=e.api.getColumn(r);if(!Ut(n))return"";let i;if(typeof n.valueOptions=="function"?i=n.valueOptions({id:t,row:t?l.getRow(t):null,field:r}):i=n.valueOptions,o==null)return"";if(!i)return o;if(!xm(i))return n.getOptionLabel(o);const s=i.find(u=>n.getOptionValue(u)===o);return s?n.getOptionLabel(s):""},renderEditCell:ui,filterOperators:iu(),pastedValueParser:(e,t)=>{const r=t.colDef,o=r.valueOptions,l=typeof o=="function"?o({field:r.field}):o||[],n=r.getOptionValue;if(l.find(s=>n(s)===e))return e}}),nn="__default__",uu=()=>({string:it,number:au,date:ou,dateTime:lu,boolean:en,singleSelect:su,[Gr]:Zs,[nn]:it});function il(e,t){return typeof e=="string"&&[t,` +`,"\r",'"'].some(r=>e.includes(r))?`"${e.replace(/"/g,'""')}"`:e}const cu=(e,t)=>{const{delimiterCharacter:r,ignoreValueFormatter:o}=t;let l;if(o){var n;const s=e.colDef.type;if(s==="number")l=String(e.value);else if(s==="date"||s==="dateTime"){var i;l=(i=e.value)==null?void 0:i.toISOString()}else typeof((n=e.value)==null?void 0:n.toString)=="function"?l=e.value.toString():l=e.value}else l=e.formattedValue;return il(l,r)};vt(["MUI: When the value of a field is an object or a `renderCell` is provided, the CSV export might not display the value correctly.","You can provide a `valueFormatter` with a string representation to be used."]);class sl{constructor(t){this.options=void 0,this.rowString="",this.isEmpty=!0,this.options=t}addValue(t){this.isEmpty||(this.rowString+=this.options.delimiterCharacter),t==null?this.rowString+="":typeof this.options.sanitizeCellValue=="function"?this.rowString+=this.options.sanitizeCellValue(t,this.options.delimiterCharacter):this.rowString+=t,this.isEmpty=!1}getRowString(){return this.rowString}}const ym=({id:e,columns:t,getCellParams:r,delimiterCharacter:o,ignoreValueFormatter:l})=>{const n=new sl({delimiterCharacter:o});return t.forEach(i=>{const s=r(e,i.field);n.addValue(cu(s,{delimiterCharacter:o,ignoreValueFormatter:l}))}),n.getRowString()};function Im(e){const{columns:t,rowIds:r,delimiterCharacter:o,includeHeaders:l,includeColumnGroupsHeaders:n,ignoreValueFormatter:i,apiRef:s}=e,u=r.reduce((b,g)=>`${b}${ym({id:g,columns:t,getCellParams:s.current.getCellParams,delimiterCharacter:o,ignoreValueFormatter:i})}\r +`,"").trim();if(!l)return u;const d=t.filter(b=>b.field!==Jt.field),c=[];if(n){const b=s.current.unstable_getAllGroupDetails();let g=0;const h=d.reduce((P,w)=>{const C=s.current.unstable_getColumnGroupPath(w.field);return P[w.field]=C,g=Math.max(g,C.length),P},{});for(let P=0;P{const E=(h[C.field]||[])[P],T=b[E];w.addValue(T?T.headerName||T.groupId:"")})}}const p=new sl({delimiterCharacter:o,sanitizeCellValue:il});return d.forEach(b=>{p.addValue(b.headerName||b.field)}),c.push(p),`${`${c.map(b=>b.getRowString()).join(`\r `)}\r -`}${u}`.trim()}function ea(e){const t=document.createElement("span");t.style.whiteSpace="pre",t.style.userSelect="all",t.style.opacity="0px",t.textContent=e,document.body.appendChild(t);const r=document.createRange();r.selectNode(t);const o=window.getSelection();o.removeAllRanges(),o.addRange(r);try{document.execCommand("copy")}finally{document.body.removeChild(t)}}function Em(e){navigator.clipboard?navigator.clipboard.writeText(e).catch(()=>{ea(e)}):ea(e)}function Lm(e){var t;return!!((t=window.getSelection())!=null&&t.toString()||e&&(e.selectionEnd||0)-(e.selectionStart||0)>0)}const Tm=(e,t)=>{const r=t.unstable_ignoreValueFormatterDuringExport,o=(typeof r=="object"?r==null?void 0:r.clipboardExport:r)||!1,l=t.clipboardCopyCellDelimiter,n=a.useCallback(i=>{if(!((i.ctrlKey||i.metaKey)&&i.key==="c")||Lm(i.target))return;let s="";if(e.current.getSelectedRows().size>0)s=e.current.getDataAsCsv({includeHeaders:!1,delimiter:l});else{const d=Ze(e);if(d){const c=e.current.getCellParams(d.id,d.field);s=du(c,{delimiterCharacter:l,ignoreValueFormatter:o})}}s=e.current.unstable_applyPipeProcessors("clipboardCopy",s),s&&(Em(s),e.current.publishEvent("clipboardCopy",s))},[e,o,l]);Ii(e,e.current.rootElementRef,"keydown",n),Ee(e,"clipboardCopy",t.onClipboardCopy)},Dm=e=>m({},e,{columnMenu:{open:!1}}),$m=e=>{const t=je(e,"useGridColumnMenu"),r=a.useCallback(i=>{e.current.setState(u=>u.columnMenu.open&&u.columnMenu.field===i?u:(t.debug("Opening Column Menu"),m({},u,{columnMenu:{open:!0,field:i}})))&&(e.current.hidePreferences(),e.current.forceUpdate())},[e,t]),o=a.useCallback(()=>{const i=so(e.current.state);if(i.field){const u=Vt(e),d=at(e),c=Pt(e);let p=i.field;if(u[p]||(p=c[0]),d[p]===!1){const f=c.filter(g=>g===p?!0:d[g]!==!1),b=f.indexOf(p);p=f[b+1]||f[b-1]}e.current.setColumnHeaderFocus(p)}e.current.setState(u=>!u.columnMenu.open&&u.columnMenu.field===void 0?u:(t.debug("Hiding Column Menu"),m({},u,{columnMenu:m({},u.columnMenu,{open:!1,field:void 0})})))&&e.current.forceUpdate()},[e,t]),l=a.useCallback(i=>{t.debug("Toggle Column Menu");const s=so(e.current.state);!s.open||s.field!==i?r(i):o()},[e,t,r,o]);me(e,{showColumnMenu:r,hideColumnMenu:o,toggleColumnMenu:l},"public"),re(e,"columnResizeStart",o),re(e,"virtualScrollerWheel",e.current.hideColumnMenu),re(e,"virtualScrollerTouchMove",e.current.hideColumnMenu)},pu=["maxWidth","minWidth","width","flex"];function Am({initialFreeSpace:e,totalFlexUnits:t,flexColumns:r}){const o=new Set(r.map(i=>i.field)),l={all:{},frozenFields:[],freeze:i=>{const s=l.all[i];s&&s.frozen!==!0&&(l.all[i].frozen=!0,l.frozenFields.push(i))}};function n(){if(l.frozenFields.length===o.size)return;const i={min:{},max:{}};let s=e,u=t,d=0;l.frozenFields.forEach(c=>{s-=l.all[c].computedWidth,u-=l.all[c].flex});for(let c=0;cp.maxWidth&&(d+=p.maxWidth-b,b=p.maxWidth,i.max[p.field]=!0),l.all[p.field]={frozen:!1,computedWidth:b,flex:p.flex}}d<0?Object.keys(i.max).forEach(c=>{l.freeze(c)}):d>0?Object.keys(i.min).forEach(c=>{l.freeze(c)}):r.forEach(({field:c})=>{l.freeze(c)}),n()}return n(),l.all}const cl=(e,t)=>{const r={};let o=0,l=0;const n=[];e.orderedFields.forEach(s=>{const u=m({},e.lookup[s]);if(e.columnVisibilityModel[s]===!1)u.computedWidth=0;else{let d;u.flex&&u.flex>0?(o+=u.flex,d=0,n.push(u)):d=cr(u.width||it.width,u.minWidth||it.minWidth,u.maxWidth||it.maxWidth),l+=d,u.computedWidth=d}r[s]=u});const i=Math.max(t-l,0);if(o>0&&t>0){const s=Am({initialFreeSpace:i,totalFlexUnits:o,flexColumns:n});Object.keys(s).forEach(u=>{r[u].computedWidth=s[u].computedWidth})}return m({},e,{lookup:r})},Rm=(e,t)=>{if(!t)return e;const{orderedFields:r=[],dimensions:o={}}=t,l=Object.keys(o);if(l.length===0&&r.length===0)return e;const n={},i=[];for(let c=0;c!n[c])],u=m({},e.lookup);for(let c=0;c{f[b]=g===-1?1/0:g}),u[p]=f}return m({},e,{orderedFields:s,lookup:u})};function ta(e,t){let r=e[an];return t&&e[t]&&(r=e[t]),r}const rr=({apiRef:e,columnsToUpsert:t,initialState:r,columnTypes:o,columnVisibilityModel:l=at(e),keepOnlyColumnsToUpsert:n=!1})=>{var i,s,u;const d=!e.current.state.columns;let c;if(d)c={orderedFields:[],lookup:{},columnVisibilityModel:l};else{const g=Bt(e.current.state);c={orderedFields:n?[]:[...g.orderedFields],lookup:m({},g.lookup),columnVisibilityModel:l}}let p={};n&&!d&&(p=Object.keys(c.lookup).reduce((g,h)=>m({},g,{[h]:!1}),{})),t.forEach(g=>{const{field:h}=g;p[h]=!0;let x=c.lookup[h];x==null?(x=m({},ta(o,g.type),{field:h,hasBeenResized:!1}),c.orderedFields.push(h)):n&&c.orderedFields.push(h),x&&x.type!==g.type&&(x=m({},ta(o,g.type),{field:h}));let S=x.hasBeenResized;pu.forEach(C=>{g[C]!==void 0&&(S=!0,g[C]===-1&&(g[C]=1/0))}),c.lookup[h]=m({},x,g,{hasBeenResized:S})}),n&&!d&&Object.keys(c.lookup).forEach(g=>{p[g]||delete c.lookup[g]});const f=e.current.unstable_applyPipeProcessors("hydrateColumns",c),b=Rm(f,r);return cl(b,(i=(s=(u=e.current).getRootDimensions)==null||(s=s.call(u))==null?void 0:s.viewportInnerSize.width)!=null?i:0)},ra=e=>t=>m({},t,{columns:e});function dl({firstColumnToRender:e,apiRef:t,firstRowToRender:r,lastRowToRender:o,visibleRows:l}){let n=e;for(let i=r;i{var o,l,n,i;const s=rr({apiRef:r,columnTypes:fu,columnsToUpsert:t.columns,initialState:(o=t.initialState)==null?void 0:o.columns,columnVisibilityModel:(l=(n=t.columnVisibilityModel)!=null?n:(i=t.initialState)==null||(i=i.columns)==null?void 0:i.columnVisibilityModel)!=null?l:{},keepOnlyColumnsToUpsert:!0});return m({},e,{columns:s})};function Vm(e,t){var r,o;const l=je(e,"useGridColumns"),n=fu,i=a.useRef(t.columns),s=a.useRef(n);e.current.registerControlState({stateId:"visibleColumns",propModel:t.columnVisibilityModel,propOnChange:t.onColumnVisibilityModelChange,stateSelector:at,changeEvent:"columnVisibilityModelChange"});const u=a.useCallback(w=>{l.debug("Updating columns state."),e.current.setState(ra(w)),e.current.forceUpdate(),e.current.publishEvent("columnsChange",w.orderedFields)},[l,e]),d=a.useCallback(w=>Vt(e)[w],[e]),c=a.useCallback(()=>ft(e),[e]),p=a.useCallback(()=>He(e),[e]),f=a.useCallback((w,O=!0)=>(O?He(e):ft(e)).findIndex(D=>D.field===w),[e]),b=a.useCallback(w=>{const O=f(w);return qt(e)[O]},[e,f]),g=a.useCallback(w=>{at(e)!==w&&(e.current.setState(M=>m({},M,{columns:rr({apiRef:e,columnTypes:n,columnsToUpsert:[],initialState:void 0,columnVisibilityModel:w,keepOnlyColumnsToUpsert:!1})})),e.current.forceUpdate())},[e,n]),h=a.useCallback(w=>{const O=rr({apiRef:e,columnTypes:n,columnsToUpsert:w,initialState:void 0,keepOnlyColumnsToUpsert:!1});u(O)},[e,u,n]),x=a.useCallback((w,O)=>{var M;const D=at(e),I=(M=D[w])!=null?M:!0;if(O!==I){const $=m({},D,{[w]:O});e.current.setColumnVisibilityModel($)}},[e]),S=a.useCallback(w=>Pt(e).findIndex(M=>M===w),[e]),C=a.useCallback((w,O)=>{const M=Pt(e),D=S(w);if(D===O)return;l.debug(`Moving column ${w} to index ${O}`);const I=[...M],$=I.splice(D,1)[0];I.splice(O,0,$),u(m({},Bt(e.current.state),{orderedFields:I}));const N={column:e.current.getColumn(w),targetIndex:e.current.getColumnIndexRelativeToVisibleColumns(w),oldIndex:D};e.current.publishEvent("columnIndexChange",N)},[e,l,u,S]),E=a.useCallback((w,O)=>{var M,D;l.debug(`Updating column ${w} width to ${O}`);const I=Bt(e.current.state),$=I.lookup[w],N=m({},$,{width:O,hasBeenResized:!0});u(cl(m({},I,{lookup:m({},I.lookup,{[w]:N})}),(M=(D=e.current.getRootDimensions())==null?void 0:D.viewportInnerSize.width)!=null?M:0)),e.current.publishEvent("columnWidthChange",{element:e.current.getColumnHeaderElement(w),colDef:N,width:O})},[e,l,u]),T={getColumn:d,getAllColumns:c,getColumnIndex:f,getColumnPosition:b,getVisibleColumns:p,getColumnIndexRelativeToVisibleColumns:S,updateColumns:h,setColumnVisibilityModel:g,setColumnVisibility:x,setColumnWidth:E},_={setColumnIndex:C};me(e,T,"public"),me(e,_,t.signature===gt.DataGrid?"private":"public");const F=a.useCallback((w,O)=>{var M,D;const I={},$=at(e);(!O.exportOnlyDirtyModels||t.columnVisibilityModel!=null||Object.keys((M=(D=t.initialState)==null||(D=D.columns)==null?void 0:D.columnVisibilityModel)!=null?M:{}).length>0||Object.keys($).length>0)&&(I.columnVisibilityModel=$),I.orderedFields=Pt(e);const j=ft(e),G={};return j.forEach(U=>{if(U.hasBeenResized){const K={};pu.forEach(J=>{let ee=U[J];ee===1/0&&(ee=-1),K[J]=ee}),G[U.field]=K}}),Object.keys(G).length>0&&(I.dimensions=G),m({},w,{columns:I})},[e,t.columnVisibilityModel,(r=t.initialState)==null?void 0:r.columns]),L=a.useCallback((w,O)=>{var M;const D=(M=O.stateToRestore.columns)==null?void 0:M.columnVisibilityModel,I=O.stateToRestore.columns;if(D==null&&I==null)return w;const $=rr({apiRef:e,columnTypes:n,columnsToUpsert:[],initialState:I,columnVisibilityModel:D,keepOnlyColumnsToUpsert:!1});return e.current.setState(ra($)),I!=null&&e.current.publishEvent("columnsChange",$.orderedFields),w},[e,n]),k=a.useCallback((w,O)=>{if(O===st.columns){var M;const D=t.slots.columnsPanel;return v.jsx(D,m({},(M=t.slotProps)==null?void 0:M.columnsPanel))}return w},[t.slots.columnsPanel,(o=t.slotProps)==null?void 0:o.columnsPanel]),H=a.useCallback(w=>t.disableColumnSelector?w:[...w,"columnMenuColumnsItem"],[t.disableColumnSelector]);Ae(e,"columnMenu",H),Ae(e,"exportState",F),Ae(e,"restoreState",L),Ae(e,"preferencePanel",k);const A=a.useRef(null);re(e,"viewportInnerSizeChange",w=>{A.current!==w.width&&(A.current=w.width,u(cl(Bt(e.current.state),w.width)))});const R=a.useCallback(()=>{l.info("Columns pipe processing have changed, regenerating the columns");const w=rr({apiRef:e,columnTypes:n,columnsToUpsert:[],initialState:void 0,keepOnlyColumnsToUpsert:!1});u(w)},[e,l,u,n]);ln(e,"hydrateColumns",R);const y=a.useRef(!0);a.useEffect(()=>{if(y.current){y.current=!1;return}if(l.info(`GridColumns have changed, new length ${t.columns.length}`),i.current===t.columns&&s.current===n)return;const w=rr({apiRef:e,columnTypes:n,initialState:void 0,columnsToUpsert:t.columns,keepOnlyColumnsToUpsert:!0});i.current=t.columns,s.current=n,u(w)},[l,e,u,t.columns,n]),a.useEffect(()=>{t.columnVisibilityModel!==void 0&&e.current.setColumnVisibilityModel(t.columnVisibilityModel)},[e,l,t.columnVisibilityModel])}const Nm=.7,Gm=1.3,gu={compact:Nm,comfortable:Gm,standard:1},zm=(e,t)=>m({},e,{density:{value:t.density,factor:gu[t.density]}}),jm=(e,t)=>{const r=je(e,"useDensity"),o=a.useCallback(n=>{r.debug(`Set grid density to ${n}`),e.current.setState(i=>{const s=yo(i),u={value:n,factor:gu[n]};return It(s,u)?i:m({},i,{density:u})}),e.current.forceUpdate()},[r,e]);a.useEffect(()=>{e.current.setDensity(t.density)},[e,t.density]),me(e,{setDensity:o},"public")};function Bm(e,t="csv",r=document.title||"untitled"){const o=`${r}.${t}`;if("download"in HTMLAnchorElement.prototype){const l=URL.createObjectURL(e),n=document.createElement("a");n.href=l,n.download=o,n.click(),setTimeout(()=>{URL.revokeObjectURL(l)});return}throw new Error("MUI: exportAs not supported")}const mu=({apiRef:e,options:t})=>{const r=ft(e);return t.fields?t.fields.reduce((l,n)=>{const i=r.find(s=>s.field===n);return i&&l.push(i),l},[]):(t.allColumns?r:He(e)).filter(l=>!l.disableExport)},Um=({apiRef:e})=>{var t,r;const o=Va(e),l=nt(e),n=e.current.getSelectedRows(),i=o.filter(c=>l[c].type!=="footer"),s=gr(e),u=(s==null||(t=s.top)==null?void 0:t.map(c=>c.id))||[],d=(s==null||(r=s.bottom)==null?void 0:r.map(c=>c.id))||[];return i.unshift(...u),i.push(...d),n.size>0?i.filter(c=>n.has(c)):i},qm=(e,t)=>{const r=je(e,"useGridCsvExport"),o=t.unstable_ignoreValueFormatterDuringExport,l=(typeof o=="object"?o==null?void 0:o.csvExport:o)||!1,n=a.useCallback((d={})=>{var c,p,f;r.debug("Get data as CSV");const b=mu({apiRef:e,options:d}),h=((c=d.getRowsToExport)!=null?c:Um)({apiRef:e});return km({columns:b,rowIds:h,delimiterCharacter:d.delimiter||",",includeHeaders:(p=d.includeHeaders)!=null?p:!0,includeColumnGroupsHeaders:(f=d.includeColumnGroupsHeaders)!=null?f:!0,ignoreValueFormatter:l,apiRef:e})},[r,e,l]),i=a.useCallback(d=>{r.debug("Export data as CSV");const c=n(d),p=new Blob([d!=null&&d.utf8WithBom?new Uint8Array([239,187,191]):"",c],{type:"text/csv"});Bm(p,"csv",d==null?void 0:d.fileName)},[r,n]);me(e,{getDataAsCsv:n,exportDataAsCsv:i},"public");const u=a.useCallback((d,c)=>{var p;return(p=c.csvOptions)!=null&&p.disableToolbarButton?d:[...d,{component:v.jsx($s,{options:c.csvOptions}),componentName:"csvExport"}]},[]);Ae(e,"exportMenu",u)},Wm=(e,t)=>{var r,o;const l=m({},ki(t.autoPageSize),(r=t.paginationModel)!=null?r:(o=t.initialState)==null||(o=o.pagination)==null?void 0:o.paginationModel);return Ei(l.pageSize,t.signature),m({},e,{pagination:{paginationModel:l}})},ao=(e,t,r)=>o=>{var l;let n=o.paginationModel;const i=(l=r==null?void 0:r.pageSize)!=null?l:n.pageSize,s=Mi(e,i);r&&((r==null?void 0:r.page)!==n.page||(r==null?void 0:r.pageSize)!==n.pageSize)&&(n=r);const u=mf(n.page,s);return u!==n.page&&(n=m({},n,{page:u})),Ei(n.pageSize,t),{paginationModel:n}},Km=(e,t)=>{var r;const o=je(e,"useGridPagination"),l=Q(e,Ar),n=Q(e,Qt),i=Math.floor(t.rowHeight*n);e.current.registerControlState({stateId:"pagination",propModel:t.paginationModel,propOnChange:t.onPaginationModelChange,stateSelector:ot,changeEvent:"paginationModelChange"});const s=a.useCallback(h=>{const x=ot(e);h!==x.page&&(o.debug(`Setting page to ${h}`),e.current.setPaginationModel({page:h,pageSize:x.pageSize}))},[e,o]),u=a.useCallback(h=>{const x=ot(e);h!==x.pageSize&&(o.debug(`Setting page size to ${h}`),e.current.setPaginationModel({pageSize:h,page:x.page}))},[e,o]),d=a.useCallback(h=>{var x;const S=ot(e);h!==S&&(o.debug("Setting 'paginationModel' to",h),e.current.updateControlState("pagination",ao((x=t.rowCount)!=null?x:l,t.signature,h),"setPaginationModel"),e.current.forceUpdate())},[e,o,t.rowCount,t.signature,l]);me(e,{setPage:s,setPageSize:u,setPaginationModel:d},"public");const p=a.useCallback((h,x)=>{var S;const C=ot(e);return!x.exportOnlyDirtyModels||t.paginationModel!=null||((S=t.initialState)==null||(S=S.pagination)==null?void 0:S.paginationModel)!=null||C.page!==0&&C.pageSize!==gf(t.autoPageSize)?m({},h,{pagination:m({},h.pagination,{paginationModel:C})}):h},[e,t.paginationModel,(r=t.initialState)==null||(r=r.pagination)==null?void 0:r.paginationModel,t.autoPageSize]),f=a.useCallback((h,x)=>{var S,C,E;const T=(S=x.stateToRestore.pagination)!=null&&S.paginationModel?m({},ki(t.autoPageSize),(C=x.stateToRestore.pagination)==null?void 0:C.paginationModel):ot(e);return e.current.updateControlState("pagination",ao((E=t.rowCount)!=null?E:l,t.signature,T),"stateRestorePreProcessing"),h},[e,t.autoPageSize,t.rowCount,t.signature,l]);Ae(e,"exportState",p),Ae(e,"restoreState",f);const b=()=>{var h;const x=ot(e);(h=e.current.virtualScrollerRef)!=null&&h.current&&e.current.scrollToIndexes({rowIndex:x.page*x.pageSize}),e.current.forceUpdate()},g=a.useCallback(()=>{const h=e.current.getRootDimensions();if(!t.autoPageSize||!h)return;const x=Ka(e),S=Math.floor((h.viewportInnerSize.height-x.top-x.bottom)/i);e.current.setPageSize(S)},[e,t.autoPageSize,i]);re(e,"viewportInnerSizeChange",g),re(e,"paginationModelChange",b),a.useEffect(()=>{},[t.rowCount,t.paginationMode]),a.useEffect(()=>{var h;e.current.updateControlState("pagination",ao((h=t.rowCount)!=null?h:l,t.signature,t.paginationModel))},[e,t.paginationModel,t.rowCount,t.paginationMode,l,t.signature]),a.useEffect(()=>{g()},[g])};function Qm(){return new Promise(e=>{requestAnimationFrame(()=>{e()})})}function Zm(e){const t=document.createElement("iframe");return t.style.position="absolute",t.style.width="0px",t.style.height="0px",t.title=e||document.title,t}const Jm=(e,t)=>{const r=je(e,"useGridPrintExport"),o=a.useRef(null),l=a.useRef(null),n=a.useRef({}),i=a.useRef([]);a.useEffect(()=>{o.current=Mr(e.current.rootElementRef.current)},[e]);const s=a.useCallback((g,h,x)=>new Promise(S=>{const C=mu({apiRef:e,options:{fields:g,allColumns:h}}).map(_=>_.field),E=ft(e),T={};E.forEach(_=>{T[_.field]=C.includes(_.field)}),x&&(T[Jt.field]=!0),e.current.setColumnVisibilityModel(T),S()}),[e]),u=a.useCallback(g=>{const x=g({apiRef:e}).map(S=>e.current.getRow(S));e.current.setRows(x)},[e]),d=a.useCallback((g,h)=>{var x,S;const C=m({copyStyles:!0,hideToolbar:!1,hideFooter:!1,includeCheckboxes:!1},h),E=g.contentDocument;if(!E)return;const T=dr(e.current.state),_=e.current.rootElementRef.current,F=_.cloneNode(!0),L=F.querySelector(`.${V.main}`);L.style.overflow="visible",F.style.contain="size";const H=F.querySelector(`.${V.columnHeaders}`).querySelector(`.${V.columnHeadersInner}`);H.style.width="100%";let A=((x=_.querySelector(`.${V.toolbarContainer}`))==null?void 0:x.offsetHeight)||0,P=((S=_.querySelector(`.${V.footerContainer}`))==null?void 0:S.offsetHeight)||0;if(C.hideToolbar){var R;(R=F.querySelector(`.${V.toolbarContainer}`))==null||R.remove(),A=0}if(C.hideFooter){var y;(y=F.querySelector(`.${V.footerContainer}`))==null||y.remove(),P=0}const w=T.currentPageTotalHeight+sn(e,t.columnHeaderHeight)+A+P;if(F.style.height=`${w}px`,F.style.boxSizing="content-box",h!=null&&h.getRowsToExport){const I=F.querySelector(`.${V.footerContainer}`);I.style.position="absolute",I.style.width="100%",I.style.top=`${w-P}px`}const O=document.createElement("div");O.appendChild(F),E.body.innerHTML=O.innerHTML;const M=typeof C.pageStyle=="function"?C.pageStyle():C.pageStyle;if(typeof M=="string"){const I=E.createElement("style");I.appendChild(E.createTextNode(M)),E.head.appendChild(I)}C.bodyClassName&&E.body.classList.add(...C.bodyClassName.split(" "));const D=[];if(C.copyStyles){const I=_.getRootNode(),N=(I.constructor.name==="ShadowRoot"?I:o.current).querySelectorAll("style, link[rel='stylesheet']");for(let j=0;j{U.addEventListener("load",()=>K())})),E.head.appendChild(U)}}}Promise.all(D).then(()=>{g.contentWindow.print()})},[e,o,t.columnHeaderHeight]),c=a.useCallback(g=>{var h;o.current.body.removeChild(g),e.current.restoreState(l.current||{}),(h=l.current)!=null&&(h=h.columns)!=null&&h.columnVisibilityModel||e.current.setColumnVisibilityModel(n.current),e.current.unstable_setVirtualization(!0),e.current.setRows(i.current),l.current=null,n.current={},i.current=[]},[e]),f={exportDataAsPrint:a.useCallback(async g=>{if(r.debug("Export data as Print"),!e.current.rootElementRef.current)throw new Error("MUI: No grid root element available.");l.current=e.current.exportState(),n.current=at(e);const h=Ot(e);if(i.current=or(e).map(S=>h[S]),t.pagination){const S=El(e),C={page:0,pageSize:S};e.current.updateControlState("pagination",ao(S,"DataGridPro",C)),e.current.forceUpdate()}await s(g==null?void 0:g.fields,g==null?void 0:g.allColumns,g==null?void 0:g.includeCheckboxes),g!=null&&g.getRowsToExport&&u(g.getRowsToExport),e.current.unstable_setVirtualization(!1),await Qm();const x=Zm(g==null?void 0:g.fileName);x.onload=()=>{d(x,g),x.contentWindow.matchMedia("print").addEventListener("change",C=>{C.matches===!1&&c(x)})},o.current.body.appendChild(x)},[t,r,e,d,c,s,u])};me(e,f,"public");const b=a.useCallback((g,h)=>{var x;return(x=h.printOptions)!=null&&x.disableToolbarButton?g:[...g,{component:v.jsx(As,{options:h.printOptions}),componentName:"printExport"}]},[]);Ae(e,"exportMenu",b)},Ym=(e,t,r)=>{var o,l,n;const i=(o=(l=t.filterModel)!=null?l:(n=t.initialState)==null||(n=n.filter)==null?void 0:n.filterModel)!=null?o:ur();return m({},e,{filter:{filterModel:Ws(i,t.disableMultipleColumnsFiltering,r),filteredRowsLookup:{},filteredDescendantCountLookup:{}},visibleRowsLookup:{}})},Xm=e=>e.filteredRowsLookup;function oa(e,t){return e.current.applyStrategyProcessor("visibleRowsLookupCreation",{tree:t.rows.tree,filteredRowsLookup:t.filter.filteredRowsLookup})}function eb(){return Po(Object.values)}const tb=(e,t)=>{var r,o;const l=je(e,"useGridFilter");e.current.registerControlState({stateId:"filter",propModel:t.filterModel,propOnChange:t.onFilterModelChange,stateSelector:Re,changeEvent:"filterModelChange"});const n=a.useCallback(()=>{e.current.setState(A=>{const P=Re(A,e.current.instanceId),R=t.filterMode==="client"?em(P,e,t.disableEval):null,y=e.current.applyStrategyProcessor("filtering",{isRowMatchingFilters:R,filterModel:P??ur()}),w=m({},A,{filter:m({},A.filter,y)}),O=oa(e,w);return m({},w,{visibleRowsLookup:O})}),e.current.publishEvent("filteredRowsSet")},[e,t.filterMode,t.disableEval]),i=a.useCallback((A,P)=>P==null||P.filterable===!1||t.disableColumnFilter?A:[...A,"columnMenuFilterItem"],[t.disableColumnFilter]),s=a.useCallback(()=>{n(),e.current.forceUpdate()},[e,n]),u=a.useCallback(A=>{const P=Re(e),R=[...P.items],y=R.findIndex(w=>w.id===A.id);y===-1?R.push(A):R[y]=A,e.current.setFilterModel(m({},P,{items:R}),"upsertFilterItem")},[e]),d=a.useCallback(A=>{const P=Re(e),R=[...P.items];A.forEach(y=>{const w=A.findIndex(O=>O.id===y.id);w===-1?R.push(y):R[w]=y}),e.current.setFilterModel(m({},P,{items:A}),"upsertFilterItems")},[e]),c=a.useCallback(A=>{const P=Re(e),R=P.items.filter(y=>y.id!==A.id);R.length!==P.items.length&&e.current.setFilterModel(m({},P,{items:R}),"deleteFilterItem")},[e]),p=a.useCallback((A,P,R)=>{if(l.debug("Displaying filter panel"),A){const y=Re(e),w=y.items.filter(I=>{var $;if(I.value!==void 0)return!(Array.isArray(I.value)&&I.value.length===0);const j=($=e.current.getColumn(I.field).filterOperators)==null?void 0:$.find(U=>U.value===I.operator);return!(typeof(j==null?void 0:j.requiresFilterValue)>"u"?!0:j==null?void 0:j.requiresFilterValue)});let O;const M=w.find(I=>I.field===A),D=e.current.getColumn(A);M?O=w:t.disableMultipleColumnsFiltering?O=[nl({field:A,operator:D.filterOperators[0].value},e)]:O=[...w,nl({field:A,operator:D.filterOperators[0].value},e)],e.current.setFilterModel(m({},y,{items:O}))}e.current.showPreferences(st.filters,P,R)},[e,l,t.disableMultipleColumnsFiltering]),f=a.useCallback(()=>{l.debug("Hiding filter panel"),e.current.hidePreferences()},[e,l]),b=a.useCallback(A=>{const P=Re(e);P.logicOperator!==A&&e.current.setFilterModel(m({},P,{logicOperator:A}),"changeLogicOperator")},[e]),g=a.useCallback(A=>{const P=Re(e);It(P.quickFilterValues,A)||e.current.setFilterModel(m({},P,{quickFilterValues:[...A]}))},[e]),h=a.useCallback((A,P)=>{Re(e)!==A&&(l.debug("Setting filter model"),e.current.updateControlState("filter",Wn(A,t.disableMultipleColumnsFiltering,e),P),e.current.unstable_applyFilters())},[e,l,t.disableMultipleColumnsFiltering]),x={setFilterLogicOperator:b,unstable_applyFilters:s,deleteFilterItem:c,upsertFilterItem:u,upsertFilterItems:d,setFilterModel:h,showFilterPanel:p,hideFilterPanel:f,setQuickFilterValues:g,ignoreDiacritics:t.ignoreDiacritics};me(e,x,"public");const S=a.useCallback((A,P)=>{var R;const y=Re(e);return!P.exportOnlyDirtyModels||t.filterModel!=null||((R=t.initialState)==null||(R=R.filter)==null?void 0:R.filterModel)!=null||!It(y,ur())?m({},A,{filter:{filterModel:y}}):A},[e,t.filterModel,(r=t.initialState)==null||(r=r.filter)==null?void 0:r.filterModel]),C=a.useCallback((A,P)=>{var R;const y=(R=P.stateToRestore.filter)==null?void 0:R.filterModel;return y==null?A:(e.current.updateControlState("filter",Wn(y,t.disableMultipleColumnsFiltering,e),"restoreState"),m({},A,{callbacks:[...A.callbacks,e.current.unstable_applyFilters]}))},[e,t.disableMultipleColumnsFiltering]),E=a.useCallback((A,P)=>{if(P===st.filters){var R;const y=t.slots.filterPanel;return v.jsx(y,m({},(R=t.slotProps)==null?void 0:R.filterPanel))}return A},[t.slots.filterPanel,(o=t.slotProps)==null?void 0:o.filterPanel]),{getRowId:T}=t,_=xl(eb),F=a.useCallback(A=>{if(t.filterMode!=="client"||!A.isRowMatchingFilters)return{filteredRowsLookup:{},filteredDescendantCountLookup:{}};const P=Ot(e),R={},{isRowMatchingFilters:y}=A,w={},O={passingFilterItems:null,passingQuickFilterValues:null},M=_.current(e.current.state.rows.dataRowIdToModelLookup);for(let $=0;${l.debug("onColUpdated - GridColumns changed, applying filters");const A=Re(e),P=Ia(e),R=A.items.filter(y=>y.field&&P[y.field]);R.length{A==="filtering"&&e.current.unstable_applyFilters()},[e]),H=a.useCallback(()=>{e.current.setState(A=>m({},A,{visibleRowsLookup:oa(e,A)})),e.current.forceUpdate()},[e]);re(e,"rowsSet",n),re(e,"columnsChange",L),re(e,"activeStrategyProcessorChange",k),re(e,"rowExpansionChange",H),re(e,"columnVisibilityModelChange",()=>{const A=Re(e);A.quickFilterValues&&A.quickFilterExcludeHiddenColumns&&e.current.unstable_applyFilters()}),mr(()=>{e.current.unstable_applyFilters()}),ze(()=>{t.filterModel!==void 0&&e.current.setFilterModel(t.filterModel)},[e,l,t.filterModel])},rb=e=>m({},e,{focus:{cell:null,columnHeader:null,columnHeaderFilter:null,columnGroupHeader:null},tabIndex:{cell:null,columnHeader:null,columnHeaderFilter:null,columnGroupHeader:null}}),ob=(e,t)=>{const r=je(e,"useGridFocus"),o=a.useRef(null),l=a.useCallback((L,k)=>{L&&e.current.getRow(L.id)&&e.current.publishEvent("cellFocusOut",e.current.getCellParams(L.id,L.field),k)},[e]),n=a.useCallback((L,k)=>{const H=Ze(e);(H==null?void 0:H.id)===L&&(H==null?void 0:H.field)===k||(e.current.setState(A=>(r.debug(`Focusing on cell with id=${L} and field=${k}`),m({},A,{tabIndex:{cell:{id:L,field:k},columnHeader:null,columnHeaderFilter:null,columnGroupHeader:null},focus:{cell:{id:L,field:k},columnHeader:null,columnHeaderFilter:null,columnGroupHeader:null}}))),e.current.forceUpdate(),e.current.getRow(L)&&(H&&l(H,{}),e.current.publishEvent("cellFocusIn",e.current.getCellParams(L,k))))},[e,r,l]),i=a.useCallback((L,k={})=>{const H=Ze(e);l(H,k),e.current.setState(A=>(r.debug(`Focusing on column header with colIndex=${L}`),m({},A,{tabIndex:{columnHeader:{field:L},columnHeaderFilter:null,cell:null,columnGroupHeader:null},focus:{columnHeader:{field:L},columnHeaderFilter:null,cell:null,columnGroupHeader:null}}))),e.current.forceUpdate()},[e,r,l]),s=a.useCallback((L,k={})=>{const H=Ze(e);l(H,k),e.current.setState(A=>(r.debug(`Focusing on column header filter with colIndex=${L}`),m({},A,{tabIndex:{columnHeader:null,columnHeaderFilter:{field:L},cell:null,columnGroupHeader:null},focus:{columnHeader:null,columnHeaderFilter:{field:L},cell:null,columnGroupHeader:null}}))),e.current.forceUpdate()},[e,r,l]),u=a.useCallback((L,k,H={})=>{const A=Ze(e);A&&e.current.publishEvent("cellFocusOut",e.current.getCellParams(A.id,A.field),H),e.current.setState(P=>m({},P,{tabIndex:{columnGroupHeader:{field:L,depth:k},columnHeader:null,columnHeaderFilter:null,cell:null},focus:{columnGroupHeader:{field:L,depth:k},columnHeader:null,columnHeaderFilter:null,cell:null}})),e.current.forceUpdate()},[e]),d=a.useCallback(()=>Pr(e),[e]),c=a.useCallback((L,k,H)=>{let A=e.current.getColumnIndex(k);const P=He(e),R=go(e,{pagination:t.pagination,paginationMode:t.paginationMode}),y=gr(e),w=[].concat(y.top||[],R.rows,y.bottom||[]);let O=w.findIndex($=>$.id===L);H==="right"?A+=1:H==="left"?A-=1:O+=1,A>=P.length?(O+=1,O=0&&(A=P.length-1)),O=cr(O,0,w.length-1);const M=w[O];if(!M)return;const D=e.current.unstable_getCellColSpanInfo(M.id,A);D&&D.spannedByColSpan&&(H==="left"||H==="below"?A=D.leftVisibleCellIndex:H==="right"&&(A=D.rightVisibleCellIndex)),A=cr(A,0,P.length-1);const I=P[A];e.current.setCellFocus(M.id,I.field)},[e,t.pagination,t.paginationMode]),p=a.useCallback(({id:L,field:k})=>{e.current.setCellFocus(L,k)},[e]),f=a.useCallback((L,k)=>{k.key==="Enter"||k.key==="Tab"||k.key==="Shift"||fo(k.key)||e.current.setCellFocus(L.id,L.field)},[e]),b=a.useCallback(({field:L},k)=>{k.target===k.currentTarget&&e.current.setColumnHeaderFocus(L,k)},[e]),g=a.useCallback(({fields:L,depth:k},H)=>{if(H.target!==H.currentTarget)return;const A=Pr(e);A!==null&&A.depth===k&&L.includes(A.field)||e.current.setColumnGroupHeaderFocus(L[0],k,H)},[e]),h=a.useCallback((L,k)=>{var H;(H=k.relatedTarget)!=null&&H.className.includes(V.columnHeader)||(r.debug("Clearing focus"),e.current.setState(A=>m({},A,{focus:{cell:null,columnHeader:null,columnHeaderFilter:null,columnGroupHeader:null}})))},[r,e]),x=a.useCallback(L=>{o.current=L},[]),S=a.useCallback(L=>{const k=o.current;o.current=null;const H=Ze(e);if(!e.current.unstable_applyPipeProcessors("canUpdateFocus",!0,{event:L,cell:k}))return;if(!H){k&&e.current.setCellFocus(k.id,k.field);return}if((k==null?void 0:k.id)===H.id&&(k==null?void 0:k.field)===H.field)return;const P=e.current.getCellElement(H.id,H.field);P!=null&&P.contains(L.target)||(k?e.current.setCellFocus(k.id,k.field):(e.current.setState(R=>m({},R,{focus:{cell:null,columnHeader:null,columnHeaderFilter:null,columnGroupHeader:null}})),e.current.forceUpdate(),l(H,L)))},[e,l]),C=a.useCallback(L=>{if(L.cellMode==="view")return;const k=Ze(e);((k==null?void 0:k.id)!==L.id||(k==null?void 0:k.field)!==L.field)&&e.current.setCellFocus(L.id,L.field)},[e]),E=a.useCallback(()=>{const L=Ze(e);L&&!e.current.getRow(L.id)&&e.current.setState(k=>m({},k,{focus:{cell:null,columnHeader:null,columnHeaderFilter:null,columnGroupHeader:null}}))},[e]),T=pt(()=>{const L=Ze(e);if(!L)return;const k=go(e,{pagination:t.pagination,paginationMode:t.paginationMode});if(k.rows.find(P=>P.id===L.id))return;const A=He(e);e.current.setState(P=>m({},P,{tabIndex:{cell:{id:k.rows[0].id,field:A[0].field},columnGroupHeader:null,columnHeader:null,columnHeaderFilter:null}}))}),_={setCellFocus:n,setColumnHeaderFocus:i,setColumnHeaderFilterFocus:s},F={moveFocusToRelativeCell:c,setColumnGroupHeaderFocus:u,getColumnGroupHeaderFocus:d};me(e,_,"public"),me(e,F,"private"),a.useEffect(()=>{const L=Mr(e.current.rootElementRef.current);return L.addEventListener("mouseup",S),()=>{L.removeEventListener("mouseup",S)}},[e,S]),re(e,"columnHeaderBlur",h),re(e,"cellDoubleClick",p),re(e,"cellMouseDown",x),re(e,"cellKeyDown",f),re(e,"cellModeChange",C),re(e,"columnHeaderFocus",b),re(e,"columnGroupHeaderFocus",g),re(e,"rowsSet",E),re(e,"paginationModelChange",T)};function lb(e,t){const r=gr(e)||{};return[...r.top||[],...t,...r.bottom||[]]}const _o=({currentColIndex:e,firstColIndex:t,lastColIndex:r,direction:o})=>{if(o==="rtl"){if(et)return e-1;return null},Vo=({currentColIndex:e,firstColIndex:t,lastColIndex:r,direction:o})=>{if(o==="rtl"){if(e>t)return e-1}else if(o==="ltr"&&e{const r=je(e,"useGridKeyboardNavigation"),o=Zt(e,t).rows,l=kr(),n=a.useMemo(()=>lb(e,o),[e,o]),i=t.signature!=="DataGrid"&&t.unstable_headerFilters,s=a.useCallback((S,C,E="left")=>{const T=Mt(e),_=e.current.unstable_getCellColSpanInfo(C,S);_&&_.spannedByColSpan&&(E==="left"?S=_.leftVisibleCellIndex:E==="right"&&(S=_.rightVisibleCellIndex));const F=T.findIndex(k=>k.id===C);r.debug(`Navigating to cell row ${F}, col ${S}`),e.current.scrollToIndexes({colIndex:S,rowIndex:F});const L=e.current.getVisibleColumns()[S].field;e.current.setCellFocus(C,L)},[e,r]),u=a.useCallback((S,C)=>{r.debug(`Navigating to header col ${S}`),e.current.scrollToIndexes({colIndex:S});const E=e.current.getVisibleColumns()[S].field;e.current.setColumnHeaderFocus(E,C)},[e,r]),d=a.useCallback((S,C)=>{r.debug(`Navigating to header filter col ${S}`),e.current.scrollToIndexes({colIndex:S});const E=e.current.getVisibleColumns()[S].field;e.current.setColumnHeaderFilterFocus(E,C)},[e,r]),c=a.useCallback((S,C,E)=>{r.debug(`Navigating to header col ${S}`),e.current.scrollToIndexes({colIndex:S});const{field:T}=e.current.getVisibleColumns()[S];e.current.setColumnGroupHeaderFocus(T,C,E)},[e,r]),p=a.useCallback(S=>{var C;return(C=n[S])==null?void 0:C.id},[n]),f=a.useCallback((S,C)=>{const E=C.currentTarget.querySelector(`.${V.columnHeaderTitleContainerContent}`);if(!!E&&E.contains(C.target)&&S.field!==Jt.field||!e.current.getRootDimensions())return;const F=e.current.getViewportPageSize(),L=S.field?e.current.getColumnIndex(S.field):0,k=n.length>0?0:null,H=n.length-1,A=0,P=He(e).length-1,R=fr(e);let y=!0;switch(C.key){case"ArrowDown":{k!==null&&(i?d(L,C):s(L,p(k)));break}case"ArrowRight":{const w=Vo({currentColIndex:L,firstColIndex:A,lastColIndex:P,direction:l.direction});w!==null&&u(w,C);break}case"ArrowLeft":{const w=_o({currentColIndex:L,firstColIndex:A,lastColIndex:P,direction:l.direction});w!==null&&u(w,C);break}case"ArrowUp":{R>0&&c(L,R-1,C);break}case"PageDown":{k!==null&&H!==null&&s(L,p(Math.min(k+F,H)));break}case"Home":{u(A,C);break}case"End":{u(P,C);break}case"Enter":{(C.ctrlKey||C.metaKey)&&e.current.toggleColumnMenu(S.field);break}case" ":break;default:y=!1}y&&C.preventDefault()},[e,n.length,i,d,s,p,l.direction,u,c]),b=a.useCallback((S,C)=>{if(!e.current.getRootDimensions())return;const T=_i(e)===S.field,_=Vi(e)===S.field;if(T||_||!fo(C.key))return;const F=e.current.getViewportPageSize(),L=S.field?e.current.getColumnIndex(S.field):0,k=0,H=n.length-1,A=0,P=He(e).length-1;let R=!0;switch(C.key){case"ArrowDown":{const y=p(k);y!=null&&s(L,y);break}case"ArrowRight":{const y=Vo({currentColIndex:L,firstColIndex:A,lastColIndex:P,direction:l.direction});y!==null&&d(y,C);break}case"ArrowLeft":{const y=_o({currentColIndex:L,firstColIndex:A,lastColIndex:P,direction:l.direction});y!==null?d(y,C):e.current.setColumnHeaderFilterFocus(S.field,C);break}case"ArrowUp":{u(L,C);break}case"PageDown":{H!==null&&s(L,p(Math.min(k+F,H)));break}case"Home":{d(A,C);break}case"End":{d(P,C);break}case" ":break;default:R=!1}R&&C.preventDefault()},[e,n.length,d,l.direction,u,s,p]),g=a.useCallback((S,C)=>{if(!e.current.getRootDimensions())return;const T=Pr(e);if(T===null)return;const{field:_,depth:F}=T,{fields:L,depth:k,maxDepth:H}=S,A=e.current.getViewportPageSize(),P=e.current.getColumnIndex(_),R=_?e.current.getColumnIndex(_):0,y=0,w=n.length-1,O=0,M=He(e).length-1;let D=!0;switch(C.key){case"ArrowDown":{k===H-1?u(P,C):c(P,F+1,C);break}case"ArrowUp":{k>0&&c(P,F-1,C);break}case"ArrowRight":{const I=L.length-L.indexOf(_)-1;P+I+1<=M&&c(P+I+1,F,C);break}case"ArrowLeft":{const I=L.indexOf(_);P-I-1>=O&&c(P-I-1,F,C);break}case"PageDown":{w!==null&&s(R,p(Math.min(y+A,w)));break}case"Home":{c(O,F,C);break}case"End":{c(M,F,C);break}case" ":break;default:D=!1}D&&C.preventDefault()},[e,n.length,u,c,s,p]),h=a.useCallback((S,C)=>{if(_r(C))return;const E=e.current.getCellParams(S.id,S.field);if(E.cellMode===ye.Edit||!fo(C.key)||!e.current.unstable_applyPipeProcessors("canUpdateFocus",!0,{event:C,cell:E}))return;const _=e.current.getRootDimensions();if(n.length===0||!_)return;const F=l.direction,L=e.current.getViewportPageSize(),k=S.field?e.current.getColumnIndex(S.field):0,H=n.findIndex(O=>O.id===S.id),A=0,P=n.length-1,R=0,y=He(e).length-1;let w=!0;switch(C.key){case"ArrowDown":{HA?s(k,p(H-1)):i?d(k,C):u(k,C);break}case"ArrowRight":{const O=Vo({currentColIndex:k,firstColIndex:R,lastColIndex:y,direction:F});O!==null&&s(O,p(H),F==="rtl"?"left":"right");break}case"ArrowLeft":{const O=_o({currentColIndex:k,firstColIndex:R,lastColIndex:y,direction:F});O!==null&&s(O,p(H),F==="rtl"?"right":"left");break}case"Tab":{C.shiftKey&&k>R?s(k-1,p(H),"left"):!C.shiftKey&&k=A?s(k,p(O)):u(k,C);break}case"Home":{C.ctrlKey||C.metaKey||C.shiftKey?s(R,p(A)):s(R,p(H));break}case"End":{C.ctrlKey||C.metaKey||C.shiftKey?s(y,p(P)):s(y,p(H));break}default:w=!1}w&&C.preventDefault()},[e,n,l.direction,s,p,i,d,u]),x=a.useCallback((S,{event:C})=>C.key===" "?!1:S,[]);Ae(e,"canStartEditing",x),re(e,"columnHeaderKeyDown",f),re(e,"headerFilterKeyDown",b),re(e,"columnGroupHeaderKeyDown",g),re(e,"cellKeyDown",h)},ab=(e,t)=>{var r,o;return m({},e,{preferencePanel:(r=(o=t.initialState)==null?void 0:o.preferencePanel)!=null?r:{open:!1}})},ib=(e,t)=>{var r;const o=je(e,"useGridPreferencesPanel"),l=a.useRef(),n=a.useRef(),i=a.useCallback(()=>{o.debug("Hiding Preferences Panel");const f=At(e.current.state);f.openedPanelValue&&e.current.publishEvent("preferencePanelClose",{openedPanelValue:f.openedPanelValue}),e.current.setState(b=>m({},b,{preferencePanel:{open:!1}})),e.current.forceUpdate()},[e,o]),s=a.useCallback(()=>{n.current=setTimeout(()=>clearTimeout(l.current),0)},[]),u=a.useCallback(()=>{l.current=setTimeout(i,100)},[i]),d=a.useCallback((f,b,g)=>{o.debug("Opening Preferences Panel"),s(),e.current.setState(h=>m({},h,{preferencePanel:m({},h.preferencePanel,{open:!0,openedPanelValue:f,panelId:b,labelId:g})})),e.current.publishEvent("preferencePanelOpen",{openedPanelValue:f}),e.current.forceUpdate()},[o,s,e]);me(e,{showPreferences:d,hidePreferences:u},"public");const c=a.useCallback((f,b)=>{var g;const h=At(e.current.state);return!b.exportOnlyDirtyModels||((g=t.initialState)==null?void 0:g.preferencePanel)!=null||h.open?m({},f,{preferencePanel:h}):f},[e,(r=t.initialState)==null?void 0:r.preferencePanel]),p=a.useCallback((f,b)=>{const g=b.stateToRestore.preferencePanel;return g!=null&&e.current.setState(h=>m({},h,{preferencePanel:g})),f},[e]);Ae(e,"exportState",c),Ae(e,"restoreState",p),a.useEffect(()=>()=>{clearTimeout(l.current),clearTimeout(n.current)},[])},sb=["id","field"],ub=["id","field"],cb=vt(["MUI: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.","To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. ` ...} />`.","For more detail, see http://mui.com/components/data-grid/editing/#server-side-persistence."],"error"),db=(e,t)=>{const[r,o]=a.useState({}),l=a.useRef(r),n=a.useRef({}),{processRowUpdate:i,onProcessRowUpdateError:s,cellModesModel:u,onCellModesModelChange:d}=t,c=w=>(...O)=>{t.editMode===mt.Cell&&w(...O)},p=a.useCallback((w,O)=>{const M=e.current.getCellParams(w,O);if(!e.current.isCellEditable(M))throw new Error(`MUI: The cell with id=${w} and field=${O} is not editable.`)},[e]),f=a.useCallback((w,O,M)=>{if(e.current.getCellMode(w,O)!==M)throw new Error(`MUI: The cell with id=${w} and field=${O} is not in ${M} mode.`)},[e]),b=a.useCallback((w,O)=>{if(!w.isEditable||w.cellMode===ye.Edit)return;const M=m({},w,{reason:wt.cellDoubleClick});e.current.publishEvent("cellEditStart",M,O)},[e]),g=a.useCallback((w,O)=>{if(w.cellMode===ye.View||e.current.getCellMode(w.id,w.field)===ye.View)return;const M=m({},w,{reason:lt.cellFocusOut});e.current.publishEvent("cellEditStop",M,O)},[e]),h=a.useCallback((w,O)=>{if(w.cellMode===ye.Edit){if(O.which===229)return;let M;if(O.key==="Escape"?M=lt.escapeKeyDown:O.key==="Enter"?M=lt.enterKeyDown:O.key==="Tab"&&(M=O.shiftKey?lt.shiftTabKeyDown:lt.tabKeyDown,O.preventDefault()),M){const D=m({},w,{reason:M});e.current.publishEvent("cellEditStop",D,O)}}else if(w.isEditable){let M;if(!e.current.unstable_applyPipeProcessors("canStartEditing",!0,{event:O,cellParams:w,editMode:"cell"}))return;if(si(O)?M=wt.printableKeyDown:(O.ctrlKey||O.metaKey)&&O.key==="v"?M=wt.pasteKeyDown:O.key==="Enter"?M=wt.enterKeyDown:(O.key==="Delete"||O.key==="Backspace")&&(M=wt.deleteKeyDown),M){const I=m({},w,{reason:M,key:O.key});e.current.publishEvent("cellEditStart",I,O)}}},[e]),x=a.useCallback(w=>{const{id:O,field:M,reason:D}=w,I={id:O,field:M};(D===wt.printableKeyDown||D===wt.deleteKeyDown||D===wt.pasteKeyDown)&&(I.deleteValue=!0),e.current.startCellEditMode(I)},[e]),S=a.useCallback(w=>{const{id:O,field:M,reason:D}=w;e.current.runPendingEditCellValueMutation(O,M);let I;D===lt.enterKeyDown?I="below":D===lt.tabKeyDown?I="right":D===lt.shiftTabKeyDown&&(I="left");const $=D==="escapeKeyDown";e.current.stopCellEditMode({id:O,field:M,ignoreModifications:$,cellToFocusAfter:I})},[e]);re(e,"cellDoubleClick",c(b)),re(e,"cellFocusOut",c(g)),re(e,"cellKeyDown",c(h)),re(e,"cellEditStart",c(x)),re(e,"cellEditStop",c(S)),Ee(e,"cellEditStart",t.onCellEditStart),Ee(e,"cellEditStop",t.onCellEditStop);const C=a.useCallback((w,O)=>{const M=We(e.current.state);return M[w]&&M[w][O]?ye.Edit:ye.View},[e]),E=pt(w=>{const O=w!==t.cellModesModel;d&&O&&d(w,{}),!(t.cellModesModel&&O)&&(o(w),l.current=w,e.current.publishEvent("cellModesModelChange",w))}),T=a.useCallback((w,O,M)=>{const D=m({},l.current);if(M!==null)D[w]=m({},D[w],{[O]:m({},M)});else{const I=D[w],$=Z(I,[O].map(Ir));D[w]=$,Object.keys(D[w]).length===0&&delete D[w]}E(D)},[E]),_=a.useCallback((w,O,M)=>{e.current.setState(D=>{const I=m({},D.editRows);return M!==null?I[w]=m({},I[w],{[O]:m({},M)}):(delete I[w][O],Object.keys(I[w]).length===0&&delete I[w]),m({},D,{editRows:I})}),e.current.forceUpdate()},[e]),F=a.useCallback(w=>{const{id:O,field:M}=w,D=Z(w,sb);p(O,M),f(O,M,ye.View),T(O,M,m({mode:ye.Edit},D))},[p,f,T]),L=pt(w=>{const{id:O,field:M,deleteValue:D,initialValue:I}=w;let $=e.current.getCellValue(O,M);(D||I)&&($=D?"":I),_(O,M,{value:$,error:!1,isProcessingProps:!1}),e.current.setCellFocus(O,M)}),k=a.useCallback(w=>{const{id:O,field:M}=w,D=Z(w,ub);f(O,M,ye.Edit),T(O,M,m({mode:ye.View},D))},[f,T]),H=pt(async w=>{const{id:O,field:M,ignoreModifications:D,cellToFocusAfter:I="none"}=w;f(O,M,ye.Edit),e.current.runPendingEditCellValueMutation(O,M);const $=()=>{_(O,M,null),T(O,M,null),I!=="none"&&e.current.moveFocusToRelativeCell(O,M,I)};if(D){$();return}const N=We(e.current.state),{error:j,isProcessingProps:G}=N[O][M];if(j||G){n.current[O][M].mode=ye.Edit,T(O,M,{mode:ye.Edit});return}const U=e.current.getRowWithUpdatedValuesFromCellEditing(O,M);if(i){const K=J=>{n.current[O][M].mode=ye.Edit,T(O,M,{mode:ye.Edit}),s?s(J):cb()};try{const J=e.current.getRow(O);Promise.resolve(i(U,J)).then(ee=>{e.current.updateRows([ee]),$()}).catch(K)}catch(J){K(J)}}else e.current.updateRows([U]),$()}),A=a.useCallback(async w=>{var O;const{id:M,field:D,value:I,debounceMs:$,unstable_skipValueParser:N}=w;p(M,D),f(M,D,ye.Edit);const j=e.current.getColumn(D),G=e.current.getRow(M);let U=I;j.valueParser&&!N&&(U=j.valueParser(I,e.current.getCellParams(M,D)));let K=We(e.current.state),J=m({},K[M][D],{value:U,changeReason:$?"debouncedSetEditCellValue":"setEditCellValue"});if(j.preProcessEditCellProps){const ee=I!==K[M][D].value;J=m({},J,{isProcessingProps:!0}),_(M,D,J),J=await Promise.resolve(j.preProcessEditCellProps({id:M,row:G,props:J,hasChanged:ee}))}return e.current.getCellMode(M,D)===ye.View?!1:(K=We(e.current.state),J=m({},J,{isProcessingProps:!1}),J.value=j.preProcessEditCellProps?K[M][D].value:U,_(M,D,J),K=We(e.current.state),!((O=K[M])!=null&&(O=O[D])!=null&&O.error))},[e,p,f,_]),P=a.useCallback((w,O)=>{const M=e.current.getColumn(O),D=We(e.current.state),I=e.current.getRow(w);if(!D[w]||!D[w][O])return e.current.getRow(w);const{value:$}=D[w][O];return M.valueSetter?M.valueSetter({value:$,row:I}):m({},I,{[O]:$})},[e]),R={getCellMode:C,startCellEditMode:F,stopCellEditMode:k},y={setCellEditingEditCellValue:A,getRowWithUpdatedValuesFromCellEditing:P};me(e,R,"public"),me(e,y,"private"),a.useEffect(()=>{u&&E(u)},[u,E]),ze(()=>{const w=Or(e),O=n.current;n.current=yi(r),Object.entries(r).forEach(([M,D])=>{Object.entries(D).forEach(([I,$])=>{var N,j;const G=((N=O[M])==null||(N=N[I])==null?void 0:N.mode)||ye.View,U=(j=w[M])!=null?j:M;$.mode===ye.Edit&&G===ye.View?L(m({id:U,field:I},$)):$.mode===ye.View&&G===ye.Edit&&H(m({id:U,field:I},$))})})},[e,r,L,H])},pb=["id"],fb=["id"],gb=vt(["MUI: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.","To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. ` ...} />`.","For more detail, see http://mui.com/components/data-grid/editing/#server-side-persistence."],"error"),mb=(e,t)=>{const[r,o]=a.useState({}),l=a.useRef(r),n=a.useRef({}),i=a.useRef(null),s=a.useRef(null),{processRowUpdate:u,onProcessRowUpdateError:d,rowModesModel:c,onRowModesModelChange:p}=t,f=I=>(...$)=>{t.editMode===mt.Row&&I(...$)},b=a.useCallback((I,$)=>{const N=e.current.getCellParams(I,$);if(!e.current.isCellEditable(N))throw new Error(`MUI: The cell with id=${I} and field=${$} is not editable.`)},[e]),g=a.useCallback((I,$)=>{if(e.current.getRowMode(I)!==$)throw new Error(`MUI: The row with id=${I} is not in ${$} mode.`)},[e]),h=a.useCallback((I,$)=>{if(!I.isEditable||e.current.getRowMode(I.id)===ke.Edit)return;const N=e.current.getRowParams(I.id),j=m({},N,{field:I.field,reason:Ft.cellDoubleClick});e.current.publishEvent("rowEditStart",j,$)},[e]),x=a.useCallback(I=>{s.current=I},[]),S=a.useCallback((I,$)=>{I.isEditable&&e.current.getRowMode(I.id)!==ke.View&&(s.current=null,i.current=setTimeout(()=>{var N;if(i.current=null,((N=s.current)==null?void 0:N.id)!==I.id){if(!e.current.getRow(I.id)||e.current.getRowMode(I.id)===ke.View)return;const j=e.current.getRowParams(I.id),G=m({},j,{field:I.field,reason:St.rowFocusOut});e.current.publishEvent("rowEditStop",G,$)}}))},[e]);a.useEffect(()=>()=>{clearTimeout(i.current)},[]);const C=a.useCallback((I,$)=>{if(I.cellMode===ke.Edit){if($.which===229)return;let N;if($.key==="Escape")N=St.escapeKeyDown;else if($.key==="Enter")N=St.enterKeyDown;else if($.key==="Tab"){const j=Lr(e).filter(G=>e.current.getColumn(G).type===zr?!0:e.current.isCellEditable(e.current.getCellParams(I.id,G)));if($.shiftKey?I.field===j[0]&&(N=St.shiftTabKeyDown):I.field===j[j.length-1]&&(N=St.tabKeyDown),$.preventDefault(),!N){const G=j.findIndex(K=>K===I.field),U=j[$.shiftKey?G-1:G+1];e.current.setCellFocus(I.id,U)}}if(N){const j=m({},e.current.getRowParams(I.id),{reason:N,field:I.field});e.current.publishEvent("rowEditStop",j,$)}}else if(I.isEditable){let N;if(!e.current.unstable_applyPipeProcessors("canStartEditing",!0,{event:$,cellParams:I,editMode:"row"}))return;if(si($)||($.ctrlKey||$.metaKey)&&$.key==="v"?N=Ft.printableKeyDown:$.key==="Enter"?N=Ft.enterKeyDown:($.key==="Delete"||$.key==="Backspace")&&(N=Ft.deleteKeyDown),N){const G=e.current.getRowParams(I.id),U=m({},G,{field:I.field,reason:N});e.current.publishEvent("rowEditStart",U,$)}}},[e]),E=a.useCallback(I=>{const{id:$,field:N,reason:j}=I,G={id:$,fieldToFocus:N};(j===Ft.printableKeyDown||j===Ft.deleteKeyDown)&&(G.deleteValue=!!N),e.current.startRowEditMode(G)},[e]),T=a.useCallback(I=>{const{id:$,reason:N,field:j}=I;e.current.runPendingEditCellValueMutation($);let G;N===St.enterKeyDown?G="below":N===St.tabKeyDown?G="right":N===St.shiftTabKeyDown&&(G="left");const U=N==="escapeKeyDown";e.current.stopRowEditMode({id:$,ignoreModifications:U,field:j,cellToFocusAfter:G})},[e]);re(e,"cellDoubleClick",f(h)),re(e,"cellFocusIn",f(x)),re(e,"cellFocusOut",f(S)),re(e,"cellKeyDown",f(C)),re(e,"rowEditStart",f(E)),re(e,"rowEditStop",f(T)),Ee(e,"rowEditStart",t.onRowEditStart),Ee(e,"rowEditStop",t.onRowEditStop);const _=a.useCallback(I=>{if(t.editMode===mt.Cell)return ke.View;const $=We(e.current.state);return $[I]&&Object.keys($[I]).length>0?ke.Edit:ke.View},[e,t.editMode]),F=pt(I=>{const $=I!==t.rowModesModel;p&&$&&p(I,{}),!(t.rowModesModel&&$)&&(o(I),l.current=I,e.current.publishEvent("rowModesModelChange",I))}),L=a.useCallback((I,$)=>{const N=m({},l.current);$!==null?N[I]=m({},$):delete N[I],F(N)},[F]),k=a.useCallback((I,$)=>{e.current.setState(N=>{const j=m({},N.editRows);return $!==null?j[I]=$:delete j[I],m({},N,{editRows:j})}),e.current.forceUpdate()},[e]),H=a.useCallback((I,$,N)=>{e.current.setState(j=>{const G=m({},j.editRows);return N!==null?G[I]=m({},G[I],{[$]:m({},N)}):(delete G[I][$],Object.keys(G[I]).length===0&&delete G[I]),m({},j,{editRows:G})}),e.current.forceUpdate()},[e]),A=a.useCallback(I=>{const{id:$}=I,N=Z(I,pb);g($,ke.View),L($,m({mode:ke.Edit},N))},[g,L]),P=pt(I=>{const{id:$,fieldToFocus:N,deleteValue:j,initialValue:G}=I,K=Pt(e).reduce((J,ee)=>{if(!e.current.getCellParams($,ee).isEditable)return J;let Ce=e.current.getCellValue($,ee);return N===ee&&(j||G)&&(Ce=j?"":G),J[ee]={value:Ce,error:!1,isProcessingProps:!1},J},{});k($,K),N&&e.current.setCellFocus($,N)}),R=a.useCallback(I=>{const{id:$}=I,N=Z(I,fb);g($,ke.Edit),L($,m({mode:ke.View},N))},[g,L]),y=pt(I=>{const{id:$,ignoreModifications:N,field:j,cellToFocusAfter:G="none"}=I;e.current.runPendingEditCellValueMutation($);const U=()=>{G!=="none"&&j&&e.current.moveFocusToRelativeCell($,j,G),k($,null),L($,null)};if(N){U();return}const K=We(e.current.state),J=e.current.getRow($);if(Object.values(K[$]).some(ve=>ve.isProcessingProps)){n.current[$].mode=ke.Edit;return}if(Object.values(K[$]).some(ve=>ve.error)){n.current[$].mode=ke.Edit,L($,{mode:ke.Edit});return}const Ce=e.current.getRowWithUpdatedValuesFromRowEditing($);if(u){const ve=se=>{n.current[$].mode=ke.Edit,L($,{mode:ke.Edit}),d?d(se):gb()};try{Promise.resolve(u(Ce,J)).then(se=>{e.current.updateRows([se]),U()}).catch(ve)}catch(se){ve(se)}}else e.current.updateRows([Ce]),U()}),w=a.useCallback(I=>{const{id:$,field:N,value:j,debounceMs:G,unstable_skipValueParser:U}=I;b($,N);const K=e.current.getColumn(N),J=e.current.getRow($);let ee=j;K.valueParser&&!U&&(ee=K.valueParser(j,e.current.getCellParams($,N)));let le=We(e.current.state),Ce=m({},le[$][N],{value:ee,changeReason:G?"debouncedSetEditCellValue":"setEditCellValue"});return K.preProcessEditCellProps||H($,N,Ce),new Promise(ve=>{const se=[];if(K.preProcessEditCellProps){const ie=Ce.value!==le[$][N].value;Ce=m({},Ce,{isProcessingProps:!0}),H($,N,Ce);const ue=le[$],we=Z(ue,[N].map(Ir)),Fe=Promise.resolve(K.preProcessEditCellProps({id:$,row:J,props:Ce,hasChanged:ie,otherFieldsProps:we})).then(de=>{if(e.current.getRowMode($)===ke.View){ve(!1);return}le=We(e.current.state),de=m({},de,{isProcessingProps:!1}),de.value=K.preProcessEditCellProps?le[$][N].value:ee,H($,N,de)});se.push(Fe)}Object.entries(le[$]).forEach(([ie,ue])=>{if(ie===N)return;const we=e.current.getColumn(ie);if(!we.preProcessEditCellProps)return;ue=m({},ue,{isProcessingProps:!0}),H($,ie,ue),le=We(e.current.state);const Fe=le[$],de=Z(Fe,[ie].map(Ir)),B=Promise.resolve(we.preProcessEditCellProps({id:$,row:J,props:ue,hasChanged:!1,otherFieldsProps:de})).then(q=>{if(e.current.getRowMode($)===ke.View){ve(!1);return}q=m({},q,{isProcessingProps:!1}),H($,ie,q)});se.push(B)}),Promise.all(se).then(()=>{e.current.getRowMode($)===ke.Edit?(le=We(e.current.state),ve(!le[$][N].error)):ve(!1)})})},[e,b,H]),O=a.useCallback(I=>{const $=We(e.current.state),N=e.current.getRow(I);if(!$[I])return e.current.getRow(I);let j=m({},N);return Object.entries($[I]).forEach(([G,U])=>{const K=e.current.getColumn(G);K.valueSetter?j=K.valueSetter({value:U.value,row:j}):j[G]=U.value}),j},[e]),M={getRowMode:_,startRowEditMode:A,stopRowEditMode:R},D={setRowEditingEditCellValue:w,getRowWithUpdatedValuesFromRowEditing:O};me(e,M,"public"),me(e,D,"private"),a.useEffect(()=>{c&&F(c)},[c,F]),ze(()=>{const I=Or(e),$=n.current;n.current=yi(r),Object.entries(r).forEach(([N,j])=>{var G,U;const K=((G=$[N])==null?void 0:G.mode)||ke.View,J=(U=I[N])!=null?U:N;j.mode===ke.Edit&&K===ke.View?P(m({id:J},j)):j.mode===ke.View&&K===ke.Edit&&y(m({id:J},j))})},[e,r,P,y])},bb=e=>m({},e,{editRows:{}}),hb=(e,t)=>{db(e,t),mb(e,t);const r=a.useRef({}),{isCellEditable:o}=t,l=a.useCallback(f=>vr(f.rowNode)||!f.colDef.editable||!f.colDef.renderEditCell?!1:o?o(f):!0,[o]),n=(f,b,g,h)=>{if(!g){h();return}if(r.current[f]||(r.current[f]={}),r.current[f][b]){const[C]=r.current[f][b];clearTimeout(C)}const x=()=>{const[C]=r.current[f][b];clearTimeout(C),h(),delete r.current[f][b]},S=setTimeout(()=>{h(),delete r.current[f][b]},g);r.current[f][b]=[S,x]};a.useEffect(()=>{const f=r.current;return()=>{Object.entries(f).forEach(([b,g])=>{Object.keys(g).forEach(h=>{const[x]=f[b][h];clearTimeout(x),delete f[b][h]})})}},[]);const i=a.useCallback((f,b)=>{if(r.current[f]){if(!b)Object.keys(r.current[f]).forEach(g=>{const[,h]=r.current[f][g];h()});else if(r.current[f][b]){const[,g]=r.current[f][b];g()}}},[]),s=a.useCallback(f=>{const{id:b,field:g,debounceMs:h}=f;return new Promise(x=>{n(b,g,h,async()=>{const S=t.editMode===mt.Row?e.current.setRowEditingEditCellValue:e.current.setCellEditingEditCellValue;if(e.current.getCellMode(b,g)===ye.Edit){const C=await S(f);x(C)}})})},[e,t.editMode]),u=a.useCallback((f,b)=>t.editMode===mt.Cell?e.current.getRowWithUpdatedValuesFromCellEditing(f,b):e.current.getRowWithUpdatedValuesFromRowEditing(f),[e,t.editMode]),d=a.useCallback((f,b)=>{var g,h;return(g=(h=We(e.current.state)[f])==null?void 0:h[b])!=null?g:null},[e]),c={isCellEditable:l,setEditCellValue:s,getRowWithUpdatedValues:u,unstable_getEditCellMeta:d},p={runPendingEditCellValueMutation:i};me(e,c,"public"),me(e,p,"private")},Cb=(e,t,r)=>(r.current.caches.rows=oo({rows:t.rows,getRowId:t.getRowId,loading:t.loading,rowCount:t.rowCount}),m({},e,{rows:Wa({apiRef:r,rowCountProp:t.rowCount,loadingProp:t.loading,previousTree:null,previousTreeDepths:null})})),wb=(e,t)=>{const r=je(e,"useGridRows"),o=Zt(e,t),l=a.useRef(Date.now()),n=Xl(),i=a.useCallback(y=>{const w=Ot(e)[y];if(w)return w;const O=e.current.getRowNode(y);return O&&vr(O)?{[ir]:y}:null},[e]),s=t.getRowId,u=a.useCallback(y=>ir in y?y[ir]:s?s(y):y.id,[s]),d=a.useMemo(()=>o.rows.reduce((y,{id:w},O)=>(y[w]=O,y),{}),[o.rows]),c=a.useCallback(({cache:y,throttle:w})=>{const O=()=>{l.current=Date.now(),e.current.setState(D=>m({},D,{rows:Wa({apiRef:e,rowCountProp:t.rowCount,loadingProp:t.loading,previousTree:nt(e),previousTreeDepths:qo(e)})})),e.current.publishEvent("rowsSet"),e.current.forceUpdate()};if(n.clear(),e.current.caches.rows=y,!w){O();return}const M=t.throttleRowsMs-(Date.now()-l.current);if(M>0){n.start(M,O);return}O()},[t.throttleRowsMs,t.rowCount,t.loading,e,n]),p=a.useCallback(y=>{r.debug(`Updating all rows, new length ${y.length}`);const w=oo({rows:y,getRowId:t.getRowId,loading:t.loading,rowCount:t.rowCount}),O=e.current.caches.rows;w.rowsBeforePartialUpdates=O.rowsBeforePartialUpdates,c({cache:w,throttle:!0})},[r,t.getRowId,t.loading,t.rowCount,c,e]),f=a.useCallback(y=>{if(t.signature===gt.DataGrid&&y.length>1)throw new Error(["MUI: You can't update several rows at once in `apiRef.current.updateRows` on the DataGrid.","You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature."].join(` -`));const w=[];y.forEach(M=>{const D=uo(M,t.getRowId,"A row was provided without id when calling updateRows():"),I=e.current.getRowNode(D);if((I==null?void 0:I.type)==="pinnedRow"){const $=e.current.caches.pinnedRows,N=$.idLookup[D];N&&($.idLookup[D]=m({},N,M))}else w.push(M)});const O=Td({updates:w,getRowId:t.getRowId,previousCache:e.current.caches.rows});c({cache:O,throttle:!0})},[t.signature,t.getRowId,c,e]),b=a.useCallback(()=>{const y=or(e),w=Ot(e);return new Map(y.map(O=>{var M;return[O,(M=w[O])!=null?M:{}]}))},[e]),g=a.useCallback(()=>Dr(e),[e]),h=a.useCallback(()=>or(e),[e]),x=a.useCallback(y=>d[y],[d]),S=a.useCallback((y,w)=>{const O=e.current.getRowNode(y);if(!O)throw new Error(`MUI: No row with id #${y} found`);if(O.type!=="group")throw new Error("MUI: Only group nodes can be expanded or collapsed");const M=m({},O,{childrenExpanded:w});e.current.setState(D=>m({},D,{rows:m({},D.rows,{tree:m({},D.rows.tree,{[y]:M})})})),e.current.forceUpdate(),e.current.publishEvent("rowExpansionChange",M)},[e]),C=a.useCallback(y=>{var w;return(w=nt(e)[y])!=null?w:null},[e]),E=a.useCallback(({skipAutoGeneratedRows:y=!0,groupId:w,applySorting:O,applyFiltering:M})=>{const D=nt(e);let I;if(O){const $=D[w];if(!$)return[];const N=vo(e);I=[];const j=N.findIndex(G=>G===w)+1;for(let G=j;G$.depth;G+=1){const U=N[G];(!y||!vr(D[U]))&&I.push(U)}}else I=$l(D,w,y);if(M){const $=Ml(e);I=I.filter(N=>$[N]!==!1)}return I},[e]),T=a.useCallback((y,w)=>{const O=e.current.getRowNode(y);if(!O)throw new Error(`MUI: No row with id #${y} found`);if(O.parent!==Ue)throw new Error("MUI: The row reordering do not support reordering of grouped rows yet");if(O.type!=="leaf")throw new Error("MUI: The row reordering do not support reordering of footer or grouping rows");e.current.setState(M=>{const D=nt(M,e.current.instanceId)[Ue],I=D.children,$=I.findIndex(j=>j===y);if($===-1||$===w)return M;r.debug(`Moving row ${y} to index ${w}`);const N=[...I];return N.splice(w,0,N.splice($,1)[0]),m({},M,{rows:m({},M.rows,{tree:m({},M.rows.tree,{[Ue]:m({},D,{children:N})})})})}),e.current.publishEvent("rowsSet")},[e,r]),_=a.useCallback((y,w)=>{if(t.signature===gt.DataGrid&&w.length>1)throw new Error(["MUI: You can't replace rows using `apiRef.current.unstable_replaceRows` on the DataGrid.","You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature."].join(` -`));if(w.length===0)return;if($r(e)>1)throw new Error("`apiRef.current.unstable_replaceRows` is not compatible with tree data and row grouping");const M=m({},nt(e)),D=m({},Ot(e)),I=m({},Or(e)),$=M[Ue],N=[...$.children];for(let G=0;GM[G].type==="leaf");e.current.caches.rows.dataRowIdToModelLookup=D,e.current.caches.rows.dataRowIdToIdLookup=I,e.current.setState(G=>m({},G,{rows:m({},G.rows,{dataRowIdToModelLookup:D,dataRowIdToIdLookup:I,dataRowIds:j,tree:M})})),e.current.publishEvent("rowsSet")},[e,t.signature,t.getRowId]),F={getRow:i,getRowId:u,getRowModels:b,getRowsCount:g,getAllRowIds:h,setRows:p,updateRows:f,getRowNode:C,getRowIndexRelativeToVisibleRows:x,unstable_replaceRows:_},L={setRowIndex:T,setRowChildrenExpansion:S,getRowGroupChildren:E},k=a.useCallback(()=>{r.info("Row grouping pre-processing have changed, regenerating the row tree");let y;e.current.caches.rows.rowsBeforePartialUpdates===t.rows?y=m({},e.current.caches.rows,{updates:{type:"full",rows:or(e)}}):y=oo({rows:t.rows,getRowId:t.getRowId,loading:t.loading,rowCount:t.rowCount}),c({cache:y,throttle:!1})},[r,e,t.rows,t.getRowId,t.loading,t.rowCount,c]),H=a.useCallback(y=>{y==="rowTreeCreation"&&k()},[k]),A=a.useCallback(()=>{e.current.getActiveStrategy("rowTree")!==Ta(e)&&k()},[e,k]);re(e,"activeStrategyProcessorChange",H),re(e,"strategyAvailabilityChange",A);const P=a.useCallback(()=>{e.current.setState(y=>{const w=e.current.unstable_applyPipeProcessors("hydrateRows",{tree:nt(y,e.current.instanceId),treeDepths:qo(y,e.current.instanceId),dataRowIds:or(y,e.current.instanceId),dataRowIdToModelLookup:Ot(y,e.current.instanceId),dataRowIdToIdLookup:Or(y,e.current.instanceId)});return m({},y,{rows:m({},y.rows,w,{totalTopLevelRowCount:qa({tree:w.tree,rowCountProp:t.rowCount})})})}),e.current.publishEvent("rowsSet"),e.current.forceUpdate()},[e,t.rowCount]);ln(e,"hydrateRows",P),me(e,F,"public"),me(e,L,t.signature===gt.DataGrid?"private":"public");const R=a.useRef(!0);a.useEffect(()=>{if(R.current){R.current=!1;return}const y=e.current.caches.rows.rowsBeforePartialUpdates===t.rows,w=e.current.caches.rows.loadingPropBeforePartialUpdates===t.loading,O=e.current.caches.rows.rowCountPropBeforePartialUpdates===t.rowCount;if(y){w||(e.current.setState(M=>m({},M,{rows:m({},M.rows,{loading:t.loading})})),e.current.caches.rows.loadingPropBeforePartialUpdates=t.loading,e.current.forceUpdate()),O||(e.current.setState(M=>m({},M,{rows:m({},M.rows,{totalRowCount:Math.max(t.rowCount||0,M.rows.totalRowCount),totalTopLevelRowCount:Math.max(t.rowCount||0,M.rows.totalTopLevelRowCount)})})),e.current.caches.rows.rowCountPropBeforePartialUpdates=t.rowCount,e.current.forceUpdate());return}r.debug(`Updating all rows, new length ${t.rows.length}`),c({cache:oo({rows:t.rows,getRowId:t.getRowId,loading:t.loading,rowCount:t.rowCount}),throttle:!1})},[t.rows,t.rowCount,t.getRowId,t.loading,r,c,e])},Sb=e=>{const t={[Ue]:m({},Ld(),{children:e})};for(let r=0;r{const r=m({},e),o={};for(let i=0;i!o[i])),r[Ue]=m({},l,{children:n}),{groupingName:Wt,tree:r,treeDepths:{0:n.length},dataRowIds:n}},Pb=e=>e.updates.type==="full"?Sb(e.updates.rows):Ob({previousTree:e.previousTree,actions:e.updates.actions}),xb=e=>{bo(e,Wt,"rowTreeCreation",Pb)},bu=(e,t)=>e==null||Array.isArray(e)?e:t&&t[0]===e?t:[e],vb=(e,t)=>{var r;return m({},e,{rowSelection:t.rowSelection?(r=bu(t.rowSelectionModel))!=null?r:[]:[]})},Fb=(e,t)=>{const r=je(e,"useGridSelection"),o=w=>(...O)=>{t.rowSelection&&w(...O)},l=a.useMemo(()=>bu(t.rowSelectionModel,rt(e.current.state)),[e,t.rowSelectionModel]),n=a.useRef(null);e.current.registerControlState({stateId:"rowSelection",propModel:l,propOnChange:t.onRowSelectionModelChange,stateSelector:rt,changeEvent:"rowSelectionChange"});const{checkboxSelection:i,disableMultipleRowSelection:s,disableRowSelectionOnClick:u,isRowSelectable:d}=t,c=!s||i,p=Zt(e,t),f=a.useCallback(w=>{var O;let M=w;const D=(O=n.current)!=null?O:w,I=e.current.isRowSelected(w);if(I){const $=ar(e),N=$.findIndex(G=>G===D),j=$.findIndex(G=>G===M);if(N===j)return;N>j?M=$[j+1]:M=$[j-1]}n.current=w,e.current.selectRowRange({startId:D,endId:M},!I)},[e]),b=a.useCallback(w=>{if(t.signature===gt.DataGrid&&!t.checkboxSelection&&Array.isArray(w)&&w.length>1)throw new Error(["MUI: `rowSelectionModel` can only contain 1 item in DataGrid.","You need to upgrade to DataGridPro or DataGridPremium component to unlock multiple selection."].join(` -`));rt(e.current.state)!==w&&(r.debug("Setting selection model"),e.current.setState(M=>m({},M,{rowSelection:t.rowSelection?w:[]})),e.current.forceUpdate())},[e,r,t.rowSelection,t.signature,t.checkboxSelection]),g=a.useCallback(w=>rt(e.current.state).includes(w),[e]),h=a.useCallback(w=>{if(d&&!d(e.current.getRowParams(w)))return!1;const O=e.current.getRowNode(w);return!((O==null?void 0:O.type)==="footer"||(O==null?void 0:O.type)==="pinnedRow")},[e,d]),x=a.useCallback(()=>Ai(e),[e]),S=a.useCallback((w,O=!0,M=!1)=>{if(e.current.isRowSelectable(w))if(n.current=w,M)r.debug(`Setting selection for row ${w}`),e.current.setRowSelectionModel(O?[w]:[]);else{r.debug(`Toggling selection for row ${w}`);const I=rt(e.current.state).filter(N=>N!==w);O&&I.push(w),(I.length<2||c)&&e.current.setRowSelectionModel(I)}},[e,r,c]),C=a.useCallback((w,O=!0,M=!1)=>{r.debug("Setting selection for several rows");const D=w.filter(N=>e.current.isRowSelectable(N));let I;if(M)I=O?D:[];else{const N=m({},Fr(e));D.forEach(j=>{O?N[j]=j:delete N[j]}),I=Object.values(N)}(I.length<2||c)&&e.current.setRowSelectionModel(I)},[e,r,c]),E=a.useCallback(({startId:w,endId:O},M=!0,D=!1)=>{if(!e.current.getRow(w)||!e.current.getRow(O))return;r.debug(`Expanding selection from row ${w} to row ${O}`);const I=ar(e),$=I.indexOf(w),N=I.indexOf(O),[j,G]=$>N?[N,$]:[$,N],U=I.slice(j,G+1);e.current.selectRows(U,M,D)},[e,r]),T={selectRow:S,setRowSelectionModel:b,getSelectedRows:x,isRowSelected:g,isRowSelectable:h},_={selectRows:C,selectRowRange:E};me(e,T,"public"),me(e,_,t.signature===gt.DataGrid?"private":"public");const F=a.useCallback(()=>{if(t.keepNonExistentRowsSelected)return;const w=rt(e.current.state),O=Ot(e),M=m({},Fr(e));let D=!1;w.forEach(I=>{O[I]||(delete M[I],D=!0)}),D&&e.current.setRowSelectionModel(Object.values(M))},[e,t.keepNonExistentRowsSelected]),L=a.useCallback((w,O)=>{const M=O.metaKey||O.ctrlKey,D=!i&&!M&&!pp(O),I=!c||D,$=e.current.isRowSelected(w);I?e.current.selectRow(w,D?!0:!$,!0):e.current.selectRow(w,!$,!1)},[e,c,i]),k=a.useCallback((w,O)=>{var M;if(u)return;const D=(M=O.target.closest(`.${V.cell}`))==null?void 0:M.getAttribute("data-field");if(D===Jt.field||D===rn)return;if(D){const $=e.current.getColumn(D);if(($==null?void 0:$.type)===zr)return}e.current.getRowNode(w.id).type!=="pinnedRow"&&(O.shiftKey&&(c||i)?f(w.id):L(w.id,O))},[u,c,i,e,f,L]),H=a.useCallback((w,O)=>{if(c&&O.shiftKey){var M;(M=window.getSelection())==null||M.removeAllRanges()}},[c]),A=a.useCallback((w,O)=>{O.nativeEvent.shiftKey?f(w.id):e.current.selectRow(w.id,w.value)},[e,f]),P=a.useCallback(w=>{const M=t.checkboxSelectionVisibleOnly&&t.pagination?zl(e):ar(e);e.current.selectRows(M,w.value)},[e,t.checkboxSelectionVisibleOnly,t.pagination]),R=a.useCallback((w,O)=>{if(e.current.getCellMode(w.id,w.field)!==ye.Edit&&!_r(O)){if(fo(O.key)&&O.shiftKey){const M=Ze(e);if(M&&M.id!==w.id){O.preventDefault();const D=e.current.isRowSelected(M.id);if(!c){e.current.selectRow(M.id,!D,!0);return}const I=e.current.getRowIndexRelativeToVisibleRows(M.id),$=e.current.getRowIndexRelativeToVisibleRows(w.id);let N,j;I>$?D?(N=$,j=I-1):(N=$,j=I):D?(N=I+1,j=$):(N=I,j=$);const G=p.rows.slice(N,j+1).map(U=>U.id);e.current.selectRows(G,!D);return}}if(O.key===" "&&O.shiftKey){O.preventDefault(),L(w.id,O);return}O.key==="a"&&(O.ctrlKey||O.metaKey)&&(O.preventDefault(),C(e.current.getAllRowIds(),!0))}},[e,L,C,p.rows,c]);re(e,"sortedRowsSet",o(F)),re(e,"rowClick",o(k)),re(e,"rowSelectionCheckboxChange",o(A)),re(e,"headerSelectionCheckboxChange",P),re(e,"cellMouseDown",o(H)),re(e,"cellKeyDown",o(R)),a.useEffect(()=>{l!==void 0&&e.current.setRowSelectionModel(l)},[e,l,t.rowSelection]),a.useEffect(()=>{t.rowSelection||e.current.setRowSelectionModel([])},[e,t.rowSelection]);const y=l!=null;a.useEffect(()=>{if(y||!t.rowSelection)return;const w=rt(e.current.state);if(h){const O=w.filter(M=>h(M));O.length{if(!t.rowSelection||y)return;const w=rt(e.current.state);!c&&w.length>1&&e.current.setRowSelectionModel([])},[e,c,i,y,t.rowSelection])},un={noRowsLabel:"No rows",noResultsOverlayLabel:"No results found.",toolbarDensity:"Density",toolbarDensityLabel:"Density",toolbarDensityCompact:"Compact",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Comfortable",toolbarColumns:"Columns",toolbarColumnsLabel:"Select columns",toolbarFilters:"Filters",toolbarFiltersLabel:"Show filters",toolbarFiltersTooltipHide:"Hide filters",toolbarFiltersTooltipShow:"Show filters",toolbarFiltersTooltipActive:e=>e!==1?`${e} active filters`:`${e} active filter`,toolbarQuickFilterPlaceholder:"Search…",toolbarQuickFilterLabel:"Search",toolbarQuickFilterDeleteIconLabel:"Clear",toolbarExport:"Export",toolbarExportLabel:"Export",toolbarExportCSV:"Download as CSV",toolbarExportPrint:"Print",toolbarExportExcel:"Download as Excel",columnsPanelTextFieldLabel:"Find column",columnsPanelTextFieldPlaceholder:"Column title",columnsPanelDragIconLabel:"Reorder column",columnsPanelShowAllButton:"Show all",columnsPanelHideAllButton:"Hide all",filterPanelAddFilter:"Add filter",filterPanelRemoveAll:"Remove all",filterPanelDeleteIconLabel:"Delete",filterPanelLogicOperator:"Logic operator",filterPanelOperator:"Operator",filterPanelOperatorAnd:"And",filterPanelOperatorOr:"Or",filterPanelColumns:"Columns",filterPanelInputLabel:"Value",filterPanelInputPlaceholder:"Filter value",filterOperatorContains:"contains",filterOperatorEquals:"equals",filterOperatorStartsWith:"starts with",filterOperatorEndsWith:"ends with",filterOperatorIs:"is",filterOperatorNot:"is not",filterOperatorAfter:"is after",filterOperatorOnOrAfter:"is on or after",filterOperatorBefore:"is before",filterOperatorOnOrBefore:"is on or before",filterOperatorIsEmpty:"is empty",filterOperatorIsNotEmpty:"is not empty",filterOperatorIsAnyOf:"is any of","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Contains",headerFilterOperatorEquals:"Equals",headerFilterOperatorStartsWith:"Starts with",headerFilterOperatorEndsWith:"Ends with",headerFilterOperatorIs:"Is",headerFilterOperatorNot:"Is not",headerFilterOperatorAfter:"Is after",headerFilterOperatorOnOrAfter:"Is on or after",headerFilterOperatorBefore:"Is before",headerFilterOperatorOnOrBefore:"Is on or before",headerFilterOperatorIsEmpty:"Is empty",headerFilterOperatorIsNotEmpty:"Is not empty",headerFilterOperatorIsAnyOf:"Is any of","headerFilterOperator=":"Equals","headerFilterOperator!=":"Not equals","headerFilterOperator>":"Greater than","headerFilterOperator>=":"Greater than or equal to","headerFilterOperator<":"Less than","headerFilterOperator<=":"Less than or equal to",filterValueAny:"any",filterValueTrue:"true",filterValueFalse:"false",columnMenuLabel:"Menu",columnMenuShowColumns:"Show columns",columnMenuManageColumns:"Manage columns",columnMenuFilter:"Filter",columnMenuHideColumn:"Hide column",columnMenuUnsort:"Unsort",columnMenuSortAsc:"Sort by ASC",columnMenuSortDesc:"Sort by DESC",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} active filters`:`${e} active filter`,columnHeaderFiltersLabel:"Show filters",columnHeaderSortIconLabel:"Sort",footerRowSelected:e=>e!==1?`${e.toLocaleString()} rows selected`:`${e.toLocaleString()} row selected`,footerTotalRows:"Total Rows:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} of ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Checkbox selection",checkboxSelectionSelectAllRows:"Select all rows",checkboxSelectionUnselectAllRows:"Unselect all rows",checkboxSelectionSelectRow:"Select row",checkboxSelectionUnselectRow:"Unselect row",booleanCellTrueLabel:"yes",booleanCellFalseLabel:"no",actionsCellMore:"more",pinToLeft:"Pin to left",pinToRight:"Pin to right",unpin:"Unpin",treeDataGroupingHeaderName:"Group",treeDataExpand:"see children",treeDataCollapse:"hide children",groupingColumnHeaderName:"Group",groupColumn:e=>`Group by ${e}`,unGroupColumn:e=>`Stop grouping by ${e}`,detailPanelToggle:"Detail panel toggle",expandDetailPanel:"Expand",collapseDetailPanel:"Collapse",MuiTablePagination:{},rowReorderingHeaderName:"Row reordering",aggregationMenuItemHeader:"Aggregation",aggregationFunctionLabelSum:"sum",aggregationFunctionLabelAvg:"avg",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"max",aggregationFunctionLabelSize:"size"},yb=e=>{const{classes:t}=e;return a.useMemo(()=>he({cellCheckbox:["cellCheckbox"],columnHeaderCheckbox:["columnHeaderCheckbox"]},be,t),[t])},Ib=(e,t)=>{const r={classes:t.classes},o=yb(r),l=a.useCallback(n=>{const i=m({},Jt,{cellClassName:o.cellCheckbox,headerClassName:o.columnHeaderCheckbox,headerName:e.current.getLocaleText("checkboxSelectionHeaderName")}),s=t.checkboxSelection,u=n.lookup[yt]!=null;return s&&!u?(n.lookup[yt]=i,n.orderedFields=[yt,...n.orderedFields]):!s&&u?(delete n.lookup[yt],n.orderedFields=n.orderedFields.filter(d=>d!==yt)):s&&u&&(n.lookup[yt]=m({},i,n.lookup[yt])),n},[e,o,t.checkboxSelection]);Ae(e,"hydrateColumns",l)},Mb=(e,t)=>{var r,o,l;const n=(r=(o=t.sortModel)!=null?o:(l=t.initialState)==null||(l=l.sorting)==null?void 0:l.sortModel)!=null?r:[];return m({},e,{sorting:{sortModel:Ri(n,t.disableMultipleColumnsSorting),sortedRows:[]}})},kb=(e,t)=>{var r;const o=je(e,"useGridSorting");e.current.registerControlState({stateId:"sortModel",propModel:t.sortModel,propOnChange:t.onSortModelChange,stateSelector:tt,changeEvent:"sortModelChange"});const l=a.useCallback((F,L)=>{const k=tt(e),H=k.findIndex(P=>P.field===F);let A=[...k];return H>-1?L?A.splice(H,1,L):A.splice(H,1):A=[...k,L],A},[e]),n=a.useCallback((F,L)=>{var k;const A=tt(e).find(R=>R.field===F.field);if(A){var P;const R=L===void 0?jn((P=F.sortingOrder)!=null?P:t.sortingOrder,A.sort):L;return R==null?void 0:m({},A,{sort:R})}return{field:F.field,sort:L===void 0?jn((k=F.sortingOrder)!=null?k:t.sortingOrder):L}},[e,t.sortingOrder]),i=a.useCallback((F,L)=>L==null||L.sortable===!1?F:(L.sortingOrder||t.sortingOrder).some(H=>!!H)?[...F,"columnMenuSortItem"]:F,[t.sortingOrder]),s=a.useCallback(()=>{e.current.setState(F=>{if(t.sortingMode==="server")return o.debug("Skipping sorting rows as sortingMode = server"),m({},F,{sorting:m({},F.sorting,{sortedRows:$l(nt(e),Ue,!1)})});const L=tt(F,e.current.instanceId),k=Of(L,e),H=e.current.applyStrategyProcessor("sorting",{sortRowList:k});return m({},F,{sorting:m({},F.sorting,{sortedRows:H})})}),e.current.publishEvent("sortedRowsSet"),e.current.forceUpdate()},[e,o,t.sortingMode]),u=a.useCallback(F=>{tt(e)!==F&&(o.debug("Setting sort model"),e.current.setState(zn(F,t.disableMultipleColumnsSorting)),e.current.forceUpdate(),e.current.applySorting())},[e,o,t.disableMultipleColumnsSorting]),d=a.useCallback((F,L,k)=>{if(!F.sortable)return;const H=n(F,L);let A;!k||t.disableMultipleColumnsSorting?A=H?[H]:[]:A=l(F.field,H),e.current.setSortModel(A)},[e,l,n,t.disableMultipleColumnsSorting]),c=a.useCallback(()=>tt(e),[e]),p=a.useCallback(()=>Fo(e).map(L=>L.model),[e]),f=a.useCallback(()=>vo(e),[e]),b=a.useCallback(F=>e.current.getSortedRowIds()[F],[e]);me(e,{getSortModel:c,getSortedRows:p,getSortedRowIds:f,getRowIdFromRowIndex:b,setSortModel:u,sortColumn:d,applySorting:s},"public");const h=a.useCallback((F,L)=>{var k;const H=tt(e);return!L.exportOnlyDirtyModels||t.sortModel!=null||((k=t.initialState)==null||(k=k.sorting)==null?void 0:k.sortModel)!=null||H.length>0?m({},F,{sorting:{sortModel:H}}):F},[e,t.sortModel,(r=t.initialState)==null||(r=r.sorting)==null?void 0:r.sortModel]),x=a.useCallback((F,L)=>{var k;const H=(k=L.stateToRestore.sorting)==null?void 0:k.sortModel;return H==null?F:(e.current.setState(zn(H,t.disableMultipleColumnsSorting)),m({},F,{callbacks:[...F.callbacks,e.current.applySorting]}))},[e,t.disableMultipleColumnsSorting]),S=a.useCallback(F=>{const L=nt(e),k=L[Ue],H=F.sortRowList?F.sortRowList(k.children.map(A=>L[A])):[...k.children];return k.footerId!=null&&H.push(k.footerId),H},[e]);Ae(e,"exportState",h),Ae(e,"restoreState",x),bo(e,Wt,"sorting",S);const C=a.useCallback(({colDef:F},L)=>{const k=L.shiftKey||L.metaKey||L.ctrlKey;d(F,void 0,k)},[d]),E=a.useCallback(({colDef:F},L)=>{sp(L.key)&&!L.ctrlKey&&!L.metaKey&&d(F,void 0,L.shiftKey)},[d]),T=a.useCallback(()=>{const F=tt(e),L=Vt(e);if(F.length>0){const k=F.filter(H=>L[H.field]);k.length{F==="sorting"&&e.current.applySorting()},[e]);Ae(e,"columnMenu",i),re(e,"columnHeaderClick",C),re(e,"columnHeaderKeyDown",E),re(e,"rowsSet",e.current.applySorting),re(e,"columnsChange",T),re(e,"activeStrategyProcessorChange",_),mr(()=>{e.current.applySorting()}),ze(()=>{t.sortModel!==void 0&&e.current.setSortModel(t.sortModel)},[e,t.sortModel])};function la(e){const{clientHeight:t,scrollTop:r,offsetHeight:o,offsetTop:l}=e,n=l+o;if(o>t)return l;if(n-t>r)return n-t;if(l{const r=kr(),o=je(e,"useGridScroll"),l=e.current.columnHeadersElementRef,n=e.current.virtualScrollerRef,i=Q(e,Mt),s=a.useCallback(p=>{const f=Dr(e),b=He(e);if(!(p.rowIndex==null)&&f===0||b.length===0)return!1;o.debug(`Scrolling to cell at row ${p.rowIndex}, col: ${p.colIndex} `);let h={};if(p.colIndex!=null){const E=qt(e);let T;if(typeof p.rowIndex<"u"){var x;const _=(x=i[p.rowIndex])==null?void 0:x.id,F=e.current.unstable_getCellColSpanInfo(_,p.colIndex);F&&!F.spannedByColSpan&&(T=F.cellProps.width)}typeof T>"u"&&(T=b[p.colIndex].computedWidth),h.left=la({clientHeight:n.current.clientWidth,scrollTop:Math.abs(n.current.scrollLeft),offsetHeight:T,offsetTop:E[p.colIndex]})}if(p.rowIndex!=null){var S,C;const E=dr(e.current.state),T=Li(e),_=Ti(e),F=t.pagination?p.rowIndex-T*_:p.rowIndex,L=E.positions[F+1]?E.positions[F+1]-E.positions[F]:E.currentPageTotalHeight-E.positions[F],k=((S=n.current.querySelector(`.${V["pinnedRows--top"]}`))==null?void 0:S.clientHeight)||0,H=((C=n.current.querySelector(`.${V["pinnedRows--bottom"]}`))==null?void 0:C.clientHeight)||0;h.top=la({clientHeight:n.current.clientHeight-k-H,scrollTop:n.current.scrollTop,offsetHeight:L,offsetTop:E.positions[F]})}return h=e.current.unstable_applyPipeProcessors("scrollToIndexes",h,p),typeof h.left!==void 0||typeof h.top!==void 0?(e.current.scroll(h),!0):!1},[o,e,n,t.pagination,i]),u=a.useCallback(p=>{if(n.current&&p.left!=null&&l.current){const f=r.direction==="rtl"?-1:1;l.current.scrollLeft=p.left,n.current.scrollLeft=f*p.left,o.debug(`Scrolling left: ${p.left}`)}n.current&&p.top!=null&&(n.current.scrollTop=p.top,o.debug(`Scrolling top: ${p.top}`)),o.debug("Scrolling, updating container, and viewport")},[n,r.direction,l,o]),d=a.useCallback(()=>n!=null&&n.current?{top:n.current.scrollTop,left:n.current.scrollLeft}:{top:0,left:0},[n]);me(e,{scroll:u,scrollToIndexes:s,getScrollPosition:d},"public")};function Lb(e,t){Ee(e,"columnHeaderClick",t.onColumnHeaderClick),Ee(e,"columnHeaderDoubleClick",t.onColumnHeaderDoubleClick),Ee(e,"columnHeaderOver",t.onColumnHeaderOver),Ee(e,"columnHeaderOut",t.onColumnHeaderOut),Ee(e,"columnHeaderEnter",t.onColumnHeaderEnter),Ee(e,"columnHeaderLeave",t.onColumnHeaderLeave),Ee(e,"cellClick",t.onCellClick),Ee(e,"cellDoubleClick",t.onCellDoubleClick),Ee(e,"cellKeyDown",t.onCellKeyDown),Ee(e,"preferencePanelClose",t.onPreferencePanelClose),Ee(e,"preferencePanelOpen",t.onPreferencePanelOpen),Ee(e,"menuOpen",t.onMenuOpen),Ee(e,"menuClose",t.onMenuClose),Ee(e,"rowDoubleClick",t.onRowDoubleClick),Ee(e,"rowClick",t.onRowClick),Ee(e,"stateChange",t.onStateChange)}const Tb=({content:e,container:t,scrollBarSize:r})=>{const o=e.width>t.width,l=e.height>t.height;let n=!1,i=!1;return(o||l)&&(n=o,i=e.height+(n?r:0)>t.height,i&&(n=e.width+r>t.width)),{hasScrollX:n,hasScrollY:i}};function Db(e,t){const r=je(e,"useResizeContainer"),o=a.useRef(!1),l=a.useRef(null),n=a.useRef(null),i=Q(e,dr),s=Q(e,Qt),u=Math.floor(t.rowHeight*s),d=sn(e,t.columnHeaderHeight),c=a.useCallback(()=>{var L;const k=(L=e.current.rootElementRef)==null?void 0:L.current,H=xo(e),A=Ka(e);if(!l.current)return;let P;if(t.scrollbarSize!=null)P=t.scrollbarSize;else if(!H||!k)P=0;else{const $=Mr(k).createElement("div");$.style.width="99px",$.style.height="99px",$.style.position="absolute",$.style.overflow="scroll",$.className="scrollDiv",k.appendChild($),P=$.offsetWidth-$.clientWidth,k.removeChild($)}let R,y,w;if(t.autoHeight)w=!1,y=Math.round(H)>Math.round(l.current.width),R={width:l.current.width,height:i.currentPageTotalHeight+(y?P:0)};else{R={width:l.current.width,height:Math.max(l.current.height-d,0)};const I=Tb({content:{width:Math.round(H),height:i.currentPageTotalHeight},container:{width:Math.round(R.width),height:R.height-A.top-A.bottom},scrollBarSize:P});w=I.hasScrollY,y=I.hasScrollX}const O={width:R.width-(w?P:0),height:R.height-(y?P:0)},M={viewportOuterSize:R,viewportInnerSize:O,hasScrollX:y,hasScrollY:w,scrollBarSize:P},D=n.current;n.current=M,(M.viewportInnerSize.width!==(D==null?void 0:D.viewportInnerSize.width)||M.viewportInnerSize.height!==(D==null?void 0:D.viewportInnerSize.height))&&e.current.publishEvent("viewportInnerSizeChange",M.viewportInnerSize)},[e,t.scrollbarSize,t.autoHeight,i.currentPageTotalHeight,d]),[p,f]=a.useState(),b=a.useMemo(()=>hl(f,60),[]),g=a.useRef();ze(()=>{p&&(c(),e.current.publishEvent("debouncedResize",l.current))},[e,p,c]);const h=a.useCallback(()=>{e.current.computeSizeAndPublishResizeEvent()},[e]),x=a.useCallback(()=>n.current,[]),S=a.useCallback(()=>{const L=e.current.getRootDimensions();if(!L)return 0;const k=go(e,{pagination:t.pagination,paginationMode:t.paginationMode});if(t.getRowHeight){const A=e.current.getRenderContext(),P=A.lastRowIndex-A.firstRowIndex;return Math.min(P-1,k.rows.length)}const H=Math.floor(L.viewportInnerSize.height/u);return Math.min(H,k.rows.length)},[e,t.pagination,t.paginationMode,t.getRowHeight,u]),C=a.useCallback(()=>{var L,k,H;const A=(L=e.current.mainElementRef)==null?void 0:L.current;if(!A)return;const R=Qu(A).getComputedStyle(A),y=parseFloat(R.height)||0,w=parseFloat(R.width)||0,O=y!==((k=g.current)==null?void 0:k.height),M=w!==((H=g.current)==null?void 0:H.width);if(!g.current||O||M){const D={width:w,height:y};e.current.publishEvent("resize",D),g.current=D}},[e]),E={resize:h,getRootDimensions:x},T={getViewportPageSize:S,updateGridDimensionsRef:c,computeSizeAndPublishResizeEvent:C};me(e,E,"public"),me(e,T,"private");const _=a.useRef(!0),F=a.useCallback(L=>{l.current=L;const k=/jsdom/.test(window.navigator.userAgent);if(L.height===0&&!o.current&&!t.autoHeight&&!k&&(r.error(["The parent DOM element of the data grid has an empty height.","Please make sure that this element has an intrinsic height.","The grid displays with a height of 0px.","","More details: https://mui.com/r/x-data-grid-no-dimensions."].join(` -`)),o.current=!0),L.width===0&&!o.current&&!k&&(r.error(["The parent DOM element of the data grid has an empty width.","Please make sure that this element has an intrinsic width.","The grid displays with a width of 0px.","","More details: https://mui.com/r/x-data-grid-no-dimensions."].join(` -`)),o.current=!0),_.current){f(L),_.current=!1;return}b(L)},[t.autoHeight,b,r]);ze(()=>c(),[c]),Ee(e,"sortedRowsSet",c),Ee(e,"paginationModelChange",c),Ee(e,"columnsChange",c),re(e,"resize",F),Ee(e,"debouncedResize",t.onResize)}const $b=["style"],Ab=["style"];function sr(e,t,r=0,o=t.length){if(t.length<=0)return-1;if(r>=o)return r;const l=r+Math.floor((o-r)/2),n=t[l];return e<=n?sr(e,t,r,l):sr(e,t,l+1,o)}function Rb(e,t,r){let o=1;for(;r[cr(e-r,o,l),cr(t+r,o,l)],hu=(e,t)=>e===t?!0:e.firstRowIndex===t.firstRowIndex&&e.lastRowIndex===t.lastRowIndex&&e.firstColumnIndex===t.firstColumnIndex&&e.lastColumnIndex===t.lastColumnIndex,Hb={maxSize:3},_b=e=>{var t,r;const o=_t(),l=Y(),n=Q(o,He),i=Q(o,zi),s=Q(o,Kl),{ref:u,onRenderZonePositioning:d,renderZoneMinColumnIndex:c=0,renderZoneMaxColumnIndex:p=n.length,getRowProps:f}=e,b=kr(),g=Q(o,qt),h=Q(o,xo),x=Q(o,Ze),S=Q(o,xr),C=Q(o,dr),E=Q(o,Fr),T=Zt(o,l),_=a.useRef(null),F=a.useRef(null),L=xt(u,F),[k,H]=a.useState(null),A=a.useRef(k),P=a.useRef({top:0,left:0}),[R,y]=a.useState({width:null,height:null}),w=a.useRef(h),[O,M]=a.useState(null),D=a.useRef(Object.create(null)),I=a.useRef(),$=a.useRef(),N=a.useRef(Po((B,q,ae,fe,ge,Se)=>{let ne;const W=B.slice(q,ae);return Se>-1&&(q>Se&&Se>=fe||aex!==null?n.findIndex(B=>B.field===x.field):-1,[x,n]),G=a.useCallback(B=>{var q,ae;const fe=o.current.getLastMeasuredRowIndex();let ge=fe===1/0;(q=T.range)!=null&&q.lastRowIndex&&!ge&&(ge=fe>=T.range.lastRowIndex);const Se=cr(fe-(((ae=T.range)==null?void 0:ae.firstRowIndex)||0),0,C.positions.length);return ge||C.positions[Se]>=B?sr(B,C.positions):Rb(B,C.positions,Se)},[o,(t=T.range)==null?void 0:t.firstRowIndex,(r=T.range)==null?void 0:r.lastRowIndex,C.positions]),U=a.useCallback(()=>{if(!i)return{firstRowIndex:0,lastRowIndex:T.rows.length,firstColumnIndex:0,lastColumnIndex:n.length};const{top:B,left:q}=P.current,ae=Math.min(G(B),C.positions.length-1),fe=l.autoHeight?ae+T.rows.length:G(B+R.height);let ge=0,Se=g.length;if(s){let ne=!1;const[W,te]=Et({firstIndex:ae,lastIndex:fe,minFirstIndex:0,maxLastIndex:T.rows.length,buffer:l.rowBuffer});for(let oe=W;oe{i?(F.current.scrollLeft=0,F.current.scrollTop=0):_.current.style.transform="translate3d(0px, 0px, 0px)"},[i]),ze(()=>{y({width:F.current.clientWidth,height:F.current.clientHeight})},[C.currentPageTotalHeight]);const K=a.useCallback(()=>{F.current&&y({width:F.current.clientWidth,height:F.current.clientHeight})},[]);re(o,"debouncedResize",K);const J=a.useCallback(B=>{const[q,ae]=Et({firstIndex:B.firstRowIndex,lastIndex:B.lastRowIndex,minFirstIndex:0,maxLastIndex:T.rows.length,buffer:l.rowBuffer}),[fe]=Et({firstIndex:B.firstColumnIndex,lastIndex:B.lastColumnIndex,minFirstIndex:c,maxLastIndex:p,buffer:l.columnBuffer}),ge=dl({firstColumnToRender:fe,apiRef:o,firstRowToRender:q,lastRowToRender:ae,visibleRows:T.rows}),Se=b.direction==="ltr"?1:-1,ne=dr(o.current.state).positions[q],W=Se*qt(o)[ge];_.current.style.transform=`translate3d(${W}px, ${ne}px, 0px)`,typeof d=="function"&&d({top:ne,left:W})},[o,T.rows,d,c,p,l.columnBuffer,l.rowBuffer,b.direction]),ee=a.useCallback(()=>A.current,[]),le=a.useCallback(B=>{if(A.current&&hu(B,A.current)){J(B);return}H(B),J(B);const[q,ae]=Et({firstIndex:B.firstRowIndex,lastIndex:B.lastRowIndex,minFirstIndex:0,maxLastIndex:T.rows.length,buffer:l.rowBuffer});o.current.publishEvent("renderedRowsIntervalChange",{firstRowToRender:q,lastRowToRender:ae}),A.current=B},[o,H,A,T.rows.length,l.rowBuffer,J]);ze(()=>{if(R.width==null)return;const B=U();le(B);const{top:q,left:ae}=P.current,fe={top:q,left:ae,renderContext:B};o.current.publishEvent("scrollPositionChange",fe)},[o,U,R.width,le]);const Ce=pt(B=>{const{scrollTop:q,scrollLeft:ae}=B.currentTarget;if(P.current.top=q,P.current.left=ae,!A.current||q<0||b.direction==="ltr"&&ae<0||b.direction==="rtl"&&ae>0)return;const fe=i?U():A.current,ge=Math.abs(fe.firstRowIndex-A.current.firstRowIndex),Se=Math.abs(fe.lastRowIndex-A.current.lastRowIndex),ne=Math.abs(fe.firstColumnIndex-A.current.firstColumnIndex),W=Math.abs(fe.lastColumnIndex-A.current.lastColumnIndex),te=ge>=l.rowThreshold||Se>=l.rowThreshold||ne>=l.columnThreshold||W>=l.columnThreshold||w.current!==h;o.current.publishEvent("scrollPositionChange",{top:q,left:ae,renderContext:te?fe:A.current},B),te&&(Sa.flushSync(()=>{le(fe)}),w.current=h)}),ve=pt(B=>{o.current.publishEvent("virtualScrollerWheel",{},B)}),se=pt(B=>{o.current.publishEvent("virtualScrollerTouchMove",{},B)}),ie=a.useMemo(()=>x!==null?T.rows.findIndex(B=>B.id===x.id):-1,[x,T.rows]);re(o,"rowMouseOver",(B,q)=>{var ae;q.currentTarget.contains(q.relatedTarget)||M((ae=B.id)!=null?ae:null)}),re(o,"rowMouseOut",(B,q)=>{q.currentTarget.contains(q.relatedTarget)||M(null)});const ue=(B={renderContext:k})=>{var q;const{onRowRender:ae,renderContext:fe,minFirstColumn:ge=c,maxLastColumn:Se=p,availableSpace:ne=R.width,rowIndexOffset:W=0,position:te="center"}=B;if(!fe||ne==null)return null;const oe=i?l.rowBuffer:0,Oe=i?l.columnBuffer:0,[Le,Je]=Et({firstIndex:fe.firstRowIndex,lastIndex:fe.lastRowIndex,minFirstIndex:0,maxLastIndex:T.rows.length,buffer:oe}),Ye=[];if(B.rows)B.rows.forEach(Ne=>{Ye.push(Ne),o.current.calculateColSpan({rowId:Ne.id,minFirstColumn:ge,maxLastColumn:Se,columns:n})});else{if(!T.range)return null;for(let Ne=Le;Ne-1){const Ne=T.rows[ie];(Le>ie||JeLe?Ye.push(Ne):Ye.unshift(Ne),o.current.calculateColSpan({rowId:Ne.id,minFirstColumn:ge,maxLastColumn:Se,columns:n}))}const[To,Be]=Et({firstIndex:fe.firstColumnIndex,lastIndex:fe.lastColumnIndex,minFirstIndex:ge,maxLastIndex:Se,buffer:Oe}),Ve=dl({firstColumnToRender:To,apiRef:o,firstRowToRender:Le,lastRowToRender:Je,visibleRows:T.rows});let Gt=!1;(Ve>j||Be=R.width,Fe=a.useMemo(()=>{const B=Math.max(C.currentPageTotalHeight,1);let q=!1;F!=null&&F.current&&B<=(F==null?void 0:F.current.clientHeight)&&(q=!0);const ae={width:we?h:"auto",height:B,minHeight:q?"100%":"auto"};return l.autoHeight&&T.rows.length===0&&(ae.height=Qa(o,l.rowHeight)),ae},[o,F,h,C.currentPageTotalHeight,we,l.autoHeight,l.rowHeight,T.rows.length]);a.useEffect(()=>{o.current.publishEvent("virtualScrollerContentSizeChange")},[o,Fe]);const de=a.useMemo(()=>{const B={};return we||(B.overflowX="hidden"),l.autoHeight&&(B.overflowY="hidden"),B},[we,l.autoHeight]);return o.current.register("private",{getRenderContext:ee}),{renderContext:k,updateRenderZonePosition:J,getRows:ue,getRootProps:(B={})=>m({ref:L,onScroll:Ce,onWheel:ve,onTouchMove:se},B,{style:B.style?m({},B.style,de):de,role:"presentation"}),getContentProps:({style:B}={})=>({style:B?m({},B,Fe):Fe,role:"presentation"}),getRenderZoneProps:()=>({ref:_,role:"rowgroup"})}},Vb=e=>{const{classes:t,headerAlign:r,isDragging:o,showColumnBorder:l,groupId:n}=e;return he({root:["columnHeader",r==="left"&&"columnHeader--alignLeft",r==="center"&&"columnHeader--alignCenter",r==="right"&&"columnHeader--alignRight",o&&"columnHeader--moving",l&&"columnHeader--showColumnBorder",l&&"columnHeader--withRightBorder","withBorderColor",n===null?"columnHeader--emptyGroup":"columnHeader--filledGroup"],draggableContainer:["columnHeaderDraggableContainer"],titleContainer:["columnHeaderTitleContainer","withBorderColor"],titleContainerContent:["columnHeaderTitleContainerContent"]},be,t)};function Nb(e){var t;const{groupId:r,width:o,depth:l,maxDepth:n,fields:i,height:s,colIndex:u,hasFocus:d,tabIndex:c,isLastColumn:p}=e,f=Y(),b=a.useRef(null),g=ce(),h=Q(g,yl),x=r?h[r]:{},{headerName:S=r??"",description:C="",headerAlign:E=void 0}=x;let T;const _=r&&((t=h[r])==null?void 0:t.renderHeaderGroup),F=a.useMemo(()=>({groupId:r,headerName:S,description:C,depth:l,maxDepth:n,fields:i,colIndex:u,isLastColumn:p}),[r,S,C,l,n,i,u,p]);r&&_&&(T=_(F));const L=f.showColumnVerticalBorder,k=m({},e,{classes:f.classes,showColumnBorder:L,headerAlign:E,depth:l,isDragging:!1}),H=S??r,A=Ie(),P=r===null?`empty-group-cell-${A}`:r,R=Vb(k);a.useLayoutEffect(()=>{if(d){const D=b.current.querySelector('[tabindex="0"]')||b.current;D==null||D.focus()}},[g,d]);const y=a.useCallback(M=>D=>{_r(D)||g.current.publishEvent(M,F,D)},[g,F]),w=a.useMemo(()=>({onKeyDown:y("columnGroupHeaderKeyDown"),onFocus:y("columnGroupHeaderFocus"),onBlur:y("columnGroupHeaderBlur")}),[y]),O=typeof x.headerClassName=="function"?x.headerClassName(F):x.headerClassName;return v.jsx(Pi,m({ref:b,classes:R,columnMenuOpen:!1,colIndex:u,height:s,isResizing:!1,sortDirection:null,hasFocus:!1,tabIndex:c,isDraggable:!1,headerComponent:T,headerClassName:O,description:C,elementId:P,width:o,columnMenuIconButton:null,columnTitleIconButtons:null,resizable:!1,label:H,"aria-colspan":i.length,"data-fields":`|-${i.join("-|-")}-|`},w))}const na=De("div",{name:"MuiDataGrid",slot:"ColumnHeaderRow",overridesResolver:(e,t)=>t.columnHeaderRow})(()=>({display:"flex"}));function Gb(e){return!!e.target}const zb=e=>{const{innerRef:t,minColumnIndex:r=0,visibleColumns:o,sortColumnLookup:l,filterColumnLookup:n,columnPositions:i,columnHeaderTabIndexState:s,columnGroupHeaderTabIndexState:u,columnHeaderFocus:d,columnGroupHeaderFocus:c,densityFactor:p,headerGroupingMaxDepth:f,columnMenuState:b,columnVisibility:g,columnGroupsHeaderStructure:h,hasOtherElementInTabSequence:x}=e,S=kr(),[C,E]=a.useState(""),[T,_]=a.useState(""),F=_t(),L=Q(F,Kl),k=Y(),H=a.useRef(null),A=xt(t,H),[P,R]=a.useState(null),y=a.useRef(P),w=a.useRef(0),O=Zt(F,k),M=sn(F,k.columnHeaderHeight),D=Math.floor(k.columnHeaderHeight*p),I=a.useCallback(se=>{P&&se&&hu(P,se)||R(se)},[P]);a.useEffect(()=>{F.current.columnHeadersContainerElementRef.current.scrollLeft=0},[F]);const $=a.useRef(Po(Hm,{equalityCheck:(se,ie)=>["firstColumnIndex","minColumnIndex","columnBuffer"].every(ue=>se[ue]===ie[ue])})),N=a.useCallback(se=>{const[ie,ue]=Et({firstIndex:se.firstRowIndex,lastIndex:se.lastRowIndex,minFirstIndex:0,maxLastIndex:O.rows.length,buffer:k.rowBuffer}),we=$.current({firstColumnIndex:se.firstColumnIndex,minColumnIndex:r,columnBuffer:k.columnBuffer,firstRowToRender:ie,lastRowToRender:ue,apiRef:F,visibleRows:O.rows}),Fe=S.direction==="ltr"?1:-1,de=we>0?w.current-Fe*i[we]:w.current;H.current.style.transform=`translate3d(${-de}px, 0px, 0px)`},[i,r,k.columnBuffer,F,O.rows,k.rowBuffer,S.direction]);a.useLayoutEffect(()=>{P&&N(P)},[P,N]);const j=a.useCallback(({left:se,renderContext:ie=null},ue)=>{var we,Fe;if(!H.current||w.current===se&&((we=y.current)==null?void 0:we.firstColumnIndex)===(ie==null?void 0:ie.firstColumnIndex)&&((Fe=y.current)==null?void 0:Fe.lastColumnIndex)===(ie==null?void 0:ie.lastColumnIndex))return;w.current=se;let de=!1;ie!==y.current||!y.current?(Gb(ue)?(Sa.flushSync(()=>{I(ie)}),de=!0):I(ie),y.current=ie):de=!0,ie&&de&&N(ie)},[N,I]),G=a.useCallback(se=>_(se.field),[]),U=a.useCallback(()=>_(""),[]),K=a.useCallback(se=>E(se.field),[]),J=a.useCallback(()=>E(""),[]);re(F,"columnResizeStart",G),re(F,"columnResizeStop",U),re(F,"columnHeaderDragStart",K),re(F,"columnHeaderDragEnd",J),re(F,"scrollPositionChange",j);const ee=se=>{const{renderContext:ie=P,minFirstColumn:ue=r,maxLastColumn:we=o.length}=se||{};if(!ie)return null;const[Fe,de]=Et({firstIndex:ie.firstRowIndex,lastIndex:ie.lastRowIndex,minFirstIndex:0,maxLastIndex:O.rows.length,buffer:k.rowBuffer}),B=L?$.current({firstColumnIndex:ie.firstColumnIndex,minColumnIndex:ue,columnBuffer:k.columnBuffer,apiRef:F,firstRowToRender:Fe,lastRowToRender:de,visibleRows:O.rows}):0,q=L?Math.min(ie.lastColumnIndex+k.columnBuffer,we):we;return{renderedColumns:o.slice(B,q),firstColumnToRender:B,lastColumnToRender:q,minFirstColumn:ue,maxLastColumn:we}},le=(se,ie={})=>{const ue=ee(se);if(ue==null)return null;const{renderedColumns:we,firstColumnToRender:Fe}=ue,de=[];for(let B=0;B{if(f===0)return null;const ie=ee(se);if(ie==null||ie.renderedColumns.length===0)return null;const{firstColumnToRender:ue,lastColumnToRender:we}=ie,Fe=[],de=[];for(let ae=0;aeBe===Se&&Ve.includes(ge)),W=o[we-1].field,te=(q=F.current.unstable_getColumnGroupPath(W)[ae])!=null?q:null,oe=fe.findIndex(({groupId:Be,columnFields:Ve})=>Be===te&&Ve.includes(W)),Oe=fe.slice(ne,oe+1).map(Be=>m({},Be,{columnFields:Be.columnFields.filter(Ve=>g[Ve]!==!1)})).filter(Be=>Be.columnFields.length>0),Le=Oe[0].columnFields.indexOf(ge),Ye=Oe[0].columnFields.slice(0,Le).reduce((Be,Ve)=>{var Gt;const zt=F.current.getColumn(Ve);return Be+((Gt=zt.computedWidth)!=null?Gt:0)},0);let Nt=ue;const To=Oe.map(({groupId:Be,columnFields:Ve})=>{const Gt=c!==null&&c.depth===ae&&Ve.includes(c.field),zt=u!==null&&u.depth===ae&&Ve.includes(u.field)?0:-1,Br={groupId:Be,width:Ve.reduce((Ur,br)=>Ur+F.current.getColumn(br).computedWidth,0),fields:Ve,colIndex:Nt,hasFocus:Gt,tabIndex:zt};return Nt+=Ve.length,Br});de.push({leftOverflow:Ye,elements:To})}return de.forEach((ae,fe)=>{Fe.push(v.jsx(na,{style:{height:`${D}px`,transform:`translateX(-${ae.leftOverflow}px)`},role:"row","aria-rowindex":fe+1,ownerState:k,children:ae.elements.map(({groupId:ge,width:Se,fields:ne,colIndex:W,hasFocus:te,tabIndex:oe},Oe)=>v.jsx(Nb,{groupId:ge,width:Se,fields:ne,colIndex:W,depth:fe,isLastColumn:W===o.length-ne.length,maxDepth:de.length,height:D,hasFocus:te,tabIndex:oe},Oe))},fe))}),Fe},ve={minHeight:M,maxHeight:M,lineHeight:`${D}px`};return{renderContext:P,getColumnHeaders:le,getColumnsToRender:ee,getColumnGroupHeaders:Ce,isDragging:!!C,getRootProps:(se={})=>m({style:ve},se),getInnerProps:()=>({ref:A,role:"rowgroup"}),headerHeight:D}},jb=["className"],Bb=e=>{const{classes:t}=e;return he({root:["columnHeaders","withBorderColor"]},be,t)},Ub=_e("div",{name:"MuiDataGrid",slot:"ColumnHeaders",overridesResolver:(e,t)=>t.columnHeaders})({position:"relative",overflow:"hidden",display:"flex",alignItems:"center",boxSizing:"border-box",borderBottom:"1px solid",borderTopLeftRadius:"var(--unstable_DataGrid-radius)",borderTopRightRadius:"var(--unstable_DataGrid-radius)"}),qb=a.forwardRef(function(t,r){const{className:o}=t,l=Z(t,jb),n=Y(),i=Bb(n);return v.jsx(Ub,m({ref:r,className:xe(o,i.root),ownerState:n},l,{role:"presentation"}))}),Wb=["isDragging","className"],Kb=e=>{const{isDragging:t,hasScrollX:r,classes:o}=e;return he({root:["columnHeadersInner",t&&"columnHeaderDropZone",r&&"columnHeadersInner--scrollable"]},be,o)},Qb=_e("div",{name:"MuiDataGrid",slot:"columnHeadersInner",overridesResolver:(e,t)=>[{[`&.${V.columnHeaderDropZone}`]:t.columnHeaderDropZone},t.columnHeadersInner]})(()=>({display:"flex",alignItems:"flex-start",flexDirection:"column",[`&.${V.columnHeaderDropZone} .${V.columnHeaderDraggableContainer}`]:{cursor:"move"},[`&.${V["columnHeadersInner--scrollable"]} .${V.columnHeader}:last-child`]:{borderRight:"none"}})),Zb=a.forwardRef(function(t,r){var o,l;const{isDragging:n,className:i}=t,s=Z(t,Wb),u=ce(),d=Y(),c=m({},d,{isDragging:n,hasScrollX:(o=(l=u.current.getRootDimensions())==null?void 0:l.hasScrollX)!=null?o:!1}),p=Kb(c);return v.jsx(Qb,m({ref:r,className:xe(i,p.root),ownerState:c},s))}),Jb=["innerRef","className","visibleColumns","sortColumnLookup","filterColumnLookup","columnPositions","columnHeaderTabIndexState","columnGroupHeaderTabIndexState","columnHeaderFocus","columnGroupHeaderFocus","densityFactor","headerGroupingMaxDepth","columnMenuState","columnVisibility","columnGroupsHeaderStructure","hasOtherElementInTabSequence"],Yb=a.forwardRef(function(t,r){const{innerRef:o,visibleColumns:l,sortColumnLookup:n,filterColumnLookup:i,columnPositions:s,columnHeaderTabIndexState:u,columnGroupHeaderTabIndexState:d,columnHeaderFocus:c,columnGroupHeaderFocus:p,densityFactor:f,headerGroupingMaxDepth:b,columnMenuState:g,columnVisibility:h,columnGroupsHeaderStructure:x,hasOtherElementInTabSequence:S}=t,C=Z(t,Jb),{isDragging:E,getRootProps:T,getInnerProps:_,getColumnHeaders:F,getColumnGroupHeaders:L}=zb({innerRef:o,visibleColumns:l,sortColumnLookup:n,filterColumnLookup:i,columnPositions:s,columnHeaderTabIndexState:u,columnGroupHeaderTabIndexState:d,columnHeaderFocus:c,columnGroupHeaderFocus:p,densityFactor:f,headerGroupingMaxDepth:b,columnMenuState:g,columnVisibility:h,columnGroupsHeaderStructure:x,hasOtherElementInTabSequence:S});return v.jsx(qb,m({ref:r},T(C),{children:v.jsxs(Zb,m({isDragging:E},_(),{children:[L(),F()]}))}))}),Cu=Io(Yb),Xb=a.forwardRef(function(t,r){const l=ce().current.getLocaleText("noResultsOverlayLabel");return v.jsx(ko,m({ref:r},t,{children:l}))}),eh=["sortingOrder"],th=a.memo(function(t){const{sortingOrder:r}=t,o=Z(t,eh),l=Y(),[n]=r,i=n==="asc"?l.slots.columnSortedAscendingIcon:l.slots.columnSortedDescendingIcon;return i?v.jsx(i,m({},o)):null}),rh=["native"];function oh(e){let{native:t}=e,r=Z(e,rh);return t?v.jsx("option",m({},r)):v.jsx(dt,m({},r))}const lh={BooleanCellTrueIcon:ls,BooleanCellFalseIcon:no,ColumnMenuIcon:es,OpenFilterButtonIcon:Wi,FilterPanelDeleteIcon:no,ColumnFilteredIcon:el,ColumnSelectorIcon:Qi,ColumnUnsortedIcon:th,ColumnSortedAscendingIcon:Zo,ColumnSortedDescendingIcon:Jo,ColumnResizeIcon:Zi,DensityCompactIcon:Ji,DensityStandardIcon:Yi,DensityComfortableIcon:Xi,ExportIcon:os,MoreActionsIcon:ns,TreeDataCollapseIcon:Xo,TreeDataExpandIcon:Yo,GroupingCriteriaCollapseIcon:Xo,GroupingCriteriaExpandIcon:Yo,DetailPanelExpandIcon:tl,DetailPanelCollapseIcon:ts,RowReorderIcon:rl,QuickFilterIcon:Ki,QuickFilterClearIcon:no,ColumnMenuHideIcon:as,ColumnMenuSortAscendingIcon:Zo,ColumnMenuSortDescendingIcon:Jo,ColumnMenuFilterIcon:el,ColumnMenuManageColumnsIcon:is,ColumnMenuClearIcon:ss,LoadIcon:rs,FilterPanelAddIcon:tl,FilterPanelRemoveAllIcon:us,ColumnReorderIcon:rl},nh=m({},lh,{BaseCheckbox:Zu,BaseTextField:wa,BaseFormControl:Ju,BaseSelect:Yu,BaseSwitch:Xu,BaseButton:ec,BaseIconButton:ha,BaseInputAdornment:tc,BaseTooltip:rc,BasePopper:ml,BaseInputLabel:oc,BaseSelectOption:oh,BaseChip:lc}),ah=nh,ih=m({},ah,{Cell:Wo,SkeletonCell:fi,ColumnHeaderFilterIconButton:ji,ColumnMenu:ws,ColumnHeaders:Cu,Footer:Vs,FooterRowCount:Bs,Toolbar:null,PreferencesPanel:Fs,LoadingOverlay:Gs,NoResultsOverlay:Xb,NoRowsOverlay:zs,Pagination:js,FilterPanel:Ms,ColumnsPanel:Ps,Panel:vs,Row:Ys}),wu=e=>{if(e!==void 0)return Object.keys(e).reduce((t,r)=>m({},t,{[`${r.charAt(0).toLowerCase()}${r.slice(1)}`]:e[r]}),{})};function sh({defaultSlots:e,slots:t,components:r}){const o=t??(r?wu(r):null);if(!o||Object.keys(o).length===0)return e;const l=m({},e);return Object.keys(o).forEach(n=>{const i=n;o[i]!==void 0&&(l[i]=o[i])}),l}const uh=["components","componentsProps"];function ch(e){var t;const r=Object.keys(e);if(!r.some(n=>n.startsWith("aria-")||n.startsWith("data-")))return e;const o={},l=(t=e.forwardedProps)!=null?t:{};for(let n=0;n{const{components:t,componentsProps:r}=e,o=Z(e,uh);return[t,r,ch(o)]},[e])}const ph={disableMultipleColumnsFiltering:!0,disableMultipleColumnsSorting:!0,disableMultipleRowSelection:!0,throttleRowsMs:void 0,hideFooterRowCount:!1,pagination:!0,checkboxSelectionVisibleOnly:!1,disableColumnReorder:!0,disableColumnResize:!0,keepColumnPositionIfDraggedOutside:!1,signature:"DataGrid"},jr={autoHeight:!1,autoPageSize:!1,checkboxSelection:!1,checkboxSelectionVisibleOnly:!1,columnBuffer:3,rowBuffer:3,columnThreshold:3,rowThreshold:3,rowSelection:!0,density:"standard",disableColumnFilter:!1,disableColumnMenu:!1,disableColumnSelector:!1,disableDensitySelector:!1,disableEval:!1,disableMultipleColumnsFiltering:!1,disableMultipleRowSelection:!1,disableMultipleColumnsSorting:!1,disableRowSelectionOnClick:!1,disableVirtualization:!1,editMode:mt.Cell,filterMode:"client",filterDebounceMs:150,columnHeaderHeight:56,hideFooter:!1,hideFooterPagination:!1,hideFooterRowCount:!1,hideFooterSelectedRowCount:!1,ignoreDiacritics:!1,logger:console,logLevel:"error",pagination:!1,paginationMode:"client",rowHeight:52,pageSizeOptions:[25,50,100],rowSpacingType:"margin",showCellVerticalBorder:!1,showColumnVerticalBorder:!1,sortingOrder:["asc","desc",null],sortingMode:"client",throttleRowsMs:0,disableColumnReorder:!1,disableColumnResize:!1,keepNonExistentRowsSelected:!1,keepColumnPositionIfDraggedOutside:!1,unstable_ignoreValueFormatterDuringExport:!1,clipboardCopyCellDelimiter:" ",rowPositionsDebounceMs:166},fh=wu(ih),gh=e=>{const[t,r,o]=dh(nc({props:e,name:"MuiDataGrid"})),l=a.useMemo(()=>m({},un,o.localeText),[o.localeText]),n=a.useMemo(()=>sh({defaultSlots:fh,slots:o.slots,components:t}),[t,o.slots]);return a.useMemo(()=>{var i;return m({},jr,o,{localeText:l,slots:n,slotProps:(i=o.slotProps)!=null?i:r},ph)},[o,l,n,r])},mh=e=>m({},e,{rowsMeta:{currentPageTotalHeight:0,positions:[]}}),aa=(e,t,r)=>typeof e=="number"&&e>0?e:t,bh=(e,t)=>{const{getRowHeight:r,getRowSpacing:o,getEstimatedRowHeight:l}=t,n=a.useRef(Object.create(null)),i=a.useRef(-1),s=a.useRef(!1),u=Q(e,Qt),d=Q(e,Re),c=Q(e,Gl),p=Q(e,tt),f=Zt(e,t),b=Q(e,gr),g=aa(t.rowHeight,jr.rowHeight),h=Math.floor(g*u),x=a.useCallback(()=>{var R,y;s.current=!1;const w=D=>{n.current[D.id]||(n.current[D.id]={sizes:{baseCenter:h},isResized:!1,autoHeight:!1,needsFirstMeasurement:!0});const{isResized:I,needsFirstMeasurement:$,sizes:N}=n.current[D.id];let j=typeof h=="number"&&h>0?h:52;const G=N.baseCenter;if(I)j=G;else if(r){const le=r(m({},D,{densityFactor:u}));if(le==="auto"){if($){const Ce=l?l(m({},D,{densityFactor:u})):h;j=Ce??h}else j=G;s.current=!0,n.current[D.id].autoHeight=!0}else j=aa(le,h),n.current[D.id].needsFirstMeasurement=!1,n.current[D.id].autoHeight=!1}else n.current[D.id].needsFirstMeasurement=!1;const U={};for(const le in N)/^base[A-Z]/.test(le)&&(U[le]=N[le]);if(U.baseCenter=j,o){var K,J;const le=e.current.getRowIndexRelativeToVisibleRows(D.id),Ce=o(m({},D,{isFirstVisible:le===0,isLastVisible:le===f.rows.length-1,indexRelativeToCurrentPage:le}));U.spacingTop=(K=Ce.top)!=null?K:0,U.spacingBottom=(J=Ce.bottom)!=null?J:0}const ee=e.current.unstable_applyPipeProcessors("rowHeight",U,D);return n.current[D.id].sizes=ee,ee},O=[],M=f.rows.reduce((D,I)=>{O.push(D);let $=0,N=0;const j=w(I);for(const G in j){const U=j[G];/^base[A-Z]/.test(G)?$=U>$?U:$:N+=U}return D+$+N},0);b==null||(R=b.top)==null||R.forEach(D=>{w(D)}),b==null||(y=b.bottom)==null||y.forEach(D=>{w(D)}),e.current.setState(D=>m({},D,{rowsMeta:{currentPageTotalHeight:M,positions:O}})),s.current||(i.current=1/0),e.current.forceUpdate()},[e,f.rows,h,r,o,l,b,u]),S=a.useCallback(R=>{const y=n.current[R];return y?y.sizes.baseCenter:h},[h]),C=R=>{var y;return(y=n.current[R])==null?void 0:y.sizes},E=a.useCallback((R,y)=>{n.current[R].sizes.baseCenter=y,n.current[R].isResized=!0,n.current[R].needsFirstMeasurement=!1,x()},[x]),T=a.useMemo(()=>hl(x,t.rowPositionsDebounceMs),[x,t.rowPositionsDebounceMs]),_=a.useCallback((R,y,w)=>{if(!n.current[R]||!n.current[R].autoHeight)return;const O=n.current[R].sizes[`base${$t(w)}`]!==y;n.current[R].needsFirstMeasurement=!1,n.current[R].sizes[`base${$t(w)}`]=y,O&&T()},[T]),F=a.useCallback(R=>{var y;return((y=n.current[R])==null?void 0:y.autoHeight)||!1},[]),L=a.useCallback(()=>i.current,[]),k=a.useCallback(R=>{s.current&&R>i.current&&(i.current=R)},[]),H=a.useCallback(()=>{n.current={},x()},[x]);a.useEffect(()=>{x()},[h,d,c,p,x]),ln(e,"rowHeight",x);const A={unstable_setLastMeasuredRowIndex:k,unstable_getRowHeight:S,unstable_getRowInternalSizes:C,unstable_setRowHeight:E,unstable_storeRowHeightMeasurement:_,resetRowHeights:H},P={getLastMeasuredRowIndex:L,rowHasAutoHeight:F};me(e,A,"public"),me(e,P,"private")},hh=e=>{const t=a.useCallback((l={})=>e.current.unstable_applyPipeProcessors("exportState",{},l),[e]),r=a.useCallback(l=>{e.current.unstable_applyPipeProcessors("restoreState",{callbacks:[]},{stateToRestore:l}).callbacks.forEach(i=>{i()}),e.current.forceUpdate()},[e]);me(e,{exportState:t,restoreState:r},"public")},Ch=e=>{const t=a.useRef({}),r=a.useCallback((d,c,p)=>{const f=t.current;f[d]||(f[d]={}),f[d][c]=p},[]),o=a.useCallback((d,c)=>{var p;return(p=t.current[d])==null?void 0:p[c]},[]),l=a.useCallback(d=>{const{columnIndex:c,rowId:p,minFirstColumnIndex:f,maxLastColumnIndex:b,columns:g}=d,h=g.length,x=g[c],S=typeof x.colSpan=="function"?x.colSpan(e.current.getCellParams(p,x.field)):x.colSpan;if(!S||S===1)return r(p,c,{spannedByColSpan:!1,cellProps:{colSpan:1,width:x.computedWidth}}),{colSpan:1};let C=x.computedWidth;for(let E=1;E=f&&T{for(let b=c;b1&&(b+=g.colSpan-1)}},[l]),i={unstable_getCellColSpanInfo:o},s={calculateColSpan:n};me(e,i,"public"),me(e,s,"private");const u=a.useCallback(()=>{t.current={}},[]);re(e,"columnOrderChange",u)},Su=(e,t,r)=>{if(Al(e)){if(r[e.field]!==void 0)throw new Error(["MUI: columnGroupingModel contains duplicated field",`column field ${e.field} occurs two times in the grouping model:`,`- ${r[e.field].join(" > ")}`,`- ${t.join(" > ")}`].join(` -`));r[e.field]=t;return}const{groupId:o,children:l}=e;l.forEach(n=>{Su(n,[...t,o],r)})},pl=e=>{if(!e)return{};const t={};return e.forEach(r=>{Su(r,[],t)}),t},fl=(e,t,r)=>{const o=u=>{var d;return(d=t[u])!=null?d:[]},l=[],n=Math.max(...e.map(u=>o(u).length)),i=(u,d,c)=>It(o(u).slice(0,c+1),o(d).slice(0,c+1)),s=(u,d)=>!!(r!=null&&r.left&&r.left.includes(u)&&!r.left.includes(d)||r!=null&&r.right&&!r.right.includes(u)&&r.right.includes(d));for(let u=0;u{var f;const b=(f=o(p)[u])!=null?f:null;if(c.length===0)return[{columnFields:[p],groupId:b}];const g=c[c.length-1],h=g.columnFields[g.columnFields.length-1];return g.groupId!==b||!i(h,p,u)||s(h,p)?[...c,{columnFields:[p],groupId:b}]:[...c.slice(0,c.length-1),{columnFields:[...g.columnFields,p],groupId:b}]},[]);l.push(d)}return l},wh=["groupId","children"],cn=e=>{let t={};return e.forEach(r=>{if(Al(r))return;const{groupId:o,children:l}=r,n=Z(r,wh);if(!o)throw new Error("MUI: An element of the columnGroupingModel does not have either `field` or `groupId`.");l||console.warn(`MUI: group groupId=${o} has no children.`);const i=m({},n,{groupId:o}),s=cn(l);if(s[o]!==void 0||t[o]!==void 0)throw new Error(`MUI: The groupId ${o} is used multiple times in the columnGroupingModel.`);t=m({},t,s,{[o]:i})}),m({},t)},Sh=(e,t,r)=>{var o,l,n,i;if(!((o=t.experimentalFeatures)!=null&&o.columnGrouping))return e;const s=Pt(r),u=Lr(r),d=cn((l=t.columnGroupingModel)!=null?l:[]),c=pl((n=t.columnGroupingModel)!=null?n:[]),p=fl(s,c,(i=r.current.state.pinnedColumns)!=null?i:{}),f=u.length===0?0:Math.max(...u.map(b=>{var g,h;return(g=(h=c[b])==null?void 0:h.length)!=null?g:0}));return m({},e,{columnGrouping:{lookup:d,unwrappedGroupingModel:c,headerStructure:p,maxDepth:f}})},Oh=(e,t)=>{var r;const o=a.useCallback(u=>{var d;return(d=Ma(e)[u])!=null?d:[]},[e]),l=a.useCallback(()=>yl(e),[e]);me(e,{unstable_getColumnGroupPath:o,unstable_getAllGroupDetails:l},"public");const i=a.useCallback(()=>{var u;const d=pl((u=t.columnGroupingModel)!=null?u:[]);e.current.setState(c=>{var p,f,b;const g=(p=(f=c.columns)==null?void 0:f.orderedFields)!=null?p:[],h=(b=c.pinnedColumns)!=null?b:{},x=fl(g,d,h);return m({},c,{columnGrouping:m({},c.columnGrouping,{headerStructure:x})})})},[e,t.columnGroupingModel]),s=a.useCallback(u=>{var d,c,p,f;if(!((d=t.experimentalFeatures)!=null&&d.columnGrouping))return;const b=(c=(p=(f=e.current).getPinnedColumns)==null?void 0:p.call(f))!=null?c:{},g=Pt(e),h=Lr(e),x=cn(u??[]),S=pl(u??[]),C=fl(g,S,b),E=h.length===0?0:Math.max(...h.map(T=>{var _,F;return(_=(F=S[T])==null?void 0:F.length)!=null?_:0}));e.current.setState(T=>m({},T,{columnGrouping:{lookup:x,unwrappedGroupingModel:S,headerStructure:C,maxDepth:E}}))},[e,(r=t.experimentalFeatures)==null?void 0:r.columnGrouping]);re(e,"columnIndexChange",i),re(e,"columnsChange",()=>{s(t.columnGroupingModel)}),re(e,"columnVisibilityModelChange",()=>{s(t.columnGroupingModel)}),a.useEffect(()=>{s(t.columnGroupingModel)},[s,t.columnGroupingModel])},Ph=(e,t)=>{const r=Pm(e,t);return Ib(r,t),xb(r),Qe(vb,r,t),Qe(_m,r,t),Qe(Cb,r,t),Qe(bb,r,t),Qe(rb,r,t),Qe(Mb,r,t),Qe(ab,r,t),Qe(Ym,r,t),Qe(zm,r,t),Qe(Wm,r,t),Qe(mh,r,t),Qe(Dm,r,t),Qe(Sh,r,t),Qe(Ni,r,t),nb(r,t),Fb(r,t),Vm(r,t),wb(r,t),zd(r,t),Ch(r),Oh(r,t),hb(r,t),ob(r,t),ib(r,t),tb(r,t),kb(r,t),jm(r,t),Km(r,t),bh(r,t),Eb(r,t),$m(r),qm(r,t),Jm(r,t),Tm(r,t),Db(r,t),Lb(r,t),hh(r),Gi(r,t),r},xh=e=>{const{classes:t}=e;return he({root:["virtualScroller"]},be,t)},vh=_e("div",{name:"MuiDataGrid",slot:"VirtualScroller",overridesResolver:(e,t)=>t.virtualScroller})({overflow:"auto",height:"100%",position:"relative","@media print":{overflow:"hidden"},zIndex:0}),Fh=a.forwardRef(function(t,r){const o=Y(),l=xh(o);return v.jsx(vh,m({ref:r},t,{className:xe(l.root,t.className),ownerState:o}))}),yh=(e,t)=>{const{classes:r}=e;return he({root:["virtualScrollerContent",t&&"virtualScrollerContent--overflowed"]},be,r)},Ih=_e("div",{name:"MuiDataGrid",slot:"VirtualScrollerContent",overridesResolver:(e,t)=>t.virtualScrollerContent})({}),Mh=a.forwardRef(function(t,r){var o;const l=Y(),n=!l.autoHeight&&((o=t.style)==null?void 0:o.minHeight)==="auto",i=yh(l,n);return v.jsx(Ih,m({ref:r},t,{ownerState:l,className:xe(i.root,t.className)}))}),kh=["className"],Eh=e=>{const{classes:t}=e;return he({root:["virtualScrollerRenderZone"]},be,t)},Lh=_e("div",{name:"MuiDataGrid",slot:"VirtualScrollerRenderZone",overridesResolver:(e,t)=>t.virtualScrollerRenderZone})({position:"absolute",display:"flex",flexDirection:"column"}),Th=a.forwardRef(function(t,r){const{className:o}=t,l=Z(t,kh),n=Y(),i=Eh(n);return v.jsx(Lh,m({ref:r,className:xe(i.root,o),ownerState:n},l))}),Dh=["className"],$h=a.forwardRef(function(t,r){const{className:o}=t,l=Z(t,Dh),{getRootProps:n,getContentProps:i,getRenderZoneProps:s,getRows:u}=_b({ref:r});return v.jsxs(Fh,m({className:o},n(l),{children:[v.jsx(Za,{}),v.jsx(Mh,m({},i(),{children:v.jsx(Th,m({},s(),{children:u()}))}))]}))}),Ou=a.forwardRef(function(t,r){const o=gh(t),l=Ph(o.apiRef,o);return v.jsx(Xs,{privateApiRef:l,props:o,children:v.jsxs(gi,m({className:o.className,style:o.style,sx:o.sx,ref:r},o.forwardedProps,{children:[v.jsx(Ns,{}),v.jsx(ja,{VirtualScrollerComponent:$h}),v.jsx(Ba,{})]}))})}),Ah=a.memo(Ou),Rh=jr.filterDebounceMs,Hh=jr.filterDebounceMs;Ou.propTypes={apiRef:z.shape({current:z.object.isRequired}),"aria-label":z.string,"aria-labelledby":z.string,autoHeight:z.bool,autoPageSize:z.bool,cellModesModel:z.object,checkboxSelection:z.bool,classes:z.object,clipboardCopyCellDelimiter:z.string,columnBuffer:z.number,columnGroupingModel:z.arrayOf(z.object),columnHeaderHeight:z.number,columns:uc(z.array.isRequired),columnThreshold:z.number,columnVisibilityModel:z.object,components:z.object,componentsProps:z.object,density:z.oneOf(["comfortable","compact","standard"]),disableColumnFilter:z.bool,disableColumnMenu:z.bool,disableColumnSelector:z.bool,disableDensitySelector:z.bool,disableEval:z.bool,disableRowSelectionOnClick:z.bool,disableVirtualization:z.bool,editMode:z.oneOf(["cell","row"]),experimentalFeatures:z.shape({ariaV7:z.bool,columnGrouping:z.bool,warnIfFocusStateIsNotSynced:z.bool}),filterDebounceMs:z.number,filterMode:z.oneOf(["client","server"]),filterModel:z.shape({items:z.arrayOf(z.shape({field:z.string.isRequired,id:z.oneOfType([z.number,z.string]),operator:z.string.isRequired,value:z.any})).isRequired,logicOperator:z.oneOf(["and","or"]),quickFilterExcludeHiddenColumns:z.bool,quickFilterLogicOperator:z.oneOf(["and","or"]),quickFilterValues:z.array}),forwardedProps:z.object,getCellClassName:z.func,getDetailPanelContent:z.func,getEstimatedRowHeight:z.func,getRowClassName:z.func,getRowHeight:z.func,getRowId:z.func,getRowSpacing:z.func,hideFooter:z.bool,hideFooterPagination:z.bool,hideFooterSelectedRowCount:z.bool,ignoreDiacritics:z.bool,initialState:z.object,isCellEditable:z.func,isRowSelectable:z.func,keepNonExistentRowsSelected:z.bool,loading:z.bool,localeText:z.object,logger:z.shape({debug:z.func.isRequired,error:z.func.isRequired,info:z.func.isRequired,warn:z.func.isRequired}),logLevel:z.oneOf(["debug","error","info","warn",!1]),nonce:z.string,onCellClick:z.func,onCellDoubleClick:z.func,onCellEditStart:z.func,onCellEditStop:z.func,onCellKeyDown:z.func,onCellModesModelChange:z.func,onClipboardCopy:z.func,onColumnHeaderClick:z.func,onColumnHeaderDoubleClick:z.func,onColumnHeaderEnter:z.func,onColumnHeaderLeave:z.func,onColumnHeaderOut:z.func,onColumnHeaderOver:z.func,onColumnOrderChange:z.func,onColumnVisibilityModelChange:z.func,onFilterModelChange:z.func,onMenuClose:z.func,onMenuOpen:z.func,onPaginationModelChange:z.func,onPreferencePanelClose:z.func,onPreferencePanelOpen:z.func,onProcessRowUpdateError:z.func,onResize:z.func,onRowClick:z.func,onRowDoubleClick:z.func,onRowEditCommit:z.func,onRowEditStart:z.func,onRowEditStop:z.func,onRowModesModelChange:z.func,onRowSelectionModelChange:z.func,onSortModelChange:z.func,onStateChange:z.func,pageSizeOptions:z.arrayOf(z.oneOfType([z.number,z.shape({label:z.string.isRequired,value:z.number.isRequired})]).isRequired),pagination:e=>e.pagination===!1?new Error(["MUI: `` is not a valid prop.","Infinite scrolling is not available in the MIT version.","","You need to upgrade to DataGridPro or DataGridPremium component to disable the pagination."].join(` -`)):null,paginationMode:z.oneOf(["client","server"]),paginationModel:z.shape({page:z.number.isRequired,pageSize:z.number.isRequired}),processRowUpdate:z.func,rowBuffer:z.number,rowCount:z.number,rowHeight:z.number,rowModesModel:z.object,rowPositionsDebounceMs:z.number,rows:z.arrayOf(z.object).isRequired,rowSelection:z.bool,rowSelectionModel:z.oneOfType([z.arrayOf(z.oneOfType([z.number,z.string]).isRequired),z.number,z.string]),rowSpacingType:z.oneOf(["border","margin"]),rowThreshold:z.number,scrollbarSize:z.number,showCellVerticalBorder:z.bool,showColumnVerticalBorder:z.bool,slotProps:z.object,slots:z.object,sortingMode:z.oneOf(["client","server"]),sortingOrder:z.arrayOf(z.oneOf(["asc","desc"])),sortModel:z.arrayOf(z.shape({field:z.string.isRequired,sort:z.oneOf(["asc","desc"])})),sx:z.oneOfType([z.arrayOf(z.oneOfType([z.func,z.object,z.bool])),z.func,z.object]),unstable_ignoreValueFormatterDuringExport:z.oneOfType([z.shape({clipboardExport:z.bool,csvExport:z.bool}),z.bool])};const _h={components:{MuiBreadcrumbs:{defaultProps:{expandText:"إظهار المسار"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"انتقل إلى الصفحة الأولى":e==="last"?"انتقل إلى الصفحة الأخيرة":e==="next"?"انتقل إلى الصفحة التالية":"انتقل إلى الصفحة السابقة",labelRowsPerPage:"عدد الصفوف في الصفحة:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} من ${r!==-1?r:` أكثر من${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} ${e!==1?"نجوم":"نجمة"}`,emptyLabelText:"فارغ"}},MuiAutocomplete:{defaultProps:{clearText:"مسح",closeText:"إغلاق",loadingText:"جار التحميل...",noOptionsText:"لا يوجد خيارات",openText:"فتح"}},MuiAlert:{defaultProps:{closeText:"إغلاق"}},MuiPagination:{defaultProps:{"aria-label":"التنقل عبر الصفحات",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"انتقل إلى "} صفحة ${t}`:e==="first"?"انتقل إلى الصفحة الأولى":e==="last"?"انتقل الي الصفحة الأخيرة":e==="next"?"انتقل إلى الصفحة التالية":"انتقل إلى الصفحة السابقة"}}}},Vh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Показване на пътя"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Отиди на първата страница":e==="last"?"Отиди на последната страница":e==="next"?"Отиди на следващата страница":"Отиди на предишната страница",labelRowsPerPage:"Редове на страница:"}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Звезд${e!==1?"и":"а"}`,emptyLabelText:"Изчисти"}},MuiAutocomplete:{defaultProps:{clearText:"Изчисти",closeText:"Затвори",loadingText:"Зареждане…",noOptionsText:"Няма налични опции",openText:"Отвори"}},MuiAlert:{defaultProps:{closeText:"Затвори"}},MuiPagination:{defaultProps:{"aria-label":"Пагинация",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Към "}страница ${t}`:e==="first"?"Отиди на първата страница":e==="last"?"Отиди на последната страница":e==="next"?"Отиди на следващата страница":"Отиди на предишната страница"}}}},Nh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Ukázat cestu"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Jít na první stránku":e==="last"?"Jít na poslední stránku":e==="next"?"Jít na další stránku":"Jít na předchozí stránku",labelRowsPerPage:"Řádků na stránce:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} z ${r!==-1?r:`více než ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>e===1?`${e} hvězdička`:e>=2&&e<=4?`${e} hvězdičky`:`${e} hvězdiček`,emptyLabelText:"Prázdné"}},MuiAutocomplete:{defaultProps:{clearText:"Vymazat",closeText:"Zavřít",loadingText:"Načítání…",noOptionsText:"Žádné možnosti",openText:"Otevřít"}},MuiAlert:{defaultProps:{closeText:"Zavřít"}},MuiPagination:{defaultProps:{"aria-label":"Navigace stránkováním",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Jít na "}${t}. stránku`:e==="first"?"Jít na první stránku":e==="last"?"Jít na poslední stránku":e==="next"?"Jít na další stránku":"Jít na předchozí stránku"}}}},Gh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Vis sti"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Gå til den første side":e==="last"?"Gå til den sidste side":e==="next"?"Gå til den næste side":"Gå til den forrige side",labelRowsPerPage:"Rækker pr side:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}-${t} af ${r!==-1?r:`mere end ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Stjern${e!==1?"er":""}`,emptyLabelText:"Tom"}},MuiAutocomplete:{defaultProps:{clearText:"Slet",closeText:"Luk",loadingText:"Indlæser…",noOptionsText:"Ingen muligheder",openText:"Åben"}},MuiAlert:{defaultProps:{closeText:"Luk"}},MuiPagination:{defaultProps:{"aria-label":"Sideinddelings navigation",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Go to "}page ${t}`:e==="first"?"Gå til den første side":e==="last"?"Gå til den sidste side":e==="next"?"Gå til den næste side":"Gå til den forrige side"}}}},zh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Pfad anzeigen"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Zur ersten Seite":e==="last"?"Zur letzten Seite":e==="next"?"Zur nächsten Seite":"Zur vorherigen Seite",labelRowsPerPage:"Zeilen pro Seite:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} von ${r!==-1?r:`mehr als ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} ${e!==1?"Sterne":"Stern"}`,emptyLabelText:"Keine Wertung"}},MuiAutocomplete:{defaultProps:{clearText:"Leeren",closeText:"Schließen",loadingText:"Wird geladen…",noOptionsText:"Keine Optionen",openText:"Öffnen"}},MuiAlert:{defaultProps:{closeText:"Schließen"}},MuiPagination:{defaultProps:{"aria-label":"Navigation via Seitennummerierung",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Gehe zu "}Seite ${t}`:e==="first"?"Zur ersten Seite":e==="last"?"Zur letzten Seite":e==="next"?"Zur nächsten Seite":"Zur vorherigen Seite"}}}},jh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Εμφάνιση διαδρομής"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Πρώτη σελίδα":e==="last"?"Τελευταία σελίδα":e==="next"?"Επόμενη σελίδα":"Προηγούμενη σελίδα",labelRowsPerPage:"Γραμμές ανα σελίδα:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} από ${r!==-1?r:`πάνω από ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Αστέρι${e!==1?"α":""}`,emptyLabelText:"Χωρίς βαθμολόγηση"}},MuiAutocomplete:{defaultProps:{clearText:"Καθαρισμός",closeText:"Κλείσιμο",loadingText:"Φόρτωση…",noOptionsText:"Δεν υπάρχουν επιλογές",openText:"Άνοιγμα"}},MuiAlert:{defaultProps:{closeText:"Κλείσιμο"}},MuiPagination:{defaultProps:{"aria-label":"Πλοήγηση σε σελίδες",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Μετάβαση "}σελίδα ${t}`:e==="first"?"Πρώτη σελίδα":e==="last"?"Τελευταία σελίδα":e==="next"?"Επόμενη σελίδα":"Προηγούμενη σελίδα"}}}},Bh={},Uh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Mostrar ruta"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Ir a la primera página":e==="last"?"Ir a la última página":e==="next"?"Ir a la página siguiente":"Ir a la página anterior",labelRowsPerPage:"Filas por página:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} de ${r!==-1?r:`más de ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Estrella${e!==1?"s":""}`,emptyLabelText:"Vacío"}},MuiAutocomplete:{defaultProps:{clearText:"Limpiar",closeText:"Cerrar",loadingText:"Cargando…",noOptionsText:"Sin opciones",openText:"Abierto"}},MuiAlert:{defaultProps:{closeText:"Cerrar"}},MuiPagination:{defaultProps:{"aria-label":"Paginador",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Ir a la "}página ${t}`:e==="first"?"Ir a la primera página":e==="last"?"Ir a la última página":e==="next"?"Ir a la página siguiente":"Ir a la página anterior"}}}},qh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"نمایش مسیر"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"رفتن به اولین صفحه":e==="last"?"رفتن به آخرین صفحه":e==="next"?"رفتن به صفحه‌ی بعدی":"رفتن به صفحه‌ی قبلی",labelRowsPerPage:"تعداد سطرهای هر صفحه:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} از ${r!==-1?r:`بیشتر از ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} ستاره`,emptyLabelText:"خالی"}},MuiAutocomplete:{defaultProps:{clearText:"پاک‌کردن",closeText:"بستن",loadingText:"در حال بارگذاری…",noOptionsText:"بی‌نتیجه",openText:"بازکردن"}},MuiAlert:{defaultProps:{closeText:"بستن"}},MuiPagination:{defaultProps:{"aria-label":"ناوبری صفحه",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"رفتن به "}صفحهٔ ${t}`:e==="first"?"رفتن به اولین صفحه":e==="last"?"رفتن به آخرین صفحه":e==="next"?"رفتن به صفحه‌ی بعدی":"رفتن به صفحه‌ی قبلی"}}}},Wh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Näytä reitti"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Mene ensimmäiselle sivulle":e==="last"?"Mene viimeiselle sivulle":e==="next"?"Mene seuraavalle sivulle":"Mene edelliselle sivulle",labelRowsPerPage:"Rivejä per sivu:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} / ${r!==-1?r:`enemmän kuin ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Täht${e!==1?"eä":"i"}`,emptyLabelText:"Tyhjä"}},MuiAutocomplete:{defaultProps:{clearText:"Tyhjennä",closeText:"Sulje",loadingText:"Ladataan…",noOptionsText:"Ei valintoja",openText:"Avaa"}},MuiAlert:{defaultProps:{closeText:"Sulje"}},MuiPagination:{defaultProps:{"aria-label":"Sivutus navigaatio",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"sivu":"Mene sivulle"} ${t}`:e==="first"?"Mene ensimmäiselle sivulle":e==="last"?"Mene viimeiselle sivulle":e==="next"?"Mene seuraavalle sivulle":"Mene edelliselle sivulle"}}}},Kh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Montrer le chemin"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Aller à la première page":e==="last"?"Aller à la dernière page":e==="next"?"Aller à la page suivante":"Aller à la page précédente",labelRowsPerPage:"Lignes par page :",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} sur ${r!==-1?r:`plus que ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Etoile${e!==1?"s":""}`,emptyLabelText:"Vide"}},MuiAutocomplete:{defaultProps:{clearText:"Vider",closeText:"Fermer",loadingText:"Chargement…",noOptionsText:"Pas de résultats",openText:"Ouvrir"}},MuiAlert:{defaultProps:{closeText:"Fermer"}},MuiPagination:{defaultProps:{"aria-label":"navigation de pagination",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Aller à la "}page ${t}`:e==="first"?"Aller à la première page":e==="last"?"Aller à la dernière page":e==="next"?"Aller à la page suivante":"Aller à la page précédente"}}}},Qh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"הצג נתיב"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"לעמוד הראשון":e==="last"?"לעמוד האחרון":e==="next"?"לעמוד הבא":"לעמוד הקודם",labelRowsPerPage:"שורות בעמוד:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} מתוך ${r!==-1?r:`יותר מ ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} כוכב${e!==1?"ים":""}`,emptyLabelText:"ריק"}},MuiAutocomplete:{defaultProps:{clearText:"נקה",closeText:"סגור",loadingText:"טוען…",noOptionsText:"אין אופציות",openText:"פתח"}},MuiAlert:{defaultProps:{closeText:"סגור"}},MuiPagination:{defaultProps:{"aria-label":"ניווט בעמודים",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"ל "}עמוד ${t}`:e==="first"?"לעמוד הראשון":e==="last"?"לעמוד האחרון":e==="next"?"לעמוד הבא":"לעמוד הקודם"}}}},Zh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Pokaži putanju"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Idi na prvu stranicu":e==="last"?"Idi na posljednju stranicu":e==="next"?"Idi na sljedeću stranicu":"Idi na prethodnu stranicu",labelRowsPerPage:"Redova po stranici:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} od ${r!==-1?r:`više nego ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>{const t=e%10,r=e%100;return[2,3,4].includes(t)&&![12,13,14].includes(r)?"Zvijezde":"Zvijezda"},emptyLabelText:"Prazno"}},MuiAutocomplete:{defaultProps:{clearText:"Briši",closeText:"Zatvori",loadingText:"Učitavanje…",noOptionsText:"Nema opcija",openText:"Otvori"}},MuiAlert:{defaultProps:{closeText:"Zatvori"}},MuiPagination:{defaultProps:{"aria-label":"Navigacija po stranicama",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Idi na "}stranicu ${t}`:e==="first"?"Idi na prvu stranicu":e==="last"?"Idi na zadnju stranicu":e==="next"?"Idi na sljedeću stranicu":"Idi na prethodnu stranicu"}}}},Jh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Útvonal"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Első oldalra":e==="last"?"Utolsó oldalra":e==="next"?"Következő oldalra":"Előző oldalra",labelRowsPerPage:"Sorok száma:"}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Csillag`,emptyLabelText:"Üres"}},MuiAutocomplete:{defaultProps:{clearText:"Törlés",closeText:"Bezárás",loadingText:"Töltés…",noOptionsText:"Nincs találat",openText:"Megnyitás"}},MuiAlert:{defaultProps:{closeText:"Bezárás"}},MuiPagination:{defaultProps:{"aria-label":"Lapozás",getItemAriaLabel:(e,t,r)=>e==="page"?`${t}. oldal${r?"":"ra"}`:e==="first"?"Első oldalra":e==="last"?"Utolsó oldalra":e==="next"?"Következő oldalra":"Előző oldalra"}}}},Yh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Visualizza percorso"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Vai alla prima pagina":e==="last"?"Vai all'ultima pagina":e==="next"?"Vai alla pagina successiva":"Vai alla pagina precedente",labelRowsPerPage:"Righe per pagina:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} di ${r!==-1?r:`più di ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Stell${e!==1?"e":"a"}`,emptyLabelText:"Vuoto"}},MuiAutocomplete:{defaultProps:{clearText:"Svuota",closeText:"Chiudi",loadingText:"Caricamento in corso…",noOptionsText:"Nessuna opzione",openText:"Apri"}},MuiAlert:{defaultProps:{closeText:"Chiudi"}},MuiPagination:{defaultProps:{"aria-label":"Navigazione impaginata",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Vai alla "}pagina ${t}`:e==="first"?"Vai alla prima pagina":e==="last"?"Vai all'ultima pagina":e==="next"?"Vai alla pagina successiva":"Vai alla pagina precedente"}}}},Xh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"すべて表示"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"最初のページへ":e==="last"?"最後のページへ":e==="next"?"次のページへ":"前のページへ",labelRowsPerPage:"ページあたりの行数:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}~${t} / ${r!==-1?r:`${t}以上`}`}},MuiRating:{defaultProps:{getLabelText:e=>`星${e}`,emptyLabelText:"星なし"}},MuiAutocomplete:{defaultProps:{clearText:"クリア",closeText:"閉じる",loadingText:"読み込み中…",noOptionsText:"データがありません",openText:"開く"}},MuiAlert:{defaultProps:{closeText:"閉じる"}},MuiPagination:{defaultProps:{"aria-label":"ページ選択",getItemAriaLabel:(e,t,r)=>e==="page"?`ページ${t}${r?"":"へ"}`:e==="first"?"最初のページへ":e==="last"?"最後のページへ":e==="next"?"次のページへ":"前のページへ"}}}},eC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"경로 보기"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"첫 번째 페이지로 이동":e==="last"?"마지막 페이지로 이동":e==="next"?"다음 페이지로 이동":"이전 페이지로 이동",labelRowsPerPage:"페이지 당 행:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} / ${r!==-1?r:`${t}개 이상`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} 점`,emptyLabelText:"빈 텍스트"}},MuiAutocomplete:{defaultProps:{clearText:"지우기",closeText:"닫기",loadingText:"불러오는 중…",noOptionsText:"옵션 없음",openText:"열기"}},MuiAlert:{defaultProps:{closeText:"닫기"}},MuiPagination:{defaultProps:{"aria-label":"페이지네이션 네비게이션",getItemAriaLabel:(e,t,r)=>e==="page"?`${t} 번째 페이지${r?"":"로 이동"}`:e==="first"?"첫 번째 페이지로 이동":e==="last"?"마지막 페이지로 이동":e==="next"?"다음 페이지로 이동":"이전 페이지로 이동"}}}},tC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Vis sti"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Gå til første side":e==="last"?"Gå til siste side":e==="next"?"Gå til neste side":"Gå til forrige side",labelRowsPerPage:"Rader per side:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} av ${r!==-1?r:`mer enn ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Stjerne${e!==1?"r":""}`,emptyLabelText:"Tom"}},MuiAutocomplete:{defaultProps:{clearText:"Tøm",closeText:"Lukk",loadingText:"Laster inn…",noOptionsText:"Ingen alternativer",openText:"Åpne"}},MuiAlert:{defaultProps:{closeText:"Lukk"}},MuiPagination:{defaultProps:{"aria-label":"Paginering navigasjon",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Gå til "}side ${t}`:e==="first"?"Gå til første side":e==="last"?"Gå til siste side":e==="next"?"Gå til neste side":"Gå til forrige side"}}}},rC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Pad tonen"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Ga naar eerste pagina":e==="last"?"Ga naar laatste pagina":e==="next"?"Ga naar volgende pagina":"Ga naar vorige pagina",labelRowsPerPage:"Regels per pagina:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} van ${r!==-1?r:`meer dan ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Ster${e!==1?"ren":""}`,emptyLabelText:"Leeg"}},MuiAutocomplete:{defaultProps:{clearText:"Wissen",closeText:"Sluiten",loadingText:"Laden…",noOptionsText:"Geen opties",openText:"Openen"}},MuiAlert:{defaultProps:{closeText:"Sluiten"}},MuiPagination:{defaultProps:{"aria-label":"Navigatie via paginering",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Ga naar "}pagina ${t}`:e==="first"?"Ga naar eerste pagina":e==="last"?"Ga naar laatste pagina":e==="next"?"Ga naar volgende pagina":"Ga naar vorige pagina"}}}},oC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Pokaż ścieżkę"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Przejdź do pierwszej strony":e==="last"?"Przejdź do ostatniej strony":e==="next"?"Przejdź do następnej strony":"Przejdź do poprzedniej strony",labelRowsPerPage:"Wierszy na stronę:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} z ${r!==-1?r:`ponad ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>{let t="gwiazdek";const r=e%10;return(e<10||e>20)&&r>1&&r<5?t="gwiazdki":e===1&&(t="gwiazdka"),`${e} ${t}`},emptyLabelText:"Brak gwiazdek"}},MuiAutocomplete:{defaultProps:{clearText:"Wyczyść",closeText:"Zamknij",loadingText:"Ładowanie…",noOptionsText:"Brak opcji",openText:"Otwórz"}},MuiAlert:{defaultProps:{closeText:"Zamknij"}},MuiPagination:{defaultProps:{"aria-label":"Nawigacja podziału na strony",getItemAriaLabel:(e,t,r)=>e==="page"?r?`${t}. strona`:`Przejdź do ${t}. strony`:e==="first"?"Przejdź do pierwszej strony":e==="last"?"Przejdź do ostatniej strony":e==="next"?"Przejdź do następnej strony":"Przejdź do poprzedniej strony"}}}},lC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Mostrar caminho"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Ir para a primeira página":e==="last"?"Ir para a última página":e==="next"?"Ir para a próxima página":"Ir para a página anterior",labelRowsPerPage:"Linhas por página:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} de ${r!==-1?r:`mais de ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Estrela${e!==1?"s":""}`,emptyLabelText:"Vazio"}},MuiAutocomplete:{defaultProps:{clearText:"Limpar",closeText:"Fechar",loadingText:"Carregando…",noOptionsText:"Sem opções",openText:"Abrir"}},MuiAlert:{defaultProps:{closeText:"Fechar"}},MuiPagination:{defaultProps:{"aria-label":"Navegar pela paginação",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Ir para a "}página ${t}`:e==="first"?"Ir para a primeira página":e==="last"?"Ir para a última página":e==="next"?"Ir para a próxima página":"Ir para a página anterior"}}}},nC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Mostrar caminho"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Primeira página":e==="last"?"Última página":e==="next"?"Próxima página":"Página anterior",labelRowsPerPage:"Linhas por página:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} de ${r!==-1?r:`mais de ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Estrela${e!==1?"s":""}`,emptyLabelText:"Vazio"}},MuiAutocomplete:{defaultProps:{clearText:"Limpar",closeText:"Fechar",loadingText:"A carregar…",noOptionsText:"Sem opções",openText:"Abrir"}},MuiAlert:{defaultProps:{closeText:"Fechar"}},MuiPagination:{defaultProps:{"aria-label":"Navegar por páginas",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Ir para a "}página ${t}`:e==="first"?"Primeira página":e==="last"?"Última página":e==="next"?"Próxima página":"Página anterior"}}}},aC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Arată calea"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Mergi la prima pagină":e==="last"?"Mergi la ultima pagină":e==="next"?"Mergi la pagina următoare":"Mergi la pagina precedentă",labelRowsPerPage:"Rânduri pe pagină:"}},MuiRating:{defaultProps:{getLabelText:e=>`${e} St${e!==1?"ele":"ea"}`,emptyLabelText:"Gol"}},MuiAutocomplete:{defaultProps:{clearText:"Șterge",closeText:"Închide",loadingText:"Se încarcă…",noOptionsText:"Nicio opțiune",openText:"Deschide"}},MuiAlert:{defaultProps:{closeText:"Închide"}},MuiPagination:{defaultProps:{"aria-label":"Navigare prin paginare",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Mergi la "}pagina ${t}`:e==="first"?"Mergi la prima pagină":e==="last"?"Mergi la ultima pagină":e==="next"?"Mergi la pagina următoare":"Mergi la pagina precedentă"}}}},iC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Показать полный путь"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Перейти на первую страницу":e==="last"?"Перейти на последнюю страницу":e==="next"?"Перейти на следующую страницу":"Перейти на предыдущую страницу",labelRowsPerPage:"Строк на странице:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} из ${r!==-1?r:`более чем ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>{let t="Звёзд";const r=e%10;return r>1&&r<5?t="Звезды":r===1&&(t="Звезда"),`${e} ${t}`},emptyLabelText:"Рейтинг отсутствует"}},MuiAutocomplete:{defaultProps:{clearText:"Очистить",closeText:"Закрыть",loadingText:"Загрузка…",noOptionsText:"Нет доступных вариантов",openText:"Открыть"}},MuiAlert:{defaultProps:{closeText:"Закрыть"}},MuiPagination:{defaultProps:{"aria-label":"Навигация по страницам",getItemAriaLabel:(e,t,r)=>e==="page"?r?`${t} страница`:`Перейти на ${t} страницу`:e==="first"?"Перейти на первую страницу":e==="last"?"Перейти на последнюю страницу":e==="next"?"Перейти на следующую страницу":"Перейти на предыдущую страницу"}}}},sC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Ukázať cestu "}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Ísť na prvú stránku":e==="last"?"Ísť na poslednú stránku":e==="next"?"Ísť na ďaľšiu stránku":"Ísť na predchádzajúcu stránku",labelRowsPerPage:"Riadkov na stránke:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} z ${r!==-1?r:`viac ako ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>e===1?`${e} hviezdička`:e>=2&&e<=4?`${e} hviezdičky`:`${e} hviezdičiek`,emptyLabelText:"Prázdne"}},MuiAutocomplete:{defaultProps:{clearText:"Vymazať",closeText:"Zavrieť",loadingText:"Načítanie…",noOptionsText:"Žiadne možnosti",openText:"Otvoriť"}},MuiAlert:{defaultProps:{closeText:"Zavrieť"}},MuiPagination:{defaultProps:{"aria-label":"Navigácia stránkovanim",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Ísť na "}stránku ${t}`:e==="first"?"Ísť na prvú stránku":e==="last"?"Ísť na poslednú stránku":e==="next"?"Ísť na ďaľšiu stránku":"Ísť na predchádzajúcu stránku"}}}},uC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Visa sökväg"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Gå till första sidan":e==="last"?"Gå till sista sidan":e==="next"?"Gå till nästa sida":"Gå till föregående sida",labelRowsPerPage:"Rader per sida:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} av ${r!==-1?r:`fler än ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} ${e!==1?"Stjärnor":"Stjärna"}`,emptyLabelText:"Tom"}},MuiAutocomplete:{defaultProps:{clearText:"Rensa",closeText:"Stäng",loadingText:"Laddar…",noOptionsText:"Inga alternativ",openText:"Öppna"}},MuiAlert:{defaultProps:{closeText:"Stäng"}},MuiPagination:{defaultProps:{"aria-label":"Sidnavigering",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Gå till "}sida ${t}`:e==="first"?"Gå till första sidan":e==="last"?"Gå till sista sidan":e==="next"?"Gå till nästa sida":"Gå till föregående sida"}}}},cC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Yolu göster"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"İlk sayfaya git":e==="last"?"Son sayfaya git":e==="next"?"Sonraki sayfaya git":"Önceki sayfaya git",labelRowsPerPage:"Sayfa başına satır:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}-${t} / ${r!==-1?r:`${t}'den fazla`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Yıldız`,emptyLabelText:"Boş"}},MuiAutocomplete:{defaultProps:{clearText:"Temizle",closeText:"Kapat",loadingText:"Yükleniyor…",noOptionsText:"Seçenek yok",openText:"Aç"}},MuiAlert:{defaultProps:{closeText:"Kapat"}},MuiPagination:{defaultProps:{"aria-label":"Sayfa navigasyonu",getItemAriaLabel:(e,t,r)=>e==="page"?`${t}. ${r?"sayfa":"sayfaya git"}`:e==="first"?"İlk sayfaya git":e==="last"?"Son sayfaya git":e==="next"?"Sonraki sayfaya git":"Önceki sayfaya git"}}}},dC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Показати шлях сторінок"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Перейти на першу сторінку":e==="last"?"Перейти на останню сторінку":e==="next"?"Перейти на наступну сторінку":"Перейти на попередню сторінку",labelRowsPerPage:"Рядків на сторінці:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} з ${r!==-1?r:`понад ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>{let t="Зірок";const r=e%10;return r>1&&r<5?t="Зірки":r===1&&(t="Зірка"),`${e} ${t}`},emptyLabelText:"Рейтинг відсутній"}},MuiAutocomplete:{defaultProps:{clearText:"Очистити",closeText:"Згорнути",loadingText:"Завантаження…",noOptionsText:"Немає варіантів",openText:"Розгорнути"}},MuiAlert:{defaultProps:{closeText:"Згорнути"}},MuiPagination:{defaultProps:{"aria-label":"Навігація сторінками",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Перейти на "}сторінку ${t}`:e==="first"?"Перейти на першу сторінку":e==="last"?"Перейти на останню сторінку":e==="next"?"Перейти на наступну сторінку":"Перейти на попередню сторінку"}}}},pC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Mở ra"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Tới trang đầu tiên":e==="last"?"Tới trang cuối cùng":e==="next"?"Tới trang tiếp theo":"Về trang trước đó",labelRowsPerPage:"Số hàng mỗi trang:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} trong ${r!==-1?r:`nhiều hơn ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} sao`,emptyLabelText:"Không có dữ liệu"}},MuiAutocomplete:{defaultProps:{clearText:"Xóa",closeText:"Đóng",loadingText:"Đang tải…",noOptionsText:"Không có lựa chọn nào",openText:"Mở"}},MuiAlert:{defaultProps:{closeText:"Đóng"}},MuiPagination:{defaultProps:{"aria-label":"Thanh điều khiển trang",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Tới "}trang ${t}`:e==="first"?"Tới trang đầu tiên":e==="last"?"Tới trang cuối cùng":e==="next"?"Tới trang tiếp theo":"Về trang trước đó"}}}},fC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"展开"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"第一页":e==="last"?"最后一页":e==="next"?"下一页":"上一页",labelRowsPerPage:"每页行数:",labelDisplayedRows:({from:e,to:t,count:r})=>`第 ${e} 条到第 ${t} 条,${r!==-1?`共 ${r} 条`:`至少 ${t} 条`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} 颗星`,emptyLabelText:"无标签"}},MuiAutocomplete:{defaultProps:{clearText:"清空",closeText:"关闭",loadingText:"加载中……",noOptionsText:"没有可用选项",openText:"打开"}},MuiAlert:{defaultProps:{closeText:"关闭"}}}},gC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"展開"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"第一頁":e==="last"?"最後一頁":e==="next"?"下一頁":"上一頁",labelRowsPerPage:"每頁行數:",labelDisplayedRows:({from:e,to:t,count:r})=>`第 ${e} 項至第 ${t} 項,${r!==-1?`共 ${r} 項`:`超過 ${t} 項`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} 粒星`,emptyLabelText:"無標籤"}},MuiAutocomplete:{defaultProps:{clearText:"清除",closeText:"關閉",loadingText:"載入中……",noOptionsText:"沒有可用選項",openText:"開啟"}},MuiAlert:{defaultProps:{closeText:"關閉"}}}},mC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"展開"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"第一頁":e==="last"?"最後一頁":e==="next"?"下一頁":"上一頁",labelRowsPerPage:"每頁數量:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e} ~ ${t} / ${r!==-1?r:`${t} 以上`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} 顆星`,emptyLabelText:"無標籤"}},MuiAutocomplete:{defaultProps:{clearText:"清空",closeText:"關閉",loadingText:"載入中…",noOptionsText:"沒有可用選項",openText:"打開"}},MuiAlert:{defaultProps:{closeText:"關閉"}}}},Pe=(e,t)=>{var r;return{components:{MuiDataGrid:{defaultProps:{localeText:m({},e,{MuiTablePagination:(t==null||(r=t.components)==null||(r=r.MuiTablePagination)==null?void 0:r.defaultProps)||{}})}}}}},bC={noRowsLabel:"لا توجد صفوف",noResultsOverlayLabel:"لم يتم العثور على نتائج.",toolbarDensity:"الكثافة",toolbarDensityLabel:"الكثافة",toolbarDensityCompact:"مضغوط",toolbarDensityStandard:"قياسي",toolbarDensityComfortable:"مريح",toolbarColumns:"الأعمدة",toolbarColumnsLabel:"حدد أعمدة",toolbarFilters:"المُرشِحات",toolbarFiltersLabel:"إظهار المرشِحات",toolbarFiltersTooltipHide:"إخفاء المرشِحات",toolbarFiltersTooltipShow:"اظهر المرشِحات",toolbarFiltersTooltipActive:e=>e!==1?`${e} من المرشِحات النشطة`:"مرشِح نشط",toolbarQuickFilterPlaceholder:"بحث...",toolbarQuickFilterLabel:"بحث",toolbarQuickFilterDeleteIconLabel:"أزال",toolbarExport:"تصدير",toolbarExportLabel:"تصدير",toolbarExportCSV:"تنزيل كملف CSV",toolbarExportPrint:"طباعة",toolbarExportExcel:"تحميل كملف الإكسل",columnsPanelTextFieldLabel:"البحث عن العمود",columnsPanelTextFieldPlaceholder:"عنوان العمود",columnsPanelDragIconLabel:"إعادة ترتيب العمود",columnsPanelShowAllButton:"إظهار الكل",columnsPanelHideAllButton:"إخفاء الكل",filterPanelAddFilter:"إضافة مرشِح",filterPanelRemoveAll:"حذف الكل",filterPanelDeleteIconLabel:"حذف",filterPanelLogicOperator:"عامل منطقي",filterPanelOperator:"عامل",filterPanelOperatorAnd:"و",filterPanelOperatorOr:"أو",filterPanelColumns:"الأعمدة",filterPanelInputLabel:"القيمة",filterPanelInputPlaceholder:"ترشِيح قيمة",filterOperatorContains:"يحتوي",filterOperatorEquals:"يساوي",filterOperatorStartsWith:"يبدأ بـ",filterOperatorEndsWith:"ينتهي بـ",filterOperatorIs:"يكون",filterOperatorNot:"ليس",filterOperatorAfter:"بعد",filterOperatorOnOrAfter:"عند أو بعد",filterOperatorBefore:"قبل",filterOperatorOnOrBefore:"عند أو قبل",filterOperatorIsEmpty:"خالي",filterOperatorIsNotEmpty:"غير خالي",filterOperatorIsAnyOf:"أي من","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"يحتوي على",headerFilterOperatorEquals:"يساوي",headerFilterOperatorStartsWith:"يبدأ ب",headerFilterOperatorEndsWith:"ينتهي ب",headerFilterOperatorIs:"هو",headerFilterOperatorNot:"هو ليس",headerFilterOperatorAfter:"يقع بعد",headerFilterOperatorOnOrAfter:"هو على او بعد",headerFilterOperatorBefore:"يقع قبل",headerFilterOperatorOnOrBefore:"هو على او بعد",headerFilterOperatorIsEmpty:"هو فارغ",headerFilterOperatorIsNotEmpty:"هو ليس فارغ",headerFilterOperatorIsAnyOf:"هو أي من","headerFilterOperator=":"يساوي","headerFilterOperator!=":"لا يساوي","headerFilterOperator>":"أكبر من","headerFilterOperator>=":"أكبر من او يساوي","headerFilterOperator<":"اصغر من","headerFilterOperator<=":"اصغر من او يساوي",filterValueAny:"أي",filterValueTrue:"صائب",filterValueFalse:"خاطئ",columnMenuLabel:"القائمة",columnMenuShowColumns:"إظهار الأعمدة",columnMenuManageColumns:"إدارة الأعمدة",columnMenuFilter:"المرشِح",columnMenuHideColumn:"إخفاء",columnMenuUnsort:"الغاء الفرز",columnMenuSortAsc:"الفرز تصاعدياً",columnMenuSortDesc:"الفرز تنازلياً",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} من المرشِحات النشطة`:"مرشِح نشط",columnHeaderFiltersLabel:"إظهار المرشحات",columnHeaderSortIconLabel:"فرز",footerRowSelected:e=>e!==1?`تم تحديد ${e.toLocaleString()} من الصفوف`:"تم تحديد صف واحد",footerTotalRows:"إجمالي الصفوف:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} من ${t.toLocaleString()}`,checkboxSelectionHeaderName:"تحديد خانة الاختيار",checkboxSelectionSelectAllRows:"تحديد كل الصفوف",checkboxSelectionUnselectAllRows:"الغاء تحديد كل الصفوف",checkboxSelectionSelectRow:"تحديد صف",checkboxSelectionUnselectRow:"الغاء تحديد الصف",booleanCellTrueLabel:"نعم",booleanCellFalseLabel:"لا",actionsCellMore:"المزيد",pinToLeft:"التدبيس يميناً",pinToRight:"التدبيس يساراً",unpin:"الغاء التدبيس",treeDataGroupingHeaderName:"تجميع",treeDataExpand:"رؤية الأبناء",treeDataCollapse:"إخفاء الأبناء",groupingColumnHeaderName:"تجميع",groupColumn:e=>`تجميع حسب ${e}`,unGroupColumn:e=>`إيقاف التجميع حسب ${e}`,detailPanelToggle:"اظهار/اخفاء لوحة التفاصيل",expandDetailPanel:"توسيع",collapseDetailPanel:"طوي",rowReorderingHeaderName:"أعادة ترتيب الصفوف",aggregationMenuItemHeader:"الدلالات الحسابية",aggregationFunctionLabelSum:"مجموع",aggregationFunctionLabelAvg:"معدل",aggregationFunctionLabelMin:"الحد الادنى",aggregationFunctionLabelMax:"الحد الاقصى",aggregationFunctionLabelSize:"الحجم"},hC=Pe(bC,_h),CC={components:{MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Перайсці на першую старонку":e==="last"?"Перайсці на апошнюю старонку":e==="next"?"Перайсці на наступную старонку":"Перайсці на папярэднюю старонку",labelRowsPerPage:"Радкоў на старонцы:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} з ${r!==-1?r:`больш чым ${t}`}`}}}},wC={components:{MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"پہلے صفحے پر جائیں":e==="last"?"آخری صفحے پر جائیں":e==="next"?"اگلے صفحے پر جائیں":"پچھلے صفحے پر جائیں",labelRowsPerPage:"ایک صفحے پر قطاریں:",labelDisplayedRows:({from:e,to:t,count:r})=>`${r!==-1?`${r} میں سے`:`${t} سے ذیادہ میں سے`} ${e} سے ${t} قطاریں`}}}},No=(e,t)=>{let r=t.other;const o=e%10;return o>1&&o<5&&(e<10||e>20)?r=t.twoToFour:o===1&&e%100!==11&&(r=t.one),`${e} ${r}`},SC={noRowsLabel:"Няма радкоў",noResultsOverlayLabel:"Дадзеныя не знойдзены.",toolbarDensity:"Вышыня радка",toolbarDensityLabel:"Вышыня радка",toolbarDensityCompact:"Кампактны",toolbarDensityStandard:"Стандартны",toolbarDensityComfortable:"Камфортны",toolbarColumns:"Слупкі",toolbarColumnsLabel:"Выберыце слупкі",toolbarFilters:"Фільтры",toolbarFiltersLabel:"Паказаць фільтры",toolbarFiltersTooltipHide:"Схаваць фільтры",toolbarFiltersTooltipShow:"Паказаць фільтры",toolbarFiltersTooltipActive:e=>No(e,{one:"актыўны фільтр",twoToFour:"актыўных фільтра",other:"актыўных фільтраў"}),toolbarQuickFilterPlaceholder:"Пошук…",toolbarQuickFilterLabel:"Пошук",toolbarQuickFilterDeleteIconLabel:"Ачысціць",toolbarExport:"Экспарт",toolbarExportLabel:"Экспарт",toolbarExportCSV:"Спампаваць у фармаце CSV",toolbarExportPrint:"Друк",toolbarExportExcel:"Спампаваць у фармаце Excel",columnsPanelTextFieldLabel:"Знайсці слупок",columnsPanelTextFieldPlaceholder:"Загаловак слупка",columnsPanelDragIconLabel:"Змяніць чарговасць слупкоў",columnsPanelShowAllButton:"Паказаць усе",columnsPanelHideAllButton:"Схаваць усе",filterPanelAddFilter:"Дадаць фільтр",filterPanelDeleteIconLabel:"Выдаліць",filterPanelLogicOperator:"Лагічныя аператары",filterPanelOperator:"Аператары",filterPanelOperatorAnd:"І",filterPanelOperatorOr:"Або",filterPanelColumns:"Слупкі",filterPanelInputLabel:"Значэнне",filterPanelInputPlaceholder:"Значэнне фільтра",filterOperatorContains:"змяшчае",filterOperatorEquals:"роўны",filterOperatorStartsWith:"пачынаецца з",filterOperatorEndsWith:"скончваецца на",filterOperatorIs:"роўны",filterOperatorNot:"не роўны",filterOperatorAfter:"больш чым",filterOperatorOnOrAfter:"больш ці роўны",filterOperatorBefore:"меньш чым",filterOperatorOnOrBefore:"меньш ці роўны",filterOperatorIsEmpty:"пусты",filterOperatorIsNotEmpty:"не пусты",filterOperatorIsAnyOf:"усякі з",filterValueAny:"усякі",filterValueTrue:"праўда",filterValueFalse:"няпраўда",columnMenuLabel:"Меню",columnMenuShowColumns:"Паказаць слупкі",columnMenuManageColumns:"Кіраваць слупкамі",columnMenuFilter:"Фільтр",columnMenuHideColumn:"Схаваць",columnMenuUnsort:"Скасаваць сартыроўку",columnMenuSortAsc:"Сартыраваць па нарастанню",columnMenuSortDesc:"Сартыраваць па спаданню",columnHeaderFiltersTooltipActive:e=>No(e,{one:"актыўны фільтр",twoToFour:"актыўных фільтра",other:"актыўных фільтраў"}),columnHeaderFiltersLabel:"Паказаць фільтры",columnHeaderSortIconLabel:"Сартыраваць",footerRowSelected:e=>No(e,{one:"абраны радок",twoToFour:"абраных радка",other:"абраных радкоў"}),footerTotalRows:"Усяго радкоў:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} з ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Выбар сцяжка",checkboxSelectionSelectAllRows:"Абраць усе радкі",checkboxSelectionUnselectAllRows:"Скасаваць выбар усіх радкоў",checkboxSelectionSelectRow:"Абраць радок",checkboxSelectionUnselectRow:"Скасаваць выбар радка",booleanCellTrueLabel:"праўда",booleanCellFalseLabel:"няпраўда",actionsCellMore:"больш",pinToLeft:"Замацаваць злева",pinToRight:"Замацаваць справа",unpin:"Адмацаваць",treeDataGroupingHeaderName:"Група",treeDataExpand:"паказаць даччыныя элементы",treeDataCollapse:"схаваць даччыныя элементы",groupingColumnHeaderName:"Група",groupColumn:e=>`Групаваць па ${e}`,unGroupColumn:e=>`Разгрупаваць па ${e}`,detailPanelToggle:"Дэталі",expandDetailPanel:"Разгарнуць",collapseDetailPanel:"Згарнуць",rowReorderingHeaderName:"Змяненне чарговасці радкоў",aggregationMenuItemHeader:"Аб'яднанне дадзеных",aggregationFunctionLabelSum:"сума",aggregationFunctionLabelAvg:"сярэдняе",aggregationFunctionLabelMin:"мінімум",aggregationFunctionLabelMax:"максімум",aggregationFunctionLabelSize:"памер"},OC=Pe(SC,CC),PC={noRowsLabel:"Няма редове",noResultsOverlayLabel:"Няма намерени резултати.",toolbarDensity:"Гъстота",toolbarDensityLabel:"Гъстота",toolbarDensityCompact:"Компактна",toolbarDensityStandard:"Стандартна",toolbarDensityComfortable:"Комфортна",toolbarColumns:"Колони",toolbarColumnsLabel:"Покажи селектора на колони",toolbarFilters:"Филтри",toolbarFiltersLabel:"Покажи Филтрите",toolbarFiltersTooltipHide:"Скрий Филтрите",toolbarFiltersTooltipShow:"Покажи Филтрите",toolbarFiltersTooltipActive:e=>`${e} активни филтри`,toolbarQuickFilterPlaceholder:"Търси…",toolbarQuickFilterLabel:"Търсене",toolbarQuickFilterDeleteIconLabel:"Изчисти",toolbarExport:"Изтегли",toolbarExportLabel:"Изтегли",toolbarExportCSV:"Изтегли като CSV",toolbarExportPrint:"Принтиране",toolbarExportExcel:"Изтегли като Excel",columnsPanelTextFieldLabel:"Намери колона",columnsPanelTextFieldPlaceholder:"Заглавие на колона",columnsPanelDragIconLabel:"Пренареди на колона",columnsPanelShowAllButton:"Покажи Всички",columnsPanelHideAllButton:"Скрий Всички",filterPanelAddFilter:"Добави Филтър",filterPanelRemoveAll:"Премахни всички",filterPanelDeleteIconLabel:"Изтрий",filterPanelLogicOperator:"Логически оператор",filterPanelOperator:"Оператори",filterPanelOperatorAnd:"И",filterPanelOperatorOr:"Или",filterPanelColumns:"Колони",filterPanelInputLabel:"Стойност",filterPanelInputPlaceholder:"Стойност на филтъра",filterOperatorContains:"съдържа",filterOperatorEquals:"равно",filterOperatorStartsWith:"започва с",filterOperatorEndsWith:"завършва с",filterOperatorIs:"е",filterOperatorNot:"не е",filterOperatorAfter:"е след",filterOperatorOnOrAfter:"е на или след",filterOperatorBefore:"е преди",filterOperatorOnOrBefore:"е на или преди",filterOperatorIsEmpty:"е празен",filterOperatorIsNotEmpty:"не е празен",filterOperatorIsAnyOf:"е някой от","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Съдържа",headerFilterOperatorEquals:"Равнo",headerFilterOperatorStartsWith:"Започва с",headerFilterOperatorEndsWith:"Завършва с",headerFilterOperatorIs:"Равно е на",headerFilterOperatorNot:"Не се равнява на",headerFilterOperatorAfter:"След",headerFilterOperatorOnOrAfter:"След (включително)",headerFilterOperatorBefore:"Преди",headerFilterOperatorOnOrBefore:"Преди (включително)",headerFilterOperatorIsEmpty:"Празен",headerFilterOperatorIsNotEmpty:"Не е празен",headerFilterOperatorIsAnyOf:"Всичко от","headerFilterOperator=":"Равно","headerFilterOperator!=":"Различно","headerFilterOperator>":"По-голямо от","headerFilterOperator>=":"По-голямо или равно на","headerFilterOperator<":"По-малко от","headerFilterOperator<=":"По-малко или равно на",filterValueAny:"всякакви",filterValueTrue:"вярно",filterValueFalse:"невярно",columnMenuLabel:"Меню",columnMenuShowColumns:"Покажи колоните",columnMenuManageColumns:"Управление на колони",columnMenuFilter:"Филтри",columnMenuHideColumn:"Скрий",columnMenuUnsort:"Отмени сортирането",columnMenuSortAsc:"Сортирай по възходящ ред",columnMenuSortDesc:"Сортирай по низходящ ред",columnHeaderFiltersTooltipActive:e=>`${e} активни филтри`,columnHeaderFiltersLabel:"Покажи Филтрите",columnHeaderSortIconLabel:"Сортирай",footerRowSelected:e=>e!==1?`${e.toLocaleString()} избрани редове`:`${e.toLocaleString()} избран ред`,footerTotalRows:"Общо Редове:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} от ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Избор на квадратче",checkboxSelectionSelectAllRows:"Избери всички редове",checkboxSelectionUnselectAllRows:"Отмени избора на всички редове",checkboxSelectionSelectRow:"Избери ред",checkboxSelectionUnselectRow:"Отмени избора на ред",booleanCellTrueLabel:"да",booleanCellFalseLabel:"не",actionsCellMore:"още",pinToLeft:"Закачи в ляво",pinToRight:"Закачи в дясно",unpin:"Откачи",treeDataGroupingHeaderName:"Група",treeDataExpand:"виж деца",treeDataCollapse:"скрий децата",groupingColumnHeaderName:"Група",groupColumn:e=>`Групирай по ${e}`,unGroupColumn:e=>`Спри групиране по ${e}`,detailPanelToggle:"Превключване на панела с детайли",expandDetailPanel:"Разгъване",collapseDetailPanel:"Свиване",rowReorderingHeaderName:"Подредба на редове",aggregationMenuItemHeader:"Агрегиране",aggregationFunctionLabelSum:"сума",aggregationFunctionLabelAvg:"срст",aggregationFunctionLabelMin:"мин",aggregationFunctionLabelMax:"макс",aggregationFunctionLabelSize:"размер"},xC=Pe(PC,Vh),vC={noRowsLabel:"Žádné záznamy",noResultsOverlayLabel:"Nenašly se žadné výsledky.",toolbarDensity:"Zobrazení",toolbarDensityLabel:"Zobrazení",toolbarDensityCompact:"Kompaktní",toolbarDensityStandard:"Standartní",toolbarDensityComfortable:"Komfortní",toolbarColumns:"Sloupce",toolbarColumnsLabel:"Vybrat sloupec",toolbarFilters:"Filtry",toolbarFiltersLabel:"Zobrazit filtry",toolbarFiltersTooltipHide:"Skrýt filtry",toolbarFiltersTooltipShow:"Zobrazit filtry",toolbarFiltersTooltipActive:e=>{let t="aktivních filtrů";return e>1&&e<5?t="aktivní filtry":e===1&&(t="aktivní filtr"),`${e} ${t}`},toolbarQuickFilterPlaceholder:"Hledat…",toolbarQuickFilterLabel:"Hledat",toolbarQuickFilterDeleteIconLabel:"Vymazat",toolbarExport:"Export",toolbarExportLabel:"Export",toolbarExportCSV:"Stáhnout jako CSV",toolbarExportPrint:"Vytisknout",toolbarExportExcel:"Stáhnout jako Excel",columnsPanelTextFieldLabel:"Najít sloupec",columnsPanelTextFieldPlaceholder:"Název sloupce",columnsPanelDragIconLabel:"Uspořádat sloupce",columnsPanelShowAllButton:"Zobrazit vše",columnsPanelHideAllButton:"Skrýt vše",filterPanelAddFilter:"Přidat filtr",filterPanelRemoveAll:"Odstranit vše",filterPanelDeleteIconLabel:"Odstranit",filterPanelLogicOperator:"Logický operátor",filterPanelOperator:"Operátory",filterPanelOperatorAnd:"A",filterPanelOperatorOr:"Nebo",filterPanelColumns:"Sloupce",filterPanelInputLabel:"Hodnota",filterPanelInputPlaceholder:"Hodnota filtru",filterOperatorContains:"obsahuje",filterOperatorEquals:"rovná se",filterOperatorStartsWith:"začíná na",filterOperatorEndsWith:"končí na",filterOperatorIs:"je",filterOperatorNot:"není",filterOperatorAfter:"je po",filterOperatorOnOrAfter:"je po včetně",filterOperatorBefore:"je před",filterOperatorOnOrBefore:"je před včetně",filterOperatorIsEmpty:"je prázdný",filterOperatorIsNotEmpty:"není prázdný",filterOperatorIsAnyOf:"je jeden z","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Obsahuje",headerFilterOperatorEquals:"Rovná se",headerFilterOperatorStartsWith:"Začíná na",headerFilterOperatorEndsWith:"Končí na",headerFilterOperatorIs:"Je",headerFilterOperatorNot:"Není",headerFilterOperatorAfter:"Je po",headerFilterOperatorOnOrAfter:"Je po včetně",headerFilterOperatorBefore:"Je před",headerFilterOperatorOnOrBefore:"Je před včetně",headerFilterOperatorIsEmpty:"Je prázdný",headerFilterOperatorIsNotEmpty:"Není prázdný",headerFilterOperatorIsAnyOf:"Je jeden z","headerFilterOperator=":"Rovná se","headerFilterOperator!=":"Nerovná se","headerFilterOperator>":"Větší než","headerFilterOperator>=":"Větší než nebo rovno","headerFilterOperator<":"Menší než","headerFilterOperator<=":"Menší než nebo rovno",filterValueAny:"jakýkoliv",filterValueTrue:"ano",filterValueFalse:"ne",columnMenuLabel:"Menu",columnMenuShowColumns:"Zobrazit sloupce",columnMenuManageColumns:"Spravovat sloupce",columnMenuFilter:"Filtr",columnMenuHideColumn:"Skrýt",columnMenuUnsort:"Zrušit filtry",columnMenuSortAsc:"Seřadit vzestupně",columnMenuSortDesc:"Seřadit sestupně",columnHeaderFiltersTooltipActive:e=>{let t="aktivních filtrů";return e>1&&e<5?t="aktivní filtry":e===1&&(t="aktivní filtr"),`${e} ${t}`},columnHeaderFiltersLabel:"Zobrazit filtry",columnHeaderSortIconLabel:"Filtrovat",footerRowSelected:e=>{let t="vybraných záznamů";return e>1&&e<5?t="vybrané záznamy":e===1&&(t="vybraný záznam"),`${e} ${t}`},footerTotalRows:"Celkem řádků:",footerTotalVisibleRows:(e,t)=>{const r=t.toString(),o=r[0],l=["4","6","7"].includes(o)||o==="1"&&r.length%3===0?"ze":"z";return`${e.toLocaleString()} ${l} ${t.toLocaleString()}`},checkboxSelectionHeaderName:"Výběr řádku",checkboxSelectionSelectAllRows:"Označit všechny řádky",checkboxSelectionUnselectAllRows:"Odznačit všechny řádky",checkboxSelectionSelectRow:"Označit řádek",checkboxSelectionUnselectRow:"Odznačit řádek",booleanCellTrueLabel:"ano",booleanCellFalseLabel:"ne",actionsCellMore:"více",pinToLeft:"Připnout vlevo",pinToRight:"Připnout vpravo",unpin:"Odepnout",treeDataGroupingHeaderName:"Skupina",treeDataExpand:"zobrazit potomky",treeDataCollapse:"skrýt potomky",groupingColumnHeaderName:"Skupina",groupColumn:e=>`Seskupit podle ${e}`,unGroupColumn:e=>`Přestat seskupovat podle ${e}`,detailPanelToggle:"Přepnout detail panelu",expandDetailPanel:"Rozbalit",collapseDetailPanel:"Sbalit",rowReorderingHeaderName:"Přeuspořádávání řádků",aggregationMenuItemHeader:"Seskupování",aggregationFunctionLabelSum:"součet",aggregationFunctionLabelAvg:"průměr",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"max",aggregationFunctionLabelSize:"počet"},FC=Pe(vC,Nh),yC={noRowsLabel:"Ingen rækker",noResultsOverlayLabel:"Ingen resultater",toolbarDensity:"Tæthed",toolbarDensityLabel:"Tæthed",toolbarDensityCompact:"Kompakt",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Luftig",toolbarColumns:"Kolonner",toolbarColumnsLabel:"Vælg kolonner",toolbarFilters:"Filtre",toolbarFiltersLabel:"Vis filtre",toolbarFiltersTooltipHide:"Skjul filtre",toolbarFiltersTooltipShow:"Vis filtre",toolbarFiltersTooltipActive:e=>e!==1?`${e} aktive filtre`:`${e} aktivt filter`,toolbarQuickFilterPlaceholder:"Søg…",toolbarQuickFilterLabel:"Søg",toolbarQuickFilterDeleteIconLabel:"Ryd",toolbarExport:"Eksport",toolbarExportLabel:"Eksporter",toolbarExportCSV:"Download som CSV",toolbarExportPrint:"Print",toolbarExportExcel:"Download som Excel",columnsPanelTextFieldLabel:"Find kolonne",columnsPanelTextFieldPlaceholder:"Kolonne titel",columnsPanelDragIconLabel:"Reorder kolonne",columnsPanelShowAllButton:"Vis alle",columnsPanelHideAllButton:"Skjul alle",filterPanelAddFilter:"Tilføj filter",filterPanelRemoveAll:"Fjern alle",filterPanelDeleteIconLabel:"Slet",filterPanelLogicOperator:"Logisk operator",filterPanelOperator:"Operator",filterPanelOperatorAnd:"Og",filterPanelOperatorOr:"Eller",filterPanelColumns:"Kolonner",filterPanelInputLabel:"Værdi",filterPanelInputPlaceholder:"Filterværdi",filterOperatorContains:"indeholder",filterOperatorEquals:"lig med",filterOperatorStartsWith:"begynder med",filterOperatorEndsWith:"ender med",filterOperatorIs:"er lig med",filterOperatorNot:"er ikke lig med",filterOperatorAfter:"efter",filterOperatorOnOrAfter:"på eller efter",filterOperatorBefore:"før",filterOperatorOnOrBefore:"på eller før",filterOperatorIsEmpty:"indeholder ikke data",filterOperatorIsNotEmpty:"indeholder data",filterOperatorIsAnyOf:"indeholder en af","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Indeholder",headerFilterOperatorEquals:"Lig med",headerFilterOperatorStartsWith:"Begynder med",headerFilterOperatorEndsWith:"Ender med",headerFilterOperatorIs:"Er lig med",headerFilterOperatorNot:"Er ikke lig med",headerFilterOperatorAfter:"Efter",headerFilterOperatorOnOrAfter:"På eller efter",headerFilterOperatorBefore:"Før",headerFilterOperatorOnOrBefore:"På eller før",headerFilterOperatorIsEmpty:"Indeholder ikke data",headerFilterOperatorIsNotEmpty:"Indeholder data",headerFilterOperatorIsAnyOf:"Indeholder en af","headerFilterOperator=":"Lig med","headerFilterOperator!=":"Ikke lig med","headerFilterOperator>":"Større end","headerFilterOperator>=":"Større end eller lig med","headerFilterOperator<":"Mindre end","headerFilterOperator<=":"Mindre end eller lig med",filterValueAny:"hvilken som helst",filterValueTrue:"positiv",filterValueFalse:"negativ",columnMenuLabel:"Menu",columnMenuShowColumns:"Vis kolonner",columnMenuManageColumns:"Administrer kolonner",columnMenuFilter:"Filtrer",columnMenuHideColumn:"Skjul kolonne",columnMenuUnsort:"Fjern sortering",columnMenuSortAsc:"Sorter stigende",columnMenuSortDesc:"Sorter faldende",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} aktive filtre`:"Ét aktivt filter",columnHeaderFiltersLabel:"Vis filtre",columnHeaderSortIconLabel:"Sorter",footerRowSelected:e=>e!==1?`${e.toLocaleString()} rækker valgt`:"Én række valgt",footerTotalRows:"Antal rækker i alt:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} af ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Afkrydsningsvalg",checkboxSelectionSelectAllRows:"Vælg alle rækker",checkboxSelectionUnselectAllRows:"Fravælg alle rækker",checkboxSelectionSelectRow:"Vælg række",checkboxSelectionUnselectRow:"Fravælg række",booleanCellTrueLabel:"ja",booleanCellFalseLabel:"nej",actionsCellMore:"mere",pinToLeft:"Fastgør til venstre",pinToRight:"Fastgør til højre",unpin:"Frigiv",treeDataGroupingHeaderName:"Gruppe",treeDataExpand:"Vis underelementer",treeDataCollapse:"Skjul underelementer",groupingColumnHeaderName:"Gruppe",groupColumn:e=>`Gruppér efter ${e}`,unGroupColumn:e=>`Fjern gruppering efter ${e}`,detailPanelToggle:"Udvid/kollaps detaljepanel",expandDetailPanel:"Udvid",collapseDetailPanel:"Kollaps",rowReorderingHeaderName:"Omarrangering af rækker",aggregationMenuItemHeader:"Aggregering",aggregationFunctionLabelSum:"sum",aggregationFunctionLabelAvg:"gns",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"max",aggregationFunctionLabelSize:"størrelse"},IC=Pe(yC,Gh),MC={noRowsLabel:"Keine Einträge",noResultsOverlayLabel:"Keine Ergebnisse gefunden.",toolbarDensity:"Zeilenhöhe",toolbarDensityLabel:"Zeilenhöhe",toolbarDensityCompact:"Kompakt",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Breit",toolbarColumns:"Spalten",toolbarColumnsLabel:"Zeige Spaltenauswahl",toolbarFilters:"Filter",toolbarFiltersLabel:"Zeige Filter",toolbarFiltersTooltipHide:"Verberge Filter",toolbarFiltersTooltipShow:"Zeige Filter",toolbarFiltersTooltipActive:e=>e!==1?`${e} aktive Filter`:`${e} aktiver Filter`,toolbarQuickFilterPlaceholder:"Suchen…",toolbarQuickFilterLabel:"Suchen",toolbarQuickFilterDeleteIconLabel:"Löschen",toolbarExport:"Exportieren",toolbarExportLabel:"Exportieren",toolbarExportCSV:"Download als CSV",toolbarExportPrint:"Drucken",toolbarExportExcel:"Download als Excel",columnsPanelTextFieldLabel:"Finde Spalte",columnsPanelTextFieldPlaceholder:"Spaltenüberschrift",columnsPanelDragIconLabel:"Spalte umsortieren",columnsPanelShowAllButton:"Zeige alle",columnsPanelHideAllButton:"Verberge alle",filterPanelAddFilter:"Filter hinzufügen",filterPanelRemoveAll:"Alle entfernen",filterPanelDeleteIconLabel:"Löschen",filterPanelLogicOperator:"Logische Operatoren",filterPanelOperator:"Operatoren",filterPanelOperatorAnd:"Und",filterPanelOperatorOr:"Oder",filterPanelColumns:"Spalten",filterPanelInputLabel:"Wert",filterPanelInputPlaceholder:"Wert filtern",filterOperatorContains:"enthält",filterOperatorEquals:"ist gleich",filterOperatorStartsWith:"beginnt mit",filterOperatorEndsWith:"endet mit",filterOperatorIs:"ist",filterOperatorNot:"ist nicht",filterOperatorAfter:"ist nach",filterOperatorOnOrAfter:"ist am oder nach",filterOperatorBefore:"ist vor",filterOperatorOnOrBefore:"ist am oder vor",filterOperatorIsEmpty:"ist leer",filterOperatorIsNotEmpty:"ist nicht leer",filterOperatorIsAnyOf:"ist einer der Werte","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Enthält",headerFilterOperatorEquals:"Gleich",headerFilterOperatorStartsWith:"Beginnt mit",headerFilterOperatorEndsWith:"Endet mit",headerFilterOperatorIs:"Ist",headerFilterOperatorNot:"Ist nicht",headerFilterOperatorAfter:"Ist nach",headerFilterOperatorOnOrAfter:"Ist am oder nach",headerFilterOperatorBefore:"Ist vor",headerFilterOperatorOnOrBefore:"Ist am oder vor",headerFilterOperatorIsEmpty:"Ist leer",headerFilterOperatorIsNotEmpty:"Ist nicht leer",headerFilterOperatorIsAnyOf:"Ist eines von","headerFilterOperator=":"Gleich","headerFilterOperator!=":"Ungleich","headerFilterOperator>":"Größer als","headerFilterOperator>=":"Größer als oder gleich","headerFilterOperator<":"Kleiner als","headerFilterOperator<=":"Kleiner als oder gleich",filterValueAny:"Beliebig",filterValueTrue:"Ja",filterValueFalse:"Nein",columnMenuLabel:"Menü",columnMenuShowColumns:"Zeige alle Spalten",columnMenuManageColumns:"Spalten verwalten",columnMenuFilter:"Filter",columnMenuHideColumn:"Verbergen",columnMenuUnsort:"Sortierung deaktivieren",columnMenuSortAsc:"Sortiere aufsteigend",columnMenuSortDesc:"Sortiere absteigend",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} aktive Filter`:`${e} aktiver Filter`,columnHeaderFiltersLabel:"Zeige Filter",columnHeaderSortIconLabel:"Sortieren",footerRowSelected:e=>e!==1?`${e.toLocaleString()} Einträge ausgewählt`:`${e.toLocaleString()} Eintrag ausgewählt`,footerTotalRows:"Gesamt:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} von ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Checkbox Auswahl",checkboxSelectionSelectAllRows:"Alle Zeilen auswählen",checkboxSelectionUnselectAllRows:"Alle Zeilen abwählen",checkboxSelectionSelectRow:"Zeile auswählen",checkboxSelectionUnselectRow:"Zeile abwählen",booleanCellTrueLabel:"Ja",booleanCellFalseLabel:"Nein",actionsCellMore:"Mehr",pinToLeft:"Links anheften",pinToRight:"Rechts anheften",unpin:"Loslösen",treeDataGroupingHeaderName:"Gruppe",treeDataExpand:"Kinder einblenden",treeDataCollapse:"Kinder ausblenden",groupingColumnHeaderName:"Gruppierung",groupColumn:e=>`Gruppieren nach ${e}`,unGroupColumn:e=>`Gruppierung nach ${e} aufheben`,detailPanelToggle:"Detailansicht Kippschalter",expandDetailPanel:"Aufklappen",collapseDetailPanel:"Zuklappen",rowReorderingHeaderName:"Reihen neu ordnen",aggregationMenuItemHeader:"Aggregation",aggregationFunctionLabelSum:"Summe",aggregationFunctionLabelAvg:"Mittelwert",aggregationFunctionLabelMin:"Minimum",aggregationFunctionLabelMax:"Maximum",aggregationFunctionLabelSize:"Anzahl"},kC=Pe(MC,zh),EC={noRowsLabel:"Δεν υπάρχουν καταχωρήσεις",noResultsOverlayLabel:"Δεν βρέθηκαν αποτελέσματα.",toolbarDensity:"Ύψος σειράς",toolbarDensityLabel:"Ύψος σειράς",toolbarDensityCompact:"Συμπαγής",toolbarDensityStandard:"Προκαθορισμένο",toolbarDensityComfortable:"Πλατύ",toolbarColumns:"Στήλες",toolbarColumnsLabel:"Επιλέξτε στήλες",toolbarFilters:"Φίλτρα",toolbarFiltersLabel:"Εμφάνιση φίλτρων",toolbarFiltersTooltipHide:"Απόκρυψη φίλτρων",toolbarFiltersTooltipShow:"Εμφάνιση φίλτρων",toolbarFiltersTooltipActive:e=>e!==1?`${e} ενεργά φίλτρα`:`${e} ενεργό φίλτρο`,toolbarQuickFilterPlaceholder:"Αναζήτηση…",toolbarQuickFilterLabel:"Αναζήτηση",toolbarQuickFilterDeleteIconLabel:"Καθαρισμός",toolbarExport:"Εξαγωγή",toolbarExportLabel:"Εξαγωγή",toolbarExportCSV:"Λήψη ως CSV",toolbarExportPrint:"Εκτύπωση",toolbarExportExcel:"Λήψη ως Excel",columnsPanelTextFieldLabel:"Εύρεση στήλης",columnsPanelTextFieldPlaceholder:"Επικεφαλίδα στήλης",columnsPanelDragIconLabel:"Αναδιάταξη στήλης",columnsPanelShowAllButton:"Προβολή όλων",columnsPanelHideAllButton:"Απόκρυψη όλων",filterPanelAddFilter:"Προσθήκη φίλτρου",filterPanelRemoveAll:"Αφαίρεση όλων",filterPanelDeleteIconLabel:"Διαγραφή",filterPanelLogicOperator:"Λογικός τελεστής",filterPanelOperator:"Τελεστές",filterPanelOperatorAnd:"Καί",filterPanelOperatorOr:"Ή",filterPanelColumns:"Στήλες",filterPanelInputLabel:"Τιμή",filterPanelInputPlaceholder:"Τιμή φίλτρου",filterOperatorContains:"περιέχει",filterOperatorEquals:"ισούται",filterOperatorStartsWith:"ξεκινάει με",filterOperatorEndsWith:"τελειώνει με",filterOperatorIs:"είναι",filterOperatorNot:"δεν είναι",filterOperatorAfter:"είναι μετά",filterOperatorOnOrAfter:"είναι ίσο ή μετά",filterOperatorBefore:"είναι πριν",filterOperatorOnOrBefore:"είναι ίσο ή πριν",filterOperatorIsEmpty:"είναι κενό",filterOperatorIsNotEmpty:"δεν είναι κενό",filterOperatorIsAnyOf:"είναι οποιοδήποτε από","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Περιέχει",headerFilterOperatorEquals:"Ισούται",headerFilterOperatorStartsWith:"Ξεκινάει με",headerFilterOperatorEndsWith:"Τελειώνει με",headerFilterOperatorIs:"Είναι",headerFilterOperatorNot:"Δεν είναι",headerFilterOperatorAfter:"Είναι μετά",headerFilterOperatorOnOrAfter:"Είναι ίσο ή μετά",headerFilterOperatorBefore:"Είναι πριν",headerFilterOperatorOnOrBefore:"Είναι ίσο ή πριν",headerFilterOperatorIsEmpty:"Είναι κενό",headerFilterOperatorIsNotEmpty:"Δεν είναι κενό",headerFilterOperatorIsAnyOf:"Είναι οποιοδήποτε από","headerFilterOperator=":"Ισούται","headerFilterOperator!=":"Δεν ισούται","headerFilterOperator>":"Μεγαλύτερο από","headerFilterOperator>=":"Μεγαλύτερο ή ίσο με","headerFilterOperator<":"Μικρότερο από","headerFilterOperator<=":"Μικρότερο ή ίσο με",filterValueAny:"οποιοδήποτε",filterValueTrue:"αληθές",filterValueFalse:"ψευδές",columnMenuLabel:"Μενού",columnMenuShowColumns:"Εμφάνιση στηλών",columnMenuManageColumns:"Διαχείριση στηλών",columnMenuFilter:"Φίλτρο",columnMenuHideColumn:"Απόκρυψη",columnMenuUnsort:"Απενεργοποίηση ταξινόμησης",columnMenuSortAsc:"Ταξινόμηση σε αύξουσα σειρά",columnMenuSortDesc:"Ταξινόμηση σε φθίνουσα σειρά",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} ενεργά φίλτρα`:`${e} ενεργό φίλτρο`,columnHeaderFiltersLabel:"Εμφάνιση φίλτρων",columnHeaderSortIconLabel:"Ταξινόμηση",footerRowSelected:e=>e!==1?`${e.toLocaleString()} επιλεγμένες γραμμές`:`${e.toLocaleString()} επιλεγμένη γραμμή`,footerTotalRows:"Σύνολο Γραμμών:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} από ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Επιλογή πλαισίου ελέγχου",checkboxSelectionSelectAllRows:"Επιλέξτε όλες τις σειρές",checkboxSelectionUnselectAllRows:"Καταργήση επιλογής όλων των σειρών",checkboxSelectionSelectRow:"Επιλογή γραμμής",checkboxSelectionUnselectRow:"Καταργήση επιλογής γραμμής",booleanCellTrueLabel:"ναί",booleanCellFalseLabel:"όχι",actionsCellMore:"περισσότερα",pinToLeft:"Καρφιτσώμα στα αριστερά",pinToRight:"Καρφιτσώμα στα δεξιά",unpin:"Ξεκαρφίτσωμα",treeDataGroupingHeaderName:"Ομαδοποίηση",treeDataExpand:"εμφάνιση περιεχομένων",treeDataCollapse:"απόκρυψη περιεχομένων",groupingColumnHeaderName:"Ομαδοποίηση",groupColumn:e=>`Ομαδοποίηση κατά ${e}`,unGroupColumn:e=>`Διακοπή ομαδοποίησης κατά ${e}`,detailPanelToggle:"Εναλλαγή πίνακα λεπτομερειών",expandDetailPanel:"Ανάπτυξη",collapseDetailPanel:"Σύμπτυξη",rowReorderingHeaderName:"Αναδιάταξη γραμμών",aggregationMenuItemHeader:"Συσσωμάτωση",aggregationFunctionLabelSum:"άθροισμα",aggregationFunctionLabelAvg:"μέση τιμή",aggregationFunctionLabelMin:"ελάχιστο",aggregationFunctionLabelMax:"μέγιστο",aggregationFunctionLabelSize:"μέγεθος"},LC=Pe(EC,jh),TC=Pe(un,Bh),DC={noRowsLabel:"Sin filas",noResultsOverlayLabel:"Resultados no encontrados",toolbarDensity:"Densidad",toolbarDensityLabel:"Densidad",toolbarDensityCompact:"Compacta",toolbarDensityStandard:"Estándar",toolbarDensityComfortable:"Cómoda",toolbarColumns:"Columnas",toolbarColumnsLabel:"Seleccionar columnas",toolbarFilters:"Filtros",toolbarFiltersLabel:"Mostrar filtros",toolbarFiltersTooltipHide:"Ocultar filtros",toolbarFiltersTooltipShow:"Mostrar filtros",toolbarFiltersTooltipActive:e=>e>1?`${e} filtros activos`:`${e} filtro activo`,toolbarQuickFilterPlaceholder:"Buscar…",toolbarQuickFilterLabel:"Buscar",toolbarQuickFilterDeleteIconLabel:"Limpiar",toolbarExport:"Exportar",toolbarExportLabel:"Exportar",toolbarExportCSV:"Descargar como CSV",toolbarExportPrint:"Imprimir",toolbarExportExcel:"Descargar como Excel",columnsPanelTextFieldLabel:"Columna de búsqueda",columnsPanelTextFieldPlaceholder:"Título de columna",columnsPanelDragIconLabel:"Reordenar columna",columnsPanelShowAllButton:"Mostrar todo",columnsPanelHideAllButton:"Ocultar todo",filterPanelAddFilter:"Agregar filtro",filterPanelRemoveAll:"Remover todos",filterPanelDeleteIconLabel:"Borrar",filterPanelLogicOperator:"Operador lógico",filterPanelOperator:"Operadores",filterPanelOperatorAnd:"Y",filterPanelOperatorOr:"O",filterPanelColumns:"Columnas",filterPanelInputLabel:"Valor",filterPanelInputPlaceholder:"Valor de filtro",filterOperatorContains:"contiene",filterOperatorEquals:"es igual",filterOperatorStartsWith:"comienza con",filterOperatorEndsWith:"termina con",filterOperatorIs:"es",filterOperatorNot:"no es",filterOperatorAfter:"es posterior",filterOperatorOnOrAfter:"es en o posterior",filterOperatorBefore:"es anterior",filterOperatorOnOrBefore:"es en o anterior",filterOperatorIsEmpty:"esta vacío",filterOperatorIsNotEmpty:"no esta vacío",filterOperatorIsAnyOf:"es cualquiera de","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Contiene",headerFilterOperatorEquals:"Es igual a",headerFilterOperatorStartsWith:"Comienza con",headerFilterOperatorEndsWith:"Termina con",headerFilterOperatorIs:"Es",headerFilterOperatorNot:"No es",headerFilterOperatorAfter:"Esta después de",headerFilterOperatorOnOrAfter:"Esta en o después de",headerFilterOperatorBefore:"Esta antes de",headerFilterOperatorOnOrBefore:"Esta en o antes de",headerFilterOperatorIsEmpty:"Esta vacío",headerFilterOperatorIsNotEmpty:"No esta vacío",headerFilterOperatorIsAnyOf:"Es cualquiera de","headerFilterOperator=":"Es igual a","headerFilterOperator!=":"Es diferente a","headerFilterOperator>":"Es mayor que","headerFilterOperator>=":"Es mayor o igual que","headerFilterOperator<":"Es menor que","headerFilterOperator<=":"Es menor o igual que",filterValueAny:"cualquiera",filterValueTrue:"verdadero",filterValueFalse:"falso",columnMenuLabel:"Menú",columnMenuShowColumns:"Mostrar columnas",columnMenuManageColumns:"Administrar columnas",columnMenuFilter:"Filtro",columnMenuHideColumn:"Ocultar",columnMenuUnsort:"Desordenar",columnMenuSortAsc:"Ordenar ASC",columnMenuSortDesc:"Ordenar DESC",columnHeaderFiltersTooltipActive:e=>e>1?`${e} filtros activos`:`${e} filtro activo`,columnHeaderFiltersLabel:"Mostrar filtros",columnHeaderSortIconLabel:"Ordenar",footerRowSelected:e=>e>1?`${e.toLocaleString()} filas seleccionadas`:`${e.toLocaleString()} fila seleccionada`,footerTotalRows:"Filas Totales:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} de ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Seleccionar casilla",checkboxSelectionSelectAllRows:"Seleccionar todas las filas",checkboxSelectionUnselectAllRows:"Deseleccionar todas las filas",checkboxSelectionSelectRow:"Seleccionar fila",checkboxSelectionUnselectRow:"Deseleccionar fila",booleanCellTrueLabel:"si",booleanCellFalseLabel:"no",actionsCellMore:"más",pinToLeft:"Anclar a la izquierda",pinToRight:"Anclar a la derecha",unpin:"Desanclar",treeDataGroupingHeaderName:"Grupo",treeDataExpand:"mostrar hijos",treeDataCollapse:"ocultar hijos",groupingColumnHeaderName:"Grupo",groupColumn:e=>`Agrupar por ${e}`,unGroupColumn:e=>`No agrupar por ${e}`,detailPanelToggle:"Alternar detalle",expandDetailPanel:"Expandir",collapseDetailPanel:"Contraer",rowReorderingHeaderName:"Reordenar filas",aggregationMenuItemHeader:"Agregación",aggregationFunctionLabelSum:"sum",aggregationFunctionLabelAvg:"avg",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"max",aggregationFunctionLabelSize:"tamaño"},$C=Pe(DC,Uh),AC={noRowsLabel:"بدون سطر",noResultsOverlayLabel:"نتیجه ای پیدا نشد.",toolbarDensity:"تراکم",toolbarDensityLabel:"تراکم",toolbarDensityCompact:"فشرده",toolbarDensityStandard:"استاندارد",toolbarDensityComfortable:"راحت",toolbarColumns:"ستون‌ها",toolbarColumnsLabel:"ستون‌ها را انتخاب کنید",toolbarFilters:"فیلترها",toolbarFiltersLabel:"نمایش فیلترها",toolbarFiltersTooltipHide:"مخفی کردن فیلترها",toolbarFiltersTooltipShow:"نمایش فیلترها",toolbarFiltersTooltipActive:e=>e!==1?`${e} فیلترهای فعال`:`${e} فیلتر فعال`,toolbarQuickFilterPlaceholder:"جستجو...",toolbarQuickFilterLabel:"جستجو",toolbarQuickFilterDeleteIconLabel:"حذف",toolbarExport:"خروجی",toolbarExportLabel:"خروجی",toolbarExportCSV:"دانلود به صورت CSV",toolbarExportPrint:"چاپ",toolbarExportExcel:"دانلود به صورت اکسل",columnsPanelTextFieldLabel:"پیداکردن ستون",columnsPanelTextFieldPlaceholder:"عنوان ستون",columnsPanelDragIconLabel:"جا‌به‌جایی ستون",columnsPanelShowAllButton:"نمایش همه",columnsPanelHideAllButton:"مخفی همه",filterPanelAddFilter:"افزودن فیلتر",filterPanelRemoveAll:"حذف همه",filterPanelDeleteIconLabel:"حذف",filterPanelLogicOperator:"عملگر منطقی",filterPanelOperator:"عملگرها",filterPanelOperatorAnd:"و",filterPanelOperatorOr:"یا",filterPanelColumns:"ستون‌ها",filterPanelInputLabel:"مقدار",filterPanelInputPlaceholder:"فیلتر مقدار",filterOperatorContains:"شامل",filterOperatorEquals:"مساوی",filterOperatorStartsWith:"شروع با",filterOperatorEndsWith:"پایان با",filterOperatorIs:"هست",filterOperatorNot:"نیست",filterOperatorAfter:"بعد از",filterOperatorOnOrAfter:"معادل یا بعدش",filterOperatorBefore:"قبلش",filterOperatorOnOrBefore:"معادل یا قبلش",filterOperatorIsEmpty:"خالی است",filterOperatorIsNotEmpty:"خالی نیست",filterOperatorIsAnyOf:"هر یک از","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"شامل",headerFilterOperatorEquals:"مساوی",headerFilterOperatorStartsWith:"شروع با",headerFilterOperatorEndsWith:"پایان با",headerFilterOperatorIs:"هست",headerFilterOperatorNot:"نیست",headerFilterOperatorAfter:"بعد از",headerFilterOperatorOnOrAfter:"معادل یا بعد از",headerFilterOperatorBefore:"قبل از",headerFilterOperatorOnOrBefore:"معادل یا قبل از",headerFilterOperatorIsEmpty:"خالی است",headerFilterOperatorIsNotEmpty:"خالی نیست",headerFilterOperatorIsAnyOf:"هر یک از","headerFilterOperator=":"مساوی","headerFilterOperator!=":"نامساوی","headerFilterOperator>":"بزرگتر","headerFilterOperator>=":"بزرگتر یا مساوی","headerFilterOperator<":"کوچکتر","headerFilterOperator<=":"کوچکتر یا مساوی",filterValueAny:"هرچیزی",filterValueTrue:"صحیح",filterValueFalse:"غلط",columnMenuLabel:"فهرست",columnMenuShowColumns:"نمایش ستون‌ها",columnMenuManageColumns:"مدیریت ستون‌ها",columnMenuFilter:"فیلتر",columnMenuHideColumn:"مخفی",columnMenuUnsort:"نامرتب‌کردن",columnMenuSortAsc:"مرتب‌کردن صعودی",columnMenuSortDesc:"مرتب‌کردن نزولی",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} فیلتر‌های فعال`:`${e} فیلتر فعال`,columnHeaderFiltersLabel:"نمایش فیلترها",columnHeaderSortIconLabel:"مرتب‌کردن",footerRowSelected:e=>e!==1?`${e.toLocaleString()} سطرهای انتخاب شده`:`${e.toLocaleString()} سطر انتخاب شده`,footerTotalRows:"مجموع سطرها:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} از ${t.toLocaleString()}`,checkboxSelectionHeaderName:"چک‌باکس انتخاب",checkboxSelectionSelectAllRows:"انتخاب همه‌ی ردیف‌ها",checkboxSelectionUnselectAllRows:"لغو انتخاب همه‌ی ردیف‌ها",checkboxSelectionSelectRow:"انتخاب ردیف",checkboxSelectionUnselectRow:"لغو انتخاب ردیف",booleanCellTrueLabel:"صحیح",booleanCellFalseLabel:"غلط",actionsCellMore:"بیشتر",pinToLeft:"سنجاق کردن به چپ",pinToRight:"سنجاق کردن به راست",unpin:"برداشتن سنجاق",treeDataGroupingHeaderName:"گروه‌بندی",treeDataExpand:"نمایش فرزندان",treeDataCollapse:"پنهان‌سازی فرزندان",groupingColumnHeaderName:"گروه‌بندی",groupColumn:e=>`گروه‌بندی براساس ${e}`,unGroupColumn:e=>`لغو گروه‌بندی براساس ${e}`,detailPanelToggle:"پنل جزئیات",expandDetailPanel:"بازکردن پنل جزئیات",collapseDetailPanel:"بستن پنل جزئیات",rowReorderingHeaderName:"ترتیب مجدد سطر",aggregationMenuItemHeader:"تجمیع",aggregationFunctionLabelSum:"جمع",aggregationFunctionLabelAvg:"میانگین",aggregationFunctionLabelMin:"حداقل",aggregationFunctionLabelMax:"حداکثر",aggregationFunctionLabelSize:"اندازه"},RC=Pe(AC,qh),HC={noRowsLabel:"Ei rivejä",noResultsOverlayLabel:"Ei tuloksia.",toolbarDensity:"Tiiveys",toolbarDensityLabel:"Tiiveys",toolbarDensityCompact:"Kompakti",toolbarDensityStandard:"Vakio",toolbarDensityComfortable:"Mukava",toolbarColumns:"Sarakkeet",toolbarColumnsLabel:"Valitse sarakkeet",toolbarFilters:"Suodattimet",toolbarFiltersLabel:"Näytä suodattimet",toolbarFiltersTooltipHide:"Piilota suodattimet",toolbarFiltersTooltipShow:"Näytä suodattimet",toolbarFiltersTooltipActive:e=>e!==1?`${e} aktiivista suodatinta`:`${e} aktiivinen suodatin`,toolbarQuickFilterPlaceholder:"Hae…",toolbarQuickFilterLabel:"Hae",toolbarQuickFilterDeleteIconLabel:"Tyhjennä",toolbarExport:"Vie",toolbarExportLabel:"Vie",toolbarExportCSV:"Lataa CSV-muodossa",toolbarExportPrint:"Tulosta",toolbarExportExcel:"Lataa Excel-muodossa",columnsPanelTextFieldLabel:"Etsi sarake",columnsPanelTextFieldPlaceholder:"Sarakkeen otsikko",columnsPanelDragIconLabel:"Järjestä sarake uudelleen",columnsPanelShowAllButton:"Näytä kaikki",columnsPanelHideAllButton:"Piilota kaikki",filterPanelAddFilter:"Lisää suodatin",filterPanelRemoveAll:"Poista kaikki",filterPanelDeleteIconLabel:"Poista",filterPanelLogicOperator:"Logiikkaoperaattori",filterPanelOperator:"Operaattorit",filterPanelOperatorAnd:"Ja",filterPanelOperatorOr:"Tai",filterPanelColumns:"Sarakkeet",filterPanelInputLabel:"Arvo",filterPanelInputPlaceholder:"Suodattimen arvo",filterOperatorContains:"sisältää",filterOperatorEquals:"on yhtä suuri kuin",filterOperatorStartsWith:"alkaa",filterOperatorEndsWith:"päättyy",filterOperatorIs:"on",filterOperatorNot:"ei ole",filterOperatorAfter:"on jälkeen",filterOperatorOnOrAfter:"on sama tai jälkeen",filterOperatorBefore:"on ennen",filterOperatorOnOrBefore:"on sama tai ennen",filterOperatorIsEmpty:"on tyhjä",filterOperatorIsNotEmpty:"ei ole tyhjä",filterOperatorIsAnyOf:"on mikä tahansa seuraavista","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Sisältää",headerFilterOperatorEquals:"On yhtä suuri kuin",headerFilterOperatorStartsWith:"Alkaa",headerFilterOperatorEndsWith:"Päättyy",headerFilterOperatorIs:"On",headerFilterOperatorNot:"Ei ole",headerFilterOperatorAfter:"On jälkeen",headerFilterOperatorOnOrAfter:"On sama tai jälkeen",headerFilterOperatorBefore:"On ennen",headerFilterOperatorOnOrBefore:"On sama tai ennen",headerFilterOperatorIsEmpty:"On tyhjä",headerFilterOperatorIsNotEmpty:"Ei ole tyhjä",headerFilterOperatorIsAnyOf:"On mikä tahansa seuraavista","headerFilterOperator=":"On yhtä suuri kuin","headerFilterOperator!=":"Ei ole yhtä suuri kuin","headerFilterOperator>":"Enemmän kuin","headerFilterOperator>=":"Enemmän tai yhtä paljon kuin","headerFilterOperator<":"Vähemmän kuin","headerFilterOperator<=":"Vähemmän tai yhtä paljon kuin",filterValueAny:"mikä tahansa",filterValueTrue:"tosi",filterValueFalse:"epätosi",columnMenuLabel:"Valikko",columnMenuShowColumns:"Näytä sarakkeet",columnMenuManageColumns:"Hallitse sarakkeita",columnMenuFilter:"Suodata",columnMenuHideColumn:"Piilota",columnMenuUnsort:"Poista järjestys",columnMenuSortAsc:"Järjestä nousevasti",columnMenuSortDesc:"Järjestä laskevasti",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} aktiivista suodatinta`:`${e} aktiivinen suodatin`,columnHeaderFiltersLabel:"Näytä suodattimet",columnHeaderSortIconLabel:"Järjestä",footerRowSelected:e=>e!==1?`${e.toLocaleString()} riviä valittu`:`${e.toLocaleString()} rivi valittu`,footerTotalRows:"Rivejä yhteensä:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} / ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Valintaruutu",checkboxSelectionSelectAllRows:"Valitse kaikki rivit",checkboxSelectionUnselectAllRows:"Poista kaikkien rivien valinta",checkboxSelectionSelectRow:"Valitse rivi",checkboxSelectionUnselectRow:"Poista rivin valinta",booleanCellTrueLabel:"tosi",booleanCellFalseLabel:"epätosi",actionsCellMore:"lisää",pinToLeft:"Kiinnitä vasemmalle",pinToRight:"Kiinnitä oikealle",unpin:"Irrota kiinnitys",treeDataGroupingHeaderName:"Ryhmä",treeDataExpand:"Laajenna",treeDataCollapse:"Supista",groupingColumnHeaderName:"Ryhmä",groupColumn:e=>`Ryhmittelyperuste ${e}`,unGroupColumn:e=>`Poista ryhmittelyperuste ${e}`,detailPanelToggle:"Yksityiskohtapaneelin vaihto",expandDetailPanel:"Laajenna",collapseDetailPanel:"Tiivistä",rowReorderingHeaderName:"Rivien uudelleenjärjestely",aggregationMenuItemHeader:"Koostaminen",aggregationFunctionLabelSum:"summa",aggregationFunctionLabelAvg:"ka.",aggregationFunctionLabelMin:"min.",aggregationFunctionLabelMax:"maks.",aggregationFunctionLabelSize:"koko"},_C=Pe(HC,Wh),VC={noRowsLabel:"Pas de résultats",noResultsOverlayLabel:"Aucun résultat.",toolbarDensity:"Densité",toolbarDensityLabel:"Densité",toolbarDensityCompact:"Compacte",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Confortable",toolbarColumns:"Colonnes",toolbarColumnsLabel:"Choisir les colonnes",toolbarFilters:"Filtres",toolbarFiltersLabel:"Afficher les filtres",toolbarFiltersTooltipHide:"Cacher les filtres",toolbarFiltersTooltipShow:"Afficher les filtres",toolbarFiltersTooltipActive:e=>e>1?`${e} filtres actifs`:`${e} filtre actif`,toolbarQuickFilterPlaceholder:"Rechercher…",toolbarQuickFilterLabel:"Recherche",toolbarQuickFilterDeleteIconLabel:"Supprimer",toolbarExport:"Exporter",toolbarExportLabel:"Exporter",toolbarExportCSV:"Télécharger en CSV",toolbarExportPrint:"Imprimer",toolbarExportExcel:"Télécharger pour Excel",columnsPanelTextFieldLabel:"Chercher une colonne",columnsPanelTextFieldPlaceholder:"Titre de la colonne",columnsPanelDragIconLabel:"Réorganiser la colonne",columnsPanelShowAllButton:"Tout afficher",columnsPanelHideAllButton:"Tout cacher",filterPanelAddFilter:"Ajouter un filtre",filterPanelRemoveAll:"Tout supprimer",filterPanelDeleteIconLabel:"Supprimer",filterPanelLogicOperator:"Opérateur logique",filterPanelOperator:"Opérateur",filterPanelOperatorAnd:"Et",filterPanelOperatorOr:"Ou",filterPanelColumns:"Colonne",filterPanelInputLabel:"Valeur",filterPanelInputPlaceholder:"Filtrer la valeur",filterOperatorContains:"contient",filterOperatorEquals:"est égal à",filterOperatorStartsWith:"commence par",filterOperatorEndsWith:"se termine par",filterOperatorIs:"est",filterOperatorNot:"n'est pas",filterOperatorAfter:"postérieur",filterOperatorOnOrAfter:"égal ou postérieur",filterOperatorBefore:"antérieur",filterOperatorOnOrBefore:"égal ou antérieur",filterOperatorIsEmpty:"est vide",filterOperatorIsNotEmpty:"n'est pas vide",filterOperatorIsAnyOf:"fait partie de","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Contient",headerFilterOperatorEquals:"Est égal à",headerFilterOperatorStartsWith:"Commence par",headerFilterOperatorEndsWith:"Se termine par",headerFilterOperatorIs:"Est",headerFilterOperatorNot:"N'est pas",headerFilterOperatorAfter:"Postérieur",headerFilterOperatorOnOrAfter:"Égal ou postérieur",headerFilterOperatorBefore:"Antérieur",headerFilterOperatorOnOrBefore:"Égal ou antérieur",headerFilterOperatorIsEmpty:"Est vide",headerFilterOperatorIsNotEmpty:"N'est pas vide",headerFilterOperatorIsAnyOf:"Fait partie de","headerFilterOperator=":"Est égal à","headerFilterOperator!=":"N'est pas égal à","headerFilterOperator>":"Est supérieur à","headerFilterOperator>=":"Est supérieur ou égal à","headerFilterOperator<":"Est inférieur à","headerFilterOperator<=":"Est inférieur ou égal à",filterValueAny:"tous",filterValueTrue:"vrai",filterValueFalse:"faux",columnMenuLabel:"Menu",columnMenuShowColumns:"Afficher les colonnes",columnMenuManageColumns:"Gérer les colonnes",columnMenuFilter:"Filtrer",columnMenuHideColumn:"Cacher",columnMenuUnsort:"Annuler le tri",columnMenuSortAsc:"Tri ascendant",columnMenuSortDesc:"Tri descendant",columnHeaderFiltersTooltipActive:e=>e>1?`${e} filtres actifs`:`${e} filtre actif`,columnHeaderFiltersLabel:"Afficher les filtres",columnHeaderSortIconLabel:"Trier",footerRowSelected:e=>e>1?`${e.toLocaleString()} lignes sélectionnées`:`${e.toLocaleString()} ligne sélectionnée`,footerTotalRows:"Total de lignes :",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} sur ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Sélection",checkboxSelectionSelectAllRows:"Sélectionner toutes les lignes",checkboxSelectionUnselectAllRows:"Désélectionner toutes les lignes",checkboxSelectionSelectRow:"Sélectionner la ligne",checkboxSelectionUnselectRow:"Désélectionner la ligne",booleanCellTrueLabel:"vrai",booleanCellFalseLabel:"faux",actionsCellMore:"Plus",pinToLeft:"Épingler à gauche",pinToRight:"Épingler à droite",unpin:"Désépingler",treeDataGroupingHeaderName:"Groupe",treeDataExpand:"afficher les enfants",treeDataCollapse:"masquer les enfants",groupingColumnHeaderName:"Groupe",groupColumn:e=>`Grouper par ${e}`,unGroupColumn:e=>`Arrêter de grouper par ${e}`,detailPanelToggle:"Afficher/masquer les détails",expandDetailPanel:"Afficher",collapseDetailPanel:"Masquer",rowReorderingHeaderName:"Positionnement des lignes",aggregationMenuItemHeader:"Agrégation",aggregationFunctionLabelSum:"Somme",aggregationFunctionLabelAvg:"Moyenne",aggregationFunctionLabelMin:"Minimum",aggregationFunctionLabelMax:"Maximum",aggregationFunctionLabelSize:"Nombre d'éléments"},NC=Pe(VC,Kh),GC={noRowsLabel:"אין שורות",noResultsOverlayLabel:"לא נמצאו תוצאות.",toolbarDensity:"צפיפות",toolbarDensityLabel:"צפיפות",toolbarDensityCompact:"דחוסה",toolbarDensityStandard:"רגילה",toolbarDensityComfortable:"אוורירית",toolbarColumns:"עמודות",toolbarColumnsLabel:"בחר עמודות",toolbarFilters:"סינון",toolbarFiltersLabel:"הצג מסננים",toolbarFiltersTooltipHide:"הסתר מסננים",toolbarFiltersTooltipShow:"הצג מסננים",toolbarFiltersTooltipActive:e=>e!==1?`${e} מסננים פעילים`:"מסנן אחד פעיל",toolbarQuickFilterPlaceholder:"חיפוש…",toolbarQuickFilterLabel:"חיפוש",toolbarQuickFilterDeleteIconLabel:"ניקוי",toolbarExport:"ייצוא",toolbarExportLabel:"ייצוא",toolbarExportCSV:"ייצוא ל- CSV",toolbarExportPrint:"הדפסה",toolbarExportExcel:"ייצוא ל- Excel",columnsPanelTextFieldLabel:"חפש עמודה",columnsPanelTextFieldPlaceholder:"כותרת עמודה",columnsPanelDragIconLabel:"סדר עמודות מחדש",columnsPanelShowAllButton:"הצג הכל",columnsPanelHideAllButton:"הסתר הכל",filterPanelAddFilter:"הוסף מסנן",filterPanelRemoveAll:"מחק הכל",filterPanelDeleteIconLabel:"מחק",filterPanelLogicOperator:"אופרטור לוגי",filterPanelOperator:"אופרטור",filterPanelOperatorAnd:"וגם",filterPanelOperatorOr:"או",filterPanelColumns:"עמודות",filterPanelInputLabel:"ערך",filterPanelInputPlaceholder:"ערך מסנן",filterOperatorContains:"מכיל",filterOperatorEquals:"שווה",filterOperatorStartsWith:"מתחיל ב-",filterOperatorEndsWith:"נגמר ב-",filterOperatorIs:"הינו",filterOperatorNot:"אינו",filterOperatorAfter:"אחרי",filterOperatorOnOrAfter:"ב- או אחרי",filterOperatorBefore:"לפני",filterOperatorOnOrBefore:"ב- או לפני",filterOperatorIsEmpty:"ריק",filterOperatorIsNotEmpty:"אינו ריק",filterOperatorIsAnyOf:"הוא אחד מ-","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"מכיל",headerFilterOperatorEquals:"שווה",headerFilterOperatorStartsWith:"מתחיל ב-",headerFilterOperatorEndsWith:"נגמר ב-",headerFilterOperatorIs:"הינו",headerFilterOperatorNot:"אינו",headerFilterOperatorAfter:"אחרי",headerFilterOperatorOnOrAfter:"ב- או אחרי",headerFilterOperatorBefore:"לפני",headerFilterOperatorOnOrBefore:"ב- או לפני",headerFilterOperatorIsEmpty:"ריק",headerFilterOperatorIsNotEmpty:"אינו ריק",headerFilterOperatorIsAnyOf:"הוא אחד מ-","headerFilterOperator=":"שווה","headerFilterOperator!=":"אינו שווה","headerFilterOperator>":"גדול מ-","headerFilterOperator>=":"גדול שווה ל-","headerFilterOperator<":"קטן מ-","headerFilterOperator<=":"קטן שווה ל-",filterValueAny:"כל ערך",filterValueTrue:"כן",filterValueFalse:"לא",columnMenuLabel:"תפריט",columnMenuShowColumns:"הצג עמודות",columnMenuManageColumns:"נהל עמודות",columnMenuFilter:"סנן",columnMenuHideColumn:"הסתר",columnMenuUnsort:"בטל מיון",columnMenuSortAsc:"מיין בסדר עולה",columnMenuSortDesc:"מיין בסדר יורד",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} מסננים פעילים`:"מסנן אחד פעיל",columnHeaderFiltersLabel:"הצג מסננים",columnHeaderSortIconLabel:"מיין",footerRowSelected:e=>e!==1?`${e.toLocaleString()} שורות נבחרו`:"שורה אחת נבחרה",footerTotalRows:"סך הכל:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} מתוך ${t.toLocaleString()}`,checkboxSelectionHeaderName:"בחירה",checkboxSelectionSelectAllRows:"בחר הכל",checkboxSelectionUnselectAllRows:"בטל הכל",checkboxSelectionSelectRow:"בחר שורה",checkboxSelectionUnselectRow:"בטל בחירת שורה",booleanCellTrueLabel:"כן",booleanCellFalseLabel:"לא",actionsCellMore:"עוד",pinToLeft:"נעץ משמאל",pinToRight:"נעץ מימין",unpin:"הסר נעיצה",treeDataGroupingHeaderName:"קבוצה",treeDataExpand:"הרחב",treeDataCollapse:"כווץ",groupingColumnHeaderName:"קבוצה",groupColumn:e=>`קבץ לפי ${e}`,unGroupColumn:e=>`הפסק לקבץ לפי ${e}`,detailPanelToggle:"הצג/הסתר פרטים",expandDetailPanel:"הרחב",collapseDetailPanel:"כווץ",rowReorderingHeaderName:"סידור שורות",aggregationMenuItemHeader:"צבירה",aggregationFunctionLabelSum:"סכום",aggregationFunctionLabelAvg:"ממוצע",aggregationFunctionLabelMin:"מינימום",aggregationFunctionLabelMax:"מקסימום",aggregationFunctionLabelSize:"גודל"},zC=Pe(GC,Qh),jC={noRowsLabel:"Nincsenek sorok",noResultsOverlayLabel:"Nincs találat.",toolbarDensity:"Sormagasság",toolbarDensityLabel:"Sormagasság",toolbarDensityCompact:"Kompakt",toolbarDensityStandard:"Normál",toolbarDensityComfortable:"Kényelmes",toolbarColumns:"Oszlopok",toolbarColumnsLabel:"Oszlopok kiválasztása",toolbarFilters:"Szűrők",toolbarFiltersLabel:"Szűrők megjelenítése",toolbarFiltersTooltipHide:"Szűrők elrejtése",toolbarFiltersTooltipShow:"Szűrők megjelenítése",toolbarFiltersTooltipActive:e=>`${e} aktív szűrő`,toolbarQuickFilterPlaceholder:"Keresés…",toolbarQuickFilterLabel:"Keresés",toolbarQuickFilterDeleteIconLabel:"Törlés",toolbarExport:"Exportálás",toolbarExportLabel:"Exportálás",toolbarExportCSV:"Mentés CSV fájlként",toolbarExportPrint:"Nyomtatás",toolbarExportExcel:"Mentés Excel fájlként",columnsPanelTextFieldLabel:"Oszlop keresése",columnsPanelTextFieldPlaceholder:"Oszlop neve",columnsPanelDragIconLabel:"Oszlop átrendezése",columnsPanelShowAllButton:"Összes megjelenítése",columnsPanelHideAllButton:"Összes elrejtése",filterPanelAddFilter:"Szűrő hozzáadása",filterPanelRemoveAll:"Összes törlése",filterPanelDeleteIconLabel:"Törlés",filterPanelLogicOperator:"Logikai operátor",filterPanelOperator:"Operátorok",filterPanelOperatorAnd:"És",filterPanelOperatorOr:"Vagy",filterPanelColumns:"Oszlopok",filterPanelInputLabel:"Érték",filterPanelInputPlaceholder:"Érték szűrése",filterOperatorContains:"tartalmazza:",filterOperatorEquals:"egyenlő ezzel:",filterOperatorStartsWith:"ezzel kezdődik:",filterOperatorEndsWith:"ezzel végződik:",filterOperatorIs:"a következő:",filterOperatorNot:"nem a következő:",filterOperatorAfter:"ezutáni:",filterOperatorOnOrAfter:"ekkori vagy ezutáni:",filterOperatorBefore:"ezelőtti:",filterOperatorOnOrBefore:"ekkori vagy ezelőtti:",filterOperatorIsEmpty:"üres",filterOperatorIsNotEmpty:"nem üres",filterOperatorIsAnyOf:"a következők egyike:","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Tartalmazza:",headerFilterOperatorEquals:"Egyenlő ezzel:",headerFilterOperatorStartsWith:"Ezzel kezdődik:",headerFilterOperatorEndsWith:"Ezzel végződik:",headerFilterOperatorAfter:"Ezutáni:",headerFilterOperatorOnOrAfter:"Ekkozori vagy ezutáni:",headerFilterOperatorBefore:"Ezelőtti:",headerFilterOperatorOnOrBefore:"Ekkori vagy ezelőtti:",headerFilterOperatorIsEmpty:"Üres",headerFilterOperatorIsNotEmpty:"Nem üres",headerFilterOperatorIsAnyOf:"A következők egyike:","headerFilterOperator=":"Egyenlő","headerFilterOperator!=":"Nem egyenlő","headerFilterOperator>":"Nagyobb mint","headerFilterOperator>=":"Nagyobb vagy egyenlő","headerFilterOperator<":"Kissebb mint","headerFilterOperator<=":"Kissebb vagy enygenlő",filterValueAny:"bármilyen",filterValueTrue:"igaz",filterValueFalse:"hamis",columnMenuLabel:"Menü",columnMenuShowColumns:"Oszlopok megjelenítése",columnMenuManageColumns:"Oszlopok kezelése",columnMenuFilter:"Szűrők",columnMenuHideColumn:"Elrejtés",columnMenuUnsort:"Sorrend visszaállítása",columnMenuSortAsc:"Növekvő sorrendbe",columnMenuSortDesc:"Csökkenő sorrendbe",columnHeaderFiltersTooltipActive:e=>`${e} aktív szűrő`,columnHeaderFiltersLabel:"Szűrők megjelenítése",columnHeaderSortIconLabel:"Átrendezés",footerRowSelected:e=>`${e.toLocaleString()} sor kiválasztva`,footerTotalRows:"Összesen:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} (összesen: ${t.toLocaleString()})`,checkboxSelectionHeaderName:"Jelölőnégyzetes kijelölés",checkboxSelectionSelectAllRows:"Minden sor kijelölése",checkboxSelectionUnselectAllRows:"Minden sor kijelölésének törlése",checkboxSelectionSelectRow:"Sor kijelölése",checkboxSelectionUnselectRow:"Sor kijelölésének törlése",booleanCellTrueLabel:"igen",booleanCellFalseLabel:"nem",actionsCellMore:"további",pinToLeft:"Rögzítés balra",pinToRight:"Rögzítés jobbra",unpin:"Rögzítés törlése",treeDataGroupingHeaderName:"Csoport",treeDataExpand:"gyermekek megjelenítése",treeDataCollapse:"gyermekek elrejtése",groupingColumnHeaderName:"Csoportosítás",groupColumn:e=>`Csoportosítás ${e} szerint`,unGroupColumn:e=>`${e} szerinti csoportosítás törlése`,detailPanelToggle:"Részletek panel váltása",expandDetailPanel:"Kibontás",collapseDetailPanel:"Összecsukás",rowReorderingHeaderName:"Sorok újrarendezése",aggregationMenuItemHeader:"Összesítés",aggregationFunctionLabelSum:"Összeg",aggregationFunctionLabelAvg:"Átlag",aggregationFunctionLabelMin:"Minimum",aggregationFunctionLabelMax:"Maximum",aggregationFunctionLabelSize:"Darabszám"},BC=Pe(jC,Jh),UC={noRowsLabel:"Nessun record",noResultsOverlayLabel:"Nessun record trovato.",toolbarDensity:"Densità",toolbarDensityLabel:"Densità",toolbarDensityCompact:"Compatta",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Comoda",toolbarColumns:"Colonne",toolbarColumnsLabel:"Seleziona le colonne",toolbarFilters:"Filtri",toolbarFiltersLabel:"Mostra i filtri",toolbarFiltersTooltipHide:"Nascondi i filtri",toolbarFiltersTooltipShow:"Mostra i filtri",toolbarFiltersTooltipActive:e=>e>1?`${e} filtri attivi`:`${e} filtro attivo`,toolbarQuickFilterPlaceholder:"Cerca…",toolbarQuickFilterLabel:"Cerca",toolbarQuickFilterDeleteIconLabel:"Resetta",toolbarExport:"Esporta",toolbarExportLabel:"Esporta",toolbarExportCSV:"Esporta in CSV",toolbarExportPrint:"Stampa",toolbarExportExcel:"Scarica come Excel",columnsPanelTextFieldLabel:"Cerca colonna",columnsPanelTextFieldPlaceholder:"Titolo della colonna",columnsPanelDragIconLabel:"Riordina la colonna",columnsPanelShowAllButton:"Mostra tutto",columnsPanelHideAllButton:"Nascondi tutto",filterPanelAddFilter:"Aggiungi un filtro",filterPanelRemoveAll:"Rimuovi filtri",filterPanelDeleteIconLabel:"Rimuovi",filterPanelLogicOperator:"Operatore logico",filterPanelOperator:"Operatori",filterPanelOperatorAnd:"E (and)",filterPanelOperatorOr:"O (or)",filterPanelColumns:"Colonne",filterPanelInputLabel:"Valore",filterPanelInputPlaceholder:"Filtra il valore",filterOperatorContains:"contiene",filterOperatorEquals:"uguale a",filterOperatorStartsWith:"comincia per",filterOperatorEndsWith:"termina per",filterOperatorIs:"uguale a",filterOperatorNot:"diversa da",filterOperatorAfter:"dopo il",filterOperatorOnOrAfter:"a partire dal",filterOperatorBefore:"prima del",filterOperatorOnOrBefore:"fino al",filterOperatorIsEmpty:"è vuoto",filterOperatorIsNotEmpty:"non è vuoto",filterOperatorIsAnyOf:"è uno tra","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Contiene",headerFilterOperatorEquals:"uguale a",headerFilterOperatorStartsWith:"comincia per",headerFilterOperatorEndsWith:"termina per",headerFilterOperatorIs:"uguale a",headerFilterOperatorNot:"diversa da",headerFilterOperatorAfter:"dopo il",headerFilterOperatorOnOrAfter:"a partire dal",headerFilterOperatorBefore:"prima del",headerFilterOperatorOnOrBefore:"fino al",headerFilterOperatorIsEmpty:"è vuoto",headerFilterOperatorIsNotEmpty:"non è vuoto",headerFilterOperatorIsAnyOf:"è uno tra","headerFilterOperator=":"uguale a","headerFilterOperator!=":"diverso da","headerFilterOperator>":"maggiore di","headerFilterOperator>=":"maggiore o uguale a","headerFilterOperator<":"minore di","headerFilterOperator<=":"minore o uguale a",filterValueAny:"qualunque",filterValueTrue:"vero",filterValueFalse:"falso",columnMenuLabel:"Menu",columnMenuShowColumns:"Mostra le colonne",columnMenuManageColumns:"Gestisci colonne",columnMenuFilter:"Filtra",columnMenuHideColumn:"Nascondi",columnMenuUnsort:"Annulla l'ordinamento",columnMenuSortAsc:"Ordinamento crescente",columnMenuSortDesc:"Ordinamento decrescente",columnHeaderFiltersTooltipActive:e=>e>1?`${e} filtri attivi`:`${e} filtro attivo`,columnHeaderFiltersLabel:"Mostra i filtri",columnHeaderSortIconLabel:"Ordina",footerRowSelected:e=>e>1?`${e.toLocaleString()} record selezionati`:`${e.toLocaleString()} record selezionato`,footerTotalRows:"Record totali:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} di ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Seleziona",checkboxSelectionSelectAllRows:"Seleziona tutte le righe",checkboxSelectionUnselectAllRows:"Deseleziona tutte le righe",checkboxSelectionSelectRow:"Seleziona riga",checkboxSelectionUnselectRow:"Deseleziona riga",booleanCellTrueLabel:"vero",booleanCellFalseLabel:"falso",actionsCellMore:"più",pinToLeft:"Blocca a sinistra",pinToRight:"Blocca a destra",unpin:"Sblocca",treeDataGroupingHeaderName:"Gruppo",treeDataExpand:"mostra figli",treeDataCollapse:"nascondi figli",groupingColumnHeaderName:"Gruppo",groupColumn:e=>`Raggruppa per ${e}`,unGroupColumn:e=>`Annulla raggruppamento per ${e}`,detailPanelToggle:"Abilita pannello dettagli",expandDetailPanel:"Espandi",collapseDetailPanel:"Comprimi",rowReorderingHeaderName:"Riordinamento righe",aggregationMenuItemHeader:"aggregazione",aggregationFunctionLabelSum:"somma",aggregationFunctionLabelAvg:"media",aggregationFunctionLabelMin:"minimo",aggregationFunctionLabelMax:"massimo",aggregationFunctionLabelSize:"numero di elementi"},qC=Pe(UC,Yh),WC={noRowsLabel:"行がありません。",noResultsOverlayLabel:"結果がありません。",toolbarDensity:"行間隔",toolbarDensityLabel:"行間隔",toolbarDensityCompact:"コンパクト",toolbarDensityStandard:"標準",toolbarDensityComfortable:"広め",toolbarColumns:"列一覧",toolbarColumnsLabel:"列選択",toolbarFilters:"フィルター",toolbarFiltersLabel:"フィルター表示",toolbarFiltersTooltipHide:"フィルター非表示",toolbarFiltersTooltipShow:"フィルター表示",toolbarFiltersTooltipActive:e=>`${e}件のフィルターを適用中`,toolbarQuickFilterPlaceholder:"検索…",toolbarQuickFilterLabel:"検索",toolbarQuickFilterDeleteIconLabel:"クリア",toolbarExport:"エクスポート",toolbarExportLabel:"エクスポート",toolbarExportCSV:"CSVダウンロード",toolbarExportPrint:"印刷",toolbarExportExcel:"Excelダウンロード",columnsPanelTextFieldLabel:"列検索",columnsPanelTextFieldPlaceholder:"検索クエリを入力…",columnsPanelDragIconLabel:"列並べ替え",columnsPanelShowAllButton:"すべて表示",columnsPanelHideAllButton:"すべて非表示",filterPanelAddFilter:"フィルター追加",filterPanelRemoveAll:"すべて削除",filterPanelDeleteIconLabel:"削除",filterPanelLogicOperator:"論理演算子",filterPanelOperator:"演算子",filterPanelOperatorAnd:"And",filterPanelOperatorOr:"Or",filterPanelColumns:"列",filterPanelInputLabel:"値",filterPanelInputPlaceholder:"値を入力…",filterOperatorContains:"...を含む",filterOperatorEquals:"...に等しい",filterOperatorStartsWith:"...で始まる",filterOperatorEndsWith:"...で終わる",filterOperatorIs:"...である",filterOperatorNot:"...でない",filterOperatorAfter:"...より後ろ",filterOperatorOnOrAfter:"...以降",filterOperatorBefore:"...より前",filterOperatorOnOrBefore:"...以前",filterOperatorIsEmpty:"...空である",filterOperatorIsNotEmpty:"...空でない",filterOperatorIsAnyOf:"...のいずれか","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"含む",headerFilterOperatorEquals:"等しい",headerFilterOperatorStartsWith:"で始まる",headerFilterOperatorEndsWith:"で終わる",headerFilterOperatorIs:"である",headerFilterOperatorNot:"ではない",headerFilterOperatorAfter:"...より後ろ",headerFilterOperatorOnOrAfter:"...以降",headerFilterOperatorBefore:"...より前",headerFilterOperatorOnOrBefore:"...以前",headerFilterOperatorIsEmpty:"空白",headerFilterOperatorIsNotEmpty:"空白ではない",headerFilterOperatorIsAnyOf:"いずれか","headerFilterOperator=":"等しい","headerFilterOperator!=":"等しくない","headerFilterOperator>":"より大きい","headerFilterOperator>=":"以上","headerFilterOperator<":"未満","headerFilterOperator<=":"以下",filterValueAny:"いずれか",filterValueTrue:"真",filterValueFalse:"偽",columnMenuLabel:"メニュー",columnMenuShowColumns:"列表示",columnMenuManageColumns:"列管理",columnMenuFilter:"フィルター",columnMenuHideColumn:"列非表示",columnMenuUnsort:"ソート解除",columnMenuSortAsc:"昇順ソート",columnMenuSortDesc:"降順ソート",columnHeaderFiltersTooltipActive:e=>`${e}件のフィルターを適用中`,columnHeaderFiltersLabel:"フィルター表示",columnHeaderSortIconLabel:"ソート",footerRowSelected:e=>`${e}行を選択中`,footerTotalRows:"総行数:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} / ${t.toLocaleString()}`,checkboxSelectionHeaderName:"チェックボックス",checkboxSelectionSelectAllRows:"すべての行を選択",checkboxSelectionUnselectAllRows:"すべての行選択を解除",checkboxSelectionSelectRow:"行を選択",checkboxSelectionUnselectRow:"行選択を解除",booleanCellTrueLabel:"真",booleanCellFalseLabel:"偽",actionsCellMore:"もっと見る",pinToLeft:"左側に固定",pinToRight:"右側に固定",unpin:"固定解除",treeDataGroupingHeaderName:"グループ",treeDataExpand:"展開",treeDataCollapse:"折りたたみ",groupingColumnHeaderName:"グループ",groupColumn:e=>`${e}でグループ化`,unGroupColumn:e=>`${e}のグループを解除`,detailPanelToggle:"詳細パネルの切り替え",expandDetailPanel:"展開",collapseDetailPanel:"折りたたみ",rowReorderingHeaderName:"行並び替え",aggregationMenuItemHeader:"合計",aggregationFunctionLabelSum:"和",aggregationFunctionLabelAvg:"平均",aggregationFunctionLabelMin:"最小値",aggregationFunctionLabelMax:"最大値",aggregationFunctionLabelSize:"サイズ"},KC=Pe(WC,Xh),QC={noRowsLabel:"행이 없습니다.",noResultsOverlayLabel:"결과값이 없습니다.",toolbarDensity:"행 간격",toolbarDensityLabel:"행 간격",toolbarDensityCompact:"좁게",toolbarDensityStandard:"기본",toolbarDensityComfortable:"넓게",toolbarColumns:"열 목록",toolbarColumnsLabel:"열 선택",toolbarFilters:"필터",toolbarFiltersLabel:"필터 표시",toolbarFiltersTooltipHide:"필터 숨기기",toolbarFiltersTooltipShow:"필터 표시",toolbarFiltersTooltipActive:e=>`${e}건의 필터를 적용중`,toolbarQuickFilterPlaceholder:"검색…",toolbarQuickFilterLabel:"검색",toolbarQuickFilterDeleteIconLabel:"초기화",toolbarExport:"내보내기",toolbarExportLabel:"내보내기",toolbarExportCSV:"CSV로 내보내기",toolbarExportPrint:"프린트",toolbarExportExcel:"Excel로 내보내기",columnsPanelTextFieldLabel:"열 검색",columnsPanelTextFieldPlaceholder:"열 이름",columnsPanelDragIconLabel:"열 정렬",columnsPanelShowAllButton:"모두 보기",columnsPanelHideAllButton:"모두 숨기기",filterPanelAddFilter:"필터 추가",filterPanelDeleteIconLabel:"삭제",filterPanelLogicOperator:"논리 연산자",filterPanelOperator:"연산자",filterPanelOperatorAnd:"그리고",filterPanelOperatorOr:"또는",filterPanelColumns:"목록",filterPanelInputLabel:"값",filterPanelInputPlaceholder:"값 입력",filterOperatorContains:"포함하는",filterOperatorEquals:"값이 같은",filterOperatorStartsWith:"시작하는",filterOperatorEndsWith:"끝나는",filterOperatorIs:"~인",filterOperatorNot:"~아닌",filterOperatorAfter:"더 이후",filterOperatorOnOrAfter:"이후",filterOperatorBefore:"더 이전",filterOperatorOnOrBefore:"이전",filterOperatorIsEmpty:"값이 없는",filterOperatorIsNotEmpty:"값이 있는",filterOperatorIsAnyOf:"값 중 하나인",filterValueAny:"아무값",filterValueTrue:"참",filterValueFalse:"거짓",columnMenuLabel:"메뉴",columnMenuShowColumns:"열 표시",columnMenuFilter:"필터",columnMenuHideColumn:"열 숨기기",columnMenuUnsort:"정렬 해제",columnMenuSortAsc:"오름차순 정렬",columnMenuSortDesc:"내림차순 정렬",columnHeaderFiltersTooltipActive:e=>`${e}건의 필터를 적용중`,columnHeaderFiltersLabel:"필터 표시",columnHeaderSortIconLabel:"정렬",footerRowSelected:e=>`${e}행 선택중`,footerTotalRows:"총 행수:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} / ${t.toLocaleString()}`,checkboxSelectionHeaderName:"선택",checkboxSelectionSelectAllRows:"모든 행 선택",checkboxSelectionUnselectAllRows:"모든 행 선택 해제",checkboxSelectionSelectRow:"행 선택",checkboxSelectionUnselectRow:"행 선택 해제",booleanCellTrueLabel:"참",booleanCellFalseLabel:"거짓",actionsCellMore:"더보기",pinToLeft:"왼쪽에 고정",pinToRight:"오른쪽에 고정",unpin:"고정 해제",treeDataGroupingHeaderName:"그룹",treeDataExpand:"하위노드 펼치기",treeDataCollapse:"하위노드 접기",groupingColumnHeaderName:"그룹",groupColumn:e=>`${e} 값으로 그룹 생성`,unGroupColumn:e=>`${e} 값으로 그룹 해제`,detailPanelToggle:"상세 패널 토글",expandDetailPanel:"열기",collapseDetailPanel:"접기",rowReorderingHeaderName:"행 재배치",aggregationMenuItemHeader:"총계",aggregationFunctionLabelSum:"합",aggregationFunctionLabelAvg:"평균",aggregationFunctionLabelMin:"최소값",aggregationFunctionLabelMax:"최대값",aggregationFunctionLabelSize:"크기"},ZC=Pe(QC,eC),JC={noRowsLabel:"Ingen rader",noResultsOverlayLabel:"Fant ingen resultat.",toolbarDensity:"Tetthet",toolbarDensityLabel:"Tetthet",toolbarDensityCompact:"Kompakt",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Komfortabelt",toolbarColumns:"Kolonner",toolbarColumnsLabel:"Velg kolonner",toolbarFilters:"Filter",toolbarFiltersLabel:"Vis filter",toolbarFiltersTooltipHide:"Skjul fitler",toolbarFiltersTooltipShow:"Vis filter",toolbarFiltersTooltipActive:e=>e!==1?`${e} aktive filter`:`${e} aktivt filter`,toolbarQuickFilterPlaceholder:"Søk…",toolbarQuickFilterLabel:"Søk",toolbarQuickFilterDeleteIconLabel:"Slett",toolbarExport:"Eksporter",toolbarExportLabel:"Eksporter",toolbarExportCSV:"Last ned som CSV",toolbarExportPrint:"Skriv ut",toolbarExportExcel:"Last ned som Excel",columnsPanelTextFieldLabel:"Finn kolonne",columnsPanelTextFieldPlaceholder:"Kolonne tittel",columnsPanelDragIconLabel:"Reorganiser kolonne",columnsPanelShowAllButton:"Vis alle",columnsPanelHideAllButton:"Skjul alle",filterPanelAddFilter:"Legg til filter",filterPanelRemoveAll:"Fjern alle",filterPanelDeleteIconLabel:"Slett",filterPanelLogicOperator:"Logisk operator",filterPanelOperator:"Operatører",filterPanelOperatorAnd:"Og",filterPanelOperatorOr:"Eller",filterPanelColumns:"Kolonner",filterPanelInputLabel:"Verdi",filterPanelInputPlaceholder:"Filter verdi",filterOperatorContains:"inneholder",filterOperatorEquals:"er lik",filterOperatorStartsWith:"starter med",filterOperatorEndsWith:"slutter med",filterOperatorIs:"er",filterOperatorNot:"er ikke",filterOperatorAfter:"er etter",filterOperatorOnOrAfter:"er på eller etter",filterOperatorBefore:"er før",filterOperatorOnOrBefore:"er på eller før",filterOperatorIsEmpty:"er tom",filterOperatorIsNotEmpty:"er ikke tom",filterOperatorIsAnyOf:"er en av",filterValueAny:"noen",filterValueTrue:"sant",filterValueFalse:"usant",columnMenuLabel:"Meny",columnMenuShowColumns:"Vis kolonner",columnMenuManageColumns:"Administrer kolonner",columnMenuFilter:"Filter",columnMenuHideColumn:"Skjul",columnMenuUnsort:"Usorter",columnMenuSortAsc:"Sorter ØKENDE",columnMenuSortDesc:"Sorter SYNKENDE",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} aktive filter`:`${e} aktivt filter`,columnHeaderFiltersLabel:"Vis filter",columnHeaderSortIconLabel:"Sorter",footerRowSelected:e=>e!==1?`${e.toLocaleString()} rader valgt`:`${e.toLocaleString()} rad valgt`,footerTotalRows:"Totalt antall rader:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} av ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Avmerkingsboks valgt",checkboxSelectionSelectAllRows:"Velg alle rader",checkboxSelectionUnselectAllRows:"Velg bort alle rader",checkboxSelectionSelectRow:"Velg rad",checkboxSelectionUnselectRow:"Velg bort rad",booleanCellTrueLabel:"sant",booleanCellFalseLabel:"usant",actionsCellMore:"mer",pinToLeft:"Fest til venstre",pinToRight:"Fest til høyre",unpin:"Løsne",treeDataGroupingHeaderName:"Grupper",treeDataExpand:"se barn",treeDataCollapse:"skjul barn",groupingColumnHeaderName:"Grupper",groupColumn:e=>`Grupper på ${e}`,unGroupColumn:e=>`Stopp å grupper på ${e}`,detailPanelToggle:"Utvid/kollaps detalj panel",expandDetailPanel:"Utvid",collapseDetailPanel:"Kollaps",rowReorderingHeaderName:"Rad reorganisering",aggregationMenuItemHeader:"Aggregering",aggregationFunctionLabelSum:"sum",aggregationFunctionLabelAvg:"snitt",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"maks",aggregationFunctionLabelSize:"størrelse"},YC=Pe(JC,tC),XC={noRowsLabel:"Geen resultaten.",noResultsOverlayLabel:"Geen resultaten gevonden.",toolbarDensity:"Grootte",toolbarDensityLabel:"Grootte",toolbarDensityCompact:"Compact",toolbarDensityStandard:"Normaal",toolbarDensityComfortable:"Breed",toolbarColumns:"Kolommen",toolbarColumnsLabel:"Kies kolommen",toolbarFilters:"Filters",toolbarFiltersLabel:"Toon filters",toolbarFiltersTooltipHide:"Verberg filters",toolbarFiltersTooltipShow:"Toon filters",toolbarFiltersTooltipActive:e=>e>1?`${e} actieve filters`:`${e} filter actief`,toolbarQuickFilterPlaceholder:"Zoeken…",toolbarQuickFilterLabel:"Zoeken",toolbarQuickFilterDeleteIconLabel:"Wissen",toolbarExport:"Exporteren",toolbarExportLabel:"Exporteren",toolbarExportCSV:"Exporteer naar CSV",toolbarExportPrint:"Print",toolbarExportExcel:"Downloaden als Excel-bestand",columnsPanelTextFieldLabel:"Zoek kolom",columnsPanelTextFieldPlaceholder:"Kolomtitel",columnsPanelDragIconLabel:"Kolom herschikken",columnsPanelShowAllButton:"Alles tonen",columnsPanelHideAllButton:"Alles verbergen",filterPanelAddFilter:"Filter toevoegen",filterPanelRemoveAll:"Alles verwijderen",filterPanelDeleteIconLabel:"Verwijderen",filterPanelLogicOperator:"Logische operator",filterPanelOperator:"Operatoren",filterPanelOperatorAnd:"En",filterPanelOperatorOr:"Of",filterPanelColumns:"Kolommen",filterPanelInputLabel:"Waarde",filterPanelInputPlaceholder:"Filter waarde",filterOperatorContains:"bevat",filterOperatorEquals:"gelijk aan",filterOperatorStartsWith:"begint met",filterOperatorEndsWith:"eindigt met",filterOperatorIs:"is",filterOperatorNot:"is niet",filterOperatorAfter:"is na",filterOperatorOnOrAfter:"is gelijk of er na",filterOperatorBefore:"is voor",filterOperatorOnOrBefore:"is gelijk of er voor",filterOperatorIsEmpty:"is leeg",filterOperatorIsNotEmpty:"is niet leeg",filterOperatorIsAnyOf:"is een van","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Bevat",headerFilterOperatorEquals:"Gelijk aan",headerFilterOperatorStartsWith:"Begint met",headerFilterOperatorEndsWith:"Eindigt met",headerFilterOperatorIs:"Is",headerFilterOperatorNot:"Is niet",headerFilterOperatorAfter:"Is na",headerFilterOperatorOnOrAfter:"Is op of na",headerFilterOperatorBefore:"Is voor",headerFilterOperatorOnOrBefore:"Is op of voor",headerFilterOperatorIsEmpty:"Is leeg",headerFilterOperatorIsNotEmpty:"Is niet leeg",headerFilterOperatorIsAnyOf:"Is een van","headerFilterOperator=":"Gelijk aan","headerFilterOperator!=":"Niet gelijk aan","headerFilterOperator>":"Is groter dan","headerFilterOperator>=":"Is groter dan of gelijk aan","headerFilterOperator<":"Is kleiner dan","headerFilterOperator<=":"Is kleiner dan of gelijk aan",filterValueAny:"alles",filterValueTrue:"waar",filterValueFalse:"onwaar",columnMenuLabel:"Menu",columnMenuShowColumns:"Toon kolommen",columnMenuManageColumns:"Kolommen beheren",columnMenuFilter:"Filteren",columnMenuHideColumn:"Verbergen",columnMenuUnsort:"Annuleer sortering",columnMenuSortAsc:"Oplopend sorteren",columnMenuSortDesc:"Aflopend sorteren",columnHeaderFiltersTooltipActive:e=>e>1?`${e} actieve filters`:`${e} filter actief`,columnHeaderFiltersLabel:"Toon filters",columnHeaderSortIconLabel:"Sorteren",footerRowSelected:e=>e>1?`${e.toLocaleString()} rijen geselecteerd`:`${e.toLocaleString()} rij geselecteerd`,footerTotalRows:"Totaal:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} van ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Checkbox selectie",checkboxSelectionSelectAllRows:"Alle rijen selecteren",checkboxSelectionUnselectAllRows:"Alle rijen de-selecteren",checkboxSelectionSelectRow:"Rij selecteren",checkboxSelectionUnselectRow:"Rij de-selecteren",booleanCellTrueLabel:"waar",booleanCellFalseLabel:"onwaar",actionsCellMore:"meer",pinToLeft:"Links vastzetten",pinToRight:"Rechts vastzetten",unpin:"Losmaken",treeDataGroupingHeaderName:"Groep",treeDataExpand:"Uitvouwen",treeDataCollapse:"Inklappen",groupingColumnHeaderName:"Groep",groupColumn:e=>`Groepeer op ${e}`,unGroupColumn:e=>`Stop groeperen op ${e}`,detailPanelToggle:"Detailmenu in- of uitklappen",expandDetailPanel:"Uitklappen",collapseDetailPanel:"Inklappen",rowReorderingHeaderName:"Rijen hersorteren",aggregationMenuItemHeader:"Aggregatie",aggregationFunctionLabelSum:"som",aggregationFunctionLabelAvg:"gem",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"max",aggregationFunctionLabelSize:"grootte"},ew=Pe(XC,rC),tw={noRowsLabel:"Brak danych",noResultsOverlayLabel:"Nie znaleziono wyników.",toolbarDensity:"Wysokość rzędu",toolbarDensityLabel:"Wysokość rzędu",toolbarDensityCompact:"Kompakt",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Komfort",toolbarColumns:"Kolumny",toolbarColumnsLabel:"Zaznacz kolumny",toolbarFilters:"Filtry",toolbarFiltersLabel:"Pokaż filtry",toolbarFiltersTooltipHide:"Ukryj filtry",toolbarFiltersTooltipShow:"Pokaż filtry",toolbarFiltersTooltipActive:e=>`Liczba aktywnych filtrów: ${e}`,toolbarQuickFilterPlaceholder:"Wyszukaj…",toolbarQuickFilterLabel:"Szukaj",toolbarQuickFilterDeleteIconLabel:"Wyczyść",toolbarExport:"Eksportuj",toolbarExportLabel:"Eksportuj",toolbarExportCSV:"Pobierz jako plik CSV",toolbarExportPrint:"Drukuj",toolbarExportExcel:"Pobierz jako plik Excel",columnsPanelTextFieldLabel:"Znajdź kolumnę",columnsPanelTextFieldPlaceholder:"Tytuł kolumny",columnsPanelDragIconLabel:"Zmień kolejność kolumn",columnsPanelShowAllButton:"Pokaż wszystko",columnsPanelHideAllButton:"Ukryj wszystko",filterPanelAddFilter:"Dodaj filtr",filterPanelRemoveAll:"Usuń wszystkie",filterPanelDeleteIconLabel:"Usuń",filterPanelLogicOperator:"Operator logiczny",filterPanelOperator:"Operator",filterPanelOperatorAnd:"I",filterPanelOperatorOr:"Lub",filterPanelColumns:"Kolumny",filterPanelInputLabel:"Wartość",filterPanelInputPlaceholder:"Filtrowana wartość",filterOperatorContains:"zawiera",filterOperatorEquals:"równa się",filterOperatorStartsWith:"zaczyna się od",filterOperatorEndsWith:"kończy się na",filterOperatorIs:"równa się",filterOperatorNot:"różne",filterOperatorAfter:"większe niż",filterOperatorOnOrAfter:"większe lub równe",filterOperatorBefore:"mniejsze niż",filterOperatorOnOrBefore:"mniejsze lub równe",filterOperatorIsEmpty:"jest pusty",filterOperatorIsNotEmpty:"nie jest pusty",filterOperatorIsAnyOf:"jest jednym z",headerFilterOperatorContains:"Zawiera",headerFilterOperatorEquals:"Równa się",headerFilterOperatorStartsWith:"Zaczyna się od",headerFilterOperatorEndsWith:"Kończy się na",headerFilterOperatorNot:"Niepuste",filterValueAny:"dowolny",filterValueTrue:"prawda",filterValueFalse:"fałsz",columnMenuLabel:"Menu",columnMenuShowColumns:"Pokaż wszystkie kolumny",columnMenuManageColumns:"Zarządzaj kolumnami",columnMenuFilter:"Filtr",columnMenuHideColumn:"Ukryj",columnMenuUnsort:"Anuluj sortowanie",columnMenuSortAsc:"Sortuj rosnąco",columnMenuSortDesc:"Sortuj malejąco",columnHeaderFiltersTooltipActive:e=>`Liczba aktywnych filtrów: ${e}`,columnHeaderFiltersLabel:"Pokaż filtry",columnHeaderSortIconLabel:"Sortuj",footerRowSelected:e=>`Liczba wybranych wierszy: ${e.toLocaleString()}`,footerTotalRows:"Łączna liczba wierszy:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} z ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Pole wyboru",checkboxSelectionSelectAllRows:"Zaznacz wszystkie wiersze",checkboxSelectionUnselectAllRows:"Odznacz wszystkie wiersze",checkboxSelectionSelectRow:"Zaznacz wiersz",checkboxSelectionUnselectRow:"Odznacz wiersz",booleanCellTrueLabel:"tak",booleanCellFalseLabel:"nie",actionsCellMore:"więcej",pinToLeft:"Przypnij do lewej",pinToRight:"Przypnij do prawej",unpin:"Odepnij",treeDataGroupingHeaderName:"Grupa",treeDataExpand:"pokaż elementy potomne",treeDataCollapse:"ukryj elementy potomne",groupingColumnHeaderName:"Grupa",groupColumn:e=>`Grupuj według ${e}`,unGroupColumn:e=>`Rozgrupuj ${e}`,expandDetailPanel:"Rozwiń",collapseDetailPanel:"Zwiń",rowReorderingHeaderName:"Porządkowanie wierszy"},rw=Pe(tw,oC),ow={noRowsLabel:"Nenhuma linha",noResultsOverlayLabel:"Nenhum resultado encontrado.",toolbarDensity:"Densidade",toolbarDensityLabel:"Densidade",toolbarDensityCompact:"Compacto",toolbarDensityStandard:"Padrão",toolbarDensityComfortable:"Confortável",toolbarColumns:"Colunas",toolbarColumnsLabel:"Exibir seletor de colunas",toolbarFilters:"Filtros",toolbarFiltersLabel:"Exibir filtros",toolbarFiltersTooltipHide:"Ocultar filtros",toolbarFiltersTooltipShow:"Exibir filtros",toolbarFiltersTooltipActive:e=>`${e} ${e!==1?"filtros":"filtro"} ${e!==1?"ativos":"ativo"}`,toolbarQuickFilterPlaceholder:"Procurar…",toolbarQuickFilterLabel:"Procurar",toolbarQuickFilterDeleteIconLabel:"Limpar",toolbarExport:"Exportar",toolbarExportLabel:"Exportar",toolbarExportCSV:"Baixar como CSV",toolbarExportPrint:"Imprimir",toolbarExportExcel:"Baixar como Excel",columnsPanelTextFieldLabel:"Localizar coluna",columnsPanelTextFieldPlaceholder:"Título da coluna",columnsPanelDragIconLabel:"Reordenar Coluna",columnsPanelShowAllButton:"Mostrar todas",columnsPanelHideAllButton:"Ocultar todas",filterPanelAddFilter:"Adicionar filtro",filterPanelRemoveAll:"Remover todos",filterPanelDeleteIconLabel:"Excluir",filterPanelLogicOperator:"Operador lógico",filterPanelOperator:"Operador",filterPanelOperatorAnd:"E",filterPanelOperatorOr:"Ou",filterPanelColumns:"Colunas",filterPanelInputLabel:"Valor",filterPanelInputPlaceholder:"Filtrar valor",filterOperatorContains:"contém",filterOperatorEquals:"é igual a",filterOperatorStartsWith:"começa com",filterOperatorEndsWith:"termina com",filterOperatorIs:"é",filterOperatorNot:"não é",filterOperatorAfter:"após",filterOperatorOnOrAfter:"em ou após",filterOperatorBefore:"antes de",filterOperatorOnOrBefore:"em ou antes de",filterOperatorIsEmpty:"está vazio",filterOperatorIsNotEmpty:"não está vazio",filterOperatorIsAnyOf:"é qualquer um dos","filterOperator=":"igual à","filterOperator!=":"diferente de","filterOperator>":"maior que","filterOperator>=":"maior ou igual que","filterOperator<":"menor que","filterOperator<=":"menor ou igual que",headerFilterOperatorContains:"Contém",headerFilterOperatorEquals:"Igual",headerFilterOperatorStartsWith:"Começa com",headerFilterOperatorEndsWith:"Termina com",headerFilterOperatorIs:"É",headerFilterOperatorNot:"Não é",headerFilterOperatorAfter:"Depois de",headerFilterOperatorOnOrAfter:"Está entre ou depois de",headerFilterOperatorBefore:"Antes de",headerFilterOperatorOnOrBefore:"Está entre ou antes de",headerFilterOperatorIsEmpty:"É vazio",headerFilterOperatorIsNotEmpty:"Não é vazio",headerFilterOperatorIsAnyOf:"É algum","headerFilterOperator=":"Igual","headerFilterOperator!=":"Não igual","headerFilterOperator>":"Maior que","headerFilterOperator>=":"Maior que ou igual a","headerFilterOperator<":"Menor que","headerFilterOperator<=":"Menor que ou igual a",filterValueAny:"qualquer",filterValueTrue:"verdadeiro",filterValueFalse:"falso",columnMenuLabel:"Menu",columnMenuShowColumns:"Exibir colunas",columnMenuManageColumns:"Gerir colunas",columnMenuFilter:"Filtrar",columnMenuHideColumn:"Ocultar",columnMenuUnsort:"Desfazer ordenação",columnMenuSortAsc:"Ordenar do menor para o maior",columnMenuSortDesc:"Ordenar do maior para o menor",columnHeaderFiltersTooltipActive:e=>`${e} ${e!==1?"filtros":"filtro"} ${e!==1?"ativos":"ativo"}`,columnHeaderFiltersLabel:"Exibir Filtros",columnHeaderSortIconLabel:"Ordenar",footerRowSelected:e=>e!==1?`${e.toLocaleString()} linhas selecionadas`:`${e.toLocaleString()} linha selecionada`,footerTotalRows:"Total de linhas:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} de ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Seleção",checkboxSelectionSelectAllRows:"Selecionar todas linhas",checkboxSelectionUnselectAllRows:"Deselecionar todas linhas",checkboxSelectionSelectRow:"Selecionar linha",checkboxSelectionUnselectRow:"Deselecionar linha",booleanCellTrueLabel:"sim",booleanCellFalseLabel:"não",actionsCellMore:"mais",pinToLeft:"Fixar à esquerda",pinToRight:"Fixar à direita",unpin:"Desafixar",treeDataGroupingHeaderName:"Grupo",treeDataExpand:"mostrar filhos",treeDataCollapse:"esconder filhos",groupingColumnHeaderName:"Grupo",groupColumn:e=>`Agrupar por ${e}`,unGroupColumn:e=>`Parar agrupamento por ${e}`,detailPanelToggle:"Painel de detalhes",expandDetailPanel:"Expandir",collapseDetailPanel:"Esconder",rowReorderingHeaderName:"Reorganizar linhas",aggregationMenuItemHeader:"Agrupar",aggregationFunctionLabelSum:"soma",aggregationFunctionLabelAvg:"média",aggregationFunctionLabelMin:"mín",aggregationFunctionLabelMax:"máx",aggregationFunctionLabelSize:"tamanho"},lw=Pe(ow,lC),nw={noRowsLabel:"Lipsă date",noResultsOverlayLabel:"Nu au fost găsite rezultate.",toolbarDensity:"Înălțime rând",toolbarDensityLabel:"Înălțime rând",toolbarDensityCompact:"Compact",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Lat",toolbarColumns:"Coloane",toolbarColumnsLabel:"Afișează selecție coloane",toolbarFilters:"Filtru",toolbarFiltersLabel:"Afișează filtru",toolbarFiltersTooltipHide:"Ascunde filtru",toolbarFiltersTooltipShow:"Afișează filtru",toolbarFiltersTooltipActive:e=>e!==1?`${e} filtru activ`:`${e} filtru activ`,toolbarQuickFilterPlaceholder:"Căutare…",toolbarQuickFilterLabel:"Căutare",toolbarQuickFilterDeleteIconLabel:"Ștergere",toolbarExport:"Export",toolbarExportLabel:"Export",toolbarExportCSV:"Download în format CSV",toolbarExportPrint:"Printare",toolbarExportExcel:"Download în format Excel",columnsPanelTextFieldLabel:"Găsește coloana",columnsPanelTextFieldPlaceholder:"Titlu coloană",columnsPanelDragIconLabel:"Resortare coloană",columnsPanelShowAllButton:"Afișează tot",columnsPanelHideAllButton:"Ascunde tot",filterPanelAddFilter:"Adăugare filtru",filterPanelRemoveAll:"Șterge tot",filterPanelDeleteIconLabel:"Ștergere",filterPanelLogicOperator:"Operatori logici",filterPanelOperator:"Operatori",filterPanelOperatorAnd:"Și",filterPanelOperatorOr:"Sau",filterPanelColumns:"Coloane",filterPanelInputLabel:"Valoare",filterPanelInputPlaceholder:"Filtrare valoare",filterOperatorContains:"conține",filterOperatorEquals:"este egal cu",filterOperatorStartsWith:"începe cu",filterOperatorEndsWith:"se termină cu",filterOperatorIs:"este",filterOperatorNot:"nu este",filterOperatorAfter:"este după",filterOperatorOnOrAfter:"este la sau după",filterOperatorBefore:"este înainte de",filterOperatorOnOrBefore:"este la sau înainte de",filterOperatorIsEmpty:"este gol",filterOperatorIsNotEmpty:"nu este gol",filterOperatorIsAnyOf:"este una din valori","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Conține",headerFilterOperatorEquals:"Egal cu",headerFilterOperatorStartsWith:"Începe cu",headerFilterOperatorEndsWith:"Se termină cu",headerFilterOperatorIs:"Este",headerFilterOperatorNot:"Nu este",headerFilterOperatorAfter:"Este după",headerFilterOperatorOnOrAfter:"Este la sau după",headerFilterOperatorBefore:"Este înainte de",headerFilterOperatorOnOrBefore:"este la sau înainte de",headerFilterOperatorIsEmpty:"Este gol",headerFilterOperatorIsNotEmpty:"Nu este gol",headerFilterOperatorIsAnyOf:"Este una din valori","headerFilterOperator=":"Egal cu","headerFilterOperator!=":"Nu este egal cu","headerFilterOperator>":"Mai mare decât","headerFilterOperator>=":"Mai mare sau egal cu","headerFilterOperator<":"Mai mic decât","headerFilterOperator<=":"Mai mic sau egal cu",filterValueAny:"Aleatoriu",filterValueTrue:"Da",filterValueFalse:"Nu",columnMenuLabel:"Meniu",columnMenuShowColumns:"Afișează toate coloanele",columnMenuManageColumns:"Gestionează coloane",columnMenuFilter:"Filtru",columnMenuHideColumn:"Ascunde",columnMenuUnsort:"Dezactivare sortare",columnMenuSortAsc:"Sortează crescător",columnMenuSortDesc:"Sortează descrescător",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} filtru activ`:`${e} filtru activ`,columnHeaderFiltersLabel:"Afișează filtru",columnHeaderSortIconLabel:"Sortare",footerRowSelected:e=>e!==1?`${e.toLocaleString()} Înregistrări selectate`:`${e.toLocaleString()} Înregistrare selectată`,footerTotalRows:"Total:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} din ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Checkbox Selecție",checkboxSelectionSelectAllRows:"Selectare toate rândurile",checkboxSelectionUnselectAllRows:"Deselectare toate rândurile",checkboxSelectionSelectRow:"Selectare rând",checkboxSelectionUnselectRow:"Deselectare rând",booleanCellTrueLabel:"Da",booleanCellFalseLabel:"Nu",actionsCellMore:"Mai multe",pinToLeft:"Fixare în stânga",pinToRight:"Fixare în dreapta",unpin:"Anulare fixare",treeDataGroupingHeaderName:"Grup",treeDataExpand:"Afișare copii",treeDataCollapse:"Ascundere copii",groupingColumnHeaderName:"Grupare",groupColumn:e=>`Grupare după ${e}`,unGroupColumn:e=>`Anulare Grupare după ${e}`,detailPanelToggle:"Comutare panou detalii",expandDetailPanel:"Extindere",collapseDetailPanel:"Restrângere",rowReorderingHeaderName:"Reordonare rânduri",aggregationMenuItemHeader:"Agregare",aggregationFunctionLabelSum:"Sumă",aggregationFunctionLabelAvg:"Medie",aggregationFunctionLabelMin:"Minim",aggregationFunctionLabelMax:"Maxim",aggregationFunctionLabelSize:"Numărul elementelor"},aw=Pe(nw,aC),iw={noRowsLabel:"Нет строк",noResultsOverlayLabel:"Данные не найдены.",toolbarDensity:"Высота строки",toolbarDensityLabel:"Высота строки",toolbarDensityCompact:"Компактная",toolbarDensityStandard:"Стандартная",toolbarDensityComfortable:"Комфортная",toolbarColumns:"Столбцы",toolbarColumnsLabel:"Выделите столбцы",toolbarFilters:"Фильтры",toolbarFiltersLabel:"Показать фильтры",toolbarFiltersTooltipHide:"Скрыть фильтры",toolbarFiltersTooltipShow:"Показать фильтры",toolbarFiltersTooltipActive:e=>{let t="активных фильтров";const r=e%10;return r>1&&r<5?t="активных фильтра":r===1&&(t="активный фильтр"),`${e} ${t}`},toolbarQuickFilterPlaceholder:"Поиск…",toolbarQuickFilterLabel:"Поиск",toolbarQuickFilterDeleteIconLabel:"Очистить",toolbarExport:"Экспорт",toolbarExportLabel:"Экспорт",toolbarExportCSV:"Скачать в формате CSV",toolbarExportPrint:"Печать",toolbarExportExcel:"Скачать в формате Excel",columnsPanelTextFieldLabel:"Найти столбец",columnsPanelTextFieldPlaceholder:"Заголовок столбца",columnsPanelDragIconLabel:"Изменить порядок столбца",columnsPanelShowAllButton:"Показать все",columnsPanelHideAllButton:"Скрыть все",filterPanelAddFilter:"Добавить фильтр",filterPanelRemoveAll:"Очистить фильтр",filterPanelDeleteIconLabel:"Удалить",filterPanelLogicOperator:"Логические операторы",filterPanelOperator:"Операторы",filterPanelOperatorAnd:"И",filterPanelOperatorOr:"Или",filterPanelColumns:"Столбцы",filterPanelInputLabel:"Значение",filterPanelInputPlaceholder:"Значение фильтра",filterOperatorContains:"содержит",filterOperatorEquals:"равен",filterOperatorStartsWith:"начинается с",filterOperatorEndsWith:"заканчивается на",filterOperatorIs:"равен",filterOperatorNot:"не равен",filterOperatorAfter:"больше чем",filterOperatorOnOrAfter:"больше или равно",filterOperatorBefore:"меньше чем",filterOperatorOnOrBefore:"меньше или равно",filterOperatorIsEmpty:"пустой",filterOperatorIsNotEmpty:"не пустой",filterOperatorIsAnyOf:"любой из","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"содержит",headerFilterOperatorEquals:"равен",headerFilterOperatorStartsWith:"начинается с",headerFilterOperatorEndsWith:"заканчивается на",headerFilterOperatorIs:"равен",headerFilterOperatorNot:"не равен",headerFilterOperatorAfter:"больше чем",headerFilterOperatorOnOrAfter:"больше или равно",headerFilterOperatorBefore:"меньше чем",headerFilterOperatorOnOrBefore:"меньше или равно",headerFilterOperatorIsEmpty:"пустой",headerFilterOperatorIsNotEmpty:"не пустой",headerFilterOperatorIsAnyOf:"любой из","headerFilterOperator=":"содержит","headerFilterOperator!=":"не содержит","headerFilterOperator>":"больше чем","headerFilterOperator>=":"больше или равно","headerFilterOperator<":"меньше чем","headerFilterOperator<=":"меньше или равно",filterValueAny:"любой",filterValueTrue:"истина",filterValueFalse:"ложь",columnMenuLabel:"Меню",columnMenuShowColumns:"Показать столбцы",columnMenuManageColumns:"Управление колонками",columnMenuFilter:"Фильтр",columnMenuHideColumn:"Скрыть",columnMenuUnsort:"Отменить сортировку",columnMenuSortAsc:"Сортировать по возрастанию",columnMenuSortDesc:"Сортировать по убыванию",columnHeaderFiltersTooltipActive:e=>{let t="активных фильтров";const r=e%10;return r>1&&r<5?t="активных фильтра":r===1&&(t="активный фильтр"),`${e} ${t}`},columnHeaderFiltersLabel:"Показать фильтры",columnHeaderSortIconLabel:"Сортировать",footerRowSelected:e=>{let t="строк выбрано";const r=e%10;return r>1&&r<5?t="строки выбраны":r===1&&(t="строка выбрана"),`${e} ${t}`},footerTotalRows:"Всего строк:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} из ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Выбор флажка",checkboxSelectionSelectAllRows:"Выбрать все строки",checkboxSelectionUnselectAllRows:"Отменить выбор всех строк",checkboxSelectionSelectRow:"Выбрать строку",checkboxSelectionUnselectRow:"Отменить выбор строки",booleanCellTrueLabel:"истина",booleanCellFalseLabel:"ложь",actionsCellMore:"ещё",pinToLeft:"Закрепить слева",pinToRight:"Закрепить справа",unpin:"Открепить",treeDataGroupingHeaderName:"Группа",treeDataExpand:"показать дочерние элементы",treeDataCollapse:"скрыть дочерние элементы",groupingColumnHeaderName:"Группа",groupColumn:e=>`Сгруппировать по ${e}`,unGroupColumn:e=>`Разгруппировать по ${e}`,detailPanelToggle:"Детали",expandDetailPanel:"Развернуть",collapseDetailPanel:"Свернуть",rowReorderingHeaderName:"Изменение порядка строк",aggregationMenuItemHeader:"Объединение данных",aggregationFunctionLabelSum:"сумм",aggregationFunctionLabelAvg:"срзнач",aggregationFunctionLabelMin:"мин",aggregationFunctionLabelMax:"макс",aggregationFunctionLabelSize:"счет"},sw=Pe(iw,iC),uw={noRowsLabel:"Žiadne záznamy",noResultsOverlayLabel:"Nenašli sa žadne výsledky.",toolbarDensity:"Hustota",toolbarDensityLabel:"Hustota",toolbarDensityCompact:"Kompaktná",toolbarDensityStandard:"Štandartná",toolbarDensityComfortable:"Komfortná",toolbarColumns:"Stĺpce",toolbarColumnsLabel:"Vybrať stĺpce",toolbarFilters:"Filtre",toolbarFiltersLabel:"Zobraziť filtre",toolbarFiltersTooltipHide:"Skryť filtre ",toolbarFiltersTooltipShow:"Zobraziť filtre",toolbarFiltersTooltipActive:e=>{let t="aktívnych filtrov";return e>1&&e<5?t="aktívne filtre":e===1&&(t="aktívny filter"),`${e} ${t}`},toolbarQuickFilterPlaceholder:"Vyhľadať…",toolbarQuickFilterLabel:"Vyhľadať",toolbarQuickFilterDeleteIconLabel:"Vymazať",toolbarExport:"Export",toolbarExportLabel:"Export",toolbarExportCSV:"Stiahnuť ako CSV",toolbarExportPrint:"Vytlačiť",toolbarExportExcel:"Stiahnuť ako Excel",columnsPanelTextFieldLabel:"Nájsť stĺpec",columnsPanelTextFieldPlaceholder:"Názov stĺpca",columnsPanelDragIconLabel:"Usporiadť stĺpce",columnsPanelShowAllButton:"Zobraziť všetko",columnsPanelHideAllButton:"Skryť všetko",filterPanelAddFilter:"Pridať filter",filterPanelRemoveAll:"Odstrániť všetky",filterPanelDeleteIconLabel:"Odstrániť",filterPanelLogicOperator:"Logický operátor",filterPanelOperator:"Operátory",filterPanelOperatorAnd:"A",filterPanelOperatorOr:"Alebo",filterPanelColumns:"Stĺpce",filterPanelInputLabel:"Hodnota",filterPanelInputPlaceholder:"Hodnota filtra",filterOperatorContains:"obsahuje",filterOperatorEquals:"rovná sa",filterOperatorStartsWith:"začína s",filterOperatorEndsWith:"končí na",filterOperatorIs:"je",filterOperatorNot:"nie je",filterOperatorAfter:"je po",filterOperatorOnOrAfter:"je na alebo po",filterOperatorBefore:"je pred",filterOperatorOnOrBefore:"je na alebo skôr",filterOperatorIsEmpty:"je prázdny",filterOperatorIsNotEmpty:"nie je prázdny",filterOperatorIsAnyOf:"je jeden z","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Obsahuje",headerFilterOperatorEquals:"Rovná sa",headerFilterOperatorStartsWith:"Začína s",headerFilterOperatorEndsWith:"Končí na",headerFilterOperatorIs:"Je",headerFilterOperatorNot:"Nie je",headerFilterOperatorAfter:"Je po",headerFilterOperatorOnOrAfter:"Je na alebo po",headerFilterOperatorBefore:"Je pred",headerFilterOperatorOnOrBefore:"Je na alebo skôr",headerFilterOperatorIsEmpty:"Je prázdny",headerFilterOperatorIsNotEmpty:"Nie je prázdny",headerFilterOperatorIsAnyOf:"Je jeden z","headerFilterOperator=":"Rovná sa","headerFilterOperator!=":"Nerovná sa","headerFilterOperator>":"Väčší ako","headerFilterOperator>=":"Väčší ako alebo rovný","headerFilterOperator<":"Menší ako","headerFilterOperator<=":"Menší ako alebo rovný",filterValueAny:"akýkoľvek",filterValueTrue:"áno",filterValueFalse:"nie",columnMenuLabel:"Menu",columnMenuShowColumns:"Zobraziť stĺpce",columnMenuManageColumns:"Spravovať stĺpce",columnMenuFilter:"Filter",columnMenuHideColumn:"Skryť",columnMenuUnsort:"Zrušiť filtre",columnMenuSortAsc:"Zoradiť vzostupne",columnMenuSortDesc:"Zoradiť zostupne",columnHeaderFiltersTooltipActive:e=>{let t="aktívnych filtrov";return e>1&&e<5?t="aktívne filtre":e===1&&(t="aktívny filter"),`${e} ${t}`},columnHeaderFiltersLabel:"Zobraziť filtre",columnHeaderSortIconLabel:"Filtrovať",footerRowSelected:e=>{let t="vybraných záznamov";return e>1&&e<5?t="vybrané záznamy":e===1&&(t="vybraný záznam"),`${e} ${t}`},footerTotalRows:"Riadkov spolu:",footerTotalVisibleRows:(e,t)=>{const r=t.toString(),o=r[0],l=["4","6","7"].includes(o)||o==="1"&&r.length%3===0?"zo":"z";return`${e.toLocaleString()} ${l} ${t.toLocaleString()}`},checkboxSelectionHeaderName:"Výber riadku",checkboxSelectionSelectAllRows:"Vybrať všetky riadky",checkboxSelectionUnselectAllRows:"Zrušiť výber všetkých riadkov",checkboxSelectionSelectRow:"Vyber riadok",checkboxSelectionUnselectRow:"Zruš výber riadku",booleanCellTrueLabel:"áno",booleanCellFalseLabel:"nie",actionsCellMore:"viac",pinToLeft:"Pripnúť na ľavo",pinToRight:"Pripnúť na pravo",unpin:"Odopnúť",treeDataGroupingHeaderName:"Skupina",treeDataExpand:"zobraziť potomkov",treeDataCollapse:"skryť potomkov",groupingColumnHeaderName:"Skupina",groupColumn:e=>`Zoskupiť podľa ${e}`,unGroupColumn:e=>`Prestať zoskupovať podľa ${e}`,detailPanelToggle:"Prepnúť detail panelu",expandDetailPanel:"Rozbaliť",collapseDetailPanel:"Zbaliť",rowReorderingHeaderName:"Preusporiadávanie riadkov",aggregationMenuItemHeader:"Agregácia",aggregationFunctionLabelSum:"suma",aggregationFunctionLabelAvg:"priemer",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"max",aggregationFunctionLabelSize:"počet"},cw=Pe(uw,sC),dw={noRowsLabel:"Inga rader",noResultsOverlayLabel:"Inga resultat funna.",toolbarDensity:"Densitet",toolbarDensityLabel:"Densitet",toolbarDensityCompact:"Kompakt",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Luftig",toolbarColumns:"Kolumner",toolbarColumnsLabel:"Välj kolumner",toolbarFilters:"Filter",toolbarFiltersLabel:"Visa filter",toolbarFiltersTooltipHide:"Dölj filter",toolbarFiltersTooltipShow:"Visa filter",toolbarFiltersTooltipActive:e=>e!==1?`${e} aktiva filter`:`${e} aktivt filter`,toolbarQuickFilterPlaceholder:"Sök…",toolbarQuickFilterLabel:"Sök",toolbarQuickFilterDeleteIconLabel:"Rensa",toolbarExport:"Exportera",toolbarExportLabel:"Exportera",toolbarExportCSV:"Ladda ner som CSV",toolbarExportPrint:"Skriv ut",toolbarExportExcel:"Ladda ner som Excel",columnsPanelTextFieldLabel:"Hitta kolumn",columnsPanelTextFieldPlaceholder:"Kolumntitel",columnsPanelDragIconLabel:"Ordna om kolumnen",columnsPanelShowAllButton:"Visa alla",columnsPanelHideAllButton:"Dölj alla",filterPanelAddFilter:"Lägg till filter",filterPanelRemoveAll:"Ta bort alla",filterPanelDeleteIconLabel:"Ta bort",filterPanelLogicOperator:"Logisk operator",filterPanelOperator:"Operator",filterPanelOperatorAnd:"Och",filterPanelOperatorOr:"Eller",filterPanelColumns:"Kolumner",filterPanelInputLabel:"Värde",filterPanelInputPlaceholder:"Filtervärde",filterOperatorContains:"innehåller",filterOperatorEquals:"lika med",filterOperatorStartsWith:"börjar med",filterOperatorEndsWith:"slutar med",filterOperatorIs:"är",filterOperatorNot:"är inte",filterOperatorAfter:"är efter",filterOperatorOnOrAfter:"är på eller efter",filterOperatorBefore:"är innan",filterOperatorOnOrBefore:"är på eller innan",filterOperatorIsEmpty:"är tom",filterOperatorIsNotEmpty:"är inte tom",filterOperatorIsAnyOf:"är någon av","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Innehåller",headerFilterOperatorEquals:"Lika med",headerFilterOperatorStartsWith:"Börjar med",headerFilterOperatorEndsWith:"Slutar med",headerFilterOperatorIs:"Är",headerFilterOperatorNot:"Är inte",headerFilterOperatorAfter:"Är efter",headerFilterOperatorOnOrAfter:"Är på eller efter",headerFilterOperatorBefore:"Är innan",headerFilterOperatorOnOrBefore:"Är på eller innan",headerFilterOperatorIsEmpty:"Är tom",headerFilterOperatorIsNotEmpty:"Är inte tom",headerFilterOperatorIsAnyOf:"Innehåller någon av","headerFilterOperator=":"Lika med","headerFilterOperator!=":"Inte lika med","headerFilterOperator>":"Större än","headerFilterOperator>=":"Större eller lika med","headerFilterOperator<":"Mindre än","headerFilterOperator<=":"Mindre eller lika med",filterValueAny:"något",filterValueTrue:"sant",filterValueFalse:"falskt",columnMenuLabel:"Meny",columnMenuShowColumns:"Visa kolumner",columnMenuManageColumns:"Hantera kolumner",columnMenuFilter:"Filtrera",columnMenuHideColumn:"Dölj",columnMenuUnsort:"Ta bort sortering",columnMenuSortAsc:"Sortera stigande",columnMenuSortDesc:"Sortera fallande",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} aktiva filter`:`${e} aktivt filter`,columnHeaderFiltersLabel:"Visa filter",columnHeaderSortIconLabel:"Sortera",footerRowSelected:e=>e!==1?`${e.toLocaleString()} rader markerade`:`${e.toLocaleString()} rad markerad`,footerTotalRows:"Totalt antal rader:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} av ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Markering med kryssruta",checkboxSelectionSelectAllRows:"Markera alla rader",checkboxSelectionUnselectAllRows:"Avmarkera alla rader",checkboxSelectionSelectRow:"Markera rad",checkboxSelectionUnselectRow:"Avmarkera rad",booleanCellTrueLabel:"ja",booleanCellFalseLabel:"nej",actionsCellMore:"mer",pinToLeft:"Fäst till vänster",pinToRight:"Fäst till höger",unpin:"Ta bort fästning",treeDataGroupingHeaderName:"Grupp",treeDataExpand:"visa underordnade",treeDataCollapse:"dölj underordnade",groupingColumnHeaderName:"Grupp",groupColumn:e=>`Gruppera efter ${e}`,unGroupColumn:e=>`Sluta gruppera efter ${e}`,detailPanelToggle:"Växla detaljpanel",expandDetailPanel:"Expandera",collapseDetailPanel:"Kollapsa",rowReorderingHeaderName:"Ordna om rader",aggregationMenuItemHeader:"Aggregering",aggregationFunctionLabelSum:"summa",aggregationFunctionLabelAvg:"medel",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"max",aggregationFunctionLabelSize:"antal"},pw=Pe(dw,uC),fw={noRowsLabel:"Satır yok",noResultsOverlayLabel:"Sonuç bulunamadı.",toolbarDensity:"Yoğunluk",toolbarDensityLabel:"Yoğunluk",toolbarDensityCompact:"Sıkı",toolbarDensityStandard:"Standart",toolbarDensityComfortable:"Rahat",toolbarColumns:"Sütunlar",toolbarColumnsLabel:"Sütun seç",toolbarFilters:"Filtreler",toolbarFiltersLabel:"Filtreleri göster",toolbarFiltersTooltipHide:"Filtreleri gizle",toolbarFiltersTooltipShow:"Filtreleri göster",toolbarFiltersTooltipActive:e=>`${e} aktif filtre`,toolbarQuickFilterPlaceholder:"Ara…",toolbarQuickFilterLabel:"Ara",toolbarQuickFilterDeleteIconLabel:"Temizle",toolbarExport:"Dışa aktar",toolbarExportLabel:"Dışa aktar",toolbarExportCSV:"CSV olarak aktar",toolbarExportPrint:"Yazdır",toolbarExportExcel:"Excel olarak aktar",columnsPanelTextFieldLabel:"Sütun ara",columnsPanelTextFieldPlaceholder:"Sütun adı",columnsPanelDragIconLabel:"Sütunları yeniden sırala",columnsPanelShowAllButton:"Hepsini göster",columnsPanelHideAllButton:"Hepsini gizle",filterPanelAddFilter:"Filtre Ekle",filterPanelRemoveAll:"Hepsini kaldır",filterPanelDeleteIconLabel:"Kaldır",filterPanelLogicOperator:"Mantıksal operatörler",filterPanelOperator:"Operatör",filterPanelOperatorAnd:"Ve",filterPanelOperatorOr:"Veya",filterPanelColumns:"Sütunlar",filterPanelInputLabel:"Değer",filterPanelInputPlaceholder:"Filtre değeri",filterOperatorContains:"içerir",filterOperatorEquals:"eşittir",filterOperatorStartsWith:"ile başlar",filterOperatorEndsWith:"ile biter",filterOperatorIs:"eşittir",filterOperatorNot:"eşit değildir",filterOperatorAfter:"büyük",filterOperatorOnOrAfter:"büyük eşit",filterOperatorBefore:"küçük",filterOperatorOnOrBefore:"küçük eşit",filterOperatorIsEmpty:"boş",filterOperatorIsNotEmpty:"dolu",filterOperatorIsAnyOf:"herhangi biri","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Şunu içerir",headerFilterOperatorEquals:"Şuna eşittir",headerFilterOperatorStartsWith:"Şununla başlar",headerFilterOperatorEndsWith:"Şununla biter",filterValueAny:"herhangi",filterValueTrue:"doğru",filterValueFalse:"yanlış",columnMenuLabel:"Menü",columnMenuShowColumns:"Sütunları göster",columnMenuManageColumns:"Sütunları yönet",columnMenuFilter:"Filtre Ekle",columnMenuHideColumn:"Gizle",columnMenuUnsort:"Varsayılan Sıralama",columnMenuSortAsc:"Sırala - Artan",columnMenuSortDesc:"Sırala - Azalan",columnHeaderFiltersTooltipActive:e=>`${e} filtre aktif`,columnHeaderFiltersLabel:"Filtreleri göster",columnHeaderSortIconLabel:"Sırala",footerRowSelected:e=>`${e.toLocaleString()} satır seçildi`,footerTotalRows:"Toplam Satır:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} / ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Seçim",checkboxSelectionSelectAllRows:"Tüm satırları seç",checkboxSelectionUnselectAllRows:"Tüm satırların seçimini kaldır",checkboxSelectionSelectRow:"Satırı seç",checkboxSelectionUnselectRow:"Satır seçimini bırak",booleanCellTrueLabel:"Evet",booleanCellFalseLabel:"Hayır",actionsCellMore:"daha fazla",pinToLeft:"Sola sabitle",pinToRight:"Sağa sabitle",unpin:"Sabitlemeyi kaldır",treeDataGroupingHeaderName:"Grup",treeDataExpand:"göster",treeDataCollapse:"gizle",groupingColumnHeaderName:"Grup",groupColumn:e=>`${e} için grupla`,unGroupColumn:e=>`${e} için gruplamayı kaldır`,detailPanelToggle:"Detay görünümüne geçiş",expandDetailPanel:"Genişlet",collapseDetailPanel:"Gizle",rowReorderingHeaderName:"Satırı yeniden sırala",aggregationMenuItemHeader:"Toplama",aggregationFunctionLabelSum:"top",aggregationFunctionLabelAvg:"ort",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"maks",aggregationFunctionLabelSize:"boyut"},gw=Pe(fw,cC),Go=(e,t)=>{let r=t.many;const o=e%10;return o>1&&o<5?r=t.few:o===1&&(r=t.one),`${e} ${r}`},mw={noRowsLabel:"Немає рядків",noResultsOverlayLabel:"Дані не знайдено.",toolbarDensity:"Висота рядка",toolbarDensityLabel:"Висота рядка",toolbarDensityCompact:"Компактний",toolbarDensityStandard:"Стандартний",toolbarDensityComfortable:"Комфортний",toolbarColumns:"Стовпці",toolbarColumnsLabel:"Виділіть стовпці",toolbarFilters:"Фільтри",toolbarFiltersLabel:"Показати фільтри",toolbarFiltersTooltipHide:"Приховати фільтри",toolbarFiltersTooltipShow:"Показати фільтри",toolbarFiltersTooltipActive:e=>Go(e,{one:"активний фільтр",few:"активні фільтри",many:"активних фільтрів"}),toolbarQuickFilterPlaceholder:"Пошук…",toolbarQuickFilterLabel:"Пошук",toolbarQuickFilterDeleteIconLabel:"Очистити",toolbarExport:"Експорт",toolbarExportLabel:"Експорт",toolbarExportCSV:"Завантажити у форматі CSV",toolbarExportPrint:"Друк",toolbarExportExcel:"Завантажити у форматі Excel",columnsPanelTextFieldLabel:"Знайти стовпець",columnsPanelTextFieldPlaceholder:"Заголовок стовпця",columnsPanelDragIconLabel:"Змінити порядок стовпця",columnsPanelShowAllButton:"Показати всі",columnsPanelHideAllButton:"Приховати всі",filterPanelAddFilter:"Додати фільтр",filterPanelRemoveAll:"Видалити всі",filterPanelDeleteIconLabel:"Видалити",filterPanelLogicOperator:"Логічна функція",filterPanelOperator:"Оператори",filterPanelOperatorAnd:"І",filterPanelOperatorOr:"Або",filterPanelColumns:"Стовпці",filterPanelInputLabel:"Значення",filterPanelInputPlaceholder:"Значення фільтра",filterOperatorContains:"містить",filterOperatorEquals:"дорівнює",filterOperatorStartsWith:"починається з",filterOperatorEndsWith:"закінчується на",filterOperatorIs:"дорівнює",filterOperatorNot:"не дорівнює",filterOperatorAfter:"більше ніж",filterOperatorOnOrAfter:"більше або дорівнює",filterOperatorBefore:"менше ніж",filterOperatorOnOrBefore:"менше або дорівнює",filterOperatorIsEmpty:"порожній",filterOperatorIsNotEmpty:"не порожній",filterOperatorIsAnyOf:"будь-що із","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Містить",headerFilterOperatorEquals:"Дорівнює",headerFilterOperatorStartsWith:"Починається з",headerFilterOperatorEndsWith:"Закінчується на",headerFilterOperatorIs:"Дорівнює",headerFilterOperatorNot:"Не дорівнює",headerFilterOperatorAfter:"Після",headerFilterOperatorOnOrAfter:"Після (включаючи)",headerFilterOperatorBefore:"Раніше",headerFilterOperatorOnOrBefore:"Раніше (включаючи)",headerFilterOperatorIsEmpty:"Порожнє",headerFilterOperatorIsNotEmpty:"Не порожнє",headerFilterOperatorIsAnyOf:"Будь-що із","headerFilterOperator=":"Дорівнює","headerFilterOperator!=":"Не дорівнює","headerFilterOperator>":"Більше ніж","headerFilterOperator>=":"Більше або дорівнює","headerFilterOperator<":"Менше ніж","headerFilterOperator<=":"Менше або дорівнює",filterValueAny:"будь-який",filterValueTrue:"так",filterValueFalse:"ні",columnMenuLabel:"Меню",columnMenuShowColumns:"Показати стовпці",columnMenuManageColumns:"Керування стовпцями",columnMenuFilter:"Фільтр",columnMenuHideColumn:"Приховати",columnMenuUnsort:"Скасувати сортування",columnMenuSortAsc:"Сортувати за зростанням",columnMenuSortDesc:"Сортувати за спаданням",columnHeaderFiltersTooltipActive:e=>Go(e,{one:"активний фільтр",few:"активні фільтри",many:"активних фільтрів"}),columnHeaderFiltersLabel:"Показати фільтри",columnHeaderSortIconLabel:"Сортувати",footerRowSelected:e=>Go(e,{one:"вибраний рядок",few:"вибрані рядки",many:"вибраних рядків"}),footerTotalRows:"Усього рядків:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} з ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Вибір прапорця",checkboxSelectionSelectAllRows:"Вибрати всі рядки",checkboxSelectionUnselectAllRows:"Скасувати вибір всіх рядків",checkboxSelectionSelectRow:"Вибрати рядок",checkboxSelectionUnselectRow:"Скасувати вибір рядка",booleanCellTrueLabel:"так",booleanCellFalseLabel:"ні",actionsCellMore:"більше",pinToLeft:"Закріпити ліворуч",pinToRight:"Закріпити праворуч",unpin:"Відкріпити",treeDataGroupingHeaderName:"Група",treeDataExpand:"показати дочірні елементи",treeDataCollapse:"приховати дочірні елементи",groupingColumnHeaderName:"Група",groupColumn:e=>`Групувати за ${e}`,unGroupColumn:e=>`Відмінити групування за ${e}`,detailPanelToggle:"Перемикач панелі деталей",expandDetailPanel:"Показати",collapseDetailPanel:"Приховати",rowReorderingHeaderName:"Порядок рядків",aggregationMenuItemHeader:"Агрегація",aggregationFunctionLabelSum:"сума",aggregationFunctionLabelAvg:"сер",aggregationFunctionLabelMin:"мін",aggregationFunctionLabelMax:"макс",aggregationFunctionLabelSize:"кількість"},bw=Pe(mw,dC),hw={noRowsLabel:"کوئی قطاریں نہیں",noResultsOverlayLabel:"کوئی نتائج نہیں",toolbarDensity:"کثافت",toolbarDensityLabel:"کثافت",toolbarDensityCompact:"تنگ",toolbarDensityStandard:"درمیانہ",toolbarDensityComfortable:"مناسب",toolbarColumns:"کالمز",toolbarColumnsLabel:"کالمز کو منتخب کریں",toolbarFilters:"فلٹرز",toolbarFiltersLabel:"فلٹرز دکھائیں",toolbarFiltersTooltipHide:"فلٹرز چھپائیں",toolbarFiltersTooltipShow:"فلٹرز دکھائیں",toolbarFiltersTooltipActive:e=>e!==1?`${e} فعال فلٹرز`:`${e} فلٹرز فعال`,toolbarQuickFilterPlaceholder:"تلاش کریں۔۔۔",toolbarQuickFilterLabel:"تلاش کریں",toolbarQuickFilterDeleteIconLabel:"کلئیر کریں",toolbarExport:"ایکسپورٹ",toolbarExportLabel:"ایکسپورٹ",toolbarExportCSV:"CSV کے طور پر ڈاوٴنلوڈ کریں",toolbarExportPrint:"پرنٹ کریں",toolbarExportExcel:"ایکسل کے طور پر ڈاوٴنلوڈ کریں",columnsPanelTextFieldLabel:"کالم کو تلاش کریں",columnsPanelTextFieldPlaceholder:"کالم کا عنوان",columnsPanelDragIconLabel:"کالم کی ترتیب تبدیل کریں",columnsPanelShowAllButton:"سارے دکھائیں",columnsPanelHideAllButton:"سارے چھپائیں",filterPanelAddFilter:"نیا فلٹر",filterPanelRemoveAll:"سارے ختم کریں",filterPanelDeleteIconLabel:"ختم کریں",filterPanelLogicOperator:"لاجک آپریٹر",filterPanelOperator:"آپریٹر",filterPanelOperatorAnd:"اور",filterPanelOperatorOr:"یا",filterPanelColumns:"کالمز",filterPanelInputLabel:"ویلیو",filterPanelInputPlaceholder:"ویلیو کو فلٹر کریں",filterOperatorContains:"شامل ہے",filterOperatorEquals:"برابر ہے",filterOperatorStartsWith:"شروع ہوتا ہے",filterOperatorEndsWith:"ختم ہوتا ہے",filterOperatorIs:"ہے",filterOperatorNot:"نہیں",filterOperatorAfter:"بعد میں ہے",filterOperatorOnOrAfter:"پر یا بعد میں ہے",filterOperatorBefore:"پہلے ہے",filterOperatorOnOrBefore:"پر یا پہلے ہے",filterOperatorIsEmpty:"خالی ہے",filterOperatorIsNotEmpty:"خالی نہیں ہے",filterOperatorIsAnyOf:"ان میں سے کوئی ہے","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"شامل ہے",headerFilterOperatorEquals:"برابر ہے",headerFilterOperatorStartsWith:"شروع ہوتا ہے",headerFilterOperatorEndsWith:"ختم ہوتا ہے",headerFilterOperatorIs:"ہے",headerFilterOperatorNot:"نہیں ہے",headerFilterOperatorAfter:"بعد میں ہے",headerFilterOperatorOnOrAfter:"پر یا بعد میں ہے",headerFilterOperatorBefore:"پہلے ہے",headerFilterOperatorOnOrBefore:"پر یا پہلے ہے",headerFilterOperatorIsEmpty:"خالی ہے",headerFilterOperatorIsNotEmpty:"خالی نہیں ہے",headerFilterOperatorIsAnyOf:"ان میں سے کوئی ہے","headerFilterOperator=":"برابر ہے","headerFilterOperator!=":"برابر نہیں ہے","headerFilterOperator>":"ذیادہ ہے","headerFilterOperator>=":"ذیادہ یا برابر ہے","headerFilterOperator<":"کم ہے","headerFilterOperator<=":"کم یا برابر ہے",filterValueAny:"کوئی بھی",filterValueTrue:"صحیح",filterValueFalse:"غلط",columnMenuLabel:"مینیو",columnMenuShowColumns:"کالم دکھائیں",columnMenuManageColumns:"کالم مینج کریں",columnMenuFilter:"فلٹر",columnMenuHideColumn:"چھپائیں",columnMenuUnsort:"sort ختم کریں",columnMenuSortAsc:"ترتیب صعودی",columnMenuSortDesc:"ترتیب نزولی",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} فعال فلٹرز`:`${e} فلٹرز فعال`,columnHeaderFiltersLabel:"فلٹرز دکھائیں",columnHeaderSortIconLabel:"Sort",footerRowSelected:e=>e!==1?`${e.toLocaleString()} منتخب قطاریں`:`${e.toLocaleString()} منتخب قطار`,footerTotalRows:"کل قطاریں:",footerTotalVisibleRows:(e,t)=>`${t.toLocaleString()} میں سے ${e.toLocaleString()}`,checkboxSelectionHeaderName:"چیک باکس منتخب کریں",checkboxSelectionSelectAllRows:"تمام قطاریں منتخب کریں",checkboxSelectionUnselectAllRows:"تمام قطاریں نامنتخب کریں ",checkboxSelectionSelectRow:"قطار منتخب کریں",checkboxSelectionUnselectRow:"قطار نامنتخب کریں",booleanCellTrueLabel:"ہاں",booleanCellFalseLabel:"نہیں",actionsCellMore:"ذیادہ",pinToLeft:"بائیں جانب pin کریں",pinToRight:"دائیں جانب pin کریں",unpin:"pin ختم کریں",treeDataGroupingHeaderName:"گروپ",treeDataExpand:"شاخیں دیکھیں",treeDataCollapse:"شاخیں چھپائیں",groupingColumnHeaderName:"گروپ",groupColumn:e=>`${e} سے گروپ کریں`,unGroupColumn:e=>`${e} سے گروپ ختم کریں`,detailPanelToggle:"ڈیٹیل پینل کھولیں / بند کریں",expandDetailPanel:"پھیلائیں",collapseDetailPanel:"تنگ کریں",rowReorderingHeaderName:"قطاروں کی ترتیب تبدیل کریں",aggregationMenuItemHeader:"ایگریگیشن",aggregationFunctionLabelSum:"کل",aggregationFunctionLabelAvg:"اوسط",aggregationFunctionLabelMin:"کم از کم",aggregationFunctionLabelMax:"زیادہ سے زیادہ",aggregationFunctionLabelSize:"سائز"},Cw=Pe(hw,wC),ww={noRowsLabel:"Không có dữ liệu",noResultsOverlayLabel:"Không tìm thấy kết quả.",toolbarDensity:"Độ giãn",toolbarDensityLabel:"Độ giãn",toolbarDensityCompact:"Trung bình",toolbarDensityStandard:"Tiêu chuẩn",toolbarDensityComfortable:"Rộng",toolbarColumns:"Cột",toolbarColumnsLabel:"Chọn cột",toolbarFilters:"Bộ lọc",toolbarFiltersLabel:"Hiển thị bộ lọc",toolbarFiltersTooltipHide:"Ẩn",toolbarFiltersTooltipShow:"Hiện",toolbarFiltersTooltipActive:e=>e>1?`${e} bộ lọc hoạt động`:`${e} bộ lọc hoạt động`,toolbarQuickFilterPlaceholder:"Tìm kiếm…",toolbarQuickFilterLabel:"Tìm kiếm",toolbarQuickFilterDeleteIconLabel:"Xóa tìm kiếm",toolbarExport:"Xuất",toolbarExportLabel:"Xuất",toolbarExportCSV:"Xuất CSV",toolbarExportPrint:"In",toolbarExportExcel:"Xuất Excel",columnsPanelTextFieldLabel:"Tìm kiếm",columnsPanelTextFieldPlaceholder:"Tiêu đề cột",columnsPanelDragIconLabel:"Sắp xếp",columnsPanelShowAllButton:"Hiện tất cả",columnsPanelHideAllButton:"Ẩn tất cả",filterPanelAddFilter:"Thêm bộ lọc",filterPanelRemoveAll:"Xóa tất cả",filterPanelDeleteIconLabel:"Xóa",filterPanelLogicOperator:"Toán tử logic",filterPanelOperator:"Toán tử",filterPanelOperatorAnd:"Và",filterPanelOperatorOr:"Hoặc",filterPanelColumns:"Cột",filterPanelInputLabel:"Giá trị",filterPanelInputPlaceholder:"Lọc giá trị",filterOperatorContains:"Chứa",filterOperatorEquals:"Bằng",filterOperatorStartsWith:"Bắt đầu bằng",filterOperatorEndsWith:"Kết thúc bằng",filterOperatorIs:"Là",filterOperatorNot:"Không là",filterOperatorAfter:"Trước",filterOperatorOnOrAfter:"bằng hoặc sau",filterOperatorBefore:"Sau",filterOperatorOnOrBefore:"bằng hoặc trước",filterOperatorIsEmpty:"Rỗng",filterOperatorIsNotEmpty:"Khác rỗng",filterOperatorIsAnyOf:"Bất kỳ","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Chứa",headerFilterOperatorEquals:"Bằng",headerFilterOperatorStartsWith:"Bắt đầu với",headerFilterOperatorEndsWith:"Kết thúc với",headerFilterOperatorIs:"là",headerFilterOperatorNot:"Không là",headerFilterOperatorAfter:"Sau",headerFilterOperatorOnOrAfter:"Đang hoặc sau",headerFilterOperatorBefore:"Trước",headerFilterOperatorOnOrBefore:"Đang hoặc trước",headerFilterOperatorIsEmpty:"Rỗng",headerFilterOperatorIsNotEmpty:"Khác rỗng",headerFilterOperatorIsAnyOf:"Bất kỳ","headerFilterOperator=":"Bằng","headerFilterOperator!=":"Khác","headerFilterOperator>":"Lớn hơn","headerFilterOperator>=":"Lớn hơn hoặc bằng","headerFilterOperator<":"Nhỏ hơn","headerFilterOperator<=":"Nhỏ hơn hoặc bằng",filterValueAny:"bất kỳ giá trị nào",filterValueTrue:"Có",filterValueFalse:"Không",columnMenuLabel:"Danh mục",columnMenuShowColumns:"Danh sách cột",columnMenuManageColumns:"Quản lý cột",columnMenuFilter:"Bộ lọc",columnMenuHideColumn:"Ẩn cột",columnMenuUnsort:"Bỏ sắp xếp",columnMenuSortAsc:"Sắp xếp tăng dần",columnMenuSortDesc:"Sắp xếp giảm dần",columnHeaderFiltersTooltipActive:e=>e>1?`${e} bộ lọc hoạt động`:`${e} bộ lọc hoạt động`,columnHeaderFiltersLabel:"Bộ lọc",columnHeaderSortIconLabel:"Sắp xếp",footerRowSelected:e=>e>1?`${e.toLocaleString()} hàng đã chọn`:`${e.toLocaleString()} hàng đã chọn`,footerTotalRows:"Tổng:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} / ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Tích vào ô trống",checkboxSelectionSelectAllRows:"Chọn tất cả hàng",checkboxSelectionUnselectAllRows:"Bỏ chọn tất cả hàng",checkboxSelectionSelectRow:"Chọn hàng",checkboxSelectionUnselectRow:"Bỏ chọn hàng",booleanCellTrueLabel:"Có",booleanCellFalseLabel:"Không",actionsCellMore:"Thêm",pinToLeft:"Ghim cột bên trái",pinToRight:"Ghim cột bên phải",unpin:"Bỏ ghim",treeDataGroupingHeaderName:"Nhóm",treeDataExpand:"mở rộng",treeDataCollapse:"ẩn đi",groupingColumnHeaderName:"Nhóm",groupColumn:e=>`Nhóm theo ${e}`,unGroupColumn:e=>`Hủy nhóm theo ${e}`,detailPanelToggle:"Ẩn/hiện chi tiết",expandDetailPanel:"Mở rộng",collapseDetailPanel:"Thu nhỏ",rowReorderingHeaderName:"Sắp xếp hàng",aggregationMenuItemHeader:"Tổng hợp",aggregationFunctionLabelSum:"Tổng",aggregationFunctionLabelAvg:"Trung bình",aggregationFunctionLabelMin:"Tối thiểu",aggregationFunctionLabelMax:"Tối đa",aggregationFunctionLabelSize:"Kích cỡ"},Sw=Pe(ww,pC),Ow={noRowsLabel:"没有数据。",noResultsOverlayLabel:"未找到数据。",toolbarDensity:"表格密度",toolbarDensityLabel:"表格密度",toolbarDensityCompact:"紧密",toolbarDensityStandard:"标准",toolbarDensityComfortable:"稀疏",toolbarColumns:"列",toolbarColumnsLabel:"选择列",toolbarFilters:"筛选器",toolbarFiltersLabel:"显示筛选器",toolbarFiltersTooltipHide:"隐藏筛选器",toolbarFiltersTooltipShow:"显示筛选器",toolbarFiltersTooltipActive:e=>`${e} 个筛选器`,toolbarQuickFilterPlaceholder:"搜索…",toolbarQuickFilterLabel:"搜索",toolbarQuickFilterDeleteIconLabel:"清除",toolbarExport:"导出",toolbarExportLabel:"导出",toolbarExportCSV:"导出至CSV",toolbarExportPrint:"打印",toolbarExportExcel:"导出至Excel",columnsPanelTextFieldLabel:"搜索列",columnsPanelTextFieldPlaceholder:"列名",columnsPanelDragIconLabel:"重排序列",columnsPanelShowAllButton:"显示所有",columnsPanelHideAllButton:"隐藏所有",filterPanelAddFilter:"添加筛选器",filterPanelRemoveAll:"清除全部",filterPanelDeleteIconLabel:"删除",filterPanelLogicOperator:"逻辑操作器",filterPanelOperator:"操作器",filterPanelOperatorAnd:"与",filterPanelOperatorOr:"或",filterPanelColumns:"列",filterPanelInputLabel:"值",filterPanelInputPlaceholder:"筛选值",filterOperatorContains:"包含",filterOperatorEquals:"等于",filterOperatorStartsWith:"开始于",filterOperatorEndsWith:"结束于",filterOperatorIs:"是",filterOperatorNot:"不是",filterOperatorAfter:"在后面",filterOperatorOnOrAfter:"正在后面",filterOperatorBefore:"在前面",filterOperatorOnOrBefore:"正在前面",filterOperatorIsEmpty:"为空",filterOperatorIsNotEmpty:"不为空",filterOperatorIsAnyOf:"属于","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"包含",headerFilterOperatorEquals:"等于",headerFilterOperatorStartsWith:"开始于",headerFilterOperatorEndsWith:"结束于",headerFilterOperatorIs:"是",headerFilterOperatorNot:"不是",headerFilterOperatorAfter:"在后面",headerFilterOperatorOnOrAfter:"在当前或后面",headerFilterOperatorBefore:"在前面",headerFilterOperatorOnOrBefore:"在当前或前面",headerFilterOperatorIsEmpty:"为空",headerFilterOperatorIsNotEmpty:"不为空",headerFilterOperatorIsAnyOf:"属于","headerFilterOperator=":"等于","headerFilterOperator!=":"不等于","headerFilterOperator>":"大于","headerFilterOperator>=":"大于或等于","headerFilterOperator<":"小雨","headerFilterOperator<=":"小于或等于",filterValueAny:"任何",filterValueTrue:"真",filterValueFalse:"假",columnMenuLabel:"菜单",columnMenuShowColumns:"显示",columnMenuManageColumns:"管理列",columnMenuFilter:"筛选器",columnMenuHideColumn:"隐藏",columnMenuUnsort:"恢复默认",columnMenuSortAsc:"升序",columnMenuSortDesc:"降序",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} 个筛选器`:`${e} 个筛选器`,columnHeaderFiltersLabel:"显示筛选器",columnHeaderSortIconLabel:"排序",footerRowSelected:e=>`共选中了${e.toLocaleString()}行`,footerTotalRows:"所有行:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} / ${t.toLocaleString()}`,checkboxSelectionHeaderName:"多选框",checkboxSelectionSelectAllRows:"全选行",checkboxSelectionUnselectAllRows:"反选所有行",checkboxSelectionSelectRow:"选择行",checkboxSelectionUnselectRow:"反选行",booleanCellTrueLabel:"真",booleanCellFalseLabel:"假",actionsCellMore:"更多",pinToLeft:"固定到左侧",pinToRight:"固定到右侧",unpin:"取消固定",treeDataGroupingHeaderName:"组",treeDataExpand:"查看子项目",treeDataCollapse:"隐藏子项目",groupingColumnHeaderName:"组",groupColumn:e=>`用${e}分组`,unGroupColumn:e=>`不再用${e}分组`,detailPanelToggle:"详细信息",expandDetailPanel:"显示",collapseDetailPanel:"折叠",rowReorderingHeaderName:"重新排列行",aggregationMenuItemHeader:"集合",aggregationFunctionLabelSum:"总数",aggregationFunctionLabelAvg:"平均",aggregationFunctionLabelMin:"最小",aggregationFunctionLabelMax:"最大",aggregationFunctionLabelSize:"大小"},Pw=Pe(Ow,fC),xw={noRowsLabel:"沒有資料",noResultsOverlayLabel:"沒有結果",toolbarDensity:"表格密度",toolbarDensityLabel:"表格密度",toolbarDensityCompact:"緊湊",toolbarDensityStandard:"標準",toolbarDensityComfortable:"舒適",toolbarColumns:"欄位",toolbarColumnsLabel:"選擇欄位",toolbarFilters:"篩選器",toolbarFiltersLabel:"顯示篩選器",toolbarFiltersTooltipHide:"隱藏篩選器",toolbarFiltersTooltipShow:"顯示篩選器",toolbarFiltersTooltipActive:e=>`${e} 個篩選器`,toolbarQuickFilterPlaceholder:"搜尋…",toolbarQuickFilterLabel:"搜尋",toolbarQuickFilterDeleteIconLabel:"清除",toolbarExport:"匯出",toolbarExportLabel:"匯出",toolbarExportCSV:"匯出 CSV",toolbarExportPrint:"列印",toolbarExportExcel:"匯出 Excel",columnsPanelTextFieldLabel:"欄位搜尋",columnsPanelTextFieldPlaceholder:"欄位名稱",columnsPanelDragIconLabel:"排序欄位",columnsPanelShowAllButton:"顯示所有",columnsPanelHideAllButton:"隱藏所有",filterPanelAddFilter:"增加篩選器",filterPanelRemoveAll:"清除所有",filterPanelDeleteIconLabel:"刪除",filterPanelLogicOperator:"邏輯運算子",filterPanelOperator:"運算子",filterPanelOperatorAnd:"且",filterPanelOperatorOr:"或",filterPanelColumns:"欄位",filterPanelInputLabel:"值",filterPanelInputPlaceholder:"篩選值",filterOperatorContains:"包含",filterOperatorEquals:"等於",filterOperatorStartsWith:"以...開頭",filterOperatorEndsWith:"以...結束",filterOperatorIs:"為",filterOperatorNot:"不為",filterOperatorAfter:"...之後",filterOperatorOnOrAfter:"...(含)之後",filterOperatorBefore:"...之前",filterOperatorOnOrBefore:"...(含)之前",filterOperatorIsEmpty:"為空",filterOperatorIsNotEmpty:"不為空",filterOperatorIsAnyOf:"是其中之一","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"包含",headerFilterOperatorEquals:"等於",headerFilterOperatorStartsWith:"以...開頭",headerFilterOperatorEndsWith:"以...結束",headerFilterOperatorIs:"為",headerFilterOperatorNot:"不為",headerFilterOperatorAfter:"...之後",headerFilterOperatorOnOrAfter:"...(含)之後",headerFilterOperatorBefore:"...之前",headerFilterOperatorOnOrBefore:"...(含)之前",headerFilterOperatorIsEmpty:"為空",headerFilterOperatorIsNotEmpty:"不為空",headerFilterOperatorIsAnyOf:"是其中之一","headerFilterOperator=":"等於","headerFilterOperator!=":"不等於","headerFilterOperator>":"大於","headerFilterOperator>=":"大於或等於","headerFilterOperator<":"小於","headerFilterOperator<=":"小於或等於",filterValueAny:"任何值",filterValueTrue:"真",filterValueFalse:"假",columnMenuLabel:"選單",columnMenuShowColumns:"顯示欄位",columnMenuManageColumns:"管理欄位",columnMenuFilter:"篩選器",columnMenuHideColumn:"隱藏",columnMenuUnsort:"預設排序",columnMenuSortAsc:"升序",columnMenuSortDesc:"降序",columnHeaderFiltersTooltipActive:e=>`${e} 個篩選器`,columnHeaderFiltersLabel:"顯示篩選器",columnHeaderSortIconLabel:"排序",footerRowSelected:e=>`已選取 ${e.toLocaleString()} 個`,footerTotalRows:"總數:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} / ${t.toLocaleString()}`,checkboxSelectionHeaderName:"核取方塊",checkboxSelectionSelectAllRows:"全選",checkboxSelectionUnselectAllRows:"取消全選",checkboxSelectionSelectRow:"選取",checkboxSelectionUnselectRow:"取消選取",booleanCellTrueLabel:"真",booleanCellFalseLabel:"假",actionsCellMore:"查看更多",pinToLeft:"釘選在左側",pinToRight:"釘選在右側",unpin:"取消釘選",treeDataGroupingHeaderName:"群組",treeDataExpand:"查看子項目",treeDataCollapse:"隱藏子項目",groupingColumnHeaderName:"群組",groupColumn:e=>`以 ${e} 分組`,unGroupColumn:e=>`取消以 ${e} 分組`,detailPanelToggle:"切換顯示詳細資訊",expandDetailPanel:"展開",collapseDetailPanel:"摺疊",rowReorderingHeaderName:"排序",aggregationMenuItemHeader:"集合",aggregationFunctionLabelSum:"總數",aggregationFunctionLabelAvg:"平均數",aggregationFunctionLabelMin:"最小",aggregationFunctionLabelMax:"最大",aggregationFunctionLabelSize:"尺寸"},vw=Pe(xw,mC),Fw={noRowsLabel:"Nema redova",noResultsOverlayLabel:"Nema rezultata.",toolbarDensity:"Gustoća",toolbarDensityLabel:"Gustoća",toolbarDensityCompact:"Kompaktan",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Udobno",toolbarColumns:"Stupci",toolbarColumnsLabel:"Odaberite stupce",toolbarFilters:"Filteri",toolbarFiltersLabel:"Prikaži filtre",toolbarFiltersTooltipHide:"Sakrij filtre",toolbarFiltersTooltipShow:"Prikaži filtre",toolbarFiltersTooltipActive:e=>e!==1?`${e} aktivnih filtara`:`${e} aktivni filter`,toolbarQuickFilterPlaceholder:"Traži…",toolbarQuickFilterLabel:"traži",toolbarQuickFilterDeleteIconLabel:"Čisto",toolbarExport:"Izvoz",toolbarExportLabel:"Izvoz",toolbarExportCSV:"Preuzmi kao CSV",toolbarExportPrint:"Ispis",toolbarExportExcel:"Preuzmite kao Excel",columnsPanelTextFieldLabel:"Pronađi stupac",columnsPanelTextFieldPlaceholder:"Naslov stupca",columnsPanelDragIconLabel:"Promijeni redoslijed stupca",columnsPanelShowAllButton:"Pokaži sve",columnsPanelHideAllButton:"Sakrij sve",filterPanelAddFilter:"Dodajte filter",filterPanelRemoveAll:"Ukloniti sve",filterPanelDeleteIconLabel:"Izbrisati",filterPanelLogicOperator:"Logički operator",filterPanelOperator:"Operater",filterPanelOperatorAnd:"I",filterPanelOperatorOr:"Ili",filterPanelColumns:"Stupci",filterPanelInputLabel:"Vrijednost",filterPanelInputPlaceholder:"Vrijednost filtra",filterOperatorContains:"sadrži",filterOperatorEquals:"jednaki",filterOperatorStartsWith:"počinje sa",filterOperatorEndsWith:"završava sa",filterOperatorIs:"je",filterOperatorNot:"nije",filterOperatorAfter:"je poslije",filterOperatorOnOrAfter:"je na ili poslije",filterOperatorBefore:"je prije",filterOperatorOnOrBefore:"je na ili prije",filterOperatorIsEmpty:"prazno je",filterOperatorIsNotEmpty:"nije prazna",filterOperatorIsAnyOf:"je bilo koji od","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Sadrži",headerFilterOperatorEquals:"Jednako",headerFilterOperatorStartsWith:"Počinje sa",headerFilterOperatorEndsWith:"Završava s",headerFilterOperatorIs:"Je",headerFilterOperatorNot:"Nije",headerFilterOperatorAfter:"Je poslije",headerFilterOperatorOnOrAfter:"Je uključeno ili poslije",headerFilterOperatorBefore:"Je li prije",headerFilterOperatorOnOrBefore:"Uključeno je ili prije",headerFilterOperatorIsEmpty:"Prazno je",headerFilterOperatorIsNotEmpty:"Nije prazna",headerFilterOperatorIsAnyOf:"Je li bilo koji od","headerFilterOperator=":"Jednako","headerFilterOperator!=":"Nije jednako","headerFilterOperator>":"Veći od","headerFilterOperator>=":"Veće ili jednako","headerFilterOperator<":"Manje od","headerFilterOperator<=":"Manje od ili jednako",filterValueAny:"bilo koji",filterValueTrue:"pravi",filterValueFalse:"lažno",columnMenuLabel:"Jelovnik ",columnMenuShowColumns:"Prikaži stupce",columnMenuManageColumns:"Upravljanje stupcima",columnMenuFilter:"filtar",columnMenuHideColumn:"Sakrij stupac",columnMenuUnsort:"Poništi sortiranje",columnMenuSortAsc:"Poredaj uzlazno",columnMenuSortDesc:"Poredaj silaznim redom",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} aktivnih filtara`:`${e} aktivni filter`,columnHeaderFiltersLabel:"Prikaži filtre",columnHeaderSortIconLabel:"Vrsta",footerRowSelected:e=>e!==1?`Odabrano je ${e.toLocaleString()} redaka`:`${e.toLocaleString()} redak odabran`,footerTotalRows:"Ukupno redaka:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} od ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Odabir potvrdnog okvira",checkboxSelectionSelectAllRows:"Odaberite sve retke",checkboxSelectionUnselectAllRows:"Poništi odabir svih redaka",checkboxSelectionSelectRow:"Odaberite red",checkboxSelectionUnselectRow:"Poništi odabir retka",booleanCellTrueLabel:"Da",booleanCellFalseLabel:"Ne",actionsCellMore:"više",pinToLeft:"Prikvači lijevo",pinToRight:"Prikvači desno",unpin:"Otkvači",treeDataGroupingHeaderName:"Group",treeDataExpand:"vidjeti djecu",treeDataCollapse:"sakriti djecu",groupingColumnHeaderName:"Skupina",groupColumn:e=>`Grupiraj prema ${e}`,unGroupColumn:e=>`Zaustavi grupiranje prema ${e}`,detailPanelToggle:"Prebacivanje ploče s detaljima",expandDetailPanel:"Proširiti",collapseDetailPanel:"Kolaps",rowReorderingHeaderName:"Promjena redoslijeda",aggregationMenuItemHeader:"Agregacija",aggregationFunctionLabelSum:"iznos",aggregationFunctionLabelAvg:"prosj",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"max",aggregationFunctionLabelSize:"veličina"},yw=Pe(Fw,Zh),Iw={noRowsLabel:"Nenhuma linha",noResultsOverlayLabel:"Nenhum resultado encontrado.",toolbarDensity:"Densidade",toolbarDensityLabel:"Densidade",toolbarDensityCompact:"Compactar",toolbarDensityStandard:"Padrão",toolbarDensityComfortable:"Confortável",toolbarColumns:"Colunas",toolbarColumnsLabel:"Selecione colunas",toolbarFilters:"Filtros",toolbarFiltersLabel:"Mostrar filtros",toolbarFiltersTooltipHide:"Ocultar filtros",toolbarFiltersTooltipShow:"Mostrar filtros",toolbarFiltersTooltipActive:e=>e!==1?`${e} filtros ativos`:`${e} filtro ativo`,toolbarQuickFilterPlaceholder:"Procurar…",toolbarQuickFilterLabel:"Procurar",toolbarQuickFilterDeleteIconLabel:"Claro",toolbarExport:"Exportar",toolbarExportLabel:"Exportar",toolbarExportCSV:"Baixar como CSV",toolbarExportPrint:"Imprimir",toolbarExportExcel:"Baixe como Excel",columnsPanelTextFieldLabel:"Encontrar coluna",columnsPanelTextFieldPlaceholder:"Título da coluna",columnsPanelDragIconLabel:"Reordenar coluna",columnsPanelShowAllButton:"Mostre tudo",columnsPanelHideAllButton:"Esconda tudo",filterPanelAddFilter:"Adicionar filtro",filterPanelRemoveAll:"Deletar tudo",filterPanelDeleteIconLabel:"Excluir",filterPanelLogicOperator:"Operador lógico",filterPanelOperator:"Operador",filterPanelOperatorAnd:"E",filterPanelOperatorOr:"Ou",filterPanelColumns:"Colunas",filterPanelInputLabel:"Valor",filterPanelInputPlaceholder:"Valor do filtro",filterOperatorContains:"contém",filterOperatorEquals:"é igual a",filterOperatorStartsWith:"começa com",filterOperatorEndsWith:"termina com",filterOperatorIs:"é",filterOperatorNot:"não é",filterOperatorAfter:"está depois",filterOperatorOnOrAfter:"está ligado ou depois",filterOperatorBefore:"é antes",filterOperatorOnOrBefore:"está ligado ou antes",filterOperatorIsEmpty:"está vazia",filterOperatorIsNotEmpty:"não está vazio",filterOperatorIsAnyOf:"é qualquer um","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Contém",headerFilterOperatorEquals:"É igual a",headerFilterOperatorStartsWith:"Começa com",headerFilterOperatorEndsWith:"Termina com",headerFilterOperatorIs:"É",headerFilterOperatorNot:"Não é",headerFilterOperatorAfter:"Está depois",headerFilterOperatorOnOrAfter:"Está ligado ou depois",headerFilterOperatorBefore:"É antes",headerFilterOperatorOnOrBefore:"Está ligado ou antes",headerFilterOperatorIsEmpty:"Está vazia",headerFilterOperatorIsNotEmpty:"Não está vazio",headerFilterOperatorIsAnyOf:"Algum","headerFilterOperator=":"É igual a","headerFilterOperator!=":"Não é igual","headerFilterOperator>":"Maior que","headerFilterOperator>=":"Melhor que ou igual a","headerFilterOperator<":"Menor que","headerFilterOperator<=":"Menos que ou igual a",filterValueAny:"qualquer",filterValueTrue:"verdadeiro",filterValueFalse:"falso",columnMenuLabel:"Cardápio",columnMenuShowColumns:"Mostrar colunas",columnMenuManageColumns:"Gerenciar colunas",columnMenuFilter:"Filtro",columnMenuHideColumn:"Ocultar coluna",columnMenuUnsort:"Desclassificar",columnMenuSortAsc:"Classificar por ordem crescente",columnMenuSortDesc:"Classificar por ordem decrescente",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} filtros ativos`:`${e} filtro ativo`,columnHeaderFiltersLabel:"Mostrar filtros",columnHeaderSortIconLabel:"Organizar",footerRowSelected:e=>e!==1?`${e.toLocaleString()} linhas selecionadas`:`${e.toLocaleString()} linha selecionada`,footerTotalRows:"Total de linhas:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} de ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Seleção de caixa de seleção",checkboxSelectionSelectAllRows:"Selecione todas as linhas",checkboxSelectionUnselectAllRows:"Desmarque todas as linhas",checkboxSelectionSelectRow:"Selecione a linha",checkboxSelectionUnselectRow:"Desmarcar linha",booleanCellTrueLabel:"sim",booleanCellFalseLabel:"não",actionsCellMore:"mais",pinToLeft:"Fixar à esquerda",pinToRight:"Fixar à direita",unpin:"Liberar",treeDataGroupingHeaderName:"Group",treeDataExpand:"veja crianças",treeDataCollapse:"esconder crianças",groupingColumnHeaderName:"Grupo",groupColumn:e=>`Agrupar por ${e}`,unGroupColumn:e=>`Pare de agrupar por ${e}`,detailPanelToggle:"Alternar painel de detalhes",expandDetailPanel:"Expandir",collapseDetailPanel:"Colapso",rowReorderingHeaderName:"Reordenação de linhas",aggregationMenuItemHeader:"Agregação",aggregationFunctionLabelSum:"soma",aggregationFunctionLabelAvg:"média",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"máx.",aggregationFunctionLabelSize:"tamanho"},Mw=Pe(Iw,nC),kw={noRowsLabel:"沒有行",noResultsOverlayLabel:"未找到結果。",toolbarDensity:"密度",toolbarDensityLabel:"密度",toolbarDensityCompact:"袖珍的",toolbarDensityStandard:"標準",toolbarDensityComfortable:"舒服的",toolbarColumns:"列",toolbarColumnsLabel:"選擇列",toolbarFilters:"過濾器",toolbarFiltersLabel:"顯示過濾器",toolbarFiltersTooltipHide:"隱藏過濾器",toolbarFiltersTooltipShow:"顯示過濾器",toolbarFiltersTooltipActive:e=>e!==1?`${e} 個有效過濾器`:`${e} 個活動過濾器`,toolbarQuickFilterPlaceholder:"搜尋…",toolbarQuickFilterLabel:"搜尋",toolbarQuickFilterDeleteIconLabel:"清除",toolbarExport:"出口",toolbarExportLabel:"出口",toolbarExportCSV:"下載為 CSV",toolbarExportPrint:"列印",toolbarExportExcel:"下載為 Excel",columnsPanelTextFieldLabel:"查找欄目",columnsPanelTextFieldPlaceholder:"欄目標題",columnsPanelDragIconLabel:"重新排序列",columnsPanelShowAllButton:"顯示所有",columnsPanelHideAllButton:"全部藏起來",filterPanelAddFilter:"新增過濾器",filterPanelRemoveAll:"移除所有",filterPanelDeleteIconLabel:"刪除",filterPanelLogicOperator:"邏輯運算符",filterPanelOperator:"操作員",filterPanelOperatorAnd:"和",filterPanelOperatorOr:"或者",filterPanelColumns:"列",filterPanelInputLabel:"價值",filterPanelInputPlaceholder:"過濾值",filterOperatorContains:"包含",filterOperatorEquals:"等於",filterOperatorStartsWith:"以。。開始",filterOperatorEndsWith:"以。。結束",filterOperatorIs:"是",filterOperatorNot:"不是",filterOperatorAfter:"是在之後",filterOperatorOnOrAfter:"是在或之後",filterOperatorBefore:"是在之前",filterOperatorOnOrBefore:"是在或之前",filterOperatorIsEmpty:"是空的",filterOperatorIsNotEmpty:"不為空",filterOperatorIsAnyOf:"是以下任一個","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"包含",headerFilterOperatorEquals:"等於",headerFilterOperatorStartsWith:"以。。開始",headerFilterOperatorEndsWith:"以。。結束",headerFilterOperatorIs:"是",headerFilterOperatorNot:"不是",headerFilterOperatorAfter:"是在之後",headerFilterOperatorOnOrAfter:"是在或之後",headerFilterOperatorBefore:"是之前",headerFilterOperatorOnOrBefore:"是在或之前",headerFilterOperatorIsEmpty:"是空的",headerFilterOperatorIsNotEmpty:"不為空",headerFilterOperatorIsAnyOf:"是以下任一個","headerFilterOperator=":"等於","headerFilterOperator!=":"不等於","headerFilterOperator>":"比...更棒","headerFilterOperator>=":"大於或等於","headerFilterOperator<":"少於","headerFilterOperator<=":"小於或等於",filterValueAny:"任何",filterValueTrue:"真的",filterValueFalse:"錯誤的",columnMenuLabel:"選單",columnMenuShowColumns:"顯示欄目",columnMenuManageColumns:"管理欄目",columnMenuFilter:"篩選",columnMenuHideColumn:"隱藏列",columnMenuUnsort:"取消排序",columnMenuSortAsc:"按升序排序",columnMenuSortDesc:"按降序排序",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} 個有效過濾器`:`${e} 個活動過濾器`,columnHeaderFiltersLabel:"顯示過濾器",columnHeaderSortIconLabel:"種類",footerRowSelected:e=>e!==1?`已選擇 ${e.toLocaleString()} 行`:`已選擇 ${e.toLocaleString()} 行`,footerTotalRows:"總行數:",footerTotalVisibleRows:(e,t)=>`${t.toLocaleString()} 的 ${e.toLocaleString()}`,checkboxSelectionHeaderName:"複選框選擇",checkboxSelectionSelectAllRows:"選擇所有行",checkboxSelectionUnselectAllRows:"取消選擇所有行",checkboxSelectionSelectRow:"選擇行",checkboxSelectionUnselectRow:"取消選擇行",booleanCellTrueLabel:"是的",booleanCellFalseLabel:"不",actionsCellMore:"更多的",pinToLeft:"固定到左側",pinToRight:"固定到右側",unpin:"取消固定",treeDataGroupingHeaderName:"Group",treeDataExpand:"看看孩子們",treeDataCollapse:"隱藏孩子",groupingColumnHeaderName:"團體",groupColumn:e=>`按 ${e} 分組`,unGroupColumn:e=>`停止以 ${e} 分組`,detailPanelToggle:"詳細資訊面板切換",expandDetailPanel:"擴張",collapseDetailPanel:"坍塌",rowReorderingHeaderName:"行重新排序",aggregationMenuItemHeader:"聚合",aggregationFunctionLabelSum:"和",aggregationFunctionLabelAvg:"平均",aggregationFunctionLabelMin:"分分鐘",aggregationFunctionLabelMax:"最大限度",aggregationFunctionLabelSize:"尺寸"},Ew=Pe(kw,gC);/** - * @mui/x-data-grid v6.19.4 +`}${u}`.trim()}function Xn(e){const t=document.createElement("span");t.style.whiteSpace="pre",t.style.userSelect="all",t.style.opacity="0px",t.textContent=e,document.body.appendChild(t);const r=document.createRange();r.selectNode(t);const o=window.getSelection();o.removeAllRanges(),o.addRange(r);try{document.execCommand("copy")}finally{document.body.removeChild(t)}}function Mm(e){navigator.clipboard?navigator.clipboard.writeText(e).catch(()=>{Xn(e)}):Xn(e)}function km(e){var t;return!!((t=window.getSelection())!=null&&t.toString()||e&&(e.selectionEnd||0)-(e.selectionStart||0)>0)}const Em=(e,t)=>{const r=t.unstable_ignoreValueFormatterDuringExport,o=(typeof r=="object"?r==null?void 0:r.clipboardExport:r)||!1,l=t.clipboardCopyCellDelimiter,n=a.useCallback(i=>{if(!((i.ctrlKey||i.metaKey)&&i.key==="c")||km(i.target))return;let s="";if(e.current.getSelectedRows().size>0)s=e.current.getDataAsCsv({includeHeaders:!1,delimiter:l});else{const d=Ze(e);if(d){const c=e.current.getCellParams(d.id,d.field);s=cu(c,{delimiterCharacter:l,ignoreValueFormatter:o})}}s=e.current.unstable_applyPipeProcessors("clipboardCopy",s),s&&(Mm(s),e.current.publishEvent("clipboardCopy",s))},[e,o,l]);yi(e,e.current.rootElementRef,"keydown",n),Ee(e,"clipboardCopy",t.onClipboardCopy)},Lm=e=>m({},e,{columnMenu:{open:!1}}),Tm=e=>{const t=je(e,"useGridColumnMenu"),r=a.useCallback(i=>{e.current.setState(u=>u.columnMenu.open&&u.columnMenu.field===i?u:(t.debug("Opening Column Menu"),m({},u,{columnMenu:{open:!0,field:i}})))&&(e.current.hidePreferences(),e.current.forceUpdate())},[e,t]),o=a.useCallback(()=>{const i=io(e.current.state);if(i.field){const u=Vt(e),d=at(e),c=Pt(e);let p=i.field;if(u[p]||(p=c[0]),d[p]===!1){const f=c.filter(g=>g===p?!0:d[g]!==!1),b=f.indexOf(p);p=f[b+1]||f[b-1]}e.current.setColumnHeaderFocus(p)}e.current.setState(u=>!u.columnMenu.open&&u.columnMenu.field===void 0?u:(t.debug("Hiding Column Menu"),m({},u,{columnMenu:m({},u.columnMenu,{open:!1,field:void 0})})))&&e.current.forceUpdate()},[e,t]),l=a.useCallback(i=>{t.debug("Toggle Column Menu");const s=io(e.current.state);!s.open||s.field!==i?r(i):o()},[e,t,r,o]);me(e,{showColumnMenu:r,hideColumnMenu:o,toggleColumnMenu:l},"public"),re(e,"columnResizeStart",o),re(e,"virtualScrollerWheel",e.current.hideColumnMenu),re(e,"virtualScrollerTouchMove",e.current.hideColumnMenu)},du=["maxWidth","minWidth","width","flex"];function Dm({initialFreeSpace:e,totalFlexUnits:t,flexColumns:r}){const o=new Set(r.map(i=>i.field)),l={all:{},frozenFields:[],freeze:i=>{const s=l.all[i];s&&s.frozen!==!0&&(l.all[i].frozen=!0,l.frozenFields.push(i))}};function n(){if(l.frozenFields.length===o.size)return;const i={min:{},max:{}};let s=e,u=t,d=0;l.frozenFields.forEach(c=>{s-=l.all[c].computedWidth,u-=l.all[c].flex});for(let c=0;cp.maxWidth&&(d+=p.maxWidth-b,b=p.maxWidth,i.max[p.field]=!0),l.all[p.field]={frozen:!1,computedWidth:b,flex:p.flex}}d<0?Object.keys(i.max).forEach(c=>{l.freeze(c)}):d>0?Object.keys(i.min).forEach(c=>{l.freeze(c)}):r.forEach(({field:c})=>{l.freeze(c)}),n()}return n(),l.all}const ul=(e,t)=>{const r={};let o=0,l=0;const n=[];e.orderedFields.forEach(s=>{const u=m({},e.lookup[s]);if(e.columnVisibilityModel[s]===!1)u.computedWidth=0;else{let d;u.flex&&u.flex>0?(o+=u.flex,d=0,n.push(u)):d=cr(u.width||it.width,u.minWidth||it.minWidth,u.maxWidth||it.maxWidth),l+=d,u.computedWidth=d}r[s]=u});const i=Math.max(t-l,0);if(o>0&&t>0){const s=Dm({initialFreeSpace:i,totalFlexUnits:o,flexColumns:n});Object.keys(s).forEach(u=>{r[u].computedWidth=s[u].computedWidth})}return m({},e,{lookup:r})},$m=(e,t)=>{if(!t)return e;const{orderedFields:r=[],dimensions:o={}}=t,l=Object.keys(o);if(l.length===0&&r.length===0)return e;const n={},i=[];for(let c=0;c!n[c])],u=m({},e.lookup);for(let c=0;c{f[b]=g===-1?1/0:g}),u[p]=f}return m({},e,{orderedFields:s,lookup:u})};function ea(e,t){let r=e[nn];return t&&e[t]&&(r=e[t]),r}const rr=({apiRef:e,columnsToUpsert:t,initialState:r,columnTypes:o,columnVisibilityModel:l=at(e),keepOnlyColumnsToUpsert:n=!1})=>{var i,s,u;const d=!e.current.state.columns;let c;if(d)c={orderedFields:[],lookup:{},columnVisibilityModel:l};else{const g=Bt(e.current.state);c={orderedFields:n?[]:[...g.orderedFields],lookup:m({},g.lookup),columnVisibilityModel:l}}let p={};n&&!d&&(p=Object.keys(c.lookup).reduce((g,h)=>m({},g,{[h]:!1}),{})),t.forEach(g=>{const{field:h}=g;p[h]=!0;let P=c.lookup[h];P==null?(P=m({},ea(o,g.type),{field:h,hasBeenResized:!1}),c.orderedFields.push(h)):n&&c.orderedFields.push(h),P&&P.type!==g.type&&(P=m({},ea(o,g.type),{field:h}));let w=P.hasBeenResized;du.forEach(C=>{g[C]!==void 0&&(w=!0,g[C]===-1&&(g[C]=1/0))}),c.lookup[h]=m({},P,g,{hasBeenResized:w})}),n&&!d&&Object.keys(c.lookup).forEach(g=>{p[g]||delete c.lookup[g]});const f=e.current.unstable_applyPipeProcessors("hydrateColumns",c),b=$m(f,r);return ul(b,(i=(s=(u=e.current).getRootDimensions)==null||(s=s.call(u))==null?void 0:s.viewportInnerSize.width)!=null?i:0)},ta=e=>t=>m({},t,{columns:e});function cl({firstColumnToRender:e,apiRef:t,firstRowToRender:r,lastRowToRender:o,visibleRows:l}){let n=e;for(let i=r;i{var o,l,n,i;const s=rr({apiRef:r,columnTypes:pu,columnsToUpsert:t.columns,initialState:(o=t.initialState)==null?void 0:o.columns,columnVisibilityModel:(l=(n=t.columnVisibilityModel)!=null?n:(i=t.initialState)==null||(i=i.columns)==null?void 0:i.columnVisibilityModel)!=null?l:{},keepOnlyColumnsToUpsert:!0});return m({},e,{columns:s})};function Hm(e,t){var r,o;const l=je(e,"useGridColumns"),n=pu,i=a.useRef(t.columns),s=a.useRef(n);e.current.registerControlState({stateId:"visibleColumns",propModel:t.columnVisibilityModel,propOnChange:t.onColumnVisibilityModelChange,stateSelector:at,changeEvent:"columnVisibilityModelChange"});const u=a.useCallback(S=>{l.debug("Updating columns state."),e.current.setState(ta(S)),e.current.forceUpdate(),e.current.publishEvent("columnsChange",S.orderedFields)},[l,e]),d=a.useCallback(S=>Vt(e)[S],[e]),c=a.useCallback(()=>ft(e),[e]),p=a.useCallback(()=>He(e),[e]),f=a.useCallback((S,O=!0)=>(O?He(e):ft(e)).findIndex(A=>A.field===S),[e]),b=a.useCallback(S=>{const O=f(S);return qt(e)[O]},[e,f]),g=a.useCallback(S=>{at(e)!==S&&(e.current.setState(M=>m({},M,{columns:rr({apiRef:e,columnTypes:n,columnsToUpsert:[],initialState:void 0,columnVisibilityModel:S,keepOnlyColumnsToUpsert:!1})})),e.current.forceUpdate())},[e,n]),h=a.useCallback(S=>{const O=rr({apiRef:e,columnTypes:n,columnsToUpsert:S,initialState:void 0,keepOnlyColumnsToUpsert:!1});u(O)},[e,u,n]),P=a.useCallback((S,O)=>{var M;const A=at(e),k=(M=A[S])!=null?M:!0;if(O!==k){const D=m({},A,{[S]:O});e.current.setColumnVisibilityModel(D)}},[e]),w=a.useCallback(S=>Pt(e).findIndex(M=>M===S),[e]),C=a.useCallback((S,O)=>{const M=Pt(e),A=w(S);if(A===O)return;l.debug(`Moving column ${S} to index ${O}`);const k=[...M],D=k.splice(A,1)[0];k.splice(O,0,D),u(m({},Bt(e.current.state),{orderedFields:k}));const N={column:e.current.getColumn(S),targetIndex:e.current.getColumnIndexRelativeToVisibleColumns(S),oldIndex:A};e.current.publishEvent("columnIndexChange",N)},[e,l,u,w]),E=a.useCallback((S,O)=>{var M,A;l.debug(`Updating column ${S} width to ${O}`);const k=Bt(e.current.state),D=k.lookup[S],N=m({},D,{width:O,hasBeenResized:!0});u(ul(m({},k,{lookup:m({},k.lookup,{[S]:N})}),(M=(A=e.current.getRootDimensions())==null?void 0:A.viewportInnerSize.width)!=null?M:0)),e.current.publishEvent("columnWidthChange",{element:e.current.getColumnHeaderElement(S),colDef:N,width:O})},[e,l,u]),T={getColumn:d,getAllColumns:c,getColumnIndex:f,getColumnPosition:b,getVisibleColumns:p,getColumnIndexRelativeToVisibleColumns:w,updateColumns:h,setColumnVisibilityModel:g,setColumnVisibility:P,setColumnWidth:E},_={setColumnIndex:C};me(e,T,"public"),me(e,_,t.signature===gt.DataGrid?"private":"public");const F=a.useCallback((S,O)=>{var M,A;const k={},D=at(e);(!O.exportOnlyDirtyModels||t.columnVisibilityModel!=null||Object.keys((M=(A=t.initialState)==null||(A=A.columns)==null?void 0:A.columnVisibilityModel)!=null?M:{}).length>0||Object.keys(D).length>0)&&(k.columnVisibilityModel=D),k.orderedFields=Pt(e);const j=ft(e),z={};return j.forEach(B=>{if(B.hasBeenResized){const Z={};du.forEach(Q=>{let ee=B[Q];ee===1/0&&(ee=-1),Z[Q]=ee}),z[B.field]=Z}}),Object.keys(z).length>0&&(k.dimensions=z),m({},S,{columns:k})},[e,t.columnVisibilityModel,(r=t.initialState)==null?void 0:r.columns]),L=a.useCallback((S,O)=>{var M;const A=(M=O.stateToRestore.columns)==null?void 0:M.columnVisibilityModel,k=O.stateToRestore.columns;if(A==null&&k==null)return S;const D=rr({apiRef:e,columnTypes:n,columnsToUpsert:[],initialState:k,columnVisibilityModel:A,keepOnlyColumnsToUpsert:!1});return e.current.setState(ta(D)),k!=null&&e.current.publishEvent("columnsChange",D.orderedFields),S},[e,n]),I=a.useCallback((S,O)=>{if(O===st.columns){var M;const A=t.slots.columnsPanel;return x.jsx(A,m({},(M=t.slotProps)==null?void 0:M.columnsPanel))}return S},[t.slots.columnsPanel,(o=t.slotProps)==null?void 0:o.columnsPanel]),H=a.useCallback(S=>t.disableColumnSelector?S:[...S,"columnMenuColumnsItem"],[t.disableColumnSelector]);Ae(e,"columnMenu",H),Ae(e,"exportState",F),Ae(e,"restoreState",L),Ae(e,"preferencePanel",I);const $=a.useRef(null);re(e,"viewportInnerSizeChange",S=>{$.current!==S.width&&($.current=S.width,u(ul(Bt(e.current.state),S.width)))});const R=a.useCallback(()=>{l.info("Columns pipe processing have changed, regenerating the columns");const S=rr({apiRef:e,columnTypes:n,columnsToUpsert:[],initialState:void 0,keepOnlyColumnsToUpsert:!1});u(S)},[e,l,u,n]);on(e,"hydrateColumns",R);const y=a.useRef(!0);a.useEffect(()=>{if(y.current){y.current=!1;return}if(l.info(`GridColumns have changed, new length ${t.columns.length}`),i.current===t.columns&&s.current===n)return;const S=rr({apiRef:e,columnTypes:n,initialState:void 0,columnsToUpsert:t.columns,keepOnlyColumnsToUpsert:!0});i.current=t.columns,s.current=n,u(S)},[l,e,u,t.columns,n]),a.useEffect(()=>{t.columnVisibilityModel!==void 0&&e.current.setColumnVisibilityModel(t.columnVisibilityModel)},[e,l,t.columnVisibilityModel])}const _m=.7,Vm=1.3,fu={compact:_m,comfortable:Vm,standard:1},Nm=(e,t)=>m({},e,{density:{value:t.density,factor:fu[t.density]}}),Gm=(e,t)=>{const r=je(e,"useDensity"),o=a.useCallback(n=>{r.debug(`Set grid density to ${n}`),e.current.setState(i=>{const s=Fo(i),u={value:n,factor:fu[n]};return It(s,u)?i:m({},i,{density:u})}),e.current.forceUpdate()},[r,e]);a.useEffect(()=>{e.current.setDensity(t.density)},[e,t.density]),me(e,{setDensity:o},"public")};function zm(e,t="csv",r=document.title||"untitled"){const o=`${r}.${t}`;if("download"in HTMLAnchorElement.prototype){const l=URL.createObjectURL(e),n=document.createElement("a");n.href=l,n.download=o,n.click(),setTimeout(()=>{URL.revokeObjectURL(l)});return}throw new Error("MUI: exportAs not supported")}const gu=({apiRef:e,options:t})=>{const r=ft(e);return t.fields?t.fields.reduce((l,n)=>{const i=r.find(s=>s.field===n);return i&&l.push(i),l},[]):(t.allColumns?r:He(e)).filter(l=>!l.disableExport)},jm=({apiRef:e})=>{var t,r;const o=_a(e),l=nt(e),n=e.current.getSelectedRows(),i=o.filter(c=>l[c].type!=="footer"),s=gr(e),u=(s==null||(t=s.top)==null?void 0:t.map(c=>c.id))||[],d=(s==null||(r=s.bottom)==null?void 0:r.map(c=>c.id))||[];return i.unshift(...u),i.push(...d),n.size>0?i.filter(c=>n.has(c)):i},Bm=(e,t)=>{const r=je(e,"useGridCsvExport"),o=t.unstable_ignoreValueFormatterDuringExport,l=(typeof o=="object"?o==null?void 0:o.csvExport:o)||!1,n=a.useCallback((d={})=>{var c,p,f;r.debug("Get data as CSV");const b=gu({apiRef:e,options:d}),h=((c=d.getRowsToExport)!=null?c:jm)({apiRef:e});return Im({columns:b,rowIds:h,delimiterCharacter:d.delimiter||",",includeHeaders:(p=d.includeHeaders)!=null?p:!0,includeColumnGroupsHeaders:(f=d.includeColumnGroupsHeaders)!=null?f:!0,ignoreValueFormatter:l,apiRef:e})},[r,e,l]),i=a.useCallback(d=>{r.debug("Export data as CSV");const c=n(d),p=new Blob([d!=null&&d.utf8WithBom?new Uint8Array([239,187,191]):"",c],{type:"text/csv"});zm(p,"csv",d==null?void 0:d.fileName)},[r,n]);me(e,{getDataAsCsv:n,exportDataAsCsv:i},"public");const u=a.useCallback((d,c)=>{var p;return(p=c.csvOptions)!=null&&p.disableToolbarButton?d:[...d,{component:x.jsx(Ds,{options:c.csvOptions}),componentName:"csvExport"}]},[]);Ae(e,"exportMenu",u)},Um=(e,t)=>{var r,o;const l=m({},Mi(t.autoPageSize),(r=t.paginationModel)!=null?r:(o=t.initialState)==null||(o=o.pagination)==null?void 0:o.paginationModel);return ki(l.pageSize,t.signature),m({},e,{pagination:{paginationModel:l}})},no=(e,t,r)=>o=>{var l;let n=o.paginationModel;const i=(l=r==null?void 0:r.pageSize)!=null?l:n.pageSize,s=Ii(e,i);r&&((r==null?void 0:r.page)!==n.page||(r==null?void 0:r.pageSize)!==n.pageSize)&&(n=r);const u=gf(n.page,s);return u!==n.page&&(n=m({},n,{page:u})),ki(n.pageSize,t),{paginationModel:n}},qm=(e,t)=>{var r;const o=je(e,"useGridPagination"),l=K(e,$r),n=K(e,Qt),i=Math.floor(t.rowHeight*n);e.current.registerControlState({stateId:"pagination",propModel:t.paginationModel,propOnChange:t.onPaginationModelChange,stateSelector:ot,changeEvent:"paginationModelChange"});const s=a.useCallback(h=>{const P=ot(e);h!==P.page&&(o.debug(`Setting page to ${h}`),e.current.setPaginationModel({page:h,pageSize:P.pageSize}))},[e,o]),u=a.useCallback(h=>{const P=ot(e);h!==P.pageSize&&(o.debug(`Setting page size to ${h}`),e.current.setPaginationModel({pageSize:h,page:P.page}))},[e,o]),d=a.useCallback(h=>{var P;const w=ot(e);h!==w&&(o.debug("Setting 'paginationModel' to",h),e.current.updateControlState("pagination",no((P=t.rowCount)!=null?P:l,t.signature,h),"setPaginationModel"),e.current.forceUpdate())},[e,o,t.rowCount,t.signature,l]);me(e,{setPage:s,setPageSize:u,setPaginationModel:d},"public");const p=a.useCallback((h,P)=>{var w;const C=ot(e);return!P.exportOnlyDirtyModels||t.paginationModel!=null||((w=t.initialState)==null||(w=w.pagination)==null?void 0:w.paginationModel)!=null||C.page!==0&&C.pageSize!==ff(t.autoPageSize)?m({},h,{pagination:m({},h.pagination,{paginationModel:C})}):h},[e,t.paginationModel,(r=t.initialState)==null||(r=r.pagination)==null?void 0:r.paginationModel,t.autoPageSize]),f=a.useCallback((h,P)=>{var w,C,E;const T=(w=P.stateToRestore.pagination)!=null&&w.paginationModel?m({},Mi(t.autoPageSize),(C=P.stateToRestore.pagination)==null?void 0:C.paginationModel):ot(e);return e.current.updateControlState("pagination",no((E=t.rowCount)!=null?E:l,t.signature,T),"stateRestorePreProcessing"),h},[e,t.autoPageSize,t.rowCount,t.signature,l]);Ae(e,"exportState",p),Ae(e,"restoreState",f);const b=()=>{var h;const P=ot(e);(h=e.current.virtualScrollerRef)!=null&&h.current&&e.current.scrollToIndexes({rowIndex:P.page*P.pageSize}),e.current.forceUpdate()},g=a.useCallback(()=>{const h=e.current.getRootDimensions();if(!t.autoPageSize||!h)return;const P=Wa(e),w=Math.floor((h.viewportInnerSize.height-P.top-P.bottom)/i);e.current.setPageSize(w)},[e,t.autoPageSize,i]);re(e,"viewportInnerSizeChange",g),re(e,"paginationModelChange",b),a.useEffect(()=>{},[t.rowCount,t.paginationMode]),a.useEffect(()=>{var h;e.current.updateControlState("pagination",no((h=t.rowCount)!=null?h:l,t.signature,t.paginationModel))},[e,t.paginationModel,t.rowCount,t.paginationMode,l,t.signature]),a.useEffect(()=>{g()},[g])};function Wm(){return new Promise(e=>{requestAnimationFrame(()=>{e()})})}function Km(e){const t=document.createElement("iframe");return t.style.position="absolute",t.style.width="0px",t.style.height="0px",t.title=e||document.title,t}const Qm=(e,t)=>{const r=je(e,"useGridPrintExport"),o=a.useRef(null),l=a.useRef(null),n=a.useRef({}),i=a.useRef([]);a.useEffect(()=>{o.current=Ir(e.current.rootElementRef.current)},[e]);const s=a.useCallback((g,h,P)=>new Promise(w=>{const C=gu({apiRef:e,options:{fields:g,allColumns:h}}).map(_=>_.field),E=ft(e),T={};E.forEach(_=>{T[_.field]=C.includes(_.field)}),P&&(T[Jt.field]=!0),e.current.setColumnVisibilityModel(T),w()}),[e]),u=a.useCallback(g=>{const P=g({apiRef:e}).map(w=>e.current.getRow(w));e.current.setRows(P)},[e]),d=a.useCallback((g,h)=>{var P,w;const C=m({copyStyles:!0,hideToolbar:!1,hideFooter:!1,includeCheckboxes:!1},h),E=g.contentDocument;if(!E)return;const T=dr(e.current.state),_=e.current.rootElementRef.current,F=_.cloneNode(!0),L=F.querySelector(`.${V.main}`);L.style.overflow="visible",F.style.contain="size";const H=F.querySelector(`.${V.columnHeaders}`).querySelector(`.${V.columnHeadersInner}`);H.style.width="100%";let $=((P=_.querySelector(`.${V.toolbarContainer}`))==null?void 0:P.offsetHeight)||0,v=((w=_.querySelector(`.${V.footerContainer}`))==null?void 0:w.offsetHeight)||0;if(C.hideToolbar){var R;(R=F.querySelector(`.${V.toolbarContainer}`))==null||R.remove(),$=0}if(C.hideFooter){var y;(y=F.querySelector(`.${V.footerContainer}`))==null||y.remove(),v=0}const S=T.currentPageTotalHeight+an(e,t.columnHeaderHeight)+$+v;if(F.style.height=`${S}px`,F.style.boxSizing="content-box",h!=null&&h.getRowsToExport){const k=F.querySelector(`.${V.footerContainer}`);k.style.position="absolute",k.style.width="100%",k.style.top=`${S-v}px`}const O=document.createElement("div");O.appendChild(F),E.body.innerHTML=O.innerHTML;const M=typeof C.pageStyle=="function"?C.pageStyle():C.pageStyle;if(typeof M=="string"){const k=E.createElement("style");k.appendChild(E.createTextNode(M)),E.head.appendChild(k)}C.bodyClassName&&E.body.classList.add(...C.bodyClassName.split(" "));const A=[];if(C.copyStyles){const k=_.getRootNode(),N=(k.constructor.name==="ShadowRoot"?k:o.current).querySelectorAll("style, link[rel='stylesheet']");for(let j=0;j{B.addEventListener("load",()=>Z())})),E.head.appendChild(B)}}}Promise.all(A).then(()=>{g.contentWindow.print()})},[e,o,t.columnHeaderHeight]),c=a.useCallback(g=>{var h;o.current.body.removeChild(g),e.current.restoreState(l.current||{}),(h=l.current)!=null&&(h=h.columns)!=null&&h.columnVisibilityModel||e.current.setColumnVisibilityModel(n.current),e.current.unstable_setVirtualization(!0),e.current.setRows(i.current),l.current=null,n.current={},i.current=[]},[e]),f={exportDataAsPrint:a.useCallback(async g=>{if(r.debug("Export data as Print"),!e.current.rootElementRef.current)throw new Error("MUI: No grid root element available.");l.current=e.current.exportState(),n.current=at(e);const h=Ot(e);if(i.current=or(e).map(w=>h[w]),t.pagination){const w=kl(e),C={page:0,pageSize:w};e.current.updateControlState("pagination",no(w,"DataGridPro",C)),e.current.forceUpdate()}await s(g==null?void 0:g.fields,g==null?void 0:g.allColumns,g==null?void 0:g.includeCheckboxes),g!=null&&g.getRowsToExport&&u(g.getRowsToExport),e.current.unstable_setVirtualization(!1),await Wm();const P=Km(g==null?void 0:g.fileName);P.onload=()=>{d(P,g),P.contentWindow.matchMedia("print").addEventListener("change",C=>{C.matches===!1&&c(P)})},o.current.body.appendChild(P)},[t,r,e,d,c,s,u])};me(e,f,"public");const b=a.useCallback((g,h)=>{var P;return(P=h.printOptions)!=null&&P.disableToolbarButton?g:[...g,{component:x.jsx($s,{options:h.printOptions}),componentName:"printExport"}]},[]);Ae(e,"exportMenu",b)},Zm=(e,t,r)=>{var o,l,n;const i=(o=(l=t.filterModel)!=null?l:(n=t.initialState)==null||(n=n.filter)==null?void 0:n.filterModel)!=null?o:ur();return m({},e,{filter:{filterModel:qs(i,t.disableMultipleColumnsFiltering,r),filteredRowsLookup:{},filteredDescendantCountLookup:{}},visibleRowsLookup:{}})},Jm=e=>e.filteredRowsLookup;function ra(e,t){return e.current.applyStrategyProcessor("visibleRowsLookupCreation",{tree:t.rows.tree,filteredRowsLookup:t.filter.filteredRowsLookup})}function Ym(){return Oo(Object.values)}const Xm=(e,t)=>{var r,o;const l=je(e,"useGridFilter");e.current.registerControlState({stateId:"filter",propModel:t.filterModel,propOnChange:t.onFilterModelChange,stateSelector:Re,changeEvent:"filterModelChange"});const n=a.useCallback(()=>{e.current.setState($=>{const v=Re($,e.current.instanceId),R=t.filterMode==="client"?Xg(v,e,t.disableEval):null,y=e.current.applyStrategyProcessor("filtering",{isRowMatchingFilters:R,filterModel:v??ur()}),S=m({},$,{filter:m({},$.filter,y)}),O=ra(e,S);return m({},S,{visibleRowsLookup:O})}),e.current.publishEvent("filteredRowsSet")},[e,t.filterMode,t.disableEval]),i=a.useCallback(($,v)=>v==null||v.filterable===!1||t.disableColumnFilter?$:[...$,"columnMenuFilterItem"],[t.disableColumnFilter]),s=a.useCallback(()=>{n(),e.current.forceUpdate()},[e,n]),u=a.useCallback($=>{const v=Re(e),R=[...v.items],y=R.findIndex(S=>S.id===$.id);y===-1?R.push($):R[y]=$,e.current.setFilterModel(m({},v,{items:R}),"upsertFilterItem")},[e]),d=a.useCallback($=>{const v=Re(e),R=[...v.items];$.forEach(y=>{const S=$.findIndex(O=>O.id===y.id);S===-1?R.push(y):R[S]=y}),e.current.setFilterModel(m({},v,{items:$}),"upsertFilterItems")},[e]),c=a.useCallback($=>{const v=Re(e),R=v.items.filter(y=>y.id!==$.id);R.length!==v.items.length&&e.current.setFilterModel(m({},v,{items:R}),"deleteFilterItem")},[e]),p=a.useCallback(($,v,R)=>{if(l.debug("Displaying filter panel"),$){const y=Re(e),S=y.items.filter(k=>{var D;if(k.value!==void 0)return!(Array.isArray(k.value)&&k.value.length===0);const j=(D=e.current.getColumn(k.field).filterOperators)==null?void 0:D.find(B=>B.value===k.operator);return!(typeof(j==null?void 0:j.requiresFilterValue)>"u"?!0:j==null?void 0:j.requiresFilterValue)});let O;const M=S.find(k=>k.field===$),A=e.current.getColumn($);M?O=S:t.disableMultipleColumnsFiltering?O=[ll({field:$,operator:A.filterOperators[0].value},e)]:O=[...S,ll({field:$,operator:A.filterOperators[0].value},e)],e.current.setFilterModel(m({},y,{items:O}))}e.current.showPreferences(st.filters,v,R)},[e,l,t.disableMultipleColumnsFiltering]),f=a.useCallback(()=>{l.debug("Hiding filter panel"),e.current.hidePreferences()},[e,l]),b=a.useCallback($=>{const v=Re(e);v.logicOperator!==$&&e.current.setFilterModel(m({},v,{logicOperator:$}),"changeLogicOperator")},[e]),g=a.useCallback($=>{const v=Re(e);It(v.quickFilterValues,$)||e.current.setFilterModel(m({},v,{quickFilterValues:[...$]}))},[e]),h=a.useCallback(($,v)=>{Re(e)!==$&&(l.debug("Setting filter model"),e.current.updateControlState("filter",qn($,t.disableMultipleColumnsFiltering,e),v),e.current.unstable_applyFilters())},[e,l,t.disableMultipleColumnsFiltering]),P={setFilterLogicOperator:b,unstable_applyFilters:s,deleteFilterItem:c,upsertFilterItem:u,upsertFilterItems:d,setFilterModel:h,showFilterPanel:p,hideFilterPanel:f,setQuickFilterValues:g,ignoreDiacritics:t.ignoreDiacritics};me(e,P,"public");const w=a.useCallback(($,v)=>{var R;const y=Re(e);return!v.exportOnlyDirtyModels||t.filterModel!=null||((R=t.initialState)==null||(R=R.filter)==null?void 0:R.filterModel)!=null||!It(y,ur())?m({},$,{filter:{filterModel:y}}):$},[e,t.filterModel,(r=t.initialState)==null||(r=r.filter)==null?void 0:r.filterModel]),C=a.useCallback(($,v)=>{var R;const y=(R=v.stateToRestore.filter)==null?void 0:R.filterModel;return y==null?$:(e.current.updateControlState("filter",qn(y,t.disableMultipleColumnsFiltering,e),"restoreState"),m({},$,{callbacks:[...$.callbacks,e.current.unstable_applyFilters]}))},[e,t.disableMultipleColumnsFiltering]),E=a.useCallback(($,v)=>{if(v===st.filters){var R;const y=t.slots.filterPanel;return x.jsx(y,m({},(R=t.slotProps)==null?void 0:R.filterPanel))}return $},[t.slots.filterPanel,(o=t.slotProps)==null?void 0:o.filterPanel]),{getRowId:T}=t,_=Pl(Ym),F=a.useCallback($=>{if(t.filterMode!=="client"||!$.isRowMatchingFilters)return{filteredRowsLookup:{},filteredDescendantCountLookup:{}};const v=Ot(e),R={},{isRowMatchingFilters:y}=$,S={},O={passingFilterItems:null,passingQuickFilterValues:null},M=_.current(e.current.state.rows.dataRowIdToModelLookup);for(let D=0;D{l.debug("onColUpdated - GridColumns changed, applying filters");const $=Re(e),v=ya(e),R=$.items.filter(y=>y.field&&v[y.field]);R.length<$.items.length&&e.current.setFilterModel(m({},$,{items:R}))},[e,l]),I=a.useCallback($=>{$==="filtering"&&e.current.unstable_applyFilters()},[e]),H=a.useCallback(()=>{e.current.setState($=>m({},$,{visibleRowsLookup:ra(e,$)})),e.current.forceUpdate()},[e]);re(e,"rowsSet",n),re(e,"columnsChange",L),re(e,"activeStrategyProcessorChange",I),re(e,"rowExpansionChange",H),re(e,"columnVisibilityModelChange",()=>{const $=Re(e);$.quickFilterValues&&$.quickFilterExcludeHiddenColumns&&e.current.unstable_applyFilters()}),mr(()=>{e.current.unstable_applyFilters()}),ze(()=>{t.filterModel!==void 0&&e.current.setFilterModel(t.filterModel)},[e,l,t.filterModel])},eb=e=>m({},e,{focus:{cell:null,columnHeader:null,columnHeaderFilter:null,columnGroupHeader:null},tabIndex:{cell:null,columnHeader:null,columnHeaderFilter:null,columnGroupHeader:null}}),tb=(e,t)=>{const r=je(e,"useGridFocus"),o=a.useRef(null),l=a.useCallback((L,I)=>{L&&e.current.getRow(L.id)&&e.current.publishEvent("cellFocusOut",e.current.getCellParams(L.id,L.field),I)},[e]),n=a.useCallback((L,I)=>{const H=Ze(e);(H==null?void 0:H.id)===L&&(H==null?void 0:H.field)===I||(e.current.setState($=>(r.debug(`Focusing on cell with id=${L} and field=${I}`),m({},$,{tabIndex:{cell:{id:L,field:I},columnHeader:null,columnHeaderFilter:null,columnGroupHeader:null},focus:{cell:{id:L,field:I},columnHeader:null,columnHeaderFilter:null,columnGroupHeader:null}}))),e.current.forceUpdate(),e.current.getRow(L)&&(H&&l(H,{}),e.current.publishEvent("cellFocusIn",e.current.getCellParams(L,I))))},[e,r,l]),i=a.useCallback((L,I={})=>{const H=Ze(e);l(H,I),e.current.setState($=>(r.debug(`Focusing on column header with colIndex=${L}`),m({},$,{tabIndex:{columnHeader:{field:L},columnHeaderFilter:null,cell:null,columnGroupHeader:null},focus:{columnHeader:{field:L},columnHeaderFilter:null,cell:null,columnGroupHeader:null}}))),e.current.forceUpdate()},[e,r,l]),s=a.useCallback((L,I={})=>{const H=Ze(e);l(H,I),e.current.setState($=>(r.debug(`Focusing on column header filter with colIndex=${L}`),m({},$,{tabIndex:{columnHeader:null,columnHeaderFilter:{field:L},cell:null,columnGroupHeader:null},focus:{columnHeader:null,columnHeaderFilter:{field:L},cell:null,columnGroupHeader:null}}))),e.current.forceUpdate()},[e,r,l]),u=a.useCallback((L,I,H={})=>{const $=Ze(e);$&&e.current.publishEvent("cellFocusOut",e.current.getCellParams($.id,$.field),H),e.current.setState(v=>m({},v,{tabIndex:{columnGroupHeader:{field:L,depth:I},columnHeader:null,columnHeaderFilter:null,cell:null},focus:{columnGroupHeader:{field:L,depth:I},columnHeader:null,columnHeaderFilter:null,cell:null}})),e.current.forceUpdate()},[e]),d=a.useCallback(()=>xr(e),[e]),c=a.useCallback((L,I,H)=>{let $=e.current.getColumnIndex(I);const v=He(e),R=fo(e,{pagination:t.pagination,paginationMode:t.paginationMode}),y=gr(e),S=[].concat(y.top||[],R.rows,y.bottom||[]);let O=S.findIndex(D=>D.id===L);H==="right"?$+=1:H==="left"?$-=1:O+=1,$>=v.length?(O+=1,O=0&&($=v.length-1)),O=cr(O,0,S.length-1);const M=S[O];if(!M)return;const A=e.current.unstable_getCellColSpanInfo(M.id,$);A&&A.spannedByColSpan&&(H==="left"||H==="below"?$=A.leftVisibleCellIndex:H==="right"&&($=A.rightVisibleCellIndex)),$=cr($,0,v.length-1);const k=v[$];e.current.setCellFocus(M.id,k.field)},[e,t.pagination,t.paginationMode]),p=a.useCallback(({id:L,field:I})=>{e.current.setCellFocus(L,I)},[e]),f=a.useCallback((L,I)=>{I.key==="Enter"||I.key==="Tab"||I.key==="Shift"||po(I.key)||e.current.setCellFocus(L.id,L.field)},[e]),b=a.useCallback(({field:L},I)=>{I.target===I.currentTarget&&e.current.setColumnHeaderFocus(L,I)},[e]),g=a.useCallback(({fields:L,depth:I},H)=>{if(H.target!==H.currentTarget)return;const $=xr(e);$!==null&&$.depth===I&&L.includes($.field)||e.current.setColumnGroupHeaderFocus(L[0],I,H)},[e]),h=a.useCallback((L,I)=>{var H;(H=I.relatedTarget)!=null&&H.className.includes(V.columnHeader)||(r.debug("Clearing focus"),e.current.setState($=>m({},$,{focus:{cell:null,columnHeader:null,columnHeaderFilter:null,columnGroupHeader:null}})))},[r,e]),P=a.useCallback(L=>{o.current=L},[]),w=a.useCallback(L=>{const I=o.current;o.current=null;const H=Ze(e);if(!e.current.unstable_applyPipeProcessors("canUpdateFocus",!0,{event:L,cell:I}))return;if(!H){I&&e.current.setCellFocus(I.id,I.field);return}if((I==null?void 0:I.id)===H.id&&(I==null?void 0:I.field)===H.field)return;const v=e.current.getCellElement(H.id,H.field);v!=null&&v.contains(L.target)||(I?e.current.setCellFocus(I.id,I.field):(e.current.setState(R=>m({},R,{focus:{cell:null,columnHeader:null,columnHeaderFilter:null,columnGroupHeader:null}})),e.current.forceUpdate(),l(H,L)))},[e,l]),C=a.useCallback(L=>{if(L.cellMode==="view")return;const I=Ze(e);((I==null?void 0:I.id)!==L.id||(I==null?void 0:I.field)!==L.field)&&e.current.setCellFocus(L.id,L.field)},[e]),E=a.useCallback(()=>{const L=Ze(e);L&&!e.current.getRow(L.id)&&e.current.setState(I=>m({},I,{focus:{cell:null,columnHeader:null,columnHeaderFilter:null,columnGroupHeader:null}}))},[e]),T=pt(()=>{const L=Ze(e);if(!L)return;const I=fo(e,{pagination:t.pagination,paginationMode:t.paginationMode});if(I.rows.find(v=>v.id===L.id))return;const $=He(e);e.current.setState(v=>m({},v,{tabIndex:{cell:{id:I.rows[0].id,field:$[0].field},columnGroupHeader:null,columnHeader:null,columnHeaderFilter:null}}))}),_={setCellFocus:n,setColumnHeaderFocus:i,setColumnHeaderFilterFocus:s},F={moveFocusToRelativeCell:c,setColumnGroupHeaderFocus:u,getColumnGroupHeaderFocus:d};me(e,_,"public"),me(e,F,"private"),a.useEffect(()=>{const L=Ir(e.current.rootElementRef.current);return L.addEventListener("mouseup",w),()=>{L.removeEventListener("mouseup",w)}},[e,w]),re(e,"columnHeaderBlur",h),re(e,"cellDoubleClick",p),re(e,"cellMouseDown",P),re(e,"cellKeyDown",f),re(e,"cellModeChange",C),re(e,"columnHeaderFocus",b),re(e,"columnGroupHeaderFocus",g),re(e,"rowsSet",E),re(e,"paginationModelChange",T)};function rb(e,t){const r=gr(e)||{};return[...r.top||[],...t,...r.bottom||[]]}const Ho=({currentColIndex:e,firstColIndex:t,lastColIndex:r,direction:o})=>{if(o==="rtl"){if(et)return e-1;return null},_o=({currentColIndex:e,firstColIndex:t,lastColIndex:r,direction:o})=>{if(o==="rtl"){if(e>t)return e-1}else if(o==="ltr"&&e{const r=je(e,"useGridKeyboardNavigation"),o=Zt(e,t).rows,l=Mr(),n=a.useMemo(()=>rb(e,o),[e,o]),i=t.signature!=="DataGrid"&&t.unstable_headerFilters,s=a.useCallback((w,C,E="left")=>{const T=Mt(e),_=e.current.unstable_getCellColSpanInfo(C,w);_&&_.spannedByColSpan&&(E==="left"?w=_.leftVisibleCellIndex:E==="right"&&(w=_.rightVisibleCellIndex));const F=T.findIndex(I=>I.id===C);r.debug(`Navigating to cell row ${F}, col ${w}`),e.current.scrollToIndexes({colIndex:w,rowIndex:F});const L=e.current.getVisibleColumns()[w].field;e.current.setCellFocus(C,L)},[e,r]),u=a.useCallback((w,C)=>{r.debug(`Navigating to header col ${w}`),e.current.scrollToIndexes({colIndex:w});const E=e.current.getVisibleColumns()[w].field;e.current.setColumnHeaderFocus(E,C)},[e,r]),d=a.useCallback((w,C)=>{r.debug(`Navigating to header filter col ${w}`),e.current.scrollToIndexes({colIndex:w});const E=e.current.getVisibleColumns()[w].field;e.current.setColumnHeaderFilterFocus(E,C)},[e,r]),c=a.useCallback((w,C,E)=>{r.debug(`Navigating to header col ${w}`),e.current.scrollToIndexes({colIndex:w});const{field:T}=e.current.getVisibleColumns()[w];e.current.setColumnGroupHeaderFocus(T,C,E)},[e,r]),p=a.useCallback(w=>{var C;return(C=n[w])==null?void 0:C.id},[n]),f=a.useCallback((w,C)=>{const E=C.currentTarget.querySelector(`.${V.columnHeaderTitleContainerContent}`);if(!!E&&E.contains(C.target)&&w.field!==Jt.field||!e.current.getRootDimensions())return;const F=e.current.getViewportPageSize(),L=w.field?e.current.getColumnIndex(w.field):0,I=n.length>0?0:null,H=n.length-1,$=0,v=He(e).length-1,R=fr(e);let y=!0;switch(C.key){case"ArrowDown":{I!==null&&(i?d(L,C):s(L,p(I)));break}case"ArrowRight":{const S=_o({currentColIndex:L,firstColIndex:$,lastColIndex:v,direction:l.direction});S!==null&&u(S,C);break}case"ArrowLeft":{const S=Ho({currentColIndex:L,firstColIndex:$,lastColIndex:v,direction:l.direction});S!==null&&u(S,C);break}case"ArrowUp":{R>0&&c(L,R-1,C);break}case"PageDown":{I!==null&&H!==null&&s(L,p(Math.min(I+F,H)));break}case"Home":{u($,C);break}case"End":{u(v,C);break}case"Enter":{(C.ctrlKey||C.metaKey)&&e.current.toggleColumnMenu(w.field);break}case" ":break;default:y=!1}y&&C.preventDefault()},[e,n.length,i,d,s,p,l.direction,u,c]),b=a.useCallback((w,C)=>{if(!e.current.getRootDimensions())return;const T=Hi(e)===w.field,_=_i(e)===w.field;if(T||_||!po(C.key))return;const F=e.current.getViewportPageSize(),L=w.field?e.current.getColumnIndex(w.field):0,I=0,H=n.length-1,$=0,v=He(e).length-1;let R=!0;switch(C.key){case"ArrowDown":{const y=p(I);y!=null&&s(L,y);break}case"ArrowRight":{const y=_o({currentColIndex:L,firstColIndex:$,lastColIndex:v,direction:l.direction});y!==null&&d(y,C);break}case"ArrowLeft":{const y=Ho({currentColIndex:L,firstColIndex:$,lastColIndex:v,direction:l.direction});y!==null?d(y,C):e.current.setColumnHeaderFilterFocus(w.field,C);break}case"ArrowUp":{u(L,C);break}case"PageDown":{H!==null&&s(L,p(Math.min(I+F,H)));break}case"Home":{d($,C);break}case"End":{d(v,C);break}case" ":break;default:R=!1}R&&C.preventDefault()},[e,n.length,d,l.direction,u,s,p]),g=a.useCallback((w,C)=>{if(!e.current.getRootDimensions())return;const T=xr(e);if(T===null)return;const{field:_,depth:F}=T,{fields:L,depth:I,maxDepth:H}=w,$=e.current.getViewportPageSize(),v=e.current.getColumnIndex(_),R=_?e.current.getColumnIndex(_):0,y=0,S=n.length-1,O=0,M=He(e).length-1;let A=!0;switch(C.key){case"ArrowDown":{I===H-1?u(v,C):c(v,F+1,C);break}case"ArrowUp":{I>0&&c(v,F-1,C);break}case"ArrowRight":{const k=L.length-L.indexOf(_)-1;v+k+1<=M&&c(v+k+1,F,C);break}case"ArrowLeft":{const k=L.indexOf(_);v-k-1>=O&&c(v-k-1,F,C);break}case"PageDown":{S!==null&&s(R,p(Math.min(y+$,S)));break}case"Home":{c(O,F,C);break}case"End":{c(M,F,C);break}case" ":break;default:A=!1}A&&C.preventDefault()},[e,n.length,u,c,s,p]),h=a.useCallback((w,C)=>{if(Hr(C))return;const E=e.current.getCellParams(w.id,w.field);if(E.cellMode===ye.Edit||!po(C.key)||!e.current.unstable_applyPipeProcessors("canUpdateFocus",!0,{event:C,cell:E}))return;const _=e.current.getRootDimensions();if(n.length===0||!_)return;const F=l.direction,L=e.current.getViewportPageSize(),I=w.field?e.current.getColumnIndex(w.field):0,H=n.findIndex(O=>O.id===w.id),$=0,v=n.length-1,R=0,y=He(e).length-1;let S=!0;switch(C.key){case"ArrowDown":{H$?s(I,p(H-1)):i?d(I,C):u(I,C);break}case"ArrowRight":{const O=_o({currentColIndex:I,firstColIndex:R,lastColIndex:y,direction:F});O!==null&&s(O,p(H),F==="rtl"?"left":"right");break}case"ArrowLeft":{const O=Ho({currentColIndex:I,firstColIndex:R,lastColIndex:y,direction:F});O!==null&&s(O,p(H),F==="rtl"?"right":"left");break}case"Tab":{C.shiftKey&&I>R?s(I-1,p(H),"left"):!C.shiftKey&&I=$?s(I,p(O)):u(I,C);break}case"Home":{C.ctrlKey||C.metaKey||C.shiftKey?s(R,p($)):s(R,p(H));break}case"End":{C.ctrlKey||C.metaKey||C.shiftKey?s(y,p(v)):s(y,p(H));break}default:S=!1}S&&C.preventDefault()},[e,n,l.direction,s,p,i,d,u]),P=a.useCallback((w,{event:C})=>C.key===" "?!1:w,[]);Ae(e,"canStartEditing",P),re(e,"columnHeaderKeyDown",f),re(e,"headerFilterKeyDown",b),re(e,"columnGroupHeaderKeyDown",g),re(e,"cellKeyDown",h)},lb=(e,t)=>{var r,o;return m({},e,{preferencePanel:(r=(o=t.initialState)==null?void 0:o.preferencePanel)!=null?r:{open:!1}})},nb=(e,t)=>{var r;const o=je(e,"useGridPreferencesPanel"),l=a.useRef(),n=a.useRef(),i=a.useCallback(()=>{o.debug("Hiding Preferences Panel");const f=At(e.current.state);f.openedPanelValue&&e.current.publishEvent("preferencePanelClose",{openedPanelValue:f.openedPanelValue}),e.current.setState(b=>m({},b,{preferencePanel:{open:!1}})),e.current.forceUpdate()},[e,o]),s=a.useCallback(()=>{n.current=setTimeout(()=>clearTimeout(l.current),0)},[]),u=a.useCallback(()=>{l.current=setTimeout(i,100)},[i]),d=a.useCallback((f,b,g)=>{o.debug("Opening Preferences Panel"),s(),e.current.setState(h=>m({},h,{preferencePanel:m({},h.preferencePanel,{open:!0,openedPanelValue:f,panelId:b,labelId:g})})),e.current.publishEvent("preferencePanelOpen",{openedPanelValue:f}),e.current.forceUpdate()},[o,s,e]);me(e,{showPreferences:d,hidePreferences:u},"public");const c=a.useCallback((f,b)=>{var g;const h=At(e.current.state);return!b.exportOnlyDirtyModels||((g=t.initialState)==null?void 0:g.preferencePanel)!=null||h.open?m({},f,{preferencePanel:h}):f},[e,(r=t.initialState)==null?void 0:r.preferencePanel]),p=a.useCallback((f,b)=>{const g=b.stateToRestore.preferencePanel;return g!=null&&e.current.setState(h=>m({},h,{preferencePanel:g})),f},[e]);Ae(e,"exportState",c),Ae(e,"restoreState",p),a.useEffect(()=>()=>{clearTimeout(l.current),clearTimeout(n.current)},[])},ab=["id","field"],ib=["id","field"],sb=vt(["MUI: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.","To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. ` ...} />`.","For more detail, see http://mui.com/components/data-grid/editing/#server-side-persistence."],"error"),ub=(e,t)=>{const[r,o]=a.useState({}),l=a.useRef(r),n=a.useRef({}),{processRowUpdate:i,onProcessRowUpdateError:s,cellModesModel:u,onCellModesModelChange:d}=t,c=S=>(...O)=>{t.editMode===mt.Cell&&S(...O)},p=a.useCallback((S,O)=>{const M=e.current.getCellParams(S,O);if(!e.current.isCellEditable(M))throw new Error(`MUI: The cell with id=${S} and field=${O} is not editable.`)},[e]),f=a.useCallback((S,O,M)=>{if(e.current.getCellMode(S,O)!==M)throw new Error(`MUI: The cell with id=${S} and field=${O} is not in ${M} mode.`)},[e]),b=a.useCallback((S,O)=>{if(!S.isEditable||S.cellMode===ye.Edit)return;const M=m({},S,{reason:wt.cellDoubleClick});e.current.publishEvent("cellEditStart",M,O)},[e]),g=a.useCallback((S,O)=>{if(S.cellMode===ye.View||e.current.getCellMode(S.id,S.field)===ye.View)return;const M=m({},S,{reason:lt.cellFocusOut});e.current.publishEvent("cellEditStop",M,O)},[e]),h=a.useCallback((S,O)=>{if(S.cellMode===ye.Edit){if(O.which===229)return;let M;if(O.key==="Escape"?M=lt.escapeKeyDown:O.key==="Enter"?M=lt.enterKeyDown:O.key==="Tab"&&(M=O.shiftKey?lt.shiftTabKeyDown:lt.tabKeyDown,O.preventDefault()),M){const A=m({},S,{reason:M});e.current.publishEvent("cellEditStop",A,O)}}else if(S.isEditable){let M;if(!e.current.unstable_applyPipeProcessors("canStartEditing",!0,{event:O,cellParams:S,editMode:"cell"}))return;if(ii(O)?M=wt.printableKeyDown:(O.ctrlKey||O.metaKey)&&O.key==="v"?M=wt.pasteKeyDown:O.key==="Enter"?M=wt.enterKeyDown:(O.key==="Delete"||O.key==="Backspace")&&(M=wt.deleteKeyDown),M){const k=m({},S,{reason:M,key:O.key});e.current.publishEvent("cellEditStart",k,O)}}},[e]),P=a.useCallback(S=>{const{id:O,field:M,reason:A}=S,k={id:O,field:M};(A===wt.printableKeyDown||A===wt.deleteKeyDown||A===wt.pasteKeyDown)&&(k.deleteValue=!0),e.current.startCellEditMode(k)},[e]),w=a.useCallback(S=>{const{id:O,field:M,reason:A}=S;e.current.runPendingEditCellValueMutation(O,M);let k;A===lt.enterKeyDown?k="below":A===lt.tabKeyDown?k="right":A===lt.shiftTabKeyDown&&(k="left");const D=A==="escapeKeyDown";e.current.stopCellEditMode({id:O,field:M,ignoreModifications:D,cellToFocusAfter:k})},[e]);re(e,"cellDoubleClick",c(b)),re(e,"cellFocusOut",c(g)),re(e,"cellKeyDown",c(h)),re(e,"cellEditStart",c(P)),re(e,"cellEditStop",c(w)),Ee(e,"cellEditStart",t.onCellEditStart),Ee(e,"cellEditStop",t.onCellEditStop);const C=a.useCallback((S,O)=>{const M=We(e.current.state);return M[S]&&M[S][O]?ye.Edit:ye.View},[e]),E=pt(S=>{const O=S!==t.cellModesModel;d&&O&&d(S,{}),!(t.cellModesModel&&O)&&(o(S),l.current=S,e.current.publishEvent("cellModesModelChange",S))}),T=a.useCallback((S,O,M)=>{const A=m({},l.current);if(M!==null)A[S]=m({},A[S],{[O]:m({},M)});else{const k=A[S],D=J(k,[O].map(Or));A[S]=D,Object.keys(A[S]).length===0&&delete A[S]}E(A)},[E]),_=a.useCallback((S,O,M)=>{e.current.setState(A=>{const k=m({},A.editRows);return M!==null?k[S]=m({},k[S],{[O]:m({},M)}):(delete k[S][O],Object.keys(k[S]).length===0&&delete k[S]),m({},A,{editRows:k})}),e.current.forceUpdate()},[e]),F=a.useCallback(S=>{const{id:O,field:M}=S,A=J(S,ab);p(O,M),f(O,M,ye.View),T(O,M,m({mode:ye.Edit},A))},[p,f,T]),L=pt(S=>{const{id:O,field:M,deleteValue:A,initialValue:k}=S;let D=e.current.getCellValue(O,M);(A||k)&&(D=A?"":k),_(O,M,{value:D,error:!1,isProcessingProps:!1}),e.current.setCellFocus(O,M)}),I=a.useCallback(S=>{const{id:O,field:M}=S,A=J(S,ib);f(O,M,ye.Edit),T(O,M,m({mode:ye.View},A))},[f,T]),H=pt(async S=>{const{id:O,field:M,ignoreModifications:A,cellToFocusAfter:k="none"}=S;f(O,M,ye.Edit),e.current.runPendingEditCellValueMutation(O,M);const D=()=>{_(O,M,null),T(O,M,null),k!=="none"&&e.current.moveFocusToRelativeCell(O,M,k)};if(A){D();return}const N=We(e.current.state),{error:j,isProcessingProps:z}=N[O][M];if(j||z){n.current[O][M].mode=ye.Edit,T(O,M,{mode:ye.Edit});return}const B=e.current.getRowWithUpdatedValuesFromCellEditing(O,M);if(i){const Z=Q=>{n.current[O][M].mode=ye.Edit,T(O,M,{mode:ye.Edit}),s?s(Q):sb()};try{const Q=e.current.getRow(O);Promise.resolve(i(B,Q)).then(ee=>{e.current.updateRows([ee]),D()}).catch(Z)}catch(Q){Z(Q)}}else e.current.updateRows([B]),D()}),$=a.useCallback(async S=>{var O;const{id:M,field:A,value:k,debounceMs:D,unstable_skipValueParser:N}=S;p(M,A),f(M,A,ye.Edit);const j=e.current.getColumn(A),z=e.current.getRow(M);let B=k;j.valueParser&&!N&&(B=j.valueParser(k,e.current.getCellParams(M,A)));let Z=We(e.current.state),Q=m({},Z[M][A],{value:B,changeReason:D?"debouncedSetEditCellValue":"setEditCellValue"});if(j.preProcessEditCellProps){const ee=k!==Z[M][A].value;Q=m({},Q,{isProcessingProps:!0}),_(M,A,Q),Q=await Promise.resolve(j.preProcessEditCellProps({id:M,row:z,props:Q,hasChanged:ee}))}return e.current.getCellMode(M,A)===ye.View?!1:(Z=We(e.current.state),Q=m({},Q,{isProcessingProps:!1}),Q.value=j.preProcessEditCellProps?Z[M][A].value:B,_(M,A,Q),Z=We(e.current.state),!((O=Z[M])!=null&&(O=O[A])!=null&&O.error))},[e,p,f,_]),v=a.useCallback((S,O)=>{const M=e.current.getColumn(O),A=We(e.current.state),k=e.current.getRow(S);if(!A[S]||!A[S][O])return e.current.getRow(S);const{value:D}=A[S][O];return M.valueSetter?M.valueSetter({value:D,row:k}):m({},k,{[O]:D})},[e]),R={getCellMode:C,startCellEditMode:F,stopCellEditMode:I},y={setCellEditingEditCellValue:$,getRowWithUpdatedValuesFromCellEditing:v};me(e,R,"public"),me(e,y,"private"),a.useEffect(()=>{u&&E(u)},[u,E]),ze(()=>{const S=Pr(e),O=n.current;n.current=Fi(r),Object.entries(r).forEach(([M,A])=>{Object.entries(A).forEach(([k,D])=>{var N,j;const z=((N=O[M])==null||(N=N[k])==null?void 0:N.mode)||ye.View,B=(j=S[M])!=null?j:M;D.mode===ye.Edit&&z===ye.View?L(m({id:B,field:k},D)):D.mode===ye.View&&z===ye.Edit&&H(m({id:B,field:k},D))})})},[e,r,L,H])},cb=["id"],db=["id"],pb=vt(["MUI: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.","To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. ` ...} />`.","For more detail, see http://mui.com/components/data-grid/editing/#server-side-persistence."],"error"),fb=(e,t)=>{const[r,o]=a.useState({}),l=a.useRef(r),n=a.useRef({}),i=a.useRef(null),s=a.useRef(null),{processRowUpdate:u,onProcessRowUpdateError:d,rowModesModel:c,onRowModesModelChange:p}=t,f=k=>(...D)=>{t.editMode===mt.Row&&k(...D)},b=a.useCallback((k,D)=>{const N=e.current.getCellParams(k,D);if(!e.current.isCellEditable(N))throw new Error(`MUI: The cell with id=${k} and field=${D} is not editable.`)},[e]),g=a.useCallback((k,D)=>{if(e.current.getRowMode(k)!==D)throw new Error(`MUI: The row with id=${k} is not in ${D} mode.`)},[e]),h=a.useCallback((k,D)=>{if(!k.isEditable||e.current.getRowMode(k.id)===ke.Edit)return;const N=e.current.getRowParams(k.id),j=m({},N,{field:k.field,reason:Ft.cellDoubleClick});e.current.publishEvent("rowEditStart",j,D)},[e]),P=a.useCallback(k=>{s.current=k},[]),w=a.useCallback((k,D)=>{k.isEditable&&e.current.getRowMode(k.id)!==ke.View&&(s.current=null,i.current=setTimeout(()=>{var N;if(i.current=null,((N=s.current)==null?void 0:N.id)!==k.id){if(!e.current.getRow(k.id)||e.current.getRowMode(k.id)===ke.View)return;const j=e.current.getRowParams(k.id),z=m({},j,{field:k.field,reason:St.rowFocusOut});e.current.publishEvent("rowEditStop",z,D)}}))},[e]);a.useEffect(()=>()=>{clearTimeout(i.current)},[]);const C=a.useCallback((k,D)=>{if(k.cellMode===ke.Edit){if(D.which===229)return;let N;if(D.key==="Escape")N=St.escapeKeyDown;else if(D.key==="Enter")N=St.enterKeyDown;else if(D.key==="Tab"){const j=Er(e).filter(z=>e.current.getColumn(z).type===Gr?!0:e.current.isCellEditable(e.current.getCellParams(k.id,z)));if(D.shiftKey?k.field===j[0]&&(N=St.shiftTabKeyDown):k.field===j[j.length-1]&&(N=St.tabKeyDown),D.preventDefault(),!N){const z=j.findIndex(Z=>Z===k.field),B=j[D.shiftKey?z-1:z+1];e.current.setCellFocus(k.id,B)}}if(N){const j=m({},e.current.getRowParams(k.id),{reason:N,field:k.field});e.current.publishEvent("rowEditStop",j,D)}}else if(k.isEditable){let N;if(!e.current.unstable_applyPipeProcessors("canStartEditing",!0,{event:D,cellParams:k,editMode:"row"}))return;if(ii(D)||(D.ctrlKey||D.metaKey)&&D.key==="v"?N=Ft.printableKeyDown:D.key==="Enter"?N=Ft.enterKeyDown:(D.key==="Delete"||D.key==="Backspace")&&(N=Ft.deleteKeyDown),N){const z=e.current.getRowParams(k.id),B=m({},z,{field:k.field,reason:N});e.current.publishEvent("rowEditStart",B,D)}}},[e]),E=a.useCallback(k=>{const{id:D,field:N,reason:j}=k,z={id:D,fieldToFocus:N};(j===Ft.printableKeyDown||j===Ft.deleteKeyDown)&&(z.deleteValue=!!N),e.current.startRowEditMode(z)},[e]),T=a.useCallback(k=>{const{id:D,reason:N,field:j}=k;e.current.runPendingEditCellValueMutation(D);let z;N===St.enterKeyDown?z="below":N===St.tabKeyDown?z="right":N===St.shiftTabKeyDown&&(z="left");const B=N==="escapeKeyDown";e.current.stopRowEditMode({id:D,ignoreModifications:B,field:j,cellToFocusAfter:z})},[e]);re(e,"cellDoubleClick",f(h)),re(e,"cellFocusIn",f(P)),re(e,"cellFocusOut",f(w)),re(e,"cellKeyDown",f(C)),re(e,"rowEditStart",f(E)),re(e,"rowEditStop",f(T)),Ee(e,"rowEditStart",t.onRowEditStart),Ee(e,"rowEditStop",t.onRowEditStop);const _=a.useCallback(k=>{if(t.editMode===mt.Cell)return ke.View;const D=We(e.current.state);return D[k]&&Object.keys(D[k]).length>0?ke.Edit:ke.View},[e,t.editMode]),F=pt(k=>{const D=k!==t.rowModesModel;p&&D&&p(k,{}),!(t.rowModesModel&&D)&&(o(k),l.current=k,e.current.publishEvent("rowModesModelChange",k))}),L=a.useCallback((k,D)=>{const N=m({},l.current);D!==null?N[k]=m({},D):delete N[k],F(N)},[F]),I=a.useCallback((k,D)=>{e.current.setState(N=>{const j=m({},N.editRows);return D!==null?j[k]=D:delete j[k],m({},N,{editRows:j})}),e.current.forceUpdate()},[e]),H=a.useCallback((k,D,N)=>{e.current.setState(j=>{const z=m({},j.editRows);return N!==null?z[k]=m({},z[k],{[D]:m({},N)}):(delete z[k][D],Object.keys(z[k]).length===0&&delete z[k]),m({},j,{editRows:z})}),e.current.forceUpdate()},[e]),$=a.useCallback(k=>{const{id:D}=k,N=J(k,cb);g(D,ke.View),L(D,m({mode:ke.Edit},N))},[g,L]),v=pt(k=>{const{id:D,fieldToFocus:N,deleteValue:j,initialValue:z}=k,Z=Pt(e).reduce((Q,ee)=>{if(!e.current.getCellParams(D,ee).isEditable)return Q;let Ce=e.current.getCellValue(D,ee);return N===ee&&(j||z)&&(Ce=j?"":z),Q[ee]={value:Ce,error:!1,isProcessingProps:!1},Q},{});I(D,Z),N&&e.current.setCellFocus(D,N)}),R=a.useCallback(k=>{const{id:D}=k,N=J(k,db);g(D,ke.Edit),L(D,m({mode:ke.View},N))},[g,L]),y=pt(k=>{const{id:D,ignoreModifications:N,field:j,cellToFocusAfter:z="none"}=k;e.current.runPendingEditCellValueMutation(D);const B=()=>{z!=="none"&&j&&e.current.moveFocusToRelativeCell(D,j,z),I(D,null),L(D,null)};if(N){B();return}const Z=We(e.current.state),Q=e.current.getRow(D);if(Object.values(Z[D]).some(ve=>ve.isProcessingProps)){n.current[D].mode=ke.Edit;return}if(Object.values(Z[D]).some(ve=>ve.error)){n.current[D].mode=ke.Edit,L(D,{mode:ke.Edit});return}const Ce=e.current.getRowWithUpdatedValuesFromRowEditing(D);if(u){const ve=se=>{n.current[D].mode=ke.Edit,L(D,{mode:ke.Edit}),d?d(se):pb()};try{Promise.resolve(u(Ce,Q)).then(se=>{e.current.updateRows([se]),B()}).catch(ve)}catch(se){ve(se)}}else e.current.updateRows([Ce]),B()}),S=a.useCallback(k=>{const{id:D,field:N,value:j,debounceMs:z,unstable_skipValueParser:B}=k;b(D,N);const Z=e.current.getColumn(N),Q=e.current.getRow(D);let ee=j;Z.valueParser&&!B&&(ee=Z.valueParser(j,e.current.getCellParams(D,N)));let oe=We(e.current.state),Ce=m({},oe[D][N],{value:ee,changeReason:z?"debouncedSetEditCellValue":"setEditCellValue"});return Z.preProcessEditCellProps||H(D,N,Ce),new Promise(ve=>{const se=[];if(Z.preProcessEditCellProps){const ie=Ce.value!==oe[D][N].value;Ce=m({},Ce,{isProcessingProps:!0}),H(D,N,Ce);const ue=oe[D],we=J(ue,[N].map(Or)),Fe=Promise.resolve(Z.preProcessEditCellProps({id:D,row:Q,props:Ce,hasChanged:ie,otherFieldsProps:we})).then(de=>{if(e.current.getRowMode(D)===ke.View){ve(!1);return}oe=We(e.current.state),de=m({},de,{isProcessingProps:!1}),de.value=Z.preProcessEditCellProps?oe[D][N].value:ee,H(D,N,de)});se.push(Fe)}Object.entries(oe[D]).forEach(([ie,ue])=>{if(ie===N)return;const we=e.current.getColumn(ie);if(!we.preProcessEditCellProps)return;ue=m({},ue,{isProcessingProps:!0}),H(D,ie,ue),oe=We(e.current.state);const Fe=oe[D],de=J(Fe,[ie].map(Or)),U=Promise.resolve(we.preProcessEditCellProps({id:D,row:Q,props:ue,hasChanged:!1,otherFieldsProps:de})).then(q=>{if(e.current.getRowMode(D)===ke.View){ve(!1);return}q=m({},q,{isProcessingProps:!1}),H(D,ie,q)});se.push(U)}),Promise.all(se).then(()=>{e.current.getRowMode(D)===ke.Edit?(oe=We(e.current.state),ve(!oe[D][N].error)):ve(!1)})})},[e,b,H]),O=a.useCallback(k=>{const D=We(e.current.state),N=e.current.getRow(k);if(!D[k])return e.current.getRow(k);let j=m({},N);return Object.entries(D[k]).forEach(([z,B])=>{const Z=e.current.getColumn(z);Z.valueSetter?j=Z.valueSetter({value:B.value,row:j}):j[z]=B.value}),j},[e]),M={getRowMode:_,startRowEditMode:$,stopRowEditMode:R},A={setRowEditingEditCellValue:S,getRowWithUpdatedValuesFromRowEditing:O};me(e,M,"public"),me(e,A,"private"),a.useEffect(()=>{c&&F(c)},[c,F]),ze(()=>{const k=Pr(e),D=n.current;n.current=Fi(r),Object.entries(r).forEach(([N,j])=>{var z,B;const Z=((z=D[N])==null?void 0:z.mode)||ke.View,Q=(B=k[N])!=null?B:N;j.mode===ke.Edit&&Z===ke.View?v(m({id:Q},j)):j.mode===ke.View&&Z===ke.Edit&&y(m({id:Q},j))})},[e,r,v,y])},gb=e=>m({},e,{editRows:{}}),mb=(e,t)=>{ub(e,t),fb(e,t);const r=a.useRef({}),{isCellEditable:o}=t,l=a.useCallback(f=>Fr(f.rowNode)||!f.colDef.editable||!f.colDef.renderEditCell?!1:o?o(f):!0,[o]),n=(f,b,g,h)=>{if(!g){h();return}if(r.current[f]||(r.current[f]={}),r.current[f][b]){const[C]=r.current[f][b];clearTimeout(C)}const P=()=>{const[C]=r.current[f][b];clearTimeout(C),h(),delete r.current[f][b]},w=setTimeout(()=>{h(),delete r.current[f][b]},g);r.current[f][b]=[w,P]};a.useEffect(()=>{const f=r.current;return()=>{Object.entries(f).forEach(([b,g])=>{Object.keys(g).forEach(h=>{const[P]=f[b][h];clearTimeout(P),delete f[b][h]})})}},[]);const i=a.useCallback((f,b)=>{if(r.current[f]){if(!b)Object.keys(r.current[f]).forEach(g=>{const[,h]=r.current[f][g];h()});else if(r.current[f][b]){const[,g]=r.current[f][b];g()}}},[]),s=a.useCallback(f=>{const{id:b,field:g,debounceMs:h}=f;return new Promise(P=>{n(b,g,h,async()=>{const w=t.editMode===mt.Row?e.current.setRowEditingEditCellValue:e.current.setCellEditingEditCellValue;if(e.current.getCellMode(b,g)===ye.Edit){const C=await w(f);P(C)}})})},[e,t.editMode]),u=a.useCallback((f,b)=>t.editMode===mt.Cell?e.current.getRowWithUpdatedValuesFromCellEditing(f,b):e.current.getRowWithUpdatedValuesFromRowEditing(f),[e,t.editMode]),d=a.useCallback((f,b)=>{var g,h;return(g=(h=We(e.current.state)[f])==null?void 0:h[b])!=null?g:null},[e]),c={isCellEditable:l,setEditCellValue:s,getRowWithUpdatedValues:u,unstable_getEditCellMeta:d},p={runPendingEditCellValueMutation:i};me(e,c,"public"),me(e,p,"private")},bb=(e,t,r)=>(r.current.caches.rows=ro({rows:t.rows,getRowId:t.getRowId,loading:t.loading,rowCount:t.rowCount}),m({},e,{rows:qa({apiRef:r,rowCountProp:t.rowCount,loadingProp:t.loading,previousTree:null,previousTreeDepths:null})})),hb=(e,t)=>{const r=je(e,"useGridRows"),o=Zt(e,t),l=a.useRef(Date.now()),n=Yl(),i=a.useCallback(y=>{const S=Ot(e)[y];if(S)return S;const O=e.current.getRowNode(y);return O&&Fr(O)?{[ir]:y}:null},[e]),s=t.getRowId,u=a.useCallback(y=>ir in y?y[ir]:s?s(y):y.id,[s]),d=a.useMemo(()=>o.rows.reduce((y,{id:S},O)=>(y[S]=O,y),{}),[o.rows]),c=a.useCallback(({cache:y,throttle:S})=>{const O=()=>{l.current=Date.now(),e.current.setState(A=>m({},A,{rows:qa({apiRef:e,rowCountProp:t.rowCount,loadingProp:t.loading,previousTree:nt(e),previousTreeDepths:Uo(e)})})),e.current.publishEvent("rowsSet"),e.current.forceUpdate()};if(n.clear(),e.current.caches.rows=y,!S){O();return}const M=t.throttleRowsMs-(Date.now()-l.current);if(M>0){n.start(M,O);return}O()},[t.throttleRowsMs,t.rowCount,t.loading,e,n]),p=a.useCallback(y=>{r.debug(`Updating all rows, new length ${y.length}`);const S=ro({rows:y,getRowId:t.getRowId,loading:t.loading,rowCount:t.rowCount}),O=e.current.caches.rows;S.rowsBeforePartialUpdates=O.rowsBeforePartialUpdates,c({cache:S,throttle:!0})},[r,t.getRowId,t.loading,t.rowCount,c,e]),f=a.useCallback(y=>{if(t.signature===gt.DataGrid&&y.length>1)throw new Error(["MUI: You can't update several rows at once in `apiRef.current.updateRows` on the DataGrid.","You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature."].join(` +`));const S=[];y.forEach(M=>{const A=so(M,t.getRowId,"A row was provided without id when calling updateRows():"),k=e.current.getRowNode(A);if((k==null?void 0:k.type)==="pinnedRow"){const D=e.current.caches.pinnedRows,N=D.idLookup[A];N&&(D.idLookup[A]=m({},N,M))}else S.push(M)});const O=Ld({updates:S,getRowId:t.getRowId,previousCache:e.current.caches.rows});c({cache:O,throttle:!0})},[t.signature,t.getRowId,c,e]),b=a.useCallback(()=>{const y=or(e),S=Ot(e);return new Map(y.map(O=>{var M;return[O,(M=S[O])!=null?M:{}]}))},[e]),g=a.useCallback(()=>Tr(e),[e]),h=a.useCallback(()=>or(e),[e]),P=a.useCallback(y=>d[y],[d]),w=a.useCallback((y,S)=>{const O=e.current.getRowNode(y);if(!O)throw new Error(`MUI: No row with id #${y} found`);if(O.type!=="group")throw new Error("MUI: Only group nodes can be expanded or collapsed");const M=m({},O,{childrenExpanded:S});e.current.setState(A=>m({},A,{rows:m({},A.rows,{tree:m({},A.rows.tree,{[y]:M})})})),e.current.forceUpdate(),e.current.publishEvent("rowExpansionChange",M)},[e]),C=a.useCallback(y=>{var S;return(S=nt(e)[y])!=null?S:null},[e]),E=a.useCallback(({skipAutoGeneratedRows:y=!0,groupId:S,applySorting:O,applyFiltering:M})=>{const A=nt(e);let k;if(O){const D=A[S];if(!D)return[];const N=xo(e);k=[];const j=N.findIndex(z=>z===S)+1;for(let z=j;zD.depth;z+=1){const B=N[z];(!y||!Fr(A[B]))&&k.push(B)}}else k=Dl(A,S,y);if(M){const D=Il(e);k=k.filter(N=>D[N]!==!1)}return k},[e]),T=a.useCallback((y,S)=>{const O=e.current.getRowNode(y);if(!O)throw new Error(`MUI: No row with id #${y} found`);if(O.parent!==Ue)throw new Error("MUI: The row reordering do not support reordering of grouped rows yet");if(O.type!=="leaf")throw new Error("MUI: The row reordering do not support reordering of footer or grouping rows");e.current.setState(M=>{const A=nt(M,e.current.instanceId)[Ue],k=A.children,D=k.findIndex(j=>j===y);if(D===-1||D===S)return M;r.debug(`Moving row ${y} to index ${S}`);const N=[...k];return N.splice(S,0,N.splice(D,1)[0]),m({},M,{rows:m({},M.rows,{tree:m({},M.rows.tree,{[Ue]:m({},A,{children:N})})})})}),e.current.publishEvent("rowsSet")},[e,r]),_=a.useCallback((y,S)=>{if(t.signature===gt.DataGrid&&S.length>1)throw new Error(["MUI: You can't replace rows using `apiRef.current.unstable_replaceRows` on the DataGrid.","You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature."].join(` +`));if(S.length===0)return;if(Dr(e)>1)throw new Error("`apiRef.current.unstable_replaceRows` is not compatible with tree data and row grouping");const M=m({},nt(e)),A=m({},Ot(e)),k=m({},Pr(e)),D=M[Ue],N=[...D.children],j=new Set;for(let B=0;BM[B].type==="leaf");e.current.caches.rows.dataRowIdToModelLookup=A,e.current.caches.rows.dataRowIdToIdLookup=k,e.current.setState(B=>m({},B,{rows:m({},B.rows,{dataRowIdToModelLookup:A,dataRowIdToIdLookup:k,dataRowIds:z,tree:M})})),e.current.publishEvent("rowsSet")},[e,t.signature,t.getRowId]),F={getRow:i,getRowId:u,getRowModels:b,getRowsCount:g,getAllRowIds:h,setRows:p,updateRows:f,getRowNode:C,getRowIndexRelativeToVisibleRows:P,unstable_replaceRows:_},L={setRowIndex:T,setRowChildrenExpansion:w,getRowGroupChildren:E},I=a.useCallback(()=>{r.info("Row grouping pre-processing have changed, regenerating the row tree");let y;e.current.caches.rows.rowsBeforePartialUpdates===t.rows?y=m({},e.current.caches.rows,{updates:{type:"full",rows:or(e)}}):y=ro({rows:t.rows,getRowId:t.getRowId,loading:t.loading,rowCount:t.rowCount}),c({cache:y,throttle:!1})},[r,e,t.rows,t.getRowId,t.loading,t.rowCount,c]),H=a.useCallback(y=>{y==="rowTreeCreation"&&I()},[I]),$=a.useCallback(()=>{e.current.getActiveStrategy("rowTree")!==La(e)&&I()},[e,I]);re(e,"activeStrategyProcessorChange",H),re(e,"strategyAvailabilityChange",$);const v=a.useCallback(()=>{e.current.setState(y=>{const S=e.current.unstable_applyPipeProcessors("hydrateRows",{tree:nt(y,e.current.instanceId),treeDepths:Uo(y,e.current.instanceId),dataRowIds:or(y,e.current.instanceId),dataRowIdToModelLookup:Ot(y,e.current.instanceId),dataRowIdToIdLookup:Pr(y,e.current.instanceId)});return m({},y,{rows:m({},y.rows,S,{totalTopLevelRowCount:Ua({tree:S.tree,rowCountProp:t.rowCount})})})}),e.current.publishEvent("rowsSet"),e.current.forceUpdate()},[e,t.rowCount]);on(e,"hydrateRows",v),me(e,F,"public"),me(e,L,t.signature===gt.DataGrid?"private":"public");const R=a.useRef(!0);a.useEffect(()=>{if(R.current){R.current=!1;return}const y=e.current.caches.rows.rowsBeforePartialUpdates===t.rows,S=e.current.caches.rows.loadingPropBeforePartialUpdates===t.loading,O=e.current.caches.rows.rowCountPropBeforePartialUpdates===t.rowCount;if(y){S||(e.current.setState(M=>m({},M,{rows:m({},M.rows,{loading:t.loading})})),e.current.caches.rows.loadingPropBeforePartialUpdates=t.loading,e.current.forceUpdate()),O||(e.current.setState(M=>m({},M,{rows:m({},M.rows,{totalRowCount:Math.max(t.rowCount||0,M.rows.totalRowCount),totalTopLevelRowCount:Math.max(t.rowCount||0,M.rows.totalTopLevelRowCount)})})),e.current.caches.rows.rowCountPropBeforePartialUpdates=t.rowCount,e.current.forceUpdate());return}r.debug(`Updating all rows, new length ${t.rows.length}`),c({cache:ro({rows:t.rows,getRowId:t.getRowId,loading:t.loading,rowCount:t.rowCount}),throttle:!1})},[t.rows,t.rowCount,t.getRowId,t.loading,r,c,e])},Cb=e=>{const t={[Ue]:m({},Ed(),{children:e})};for(let r=0;r{const r=m({},e),o={};for(let i=0;i!o[i])),r[Ue]=m({},l,{children:n}),{groupingName:Wt,tree:r,treeDepths:{0:n.length},dataRowIds:n}},Sb=e=>e.updates.type==="full"?Cb(e.updates.rows):wb({previousTree:e.previousTree,actions:e.updates.actions}),Ob=e=>{mo(e,Wt,"rowTreeCreation",Sb)},mu=(e,t)=>e==null||Array.isArray(e)?e:t&&t[0]===e?t:[e],Pb=(e,t)=>{var r;return m({},e,{rowSelection:t.rowSelection?(r=mu(t.rowSelectionModel))!=null?r:[]:[]})},xb=(e,t)=>{const r=je(e,"useGridSelection"),o=S=>(...O)=>{t.rowSelection&&S(...O)},l=a.useMemo(()=>mu(t.rowSelectionModel,rt(e.current.state)),[e,t.rowSelectionModel]),n=a.useRef(null);e.current.registerControlState({stateId:"rowSelection",propModel:l,propOnChange:t.onRowSelectionModelChange,stateSelector:rt,changeEvent:"rowSelectionChange"});const{checkboxSelection:i,disableMultipleRowSelection:s,disableRowSelectionOnClick:u,isRowSelectable:d}=t,c=!s||i,p=Zt(e,t),f=a.useCallback(S=>{var O;let M=S;const A=(O=n.current)!=null?O:S,k=e.current.isRowSelected(S);if(k){const D=ar(e),N=D.findIndex(z=>z===A),j=D.findIndex(z=>z===M);if(N===j)return;N>j?M=D[j+1]:M=D[j-1]}n.current=S,e.current.selectRowRange({startId:A,endId:M},!k)},[e]),b=a.useCallback(S=>{if(t.signature===gt.DataGrid&&!t.checkboxSelection&&Array.isArray(S)&&S.length>1)throw new Error(["MUI: `rowSelectionModel` can only contain 1 item in DataGrid.","You need to upgrade to DataGridPro or DataGridPremium component to unlock multiple selection."].join(` +`));rt(e.current.state)!==S&&(r.debug("Setting selection model"),e.current.setState(M=>m({},M,{rowSelection:t.rowSelection?S:[]})),e.current.forceUpdate())},[e,r,t.rowSelection,t.signature,t.checkboxSelection]),g=a.useCallback(S=>rt(e.current.state).includes(S),[e]),h=a.useCallback(S=>{if(d&&!d(e.current.getRowParams(S)))return!1;const O=e.current.getRowNode(S);return!((O==null?void 0:O.type)==="footer"||(O==null?void 0:O.type)==="pinnedRow")},[e,d]),P=a.useCallback(()=>$i(e),[e]),w=a.useCallback((S,O=!0,M=!1)=>{if(e.current.isRowSelectable(S))if(n.current=S,M)r.debug(`Setting selection for row ${S}`),e.current.setRowSelectionModel(O?[S]:[]);else{r.debug(`Toggling selection for row ${S}`);const k=rt(e.current.state).filter(N=>N!==S);O&&k.push(S),(k.length<2||c)&&e.current.setRowSelectionModel(k)}},[e,r,c]),C=a.useCallback((S,O=!0,M=!1)=>{r.debug("Setting selection for several rows");const A=S.filter(N=>e.current.isRowSelectable(N));let k;if(M)k=O?A:[];else{const N=m({},yr(e));A.forEach(j=>{O?N[j]=j:delete N[j]}),k=Object.values(N)}(k.length<2||c)&&e.current.setRowSelectionModel(k)},[e,r,c]),E=a.useCallback(({startId:S,endId:O},M=!0,A=!1)=>{if(!e.current.getRow(S)||!e.current.getRow(O))return;r.debug(`Expanding selection from row ${S} to row ${O}`);const k=ar(e),D=k.indexOf(S),N=k.indexOf(O),[j,z]=D>N?[N,D]:[D,N],B=k.slice(j,z+1);e.current.selectRows(B,M,A)},[e,r]),T={selectRow:w,setRowSelectionModel:b,getSelectedRows:P,isRowSelected:g,isRowSelectable:h},_={selectRows:C,selectRowRange:E};me(e,T,"public"),me(e,_,t.signature===gt.DataGrid?"private":"public");const F=a.useCallback(()=>{if(t.keepNonExistentRowsSelected)return;const S=rt(e.current.state),O=Ot(e),M=m({},yr(e));let A=!1;S.forEach(k=>{O[k]||(delete M[k],A=!0)}),A&&e.current.setRowSelectionModel(Object.values(M))},[e,t.keepNonExistentRowsSelected]),L=a.useCallback((S,O)=>{const M=O.metaKey||O.ctrlKey,A=!i&&!M&&!dp(O),k=!c||A,D=e.current.isRowSelected(S);k?e.current.selectRow(S,A?!0:!D,!0):e.current.selectRow(S,!D,!1)},[e,c,i]),I=a.useCallback((S,O)=>{var M;if(u)return;const A=(M=O.target.closest(`.${V.cell}`))==null?void 0:M.getAttribute("data-field");if(A===Jt.field||A===tn)return;if(A){const D=e.current.getColumn(A);if((D==null?void 0:D.type)===Gr)return}e.current.getRowNode(S.id).type!=="pinnedRow"&&(O.shiftKey&&(c||i)?f(S.id):L(S.id,O))},[u,c,i,e,f,L]),H=a.useCallback((S,O)=>{if(c&&O.shiftKey){var M;(M=window.getSelection())==null||M.removeAllRanges()}},[c]),$=a.useCallback((S,O)=>{O.nativeEvent.shiftKey?f(S.id):e.current.selectRow(S.id,S.value)},[e,f]),v=a.useCallback(S=>{const M=t.checkboxSelectionVisibleOnly&&t.pagination?Gl(e):ar(e);e.current.selectRows(M,S.value)},[e,t.checkboxSelectionVisibleOnly,t.pagination]),R=a.useCallback((S,O)=>{if(e.current.getCellMode(S.id,S.field)!==ye.Edit&&!Hr(O)){if(po(O.key)&&O.shiftKey){const M=Ze(e);if(M&&M.id!==S.id){O.preventDefault();const A=e.current.isRowSelected(M.id);if(!c){e.current.selectRow(M.id,!A,!0);return}const k=e.current.getRowIndexRelativeToVisibleRows(M.id),D=e.current.getRowIndexRelativeToVisibleRows(S.id);let N,j;k>D?A?(N=D,j=k-1):(N=D,j=k):A?(N=k+1,j=D):(N=k,j=D);const z=p.rows.slice(N,j+1).map(B=>B.id);e.current.selectRows(z,!A);return}}if(O.key===" "&&O.shiftKey){O.preventDefault(),L(S.id,O);return}O.key==="a"&&(O.ctrlKey||O.metaKey)&&(O.preventDefault(),C(e.current.getAllRowIds(),!0))}},[e,L,C,p.rows,c]);re(e,"sortedRowsSet",o(F)),re(e,"rowClick",o(I)),re(e,"rowSelectionCheckboxChange",o($)),re(e,"headerSelectionCheckboxChange",v),re(e,"cellMouseDown",o(H)),re(e,"cellKeyDown",o(R)),a.useEffect(()=>{l!==void 0&&e.current.setRowSelectionModel(l)},[e,l,t.rowSelection]),a.useEffect(()=>{t.rowSelection||e.current.setRowSelectionModel([])},[e,t.rowSelection]);const y=l!=null;a.useEffect(()=>{if(y||!t.rowSelection)return;const S=rt(e.current.state);if(h){const O=S.filter(M=>h(M));O.length{if(!t.rowSelection||y)return;const S=rt(e.current.state);!c&&S.length>1&&e.current.setRowSelectionModel([])},[e,c,i,y,t.rowSelection])},sn={noRowsLabel:"No rows",noResultsOverlayLabel:"No results found.",toolbarDensity:"Density",toolbarDensityLabel:"Density",toolbarDensityCompact:"Compact",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Comfortable",toolbarColumns:"Columns",toolbarColumnsLabel:"Select columns",toolbarFilters:"Filters",toolbarFiltersLabel:"Show filters",toolbarFiltersTooltipHide:"Hide filters",toolbarFiltersTooltipShow:"Show filters",toolbarFiltersTooltipActive:e=>e!==1?`${e} active filters`:`${e} active filter`,toolbarQuickFilterPlaceholder:"Search…",toolbarQuickFilterLabel:"Search",toolbarQuickFilterDeleteIconLabel:"Clear",toolbarExport:"Export",toolbarExportLabel:"Export",toolbarExportCSV:"Download as CSV",toolbarExportPrint:"Print",toolbarExportExcel:"Download as Excel",columnsPanelTextFieldLabel:"Find column",columnsPanelTextFieldPlaceholder:"Column title",columnsPanelDragIconLabel:"Reorder column",columnsPanelShowAllButton:"Show all",columnsPanelHideAllButton:"Hide all",filterPanelAddFilter:"Add filter",filterPanelRemoveAll:"Remove all",filterPanelDeleteIconLabel:"Delete",filterPanelLogicOperator:"Logic operator",filterPanelOperator:"Operator",filterPanelOperatorAnd:"And",filterPanelOperatorOr:"Or",filterPanelColumns:"Columns",filterPanelInputLabel:"Value",filterPanelInputPlaceholder:"Filter value",filterOperatorContains:"contains",filterOperatorEquals:"equals",filterOperatorStartsWith:"starts with",filterOperatorEndsWith:"ends with",filterOperatorIs:"is",filterOperatorNot:"is not",filterOperatorAfter:"is after",filterOperatorOnOrAfter:"is on or after",filterOperatorBefore:"is before",filterOperatorOnOrBefore:"is on or before",filterOperatorIsEmpty:"is empty",filterOperatorIsNotEmpty:"is not empty",filterOperatorIsAnyOf:"is any of","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Contains",headerFilterOperatorEquals:"Equals",headerFilterOperatorStartsWith:"Starts with",headerFilterOperatorEndsWith:"Ends with",headerFilterOperatorIs:"Is",headerFilterOperatorNot:"Is not",headerFilterOperatorAfter:"Is after",headerFilterOperatorOnOrAfter:"Is on or after",headerFilterOperatorBefore:"Is before",headerFilterOperatorOnOrBefore:"Is on or before",headerFilterOperatorIsEmpty:"Is empty",headerFilterOperatorIsNotEmpty:"Is not empty",headerFilterOperatorIsAnyOf:"Is any of","headerFilterOperator=":"Equals","headerFilterOperator!=":"Not equals","headerFilterOperator>":"Greater than","headerFilterOperator>=":"Greater than or equal to","headerFilterOperator<":"Less than","headerFilterOperator<=":"Less than or equal to",filterValueAny:"any",filterValueTrue:"true",filterValueFalse:"false",columnMenuLabel:"Menu",columnMenuShowColumns:"Show columns",columnMenuManageColumns:"Manage columns",columnMenuFilter:"Filter",columnMenuHideColumn:"Hide column",columnMenuUnsort:"Unsort",columnMenuSortAsc:"Sort by ASC",columnMenuSortDesc:"Sort by DESC",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} active filters`:`${e} active filter`,columnHeaderFiltersLabel:"Show filters",columnHeaderSortIconLabel:"Sort",footerRowSelected:e=>e!==1?`${e.toLocaleString()} rows selected`:`${e.toLocaleString()} row selected`,footerTotalRows:"Total Rows:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} of ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Checkbox selection",checkboxSelectionSelectAllRows:"Select all rows",checkboxSelectionUnselectAllRows:"Unselect all rows",checkboxSelectionSelectRow:"Select row",checkboxSelectionUnselectRow:"Unselect row",booleanCellTrueLabel:"yes",booleanCellFalseLabel:"no",actionsCellMore:"more",pinToLeft:"Pin to left",pinToRight:"Pin to right",unpin:"Unpin",treeDataGroupingHeaderName:"Group",treeDataExpand:"see children",treeDataCollapse:"hide children",groupingColumnHeaderName:"Group",groupColumn:e=>`Group by ${e}`,unGroupColumn:e=>`Stop grouping by ${e}`,detailPanelToggle:"Detail panel toggle",expandDetailPanel:"Expand",collapseDetailPanel:"Collapse",MuiTablePagination:{},rowReorderingHeaderName:"Row reordering",aggregationMenuItemHeader:"Aggregation",aggregationFunctionLabelSum:"sum",aggregationFunctionLabelAvg:"avg",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"max",aggregationFunctionLabelSize:"size"},vb=e=>{const{classes:t}=e;return a.useMemo(()=>he({cellCheckbox:["cellCheckbox"],columnHeaderCheckbox:["columnHeaderCheckbox"]},be,t),[t])},Fb=(e,t)=>{const r={classes:t.classes},o=vb(r),l=a.useCallback(n=>{const i=m({},Jt,{cellClassName:o.cellCheckbox,headerClassName:o.columnHeaderCheckbox,headerName:e.current.getLocaleText("checkboxSelectionHeaderName")}),s=t.checkboxSelection,u=n.lookup[yt]!=null;return s&&!u?(n.lookup[yt]=i,n.orderedFields=[yt,...n.orderedFields]):!s&&u?(delete n.lookup[yt],n.orderedFields=n.orderedFields.filter(d=>d!==yt)):s&&u&&(n.lookup[yt]=m({},i,n.lookup[yt])),n},[e,o,t.checkboxSelection]);Ae(e,"hydrateColumns",l)},yb=(e,t)=>{var r,o,l;const n=(r=(o=t.sortModel)!=null?o:(l=t.initialState)==null||(l=l.sorting)==null?void 0:l.sortModel)!=null?r:[];return m({},e,{sorting:{sortModel:Ai(n,t.disableMultipleColumnsSorting),sortedRows:[]}})},Ib=(e,t)=>{var r;const o=je(e,"useGridSorting");e.current.registerControlState({stateId:"sortModel",propModel:t.sortModel,propOnChange:t.onSortModelChange,stateSelector:tt,changeEvent:"sortModelChange"});const l=a.useCallback((F,L)=>{const I=tt(e),H=I.findIndex(v=>v.field===F);let $=[...I];return H>-1?L?$.splice(H,1,L):$.splice(H,1):$=[...I,L],$},[e]),n=a.useCallback((F,L)=>{var I;const $=tt(e).find(R=>R.field===F.field);if($){var v;const R=L===void 0?zn((v=F.sortingOrder)!=null?v:t.sortingOrder,$.sort):L;return R==null?void 0:m({},$,{sort:R})}return{field:F.field,sort:L===void 0?zn((I=F.sortingOrder)!=null?I:t.sortingOrder):L}},[e,t.sortingOrder]),i=a.useCallback((F,L)=>L==null||L.sortable===!1?F:(L.sortingOrder||t.sortingOrder).some(H=>!!H)?[...F,"columnMenuSortItem"]:F,[t.sortingOrder]),s=a.useCallback(()=>{e.current.setState(F=>{if(t.sortingMode==="server")return o.debug("Skipping sorting rows as sortingMode = server"),m({},F,{sorting:m({},F.sorting,{sortedRows:Dl(nt(e),Ue,!1)})});const L=tt(F,e.current.instanceId),I=Sf(L,e),H=e.current.applyStrategyProcessor("sorting",{sortRowList:I});return m({},F,{sorting:m({},F.sorting,{sortedRows:H})})}),e.current.publishEvent("sortedRowsSet"),e.current.forceUpdate()},[e,o,t.sortingMode]),u=a.useCallback(F=>{tt(e)!==F&&(o.debug("Setting sort model"),e.current.setState(Gn(F,t.disableMultipleColumnsSorting)),e.current.forceUpdate(),e.current.applySorting())},[e,o,t.disableMultipleColumnsSorting]),d=a.useCallback((F,L,I)=>{if(!F.sortable)return;const H=n(F,L);let $;!I||t.disableMultipleColumnsSorting?$=H?[H]:[]:$=l(F.field,H),e.current.setSortModel($)},[e,l,n,t.disableMultipleColumnsSorting]),c=a.useCallback(()=>tt(e),[e]),p=a.useCallback(()=>vo(e).map(L=>L.model),[e]),f=a.useCallback(()=>xo(e),[e]),b=a.useCallback(F=>e.current.getSortedRowIds()[F],[e]);me(e,{getSortModel:c,getSortedRows:p,getSortedRowIds:f,getRowIdFromRowIndex:b,setSortModel:u,sortColumn:d,applySorting:s},"public");const h=a.useCallback((F,L)=>{var I;const H=tt(e);return!L.exportOnlyDirtyModels||t.sortModel!=null||((I=t.initialState)==null||(I=I.sorting)==null?void 0:I.sortModel)!=null||H.length>0?m({},F,{sorting:{sortModel:H}}):F},[e,t.sortModel,(r=t.initialState)==null||(r=r.sorting)==null?void 0:r.sortModel]),P=a.useCallback((F,L)=>{var I;const H=(I=L.stateToRestore.sorting)==null?void 0:I.sortModel;return H==null?F:(e.current.setState(Gn(H,t.disableMultipleColumnsSorting)),m({},F,{callbacks:[...F.callbacks,e.current.applySorting]}))},[e,t.disableMultipleColumnsSorting]),w=a.useCallback(F=>{const L=nt(e),I=L[Ue],H=F.sortRowList?F.sortRowList(I.children.map($=>L[$])):[...I.children];return I.footerId!=null&&H.push(I.footerId),H},[e]);Ae(e,"exportState",h),Ae(e,"restoreState",P),mo(e,Wt,"sorting",w);const C=a.useCallback(({colDef:F},L)=>{const I=L.shiftKey||L.metaKey||L.ctrlKey;d(F,void 0,I)},[d]),E=a.useCallback(({colDef:F},L)=>{ip(L.key)&&!L.ctrlKey&&!L.metaKey&&d(F,void 0,L.shiftKey)},[d]),T=a.useCallback(()=>{const F=tt(e),L=Vt(e);if(F.length>0){const I=F.filter(H=>L[H.field]);I.length{F==="sorting"&&e.current.applySorting()},[e]);Ae(e,"columnMenu",i),re(e,"columnHeaderClick",C),re(e,"columnHeaderKeyDown",E),re(e,"rowsSet",e.current.applySorting),re(e,"columnsChange",T),re(e,"activeStrategyProcessorChange",_),mr(()=>{e.current.applySorting()}),ze(()=>{t.sortModel!==void 0&&e.current.setSortModel(t.sortModel)},[e,t.sortModel])};function oa(e){const{clientHeight:t,scrollTop:r,offsetHeight:o,offsetTop:l}=e,n=l+o;if(o>t)return l;if(n-t>r)return n-t;if(l{const r=Mr(),o=je(e,"useGridScroll"),l=e.current.columnHeadersElementRef,n=e.current.virtualScrollerRef,i=K(e,Mt),s=a.useCallback(p=>{const f=Tr(e),b=He(e);if(!(p.rowIndex==null)&&f===0||b.length===0)return!1;o.debug(`Scrolling to cell at row ${p.rowIndex}, col: ${p.colIndex} `);let h={};if(p.colIndex!=null){const E=qt(e);let T;if(typeof p.rowIndex<"u"){var P;const _=(P=i[p.rowIndex])==null?void 0:P.id,F=e.current.unstable_getCellColSpanInfo(_,p.colIndex);F&&!F.spannedByColSpan&&(T=F.cellProps.width)}typeof T>"u"&&(T=b[p.colIndex].computedWidth),h.left=oa({clientHeight:n.current.clientWidth,scrollTop:Math.abs(n.current.scrollLeft),offsetHeight:T,offsetTop:E[p.colIndex]})}if(p.rowIndex!=null){var w,C;const E=dr(e.current.state),T=Ei(e),_=Li(e),F=t.pagination?p.rowIndex-T*_:p.rowIndex,L=E.positions[F+1]?E.positions[F+1]-E.positions[F]:E.currentPageTotalHeight-E.positions[F],I=((w=n.current.querySelector(`.${V["pinnedRows--top"]}`))==null?void 0:w.clientHeight)||0,H=((C=n.current.querySelector(`.${V["pinnedRows--bottom"]}`))==null?void 0:C.clientHeight)||0;h.top=oa({clientHeight:n.current.clientHeight-I-H,scrollTop:n.current.scrollTop,offsetHeight:L,offsetTop:E.positions[F]})}return h=e.current.unstable_applyPipeProcessors("scrollToIndexes",h,p),typeof h.left!==void 0||typeof h.top!==void 0?(e.current.scroll(h),!0):!1},[o,e,n,t.pagination,i]),u=a.useCallback(p=>{if(n.current&&p.left!=null&&l.current){const f=r.direction==="rtl"?-1:1;l.current.scrollLeft=p.left,n.current.scrollLeft=f*p.left,o.debug(`Scrolling left: ${p.left}`)}n.current&&p.top!=null&&(n.current.scrollTop=p.top,o.debug(`Scrolling top: ${p.top}`)),o.debug("Scrolling, updating container, and viewport")},[n,r.direction,l,o]),d=a.useCallback(()=>n!=null&&n.current?{top:n.current.scrollTop,left:n.current.scrollLeft}:{top:0,left:0},[n]);me(e,{scroll:u,scrollToIndexes:s,getScrollPosition:d},"public")};function kb(e,t){Ee(e,"columnHeaderClick",t.onColumnHeaderClick),Ee(e,"columnHeaderDoubleClick",t.onColumnHeaderDoubleClick),Ee(e,"columnHeaderOver",t.onColumnHeaderOver),Ee(e,"columnHeaderOut",t.onColumnHeaderOut),Ee(e,"columnHeaderEnter",t.onColumnHeaderEnter),Ee(e,"columnHeaderLeave",t.onColumnHeaderLeave),Ee(e,"cellClick",t.onCellClick),Ee(e,"cellDoubleClick",t.onCellDoubleClick),Ee(e,"cellKeyDown",t.onCellKeyDown),Ee(e,"preferencePanelClose",t.onPreferencePanelClose),Ee(e,"preferencePanelOpen",t.onPreferencePanelOpen),Ee(e,"menuOpen",t.onMenuOpen),Ee(e,"menuClose",t.onMenuClose),Ee(e,"rowDoubleClick",t.onRowDoubleClick),Ee(e,"rowClick",t.onRowClick),Ee(e,"stateChange",t.onStateChange)}const Eb=({content:e,container:t,scrollBarSize:r})=>{const o=e.width>t.width,l=e.height>t.height;let n=!1,i=!1;return(o||l)&&(n=o,i=e.height+(n?r:0)>t.height,i&&(n=e.width+r>t.width)),{hasScrollX:n,hasScrollY:i}};function Lb(e,t){const r=je(e,"useResizeContainer"),o=a.useRef(!1),l=a.useRef(null),n=a.useRef(null),i=K(e,dr),s=K(e,Qt),u=Math.floor(t.rowHeight*s),d=an(e,t.columnHeaderHeight),c=a.useCallback(()=>{var L;const I=(L=e.current.rootElementRef)==null?void 0:L.current,H=Po(e),$=Wa(e);if(!l.current)return;let v;if(t.scrollbarSize!=null)v=t.scrollbarSize;else if(!H||!I)v=0;else{const D=Ir(I).createElement("div");D.style.width="99px",D.style.height="99px",D.style.position="absolute",D.style.overflow="scroll",D.className="scrollDiv",I.appendChild(D),v=D.offsetWidth-D.clientWidth,I.removeChild(D)}let R,y,S;if(t.autoHeight)S=!1,y=Math.round(H)>Math.round(l.current.width),R={width:l.current.width,height:i.currentPageTotalHeight+(y?v:0)};else{R={width:l.current.width,height:Math.max(l.current.height-d,0)};const k=Eb({content:{width:Math.round(H),height:i.currentPageTotalHeight},container:{width:Math.round(R.width),height:R.height-$.top-$.bottom},scrollBarSize:v});S=k.hasScrollY,y=k.hasScrollX}const O={width:R.width-(S?v:0),height:R.height-(y?v:0)},M={viewportOuterSize:R,viewportInnerSize:O,hasScrollX:y,hasScrollY:S,scrollBarSize:v},A=n.current;n.current=M,(M.viewportInnerSize.width!==(A==null?void 0:A.viewportInnerSize.width)||M.viewportInnerSize.height!==(A==null?void 0:A.viewportInnerSize.height))&&e.current.publishEvent("viewportInnerSizeChange",M.viewportInnerSize)},[e,t.scrollbarSize,t.autoHeight,i.currentPageTotalHeight,d]),[p,f]=a.useState(),b=a.useMemo(()=>bl(f,60),[]),g=a.useRef();ze(()=>{p&&(c(),e.current.publishEvent("debouncedResize",l.current))},[e,p,c]);const h=a.useCallback(()=>{e.current.computeSizeAndPublishResizeEvent()},[e]),P=a.useCallback(()=>n.current,[]),w=a.useCallback(()=>{const L=e.current.getRootDimensions();if(!L)return 0;const I=fo(e,{pagination:t.pagination,paginationMode:t.paginationMode});if(t.getRowHeight){const $=e.current.getRenderContext(),v=$.lastRowIndex-$.firstRowIndex;return Math.min(v-1,I.rows.length)}const H=Math.floor(L.viewportInnerSize.height/u);return Math.min(H,I.rows.length)},[e,t.pagination,t.paginationMode,t.getRowHeight,u]),C=a.useCallback(()=>{var L,I,H;const $=(L=e.current.mainElementRef)==null?void 0:L.current;if(!$)return;const R=Ku($).getComputedStyle($),y=parseFloat(R.height)||0,S=parseFloat(R.width)||0,O=y!==((I=g.current)==null?void 0:I.height),M=S!==((H=g.current)==null?void 0:H.width);if(!g.current||O||M){const A={width:S,height:y};e.current.publishEvent("resize",A),g.current=A}},[e]),E={resize:h,getRootDimensions:P},T={getViewportPageSize:w,updateGridDimensionsRef:c,computeSizeAndPublishResizeEvent:C};me(e,E,"public"),me(e,T,"private");const _=a.useRef(!0),F=a.useCallback(L=>{l.current=L;const I=/jsdom/.test(window.navigator.userAgent);if(L.height===0&&!o.current&&!t.autoHeight&&!I&&(r.error(["The parent DOM element of the data grid has an empty height.","Please make sure that this element has an intrinsic height.","The grid displays with a height of 0px.","","More details: https://mui.com/r/x-data-grid-no-dimensions."].join(` +`)),o.current=!0),L.width===0&&!o.current&&!I&&(r.error(["The parent DOM element of the data grid has an empty width.","Please make sure that this element has an intrinsic width.","The grid displays with a width of 0px.","","More details: https://mui.com/r/x-data-grid-no-dimensions."].join(` +`)),o.current=!0),_.current){f(L),_.current=!1;return}b(L)},[t.autoHeight,b,r]);ze(()=>c(),[c]),Ee(e,"sortedRowsSet",c),Ee(e,"paginationModelChange",c),Ee(e,"columnsChange",c),re(e,"resize",F),Ee(e,"debouncedResize",t.onResize)}const Tb=["style"],Db=["style"];function sr(e,t,r=0,o=t.length){if(t.length<=0)return-1;if(r>=o)return r;const l=r+Math.floor((o-r)/2),n=t[l];return e<=n?sr(e,t,r,l):sr(e,t,l+1,o)}function $b(e,t,r){let o=1;for(;r[cr(e-r,o,l),cr(t+r,o,l)],bu=(e,t)=>e===t?!0:e.firstRowIndex===t.firstRowIndex&&e.lastRowIndex===t.lastRowIndex&&e.firstColumnIndex===t.firstColumnIndex&&e.lastColumnIndex===t.lastColumnIndex,Ab={maxSize:3},Rb=e=>{var t,r;const o=_t(),l=Y(),n=K(o,He),i=K(o,Gi),s=K(o,Wl),{ref:u,onRenderZonePositioning:d,renderZoneMinColumnIndex:c=0,renderZoneMaxColumnIndex:p=n.length,getRowProps:f}=e,b=Mr(),g=K(o,qt),h=K(o,Po),P=K(o,Ze),w=K(o,vr),C=K(o,dr),E=K(o,yr),T=Zt(o,l),_=a.useRef(null),F=a.useRef(null),L=xt(u,F),[I,H]=a.useState(null),$=a.useRef(I),v=a.useRef({top:0,left:0}),[R,y]=a.useState({width:null,height:null}),S=a.useRef(h),[O,M]=a.useState(null),A=a.useRef(Object.create(null)),k=a.useRef(),D=a.useRef(),N=a.useRef(Oo((U,q,ae,fe,ge,Se)=>{let ne;const W=U.slice(q,ae);return Se>-1&&(q>Se&&Se>=fe||aeP!==null?n.findIndex(U=>U.field===P.field):-1,[P,n]),z=a.useCallback(U=>{var q,ae;const fe=o.current.getLastMeasuredRowIndex();let ge=fe===1/0;(q=T.range)!=null&&q.lastRowIndex&&!ge&&(ge=fe>=T.range.lastRowIndex);const Se=cr(fe-(((ae=T.range)==null?void 0:ae.firstRowIndex)||0),0,C.positions.length);return ge||C.positions[Se]>=U?sr(U,C.positions):$b(U,C.positions,Se)},[o,(t=T.range)==null?void 0:t.firstRowIndex,(r=T.range)==null?void 0:r.lastRowIndex,C.positions]),B=a.useCallback(()=>{if(!i)return{firstRowIndex:0,lastRowIndex:T.rows.length,firstColumnIndex:0,lastColumnIndex:n.length};const{top:U,left:q}=v.current,ae=Math.min(z(U),C.positions.length-1),fe=l.autoHeight?ae+T.rows.length:z(U+R.height);let ge=0,Se=g.length;if(s){let ne=!1;const[W,te]=Et({firstIndex:ae,lastIndex:fe,minFirstIndex:0,maxLastIndex:T.rows.length,buffer:l.rowBuffer});for(let le=W;le{i?(F.current.scrollLeft=0,F.current.scrollTop=0):_.current.style.transform="translate3d(0px, 0px, 0px)"},[i]),ze(()=>{y({width:F.current.clientWidth,height:F.current.clientHeight})},[C.currentPageTotalHeight]);const Z=a.useCallback(()=>{F.current&&y({width:F.current.clientWidth,height:F.current.clientHeight})},[]);re(o,"debouncedResize",Z);const Q=a.useCallback(U=>{const[q,ae]=Et({firstIndex:U.firstRowIndex,lastIndex:U.lastRowIndex,minFirstIndex:0,maxLastIndex:T.rows.length,buffer:l.rowBuffer}),[fe]=Et({firstIndex:U.firstColumnIndex,lastIndex:U.lastColumnIndex,minFirstIndex:c,maxLastIndex:p,buffer:l.columnBuffer}),ge=cl({firstColumnToRender:fe,apiRef:o,firstRowToRender:q,lastRowToRender:ae,visibleRows:T.rows}),Se=b.direction==="ltr"?1:-1,ne=dr(o.current.state).positions[q],W=Se*qt(o)[ge];_.current.style.transform=`translate3d(${W}px, ${ne}px, 0px)`,typeof d=="function"&&d({top:ne,left:W})},[o,T.rows,d,c,p,l.columnBuffer,l.rowBuffer,b.direction]),ee=a.useCallback(()=>$.current,[]),oe=a.useCallback(U=>{if($.current&&bu(U,$.current)){Q(U);return}H(U),Q(U);const[q,ae]=Et({firstIndex:U.firstRowIndex,lastIndex:U.lastRowIndex,minFirstIndex:0,maxLastIndex:T.rows.length,buffer:l.rowBuffer});o.current.publishEvent("renderedRowsIntervalChange",{firstRowToRender:q,lastRowToRender:ae}),$.current=U},[o,H,$,T.rows.length,l.rowBuffer,Q]);ze(()=>{if(R.width==null)return;const U=B();oe(U);const{top:q,left:ae}=v.current,fe={top:q,left:ae,renderContext:U};o.current.publishEvent("scrollPositionChange",fe)},[o,B,R.width,oe]);const Ce=pt(U=>{const{scrollTop:q,scrollLeft:ae}=U.currentTarget;if(v.current.top=q,v.current.left=ae,!$.current||q<0||b.direction==="ltr"&&ae<0||b.direction==="rtl"&&ae>0)return;const fe=i?B():$.current,ge=Math.abs(fe.firstRowIndex-$.current.firstRowIndex),Se=Math.abs(fe.lastRowIndex-$.current.lastRowIndex),ne=Math.abs(fe.firstColumnIndex-$.current.firstColumnIndex),W=Math.abs(fe.lastColumnIndex-$.current.lastColumnIndex),te=ge>=l.rowThreshold||Se>=l.rowThreshold||ne>=l.columnThreshold||W>=l.columnThreshold||S.current!==h;o.current.publishEvent("scrollPositionChange",{top:q,left:ae,renderContext:te?fe:$.current},U),te&&(wa.flushSync(()=>{oe(fe)}),S.current=h)}),ve=pt(U=>{o.current.publishEvent("virtualScrollerWheel",{},U)}),se=pt(U=>{o.current.publishEvent("virtualScrollerTouchMove",{},U)}),ie=a.useMemo(()=>P!==null?T.rows.findIndex(U=>U.id===P.id):-1,[P,T.rows]);re(o,"rowMouseOver",(U,q)=>{var ae;q.currentTarget.contains(q.relatedTarget)||M((ae=U.id)!=null?ae:null)}),re(o,"rowMouseOut",(U,q)=>{q.currentTarget.contains(q.relatedTarget)||M(null)});const ue=(U={renderContext:I})=>{var q;const{onRowRender:ae,renderContext:fe,minFirstColumn:ge=c,maxLastColumn:Se=p,availableSpace:ne=R.width,rowIndexOffset:W=0,position:te="center"}=U;if(!fe||ne==null)return null;const le=i?l.rowBuffer:0,Oe=i?l.columnBuffer:0,[Le,Je]=Et({firstIndex:fe.firstRowIndex,lastIndex:fe.lastRowIndex,minFirstIndex:0,maxLastIndex:T.rows.length,buffer:le}),Ye=[];if(U.rows)U.rows.forEach(Ne=>{Ye.push(Ne),o.current.calculateColSpan({rowId:Ne.id,minFirstColumn:ge,maxLastColumn:Se,columns:n})});else{if(!T.range)return null;for(let Ne=Le;Ne-1){const Ne=T.rows[ie];(Le>ie||JeLe?Ye.push(Ne):Ye.unshift(Ne),o.current.calculateColSpan({rowId:Ne.id,minFirstColumn:ge,maxLastColumn:Se,columns:n}))}const[Lo,Be]=Et({firstIndex:fe.firstColumnIndex,lastIndex:fe.lastColumnIndex,minFirstIndex:ge,maxLastIndex:Se,buffer:Oe}),Ve=cl({firstColumnToRender:Lo,apiRef:o,firstRowToRender:Le,lastRowToRender:Je,visibleRows:T.rows});let Gt=!1;(Ve>j||Be=R.width,Fe=a.useMemo(()=>{const U=Math.max(C.currentPageTotalHeight,1);let q=!1;F!=null&&F.current&&U<=(F==null?void 0:F.current.clientHeight)&&(q=!0);const ae={width:we?h:"auto",height:U,minHeight:q?"100%":"auto"};return l.autoHeight&&T.rows.length===0&&(ae.height=Ka(o,l.rowHeight)),ae},[o,F,h,C.currentPageTotalHeight,we,l.autoHeight,l.rowHeight,T.rows.length]);a.useEffect(()=>{o.current.publishEvent("virtualScrollerContentSizeChange")},[o,Fe]);const de=a.useMemo(()=>{const U={};return we||(U.overflowX="hidden"),l.autoHeight&&(U.overflowY="hidden"),U},[we,l.autoHeight]);return o.current.register("private",{getRenderContext:ee}),{renderContext:I,updateRenderZonePosition:Q,getRows:ue,getRootProps:(U={})=>m({ref:L,onScroll:Ce,onWheel:ve,onTouchMove:se},U,{style:U.style?m({},U.style,de):de,role:"presentation"}),getContentProps:({style:U}={})=>({style:U?m({},U,Fe):Fe,role:"presentation"}),getRenderZoneProps:()=>({ref:_,role:"rowgroup"})}},Hb=e=>{const{classes:t,headerAlign:r,isDragging:o,showColumnBorder:l,groupId:n}=e;return he({root:["columnHeader",r==="left"&&"columnHeader--alignLeft",r==="center"&&"columnHeader--alignCenter",r==="right"&&"columnHeader--alignRight",o&&"columnHeader--moving",l&&"columnHeader--showColumnBorder",l&&"columnHeader--withRightBorder","withBorderColor",n===null?"columnHeader--emptyGroup":"columnHeader--filledGroup"],draggableContainer:["columnHeaderDraggableContainer"],titleContainer:["columnHeaderTitleContainer","withBorderColor"],titleContainerContent:["columnHeaderTitleContainerContent"]},be,t)};function _b(e){var t;const{groupId:r,width:o,depth:l,maxDepth:n,fields:i,height:s,colIndex:u,hasFocus:d,tabIndex:c,isLastColumn:p}=e,f=Y(),b=a.useRef(null),g=ce(),h=K(g,Fl),P=r?h[r]:{},{headerName:w=r??"",description:C="",headerAlign:E=void 0}=P;let T;const _=r&&((t=h[r])==null?void 0:t.renderHeaderGroup),F=a.useMemo(()=>({groupId:r,headerName:w,description:C,depth:l,maxDepth:n,fields:i,colIndex:u,isLastColumn:p}),[r,w,C,l,n,i,u,p]);r&&_&&(T=_(F));const L=f.showColumnVerticalBorder,I=m({},e,{classes:f.classes,showColumnBorder:L,headerAlign:E,depth:l,isDragging:!1}),H=w??r,$=Ie(),v=r===null?`empty-group-cell-${$}`:r,R=Hb(I);a.useLayoutEffect(()=>{if(d){const A=b.current.querySelector('[tabindex="0"]')||b.current;A==null||A.focus()}},[g,d]);const y=a.useCallback(M=>A=>{Hr(A)||g.current.publishEvent(M,F,A)},[g,F]),S=a.useMemo(()=>({onKeyDown:y("columnGroupHeaderKeyDown"),onFocus:y("columnGroupHeaderFocus"),onBlur:y("columnGroupHeaderBlur")}),[y]),O=typeof P.headerClassName=="function"?P.headerClassName(F):P.headerClassName;return x.jsx(Oi,m({ref:b,classes:R,columnMenuOpen:!1,colIndex:u,height:s,isResizing:!1,sortDirection:null,hasFocus:!1,tabIndex:c,isDraggable:!1,headerComponent:T,headerClassName:O,description:C,elementId:v,width:o,columnMenuIconButton:null,columnTitleIconButtons:null,resizable:!1,label:H,"aria-colspan":i.length,"data-fields":`|-${i.join("-|-")}-|`},S))}const la=De("div",{name:"MuiDataGrid",slot:"ColumnHeaderRow",overridesResolver:(e,t)=>t.columnHeaderRow})(()=>({display:"flex"}));function Vb(e){return!!e.target}const Nb=e=>{const{innerRef:t,minColumnIndex:r=0,visibleColumns:o,sortColumnLookup:l,filterColumnLookup:n,columnPositions:i,columnHeaderTabIndexState:s,columnGroupHeaderTabIndexState:u,columnHeaderFocus:d,columnGroupHeaderFocus:c,densityFactor:p,headerGroupingMaxDepth:f,columnMenuState:b,columnVisibility:g,columnGroupsHeaderStructure:h,hasOtherElementInTabSequence:P}=e,w=Mr(),[C,E]=a.useState(""),[T,_]=a.useState(""),F=_t(),L=K(F,Wl),I=Y(),H=a.useRef(null),$=xt(t,H),[v,R]=a.useState(null),y=a.useRef(v),S=a.useRef(0),O=Zt(F,I),M=an(F,I.columnHeaderHeight),A=Math.floor(I.columnHeaderHeight*p),k=a.useCallback(se=>{v&&se&&bu(v,se)||R(se)},[v]);a.useEffect(()=>{F.current.columnHeadersContainerElementRef.current.scrollLeft=0},[F]);const D=a.useRef(Oo(Am,{equalityCheck:(se,ie)=>["firstColumnIndex","minColumnIndex","columnBuffer"].every(ue=>se[ue]===ie[ue])})),N=a.useCallback(se=>{const[ie,ue]=Et({firstIndex:se.firstRowIndex,lastIndex:se.lastRowIndex,minFirstIndex:0,maxLastIndex:O.rows.length,buffer:I.rowBuffer}),we=D.current({firstColumnIndex:se.firstColumnIndex,minColumnIndex:r,columnBuffer:I.columnBuffer,firstRowToRender:ie,lastRowToRender:ue,apiRef:F,visibleRows:O.rows}),Fe=w.direction==="ltr"?1:-1,de=we>0?S.current-Fe*i[we]:S.current;H.current.style.transform=`translate3d(${-de}px, 0px, 0px)`},[i,r,I.columnBuffer,F,O.rows,I.rowBuffer,w.direction]);a.useLayoutEffect(()=>{v&&N(v)},[v,N]);const j=a.useCallback(({left:se,renderContext:ie=null},ue)=>{var we,Fe;if(!H.current||S.current===se&&((we=y.current)==null?void 0:we.firstColumnIndex)===(ie==null?void 0:ie.firstColumnIndex)&&((Fe=y.current)==null?void 0:Fe.lastColumnIndex)===(ie==null?void 0:ie.lastColumnIndex))return;S.current=se;let de=!1;ie!==y.current||!y.current?(Vb(ue)?(wa.flushSync(()=>{k(ie)}),de=!0):k(ie),y.current=ie):de=!0,ie&&de&&N(ie)},[N,k]),z=a.useCallback(se=>_(se.field),[]),B=a.useCallback(()=>_(""),[]),Z=a.useCallback(se=>E(se.field),[]),Q=a.useCallback(()=>E(""),[]);re(F,"columnResizeStart",z),re(F,"columnResizeStop",B),re(F,"columnHeaderDragStart",Z),re(F,"columnHeaderDragEnd",Q),re(F,"scrollPositionChange",j);const ee=se=>{const{renderContext:ie=v,minFirstColumn:ue=r,maxLastColumn:we=o.length}=se||{};if(!ie)return null;const[Fe,de]=Et({firstIndex:ie.firstRowIndex,lastIndex:ie.lastRowIndex,minFirstIndex:0,maxLastIndex:O.rows.length,buffer:I.rowBuffer}),U=L?D.current({firstColumnIndex:ie.firstColumnIndex,minColumnIndex:ue,columnBuffer:I.columnBuffer,apiRef:F,firstRowToRender:Fe,lastRowToRender:de,visibleRows:O.rows}):0,q=L?Math.min(ie.lastColumnIndex+I.columnBuffer,we):we;return{renderedColumns:o.slice(U,q),firstColumnToRender:U,lastColumnToRender:q,minFirstColumn:ue,maxLastColumn:we}},oe=(se,ie={})=>{const ue=ee(se);if(ue==null)return null;const{renderedColumns:we,firstColumnToRender:Fe}=ue,de=[];for(let U=0;U{if(f===0)return null;const ie=ee(se);if(ie==null||ie.renderedColumns.length===0)return null;const{firstColumnToRender:ue,lastColumnToRender:we}=ie,Fe=[],de=[];for(let ae=0;aeBe===Se&&Ve.includes(ge)),W=o[we-1].field,te=(q=F.current.unstable_getColumnGroupPath(W)[ae])!=null?q:null,le=fe.findIndex(({groupId:Be,columnFields:Ve})=>Be===te&&Ve.includes(W)),Oe=fe.slice(ne,le+1).map(Be=>m({},Be,{columnFields:Be.columnFields.filter(Ve=>g[Ve]!==!1)})).filter(Be=>Be.columnFields.length>0),Le=Oe[0].columnFields.indexOf(ge),Ye=Oe[0].columnFields.slice(0,Le).reduce((Be,Ve)=>{var Gt;const zt=F.current.getColumn(Ve);return Be+((Gt=zt.computedWidth)!=null?Gt:0)},0);let Nt=ue;const Lo=Oe.map(({groupId:Be,columnFields:Ve})=>{const Gt=c!==null&&c.depth===ae&&Ve.includes(c.field),zt=u!==null&&u.depth===ae&&Ve.includes(u.field)?0:-1,jr={groupId:Be,width:Ve.reduce((Br,br)=>Br+F.current.getColumn(br).computedWidth,0),fields:Ve,colIndex:Nt,hasFocus:Gt,tabIndex:zt};return Nt+=Ve.length,jr});de.push({leftOverflow:Ye,elements:Lo})}return de.forEach((ae,fe)=>{Fe.push(x.jsx(la,{style:{height:`${A}px`,transform:`translateX(-${ae.leftOverflow}px)`},role:"row","aria-rowindex":fe+1,ownerState:I,children:ae.elements.map(({groupId:ge,width:Se,fields:ne,colIndex:W,hasFocus:te,tabIndex:le},Oe)=>x.jsx(_b,{groupId:ge,width:Se,fields:ne,colIndex:W,depth:fe,isLastColumn:W===o.length-ne.length,maxDepth:de.length,height:A,hasFocus:te,tabIndex:le},Oe))},fe))}),Fe},ve={minHeight:M,maxHeight:M,lineHeight:`${A}px`};return{renderContext:v,getColumnHeaders:oe,getColumnsToRender:ee,getColumnGroupHeaders:Ce,isDragging:!!C,getRootProps:(se={})=>m({style:ve},se),getInnerProps:()=>({ref:$,role:"rowgroup"}),headerHeight:A}},Gb=["className"],zb=e=>{const{classes:t}=e;return he({root:["columnHeaders","withBorderColor"]},be,t)},jb=_e("div",{name:"MuiDataGrid",slot:"ColumnHeaders",overridesResolver:(e,t)=>t.columnHeaders})({position:"relative",overflow:"hidden",display:"flex",alignItems:"center",boxSizing:"border-box",borderBottom:"1px solid",borderTopLeftRadius:"var(--unstable_DataGrid-radius)",borderTopRightRadius:"var(--unstable_DataGrid-radius)"}),Bb=a.forwardRef(function(t,r){const{className:o}=t,l=J(t,Gb),n=Y(),i=zb(n);return x.jsx(jb,m({ref:r,className:xe(o,i.root),ownerState:n},l,{role:"presentation"}))}),Ub=["isDragging","className"],qb=e=>{const{isDragging:t,hasScrollX:r,classes:o}=e;return he({root:["columnHeadersInner",t&&"columnHeaderDropZone",r&&"columnHeadersInner--scrollable"]},be,o)},Wb=_e("div",{name:"MuiDataGrid",slot:"columnHeadersInner",overridesResolver:(e,t)=>[{[`&.${V.columnHeaderDropZone}`]:t.columnHeaderDropZone},t.columnHeadersInner]})(()=>({display:"flex",alignItems:"flex-start",flexDirection:"column",[`&.${V.columnHeaderDropZone} .${V.columnHeaderDraggableContainer}`]:{cursor:"move"},[`&.${V["columnHeadersInner--scrollable"]} .${V.columnHeader}:last-child`]:{borderRight:"none"}})),Kb=a.forwardRef(function(t,r){var o,l;const{isDragging:n,className:i}=t,s=J(t,Ub),u=ce(),d=Y(),c=m({},d,{isDragging:n,hasScrollX:(o=(l=u.current.getRootDimensions())==null?void 0:l.hasScrollX)!=null?o:!1}),p=qb(c);return x.jsx(Wb,m({ref:r,className:xe(i,p.root),ownerState:c},s))}),Qb=["innerRef","className","visibleColumns","sortColumnLookup","filterColumnLookup","columnPositions","columnHeaderTabIndexState","columnGroupHeaderTabIndexState","columnHeaderFocus","columnGroupHeaderFocus","densityFactor","headerGroupingMaxDepth","columnMenuState","columnVisibility","columnGroupsHeaderStructure","hasOtherElementInTabSequence"],Zb=a.forwardRef(function(t,r){const{innerRef:o,visibleColumns:l,sortColumnLookup:n,filterColumnLookup:i,columnPositions:s,columnHeaderTabIndexState:u,columnGroupHeaderTabIndexState:d,columnHeaderFocus:c,columnGroupHeaderFocus:p,densityFactor:f,headerGroupingMaxDepth:b,columnMenuState:g,columnVisibility:h,columnGroupsHeaderStructure:P,hasOtherElementInTabSequence:w}=t,C=J(t,Qb),{isDragging:E,getRootProps:T,getInnerProps:_,getColumnHeaders:F,getColumnGroupHeaders:L}=Nb({innerRef:o,visibleColumns:l,sortColumnLookup:n,filterColumnLookup:i,columnPositions:s,columnHeaderTabIndexState:u,columnGroupHeaderTabIndexState:d,columnHeaderFocus:c,columnGroupHeaderFocus:p,densityFactor:f,headerGroupingMaxDepth:b,columnMenuState:g,columnVisibility:h,columnGroupsHeaderStructure:P,hasOtherElementInTabSequence:w});return x.jsx(Bb,m({ref:r},T(C),{children:x.jsxs(Kb,m({isDragging:E},_(),{children:[L(),F()]}))}))}),hu=yo(Zb),Jb=a.forwardRef(function(t,r){const l=ce().current.getLocaleText("noResultsOverlayLabel");return x.jsx(Mo,m({ref:r},t,{children:l}))}),Yb=["sortingOrder"],Xb=a.memo(function(t){const{sortingOrder:r}=t,o=J(t,Yb),l=Y(),[n]=r,i=n==="asc"?l.slots.columnSortedAscendingIcon:l.slots.columnSortedDescendingIcon;return i?x.jsx(i,m({},o)):null}),eh=["native"];function th(e){let{native:t}=e,r=J(e,eh);return t?x.jsx("option",m({},r)):x.jsx(dt,m({},r))}const rh={BooleanCellTrueIcon:os,BooleanCellFalseIcon:lo,ColumnMenuIcon:Xi,OpenFilterButtonIcon:qi,FilterPanelDeleteIcon:lo,ColumnFilteredIcon:Xo,ColumnSelectorIcon:Ki,ColumnUnsortedIcon:Xb,ColumnSortedAscendingIcon:Qo,ColumnSortedDescendingIcon:Zo,ColumnResizeIcon:Qi,DensityCompactIcon:Zi,DensityStandardIcon:Ji,DensityComfortableIcon:Yi,ExportIcon:rs,MoreActionsIcon:ls,TreeDataCollapseIcon:Yo,TreeDataExpandIcon:Jo,GroupingCriteriaCollapseIcon:Yo,GroupingCriteriaExpandIcon:Jo,DetailPanelExpandIcon:el,DetailPanelCollapseIcon:es,RowReorderIcon:tl,QuickFilterIcon:Wi,QuickFilterClearIcon:lo,ColumnMenuHideIcon:ns,ColumnMenuSortAscendingIcon:Qo,ColumnMenuSortDescendingIcon:Zo,ColumnMenuFilterIcon:Xo,ColumnMenuManageColumnsIcon:as,ColumnMenuClearIcon:is,LoadIcon:ts,FilterPanelAddIcon:el,FilterPanelRemoveAllIcon:ss,ColumnReorderIcon:tl},oh=m({},rh,{BaseCheckbox:Qu,BaseTextField:Ca,BaseFormControl:Zu,BaseSelect:Ju,BaseSwitch:Yu,BaseButton:Xu,BaseIconButton:ba,BaseInputAdornment:ec,BaseTooltip:tc,BasePopper:gl,BaseInputLabel:rc,BaseSelectOption:th,BaseChip:oc}),lh=oh,nh=m({},lh,{Cell:qo,SkeletonCell:pi,ColumnHeaderFilterIconButton:zi,ColumnMenu:Cs,ColumnHeaders:hu,Footer:_s,FooterRowCount:js,Toolbar:null,PreferencesPanel:vs,LoadingOverlay:Ns,NoResultsOverlay:Jb,NoRowsOverlay:Gs,Pagination:zs,FilterPanel:Is,ColumnsPanel:Os,Panel:xs,Row:Js}),Cu=e=>{if(e!==void 0)return Object.keys(e).reduce((t,r)=>m({},t,{[`${r.charAt(0).toLowerCase()}${r.slice(1)}`]:e[r]}),{})};function ah({defaultSlots:e,slots:t,components:r}){const o=t??(r?Cu(r):null);if(!o||Object.keys(o).length===0)return e;const l=m({},e);return Object.keys(o).forEach(n=>{const i=n;o[i]!==void 0&&(l[i]=o[i])}),l}const ih=["components","componentsProps"];function sh(e){var t;const r=Object.keys(e);if(!r.some(n=>n.startsWith("aria-")||n.startsWith("data-")))return e;const o={},l=(t=e.forwardedProps)!=null?t:{};for(let n=0;n{const{components:t,componentsProps:r}=e,o=J(e,ih);return[t,r,sh(o)]},[e])}const ch={disableMultipleColumnsFiltering:!0,disableMultipleColumnsSorting:!0,disableMultipleRowSelection:!0,throttleRowsMs:void 0,hideFooterRowCount:!1,pagination:!0,checkboxSelectionVisibleOnly:!1,disableColumnReorder:!0,disableColumnResize:!0,keepColumnPositionIfDraggedOutside:!1,signature:"DataGrid"},zr={autoHeight:!1,autoPageSize:!1,checkboxSelection:!1,checkboxSelectionVisibleOnly:!1,columnBuffer:3,rowBuffer:3,columnThreshold:3,rowThreshold:3,rowSelection:!0,density:"standard",disableColumnFilter:!1,disableColumnMenu:!1,disableColumnSelector:!1,disableDensitySelector:!1,disableEval:!1,disableMultipleColumnsFiltering:!1,disableMultipleRowSelection:!1,disableMultipleColumnsSorting:!1,disableRowSelectionOnClick:!1,disableVirtualization:!1,editMode:mt.Cell,filterMode:"client",filterDebounceMs:150,columnHeaderHeight:56,hideFooter:!1,hideFooterPagination:!1,hideFooterRowCount:!1,hideFooterSelectedRowCount:!1,ignoreDiacritics:!1,logger:console,logLevel:"error",pagination:!1,paginationMode:"client",rowHeight:52,pageSizeOptions:[25,50,100],rowSpacingType:"margin",showCellVerticalBorder:!1,showColumnVerticalBorder:!1,sortingOrder:["asc","desc",null],sortingMode:"client",throttleRowsMs:0,disableColumnReorder:!1,disableColumnResize:!1,keepNonExistentRowsSelected:!1,keepColumnPositionIfDraggedOutside:!1,unstable_ignoreValueFormatterDuringExport:!1,clipboardCopyCellDelimiter:" ",rowPositionsDebounceMs:166},dh=Cu(nh),ph=e=>{const[t,r,o]=uh(lc({props:e,name:"MuiDataGrid"})),l=a.useMemo(()=>m({},sn,o.localeText),[o.localeText]),n=a.useMemo(()=>ah({defaultSlots:dh,slots:o.slots,components:t}),[t,o.slots]);return a.useMemo(()=>{var i;return m({},zr,o,{localeText:l,slots:n,slotProps:(i=o.slotProps)!=null?i:r},ch)},[o,l,n,r])},fh=e=>m({},e,{rowsMeta:{currentPageTotalHeight:0,positions:[]}}),na=(e,t,r)=>typeof e=="number"&&e>0?e:t,gh=(e,t)=>{const{getRowHeight:r,getRowSpacing:o,getEstimatedRowHeight:l}=t,n=a.useRef(Object.create(null)),i=a.useRef(-1),s=a.useRef(!1),u=K(e,Qt),d=K(e,Re),c=K(e,Nl),p=K(e,tt),f=Zt(e,t),b=K(e,gr),g=na(t.rowHeight,zr.rowHeight),h=Math.floor(g*u),P=a.useCallback(()=>{var R,y;s.current=!1;const S=A=>{n.current[A.id]||(n.current[A.id]={sizes:{baseCenter:h},isResized:!1,autoHeight:!1,needsFirstMeasurement:!0});const{isResized:k,needsFirstMeasurement:D,sizes:N}=n.current[A.id];let j=typeof h=="number"&&h>0?h:52;const z=N.baseCenter;if(k)j=z;else if(r){const oe=r(m({},A,{densityFactor:u}));if(oe==="auto"){if(D){const Ce=l?l(m({},A,{densityFactor:u})):h;j=Ce??h}else j=z;s.current=!0,n.current[A.id].autoHeight=!0}else j=na(oe,h),n.current[A.id].needsFirstMeasurement=!1,n.current[A.id].autoHeight=!1}else n.current[A.id].needsFirstMeasurement=!1;const B={};for(const oe in N)/^base[A-Z]/.test(oe)&&(B[oe]=N[oe]);if(B.baseCenter=j,o){var Z,Q;const oe=e.current.getRowIndexRelativeToVisibleRows(A.id),Ce=o(m({},A,{isFirstVisible:oe===0,isLastVisible:oe===f.rows.length-1,indexRelativeToCurrentPage:oe}));B.spacingTop=(Z=Ce.top)!=null?Z:0,B.spacingBottom=(Q=Ce.bottom)!=null?Q:0}const ee=e.current.unstable_applyPipeProcessors("rowHeight",B,A);return n.current[A.id].sizes=ee,ee},O=[],M=f.rows.reduce((A,k)=>{O.push(A);let D=0,N=0;const j=S(k);for(const z in j){const B=j[z];/^base[A-Z]/.test(z)?D=B>D?B:D:N+=B}return A+D+N},0);b==null||(R=b.top)==null||R.forEach(A=>{S(A)}),b==null||(y=b.bottom)==null||y.forEach(A=>{S(A)}),e.current.setState(A=>m({},A,{rowsMeta:{currentPageTotalHeight:M,positions:O}})),s.current||(i.current=1/0),e.current.forceUpdate()},[e,f.rows,h,r,o,l,b,u]),w=a.useCallback(R=>{const y=n.current[R];return y?y.sizes.baseCenter:h},[h]),C=R=>{var y;return(y=n.current[R])==null?void 0:y.sizes},E=a.useCallback((R,y)=>{n.current[R].sizes.baseCenter=y,n.current[R].isResized=!0,n.current[R].needsFirstMeasurement=!1,P()},[P]),T=a.useMemo(()=>bl(P,t.rowPositionsDebounceMs),[P,t.rowPositionsDebounceMs]),_=a.useCallback((R,y,S)=>{if(!n.current[R]||!n.current[R].autoHeight)return;const O=n.current[R].sizes[`base${$t(S)}`]!==y;n.current[R].needsFirstMeasurement=!1,n.current[R].sizes[`base${$t(S)}`]=y,O&&T()},[T]),F=a.useCallback(R=>{var y;return((y=n.current[R])==null?void 0:y.autoHeight)||!1},[]),L=a.useCallback(()=>i.current,[]),I=a.useCallback(R=>{s.current&&R>i.current&&(i.current=R)},[]),H=a.useCallback(()=>{n.current={},P()},[P]);a.useEffect(()=>{P()},[h,d,c,p,P]),on(e,"rowHeight",P);const $={unstable_setLastMeasuredRowIndex:I,unstable_getRowHeight:w,unstable_getRowInternalSizes:C,unstable_setRowHeight:E,unstable_storeRowHeightMeasurement:_,resetRowHeights:H},v={getLastMeasuredRowIndex:L,rowHasAutoHeight:F};me(e,$,"public"),me(e,v,"private")},mh=e=>{const t=a.useCallback((l={})=>e.current.unstable_applyPipeProcessors("exportState",{},l),[e]),r=a.useCallback(l=>{e.current.unstable_applyPipeProcessors("restoreState",{callbacks:[]},{stateToRestore:l}).callbacks.forEach(i=>{i()}),e.current.forceUpdate()},[e]);me(e,{exportState:t,restoreState:r},"public")},bh=e=>{const t=a.useRef({}),r=a.useCallback((d,c,p)=>{const f=t.current;f[d]||(f[d]={}),f[d][c]=p},[]),o=a.useCallback((d,c)=>{var p;return(p=t.current[d])==null?void 0:p[c]},[]),l=a.useCallback(d=>{const{columnIndex:c,rowId:p,minFirstColumnIndex:f,maxLastColumnIndex:b,columns:g}=d,h=g.length,P=g[c],w=typeof P.colSpan=="function"?P.colSpan(e.current.getCellParams(p,P.field)):P.colSpan;if(!w||w===1)return r(p,c,{spannedByColSpan:!1,cellProps:{colSpan:1,width:P.computedWidth}}),{colSpan:1};let C=P.computedWidth;for(let E=1;E=f&&T{for(let b=c;b1&&(b+=g.colSpan-1)}},[l]),i={unstable_getCellColSpanInfo:o},s={calculateColSpan:n};me(e,i,"public"),me(e,s,"private");const u=a.useCallback(()=>{t.current={}},[]);re(e,"columnOrderChange",u)},wu=(e,t,r)=>{if($l(e)){if(r[e.field]!==void 0)throw new Error(["MUI: columnGroupingModel contains duplicated field",`column field ${e.field} occurs two times in the grouping model:`,`- ${r[e.field].join(" > ")}`,`- ${t.join(" > ")}`].join(` +`));r[e.field]=t;return}const{groupId:o,children:l}=e;l.forEach(n=>{wu(n,[...t,o],r)})},dl=e=>{if(!e)return{};const t={};return e.forEach(r=>{wu(r,[],t)}),t},pl=(e,t,r)=>{const o=u=>{var d;return(d=t[u])!=null?d:[]},l=[],n=Math.max(...e.map(u=>o(u).length)),i=(u,d,c)=>It(o(u).slice(0,c+1),o(d).slice(0,c+1)),s=(u,d)=>!!(r!=null&&r.left&&r.left.includes(u)&&!r.left.includes(d)||r!=null&&r.right&&!r.right.includes(u)&&r.right.includes(d));for(let u=0;u{var f;const b=(f=o(p)[u])!=null?f:null;if(c.length===0)return[{columnFields:[p],groupId:b}];const g=c[c.length-1],h=g.columnFields[g.columnFields.length-1];return g.groupId!==b||!i(h,p,u)||s(h,p)?[...c,{columnFields:[p],groupId:b}]:[...c.slice(0,c.length-1),{columnFields:[...g.columnFields,p],groupId:b}]},[]);l.push(d)}return l},hh=["groupId","children"],un=e=>{let t={};return e.forEach(r=>{if($l(r))return;const{groupId:o,children:l}=r,n=J(r,hh);if(!o)throw new Error("MUI: An element of the columnGroupingModel does not have either `field` or `groupId`.");l||console.warn(`MUI: group groupId=${o} has no children.`);const i=m({},n,{groupId:o}),s=un(l);if(s[o]!==void 0||t[o]!==void 0)throw new Error(`MUI: The groupId ${o} is used multiple times in the columnGroupingModel.`);t=m({},t,s,{[o]:i})}),m({},t)},Ch=(e,t,r)=>{var o,l,n,i;if(!((o=t.experimentalFeatures)!=null&&o.columnGrouping))return e;const s=Pt(r),u=Er(r),d=un((l=t.columnGroupingModel)!=null?l:[]),c=dl((n=t.columnGroupingModel)!=null?n:[]),p=pl(s,c,(i=r.current.state.pinnedColumns)!=null?i:{}),f=u.length===0?0:Math.max(...u.map(b=>{var g,h;return(g=(h=c[b])==null?void 0:h.length)!=null?g:0}));return m({},e,{columnGrouping:{lookup:d,unwrappedGroupingModel:c,headerStructure:p,maxDepth:f}})},wh=(e,t)=>{var r;const o=a.useCallback(u=>{var d;return(d=Ia(e)[u])!=null?d:[]},[e]),l=a.useCallback(()=>Fl(e),[e]);me(e,{unstable_getColumnGroupPath:o,unstable_getAllGroupDetails:l},"public");const i=a.useCallback(()=>{var u;const d=dl((u=t.columnGroupingModel)!=null?u:[]);e.current.setState(c=>{var p,f,b;const g=(p=(f=c.columns)==null?void 0:f.orderedFields)!=null?p:[],h=(b=c.pinnedColumns)!=null?b:{},P=pl(g,d,h);return m({},c,{columnGrouping:m({},c.columnGrouping,{headerStructure:P})})})},[e,t.columnGroupingModel]),s=a.useCallback(u=>{var d,c,p,f;if(!((d=t.experimentalFeatures)!=null&&d.columnGrouping))return;const b=(c=(p=(f=e.current).getPinnedColumns)==null?void 0:p.call(f))!=null?c:{},g=Pt(e),h=Er(e),P=un(u??[]),w=dl(u??[]),C=pl(g,w,b),E=h.length===0?0:Math.max(...h.map(T=>{var _,F;return(_=(F=w[T])==null?void 0:F.length)!=null?_:0}));e.current.setState(T=>m({},T,{columnGrouping:{lookup:P,unwrappedGroupingModel:w,headerStructure:C,maxDepth:E}}))},[e,(r=t.experimentalFeatures)==null?void 0:r.columnGrouping]);re(e,"columnIndexChange",i),re(e,"columnsChange",()=>{s(t.columnGroupingModel)}),re(e,"columnVisibilityModelChange",()=>{s(t.columnGroupingModel)}),a.useEffect(()=>{s(t.columnGroupingModel)},[s,t.columnGroupingModel])},Sh=(e,t)=>{const r=Sm(e,t);return Fb(r,t),Ob(r),Qe(Pb,r,t),Qe(Rm,r,t),Qe(bb,r,t),Qe(gb,r,t),Qe(eb,r,t),Qe(yb,r,t),Qe(lb,r,t),Qe(Zm,r,t),Qe(Nm,r,t),Qe(Um,r,t),Qe(fh,r,t),Qe(Lm,r,t),Qe(Ch,r,t),Qe(Vi,r,t),ob(r,t),xb(r,t),Hm(r,t),hb(r,t),Gd(r,t),bh(r),wh(r,t),mb(r,t),tb(r,t),nb(r,t),Xm(r,t),Ib(r,t),Gm(r,t),qm(r,t),gh(r,t),Mb(r,t),Tm(r),Bm(r,t),Qm(r,t),Em(r,t),Lb(r,t),kb(r,t),mh(r),Ni(r,t),r},Oh=e=>{const{classes:t}=e;return he({root:["virtualScroller"]},be,t)},Ph=_e("div",{name:"MuiDataGrid",slot:"VirtualScroller",overridesResolver:(e,t)=>t.virtualScroller})({overflow:"auto",height:"100%",position:"relative","@media print":{overflow:"hidden"},zIndex:0}),xh=a.forwardRef(function(t,r){const o=Y(),l=Oh(o);return x.jsx(Ph,m({ref:r},t,{className:xe(l.root,t.className),ownerState:o}))}),vh=(e,t)=>{const{classes:r}=e;return he({root:["virtualScrollerContent",t&&"virtualScrollerContent--overflowed"]},be,r)},Fh=_e("div",{name:"MuiDataGrid",slot:"VirtualScrollerContent",overridesResolver:(e,t)=>t.virtualScrollerContent})({}),yh=a.forwardRef(function(t,r){var o;const l=Y(),n=!l.autoHeight&&((o=t.style)==null?void 0:o.minHeight)==="auto",i=vh(l,n);return x.jsx(Fh,m({ref:r},t,{ownerState:l,className:xe(i.root,t.className)}))}),Ih=["className"],Mh=e=>{const{classes:t}=e;return he({root:["virtualScrollerRenderZone"]},be,t)},kh=_e("div",{name:"MuiDataGrid",slot:"VirtualScrollerRenderZone",overridesResolver:(e,t)=>t.virtualScrollerRenderZone})({position:"absolute",display:"flex",flexDirection:"column"}),Eh=a.forwardRef(function(t,r){const{className:o}=t,l=J(t,Ih),n=Y(),i=Mh(n);return x.jsx(kh,m({ref:r,className:xe(i.root,o),ownerState:n},l))}),Lh=["className"],Th=a.forwardRef(function(t,r){const{className:o}=t,l=J(t,Lh),{getRootProps:n,getContentProps:i,getRenderZoneProps:s,getRows:u}=Rb({ref:r});return x.jsxs(xh,m({className:o},n(l),{children:[x.jsx(Qa,{}),x.jsx(yh,m({},i(),{children:x.jsx(Eh,m({},s(),{children:u()}))}))]}))}),Su=a.forwardRef(function(t,r){const o=ph(t),l=Sh(o.apiRef,o);return x.jsx(Ys,{privateApiRef:l,props:o,children:x.jsxs(fi,m({className:o.className,style:o.style,sx:o.sx,ref:r},o.forwardedProps,{children:[x.jsx(Vs,{}),x.jsx(za,{VirtualScrollerComponent:Th}),x.jsx(ja,{})]}))})}),Dh=a.memo(Su),$h=zr.filterDebounceMs,Ah=zr.filterDebounceMs;Su.propTypes={apiRef:G.shape({current:G.object.isRequired}),"aria-label":G.string,"aria-labelledby":G.string,autoHeight:G.bool,autoPageSize:G.bool,cellModesModel:G.object,checkboxSelection:G.bool,classes:G.object,clipboardCopyCellDelimiter:G.string,columnBuffer:G.number,columnGroupingModel:G.arrayOf(G.object),columnHeaderHeight:G.number,columns:sc(G.array.isRequired),columnThreshold:G.number,columnVisibilityModel:G.object,components:G.object,componentsProps:G.object,density:G.oneOf(["comfortable","compact","standard"]),disableColumnFilter:G.bool,disableColumnMenu:G.bool,disableColumnSelector:G.bool,disableDensitySelector:G.bool,disableEval:G.bool,disableRowSelectionOnClick:G.bool,disableVirtualization:G.bool,editMode:G.oneOf(["cell","row"]),experimentalFeatures:G.shape({ariaV7:G.bool,columnGrouping:G.bool,warnIfFocusStateIsNotSynced:G.bool}),filterDebounceMs:G.number,filterMode:G.oneOf(["client","server"]),filterModel:G.shape({items:G.arrayOf(G.shape({field:G.string.isRequired,id:G.oneOfType([G.number,G.string]),operator:G.string.isRequired,value:G.any})).isRequired,logicOperator:G.oneOf(["and","or"]),quickFilterExcludeHiddenColumns:G.bool,quickFilterLogicOperator:G.oneOf(["and","or"]),quickFilterValues:G.array}),forwardedProps:G.object,getCellClassName:G.func,getDetailPanelContent:G.func,getEstimatedRowHeight:G.func,getRowClassName:G.func,getRowHeight:G.func,getRowId:G.func,getRowSpacing:G.func,hideFooter:G.bool,hideFooterPagination:G.bool,hideFooterSelectedRowCount:G.bool,ignoreDiacritics:G.bool,initialState:G.object,isCellEditable:G.func,isRowSelectable:G.func,keepNonExistentRowsSelected:G.bool,loading:G.bool,localeText:G.object,logger:G.shape({debug:G.func.isRequired,error:G.func.isRequired,info:G.func.isRequired,warn:G.func.isRequired}),logLevel:G.oneOf(["debug","error","info","warn",!1]),nonce:G.string,onCellClick:G.func,onCellDoubleClick:G.func,onCellEditStart:G.func,onCellEditStop:G.func,onCellKeyDown:G.func,onCellModesModelChange:G.func,onClipboardCopy:G.func,onColumnHeaderClick:G.func,onColumnHeaderDoubleClick:G.func,onColumnHeaderEnter:G.func,onColumnHeaderLeave:G.func,onColumnHeaderOut:G.func,onColumnHeaderOver:G.func,onColumnOrderChange:G.func,onColumnVisibilityModelChange:G.func,onFilterModelChange:G.func,onMenuClose:G.func,onMenuOpen:G.func,onPaginationModelChange:G.func,onPreferencePanelClose:G.func,onPreferencePanelOpen:G.func,onProcessRowUpdateError:G.func,onResize:G.func,onRowClick:G.func,onRowDoubleClick:G.func,onRowEditCommit:G.func,onRowEditStart:G.func,onRowEditStop:G.func,onRowModesModelChange:G.func,onRowSelectionModelChange:G.func,onSortModelChange:G.func,onStateChange:G.func,pageSizeOptions:G.arrayOf(G.oneOfType([G.number,G.shape({label:G.string.isRequired,value:G.number.isRequired})]).isRequired),pagination:e=>e.pagination===!1?new Error(["MUI: `` is not a valid prop.","Infinite scrolling is not available in the MIT version.","","You need to upgrade to DataGridPro or DataGridPremium component to disable the pagination."].join(` +`)):null,paginationMode:G.oneOf(["client","server"]),paginationModel:G.shape({page:G.number.isRequired,pageSize:G.number.isRequired}),processRowUpdate:G.func,rowBuffer:G.number,rowCount:G.number,rowHeight:G.number,rowModesModel:G.object,rowPositionsDebounceMs:G.number,rows:G.arrayOf(G.object).isRequired,rowSelection:G.bool,rowSelectionModel:G.oneOfType([G.arrayOf(G.oneOfType([G.number,G.string]).isRequired),G.number,G.string]),rowSpacingType:G.oneOf(["border","margin"]),rowThreshold:G.number,scrollbarSize:G.number,showCellVerticalBorder:G.bool,showColumnVerticalBorder:G.bool,slotProps:G.object,slots:G.object,sortingMode:G.oneOf(["client","server"]),sortingOrder:G.arrayOf(G.oneOf(["asc","desc"])),sortModel:G.arrayOf(G.shape({field:G.string.isRequired,sort:G.oneOf(["asc","desc"])})),sx:G.oneOfType([G.arrayOf(G.oneOfType([G.func,G.object,G.bool])),G.func,G.object]),unstable_ignoreValueFormatterDuringExport:G.oneOfType([G.shape({clipboardExport:G.bool,csvExport:G.bool}),G.bool])};const Rh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"إظهار المسار"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"انتقل إلى الصفحة الأولى":e==="last"?"انتقل إلى الصفحة الأخيرة":e==="next"?"انتقل إلى الصفحة التالية":"انتقل إلى الصفحة السابقة",labelRowsPerPage:"عدد الصفوف في الصفحة:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} من ${r!==-1?r:` أكثر من${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} ${e!==1?"نجوم":"نجمة"}`,emptyLabelText:"فارغ"}},MuiAutocomplete:{defaultProps:{clearText:"مسح",closeText:"إغلاق",loadingText:"جار التحميل...",noOptionsText:"لا يوجد خيارات",openText:"فتح"}},MuiAlert:{defaultProps:{closeText:"إغلاق"}},MuiPagination:{defaultProps:{"aria-label":"التنقل عبر الصفحات",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"انتقل إلى "} صفحة ${t}`:e==="first"?"انتقل إلى الصفحة الأولى":e==="last"?"انتقل الي الصفحة الأخيرة":e==="next"?"انتقل إلى الصفحة التالية":"انتقل إلى الصفحة السابقة"}}}},Hh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Показване на пътя"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Отиди на първата страница":e==="last"?"Отиди на последната страница":e==="next"?"Отиди на следващата страница":"Отиди на предишната страница",labelRowsPerPage:"Редове на страница:"}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Звезд${e!==1?"и":"а"}`,emptyLabelText:"Изчисти"}},MuiAutocomplete:{defaultProps:{clearText:"Изчисти",closeText:"Затвори",loadingText:"Зареждане…",noOptionsText:"Няма налични опции",openText:"Отвори"}},MuiAlert:{defaultProps:{closeText:"Затвори"}},MuiPagination:{defaultProps:{"aria-label":"Пагинация",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Към "}страница ${t}`:e==="first"?"Отиди на първата страница":e==="last"?"Отиди на последната страница":e==="next"?"Отиди на следващата страница":"Отиди на предишната страница"}}}},_h={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Ukázat cestu"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Jít na první stránku":e==="last"?"Jít na poslední stránku":e==="next"?"Jít na další stránku":"Jít na předchozí stránku",labelRowsPerPage:"Řádků na stránce:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} z ${r!==-1?r:`více než ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>e===1?`${e} hvězdička`:e>=2&&e<=4?`${e} hvězdičky`:`${e} hvězdiček`,emptyLabelText:"Prázdné"}},MuiAutocomplete:{defaultProps:{clearText:"Vymazat",closeText:"Zavřít",loadingText:"Načítání…",noOptionsText:"Žádné možnosti",openText:"Otevřít"}},MuiAlert:{defaultProps:{closeText:"Zavřít"}},MuiPagination:{defaultProps:{"aria-label":"Navigace stránkováním",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Jít na "}${t}. stránku`:e==="first"?"Jít na první stránku":e==="last"?"Jít na poslední stránku":e==="next"?"Jít na další stránku":"Jít na předchozí stránku"}}}},Vh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Vis sti"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Gå til den første side":e==="last"?"Gå til den sidste side":e==="next"?"Gå til den næste side":"Gå til den forrige side",labelRowsPerPage:"Rækker pr side:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}-${t} af ${r!==-1?r:`mere end ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Stjern${e!==1?"er":""}`,emptyLabelText:"Tom"}},MuiAutocomplete:{defaultProps:{clearText:"Slet",closeText:"Luk",loadingText:"Indlæser…",noOptionsText:"Ingen muligheder",openText:"Åben"}},MuiAlert:{defaultProps:{closeText:"Luk"}},MuiPagination:{defaultProps:{"aria-label":"Sideinddelings navigation",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Go to "}page ${t}`:e==="first"?"Gå til den første side":e==="last"?"Gå til den sidste side":e==="next"?"Gå til den næste side":"Gå til den forrige side"}}}},Nh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Pfad anzeigen"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Zur ersten Seite":e==="last"?"Zur letzten Seite":e==="next"?"Zur nächsten Seite":"Zur vorherigen Seite",labelRowsPerPage:"Zeilen pro Seite:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} von ${r!==-1?r:`mehr als ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} ${e!==1?"Sterne":"Stern"}`,emptyLabelText:"Keine Wertung"}},MuiAutocomplete:{defaultProps:{clearText:"Leeren",closeText:"Schließen",loadingText:"Wird geladen…",noOptionsText:"Keine Optionen",openText:"Öffnen"}},MuiAlert:{defaultProps:{closeText:"Schließen"}},MuiPagination:{defaultProps:{"aria-label":"Navigation via Seitennummerierung",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Gehe zu "}Seite ${t}`:e==="first"?"Zur ersten Seite":e==="last"?"Zur letzten Seite":e==="next"?"Zur nächsten Seite":"Zur vorherigen Seite"}}}},Gh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Εμφάνιση διαδρομής"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Πρώτη σελίδα":e==="last"?"Τελευταία σελίδα":e==="next"?"Επόμενη σελίδα":"Προηγούμενη σελίδα",labelRowsPerPage:"Γραμμές ανα σελίδα:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} από ${r!==-1?r:`πάνω από ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Αστέρι${e!==1?"α":""}`,emptyLabelText:"Χωρίς βαθμολόγηση"}},MuiAutocomplete:{defaultProps:{clearText:"Καθαρισμός",closeText:"Κλείσιμο",loadingText:"Φόρτωση…",noOptionsText:"Δεν υπάρχουν επιλογές",openText:"Άνοιγμα"}},MuiAlert:{defaultProps:{closeText:"Κλείσιμο"}},MuiPagination:{defaultProps:{"aria-label":"Πλοήγηση σε σελίδες",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Μετάβαση "}σελίδα ${t}`:e==="first"?"Πρώτη σελίδα":e==="last"?"Τελευταία σελίδα":e==="next"?"Επόμενη σελίδα":"Προηγούμενη σελίδα"}}}},zh={},jh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Mostrar ruta"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Ir a la primera página":e==="last"?"Ir a la última página":e==="next"?"Ir a la página siguiente":"Ir a la página anterior",labelRowsPerPage:"Filas por página:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} de ${r!==-1?r:`más de ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Estrella${e!==1?"s":""}`,emptyLabelText:"Vacío"}},MuiAutocomplete:{defaultProps:{clearText:"Limpiar",closeText:"Cerrar",loadingText:"Cargando…",noOptionsText:"Sin opciones",openText:"Abierto"}},MuiAlert:{defaultProps:{closeText:"Cerrar"}},MuiPagination:{defaultProps:{"aria-label":"Paginador",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Ir a la "}página ${t}`:e==="first"?"Ir a la primera página":e==="last"?"Ir a la última página":e==="next"?"Ir a la página siguiente":"Ir a la página anterior"}}}},Bh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"نمایش مسیر"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"رفتن به اولین صفحه":e==="last"?"رفتن به آخرین صفحه":e==="next"?"رفتن به صفحه‌ی بعدی":"رفتن به صفحه‌ی قبلی",labelRowsPerPage:"تعداد سطرهای هر صفحه:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} از ${r!==-1?r:`بیشتر از ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} ستاره`,emptyLabelText:"خالی"}},MuiAutocomplete:{defaultProps:{clearText:"پاک‌کردن",closeText:"بستن",loadingText:"در حال بارگذاری…",noOptionsText:"بی‌نتیجه",openText:"بازکردن"}},MuiAlert:{defaultProps:{closeText:"بستن"}},MuiPagination:{defaultProps:{"aria-label":"ناوبری صفحه",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"رفتن به "}صفحهٔ ${t}`:e==="first"?"رفتن به اولین صفحه":e==="last"?"رفتن به آخرین صفحه":e==="next"?"رفتن به صفحه‌ی بعدی":"رفتن به صفحه‌ی قبلی"}}}},Uh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Näytä reitti"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Mene ensimmäiselle sivulle":e==="last"?"Mene viimeiselle sivulle":e==="next"?"Mene seuraavalle sivulle":"Mene edelliselle sivulle",labelRowsPerPage:"Rivejä per sivu:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} / ${r!==-1?r:`enemmän kuin ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Täht${e!==1?"eä":"i"}`,emptyLabelText:"Tyhjä"}},MuiAutocomplete:{defaultProps:{clearText:"Tyhjennä",closeText:"Sulje",loadingText:"Ladataan…",noOptionsText:"Ei valintoja",openText:"Avaa"}},MuiAlert:{defaultProps:{closeText:"Sulje"}},MuiPagination:{defaultProps:{"aria-label":"Sivutus navigaatio",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"sivu":"Mene sivulle"} ${t}`:e==="first"?"Mene ensimmäiselle sivulle":e==="last"?"Mene viimeiselle sivulle":e==="next"?"Mene seuraavalle sivulle":"Mene edelliselle sivulle"}}}},qh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Montrer le chemin"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Aller à la première page":e==="last"?"Aller à la dernière page":e==="next"?"Aller à la page suivante":"Aller à la page précédente",labelRowsPerPage:"Lignes par page :",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} sur ${r!==-1?r:`plus que ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Etoile${e!==1?"s":""}`,emptyLabelText:"Vide"}},MuiAutocomplete:{defaultProps:{clearText:"Vider",closeText:"Fermer",loadingText:"Chargement…",noOptionsText:"Pas de résultats",openText:"Ouvrir"}},MuiAlert:{defaultProps:{closeText:"Fermer"}},MuiPagination:{defaultProps:{"aria-label":"navigation de pagination",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Aller à la "}page ${t}`:e==="first"?"Aller à la première page":e==="last"?"Aller à la dernière page":e==="next"?"Aller à la page suivante":"Aller à la page précédente"}}}},Wh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"הצג נתיב"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"לעמוד הראשון":e==="last"?"לעמוד האחרון":e==="next"?"לעמוד הבא":"לעמוד הקודם",labelRowsPerPage:"שורות בעמוד:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} מתוך ${r!==-1?r:`יותר מ ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} כוכב${e!==1?"ים":""}`,emptyLabelText:"ריק"}},MuiAutocomplete:{defaultProps:{clearText:"נקה",closeText:"סגור",loadingText:"טוען…",noOptionsText:"אין אופציות",openText:"פתח"}},MuiAlert:{defaultProps:{closeText:"סגור"}},MuiPagination:{defaultProps:{"aria-label":"ניווט בעמודים",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"ל "}עמוד ${t}`:e==="first"?"לעמוד הראשון":e==="last"?"לעמוד האחרון":e==="next"?"לעמוד הבא":"לעמוד הקודם"}}}},Kh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Pokaži putanju"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Idi na prvu stranicu":e==="last"?"Idi na posljednju stranicu":e==="next"?"Idi na sljedeću stranicu":"Idi na prethodnu stranicu",labelRowsPerPage:"Redova po stranici:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} od ${r!==-1?r:`više nego ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>{const t=e%10,r=e%100;return[2,3,4].includes(t)&&![12,13,14].includes(r)?"Zvijezde":"Zvijezda"},emptyLabelText:"Prazno"}},MuiAutocomplete:{defaultProps:{clearText:"Briši",closeText:"Zatvori",loadingText:"Učitavanje…",noOptionsText:"Nema opcija",openText:"Otvori"}},MuiAlert:{defaultProps:{closeText:"Zatvori"}},MuiPagination:{defaultProps:{"aria-label":"Navigacija po stranicama",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Idi na "}stranicu ${t}`:e==="first"?"Idi na prvu stranicu":e==="last"?"Idi na zadnju stranicu":e==="next"?"Idi na sljedeću stranicu":"Idi na prethodnu stranicu"}}}},Qh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Útvonal"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Első oldalra":e==="last"?"Utolsó oldalra":e==="next"?"Következő oldalra":"Előző oldalra",labelRowsPerPage:"Sorok száma:"}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Csillag`,emptyLabelText:"Üres"}},MuiAutocomplete:{defaultProps:{clearText:"Törlés",closeText:"Bezárás",loadingText:"Töltés…",noOptionsText:"Nincs találat",openText:"Megnyitás"}},MuiAlert:{defaultProps:{closeText:"Bezárás"}},MuiPagination:{defaultProps:{"aria-label":"Lapozás",getItemAriaLabel:(e,t,r)=>e==="page"?`${t}. oldal${r?"":"ra"}`:e==="first"?"Első oldalra":e==="last"?"Utolsó oldalra":e==="next"?"Következő oldalra":"Előző oldalra"}}}},Zh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Visualizza percorso"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Vai alla prima pagina":e==="last"?"Vai all'ultima pagina":e==="next"?"Vai alla pagina successiva":"Vai alla pagina precedente",labelRowsPerPage:"Righe per pagina:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} di ${r!==-1?r:`più di ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Stell${e!==1?"e":"a"}`,emptyLabelText:"Vuoto"}},MuiAutocomplete:{defaultProps:{clearText:"Svuota",closeText:"Chiudi",loadingText:"Caricamento in corso…",noOptionsText:"Nessuna opzione",openText:"Apri"}},MuiAlert:{defaultProps:{closeText:"Chiudi"}},MuiPagination:{defaultProps:{"aria-label":"Navigazione impaginata",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Vai alla "}pagina ${t}`:e==="first"?"Vai alla prima pagina":e==="last"?"Vai all'ultima pagina":e==="next"?"Vai alla pagina successiva":"Vai alla pagina precedente"}}}},Jh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"すべて表示"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"最初のページへ":e==="last"?"最後のページへ":e==="next"?"次のページへ":"前のページへ",labelRowsPerPage:"ページあたりの行数:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}~${t} / ${r!==-1?r:`${t}以上`}`}},MuiRating:{defaultProps:{getLabelText:e=>`星${e}`,emptyLabelText:"星なし"}},MuiAutocomplete:{defaultProps:{clearText:"クリア",closeText:"閉じる",loadingText:"読み込み中…",noOptionsText:"データがありません",openText:"開く"}},MuiAlert:{defaultProps:{closeText:"閉じる"}},MuiPagination:{defaultProps:{"aria-label":"ページ選択",getItemAriaLabel:(e,t,r)=>e==="page"?`ページ${t}${r?"":"へ"}`:e==="first"?"最初のページへ":e==="last"?"最後のページへ":e==="next"?"次のページへ":"前のページへ"}}}},Yh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"경로 보기"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"첫 번째 페이지로 이동":e==="last"?"마지막 페이지로 이동":e==="next"?"다음 페이지로 이동":"이전 페이지로 이동",labelRowsPerPage:"페이지 당 행:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} / ${r!==-1?r:`${t}개 이상`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} 점`,emptyLabelText:"빈 텍스트"}},MuiAutocomplete:{defaultProps:{clearText:"지우기",closeText:"닫기",loadingText:"불러오는 중…",noOptionsText:"옵션 없음",openText:"열기"}},MuiAlert:{defaultProps:{closeText:"닫기"}},MuiPagination:{defaultProps:{"aria-label":"페이지네이션 네비게이션",getItemAriaLabel:(e,t,r)=>e==="page"?`${t} 번째 페이지${r?"":"로 이동"}`:e==="first"?"첫 번째 페이지로 이동":e==="last"?"마지막 페이지로 이동":e==="next"?"다음 페이지로 이동":"이전 페이지로 이동"}}}},Xh={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Vis sti"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Gå til første side":e==="last"?"Gå til siste side":e==="next"?"Gå til neste side":"Gå til forrige side",labelRowsPerPage:"Rader per side:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} av ${r!==-1?r:`mer enn ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Stjerne${e!==1?"r":""}`,emptyLabelText:"Tom"}},MuiAutocomplete:{defaultProps:{clearText:"Tøm",closeText:"Lukk",loadingText:"Laster inn…",noOptionsText:"Ingen alternativer",openText:"Åpne"}},MuiAlert:{defaultProps:{closeText:"Lukk"}},MuiPagination:{defaultProps:{"aria-label":"Paginering navigasjon",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Gå til "}side ${t}`:e==="first"?"Gå til første side":e==="last"?"Gå til siste side":e==="next"?"Gå til neste side":"Gå til forrige side"}}}},eC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Pad tonen"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Ga naar eerste pagina":e==="last"?"Ga naar laatste pagina":e==="next"?"Ga naar volgende pagina":"Ga naar vorige pagina",labelRowsPerPage:"Regels per pagina:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} van ${r!==-1?r:`meer dan ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Ster${e!==1?"ren":""}`,emptyLabelText:"Leeg"}},MuiAutocomplete:{defaultProps:{clearText:"Wissen",closeText:"Sluiten",loadingText:"Laden…",noOptionsText:"Geen opties",openText:"Openen"}},MuiAlert:{defaultProps:{closeText:"Sluiten"}},MuiPagination:{defaultProps:{"aria-label":"Navigatie via paginering",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Ga naar "}pagina ${t}`:e==="first"?"Ga naar eerste pagina":e==="last"?"Ga naar laatste pagina":e==="next"?"Ga naar volgende pagina":"Ga naar vorige pagina"}}}},tC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Pokaż ścieżkę"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Przejdź do pierwszej strony":e==="last"?"Przejdź do ostatniej strony":e==="next"?"Przejdź do następnej strony":"Przejdź do poprzedniej strony",labelRowsPerPage:"Wierszy na stronę:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} z ${r!==-1?r:`ponad ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>{let t="gwiazdek";const r=e%10;return(e<10||e>20)&&r>1&&r<5?t="gwiazdki":e===1&&(t="gwiazdka"),`${e} ${t}`},emptyLabelText:"Brak gwiazdek"}},MuiAutocomplete:{defaultProps:{clearText:"Wyczyść",closeText:"Zamknij",loadingText:"Ładowanie…",noOptionsText:"Brak opcji",openText:"Otwórz"}},MuiAlert:{defaultProps:{closeText:"Zamknij"}},MuiPagination:{defaultProps:{"aria-label":"Nawigacja podziału na strony",getItemAriaLabel:(e,t,r)=>e==="page"?r?`${t}. strona`:`Przejdź do ${t}. strony`:e==="first"?"Przejdź do pierwszej strony":e==="last"?"Przejdź do ostatniej strony":e==="next"?"Przejdź do następnej strony":"Przejdź do poprzedniej strony"}}}},rC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Mostrar caminho"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Ir para a primeira página":e==="last"?"Ir para a última página":e==="next"?"Ir para a próxima página":"Ir para a página anterior",labelRowsPerPage:"Linhas por página:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} de ${r!==-1?r:`mais de ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Estrela${e!==1?"s":""}`,emptyLabelText:"Vazio"}},MuiAutocomplete:{defaultProps:{clearText:"Limpar",closeText:"Fechar",loadingText:"Carregando…",noOptionsText:"Sem opções",openText:"Abrir"}},MuiAlert:{defaultProps:{closeText:"Fechar"}},MuiPagination:{defaultProps:{"aria-label":"Navegar pela paginação",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Ir para a "}página ${t}`:e==="first"?"Ir para a primeira página":e==="last"?"Ir para a última página":e==="next"?"Ir para a próxima página":"Ir para a página anterior"}}}},oC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Mostrar caminho"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Primeira página":e==="last"?"Última página":e==="next"?"Próxima página":"Página anterior",labelRowsPerPage:"Linhas por página:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} de ${r!==-1?r:`mais de ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Estrela${e!==1?"s":""}`,emptyLabelText:"Vazio"}},MuiAutocomplete:{defaultProps:{clearText:"Limpar",closeText:"Fechar",loadingText:"A carregar…",noOptionsText:"Sem opções",openText:"Abrir"}},MuiAlert:{defaultProps:{closeText:"Fechar"}},MuiPagination:{defaultProps:{"aria-label":"Navegar por páginas",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Ir para a "}página ${t}`:e==="first"?"Primeira página":e==="last"?"Última página":e==="next"?"Próxima página":"Página anterior"}}}},lC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Arată calea"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Mergi la prima pagină":e==="last"?"Mergi la ultima pagină":e==="next"?"Mergi la pagina următoare":"Mergi la pagina precedentă",labelRowsPerPage:"Rânduri pe pagină:"}},MuiRating:{defaultProps:{getLabelText:e=>`${e} St${e!==1?"ele":"ea"}`,emptyLabelText:"Gol"}},MuiAutocomplete:{defaultProps:{clearText:"Șterge",closeText:"Închide",loadingText:"Se încarcă…",noOptionsText:"Nicio opțiune",openText:"Deschide"}},MuiAlert:{defaultProps:{closeText:"Închide"}},MuiPagination:{defaultProps:{"aria-label":"Navigare prin paginare",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Mergi la "}pagina ${t}`:e==="first"?"Mergi la prima pagină":e==="last"?"Mergi la ultima pagină":e==="next"?"Mergi la pagina următoare":"Mergi la pagina precedentă"}}}},nC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Показать полный путь"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Перейти на первую страницу":e==="last"?"Перейти на последнюю страницу":e==="next"?"Перейти на следующую страницу":"Перейти на предыдущую страницу",labelRowsPerPage:"Строк на странице:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} из ${r!==-1?r:`более чем ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>{let t="Звёзд";const r=e%10;return r>1&&r<5?t="Звезды":r===1&&(t="Звезда"),`${e} ${t}`},emptyLabelText:"Рейтинг отсутствует"}},MuiAutocomplete:{defaultProps:{clearText:"Очистить",closeText:"Закрыть",loadingText:"Загрузка…",noOptionsText:"Нет доступных вариантов",openText:"Открыть"}},MuiAlert:{defaultProps:{closeText:"Закрыть"}},MuiPagination:{defaultProps:{"aria-label":"Навигация по страницам",getItemAriaLabel:(e,t,r)=>e==="page"?r?`${t} страница`:`Перейти на ${t} страницу`:e==="first"?"Перейти на первую страницу":e==="last"?"Перейти на последнюю страницу":e==="next"?"Перейти на следующую страницу":"Перейти на предыдущую страницу"}}}},aC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Ukázať cestu "}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Ísť na prvú stránku":e==="last"?"Ísť na poslednú stránku":e==="next"?"Ísť na ďaľšiu stránku":"Ísť na predchádzajúcu stránku",labelRowsPerPage:"Riadkov na stránke:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} z ${r!==-1?r:`viac ako ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>e===1?`${e} hviezdička`:e>=2&&e<=4?`${e} hviezdičky`:`${e} hviezdičiek`,emptyLabelText:"Prázdne"}},MuiAutocomplete:{defaultProps:{clearText:"Vymazať",closeText:"Zavrieť",loadingText:"Načítanie…",noOptionsText:"Žiadne možnosti",openText:"Otvoriť"}},MuiAlert:{defaultProps:{closeText:"Zavrieť"}},MuiPagination:{defaultProps:{"aria-label":"Navigácia stránkovanim",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Ísť na "}stránku ${t}`:e==="first"?"Ísť na prvú stránku":e==="last"?"Ísť na poslednú stránku":e==="next"?"Ísť na ďaľšiu stránku":"Ísť na predchádzajúcu stránku"}}}},iC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Visa sökväg"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Gå till första sidan":e==="last"?"Gå till sista sidan":e==="next"?"Gå till nästa sida":"Gå till föregående sida",labelRowsPerPage:"Rader per sida:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} av ${r!==-1?r:`fler än ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} ${e!==1?"Stjärnor":"Stjärna"}`,emptyLabelText:"Tom"}},MuiAutocomplete:{defaultProps:{clearText:"Rensa",closeText:"Stäng",loadingText:"Laddar…",noOptionsText:"Inga alternativ",openText:"Öppna"}},MuiAlert:{defaultProps:{closeText:"Stäng"}},MuiPagination:{defaultProps:{"aria-label":"Sidnavigering",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Gå till "}sida ${t}`:e==="first"?"Gå till första sidan":e==="last"?"Gå till sista sidan":e==="next"?"Gå till nästa sida":"Gå till föregående sida"}}}},sC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Yolu göster"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"İlk sayfaya git":e==="last"?"Son sayfaya git":e==="next"?"Sonraki sayfaya git":"Önceki sayfaya git",labelRowsPerPage:"Sayfa başına satır:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}-${t} / ${r!==-1?r:`${t}'den fazla`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} Yıldız`,emptyLabelText:"Boş"}},MuiAutocomplete:{defaultProps:{clearText:"Temizle",closeText:"Kapat",loadingText:"Yükleniyor…",noOptionsText:"Seçenek yok",openText:"Aç"}},MuiAlert:{defaultProps:{closeText:"Kapat"}},MuiPagination:{defaultProps:{"aria-label":"Sayfa navigasyonu",getItemAriaLabel:(e,t,r)=>e==="page"?`${t}. ${r?"sayfa":"sayfaya git"}`:e==="first"?"İlk sayfaya git":e==="last"?"Son sayfaya git":e==="next"?"Sonraki sayfaya git":"Önceki sayfaya git"}}}},uC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Показати шлях сторінок"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Перейти на першу сторінку":e==="last"?"Перейти на останню сторінку":e==="next"?"Перейти на наступну сторінку":"Перейти на попередню сторінку",labelRowsPerPage:"Рядків на сторінці:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} з ${r!==-1?r:`понад ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>{let t="Зірок";const r=e%10;return r>1&&r<5?t="Зірки":r===1&&(t="Зірка"),`${e} ${t}`},emptyLabelText:"Рейтинг відсутній"}},MuiAutocomplete:{defaultProps:{clearText:"Очистити",closeText:"Згорнути",loadingText:"Завантаження…",noOptionsText:"Немає варіантів",openText:"Розгорнути"}},MuiAlert:{defaultProps:{closeText:"Згорнути"}},MuiPagination:{defaultProps:{"aria-label":"Навігація сторінками",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Перейти на "}сторінку ${t}`:e==="first"?"Перейти на першу сторінку":e==="last"?"Перейти на останню сторінку":e==="next"?"Перейти на наступну сторінку":"Перейти на попередню сторінку"}}}},cC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"Mở ra"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Tới trang đầu tiên":e==="last"?"Tới trang cuối cùng":e==="next"?"Tới trang tiếp theo":"Về trang trước đó",labelRowsPerPage:"Số hàng mỗi trang:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} trong ${r!==-1?r:`nhiều hơn ${t}`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} sao`,emptyLabelText:"Không có dữ liệu"}},MuiAutocomplete:{defaultProps:{clearText:"Xóa",closeText:"Đóng",loadingText:"Đang tải…",noOptionsText:"Không có lựa chọn nào",openText:"Mở"}},MuiAlert:{defaultProps:{closeText:"Đóng"}},MuiPagination:{defaultProps:{"aria-label":"Thanh điều khiển trang",getItemAriaLabel:(e,t,r)=>e==="page"?`${r?"":"Tới "}trang ${t}`:e==="first"?"Tới trang đầu tiên":e==="last"?"Tới trang cuối cùng":e==="next"?"Tới trang tiếp theo":"Về trang trước đó"}}}},dC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"展开"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"第一页":e==="last"?"最后一页":e==="next"?"下一页":"上一页",labelRowsPerPage:"每页行数:",labelDisplayedRows:({from:e,to:t,count:r})=>`第 ${e} 条到第 ${t} 条,${r!==-1?`共 ${r} 条`:`至少 ${t} 条`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} 颗星`,emptyLabelText:"无标签"}},MuiAutocomplete:{defaultProps:{clearText:"清空",closeText:"关闭",loadingText:"加载中……",noOptionsText:"没有可用选项",openText:"打开"}},MuiAlert:{defaultProps:{closeText:"关闭"}}}},pC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"展開"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"第一頁":e==="last"?"最後一頁":e==="next"?"下一頁":"上一頁",labelRowsPerPage:"每頁行數:",labelDisplayedRows:({from:e,to:t,count:r})=>`第 ${e} 項至第 ${t} 項,${r!==-1?`共 ${r} 項`:`超過 ${t} 項`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} 粒星`,emptyLabelText:"無標籤"}},MuiAutocomplete:{defaultProps:{clearText:"清除",closeText:"關閉",loadingText:"載入中……",noOptionsText:"沒有可用選項",openText:"開啟"}},MuiAlert:{defaultProps:{closeText:"關閉"}}}},fC={components:{MuiBreadcrumbs:{defaultProps:{expandText:"展開"}},MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"第一頁":e==="last"?"最後一頁":e==="next"?"下一頁":"上一頁",labelRowsPerPage:"每頁數量:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e} ~ ${t} / ${r!==-1?r:`${t} 以上`}`}},MuiRating:{defaultProps:{getLabelText:e=>`${e} 顆星`,emptyLabelText:"無標籤"}},MuiAutocomplete:{defaultProps:{clearText:"清空",closeText:"關閉",loadingText:"載入中…",noOptionsText:"沒有可用選項",openText:"打開"}},MuiAlert:{defaultProps:{closeText:"關閉"}}}},Pe=(e,t)=>{var r;return{components:{MuiDataGrid:{defaultProps:{localeText:m({},e,{MuiTablePagination:(t==null||(r=t.components)==null||(r=r.MuiTablePagination)==null?void 0:r.defaultProps)||{}})}}}}},gC={noRowsLabel:"لا توجد صفوف",noResultsOverlayLabel:"لم يتم العثور على نتائج.",toolbarDensity:"الكثافة",toolbarDensityLabel:"الكثافة",toolbarDensityCompact:"مضغوط",toolbarDensityStandard:"قياسي",toolbarDensityComfortable:"مريح",toolbarColumns:"الأعمدة",toolbarColumnsLabel:"حدد أعمدة",toolbarFilters:"المُرشِحات",toolbarFiltersLabel:"إظهار المرشِحات",toolbarFiltersTooltipHide:"إخفاء المرشِحات",toolbarFiltersTooltipShow:"اظهر المرشِحات",toolbarFiltersTooltipActive:e=>e!==1?`${e} من المرشِحات النشطة`:"مرشِح نشط",toolbarQuickFilterPlaceholder:"بحث...",toolbarQuickFilterLabel:"بحث",toolbarQuickFilterDeleteIconLabel:"أزال",toolbarExport:"تصدير",toolbarExportLabel:"تصدير",toolbarExportCSV:"تنزيل كملف CSV",toolbarExportPrint:"طباعة",toolbarExportExcel:"تحميل كملف الإكسل",columnsPanelTextFieldLabel:"البحث عن العمود",columnsPanelTextFieldPlaceholder:"عنوان العمود",columnsPanelDragIconLabel:"إعادة ترتيب العمود",columnsPanelShowAllButton:"إظهار الكل",columnsPanelHideAllButton:"إخفاء الكل",filterPanelAddFilter:"إضافة مرشِح",filterPanelRemoveAll:"حذف الكل",filterPanelDeleteIconLabel:"حذف",filterPanelLogicOperator:"عامل منطقي",filterPanelOperator:"عامل",filterPanelOperatorAnd:"و",filterPanelOperatorOr:"أو",filterPanelColumns:"الأعمدة",filterPanelInputLabel:"القيمة",filterPanelInputPlaceholder:"ترشِيح قيمة",filterOperatorContains:"يحتوي",filterOperatorEquals:"يساوي",filterOperatorStartsWith:"يبدأ بـ",filterOperatorEndsWith:"ينتهي بـ",filterOperatorIs:"يكون",filterOperatorNot:"ليس",filterOperatorAfter:"بعد",filterOperatorOnOrAfter:"عند أو بعد",filterOperatorBefore:"قبل",filterOperatorOnOrBefore:"عند أو قبل",filterOperatorIsEmpty:"خالي",filterOperatorIsNotEmpty:"غير خالي",filterOperatorIsAnyOf:"أي من","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"يحتوي على",headerFilterOperatorEquals:"يساوي",headerFilterOperatorStartsWith:"يبدأ ب",headerFilterOperatorEndsWith:"ينتهي ب",headerFilterOperatorIs:"هو",headerFilterOperatorNot:"هو ليس",headerFilterOperatorAfter:"يقع بعد",headerFilterOperatorOnOrAfter:"هو على او بعد",headerFilterOperatorBefore:"يقع قبل",headerFilterOperatorOnOrBefore:"هو على او بعد",headerFilterOperatorIsEmpty:"هو فارغ",headerFilterOperatorIsNotEmpty:"هو ليس فارغ",headerFilterOperatorIsAnyOf:"هو أي من","headerFilterOperator=":"يساوي","headerFilterOperator!=":"لا يساوي","headerFilterOperator>":"أكبر من","headerFilterOperator>=":"أكبر من او يساوي","headerFilterOperator<":"اصغر من","headerFilterOperator<=":"اصغر من او يساوي",filterValueAny:"أي",filterValueTrue:"صائب",filterValueFalse:"خاطئ",columnMenuLabel:"القائمة",columnMenuShowColumns:"إظهار الأعمدة",columnMenuManageColumns:"إدارة الأعمدة",columnMenuFilter:"المرشِح",columnMenuHideColumn:"إخفاء",columnMenuUnsort:"الغاء الفرز",columnMenuSortAsc:"الفرز تصاعدياً",columnMenuSortDesc:"الفرز تنازلياً",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} من المرشِحات النشطة`:"مرشِح نشط",columnHeaderFiltersLabel:"إظهار المرشحات",columnHeaderSortIconLabel:"فرز",footerRowSelected:e=>e!==1?`تم تحديد ${e.toLocaleString()} من الصفوف`:"تم تحديد صف واحد",footerTotalRows:"إجمالي الصفوف:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} من ${t.toLocaleString()}`,checkboxSelectionHeaderName:"تحديد خانة الاختيار",checkboxSelectionSelectAllRows:"تحديد كل الصفوف",checkboxSelectionUnselectAllRows:"الغاء تحديد كل الصفوف",checkboxSelectionSelectRow:"تحديد صف",checkboxSelectionUnselectRow:"الغاء تحديد الصف",booleanCellTrueLabel:"نعم",booleanCellFalseLabel:"لا",actionsCellMore:"المزيد",pinToLeft:"التدبيس يميناً",pinToRight:"التدبيس يساراً",unpin:"الغاء التدبيس",treeDataGroupingHeaderName:"تجميع",treeDataExpand:"رؤية الأبناء",treeDataCollapse:"إخفاء الأبناء",groupingColumnHeaderName:"تجميع",groupColumn:e=>`تجميع حسب ${e}`,unGroupColumn:e=>`إيقاف التجميع حسب ${e}`,detailPanelToggle:"اظهار/اخفاء لوحة التفاصيل",expandDetailPanel:"توسيع",collapseDetailPanel:"طوي",rowReorderingHeaderName:"أعادة ترتيب الصفوف",aggregationMenuItemHeader:"الدلالات الحسابية",aggregationFunctionLabelSum:"مجموع",aggregationFunctionLabelAvg:"معدل",aggregationFunctionLabelMin:"الحد الادنى",aggregationFunctionLabelMax:"الحد الاقصى",aggregationFunctionLabelSize:"الحجم"},mC=Pe(gC,Rh),bC={components:{MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"Перайсці на першую старонку":e==="last"?"Перайсці на апошнюю старонку":e==="next"?"Перайсці на наступную старонку":"Перайсці на папярэднюю старонку",labelRowsPerPage:"Радкоў на старонцы:",labelDisplayedRows:({from:e,to:t,count:r})=>`${e}–${t} з ${r!==-1?r:`больш чым ${t}`}`}}}},hC={components:{MuiTablePagination:{defaultProps:{getItemAriaLabel:e=>e==="first"?"پہلے صفحے پر جائیں":e==="last"?"آخری صفحے پر جائیں":e==="next"?"اگلے صفحے پر جائیں":"پچھلے صفحے پر جائیں",labelRowsPerPage:"ایک صفحے پر قطاریں:",labelDisplayedRows:({from:e,to:t,count:r})=>`${r!==-1?`${r} میں سے`:`${t} سے ذیادہ میں سے`} ${e} سے ${t} قطاریں`}}}},Vo=(e,t)=>{let r=t.other;const o=e%10;return o>1&&o<5&&(e<10||e>20)?r=t.twoToFour:o===1&&e%100!==11&&(r=t.one),`${e} ${r}`},CC={noRowsLabel:"Няма радкоў",noResultsOverlayLabel:"Дадзеныя не знойдзены.",toolbarDensity:"Вышыня радка",toolbarDensityLabel:"Вышыня радка",toolbarDensityCompact:"Кампактны",toolbarDensityStandard:"Стандартны",toolbarDensityComfortable:"Камфортны",toolbarColumns:"Слупкі",toolbarColumnsLabel:"Выберыце слупкі",toolbarFilters:"Фільтры",toolbarFiltersLabel:"Паказаць фільтры",toolbarFiltersTooltipHide:"Схаваць фільтры",toolbarFiltersTooltipShow:"Паказаць фільтры",toolbarFiltersTooltipActive:e=>Vo(e,{one:"актыўны фільтр",twoToFour:"актыўных фільтра",other:"актыўных фільтраў"}),toolbarQuickFilterPlaceholder:"Пошук…",toolbarQuickFilterLabel:"Пошук",toolbarQuickFilterDeleteIconLabel:"Ачысціць",toolbarExport:"Экспарт",toolbarExportLabel:"Экспарт",toolbarExportCSV:"Спампаваць у фармаце CSV",toolbarExportPrint:"Друк",toolbarExportExcel:"Спампаваць у фармаце Excel",columnsPanelTextFieldLabel:"Знайсці слупок",columnsPanelTextFieldPlaceholder:"Загаловак слупка",columnsPanelDragIconLabel:"Змяніць чарговасць слупкоў",columnsPanelShowAllButton:"Паказаць усе",columnsPanelHideAllButton:"Схаваць усе",filterPanelAddFilter:"Дадаць фільтр",filterPanelDeleteIconLabel:"Выдаліць",filterPanelLogicOperator:"Лагічныя аператары",filterPanelOperator:"Аператары",filterPanelOperatorAnd:"І",filterPanelOperatorOr:"Або",filterPanelColumns:"Слупкі",filterPanelInputLabel:"Значэнне",filterPanelInputPlaceholder:"Значэнне фільтра",filterOperatorContains:"змяшчае",filterOperatorEquals:"роўны",filterOperatorStartsWith:"пачынаецца з",filterOperatorEndsWith:"скончваецца на",filterOperatorIs:"роўны",filterOperatorNot:"не роўны",filterOperatorAfter:"больш чым",filterOperatorOnOrAfter:"больш ці роўны",filterOperatorBefore:"меньш чым",filterOperatorOnOrBefore:"меньш ці роўны",filterOperatorIsEmpty:"пусты",filterOperatorIsNotEmpty:"не пусты",filterOperatorIsAnyOf:"усякі з",filterValueAny:"усякі",filterValueTrue:"праўда",filterValueFalse:"няпраўда",columnMenuLabel:"Меню",columnMenuShowColumns:"Паказаць слупкі",columnMenuManageColumns:"Кіраваць слупкамі",columnMenuFilter:"Фільтр",columnMenuHideColumn:"Схаваць",columnMenuUnsort:"Скасаваць сартыроўку",columnMenuSortAsc:"Сартыраваць па нарастанню",columnMenuSortDesc:"Сартыраваць па спаданню",columnHeaderFiltersTooltipActive:e=>Vo(e,{one:"актыўны фільтр",twoToFour:"актыўных фільтра",other:"актыўных фільтраў"}),columnHeaderFiltersLabel:"Паказаць фільтры",columnHeaderSortIconLabel:"Сартыраваць",footerRowSelected:e=>Vo(e,{one:"абраны радок",twoToFour:"абраных радка",other:"абраных радкоў"}),footerTotalRows:"Усяго радкоў:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} з ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Выбар сцяжка",checkboxSelectionSelectAllRows:"Абраць усе радкі",checkboxSelectionUnselectAllRows:"Скасаваць выбар усіх радкоў",checkboxSelectionSelectRow:"Абраць радок",checkboxSelectionUnselectRow:"Скасаваць выбар радка",booleanCellTrueLabel:"праўда",booleanCellFalseLabel:"няпраўда",actionsCellMore:"больш",pinToLeft:"Замацаваць злева",pinToRight:"Замацаваць справа",unpin:"Адмацаваць",treeDataGroupingHeaderName:"Група",treeDataExpand:"паказаць даччыныя элементы",treeDataCollapse:"схаваць даччыныя элементы",groupingColumnHeaderName:"Група",groupColumn:e=>`Групаваць па ${e}`,unGroupColumn:e=>`Разгрупаваць па ${e}`,detailPanelToggle:"Дэталі",expandDetailPanel:"Разгарнуць",collapseDetailPanel:"Згарнуць",rowReorderingHeaderName:"Змяненне чарговасці радкоў",aggregationMenuItemHeader:"Аб'яднанне дадзеных",aggregationFunctionLabelSum:"сума",aggregationFunctionLabelAvg:"сярэдняе",aggregationFunctionLabelMin:"мінімум",aggregationFunctionLabelMax:"максімум",aggregationFunctionLabelSize:"памер"},wC=Pe(CC,bC),SC={noRowsLabel:"Няма редове",noResultsOverlayLabel:"Няма намерени резултати.",toolbarDensity:"Гъстота",toolbarDensityLabel:"Гъстота",toolbarDensityCompact:"Компактна",toolbarDensityStandard:"Стандартна",toolbarDensityComfortable:"Комфортна",toolbarColumns:"Колони",toolbarColumnsLabel:"Покажи селектора на колони",toolbarFilters:"Филтри",toolbarFiltersLabel:"Покажи Филтрите",toolbarFiltersTooltipHide:"Скрий Филтрите",toolbarFiltersTooltipShow:"Покажи Филтрите",toolbarFiltersTooltipActive:e=>`${e} активни филтри`,toolbarQuickFilterPlaceholder:"Търси…",toolbarQuickFilterLabel:"Търсене",toolbarQuickFilterDeleteIconLabel:"Изчисти",toolbarExport:"Изтегли",toolbarExportLabel:"Изтегли",toolbarExportCSV:"Изтегли като CSV",toolbarExportPrint:"Принтиране",toolbarExportExcel:"Изтегли като Excel",columnsPanelTextFieldLabel:"Намери колона",columnsPanelTextFieldPlaceholder:"Заглавие на колона",columnsPanelDragIconLabel:"Пренареди на колона",columnsPanelShowAllButton:"Покажи Всички",columnsPanelHideAllButton:"Скрий Всички",filterPanelAddFilter:"Добави Филтър",filterPanelRemoveAll:"Премахни всички",filterPanelDeleteIconLabel:"Изтрий",filterPanelLogicOperator:"Логически оператор",filterPanelOperator:"Оператори",filterPanelOperatorAnd:"И",filterPanelOperatorOr:"Или",filterPanelColumns:"Колони",filterPanelInputLabel:"Стойност",filterPanelInputPlaceholder:"Стойност на филтъра",filterOperatorContains:"съдържа",filterOperatorEquals:"равно",filterOperatorStartsWith:"започва с",filterOperatorEndsWith:"завършва с",filterOperatorIs:"е",filterOperatorNot:"не е",filterOperatorAfter:"е след",filterOperatorOnOrAfter:"е на или след",filterOperatorBefore:"е преди",filterOperatorOnOrBefore:"е на или преди",filterOperatorIsEmpty:"е празен",filterOperatorIsNotEmpty:"не е празен",filterOperatorIsAnyOf:"е някой от","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Съдържа",headerFilterOperatorEquals:"Равнo",headerFilterOperatorStartsWith:"Започва с",headerFilterOperatorEndsWith:"Завършва с",headerFilterOperatorIs:"Равно е на",headerFilterOperatorNot:"Не се равнява на",headerFilterOperatorAfter:"След",headerFilterOperatorOnOrAfter:"След (включително)",headerFilterOperatorBefore:"Преди",headerFilterOperatorOnOrBefore:"Преди (включително)",headerFilterOperatorIsEmpty:"Празен",headerFilterOperatorIsNotEmpty:"Не е празен",headerFilterOperatorIsAnyOf:"Всичко от","headerFilterOperator=":"Равно","headerFilterOperator!=":"Различно","headerFilterOperator>":"По-голямо от","headerFilterOperator>=":"По-голямо или равно на","headerFilterOperator<":"По-малко от","headerFilterOperator<=":"По-малко или равно на",filterValueAny:"всякакви",filterValueTrue:"вярно",filterValueFalse:"невярно",columnMenuLabel:"Меню",columnMenuShowColumns:"Покажи колоните",columnMenuManageColumns:"Управление на колони",columnMenuFilter:"Филтри",columnMenuHideColumn:"Скрий",columnMenuUnsort:"Отмени сортирането",columnMenuSortAsc:"Сортирай по възходящ ред",columnMenuSortDesc:"Сортирай по низходящ ред",columnHeaderFiltersTooltipActive:e=>`${e} активни филтри`,columnHeaderFiltersLabel:"Покажи Филтрите",columnHeaderSortIconLabel:"Сортирай",footerRowSelected:e=>e!==1?`${e.toLocaleString()} избрани редове`:`${e.toLocaleString()} избран ред`,footerTotalRows:"Общо Редове:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} от ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Избор на квадратче",checkboxSelectionSelectAllRows:"Избери всички редове",checkboxSelectionUnselectAllRows:"Отмени избора на всички редове",checkboxSelectionSelectRow:"Избери ред",checkboxSelectionUnselectRow:"Отмени избора на ред",booleanCellTrueLabel:"да",booleanCellFalseLabel:"не",actionsCellMore:"още",pinToLeft:"Закачи в ляво",pinToRight:"Закачи в дясно",unpin:"Откачи",treeDataGroupingHeaderName:"Група",treeDataExpand:"виж деца",treeDataCollapse:"скрий децата",groupingColumnHeaderName:"Група",groupColumn:e=>`Групирай по ${e}`,unGroupColumn:e=>`Спри групиране по ${e}`,detailPanelToggle:"Превключване на панела с детайли",expandDetailPanel:"Разгъване",collapseDetailPanel:"Свиване",rowReorderingHeaderName:"Подредба на редове",aggregationMenuItemHeader:"Агрегиране",aggregationFunctionLabelSum:"сума",aggregationFunctionLabelAvg:"срст",aggregationFunctionLabelMin:"мин",aggregationFunctionLabelMax:"макс",aggregationFunctionLabelSize:"размер"},OC=Pe(SC,Hh),PC={noRowsLabel:"Žádné záznamy",noResultsOverlayLabel:"Nenašly se žadné výsledky.",toolbarDensity:"Zobrazení",toolbarDensityLabel:"Zobrazení",toolbarDensityCompact:"Kompaktní",toolbarDensityStandard:"Standartní",toolbarDensityComfortable:"Komfortní",toolbarColumns:"Sloupce",toolbarColumnsLabel:"Vybrat sloupec",toolbarFilters:"Filtry",toolbarFiltersLabel:"Zobrazit filtry",toolbarFiltersTooltipHide:"Skrýt filtry",toolbarFiltersTooltipShow:"Zobrazit filtry",toolbarFiltersTooltipActive:e=>{let t="aktivních filtrů";return e>1&&e<5?t="aktivní filtry":e===1&&(t="aktivní filtr"),`${e} ${t}`},toolbarQuickFilterPlaceholder:"Hledat…",toolbarQuickFilterLabel:"Hledat",toolbarQuickFilterDeleteIconLabel:"Vymazat",toolbarExport:"Export",toolbarExportLabel:"Export",toolbarExportCSV:"Stáhnout jako CSV",toolbarExportPrint:"Vytisknout",toolbarExportExcel:"Stáhnout jako Excel",columnsPanelTextFieldLabel:"Najít sloupec",columnsPanelTextFieldPlaceholder:"Název sloupce",columnsPanelDragIconLabel:"Uspořádat sloupce",columnsPanelShowAllButton:"Zobrazit vše",columnsPanelHideAllButton:"Skrýt vše",filterPanelAddFilter:"Přidat filtr",filterPanelRemoveAll:"Odstranit vše",filterPanelDeleteIconLabel:"Odstranit",filterPanelLogicOperator:"Logický operátor",filterPanelOperator:"Operátory",filterPanelOperatorAnd:"A",filterPanelOperatorOr:"Nebo",filterPanelColumns:"Sloupce",filterPanelInputLabel:"Hodnota",filterPanelInputPlaceholder:"Hodnota filtru",filterOperatorContains:"obsahuje",filterOperatorEquals:"rovná se",filterOperatorStartsWith:"začíná na",filterOperatorEndsWith:"končí na",filterOperatorIs:"je",filterOperatorNot:"není",filterOperatorAfter:"je po",filterOperatorOnOrAfter:"je po včetně",filterOperatorBefore:"je před",filterOperatorOnOrBefore:"je před včetně",filterOperatorIsEmpty:"je prázdný",filterOperatorIsNotEmpty:"není prázdný",filterOperatorIsAnyOf:"je jeden z","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Obsahuje",headerFilterOperatorEquals:"Rovná se",headerFilterOperatorStartsWith:"Začíná na",headerFilterOperatorEndsWith:"Končí na",headerFilterOperatorIs:"Je",headerFilterOperatorNot:"Není",headerFilterOperatorAfter:"Je po",headerFilterOperatorOnOrAfter:"Je po včetně",headerFilterOperatorBefore:"Je před",headerFilterOperatorOnOrBefore:"Je před včetně",headerFilterOperatorIsEmpty:"Je prázdný",headerFilterOperatorIsNotEmpty:"Není prázdný",headerFilterOperatorIsAnyOf:"Je jeden z","headerFilterOperator=":"Rovná se","headerFilterOperator!=":"Nerovná se","headerFilterOperator>":"Větší než","headerFilterOperator>=":"Větší než nebo rovno","headerFilterOperator<":"Menší než","headerFilterOperator<=":"Menší než nebo rovno",filterValueAny:"jakýkoliv",filterValueTrue:"ano",filterValueFalse:"ne",columnMenuLabel:"Menu",columnMenuShowColumns:"Zobrazit sloupce",columnMenuManageColumns:"Spravovat sloupce",columnMenuFilter:"Filtr",columnMenuHideColumn:"Skrýt",columnMenuUnsort:"Zrušit filtry",columnMenuSortAsc:"Seřadit vzestupně",columnMenuSortDesc:"Seřadit sestupně",columnHeaderFiltersTooltipActive:e=>{let t="aktivních filtrů";return e>1&&e<5?t="aktivní filtry":e===1&&(t="aktivní filtr"),`${e} ${t}`},columnHeaderFiltersLabel:"Zobrazit filtry",columnHeaderSortIconLabel:"Filtrovat",footerRowSelected:e=>{let t="vybraných záznamů";return e>1&&e<5?t="vybrané záznamy":e===1&&(t="vybraný záznam"),`${e} ${t}`},footerTotalRows:"Celkem řádků:",footerTotalVisibleRows:(e,t)=>{const r=t.toString(),o=r[0],l=["4","6","7"].includes(o)||o==="1"&&r.length%3===0?"ze":"z";return`${e.toLocaleString()} ${l} ${t.toLocaleString()}`},checkboxSelectionHeaderName:"Výběr řádku",checkboxSelectionSelectAllRows:"Označit všechny řádky",checkboxSelectionUnselectAllRows:"Odznačit všechny řádky",checkboxSelectionSelectRow:"Označit řádek",checkboxSelectionUnselectRow:"Odznačit řádek",booleanCellTrueLabel:"ano",booleanCellFalseLabel:"ne",actionsCellMore:"více",pinToLeft:"Připnout vlevo",pinToRight:"Připnout vpravo",unpin:"Odepnout",treeDataGroupingHeaderName:"Skupina",treeDataExpand:"zobrazit potomky",treeDataCollapse:"skrýt potomky",groupingColumnHeaderName:"Skupina",groupColumn:e=>`Seskupit podle ${e}`,unGroupColumn:e=>`Přestat seskupovat podle ${e}`,detailPanelToggle:"Přepnout detail panelu",expandDetailPanel:"Rozbalit",collapseDetailPanel:"Sbalit",rowReorderingHeaderName:"Přeuspořádávání řádků",aggregationMenuItemHeader:"Seskupování",aggregationFunctionLabelSum:"součet",aggregationFunctionLabelAvg:"průměr",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"max",aggregationFunctionLabelSize:"počet"},xC=Pe(PC,_h),vC={noRowsLabel:"Ingen rækker",noResultsOverlayLabel:"Ingen resultater",toolbarDensity:"Tæthed",toolbarDensityLabel:"Tæthed",toolbarDensityCompact:"Kompakt",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Luftig",toolbarColumns:"Kolonner",toolbarColumnsLabel:"Vælg kolonner",toolbarFilters:"Filtre",toolbarFiltersLabel:"Vis filtre",toolbarFiltersTooltipHide:"Skjul filtre",toolbarFiltersTooltipShow:"Vis filtre",toolbarFiltersTooltipActive:e=>e!==1?`${e} aktive filtre`:`${e} aktivt filter`,toolbarQuickFilterPlaceholder:"Søg…",toolbarQuickFilterLabel:"Søg",toolbarQuickFilterDeleteIconLabel:"Ryd",toolbarExport:"Eksport",toolbarExportLabel:"Eksporter",toolbarExportCSV:"Download som CSV",toolbarExportPrint:"Print",toolbarExportExcel:"Download som Excel",columnsPanelTextFieldLabel:"Find kolonne",columnsPanelTextFieldPlaceholder:"Kolonne titel",columnsPanelDragIconLabel:"Reorder kolonne",columnsPanelShowAllButton:"Vis alle",columnsPanelHideAllButton:"Skjul alle",filterPanelAddFilter:"Tilføj filter",filterPanelRemoveAll:"Fjern alle",filterPanelDeleteIconLabel:"Slet",filterPanelLogicOperator:"Logisk operator",filterPanelOperator:"Operator",filterPanelOperatorAnd:"Og",filterPanelOperatorOr:"Eller",filterPanelColumns:"Kolonner",filterPanelInputLabel:"Værdi",filterPanelInputPlaceholder:"Filterværdi",filterOperatorContains:"indeholder",filterOperatorEquals:"lig med",filterOperatorStartsWith:"begynder med",filterOperatorEndsWith:"ender med",filterOperatorIs:"er lig med",filterOperatorNot:"er ikke lig med",filterOperatorAfter:"efter",filterOperatorOnOrAfter:"på eller efter",filterOperatorBefore:"før",filterOperatorOnOrBefore:"på eller før",filterOperatorIsEmpty:"indeholder ikke data",filterOperatorIsNotEmpty:"indeholder data",filterOperatorIsAnyOf:"indeholder en af","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Indeholder",headerFilterOperatorEquals:"Lig med",headerFilterOperatorStartsWith:"Begynder med",headerFilterOperatorEndsWith:"Ender med",headerFilterOperatorIs:"Er lig med",headerFilterOperatorNot:"Er ikke lig med",headerFilterOperatorAfter:"Efter",headerFilterOperatorOnOrAfter:"På eller efter",headerFilterOperatorBefore:"Før",headerFilterOperatorOnOrBefore:"På eller før",headerFilterOperatorIsEmpty:"Indeholder ikke data",headerFilterOperatorIsNotEmpty:"Indeholder data",headerFilterOperatorIsAnyOf:"Indeholder en af","headerFilterOperator=":"Lig med","headerFilterOperator!=":"Ikke lig med","headerFilterOperator>":"Større end","headerFilterOperator>=":"Større end eller lig med","headerFilterOperator<":"Mindre end","headerFilterOperator<=":"Mindre end eller lig med",filterValueAny:"hvilken som helst",filterValueTrue:"positiv",filterValueFalse:"negativ",columnMenuLabel:"Menu",columnMenuShowColumns:"Vis kolonner",columnMenuManageColumns:"Administrer kolonner",columnMenuFilter:"Filtrer",columnMenuHideColumn:"Skjul kolonne",columnMenuUnsort:"Fjern sortering",columnMenuSortAsc:"Sorter stigende",columnMenuSortDesc:"Sorter faldende",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} aktive filtre`:"Ét aktivt filter",columnHeaderFiltersLabel:"Vis filtre",columnHeaderSortIconLabel:"Sorter",footerRowSelected:e=>e!==1?`${e.toLocaleString()} rækker valgt`:"Én række valgt",footerTotalRows:"Antal rækker i alt:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} af ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Afkrydsningsvalg",checkboxSelectionSelectAllRows:"Vælg alle rækker",checkboxSelectionUnselectAllRows:"Fravælg alle rækker",checkboxSelectionSelectRow:"Vælg række",checkboxSelectionUnselectRow:"Fravælg række",booleanCellTrueLabel:"ja",booleanCellFalseLabel:"nej",actionsCellMore:"mere",pinToLeft:"Fastgør til venstre",pinToRight:"Fastgør til højre",unpin:"Frigiv",treeDataGroupingHeaderName:"Gruppe",treeDataExpand:"Vis underelementer",treeDataCollapse:"Skjul underelementer",groupingColumnHeaderName:"Gruppe",groupColumn:e=>`Gruppér efter ${e}`,unGroupColumn:e=>`Fjern gruppering efter ${e}`,detailPanelToggle:"Udvid/kollaps detaljepanel",expandDetailPanel:"Udvid",collapseDetailPanel:"Kollaps",rowReorderingHeaderName:"Omarrangering af rækker",aggregationMenuItemHeader:"Aggregering",aggregationFunctionLabelSum:"sum",aggregationFunctionLabelAvg:"gns",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"max",aggregationFunctionLabelSize:"størrelse"},FC=Pe(vC,Vh),yC={noRowsLabel:"Keine Einträge",noResultsOverlayLabel:"Keine Ergebnisse gefunden.",toolbarDensity:"Zeilenhöhe",toolbarDensityLabel:"Zeilenhöhe",toolbarDensityCompact:"Kompakt",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Breit",toolbarColumns:"Spalten",toolbarColumnsLabel:"Zeige Spaltenauswahl",toolbarFilters:"Filter",toolbarFiltersLabel:"Zeige Filter",toolbarFiltersTooltipHide:"Verberge Filter",toolbarFiltersTooltipShow:"Zeige Filter",toolbarFiltersTooltipActive:e=>e!==1?`${e} aktive Filter`:`${e} aktiver Filter`,toolbarQuickFilterPlaceholder:"Suchen…",toolbarQuickFilterLabel:"Suchen",toolbarQuickFilterDeleteIconLabel:"Löschen",toolbarExport:"Exportieren",toolbarExportLabel:"Exportieren",toolbarExportCSV:"Download als CSV",toolbarExportPrint:"Drucken",toolbarExportExcel:"Download als Excel",columnsPanelTextFieldLabel:"Finde Spalte",columnsPanelTextFieldPlaceholder:"Spaltenüberschrift",columnsPanelDragIconLabel:"Spalte umsortieren",columnsPanelShowAllButton:"Zeige alle",columnsPanelHideAllButton:"Verberge alle",filterPanelAddFilter:"Filter hinzufügen",filterPanelRemoveAll:"Alle entfernen",filterPanelDeleteIconLabel:"Löschen",filterPanelLogicOperator:"Logische Operatoren",filterPanelOperator:"Operatoren",filterPanelOperatorAnd:"Und",filterPanelOperatorOr:"Oder",filterPanelColumns:"Spalten",filterPanelInputLabel:"Wert",filterPanelInputPlaceholder:"Wert filtern",filterOperatorContains:"enthält",filterOperatorEquals:"ist gleich",filterOperatorStartsWith:"beginnt mit",filterOperatorEndsWith:"endet mit",filterOperatorIs:"ist",filterOperatorNot:"ist nicht",filterOperatorAfter:"ist nach",filterOperatorOnOrAfter:"ist am oder nach",filterOperatorBefore:"ist vor",filterOperatorOnOrBefore:"ist am oder vor",filterOperatorIsEmpty:"ist leer",filterOperatorIsNotEmpty:"ist nicht leer",filterOperatorIsAnyOf:"ist einer der Werte","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Enthält",headerFilterOperatorEquals:"Gleich",headerFilterOperatorStartsWith:"Beginnt mit",headerFilterOperatorEndsWith:"Endet mit",headerFilterOperatorIs:"Ist",headerFilterOperatorNot:"Ist nicht",headerFilterOperatorAfter:"Ist nach",headerFilterOperatorOnOrAfter:"Ist am oder nach",headerFilterOperatorBefore:"Ist vor",headerFilterOperatorOnOrBefore:"Ist am oder vor",headerFilterOperatorIsEmpty:"Ist leer",headerFilterOperatorIsNotEmpty:"Ist nicht leer",headerFilterOperatorIsAnyOf:"Ist eines von","headerFilterOperator=":"Gleich","headerFilterOperator!=":"Ungleich","headerFilterOperator>":"Größer als","headerFilterOperator>=":"Größer als oder gleich","headerFilterOperator<":"Kleiner als","headerFilterOperator<=":"Kleiner als oder gleich",filterValueAny:"Beliebig",filterValueTrue:"Ja",filterValueFalse:"Nein",columnMenuLabel:"Menü",columnMenuShowColumns:"Zeige alle Spalten",columnMenuManageColumns:"Spalten verwalten",columnMenuFilter:"Filter",columnMenuHideColumn:"Verbergen",columnMenuUnsort:"Sortierung deaktivieren",columnMenuSortAsc:"Sortiere aufsteigend",columnMenuSortDesc:"Sortiere absteigend",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} aktive Filter`:`${e} aktiver Filter`,columnHeaderFiltersLabel:"Zeige Filter",columnHeaderSortIconLabel:"Sortieren",footerRowSelected:e=>e!==1?`${e.toLocaleString()} Einträge ausgewählt`:`${e.toLocaleString()} Eintrag ausgewählt`,footerTotalRows:"Gesamt:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} von ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Checkbox Auswahl",checkboxSelectionSelectAllRows:"Alle Zeilen auswählen",checkboxSelectionUnselectAllRows:"Alle Zeilen abwählen",checkboxSelectionSelectRow:"Zeile auswählen",checkboxSelectionUnselectRow:"Zeile abwählen",booleanCellTrueLabel:"Ja",booleanCellFalseLabel:"Nein",actionsCellMore:"Mehr",pinToLeft:"Links anheften",pinToRight:"Rechts anheften",unpin:"Loslösen",treeDataGroupingHeaderName:"Gruppe",treeDataExpand:"Kinder einblenden",treeDataCollapse:"Kinder ausblenden",groupingColumnHeaderName:"Gruppierung",groupColumn:e=>`Gruppieren nach ${e}`,unGroupColumn:e=>`Gruppierung nach ${e} aufheben`,detailPanelToggle:"Detailansicht Kippschalter",expandDetailPanel:"Aufklappen",collapseDetailPanel:"Zuklappen",rowReorderingHeaderName:"Reihen neu ordnen",aggregationMenuItemHeader:"Aggregation",aggregationFunctionLabelSum:"Summe",aggregationFunctionLabelAvg:"Mittelwert",aggregationFunctionLabelMin:"Minimum",aggregationFunctionLabelMax:"Maximum",aggregationFunctionLabelSize:"Anzahl"},IC=Pe(yC,Nh),MC={noRowsLabel:"Δεν υπάρχουν καταχωρήσεις",noResultsOverlayLabel:"Δεν βρέθηκαν αποτελέσματα.",toolbarDensity:"Ύψος σειράς",toolbarDensityLabel:"Ύψος σειράς",toolbarDensityCompact:"Συμπαγής",toolbarDensityStandard:"Προκαθορισμένο",toolbarDensityComfortable:"Πλατύ",toolbarColumns:"Στήλες",toolbarColumnsLabel:"Επιλέξτε στήλες",toolbarFilters:"Φίλτρα",toolbarFiltersLabel:"Εμφάνιση φίλτρων",toolbarFiltersTooltipHide:"Απόκρυψη φίλτρων",toolbarFiltersTooltipShow:"Εμφάνιση φίλτρων",toolbarFiltersTooltipActive:e=>e!==1?`${e} ενεργά φίλτρα`:`${e} ενεργό φίλτρο`,toolbarQuickFilterPlaceholder:"Αναζήτηση…",toolbarQuickFilterLabel:"Αναζήτηση",toolbarQuickFilterDeleteIconLabel:"Καθαρισμός",toolbarExport:"Εξαγωγή",toolbarExportLabel:"Εξαγωγή",toolbarExportCSV:"Λήψη ως CSV",toolbarExportPrint:"Εκτύπωση",toolbarExportExcel:"Λήψη ως Excel",columnsPanelTextFieldLabel:"Εύρεση στήλης",columnsPanelTextFieldPlaceholder:"Επικεφαλίδα στήλης",columnsPanelDragIconLabel:"Αναδιάταξη στήλης",columnsPanelShowAllButton:"Προβολή όλων",columnsPanelHideAllButton:"Απόκρυψη όλων",filterPanelAddFilter:"Προσθήκη φίλτρου",filterPanelRemoveAll:"Αφαίρεση όλων",filterPanelDeleteIconLabel:"Διαγραφή",filterPanelLogicOperator:"Λογικός τελεστής",filterPanelOperator:"Τελεστές",filterPanelOperatorAnd:"Καί",filterPanelOperatorOr:"Ή",filterPanelColumns:"Στήλες",filterPanelInputLabel:"Τιμή",filterPanelInputPlaceholder:"Τιμή φίλτρου",filterOperatorContains:"περιέχει",filterOperatorEquals:"ισούται",filterOperatorStartsWith:"ξεκινάει με",filterOperatorEndsWith:"τελειώνει με",filterOperatorIs:"είναι",filterOperatorNot:"δεν είναι",filterOperatorAfter:"είναι μετά",filterOperatorOnOrAfter:"είναι ίσο ή μετά",filterOperatorBefore:"είναι πριν",filterOperatorOnOrBefore:"είναι ίσο ή πριν",filterOperatorIsEmpty:"είναι κενό",filterOperatorIsNotEmpty:"δεν είναι κενό",filterOperatorIsAnyOf:"είναι οποιοδήποτε από","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Περιέχει",headerFilterOperatorEquals:"Ισούται",headerFilterOperatorStartsWith:"Ξεκινάει με",headerFilterOperatorEndsWith:"Τελειώνει με",headerFilterOperatorIs:"Είναι",headerFilterOperatorNot:"Δεν είναι",headerFilterOperatorAfter:"Είναι μετά",headerFilterOperatorOnOrAfter:"Είναι ίσο ή μετά",headerFilterOperatorBefore:"Είναι πριν",headerFilterOperatorOnOrBefore:"Είναι ίσο ή πριν",headerFilterOperatorIsEmpty:"Είναι κενό",headerFilterOperatorIsNotEmpty:"Δεν είναι κενό",headerFilterOperatorIsAnyOf:"Είναι οποιοδήποτε από","headerFilterOperator=":"Ισούται","headerFilterOperator!=":"Δεν ισούται","headerFilterOperator>":"Μεγαλύτερο από","headerFilterOperator>=":"Μεγαλύτερο ή ίσο με","headerFilterOperator<":"Μικρότερο από","headerFilterOperator<=":"Μικρότερο ή ίσο με",filterValueAny:"οποιοδήποτε",filterValueTrue:"αληθές",filterValueFalse:"ψευδές",columnMenuLabel:"Μενού",columnMenuShowColumns:"Εμφάνιση στηλών",columnMenuManageColumns:"Διαχείριση στηλών",columnMenuFilter:"Φίλτρο",columnMenuHideColumn:"Απόκρυψη",columnMenuUnsort:"Απενεργοποίηση ταξινόμησης",columnMenuSortAsc:"Ταξινόμηση σε αύξουσα σειρά",columnMenuSortDesc:"Ταξινόμηση σε φθίνουσα σειρά",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} ενεργά φίλτρα`:`${e} ενεργό φίλτρο`,columnHeaderFiltersLabel:"Εμφάνιση φίλτρων",columnHeaderSortIconLabel:"Ταξινόμηση",footerRowSelected:e=>e!==1?`${e.toLocaleString()} επιλεγμένες γραμμές`:`${e.toLocaleString()} επιλεγμένη γραμμή`,footerTotalRows:"Σύνολο Γραμμών:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} από ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Επιλογή πλαισίου ελέγχου",checkboxSelectionSelectAllRows:"Επιλέξτε όλες τις σειρές",checkboxSelectionUnselectAllRows:"Καταργήση επιλογής όλων των σειρών",checkboxSelectionSelectRow:"Επιλογή γραμμής",checkboxSelectionUnselectRow:"Καταργήση επιλογής γραμμής",booleanCellTrueLabel:"ναί",booleanCellFalseLabel:"όχι",actionsCellMore:"περισσότερα",pinToLeft:"Καρφιτσώμα στα αριστερά",pinToRight:"Καρφιτσώμα στα δεξιά",unpin:"Ξεκαρφίτσωμα",treeDataGroupingHeaderName:"Ομαδοποίηση",treeDataExpand:"εμφάνιση περιεχομένων",treeDataCollapse:"απόκρυψη περιεχομένων",groupingColumnHeaderName:"Ομαδοποίηση",groupColumn:e=>`Ομαδοποίηση κατά ${e}`,unGroupColumn:e=>`Διακοπή ομαδοποίησης κατά ${e}`,detailPanelToggle:"Εναλλαγή πίνακα λεπτομερειών",expandDetailPanel:"Ανάπτυξη",collapseDetailPanel:"Σύμπτυξη",rowReorderingHeaderName:"Αναδιάταξη γραμμών",aggregationMenuItemHeader:"Συσσωμάτωση",aggregationFunctionLabelSum:"άθροισμα",aggregationFunctionLabelAvg:"μέση τιμή",aggregationFunctionLabelMin:"ελάχιστο",aggregationFunctionLabelMax:"μέγιστο",aggregationFunctionLabelSize:"μέγεθος"},kC=Pe(MC,Gh),EC=Pe(sn,zh),LC={noRowsLabel:"Sin filas",noResultsOverlayLabel:"Resultados no encontrados",toolbarDensity:"Densidad",toolbarDensityLabel:"Densidad",toolbarDensityCompact:"Compacta",toolbarDensityStandard:"Estándar",toolbarDensityComfortable:"Cómoda",toolbarColumns:"Columnas",toolbarColumnsLabel:"Seleccionar columnas",toolbarFilters:"Filtros",toolbarFiltersLabel:"Mostrar filtros",toolbarFiltersTooltipHide:"Ocultar filtros",toolbarFiltersTooltipShow:"Mostrar filtros",toolbarFiltersTooltipActive:e=>e>1?`${e} filtros activos`:`${e} filtro activo`,toolbarQuickFilterPlaceholder:"Buscar…",toolbarQuickFilterLabel:"Buscar",toolbarQuickFilterDeleteIconLabel:"Limpiar",toolbarExport:"Exportar",toolbarExportLabel:"Exportar",toolbarExportCSV:"Descargar como CSV",toolbarExportPrint:"Imprimir",toolbarExportExcel:"Descargar como Excel",columnsPanelTextFieldLabel:"Columna de búsqueda",columnsPanelTextFieldPlaceholder:"Título de columna",columnsPanelDragIconLabel:"Reordenar columna",columnsPanelShowAllButton:"Mostrar todo",columnsPanelHideAllButton:"Ocultar todo",filterPanelAddFilter:"Agregar filtro",filterPanelRemoveAll:"Remover todos",filterPanelDeleteIconLabel:"Borrar",filterPanelLogicOperator:"Operador lógico",filterPanelOperator:"Operadores",filterPanelOperatorAnd:"Y",filterPanelOperatorOr:"O",filterPanelColumns:"Columnas",filterPanelInputLabel:"Valor",filterPanelInputPlaceholder:"Valor de filtro",filterOperatorContains:"contiene",filterOperatorEquals:"es igual",filterOperatorStartsWith:"comienza con",filterOperatorEndsWith:"termina con",filterOperatorIs:"es",filterOperatorNot:"no es",filterOperatorAfter:"es posterior",filterOperatorOnOrAfter:"es en o posterior",filterOperatorBefore:"es anterior",filterOperatorOnOrBefore:"es en o anterior",filterOperatorIsEmpty:"esta vacío",filterOperatorIsNotEmpty:"no esta vacío",filterOperatorIsAnyOf:"es cualquiera de","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Contiene",headerFilterOperatorEquals:"Es igual a",headerFilterOperatorStartsWith:"Comienza con",headerFilterOperatorEndsWith:"Termina con",headerFilterOperatorIs:"Es",headerFilterOperatorNot:"No es",headerFilterOperatorAfter:"Esta después de",headerFilterOperatorOnOrAfter:"Esta en o después de",headerFilterOperatorBefore:"Esta antes de",headerFilterOperatorOnOrBefore:"Esta en o antes de",headerFilterOperatorIsEmpty:"Esta vacío",headerFilterOperatorIsNotEmpty:"No esta vacío",headerFilterOperatorIsAnyOf:"Es cualquiera de","headerFilterOperator=":"Es igual a","headerFilterOperator!=":"Es diferente a","headerFilterOperator>":"Es mayor que","headerFilterOperator>=":"Es mayor o igual que","headerFilterOperator<":"Es menor que","headerFilterOperator<=":"Es menor o igual que",filterValueAny:"cualquiera",filterValueTrue:"verdadero",filterValueFalse:"falso",columnMenuLabel:"Menú",columnMenuShowColumns:"Mostrar columnas",columnMenuManageColumns:"Administrar columnas",columnMenuFilter:"Filtro",columnMenuHideColumn:"Ocultar",columnMenuUnsort:"Desordenar",columnMenuSortAsc:"Ordenar ASC",columnMenuSortDesc:"Ordenar DESC",columnHeaderFiltersTooltipActive:e=>e>1?`${e} filtros activos`:`${e} filtro activo`,columnHeaderFiltersLabel:"Mostrar filtros",columnHeaderSortIconLabel:"Ordenar",footerRowSelected:e=>e>1?`${e.toLocaleString()} filas seleccionadas`:`${e.toLocaleString()} fila seleccionada`,footerTotalRows:"Filas Totales:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} de ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Seleccionar casilla",checkboxSelectionSelectAllRows:"Seleccionar todas las filas",checkboxSelectionUnselectAllRows:"Deseleccionar todas las filas",checkboxSelectionSelectRow:"Seleccionar fila",checkboxSelectionUnselectRow:"Deseleccionar fila",booleanCellTrueLabel:"si",booleanCellFalseLabel:"no",actionsCellMore:"más",pinToLeft:"Anclar a la izquierda",pinToRight:"Anclar a la derecha",unpin:"Desanclar",treeDataGroupingHeaderName:"Grupo",treeDataExpand:"mostrar hijos",treeDataCollapse:"ocultar hijos",groupingColumnHeaderName:"Grupo",groupColumn:e=>`Agrupar por ${e}`,unGroupColumn:e=>`No agrupar por ${e}`,detailPanelToggle:"Alternar detalle",expandDetailPanel:"Expandir",collapseDetailPanel:"Contraer",rowReorderingHeaderName:"Reordenar filas",aggregationMenuItemHeader:"Agregación",aggregationFunctionLabelSum:"sum",aggregationFunctionLabelAvg:"avg",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"max",aggregationFunctionLabelSize:"tamaño"},TC=Pe(LC,jh),DC={noRowsLabel:"بدون سطر",noResultsOverlayLabel:"نتیجه ای پیدا نشد.",toolbarDensity:"تراکم",toolbarDensityLabel:"تراکم",toolbarDensityCompact:"فشرده",toolbarDensityStandard:"استاندارد",toolbarDensityComfortable:"راحت",toolbarColumns:"ستون‌ها",toolbarColumnsLabel:"ستون‌ها را انتخاب کنید",toolbarFilters:"فیلترها",toolbarFiltersLabel:"نمایش فیلترها",toolbarFiltersTooltipHide:"مخفی کردن فیلترها",toolbarFiltersTooltipShow:"نمایش فیلترها",toolbarFiltersTooltipActive:e=>e!==1?`${e} فیلترهای فعال`:`${e} فیلتر فعال`,toolbarQuickFilterPlaceholder:"جستجو...",toolbarQuickFilterLabel:"جستجو",toolbarQuickFilterDeleteIconLabel:"حذف",toolbarExport:"خروجی",toolbarExportLabel:"خروجی",toolbarExportCSV:"دانلود به صورت CSV",toolbarExportPrint:"چاپ",toolbarExportExcel:"دانلود به صورت اکسل",columnsPanelTextFieldLabel:"پیداکردن ستون",columnsPanelTextFieldPlaceholder:"عنوان ستون",columnsPanelDragIconLabel:"جا‌به‌جایی ستون",columnsPanelShowAllButton:"نمایش همه",columnsPanelHideAllButton:"مخفی همه",filterPanelAddFilter:"افزودن فیلتر",filterPanelRemoveAll:"حذف همه",filterPanelDeleteIconLabel:"حذف",filterPanelLogicOperator:"عملگر منطقی",filterPanelOperator:"عملگرها",filterPanelOperatorAnd:"و",filterPanelOperatorOr:"یا",filterPanelColumns:"ستون‌ها",filterPanelInputLabel:"مقدار",filterPanelInputPlaceholder:"فیلتر مقدار",filterOperatorContains:"شامل",filterOperatorEquals:"مساوی",filterOperatorStartsWith:"شروع با",filterOperatorEndsWith:"پایان با",filterOperatorIs:"هست",filterOperatorNot:"نیست",filterOperatorAfter:"بعد از",filterOperatorOnOrAfter:"معادل یا بعدش",filterOperatorBefore:"قبلش",filterOperatorOnOrBefore:"معادل یا قبلش",filterOperatorIsEmpty:"خالی است",filterOperatorIsNotEmpty:"خالی نیست",filterOperatorIsAnyOf:"هر یک از","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"شامل",headerFilterOperatorEquals:"مساوی",headerFilterOperatorStartsWith:"شروع با",headerFilterOperatorEndsWith:"پایان با",headerFilterOperatorIs:"هست",headerFilterOperatorNot:"نیست",headerFilterOperatorAfter:"بعد از",headerFilterOperatorOnOrAfter:"معادل یا بعد از",headerFilterOperatorBefore:"قبل از",headerFilterOperatorOnOrBefore:"معادل یا قبل از",headerFilterOperatorIsEmpty:"خالی است",headerFilterOperatorIsNotEmpty:"خالی نیست",headerFilterOperatorIsAnyOf:"هر یک از","headerFilterOperator=":"مساوی","headerFilterOperator!=":"نامساوی","headerFilterOperator>":"بزرگتر","headerFilterOperator>=":"بزرگتر یا مساوی","headerFilterOperator<":"کوچکتر","headerFilterOperator<=":"کوچکتر یا مساوی",filterValueAny:"هرچیزی",filterValueTrue:"صحیح",filterValueFalse:"غلط",columnMenuLabel:"فهرست",columnMenuShowColumns:"نمایش ستون‌ها",columnMenuManageColumns:"مدیریت ستون‌ها",columnMenuFilter:"فیلتر",columnMenuHideColumn:"مخفی",columnMenuUnsort:"نامرتب‌کردن",columnMenuSortAsc:"مرتب‌کردن صعودی",columnMenuSortDesc:"مرتب‌کردن نزولی",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} فیلتر‌های فعال`:`${e} فیلتر فعال`,columnHeaderFiltersLabel:"نمایش فیلترها",columnHeaderSortIconLabel:"مرتب‌کردن",footerRowSelected:e=>e!==1?`${e.toLocaleString()} سطرهای انتخاب شده`:`${e.toLocaleString()} سطر انتخاب شده`,footerTotalRows:"مجموع سطرها:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} از ${t.toLocaleString()}`,checkboxSelectionHeaderName:"چک‌باکس انتخاب",checkboxSelectionSelectAllRows:"انتخاب همه‌ی ردیف‌ها",checkboxSelectionUnselectAllRows:"لغو انتخاب همه‌ی ردیف‌ها",checkboxSelectionSelectRow:"انتخاب ردیف",checkboxSelectionUnselectRow:"لغو انتخاب ردیف",booleanCellTrueLabel:"صحیح",booleanCellFalseLabel:"غلط",actionsCellMore:"بیشتر",pinToLeft:"سنجاق کردن به چپ",pinToRight:"سنجاق کردن به راست",unpin:"برداشتن سنجاق",treeDataGroupingHeaderName:"گروه‌بندی",treeDataExpand:"نمایش فرزندان",treeDataCollapse:"پنهان‌سازی فرزندان",groupingColumnHeaderName:"گروه‌بندی",groupColumn:e=>`گروه‌بندی براساس ${e}`,unGroupColumn:e=>`لغو گروه‌بندی براساس ${e}`,detailPanelToggle:"پنل جزئیات",expandDetailPanel:"بازکردن پنل جزئیات",collapseDetailPanel:"بستن پنل جزئیات",rowReorderingHeaderName:"ترتیب مجدد سطر",aggregationMenuItemHeader:"تجمیع",aggregationFunctionLabelSum:"جمع",aggregationFunctionLabelAvg:"میانگین",aggregationFunctionLabelMin:"حداقل",aggregationFunctionLabelMax:"حداکثر",aggregationFunctionLabelSize:"اندازه"},$C=Pe(DC,Bh),AC={noRowsLabel:"Ei rivejä",noResultsOverlayLabel:"Ei tuloksia.",toolbarDensity:"Tiiveys",toolbarDensityLabel:"Tiiveys",toolbarDensityCompact:"Kompakti",toolbarDensityStandard:"Vakio",toolbarDensityComfortable:"Mukava",toolbarColumns:"Sarakkeet",toolbarColumnsLabel:"Valitse sarakkeet",toolbarFilters:"Suodattimet",toolbarFiltersLabel:"Näytä suodattimet",toolbarFiltersTooltipHide:"Piilota suodattimet",toolbarFiltersTooltipShow:"Näytä suodattimet",toolbarFiltersTooltipActive:e=>e!==1?`${e} aktiivista suodatinta`:`${e} aktiivinen suodatin`,toolbarQuickFilterPlaceholder:"Hae…",toolbarQuickFilterLabel:"Hae",toolbarQuickFilterDeleteIconLabel:"Tyhjennä",toolbarExport:"Vie",toolbarExportLabel:"Vie",toolbarExportCSV:"Lataa CSV-muodossa",toolbarExportPrint:"Tulosta",toolbarExportExcel:"Lataa Excel-muodossa",columnsPanelTextFieldLabel:"Etsi sarake",columnsPanelTextFieldPlaceholder:"Sarakkeen otsikko",columnsPanelDragIconLabel:"Järjestä sarake uudelleen",columnsPanelShowAllButton:"Näytä kaikki",columnsPanelHideAllButton:"Piilota kaikki",filterPanelAddFilter:"Lisää suodatin",filterPanelRemoveAll:"Poista kaikki",filterPanelDeleteIconLabel:"Poista",filterPanelLogicOperator:"Logiikkaoperaattori",filterPanelOperator:"Operaattorit",filterPanelOperatorAnd:"Ja",filterPanelOperatorOr:"Tai",filterPanelColumns:"Sarakkeet",filterPanelInputLabel:"Arvo",filterPanelInputPlaceholder:"Suodattimen arvo",filterOperatorContains:"sisältää",filterOperatorEquals:"on yhtä suuri kuin",filterOperatorStartsWith:"alkaa",filterOperatorEndsWith:"päättyy",filterOperatorIs:"on",filterOperatorNot:"ei ole",filterOperatorAfter:"on jälkeen",filterOperatorOnOrAfter:"on sama tai jälkeen",filterOperatorBefore:"on ennen",filterOperatorOnOrBefore:"on sama tai ennen",filterOperatorIsEmpty:"on tyhjä",filterOperatorIsNotEmpty:"ei ole tyhjä",filterOperatorIsAnyOf:"on mikä tahansa seuraavista","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Sisältää",headerFilterOperatorEquals:"On yhtä suuri kuin",headerFilterOperatorStartsWith:"Alkaa",headerFilterOperatorEndsWith:"Päättyy",headerFilterOperatorIs:"On",headerFilterOperatorNot:"Ei ole",headerFilterOperatorAfter:"On jälkeen",headerFilterOperatorOnOrAfter:"On sama tai jälkeen",headerFilterOperatorBefore:"On ennen",headerFilterOperatorOnOrBefore:"On sama tai ennen",headerFilterOperatorIsEmpty:"On tyhjä",headerFilterOperatorIsNotEmpty:"Ei ole tyhjä",headerFilterOperatorIsAnyOf:"On mikä tahansa seuraavista","headerFilterOperator=":"On yhtä suuri kuin","headerFilterOperator!=":"Ei ole yhtä suuri kuin","headerFilterOperator>":"Enemmän kuin","headerFilterOperator>=":"Enemmän tai yhtä paljon kuin","headerFilterOperator<":"Vähemmän kuin","headerFilterOperator<=":"Vähemmän tai yhtä paljon kuin",filterValueAny:"mikä tahansa",filterValueTrue:"tosi",filterValueFalse:"epätosi",columnMenuLabel:"Valikko",columnMenuShowColumns:"Näytä sarakkeet",columnMenuManageColumns:"Hallitse sarakkeita",columnMenuFilter:"Suodata",columnMenuHideColumn:"Piilota",columnMenuUnsort:"Poista järjestys",columnMenuSortAsc:"Järjestä nousevasti",columnMenuSortDesc:"Järjestä laskevasti",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} aktiivista suodatinta`:`${e} aktiivinen suodatin`,columnHeaderFiltersLabel:"Näytä suodattimet",columnHeaderSortIconLabel:"Järjestä",footerRowSelected:e=>e!==1?`${e.toLocaleString()} riviä valittu`:`${e.toLocaleString()} rivi valittu`,footerTotalRows:"Rivejä yhteensä:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} / ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Valintaruutu",checkboxSelectionSelectAllRows:"Valitse kaikki rivit",checkboxSelectionUnselectAllRows:"Poista kaikkien rivien valinta",checkboxSelectionSelectRow:"Valitse rivi",checkboxSelectionUnselectRow:"Poista rivin valinta",booleanCellTrueLabel:"tosi",booleanCellFalseLabel:"epätosi",actionsCellMore:"lisää",pinToLeft:"Kiinnitä vasemmalle",pinToRight:"Kiinnitä oikealle",unpin:"Irrota kiinnitys",treeDataGroupingHeaderName:"Ryhmä",treeDataExpand:"Laajenna",treeDataCollapse:"Supista",groupingColumnHeaderName:"Ryhmä",groupColumn:e=>`Ryhmittelyperuste ${e}`,unGroupColumn:e=>`Poista ryhmittelyperuste ${e}`,detailPanelToggle:"Yksityiskohtapaneelin vaihto",expandDetailPanel:"Laajenna",collapseDetailPanel:"Tiivistä",rowReorderingHeaderName:"Rivien uudelleenjärjestely",aggregationMenuItemHeader:"Koostaminen",aggregationFunctionLabelSum:"summa",aggregationFunctionLabelAvg:"ka.",aggregationFunctionLabelMin:"min.",aggregationFunctionLabelMax:"maks.",aggregationFunctionLabelSize:"koko"},RC=Pe(AC,Uh),HC={noRowsLabel:"Pas de résultats",noResultsOverlayLabel:"Aucun résultat.",toolbarDensity:"Densité",toolbarDensityLabel:"Densité",toolbarDensityCompact:"Compacte",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Confortable",toolbarColumns:"Colonnes",toolbarColumnsLabel:"Choisir les colonnes",toolbarFilters:"Filtres",toolbarFiltersLabel:"Afficher les filtres",toolbarFiltersTooltipHide:"Cacher les filtres",toolbarFiltersTooltipShow:"Afficher les filtres",toolbarFiltersTooltipActive:e=>e>1?`${e} filtres actifs`:`${e} filtre actif`,toolbarQuickFilterPlaceholder:"Rechercher…",toolbarQuickFilterLabel:"Recherche",toolbarQuickFilterDeleteIconLabel:"Supprimer",toolbarExport:"Exporter",toolbarExportLabel:"Exporter",toolbarExportCSV:"Télécharger en CSV",toolbarExportPrint:"Imprimer",toolbarExportExcel:"Télécharger pour Excel",columnsPanelTextFieldLabel:"Chercher une colonne",columnsPanelTextFieldPlaceholder:"Titre de la colonne",columnsPanelDragIconLabel:"Réorganiser la colonne",columnsPanelShowAllButton:"Tout afficher",columnsPanelHideAllButton:"Tout cacher",filterPanelAddFilter:"Ajouter un filtre",filterPanelRemoveAll:"Tout supprimer",filterPanelDeleteIconLabel:"Supprimer",filterPanelLogicOperator:"Opérateur logique",filterPanelOperator:"Opérateur",filterPanelOperatorAnd:"Et",filterPanelOperatorOr:"Ou",filterPanelColumns:"Colonne",filterPanelInputLabel:"Valeur",filterPanelInputPlaceholder:"Filtrer la valeur",filterOperatorContains:"contient",filterOperatorEquals:"est égal à",filterOperatorStartsWith:"commence par",filterOperatorEndsWith:"se termine par",filterOperatorIs:"est",filterOperatorNot:"n'est pas",filterOperatorAfter:"postérieur",filterOperatorOnOrAfter:"égal ou postérieur",filterOperatorBefore:"antérieur",filterOperatorOnOrBefore:"égal ou antérieur",filterOperatorIsEmpty:"est vide",filterOperatorIsNotEmpty:"n'est pas vide",filterOperatorIsAnyOf:"fait partie de","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Contient",headerFilterOperatorEquals:"Est égal à",headerFilterOperatorStartsWith:"Commence par",headerFilterOperatorEndsWith:"Se termine par",headerFilterOperatorIs:"Est",headerFilterOperatorNot:"N'est pas",headerFilterOperatorAfter:"Postérieur",headerFilterOperatorOnOrAfter:"Égal ou postérieur",headerFilterOperatorBefore:"Antérieur",headerFilterOperatorOnOrBefore:"Égal ou antérieur",headerFilterOperatorIsEmpty:"Est vide",headerFilterOperatorIsNotEmpty:"N'est pas vide",headerFilterOperatorIsAnyOf:"Fait partie de","headerFilterOperator=":"Est égal à","headerFilterOperator!=":"N'est pas égal à","headerFilterOperator>":"Est supérieur à","headerFilterOperator>=":"Est supérieur ou égal à","headerFilterOperator<":"Est inférieur à","headerFilterOperator<=":"Est inférieur ou égal à",filterValueAny:"tous",filterValueTrue:"vrai",filterValueFalse:"faux",columnMenuLabel:"Menu",columnMenuShowColumns:"Afficher les colonnes",columnMenuManageColumns:"Gérer les colonnes",columnMenuFilter:"Filtrer",columnMenuHideColumn:"Cacher",columnMenuUnsort:"Annuler le tri",columnMenuSortAsc:"Tri ascendant",columnMenuSortDesc:"Tri descendant",columnHeaderFiltersTooltipActive:e=>e>1?`${e} filtres actifs`:`${e} filtre actif`,columnHeaderFiltersLabel:"Afficher les filtres",columnHeaderSortIconLabel:"Trier",footerRowSelected:e=>e>1?`${e.toLocaleString()} lignes sélectionnées`:`${e.toLocaleString()} ligne sélectionnée`,footerTotalRows:"Total de lignes :",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} sur ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Sélection",checkboxSelectionSelectAllRows:"Sélectionner toutes les lignes",checkboxSelectionUnselectAllRows:"Désélectionner toutes les lignes",checkboxSelectionSelectRow:"Sélectionner la ligne",checkboxSelectionUnselectRow:"Désélectionner la ligne",booleanCellTrueLabel:"vrai",booleanCellFalseLabel:"faux",actionsCellMore:"Plus",pinToLeft:"Épingler à gauche",pinToRight:"Épingler à droite",unpin:"Désépingler",treeDataGroupingHeaderName:"Groupe",treeDataExpand:"afficher les enfants",treeDataCollapse:"masquer les enfants",groupingColumnHeaderName:"Groupe",groupColumn:e=>`Grouper par ${e}`,unGroupColumn:e=>`Arrêter de grouper par ${e}`,detailPanelToggle:"Afficher/masquer les détails",expandDetailPanel:"Afficher",collapseDetailPanel:"Masquer",rowReorderingHeaderName:"Positionnement des lignes",aggregationMenuItemHeader:"Agrégation",aggregationFunctionLabelSum:"Somme",aggregationFunctionLabelAvg:"Moyenne",aggregationFunctionLabelMin:"Minimum",aggregationFunctionLabelMax:"Maximum",aggregationFunctionLabelSize:"Nombre d'éléments"},_C=Pe(HC,qh),VC={noRowsLabel:"אין שורות",noResultsOverlayLabel:"לא נמצאו תוצאות.",toolbarDensity:"צפיפות",toolbarDensityLabel:"צפיפות",toolbarDensityCompact:"דחוסה",toolbarDensityStandard:"רגילה",toolbarDensityComfortable:"אוורירית",toolbarColumns:"עמודות",toolbarColumnsLabel:"בחר עמודות",toolbarFilters:"סינון",toolbarFiltersLabel:"הצג מסננים",toolbarFiltersTooltipHide:"הסתר מסננים",toolbarFiltersTooltipShow:"הצג מסננים",toolbarFiltersTooltipActive:e=>e!==1?`${e} מסננים פעילים`:"מסנן אחד פעיל",toolbarQuickFilterPlaceholder:"חיפוש…",toolbarQuickFilterLabel:"חיפוש",toolbarQuickFilterDeleteIconLabel:"ניקוי",toolbarExport:"ייצוא",toolbarExportLabel:"ייצוא",toolbarExportCSV:"ייצוא ל- CSV",toolbarExportPrint:"הדפסה",toolbarExportExcel:"ייצוא ל- Excel",columnsPanelTextFieldLabel:"חפש עמודה",columnsPanelTextFieldPlaceholder:"כותרת עמודה",columnsPanelDragIconLabel:"סדר עמודות מחדש",columnsPanelShowAllButton:"הצג הכל",columnsPanelHideAllButton:"הסתר הכל",filterPanelAddFilter:"הוסף מסנן",filterPanelRemoveAll:"מחק הכל",filterPanelDeleteIconLabel:"מחק",filterPanelLogicOperator:"אופרטור לוגי",filterPanelOperator:"אופרטור",filterPanelOperatorAnd:"וגם",filterPanelOperatorOr:"או",filterPanelColumns:"עמודות",filterPanelInputLabel:"ערך",filterPanelInputPlaceholder:"ערך מסנן",filterOperatorContains:"מכיל",filterOperatorEquals:"שווה",filterOperatorStartsWith:"מתחיל ב-",filterOperatorEndsWith:"נגמר ב-",filterOperatorIs:"הינו",filterOperatorNot:"אינו",filterOperatorAfter:"אחרי",filterOperatorOnOrAfter:"ב- או אחרי",filterOperatorBefore:"לפני",filterOperatorOnOrBefore:"ב- או לפני",filterOperatorIsEmpty:"ריק",filterOperatorIsNotEmpty:"אינו ריק",filterOperatorIsAnyOf:"הוא אחד מ-","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"מכיל",headerFilterOperatorEquals:"שווה",headerFilterOperatorStartsWith:"מתחיל ב-",headerFilterOperatorEndsWith:"נגמר ב-",headerFilterOperatorIs:"הינו",headerFilterOperatorNot:"אינו",headerFilterOperatorAfter:"אחרי",headerFilterOperatorOnOrAfter:"ב- או אחרי",headerFilterOperatorBefore:"לפני",headerFilterOperatorOnOrBefore:"ב- או לפני",headerFilterOperatorIsEmpty:"ריק",headerFilterOperatorIsNotEmpty:"אינו ריק",headerFilterOperatorIsAnyOf:"הוא אחד מ-","headerFilterOperator=":"שווה","headerFilterOperator!=":"אינו שווה","headerFilterOperator>":"גדול מ-","headerFilterOperator>=":"גדול שווה ל-","headerFilterOperator<":"קטן מ-","headerFilterOperator<=":"קטן שווה ל-",filterValueAny:"כל ערך",filterValueTrue:"כן",filterValueFalse:"לא",columnMenuLabel:"תפריט",columnMenuShowColumns:"הצג עמודות",columnMenuManageColumns:"נהל עמודות",columnMenuFilter:"סנן",columnMenuHideColumn:"הסתר",columnMenuUnsort:"בטל מיון",columnMenuSortAsc:"מיין בסדר עולה",columnMenuSortDesc:"מיין בסדר יורד",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} מסננים פעילים`:"מסנן אחד פעיל",columnHeaderFiltersLabel:"הצג מסננים",columnHeaderSortIconLabel:"מיין",footerRowSelected:e=>e!==1?`${e.toLocaleString()} שורות נבחרו`:"שורה אחת נבחרה",footerTotalRows:"סך הכל:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} מתוך ${t.toLocaleString()}`,checkboxSelectionHeaderName:"בחירה",checkboxSelectionSelectAllRows:"בחר הכל",checkboxSelectionUnselectAllRows:"בטל הכל",checkboxSelectionSelectRow:"בחר שורה",checkboxSelectionUnselectRow:"בטל בחירת שורה",booleanCellTrueLabel:"כן",booleanCellFalseLabel:"לא",actionsCellMore:"עוד",pinToLeft:"נעץ משמאל",pinToRight:"נעץ מימין",unpin:"הסר נעיצה",treeDataGroupingHeaderName:"קבוצה",treeDataExpand:"הרחב",treeDataCollapse:"כווץ",groupingColumnHeaderName:"קבוצה",groupColumn:e=>`קבץ לפי ${e}`,unGroupColumn:e=>`הפסק לקבץ לפי ${e}`,detailPanelToggle:"הצג/הסתר פרטים",expandDetailPanel:"הרחב",collapseDetailPanel:"כווץ",rowReorderingHeaderName:"סידור שורות",aggregationMenuItemHeader:"צבירה",aggregationFunctionLabelSum:"סכום",aggregationFunctionLabelAvg:"ממוצע",aggregationFunctionLabelMin:"מינימום",aggregationFunctionLabelMax:"מקסימום",aggregationFunctionLabelSize:"גודל"},NC=Pe(VC,Wh),GC={noRowsLabel:"Nincsenek sorok",noResultsOverlayLabel:"Nincs találat.",toolbarDensity:"Sormagasság",toolbarDensityLabel:"Sormagasság",toolbarDensityCompact:"Kompakt",toolbarDensityStandard:"Normál",toolbarDensityComfortable:"Kényelmes",toolbarColumns:"Oszlopok",toolbarColumnsLabel:"Oszlopok kiválasztása",toolbarFilters:"Szűrők",toolbarFiltersLabel:"Szűrők megjelenítése",toolbarFiltersTooltipHide:"Szűrők elrejtése",toolbarFiltersTooltipShow:"Szűrők megjelenítése",toolbarFiltersTooltipActive:e=>`${e} aktív szűrő`,toolbarQuickFilterPlaceholder:"Keresés…",toolbarQuickFilterLabel:"Keresés",toolbarQuickFilterDeleteIconLabel:"Törlés",toolbarExport:"Exportálás",toolbarExportLabel:"Exportálás",toolbarExportCSV:"Mentés CSV fájlként",toolbarExportPrint:"Nyomtatás",toolbarExportExcel:"Mentés Excel fájlként",columnsPanelTextFieldLabel:"Oszlop keresése",columnsPanelTextFieldPlaceholder:"Oszlop neve",columnsPanelDragIconLabel:"Oszlop átrendezése",columnsPanelShowAllButton:"Összes megjelenítése",columnsPanelHideAllButton:"Összes elrejtése",filterPanelAddFilter:"Szűrő hozzáadása",filterPanelRemoveAll:"Összes törlése",filterPanelDeleteIconLabel:"Törlés",filterPanelLogicOperator:"Logikai operátor",filterPanelOperator:"Operátorok",filterPanelOperatorAnd:"És",filterPanelOperatorOr:"Vagy",filterPanelColumns:"Oszlopok",filterPanelInputLabel:"Érték",filterPanelInputPlaceholder:"Érték szűrése",filterOperatorContains:"tartalmazza:",filterOperatorEquals:"egyenlő ezzel:",filterOperatorStartsWith:"ezzel kezdődik:",filterOperatorEndsWith:"ezzel végződik:",filterOperatorIs:"a következő:",filterOperatorNot:"nem a következő:",filterOperatorAfter:"ezutáni:",filterOperatorOnOrAfter:"ekkori vagy ezutáni:",filterOperatorBefore:"ezelőtti:",filterOperatorOnOrBefore:"ekkori vagy ezelőtti:",filterOperatorIsEmpty:"üres",filterOperatorIsNotEmpty:"nem üres",filterOperatorIsAnyOf:"a következők egyike:","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Tartalmazza:",headerFilterOperatorEquals:"Egyenlő ezzel:",headerFilterOperatorStartsWith:"Ezzel kezdődik:",headerFilterOperatorEndsWith:"Ezzel végződik:",headerFilterOperatorAfter:"Ezutáni:",headerFilterOperatorOnOrAfter:"Ekkozori vagy ezutáni:",headerFilterOperatorBefore:"Ezelőtti:",headerFilterOperatorOnOrBefore:"Ekkori vagy ezelőtti:",headerFilterOperatorIsEmpty:"Üres",headerFilterOperatorIsNotEmpty:"Nem üres",headerFilterOperatorIsAnyOf:"A következők egyike:","headerFilterOperator=":"Egyenlő","headerFilterOperator!=":"Nem egyenlő","headerFilterOperator>":"Nagyobb mint","headerFilterOperator>=":"Nagyobb vagy egyenlő","headerFilterOperator<":"Kissebb mint","headerFilterOperator<=":"Kissebb vagy enygenlő",filterValueAny:"bármilyen",filterValueTrue:"igaz",filterValueFalse:"hamis",columnMenuLabel:"Menü",columnMenuShowColumns:"Oszlopok megjelenítése",columnMenuManageColumns:"Oszlopok kezelése",columnMenuFilter:"Szűrők",columnMenuHideColumn:"Elrejtés",columnMenuUnsort:"Sorrend visszaállítása",columnMenuSortAsc:"Növekvő sorrendbe",columnMenuSortDesc:"Csökkenő sorrendbe",columnHeaderFiltersTooltipActive:e=>`${e} aktív szűrő`,columnHeaderFiltersLabel:"Szűrők megjelenítése",columnHeaderSortIconLabel:"Átrendezés",footerRowSelected:e=>`${e.toLocaleString()} sor kiválasztva`,footerTotalRows:"Összesen:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} (összesen: ${t.toLocaleString()})`,checkboxSelectionHeaderName:"Jelölőnégyzetes kijelölés",checkboxSelectionSelectAllRows:"Minden sor kijelölése",checkboxSelectionUnselectAllRows:"Minden sor kijelölésének törlése",checkboxSelectionSelectRow:"Sor kijelölése",checkboxSelectionUnselectRow:"Sor kijelölésének törlése",booleanCellTrueLabel:"igen",booleanCellFalseLabel:"nem",actionsCellMore:"további",pinToLeft:"Rögzítés balra",pinToRight:"Rögzítés jobbra",unpin:"Rögzítés törlése",treeDataGroupingHeaderName:"Csoport",treeDataExpand:"gyermekek megjelenítése",treeDataCollapse:"gyermekek elrejtése",groupingColumnHeaderName:"Csoportosítás",groupColumn:e=>`Csoportosítás ${e} szerint`,unGroupColumn:e=>`${e} szerinti csoportosítás törlése`,detailPanelToggle:"Részletek panel váltása",expandDetailPanel:"Kibontás",collapseDetailPanel:"Összecsukás",rowReorderingHeaderName:"Sorok újrarendezése",aggregationMenuItemHeader:"Összesítés",aggregationFunctionLabelSum:"Összeg",aggregationFunctionLabelAvg:"Átlag",aggregationFunctionLabelMin:"Minimum",aggregationFunctionLabelMax:"Maximum",aggregationFunctionLabelSize:"Darabszám"},zC=Pe(GC,Qh),jC={noRowsLabel:"Nessun record",noResultsOverlayLabel:"Nessun record trovato.",toolbarDensity:"Densità",toolbarDensityLabel:"Densità",toolbarDensityCompact:"Compatta",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Comoda",toolbarColumns:"Colonne",toolbarColumnsLabel:"Seleziona le colonne",toolbarFilters:"Filtri",toolbarFiltersLabel:"Mostra i filtri",toolbarFiltersTooltipHide:"Nascondi i filtri",toolbarFiltersTooltipShow:"Mostra i filtri",toolbarFiltersTooltipActive:e=>e>1?`${e} filtri attivi`:`${e} filtro attivo`,toolbarQuickFilterPlaceholder:"Cerca…",toolbarQuickFilterLabel:"Cerca",toolbarQuickFilterDeleteIconLabel:"Resetta",toolbarExport:"Esporta",toolbarExportLabel:"Esporta",toolbarExportCSV:"Esporta in CSV",toolbarExportPrint:"Stampa",toolbarExportExcel:"Scarica come Excel",columnsPanelTextFieldLabel:"Cerca colonna",columnsPanelTextFieldPlaceholder:"Titolo della colonna",columnsPanelDragIconLabel:"Riordina la colonna",columnsPanelShowAllButton:"Mostra tutto",columnsPanelHideAllButton:"Nascondi tutto",filterPanelAddFilter:"Aggiungi un filtro",filterPanelRemoveAll:"Rimuovi filtri",filterPanelDeleteIconLabel:"Rimuovi",filterPanelLogicOperator:"Operatore logico",filterPanelOperator:"Operatori",filterPanelOperatorAnd:"E (and)",filterPanelOperatorOr:"O (or)",filterPanelColumns:"Colonne",filterPanelInputLabel:"Valore",filterPanelInputPlaceholder:"Filtra il valore",filterOperatorContains:"contiene",filterOperatorEquals:"uguale a",filterOperatorStartsWith:"comincia per",filterOperatorEndsWith:"termina per",filterOperatorIs:"uguale a",filterOperatorNot:"diversa da",filterOperatorAfter:"dopo il",filterOperatorOnOrAfter:"a partire dal",filterOperatorBefore:"prima del",filterOperatorOnOrBefore:"fino al",filterOperatorIsEmpty:"è vuoto",filterOperatorIsNotEmpty:"non è vuoto",filterOperatorIsAnyOf:"è uno tra","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Contiene",headerFilterOperatorEquals:"uguale a",headerFilterOperatorStartsWith:"comincia per",headerFilterOperatorEndsWith:"termina per",headerFilterOperatorIs:"uguale a",headerFilterOperatorNot:"diversa da",headerFilterOperatorAfter:"dopo il",headerFilterOperatorOnOrAfter:"a partire dal",headerFilterOperatorBefore:"prima del",headerFilterOperatorOnOrBefore:"fino al",headerFilterOperatorIsEmpty:"è vuoto",headerFilterOperatorIsNotEmpty:"non è vuoto",headerFilterOperatorIsAnyOf:"è uno tra","headerFilterOperator=":"uguale a","headerFilterOperator!=":"diverso da","headerFilterOperator>":"maggiore di","headerFilterOperator>=":"maggiore o uguale a","headerFilterOperator<":"minore di","headerFilterOperator<=":"minore o uguale a",filterValueAny:"qualunque",filterValueTrue:"vero",filterValueFalse:"falso",columnMenuLabel:"Menu",columnMenuShowColumns:"Mostra le colonne",columnMenuManageColumns:"Gestisci colonne",columnMenuFilter:"Filtra",columnMenuHideColumn:"Nascondi",columnMenuUnsort:"Annulla l'ordinamento",columnMenuSortAsc:"Ordinamento crescente",columnMenuSortDesc:"Ordinamento decrescente",columnHeaderFiltersTooltipActive:e=>e>1?`${e} filtri attivi`:`${e} filtro attivo`,columnHeaderFiltersLabel:"Mostra i filtri",columnHeaderSortIconLabel:"Ordina",footerRowSelected:e=>e>1?`${e.toLocaleString()} record selezionati`:`${e.toLocaleString()} record selezionato`,footerTotalRows:"Record totali:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} di ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Seleziona",checkboxSelectionSelectAllRows:"Seleziona tutte le righe",checkboxSelectionUnselectAllRows:"Deseleziona tutte le righe",checkboxSelectionSelectRow:"Seleziona riga",checkboxSelectionUnselectRow:"Deseleziona riga",booleanCellTrueLabel:"vero",booleanCellFalseLabel:"falso",actionsCellMore:"più",pinToLeft:"Blocca a sinistra",pinToRight:"Blocca a destra",unpin:"Sblocca",treeDataGroupingHeaderName:"Gruppo",treeDataExpand:"mostra figli",treeDataCollapse:"nascondi figli",groupingColumnHeaderName:"Gruppo",groupColumn:e=>`Raggruppa per ${e}`,unGroupColumn:e=>`Annulla raggruppamento per ${e}`,detailPanelToggle:"Abilita pannello dettagli",expandDetailPanel:"Espandi",collapseDetailPanel:"Comprimi",rowReorderingHeaderName:"Riordinamento righe",aggregationMenuItemHeader:"aggregazione",aggregationFunctionLabelSum:"somma",aggregationFunctionLabelAvg:"media",aggregationFunctionLabelMin:"minimo",aggregationFunctionLabelMax:"massimo",aggregationFunctionLabelSize:"numero di elementi"},BC=Pe(jC,Zh),UC={noRowsLabel:"行がありません。",noResultsOverlayLabel:"結果がありません。",toolbarDensity:"行間隔",toolbarDensityLabel:"行間隔",toolbarDensityCompact:"コンパクト",toolbarDensityStandard:"標準",toolbarDensityComfortable:"広め",toolbarColumns:"列一覧",toolbarColumnsLabel:"列選択",toolbarFilters:"フィルター",toolbarFiltersLabel:"フィルター表示",toolbarFiltersTooltipHide:"フィルター非表示",toolbarFiltersTooltipShow:"フィルター表示",toolbarFiltersTooltipActive:e=>`${e}件のフィルターを適用中`,toolbarQuickFilterPlaceholder:"検索…",toolbarQuickFilterLabel:"検索",toolbarQuickFilterDeleteIconLabel:"クリア",toolbarExport:"エクスポート",toolbarExportLabel:"エクスポート",toolbarExportCSV:"CSVダウンロード",toolbarExportPrint:"印刷",toolbarExportExcel:"Excelダウンロード",columnsPanelTextFieldLabel:"列検索",columnsPanelTextFieldPlaceholder:"検索クエリを入力…",columnsPanelDragIconLabel:"列並べ替え",columnsPanelShowAllButton:"すべて表示",columnsPanelHideAllButton:"すべて非表示",filterPanelAddFilter:"フィルター追加",filterPanelRemoveAll:"すべて削除",filterPanelDeleteIconLabel:"削除",filterPanelLogicOperator:"論理演算子",filterPanelOperator:"演算子",filterPanelOperatorAnd:"And",filterPanelOperatorOr:"Or",filterPanelColumns:"列",filterPanelInputLabel:"値",filterPanelInputPlaceholder:"値を入力…",filterOperatorContains:"...を含む",filterOperatorEquals:"...に等しい",filterOperatorStartsWith:"...で始まる",filterOperatorEndsWith:"...で終わる",filterOperatorIs:"...である",filterOperatorNot:"...でない",filterOperatorAfter:"...より後ろ",filterOperatorOnOrAfter:"...以降",filterOperatorBefore:"...より前",filterOperatorOnOrBefore:"...以前",filterOperatorIsEmpty:"...空である",filterOperatorIsNotEmpty:"...空でない",filterOperatorIsAnyOf:"...のいずれか","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"含む",headerFilterOperatorEquals:"等しい",headerFilterOperatorStartsWith:"で始まる",headerFilterOperatorEndsWith:"で終わる",headerFilterOperatorIs:"である",headerFilterOperatorNot:"ではない",headerFilterOperatorAfter:"...より後ろ",headerFilterOperatorOnOrAfter:"...以降",headerFilterOperatorBefore:"...より前",headerFilterOperatorOnOrBefore:"...以前",headerFilterOperatorIsEmpty:"空白",headerFilterOperatorIsNotEmpty:"空白ではない",headerFilterOperatorIsAnyOf:"いずれか","headerFilterOperator=":"等しい","headerFilterOperator!=":"等しくない","headerFilterOperator>":"より大きい","headerFilterOperator>=":"以上","headerFilterOperator<":"未満","headerFilterOperator<=":"以下",filterValueAny:"いずれか",filterValueTrue:"真",filterValueFalse:"偽",columnMenuLabel:"メニュー",columnMenuShowColumns:"列表示",columnMenuManageColumns:"列管理",columnMenuFilter:"フィルター",columnMenuHideColumn:"列非表示",columnMenuUnsort:"ソート解除",columnMenuSortAsc:"昇順ソート",columnMenuSortDesc:"降順ソート",columnHeaderFiltersTooltipActive:e=>`${e}件のフィルターを適用中`,columnHeaderFiltersLabel:"フィルター表示",columnHeaderSortIconLabel:"ソート",footerRowSelected:e=>`${e}行を選択中`,footerTotalRows:"総行数:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} / ${t.toLocaleString()}`,checkboxSelectionHeaderName:"チェックボックス",checkboxSelectionSelectAllRows:"すべての行を選択",checkboxSelectionUnselectAllRows:"すべての行選択を解除",checkboxSelectionSelectRow:"行を選択",checkboxSelectionUnselectRow:"行選択を解除",booleanCellTrueLabel:"真",booleanCellFalseLabel:"偽",actionsCellMore:"もっと見る",pinToLeft:"左側に固定",pinToRight:"右側に固定",unpin:"固定解除",treeDataGroupingHeaderName:"グループ",treeDataExpand:"展開",treeDataCollapse:"折りたたみ",groupingColumnHeaderName:"グループ",groupColumn:e=>`${e}でグループ化`,unGroupColumn:e=>`${e}のグループを解除`,detailPanelToggle:"詳細パネルの切り替え",expandDetailPanel:"展開",collapseDetailPanel:"折りたたみ",rowReorderingHeaderName:"行並び替え",aggregationMenuItemHeader:"合計",aggregationFunctionLabelSum:"和",aggregationFunctionLabelAvg:"平均",aggregationFunctionLabelMin:"最小値",aggregationFunctionLabelMax:"最大値",aggregationFunctionLabelSize:"サイズ"},qC=Pe(UC,Jh),WC={noRowsLabel:"행이 없습니다.",noResultsOverlayLabel:"결과값이 없습니다.",toolbarDensity:"행 간격",toolbarDensityLabel:"행 간격",toolbarDensityCompact:"좁게",toolbarDensityStandard:"기본",toolbarDensityComfortable:"넓게",toolbarColumns:"열 목록",toolbarColumnsLabel:"열 선택",toolbarFilters:"필터",toolbarFiltersLabel:"필터 표시",toolbarFiltersTooltipHide:"필터 숨기기",toolbarFiltersTooltipShow:"필터 표시",toolbarFiltersTooltipActive:e=>`${e}건의 필터를 적용중`,toolbarQuickFilterPlaceholder:"검색…",toolbarQuickFilterLabel:"검색",toolbarQuickFilterDeleteIconLabel:"초기화",toolbarExport:"내보내기",toolbarExportLabel:"내보내기",toolbarExportCSV:"CSV로 내보내기",toolbarExportPrint:"프린트",toolbarExportExcel:"Excel로 내보내기",columnsPanelTextFieldLabel:"열 검색",columnsPanelTextFieldPlaceholder:"열 이름",columnsPanelDragIconLabel:"열 정렬",columnsPanelShowAllButton:"모두 보기",columnsPanelHideAllButton:"모두 숨기기",filterPanelAddFilter:"필터 추가",filterPanelDeleteIconLabel:"삭제",filterPanelLogicOperator:"논리 연산자",filterPanelOperator:"연산자",filterPanelOperatorAnd:"그리고",filterPanelOperatorOr:"또는",filterPanelColumns:"목록",filterPanelInputLabel:"값",filterPanelInputPlaceholder:"값 입력",filterOperatorContains:"포함하는",filterOperatorEquals:"값이 같은",filterOperatorStartsWith:"시작하는",filterOperatorEndsWith:"끝나는",filterOperatorIs:"~인",filterOperatorNot:"~아닌",filterOperatorAfter:"더 이후",filterOperatorOnOrAfter:"이후",filterOperatorBefore:"더 이전",filterOperatorOnOrBefore:"이전",filterOperatorIsEmpty:"값이 없는",filterOperatorIsNotEmpty:"값이 있는",filterOperatorIsAnyOf:"값 중 하나인",filterValueAny:"아무값",filterValueTrue:"참",filterValueFalse:"거짓",columnMenuLabel:"메뉴",columnMenuShowColumns:"열 표시",columnMenuFilter:"필터",columnMenuHideColumn:"열 숨기기",columnMenuUnsort:"정렬 해제",columnMenuSortAsc:"오름차순 정렬",columnMenuSortDesc:"내림차순 정렬",columnHeaderFiltersTooltipActive:e=>`${e}건의 필터를 적용중`,columnHeaderFiltersLabel:"필터 표시",columnHeaderSortIconLabel:"정렬",footerRowSelected:e=>`${e}행 선택중`,footerTotalRows:"총 행수:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} / ${t.toLocaleString()}`,checkboxSelectionHeaderName:"선택",checkboxSelectionSelectAllRows:"모든 행 선택",checkboxSelectionUnselectAllRows:"모든 행 선택 해제",checkboxSelectionSelectRow:"행 선택",checkboxSelectionUnselectRow:"행 선택 해제",booleanCellTrueLabel:"참",booleanCellFalseLabel:"거짓",actionsCellMore:"더보기",pinToLeft:"왼쪽에 고정",pinToRight:"오른쪽에 고정",unpin:"고정 해제",treeDataGroupingHeaderName:"그룹",treeDataExpand:"하위노드 펼치기",treeDataCollapse:"하위노드 접기",groupingColumnHeaderName:"그룹",groupColumn:e=>`${e} 값으로 그룹 생성`,unGroupColumn:e=>`${e} 값으로 그룹 해제`,detailPanelToggle:"상세 패널 토글",expandDetailPanel:"열기",collapseDetailPanel:"접기",rowReorderingHeaderName:"행 재배치",aggregationMenuItemHeader:"총계",aggregationFunctionLabelSum:"합",aggregationFunctionLabelAvg:"평균",aggregationFunctionLabelMin:"최소값",aggregationFunctionLabelMax:"최대값",aggregationFunctionLabelSize:"크기"},KC=Pe(WC,Yh),QC={noRowsLabel:"Ingen rader",noResultsOverlayLabel:"Fant ingen resultat.",toolbarDensity:"Tetthet",toolbarDensityLabel:"Tetthet",toolbarDensityCompact:"Kompakt",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Komfortabelt",toolbarColumns:"Kolonner",toolbarColumnsLabel:"Velg kolonner",toolbarFilters:"Filter",toolbarFiltersLabel:"Vis filter",toolbarFiltersTooltipHide:"Skjul fitler",toolbarFiltersTooltipShow:"Vis filter",toolbarFiltersTooltipActive:e=>e!==1?`${e} aktive filter`:`${e} aktivt filter`,toolbarQuickFilterPlaceholder:"Søk…",toolbarQuickFilterLabel:"Søk",toolbarQuickFilterDeleteIconLabel:"Slett",toolbarExport:"Eksporter",toolbarExportLabel:"Eksporter",toolbarExportCSV:"Last ned som CSV",toolbarExportPrint:"Skriv ut",toolbarExportExcel:"Last ned som Excel",columnsPanelTextFieldLabel:"Finn kolonne",columnsPanelTextFieldPlaceholder:"Kolonne tittel",columnsPanelDragIconLabel:"Reorganiser kolonne",columnsPanelShowAllButton:"Vis alle",columnsPanelHideAllButton:"Skjul alle",filterPanelAddFilter:"Legg til filter",filterPanelRemoveAll:"Fjern alle",filterPanelDeleteIconLabel:"Slett",filterPanelLogicOperator:"Logisk operator",filterPanelOperator:"Operatører",filterPanelOperatorAnd:"Og",filterPanelOperatorOr:"Eller",filterPanelColumns:"Kolonner",filterPanelInputLabel:"Verdi",filterPanelInputPlaceholder:"Filter verdi",filterOperatorContains:"inneholder",filterOperatorEquals:"er lik",filterOperatorStartsWith:"starter med",filterOperatorEndsWith:"slutter med",filterOperatorIs:"er",filterOperatorNot:"er ikke",filterOperatorAfter:"er etter",filterOperatorOnOrAfter:"er på eller etter",filterOperatorBefore:"er før",filterOperatorOnOrBefore:"er på eller før",filterOperatorIsEmpty:"er tom",filterOperatorIsNotEmpty:"er ikke tom",filterOperatorIsAnyOf:"er en av",filterValueAny:"noen",filterValueTrue:"sant",filterValueFalse:"usant",columnMenuLabel:"Meny",columnMenuShowColumns:"Vis kolonner",columnMenuManageColumns:"Administrer kolonner",columnMenuFilter:"Filter",columnMenuHideColumn:"Skjul",columnMenuUnsort:"Usorter",columnMenuSortAsc:"Sorter ØKENDE",columnMenuSortDesc:"Sorter SYNKENDE",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} aktive filter`:`${e} aktivt filter`,columnHeaderFiltersLabel:"Vis filter",columnHeaderSortIconLabel:"Sorter",footerRowSelected:e=>e!==1?`${e.toLocaleString()} rader valgt`:`${e.toLocaleString()} rad valgt`,footerTotalRows:"Totalt antall rader:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} av ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Avmerkingsboks valgt",checkboxSelectionSelectAllRows:"Velg alle rader",checkboxSelectionUnselectAllRows:"Velg bort alle rader",checkboxSelectionSelectRow:"Velg rad",checkboxSelectionUnselectRow:"Velg bort rad",booleanCellTrueLabel:"sant",booleanCellFalseLabel:"usant",actionsCellMore:"mer",pinToLeft:"Fest til venstre",pinToRight:"Fest til høyre",unpin:"Løsne",treeDataGroupingHeaderName:"Grupper",treeDataExpand:"se barn",treeDataCollapse:"skjul barn",groupingColumnHeaderName:"Grupper",groupColumn:e=>`Grupper på ${e}`,unGroupColumn:e=>`Stopp å grupper på ${e}`,detailPanelToggle:"Utvid/kollaps detalj panel",expandDetailPanel:"Utvid",collapseDetailPanel:"Kollaps",rowReorderingHeaderName:"Rad reorganisering",aggregationMenuItemHeader:"Aggregering",aggregationFunctionLabelSum:"sum",aggregationFunctionLabelAvg:"snitt",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"maks",aggregationFunctionLabelSize:"størrelse"},ZC=Pe(QC,Xh),JC={noRowsLabel:"Geen resultaten.",noResultsOverlayLabel:"Geen resultaten gevonden.",toolbarDensity:"Grootte",toolbarDensityLabel:"Grootte",toolbarDensityCompact:"Compact",toolbarDensityStandard:"Normaal",toolbarDensityComfortable:"Breed",toolbarColumns:"Kolommen",toolbarColumnsLabel:"Kies kolommen",toolbarFilters:"Filters",toolbarFiltersLabel:"Toon filters",toolbarFiltersTooltipHide:"Verberg filters",toolbarFiltersTooltipShow:"Toon filters",toolbarFiltersTooltipActive:e=>e>1?`${e} actieve filters`:`${e} filter actief`,toolbarQuickFilterPlaceholder:"Zoeken…",toolbarQuickFilterLabel:"Zoeken",toolbarQuickFilterDeleteIconLabel:"Wissen",toolbarExport:"Exporteren",toolbarExportLabel:"Exporteren",toolbarExportCSV:"Exporteer naar CSV",toolbarExportPrint:"Print",toolbarExportExcel:"Downloaden als Excel-bestand",columnsPanelTextFieldLabel:"Zoek kolom",columnsPanelTextFieldPlaceholder:"Kolomtitel",columnsPanelDragIconLabel:"Kolom herschikken",columnsPanelShowAllButton:"Alles tonen",columnsPanelHideAllButton:"Alles verbergen",filterPanelAddFilter:"Filter toevoegen",filterPanelRemoveAll:"Alles verwijderen",filterPanelDeleteIconLabel:"Verwijderen",filterPanelLogicOperator:"Logische operator",filterPanelOperator:"Operatoren",filterPanelOperatorAnd:"En",filterPanelOperatorOr:"Of",filterPanelColumns:"Kolommen",filterPanelInputLabel:"Waarde",filterPanelInputPlaceholder:"Filter waarde",filterOperatorContains:"bevat",filterOperatorEquals:"gelijk aan",filterOperatorStartsWith:"begint met",filterOperatorEndsWith:"eindigt met",filterOperatorIs:"is",filterOperatorNot:"is niet",filterOperatorAfter:"is na",filterOperatorOnOrAfter:"is gelijk of er na",filterOperatorBefore:"is voor",filterOperatorOnOrBefore:"is gelijk of er voor",filterOperatorIsEmpty:"is leeg",filterOperatorIsNotEmpty:"is niet leeg",filterOperatorIsAnyOf:"is een van","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Bevat",headerFilterOperatorEquals:"Gelijk aan",headerFilterOperatorStartsWith:"Begint met",headerFilterOperatorEndsWith:"Eindigt met",headerFilterOperatorIs:"Is",headerFilterOperatorNot:"Is niet",headerFilterOperatorAfter:"Is na",headerFilterOperatorOnOrAfter:"Is op of na",headerFilterOperatorBefore:"Is voor",headerFilterOperatorOnOrBefore:"Is op of voor",headerFilterOperatorIsEmpty:"Is leeg",headerFilterOperatorIsNotEmpty:"Is niet leeg",headerFilterOperatorIsAnyOf:"Is een van","headerFilterOperator=":"Gelijk aan","headerFilterOperator!=":"Niet gelijk aan","headerFilterOperator>":"Is groter dan","headerFilterOperator>=":"Is groter dan of gelijk aan","headerFilterOperator<":"Is kleiner dan","headerFilterOperator<=":"Is kleiner dan of gelijk aan",filterValueAny:"alles",filterValueTrue:"waar",filterValueFalse:"onwaar",columnMenuLabel:"Menu",columnMenuShowColumns:"Toon kolommen",columnMenuManageColumns:"Kolommen beheren",columnMenuFilter:"Filteren",columnMenuHideColumn:"Verbergen",columnMenuUnsort:"Annuleer sortering",columnMenuSortAsc:"Oplopend sorteren",columnMenuSortDesc:"Aflopend sorteren",columnHeaderFiltersTooltipActive:e=>e>1?`${e} actieve filters`:`${e} filter actief`,columnHeaderFiltersLabel:"Toon filters",columnHeaderSortIconLabel:"Sorteren",footerRowSelected:e=>e>1?`${e.toLocaleString()} rijen geselecteerd`:`${e.toLocaleString()} rij geselecteerd`,footerTotalRows:"Totaal:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} van ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Checkbox selectie",checkboxSelectionSelectAllRows:"Alle rijen selecteren",checkboxSelectionUnselectAllRows:"Alle rijen de-selecteren",checkboxSelectionSelectRow:"Rij selecteren",checkboxSelectionUnselectRow:"Rij de-selecteren",booleanCellTrueLabel:"waar",booleanCellFalseLabel:"onwaar",actionsCellMore:"meer",pinToLeft:"Links vastzetten",pinToRight:"Rechts vastzetten",unpin:"Losmaken",treeDataGroupingHeaderName:"Groep",treeDataExpand:"Uitvouwen",treeDataCollapse:"Inklappen",groupingColumnHeaderName:"Groep",groupColumn:e=>`Groepeer op ${e}`,unGroupColumn:e=>`Stop groeperen op ${e}`,detailPanelToggle:"Detailmenu in- of uitklappen",expandDetailPanel:"Uitklappen",collapseDetailPanel:"Inklappen",rowReorderingHeaderName:"Rijen hersorteren",aggregationMenuItemHeader:"Aggregatie",aggregationFunctionLabelSum:"som",aggregationFunctionLabelAvg:"gem",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"max",aggregationFunctionLabelSize:"grootte"},YC=Pe(JC,eC),XC={noRowsLabel:"Brak danych",noResultsOverlayLabel:"Nie znaleziono wyników.",toolbarDensity:"Wysokość rzędu",toolbarDensityLabel:"Wysokość rzędu",toolbarDensityCompact:"Kompakt",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Komfort",toolbarColumns:"Kolumny",toolbarColumnsLabel:"Zaznacz kolumny",toolbarFilters:"Filtry",toolbarFiltersLabel:"Pokaż filtry",toolbarFiltersTooltipHide:"Ukryj filtry",toolbarFiltersTooltipShow:"Pokaż filtry",toolbarFiltersTooltipActive:e=>`Liczba aktywnych filtrów: ${e}`,toolbarQuickFilterPlaceholder:"Wyszukaj…",toolbarQuickFilterLabel:"Szukaj",toolbarQuickFilterDeleteIconLabel:"Wyczyść",toolbarExport:"Eksportuj",toolbarExportLabel:"Eksportuj",toolbarExportCSV:"Pobierz jako plik CSV",toolbarExportPrint:"Drukuj",toolbarExportExcel:"Pobierz jako plik Excel",columnsPanelTextFieldLabel:"Znajdź kolumnę",columnsPanelTextFieldPlaceholder:"Tytuł kolumny",columnsPanelDragIconLabel:"Zmień kolejność kolumn",columnsPanelShowAllButton:"Pokaż wszystko",columnsPanelHideAllButton:"Ukryj wszystko",filterPanelAddFilter:"Dodaj filtr",filterPanelRemoveAll:"Usuń wszystkie",filterPanelDeleteIconLabel:"Usuń",filterPanelLogicOperator:"Operator logiczny",filterPanelOperator:"Operator",filterPanelOperatorAnd:"I",filterPanelOperatorOr:"Lub",filterPanelColumns:"Kolumny",filterPanelInputLabel:"Wartość",filterPanelInputPlaceholder:"Filtrowana wartość",filterOperatorContains:"zawiera",filterOperatorEquals:"równa się",filterOperatorStartsWith:"zaczyna się od",filterOperatorEndsWith:"kończy się na",filterOperatorIs:"równa się",filterOperatorNot:"różne",filterOperatorAfter:"większe niż",filterOperatorOnOrAfter:"większe lub równe",filterOperatorBefore:"mniejsze niż",filterOperatorOnOrBefore:"mniejsze lub równe",filterOperatorIsEmpty:"jest pusty",filterOperatorIsNotEmpty:"nie jest pusty",filterOperatorIsAnyOf:"jest jednym z",headerFilterOperatorContains:"Zawiera",headerFilterOperatorEquals:"Równa się",headerFilterOperatorStartsWith:"Zaczyna się od",headerFilterOperatorEndsWith:"Kończy się na",headerFilterOperatorNot:"Niepuste",filterValueAny:"dowolny",filterValueTrue:"prawda",filterValueFalse:"fałsz",columnMenuLabel:"Menu",columnMenuShowColumns:"Pokaż wszystkie kolumny",columnMenuManageColumns:"Zarządzaj kolumnami",columnMenuFilter:"Filtr",columnMenuHideColumn:"Ukryj",columnMenuUnsort:"Anuluj sortowanie",columnMenuSortAsc:"Sortuj rosnąco",columnMenuSortDesc:"Sortuj malejąco",columnHeaderFiltersTooltipActive:e=>`Liczba aktywnych filtrów: ${e}`,columnHeaderFiltersLabel:"Pokaż filtry",columnHeaderSortIconLabel:"Sortuj",footerRowSelected:e=>`Liczba wybranych wierszy: ${e.toLocaleString()}`,footerTotalRows:"Łączna liczba wierszy:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} z ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Pole wyboru",checkboxSelectionSelectAllRows:"Zaznacz wszystkie wiersze",checkboxSelectionUnselectAllRows:"Odznacz wszystkie wiersze",checkboxSelectionSelectRow:"Zaznacz wiersz",checkboxSelectionUnselectRow:"Odznacz wiersz",booleanCellTrueLabel:"tak",booleanCellFalseLabel:"nie",actionsCellMore:"więcej",pinToLeft:"Przypnij do lewej",pinToRight:"Przypnij do prawej",unpin:"Odepnij",treeDataGroupingHeaderName:"Grupa",treeDataExpand:"pokaż elementy potomne",treeDataCollapse:"ukryj elementy potomne",groupingColumnHeaderName:"Grupa",groupColumn:e=>`Grupuj według ${e}`,unGroupColumn:e=>`Rozgrupuj ${e}`,expandDetailPanel:"Rozwiń",collapseDetailPanel:"Zwiń",rowReorderingHeaderName:"Porządkowanie wierszy"},ew=Pe(XC,tC),tw={noRowsLabel:"Nenhuma linha",noResultsOverlayLabel:"Nenhum resultado encontrado.",toolbarDensity:"Densidade",toolbarDensityLabel:"Densidade",toolbarDensityCompact:"Compacto",toolbarDensityStandard:"Padrão",toolbarDensityComfortable:"Confortável",toolbarColumns:"Colunas",toolbarColumnsLabel:"Exibir seletor de colunas",toolbarFilters:"Filtros",toolbarFiltersLabel:"Exibir filtros",toolbarFiltersTooltipHide:"Ocultar filtros",toolbarFiltersTooltipShow:"Exibir filtros",toolbarFiltersTooltipActive:e=>`${e} ${e!==1?"filtros":"filtro"} ${e!==1?"ativos":"ativo"}`,toolbarQuickFilterPlaceholder:"Procurar…",toolbarQuickFilterLabel:"Procurar",toolbarQuickFilterDeleteIconLabel:"Limpar",toolbarExport:"Exportar",toolbarExportLabel:"Exportar",toolbarExportCSV:"Baixar como CSV",toolbarExportPrint:"Imprimir",toolbarExportExcel:"Baixar como Excel",columnsPanelTextFieldLabel:"Localizar coluna",columnsPanelTextFieldPlaceholder:"Título da coluna",columnsPanelDragIconLabel:"Reordenar Coluna",columnsPanelShowAllButton:"Mostrar todas",columnsPanelHideAllButton:"Ocultar todas",filterPanelAddFilter:"Adicionar filtro",filterPanelRemoveAll:"Remover todos",filterPanelDeleteIconLabel:"Excluir",filterPanelLogicOperator:"Operador lógico",filterPanelOperator:"Operador",filterPanelOperatorAnd:"E",filterPanelOperatorOr:"Ou",filterPanelColumns:"Colunas",filterPanelInputLabel:"Valor",filterPanelInputPlaceholder:"Filtrar valor",filterOperatorContains:"contém",filterOperatorEquals:"é igual a",filterOperatorStartsWith:"começa com",filterOperatorEndsWith:"termina com",filterOperatorIs:"é",filterOperatorNot:"não é",filterOperatorAfter:"após",filterOperatorOnOrAfter:"em ou após",filterOperatorBefore:"antes de",filterOperatorOnOrBefore:"em ou antes de",filterOperatorIsEmpty:"está vazio",filterOperatorIsNotEmpty:"não está vazio",filterOperatorIsAnyOf:"é qualquer um dos","filterOperator=":"igual à","filterOperator!=":"diferente de","filterOperator>":"maior que","filterOperator>=":"maior ou igual que","filterOperator<":"menor que","filterOperator<=":"menor ou igual que",headerFilterOperatorContains:"Contém",headerFilterOperatorEquals:"Igual",headerFilterOperatorStartsWith:"Começa com",headerFilterOperatorEndsWith:"Termina com",headerFilterOperatorIs:"É",headerFilterOperatorNot:"Não é",headerFilterOperatorAfter:"Depois de",headerFilterOperatorOnOrAfter:"Está entre ou depois de",headerFilterOperatorBefore:"Antes de",headerFilterOperatorOnOrBefore:"Está entre ou antes de",headerFilterOperatorIsEmpty:"É vazio",headerFilterOperatorIsNotEmpty:"Não é vazio",headerFilterOperatorIsAnyOf:"É algum","headerFilterOperator=":"Igual","headerFilterOperator!=":"Não igual","headerFilterOperator>":"Maior que","headerFilterOperator>=":"Maior que ou igual a","headerFilterOperator<":"Menor que","headerFilterOperator<=":"Menor que ou igual a",filterValueAny:"qualquer",filterValueTrue:"verdadeiro",filterValueFalse:"falso",columnMenuLabel:"Menu",columnMenuShowColumns:"Exibir colunas",columnMenuManageColumns:"Gerir colunas",columnMenuFilter:"Filtrar",columnMenuHideColumn:"Ocultar",columnMenuUnsort:"Desfazer ordenação",columnMenuSortAsc:"Ordenar do menor para o maior",columnMenuSortDesc:"Ordenar do maior para o menor",columnHeaderFiltersTooltipActive:e=>`${e} ${e!==1?"filtros":"filtro"} ${e!==1?"ativos":"ativo"}`,columnHeaderFiltersLabel:"Exibir Filtros",columnHeaderSortIconLabel:"Ordenar",footerRowSelected:e=>e!==1?`${e.toLocaleString()} linhas selecionadas`:`${e.toLocaleString()} linha selecionada`,footerTotalRows:"Total de linhas:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} de ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Seleção",checkboxSelectionSelectAllRows:"Selecionar todas linhas",checkboxSelectionUnselectAllRows:"Deselecionar todas linhas",checkboxSelectionSelectRow:"Selecionar linha",checkboxSelectionUnselectRow:"Deselecionar linha",booleanCellTrueLabel:"sim",booleanCellFalseLabel:"não",actionsCellMore:"mais",pinToLeft:"Fixar à esquerda",pinToRight:"Fixar à direita",unpin:"Desafixar",treeDataGroupingHeaderName:"Grupo",treeDataExpand:"mostrar filhos",treeDataCollapse:"esconder filhos",groupingColumnHeaderName:"Grupo",groupColumn:e=>`Agrupar por ${e}`,unGroupColumn:e=>`Parar agrupamento por ${e}`,detailPanelToggle:"Painel de detalhes",expandDetailPanel:"Expandir",collapseDetailPanel:"Esconder",rowReorderingHeaderName:"Reorganizar linhas",aggregationMenuItemHeader:"Agrupar",aggregationFunctionLabelSum:"soma",aggregationFunctionLabelAvg:"média",aggregationFunctionLabelMin:"mín",aggregationFunctionLabelMax:"máx",aggregationFunctionLabelSize:"tamanho"},rw=Pe(tw,rC),ow={noRowsLabel:"Lipsă date",noResultsOverlayLabel:"Nu au fost găsite rezultate.",toolbarDensity:"Înălțime rând",toolbarDensityLabel:"Înălțime rând",toolbarDensityCompact:"Compact",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Lat",toolbarColumns:"Coloane",toolbarColumnsLabel:"Afișează selecție coloane",toolbarFilters:"Filtru",toolbarFiltersLabel:"Afișează filtru",toolbarFiltersTooltipHide:"Ascunde filtru",toolbarFiltersTooltipShow:"Afișează filtru",toolbarFiltersTooltipActive:e=>e!==1?`${e} filtru activ`:`${e} filtru activ`,toolbarQuickFilterPlaceholder:"Căutare…",toolbarQuickFilterLabel:"Căutare",toolbarQuickFilterDeleteIconLabel:"Ștergere",toolbarExport:"Export",toolbarExportLabel:"Export",toolbarExportCSV:"Download în format CSV",toolbarExportPrint:"Printare",toolbarExportExcel:"Download în format Excel",columnsPanelTextFieldLabel:"Găsește coloana",columnsPanelTextFieldPlaceholder:"Titlu coloană",columnsPanelDragIconLabel:"Resortare coloană",columnsPanelShowAllButton:"Afișează tot",columnsPanelHideAllButton:"Ascunde tot",filterPanelAddFilter:"Adăugare filtru",filterPanelRemoveAll:"Șterge tot",filterPanelDeleteIconLabel:"Ștergere",filterPanelLogicOperator:"Operatori logici",filterPanelOperator:"Operatori",filterPanelOperatorAnd:"Și",filterPanelOperatorOr:"Sau",filterPanelColumns:"Coloane",filterPanelInputLabel:"Valoare",filterPanelInputPlaceholder:"Filtrare valoare",filterOperatorContains:"conține",filterOperatorEquals:"este egal cu",filterOperatorStartsWith:"începe cu",filterOperatorEndsWith:"se termină cu",filterOperatorIs:"este",filterOperatorNot:"nu este",filterOperatorAfter:"este după",filterOperatorOnOrAfter:"este la sau după",filterOperatorBefore:"este înainte de",filterOperatorOnOrBefore:"este la sau înainte de",filterOperatorIsEmpty:"este gol",filterOperatorIsNotEmpty:"nu este gol",filterOperatorIsAnyOf:"este una din valori","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Conține",headerFilterOperatorEquals:"Egal cu",headerFilterOperatorStartsWith:"Începe cu",headerFilterOperatorEndsWith:"Se termină cu",headerFilterOperatorIs:"Este",headerFilterOperatorNot:"Nu este",headerFilterOperatorAfter:"Este după",headerFilterOperatorOnOrAfter:"Este la sau după",headerFilterOperatorBefore:"Este înainte de",headerFilterOperatorOnOrBefore:"este la sau înainte de",headerFilterOperatorIsEmpty:"Este gol",headerFilterOperatorIsNotEmpty:"Nu este gol",headerFilterOperatorIsAnyOf:"Este una din valori","headerFilterOperator=":"Egal cu","headerFilterOperator!=":"Nu este egal cu","headerFilterOperator>":"Mai mare decât","headerFilterOperator>=":"Mai mare sau egal cu","headerFilterOperator<":"Mai mic decât","headerFilterOperator<=":"Mai mic sau egal cu",filterValueAny:"Aleatoriu",filterValueTrue:"Da",filterValueFalse:"Nu",columnMenuLabel:"Meniu",columnMenuShowColumns:"Afișează toate coloanele",columnMenuManageColumns:"Gestionează coloane",columnMenuFilter:"Filtru",columnMenuHideColumn:"Ascunde",columnMenuUnsort:"Dezactivare sortare",columnMenuSortAsc:"Sortează crescător",columnMenuSortDesc:"Sortează descrescător",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} filtru activ`:`${e} filtru activ`,columnHeaderFiltersLabel:"Afișează filtru",columnHeaderSortIconLabel:"Sortare",footerRowSelected:e=>e!==1?`${e.toLocaleString()} Înregistrări selectate`:`${e.toLocaleString()} Înregistrare selectată`,footerTotalRows:"Total:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} din ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Checkbox Selecție",checkboxSelectionSelectAllRows:"Selectare toate rândurile",checkboxSelectionUnselectAllRows:"Deselectare toate rândurile",checkboxSelectionSelectRow:"Selectare rând",checkboxSelectionUnselectRow:"Deselectare rând",booleanCellTrueLabel:"Da",booleanCellFalseLabel:"Nu",actionsCellMore:"Mai multe",pinToLeft:"Fixare în stânga",pinToRight:"Fixare în dreapta",unpin:"Anulare fixare",treeDataGroupingHeaderName:"Grup",treeDataExpand:"Afișare copii",treeDataCollapse:"Ascundere copii",groupingColumnHeaderName:"Grupare",groupColumn:e=>`Grupare după ${e}`,unGroupColumn:e=>`Anulare Grupare după ${e}`,detailPanelToggle:"Comutare panou detalii",expandDetailPanel:"Extindere",collapseDetailPanel:"Restrângere",rowReorderingHeaderName:"Reordonare rânduri",aggregationMenuItemHeader:"Agregare",aggregationFunctionLabelSum:"Sumă",aggregationFunctionLabelAvg:"Medie",aggregationFunctionLabelMin:"Minim",aggregationFunctionLabelMax:"Maxim",aggregationFunctionLabelSize:"Numărul elementelor"},lw=Pe(ow,lC),nw={noRowsLabel:"Нет строк",noResultsOverlayLabel:"Данные не найдены.",toolbarDensity:"Высота строки",toolbarDensityLabel:"Высота строки",toolbarDensityCompact:"Компактная",toolbarDensityStandard:"Стандартная",toolbarDensityComfortable:"Комфортная",toolbarColumns:"Столбцы",toolbarColumnsLabel:"Выделите столбцы",toolbarFilters:"Фильтры",toolbarFiltersLabel:"Показать фильтры",toolbarFiltersTooltipHide:"Скрыть фильтры",toolbarFiltersTooltipShow:"Показать фильтры",toolbarFiltersTooltipActive:e=>{let t="активных фильтров";const r=e%10;return r>1&&r<5?t="активных фильтра":r===1&&(t="активный фильтр"),`${e} ${t}`},toolbarQuickFilterPlaceholder:"Поиск…",toolbarQuickFilterLabel:"Поиск",toolbarQuickFilterDeleteIconLabel:"Очистить",toolbarExport:"Экспорт",toolbarExportLabel:"Экспорт",toolbarExportCSV:"Скачать в формате CSV",toolbarExportPrint:"Печать",toolbarExportExcel:"Скачать в формате Excel",columnsPanelTextFieldLabel:"Найти столбец",columnsPanelTextFieldPlaceholder:"Заголовок столбца",columnsPanelDragIconLabel:"Изменить порядок столбца",columnsPanelShowAllButton:"Показать все",columnsPanelHideAllButton:"Скрыть все",filterPanelAddFilter:"Добавить фильтр",filterPanelRemoveAll:"Очистить фильтр",filterPanelDeleteIconLabel:"Удалить",filterPanelLogicOperator:"Логические операторы",filterPanelOperator:"Операторы",filterPanelOperatorAnd:"И",filterPanelOperatorOr:"Или",filterPanelColumns:"Столбцы",filterPanelInputLabel:"Значение",filterPanelInputPlaceholder:"Значение фильтра",filterOperatorContains:"содержит",filterOperatorEquals:"равен",filterOperatorStartsWith:"начинается с",filterOperatorEndsWith:"заканчивается на",filterOperatorIs:"равен",filterOperatorNot:"не равен",filterOperatorAfter:"больше чем",filterOperatorOnOrAfter:"больше или равно",filterOperatorBefore:"меньше чем",filterOperatorOnOrBefore:"меньше или равно",filterOperatorIsEmpty:"пустой",filterOperatorIsNotEmpty:"не пустой",filterOperatorIsAnyOf:"любой из","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"содержит",headerFilterOperatorEquals:"равен",headerFilterOperatorStartsWith:"начинается с",headerFilterOperatorEndsWith:"заканчивается на",headerFilterOperatorIs:"равен",headerFilterOperatorNot:"не равен",headerFilterOperatorAfter:"больше чем",headerFilterOperatorOnOrAfter:"больше или равно",headerFilterOperatorBefore:"меньше чем",headerFilterOperatorOnOrBefore:"меньше или равно",headerFilterOperatorIsEmpty:"пустой",headerFilterOperatorIsNotEmpty:"не пустой",headerFilterOperatorIsAnyOf:"любой из","headerFilterOperator=":"содержит","headerFilterOperator!=":"не содержит","headerFilterOperator>":"больше чем","headerFilterOperator>=":"больше или равно","headerFilterOperator<":"меньше чем","headerFilterOperator<=":"меньше или равно",filterValueAny:"любой",filterValueTrue:"истина",filterValueFalse:"ложь",columnMenuLabel:"Меню",columnMenuShowColumns:"Показать столбцы",columnMenuManageColumns:"Управление колонками",columnMenuFilter:"Фильтр",columnMenuHideColumn:"Скрыть",columnMenuUnsort:"Отменить сортировку",columnMenuSortAsc:"Сортировать по возрастанию",columnMenuSortDesc:"Сортировать по убыванию",columnHeaderFiltersTooltipActive:e=>{let t="активных фильтров";const r=e%10;return r>1&&r<5?t="активных фильтра":r===1&&(t="активный фильтр"),`${e} ${t}`},columnHeaderFiltersLabel:"Показать фильтры",columnHeaderSortIconLabel:"Сортировать",footerRowSelected:e=>{let t="строк выбрано";const r=e%10;return r>1&&r<5?t="строки выбраны":r===1&&(t="строка выбрана"),`${e} ${t}`},footerTotalRows:"Всего строк:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} из ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Выбор флажка",checkboxSelectionSelectAllRows:"Выбрать все строки",checkboxSelectionUnselectAllRows:"Отменить выбор всех строк",checkboxSelectionSelectRow:"Выбрать строку",checkboxSelectionUnselectRow:"Отменить выбор строки",booleanCellTrueLabel:"истина",booleanCellFalseLabel:"ложь",actionsCellMore:"ещё",pinToLeft:"Закрепить слева",pinToRight:"Закрепить справа",unpin:"Открепить",treeDataGroupingHeaderName:"Группа",treeDataExpand:"показать дочерние элементы",treeDataCollapse:"скрыть дочерние элементы",groupingColumnHeaderName:"Группа",groupColumn:e=>`Сгруппировать по ${e}`,unGroupColumn:e=>`Разгруппировать по ${e}`,detailPanelToggle:"Детали",expandDetailPanel:"Развернуть",collapseDetailPanel:"Свернуть",rowReorderingHeaderName:"Изменение порядка строк",aggregationMenuItemHeader:"Объединение данных",aggregationFunctionLabelSum:"сумм",aggregationFunctionLabelAvg:"срзнач",aggregationFunctionLabelMin:"мин",aggregationFunctionLabelMax:"макс",aggregationFunctionLabelSize:"счет"},aw=Pe(nw,nC),iw={noRowsLabel:"Žiadne záznamy",noResultsOverlayLabel:"Nenašli sa žadne výsledky.",toolbarDensity:"Hustota",toolbarDensityLabel:"Hustota",toolbarDensityCompact:"Kompaktná",toolbarDensityStandard:"Štandartná",toolbarDensityComfortable:"Komfortná",toolbarColumns:"Stĺpce",toolbarColumnsLabel:"Vybrať stĺpce",toolbarFilters:"Filtre",toolbarFiltersLabel:"Zobraziť filtre",toolbarFiltersTooltipHide:"Skryť filtre ",toolbarFiltersTooltipShow:"Zobraziť filtre",toolbarFiltersTooltipActive:e=>{let t="aktívnych filtrov";return e>1&&e<5?t="aktívne filtre":e===1&&(t="aktívny filter"),`${e} ${t}`},toolbarQuickFilterPlaceholder:"Vyhľadať…",toolbarQuickFilterLabel:"Vyhľadať",toolbarQuickFilterDeleteIconLabel:"Vymazať",toolbarExport:"Export",toolbarExportLabel:"Export",toolbarExportCSV:"Stiahnuť ako CSV",toolbarExportPrint:"Vytlačiť",toolbarExportExcel:"Stiahnuť ako Excel",columnsPanelTextFieldLabel:"Nájsť stĺpec",columnsPanelTextFieldPlaceholder:"Názov stĺpca",columnsPanelDragIconLabel:"Usporiadť stĺpce",columnsPanelShowAllButton:"Zobraziť všetko",columnsPanelHideAllButton:"Skryť všetko",filterPanelAddFilter:"Pridať filter",filterPanelRemoveAll:"Odstrániť všetky",filterPanelDeleteIconLabel:"Odstrániť",filterPanelLogicOperator:"Logický operátor",filterPanelOperator:"Operátory",filterPanelOperatorAnd:"A",filterPanelOperatorOr:"Alebo",filterPanelColumns:"Stĺpce",filterPanelInputLabel:"Hodnota",filterPanelInputPlaceholder:"Hodnota filtra",filterOperatorContains:"obsahuje",filterOperatorEquals:"rovná sa",filterOperatorStartsWith:"začína s",filterOperatorEndsWith:"končí na",filterOperatorIs:"je",filterOperatorNot:"nie je",filterOperatorAfter:"je po",filterOperatorOnOrAfter:"je na alebo po",filterOperatorBefore:"je pred",filterOperatorOnOrBefore:"je na alebo skôr",filterOperatorIsEmpty:"je prázdny",filterOperatorIsNotEmpty:"nie je prázdny",filterOperatorIsAnyOf:"je jeden z","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Obsahuje",headerFilterOperatorEquals:"Rovná sa",headerFilterOperatorStartsWith:"Začína s",headerFilterOperatorEndsWith:"Končí na",headerFilterOperatorIs:"Je",headerFilterOperatorNot:"Nie je",headerFilterOperatorAfter:"Je po",headerFilterOperatorOnOrAfter:"Je na alebo po",headerFilterOperatorBefore:"Je pred",headerFilterOperatorOnOrBefore:"Je na alebo skôr",headerFilterOperatorIsEmpty:"Je prázdny",headerFilterOperatorIsNotEmpty:"Nie je prázdny",headerFilterOperatorIsAnyOf:"Je jeden z","headerFilterOperator=":"Rovná sa","headerFilterOperator!=":"Nerovná sa","headerFilterOperator>":"Väčší ako","headerFilterOperator>=":"Väčší ako alebo rovný","headerFilterOperator<":"Menší ako","headerFilterOperator<=":"Menší ako alebo rovný",filterValueAny:"akýkoľvek",filterValueTrue:"áno",filterValueFalse:"nie",columnMenuLabel:"Menu",columnMenuShowColumns:"Zobraziť stĺpce",columnMenuManageColumns:"Spravovať stĺpce",columnMenuFilter:"Filter",columnMenuHideColumn:"Skryť",columnMenuUnsort:"Zrušiť filtre",columnMenuSortAsc:"Zoradiť vzostupne",columnMenuSortDesc:"Zoradiť zostupne",columnHeaderFiltersTooltipActive:e=>{let t="aktívnych filtrov";return e>1&&e<5?t="aktívne filtre":e===1&&(t="aktívny filter"),`${e} ${t}`},columnHeaderFiltersLabel:"Zobraziť filtre",columnHeaderSortIconLabel:"Filtrovať",footerRowSelected:e=>{let t="vybraných záznamov";return e>1&&e<5?t="vybrané záznamy":e===1&&(t="vybraný záznam"),`${e} ${t}`},footerTotalRows:"Riadkov spolu:",footerTotalVisibleRows:(e,t)=>{const r=t.toString(),o=r[0],l=["4","6","7"].includes(o)||o==="1"&&r.length%3===0?"zo":"z";return`${e.toLocaleString()} ${l} ${t.toLocaleString()}`},checkboxSelectionHeaderName:"Výber riadku",checkboxSelectionSelectAllRows:"Vybrať všetky riadky",checkboxSelectionUnselectAllRows:"Zrušiť výber všetkých riadkov",checkboxSelectionSelectRow:"Vyber riadok",checkboxSelectionUnselectRow:"Zruš výber riadku",booleanCellTrueLabel:"áno",booleanCellFalseLabel:"nie",actionsCellMore:"viac",pinToLeft:"Pripnúť na ľavo",pinToRight:"Pripnúť na pravo",unpin:"Odopnúť",treeDataGroupingHeaderName:"Skupina",treeDataExpand:"zobraziť potomkov",treeDataCollapse:"skryť potomkov",groupingColumnHeaderName:"Skupina",groupColumn:e=>`Zoskupiť podľa ${e}`,unGroupColumn:e=>`Prestať zoskupovať podľa ${e}`,detailPanelToggle:"Prepnúť detail panelu",expandDetailPanel:"Rozbaliť",collapseDetailPanel:"Zbaliť",rowReorderingHeaderName:"Preusporiadávanie riadkov",aggregationMenuItemHeader:"Agregácia",aggregationFunctionLabelSum:"suma",aggregationFunctionLabelAvg:"priemer",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"max",aggregationFunctionLabelSize:"počet"},sw=Pe(iw,aC),uw={noRowsLabel:"Inga rader",noResultsOverlayLabel:"Inga resultat funna.",toolbarDensity:"Densitet",toolbarDensityLabel:"Densitet",toolbarDensityCompact:"Kompakt",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Luftig",toolbarColumns:"Kolumner",toolbarColumnsLabel:"Välj kolumner",toolbarFilters:"Filter",toolbarFiltersLabel:"Visa filter",toolbarFiltersTooltipHide:"Dölj filter",toolbarFiltersTooltipShow:"Visa filter",toolbarFiltersTooltipActive:e=>e!==1?`${e} aktiva filter`:`${e} aktivt filter`,toolbarQuickFilterPlaceholder:"Sök…",toolbarQuickFilterLabel:"Sök",toolbarQuickFilterDeleteIconLabel:"Rensa",toolbarExport:"Exportera",toolbarExportLabel:"Exportera",toolbarExportCSV:"Ladda ner som CSV",toolbarExportPrint:"Skriv ut",toolbarExportExcel:"Ladda ner som Excel",columnsPanelTextFieldLabel:"Hitta kolumn",columnsPanelTextFieldPlaceholder:"Kolumntitel",columnsPanelDragIconLabel:"Ordna om kolumnen",columnsPanelShowAllButton:"Visa alla",columnsPanelHideAllButton:"Dölj alla",filterPanelAddFilter:"Lägg till filter",filterPanelRemoveAll:"Ta bort alla",filterPanelDeleteIconLabel:"Ta bort",filterPanelLogicOperator:"Logisk operator",filterPanelOperator:"Operator",filterPanelOperatorAnd:"Och",filterPanelOperatorOr:"Eller",filterPanelColumns:"Kolumner",filterPanelInputLabel:"Värde",filterPanelInputPlaceholder:"Filtervärde",filterOperatorContains:"innehåller",filterOperatorEquals:"lika med",filterOperatorStartsWith:"börjar med",filterOperatorEndsWith:"slutar med",filterOperatorIs:"är",filterOperatorNot:"är inte",filterOperatorAfter:"är efter",filterOperatorOnOrAfter:"är på eller efter",filterOperatorBefore:"är innan",filterOperatorOnOrBefore:"är på eller innan",filterOperatorIsEmpty:"är tom",filterOperatorIsNotEmpty:"är inte tom",filterOperatorIsAnyOf:"är någon av","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Innehåller",headerFilterOperatorEquals:"Lika med",headerFilterOperatorStartsWith:"Börjar med",headerFilterOperatorEndsWith:"Slutar med",headerFilterOperatorIs:"Är",headerFilterOperatorNot:"Är inte",headerFilterOperatorAfter:"Är efter",headerFilterOperatorOnOrAfter:"Är på eller efter",headerFilterOperatorBefore:"Är innan",headerFilterOperatorOnOrBefore:"Är på eller innan",headerFilterOperatorIsEmpty:"Är tom",headerFilterOperatorIsNotEmpty:"Är inte tom",headerFilterOperatorIsAnyOf:"Innehåller någon av","headerFilterOperator=":"Lika med","headerFilterOperator!=":"Inte lika med","headerFilterOperator>":"Större än","headerFilterOperator>=":"Större eller lika med","headerFilterOperator<":"Mindre än","headerFilterOperator<=":"Mindre eller lika med",filterValueAny:"något",filterValueTrue:"sant",filterValueFalse:"falskt",columnMenuLabel:"Meny",columnMenuShowColumns:"Visa kolumner",columnMenuManageColumns:"Hantera kolumner",columnMenuFilter:"Filtrera",columnMenuHideColumn:"Dölj",columnMenuUnsort:"Ta bort sortering",columnMenuSortAsc:"Sortera stigande",columnMenuSortDesc:"Sortera fallande",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} aktiva filter`:`${e} aktivt filter`,columnHeaderFiltersLabel:"Visa filter",columnHeaderSortIconLabel:"Sortera",footerRowSelected:e=>e!==1?`${e.toLocaleString()} rader markerade`:`${e.toLocaleString()} rad markerad`,footerTotalRows:"Totalt antal rader:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} av ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Markering med kryssruta",checkboxSelectionSelectAllRows:"Markera alla rader",checkboxSelectionUnselectAllRows:"Avmarkera alla rader",checkboxSelectionSelectRow:"Markera rad",checkboxSelectionUnselectRow:"Avmarkera rad",booleanCellTrueLabel:"ja",booleanCellFalseLabel:"nej",actionsCellMore:"mer",pinToLeft:"Fäst till vänster",pinToRight:"Fäst till höger",unpin:"Ta bort fästning",treeDataGroupingHeaderName:"Grupp",treeDataExpand:"visa underordnade",treeDataCollapse:"dölj underordnade",groupingColumnHeaderName:"Grupp",groupColumn:e=>`Gruppera efter ${e}`,unGroupColumn:e=>`Sluta gruppera efter ${e}`,detailPanelToggle:"Växla detaljpanel",expandDetailPanel:"Expandera",collapseDetailPanel:"Kollapsa",rowReorderingHeaderName:"Ordna om rader",aggregationMenuItemHeader:"Aggregering",aggregationFunctionLabelSum:"summa",aggregationFunctionLabelAvg:"medel",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"max",aggregationFunctionLabelSize:"antal"},cw=Pe(uw,iC),dw={noRowsLabel:"Satır yok",noResultsOverlayLabel:"Sonuç bulunamadı.",toolbarDensity:"Yoğunluk",toolbarDensityLabel:"Yoğunluk",toolbarDensityCompact:"Sıkı",toolbarDensityStandard:"Standart",toolbarDensityComfortable:"Rahat",toolbarColumns:"Sütunlar",toolbarColumnsLabel:"Sütun seç",toolbarFilters:"Filtreler",toolbarFiltersLabel:"Filtreleri göster",toolbarFiltersTooltipHide:"Filtreleri gizle",toolbarFiltersTooltipShow:"Filtreleri göster",toolbarFiltersTooltipActive:e=>`${e} aktif filtre`,toolbarQuickFilterPlaceholder:"Ara…",toolbarQuickFilterLabel:"Ara",toolbarQuickFilterDeleteIconLabel:"Temizle",toolbarExport:"Dışa aktar",toolbarExportLabel:"Dışa aktar",toolbarExportCSV:"CSV olarak aktar",toolbarExportPrint:"Yazdır",toolbarExportExcel:"Excel olarak aktar",columnsPanelTextFieldLabel:"Sütun ara",columnsPanelTextFieldPlaceholder:"Sütun adı",columnsPanelDragIconLabel:"Sütunları yeniden sırala",columnsPanelShowAllButton:"Hepsini göster",columnsPanelHideAllButton:"Hepsini gizle",filterPanelAddFilter:"Filtre Ekle",filterPanelRemoveAll:"Hepsini kaldır",filterPanelDeleteIconLabel:"Kaldır",filterPanelLogicOperator:"Mantıksal operatörler",filterPanelOperator:"Operatör",filterPanelOperatorAnd:"Ve",filterPanelOperatorOr:"Veya",filterPanelColumns:"Sütunlar",filterPanelInputLabel:"Değer",filterPanelInputPlaceholder:"Filtre değeri",filterOperatorContains:"içerir",filterOperatorEquals:"eşittir",filterOperatorStartsWith:"ile başlar",filterOperatorEndsWith:"ile biter",filterOperatorIs:"eşittir",filterOperatorNot:"eşit değildir",filterOperatorAfter:"büyük",filterOperatorOnOrAfter:"büyük eşit",filterOperatorBefore:"küçük",filterOperatorOnOrBefore:"küçük eşit",filterOperatorIsEmpty:"boş",filterOperatorIsNotEmpty:"dolu",filterOperatorIsAnyOf:"herhangi biri","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Şunu içerir",headerFilterOperatorEquals:"Şuna eşittir",headerFilterOperatorStartsWith:"Şununla başlar",headerFilterOperatorEndsWith:"Şununla biter",filterValueAny:"herhangi",filterValueTrue:"doğru",filterValueFalse:"yanlış",columnMenuLabel:"Menü",columnMenuShowColumns:"Sütunları göster",columnMenuManageColumns:"Sütunları yönet",columnMenuFilter:"Filtre Ekle",columnMenuHideColumn:"Gizle",columnMenuUnsort:"Varsayılan Sıralama",columnMenuSortAsc:"Sırala - Artan",columnMenuSortDesc:"Sırala - Azalan",columnHeaderFiltersTooltipActive:e=>`${e} filtre aktif`,columnHeaderFiltersLabel:"Filtreleri göster",columnHeaderSortIconLabel:"Sırala",footerRowSelected:e=>`${e.toLocaleString()} satır seçildi`,footerTotalRows:"Toplam Satır:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} / ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Seçim",checkboxSelectionSelectAllRows:"Tüm satırları seç",checkboxSelectionUnselectAllRows:"Tüm satırların seçimini kaldır",checkboxSelectionSelectRow:"Satırı seç",checkboxSelectionUnselectRow:"Satır seçimini bırak",booleanCellTrueLabel:"Evet",booleanCellFalseLabel:"Hayır",actionsCellMore:"daha fazla",pinToLeft:"Sola sabitle",pinToRight:"Sağa sabitle",unpin:"Sabitlemeyi kaldır",treeDataGroupingHeaderName:"Grup",treeDataExpand:"göster",treeDataCollapse:"gizle",groupingColumnHeaderName:"Grup",groupColumn:e=>`${e} için grupla`,unGroupColumn:e=>`${e} için gruplamayı kaldır`,detailPanelToggle:"Detay görünümüne geçiş",expandDetailPanel:"Genişlet",collapseDetailPanel:"Gizle",rowReorderingHeaderName:"Satırı yeniden sırala",aggregationMenuItemHeader:"Toplama",aggregationFunctionLabelSum:"top",aggregationFunctionLabelAvg:"ort",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"maks",aggregationFunctionLabelSize:"boyut"},pw=Pe(dw,sC),No=(e,t)=>{let r=t.many;const o=e%10;return o>1&&o<5?r=t.few:o===1&&(r=t.one),`${e} ${r}`},fw={noRowsLabel:"Немає рядків",noResultsOverlayLabel:"Дані не знайдено.",toolbarDensity:"Висота рядка",toolbarDensityLabel:"Висота рядка",toolbarDensityCompact:"Компактний",toolbarDensityStandard:"Стандартний",toolbarDensityComfortable:"Комфортний",toolbarColumns:"Стовпці",toolbarColumnsLabel:"Виділіть стовпці",toolbarFilters:"Фільтри",toolbarFiltersLabel:"Показати фільтри",toolbarFiltersTooltipHide:"Приховати фільтри",toolbarFiltersTooltipShow:"Показати фільтри",toolbarFiltersTooltipActive:e=>No(e,{one:"активний фільтр",few:"активні фільтри",many:"активних фільтрів"}),toolbarQuickFilterPlaceholder:"Пошук…",toolbarQuickFilterLabel:"Пошук",toolbarQuickFilterDeleteIconLabel:"Очистити",toolbarExport:"Експорт",toolbarExportLabel:"Експорт",toolbarExportCSV:"Завантажити у форматі CSV",toolbarExportPrint:"Друк",toolbarExportExcel:"Завантажити у форматі Excel",columnsPanelTextFieldLabel:"Знайти стовпець",columnsPanelTextFieldPlaceholder:"Заголовок стовпця",columnsPanelDragIconLabel:"Змінити порядок стовпця",columnsPanelShowAllButton:"Показати всі",columnsPanelHideAllButton:"Приховати всі",filterPanelAddFilter:"Додати фільтр",filterPanelRemoveAll:"Видалити всі",filterPanelDeleteIconLabel:"Видалити",filterPanelLogicOperator:"Логічна функція",filterPanelOperator:"Оператори",filterPanelOperatorAnd:"І",filterPanelOperatorOr:"Або",filterPanelColumns:"Стовпці",filterPanelInputLabel:"Значення",filterPanelInputPlaceholder:"Значення фільтра",filterOperatorContains:"містить",filterOperatorEquals:"дорівнює",filterOperatorStartsWith:"починається з",filterOperatorEndsWith:"закінчується на",filterOperatorIs:"дорівнює",filterOperatorNot:"не дорівнює",filterOperatorAfter:"більше ніж",filterOperatorOnOrAfter:"більше або дорівнює",filterOperatorBefore:"менше ніж",filterOperatorOnOrBefore:"менше або дорівнює",filterOperatorIsEmpty:"порожній",filterOperatorIsNotEmpty:"не порожній",filterOperatorIsAnyOf:"будь-що із","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Містить",headerFilterOperatorEquals:"Дорівнює",headerFilterOperatorStartsWith:"Починається з",headerFilterOperatorEndsWith:"Закінчується на",headerFilterOperatorIs:"Дорівнює",headerFilterOperatorNot:"Не дорівнює",headerFilterOperatorAfter:"Після",headerFilterOperatorOnOrAfter:"Після (включаючи)",headerFilterOperatorBefore:"Раніше",headerFilterOperatorOnOrBefore:"Раніше (включаючи)",headerFilterOperatorIsEmpty:"Порожнє",headerFilterOperatorIsNotEmpty:"Не порожнє",headerFilterOperatorIsAnyOf:"Будь-що із","headerFilterOperator=":"Дорівнює","headerFilterOperator!=":"Не дорівнює","headerFilterOperator>":"Більше ніж","headerFilterOperator>=":"Більше або дорівнює","headerFilterOperator<":"Менше ніж","headerFilterOperator<=":"Менше або дорівнює",filterValueAny:"будь-який",filterValueTrue:"так",filterValueFalse:"ні",columnMenuLabel:"Меню",columnMenuShowColumns:"Показати стовпці",columnMenuManageColumns:"Керування стовпцями",columnMenuFilter:"Фільтр",columnMenuHideColumn:"Приховати",columnMenuUnsort:"Скасувати сортування",columnMenuSortAsc:"Сортувати за зростанням",columnMenuSortDesc:"Сортувати за спаданням",columnHeaderFiltersTooltipActive:e=>No(e,{one:"активний фільтр",few:"активні фільтри",many:"активних фільтрів"}),columnHeaderFiltersLabel:"Показати фільтри",columnHeaderSortIconLabel:"Сортувати",footerRowSelected:e=>No(e,{one:"вибраний рядок",few:"вибрані рядки",many:"вибраних рядків"}),footerTotalRows:"Усього рядків:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} з ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Вибір прапорця",checkboxSelectionSelectAllRows:"Вибрати всі рядки",checkboxSelectionUnselectAllRows:"Скасувати вибір всіх рядків",checkboxSelectionSelectRow:"Вибрати рядок",checkboxSelectionUnselectRow:"Скасувати вибір рядка",booleanCellTrueLabel:"так",booleanCellFalseLabel:"ні",actionsCellMore:"більше",pinToLeft:"Закріпити ліворуч",pinToRight:"Закріпити праворуч",unpin:"Відкріпити",treeDataGroupingHeaderName:"Група",treeDataExpand:"показати дочірні елементи",treeDataCollapse:"приховати дочірні елементи",groupingColumnHeaderName:"Група",groupColumn:e=>`Групувати за ${e}`,unGroupColumn:e=>`Відмінити групування за ${e}`,detailPanelToggle:"Перемикач панелі деталей",expandDetailPanel:"Показати",collapseDetailPanel:"Приховати",rowReorderingHeaderName:"Порядок рядків",aggregationMenuItemHeader:"Агрегація",aggregationFunctionLabelSum:"сума",aggregationFunctionLabelAvg:"сер",aggregationFunctionLabelMin:"мін",aggregationFunctionLabelMax:"макс",aggregationFunctionLabelSize:"кількість"},gw=Pe(fw,uC),mw={noRowsLabel:"کوئی قطاریں نہیں",noResultsOverlayLabel:"کوئی نتائج نہیں",toolbarDensity:"کثافت",toolbarDensityLabel:"کثافت",toolbarDensityCompact:"تنگ",toolbarDensityStandard:"درمیانہ",toolbarDensityComfortable:"مناسب",toolbarColumns:"کالمز",toolbarColumnsLabel:"کالمز کو منتخب کریں",toolbarFilters:"فلٹرز",toolbarFiltersLabel:"فلٹرز دکھائیں",toolbarFiltersTooltipHide:"فلٹرز چھپائیں",toolbarFiltersTooltipShow:"فلٹرز دکھائیں",toolbarFiltersTooltipActive:e=>e!==1?`${e} فعال فلٹرز`:`${e} فلٹرز فعال`,toolbarQuickFilterPlaceholder:"تلاش کریں۔۔۔",toolbarQuickFilterLabel:"تلاش کریں",toolbarQuickFilterDeleteIconLabel:"کلئیر کریں",toolbarExport:"ایکسپورٹ",toolbarExportLabel:"ایکسپورٹ",toolbarExportCSV:"CSV کے طور پر ڈاوٴنلوڈ کریں",toolbarExportPrint:"پرنٹ کریں",toolbarExportExcel:"ایکسل کے طور پر ڈاوٴنلوڈ کریں",columnsPanelTextFieldLabel:"کالم کو تلاش کریں",columnsPanelTextFieldPlaceholder:"کالم کا عنوان",columnsPanelDragIconLabel:"کالم کی ترتیب تبدیل کریں",columnsPanelShowAllButton:"سارے دکھائیں",columnsPanelHideAllButton:"سارے چھپائیں",filterPanelAddFilter:"نیا فلٹر",filterPanelRemoveAll:"سارے ختم کریں",filterPanelDeleteIconLabel:"ختم کریں",filterPanelLogicOperator:"لاجک آپریٹر",filterPanelOperator:"آپریٹر",filterPanelOperatorAnd:"اور",filterPanelOperatorOr:"یا",filterPanelColumns:"کالمز",filterPanelInputLabel:"ویلیو",filterPanelInputPlaceholder:"ویلیو کو فلٹر کریں",filterOperatorContains:"شامل ہے",filterOperatorEquals:"برابر ہے",filterOperatorStartsWith:"شروع ہوتا ہے",filterOperatorEndsWith:"ختم ہوتا ہے",filterOperatorIs:"ہے",filterOperatorNot:"نہیں",filterOperatorAfter:"بعد میں ہے",filterOperatorOnOrAfter:"پر یا بعد میں ہے",filterOperatorBefore:"پہلے ہے",filterOperatorOnOrBefore:"پر یا پہلے ہے",filterOperatorIsEmpty:"خالی ہے",filterOperatorIsNotEmpty:"خالی نہیں ہے",filterOperatorIsAnyOf:"ان میں سے کوئی ہے","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"شامل ہے",headerFilterOperatorEquals:"برابر ہے",headerFilterOperatorStartsWith:"شروع ہوتا ہے",headerFilterOperatorEndsWith:"ختم ہوتا ہے",headerFilterOperatorIs:"ہے",headerFilterOperatorNot:"نہیں ہے",headerFilterOperatorAfter:"بعد میں ہے",headerFilterOperatorOnOrAfter:"پر یا بعد میں ہے",headerFilterOperatorBefore:"پہلے ہے",headerFilterOperatorOnOrBefore:"پر یا پہلے ہے",headerFilterOperatorIsEmpty:"خالی ہے",headerFilterOperatorIsNotEmpty:"خالی نہیں ہے",headerFilterOperatorIsAnyOf:"ان میں سے کوئی ہے","headerFilterOperator=":"برابر ہے","headerFilterOperator!=":"برابر نہیں ہے","headerFilterOperator>":"ذیادہ ہے","headerFilterOperator>=":"ذیادہ یا برابر ہے","headerFilterOperator<":"کم ہے","headerFilterOperator<=":"کم یا برابر ہے",filterValueAny:"کوئی بھی",filterValueTrue:"صحیح",filterValueFalse:"غلط",columnMenuLabel:"مینیو",columnMenuShowColumns:"کالم دکھائیں",columnMenuManageColumns:"کالم مینج کریں",columnMenuFilter:"فلٹر",columnMenuHideColumn:"چھپائیں",columnMenuUnsort:"sort ختم کریں",columnMenuSortAsc:"ترتیب صعودی",columnMenuSortDesc:"ترتیب نزولی",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} فعال فلٹرز`:`${e} فلٹرز فعال`,columnHeaderFiltersLabel:"فلٹرز دکھائیں",columnHeaderSortIconLabel:"Sort",footerRowSelected:e=>e!==1?`${e.toLocaleString()} منتخب قطاریں`:`${e.toLocaleString()} منتخب قطار`,footerTotalRows:"کل قطاریں:",footerTotalVisibleRows:(e,t)=>`${t.toLocaleString()} میں سے ${e.toLocaleString()}`,checkboxSelectionHeaderName:"چیک باکس منتخب کریں",checkboxSelectionSelectAllRows:"تمام قطاریں منتخب کریں",checkboxSelectionUnselectAllRows:"تمام قطاریں نامنتخب کریں ",checkboxSelectionSelectRow:"قطار منتخب کریں",checkboxSelectionUnselectRow:"قطار نامنتخب کریں",booleanCellTrueLabel:"ہاں",booleanCellFalseLabel:"نہیں",actionsCellMore:"ذیادہ",pinToLeft:"بائیں جانب pin کریں",pinToRight:"دائیں جانب pin کریں",unpin:"pin ختم کریں",treeDataGroupingHeaderName:"گروپ",treeDataExpand:"شاخیں دیکھیں",treeDataCollapse:"شاخیں چھپائیں",groupingColumnHeaderName:"گروپ",groupColumn:e=>`${e} سے گروپ کریں`,unGroupColumn:e=>`${e} سے گروپ ختم کریں`,detailPanelToggle:"ڈیٹیل پینل کھولیں / بند کریں",expandDetailPanel:"پھیلائیں",collapseDetailPanel:"تنگ کریں",rowReorderingHeaderName:"قطاروں کی ترتیب تبدیل کریں",aggregationMenuItemHeader:"ایگریگیشن",aggregationFunctionLabelSum:"کل",aggregationFunctionLabelAvg:"اوسط",aggregationFunctionLabelMin:"کم از کم",aggregationFunctionLabelMax:"زیادہ سے زیادہ",aggregationFunctionLabelSize:"سائز"},bw=Pe(mw,hC),hw={noRowsLabel:"Không có dữ liệu",noResultsOverlayLabel:"Không tìm thấy kết quả.",toolbarDensity:"Độ giãn",toolbarDensityLabel:"Độ giãn",toolbarDensityCompact:"Trung bình",toolbarDensityStandard:"Tiêu chuẩn",toolbarDensityComfortable:"Rộng",toolbarColumns:"Cột",toolbarColumnsLabel:"Chọn cột",toolbarFilters:"Bộ lọc",toolbarFiltersLabel:"Hiển thị bộ lọc",toolbarFiltersTooltipHide:"Ẩn",toolbarFiltersTooltipShow:"Hiện",toolbarFiltersTooltipActive:e=>e>1?`${e} bộ lọc hoạt động`:`${e} bộ lọc hoạt động`,toolbarQuickFilterPlaceholder:"Tìm kiếm…",toolbarQuickFilterLabel:"Tìm kiếm",toolbarQuickFilterDeleteIconLabel:"Xóa tìm kiếm",toolbarExport:"Xuất",toolbarExportLabel:"Xuất",toolbarExportCSV:"Xuất CSV",toolbarExportPrint:"In",toolbarExportExcel:"Xuất Excel",columnsPanelTextFieldLabel:"Tìm kiếm",columnsPanelTextFieldPlaceholder:"Tiêu đề cột",columnsPanelDragIconLabel:"Sắp xếp",columnsPanelShowAllButton:"Hiện tất cả",columnsPanelHideAllButton:"Ẩn tất cả",filterPanelAddFilter:"Thêm bộ lọc",filterPanelRemoveAll:"Xóa tất cả",filterPanelDeleteIconLabel:"Xóa",filterPanelLogicOperator:"Toán tử logic",filterPanelOperator:"Toán tử",filterPanelOperatorAnd:"Và",filterPanelOperatorOr:"Hoặc",filterPanelColumns:"Cột",filterPanelInputLabel:"Giá trị",filterPanelInputPlaceholder:"Lọc giá trị",filterOperatorContains:"Chứa",filterOperatorEquals:"Bằng",filterOperatorStartsWith:"Bắt đầu bằng",filterOperatorEndsWith:"Kết thúc bằng",filterOperatorIs:"Là",filterOperatorNot:"Không là",filterOperatorAfter:"Trước",filterOperatorOnOrAfter:"bằng hoặc sau",filterOperatorBefore:"Sau",filterOperatorOnOrBefore:"bằng hoặc trước",filterOperatorIsEmpty:"Rỗng",filterOperatorIsNotEmpty:"Khác rỗng",filterOperatorIsAnyOf:"Bất kỳ","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Chứa",headerFilterOperatorEquals:"Bằng",headerFilterOperatorStartsWith:"Bắt đầu với",headerFilterOperatorEndsWith:"Kết thúc với",headerFilterOperatorIs:"là",headerFilterOperatorNot:"Không là",headerFilterOperatorAfter:"Sau",headerFilterOperatorOnOrAfter:"Đang hoặc sau",headerFilterOperatorBefore:"Trước",headerFilterOperatorOnOrBefore:"Đang hoặc trước",headerFilterOperatorIsEmpty:"Rỗng",headerFilterOperatorIsNotEmpty:"Khác rỗng",headerFilterOperatorIsAnyOf:"Bất kỳ","headerFilterOperator=":"Bằng","headerFilterOperator!=":"Khác","headerFilterOperator>":"Lớn hơn","headerFilterOperator>=":"Lớn hơn hoặc bằng","headerFilterOperator<":"Nhỏ hơn","headerFilterOperator<=":"Nhỏ hơn hoặc bằng",filterValueAny:"bất kỳ giá trị nào",filterValueTrue:"Có",filterValueFalse:"Không",columnMenuLabel:"Danh mục",columnMenuShowColumns:"Danh sách cột",columnMenuManageColumns:"Quản lý cột",columnMenuFilter:"Bộ lọc",columnMenuHideColumn:"Ẩn cột",columnMenuUnsort:"Bỏ sắp xếp",columnMenuSortAsc:"Sắp xếp tăng dần",columnMenuSortDesc:"Sắp xếp giảm dần",columnHeaderFiltersTooltipActive:e=>e>1?`${e} bộ lọc hoạt động`:`${e} bộ lọc hoạt động`,columnHeaderFiltersLabel:"Bộ lọc",columnHeaderSortIconLabel:"Sắp xếp",footerRowSelected:e=>e>1?`${e.toLocaleString()} hàng đã chọn`:`${e.toLocaleString()} hàng đã chọn`,footerTotalRows:"Tổng:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} / ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Tích vào ô trống",checkboxSelectionSelectAllRows:"Chọn tất cả hàng",checkboxSelectionUnselectAllRows:"Bỏ chọn tất cả hàng",checkboxSelectionSelectRow:"Chọn hàng",checkboxSelectionUnselectRow:"Bỏ chọn hàng",booleanCellTrueLabel:"Có",booleanCellFalseLabel:"Không",actionsCellMore:"Thêm",pinToLeft:"Ghim cột bên trái",pinToRight:"Ghim cột bên phải",unpin:"Bỏ ghim",treeDataGroupingHeaderName:"Nhóm",treeDataExpand:"mở rộng",treeDataCollapse:"ẩn đi",groupingColumnHeaderName:"Nhóm",groupColumn:e=>`Nhóm theo ${e}`,unGroupColumn:e=>`Hủy nhóm theo ${e}`,detailPanelToggle:"Ẩn/hiện chi tiết",expandDetailPanel:"Mở rộng",collapseDetailPanel:"Thu nhỏ",rowReorderingHeaderName:"Sắp xếp hàng",aggregationMenuItemHeader:"Tổng hợp",aggregationFunctionLabelSum:"Tổng",aggregationFunctionLabelAvg:"Trung bình",aggregationFunctionLabelMin:"Tối thiểu",aggregationFunctionLabelMax:"Tối đa",aggregationFunctionLabelSize:"Kích cỡ"},Cw=Pe(hw,cC),ww={noRowsLabel:"没有数据。",noResultsOverlayLabel:"未找到数据。",toolbarDensity:"表格密度",toolbarDensityLabel:"表格密度",toolbarDensityCompact:"紧密",toolbarDensityStandard:"标准",toolbarDensityComfortable:"稀疏",toolbarColumns:"列",toolbarColumnsLabel:"选择列",toolbarFilters:"筛选器",toolbarFiltersLabel:"显示筛选器",toolbarFiltersTooltipHide:"隐藏筛选器",toolbarFiltersTooltipShow:"显示筛选器",toolbarFiltersTooltipActive:e=>`${e} 个筛选器`,toolbarQuickFilterPlaceholder:"搜索…",toolbarQuickFilterLabel:"搜索",toolbarQuickFilterDeleteIconLabel:"清除",toolbarExport:"导出",toolbarExportLabel:"导出",toolbarExportCSV:"导出至CSV",toolbarExportPrint:"打印",toolbarExportExcel:"导出至Excel",columnsPanelTextFieldLabel:"搜索列",columnsPanelTextFieldPlaceholder:"列名",columnsPanelDragIconLabel:"重排序列",columnsPanelShowAllButton:"显示所有",columnsPanelHideAllButton:"隐藏所有",filterPanelAddFilter:"添加筛选器",filterPanelRemoveAll:"清除全部",filterPanelDeleteIconLabel:"删除",filterPanelLogicOperator:"逻辑操作器",filterPanelOperator:"操作器",filterPanelOperatorAnd:"与",filterPanelOperatorOr:"或",filterPanelColumns:"列",filterPanelInputLabel:"值",filterPanelInputPlaceholder:"筛选值",filterOperatorContains:"包含",filterOperatorEquals:"等于",filterOperatorStartsWith:"开始于",filterOperatorEndsWith:"结束于",filterOperatorIs:"是",filterOperatorNot:"不是",filterOperatorAfter:"在后面",filterOperatorOnOrAfter:"正在后面",filterOperatorBefore:"在前面",filterOperatorOnOrBefore:"正在前面",filterOperatorIsEmpty:"为空",filterOperatorIsNotEmpty:"不为空",filterOperatorIsAnyOf:"属于","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"包含",headerFilterOperatorEquals:"等于",headerFilterOperatorStartsWith:"开始于",headerFilterOperatorEndsWith:"结束于",headerFilterOperatorIs:"是",headerFilterOperatorNot:"不是",headerFilterOperatorAfter:"在后面",headerFilterOperatorOnOrAfter:"在当前或后面",headerFilterOperatorBefore:"在前面",headerFilterOperatorOnOrBefore:"在当前或前面",headerFilterOperatorIsEmpty:"为空",headerFilterOperatorIsNotEmpty:"不为空",headerFilterOperatorIsAnyOf:"属于","headerFilterOperator=":"等于","headerFilterOperator!=":"不等于","headerFilterOperator>":"大于","headerFilterOperator>=":"大于或等于","headerFilterOperator<":"小雨","headerFilterOperator<=":"小于或等于",filterValueAny:"任何",filterValueTrue:"真",filterValueFalse:"假",columnMenuLabel:"菜单",columnMenuShowColumns:"显示",columnMenuManageColumns:"管理列",columnMenuFilter:"筛选器",columnMenuHideColumn:"隐藏",columnMenuUnsort:"恢复默认",columnMenuSortAsc:"升序",columnMenuSortDesc:"降序",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} 个筛选器`:`${e} 个筛选器`,columnHeaderFiltersLabel:"显示筛选器",columnHeaderSortIconLabel:"排序",footerRowSelected:e=>`共选中了${e.toLocaleString()}行`,footerTotalRows:"所有行:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} / ${t.toLocaleString()}`,checkboxSelectionHeaderName:"多选框",checkboxSelectionSelectAllRows:"全选行",checkboxSelectionUnselectAllRows:"反选所有行",checkboxSelectionSelectRow:"选择行",checkboxSelectionUnselectRow:"反选行",booleanCellTrueLabel:"真",booleanCellFalseLabel:"假",actionsCellMore:"更多",pinToLeft:"固定到左侧",pinToRight:"固定到右侧",unpin:"取消固定",treeDataGroupingHeaderName:"组",treeDataExpand:"查看子项目",treeDataCollapse:"隐藏子项目",groupingColumnHeaderName:"组",groupColumn:e=>`用${e}分组`,unGroupColumn:e=>`不再用${e}分组`,detailPanelToggle:"详细信息",expandDetailPanel:"显示",collapseDetailPanel:"折叠",rowReorderingHeaderName:"重新排列行",aggregationMenuItemHeader:"集合",aggregationFunctionLabelSum:"总数",aggregationFunctionLabelAvg:"平均",aggregationFunctionLabelMin:"最小",aggregationFunctionLabelMax:"最大",aggregationFunctionLabelSize:"大小"},Sw=Pe(ww,dC),Ow={noRowsLabel:"沒有資料",noResultsOverlayLabel:"沒有結果",toolbarDensity:"表格密度",toolbarDensityLabel:"表格密度",toolbarDensityCompact:"緊湊",toolbarDensityStandard:"標準",toolbarDensityComfortable:"舒適",toolbarColumns:"欄位",toolbarColumnsLabel:"選擇欄位",toolbarFilters:"篩選器",toolbarFiltersLabel:"顯示篩選器",toolbarFiltersTooltipHide:"隱藏篩選器",toolbarFiltersTooltipShow:"顯示篩選器",toolbarFiltersTooltipActive:e=>`${e} 個篩選器`,toolbarQuickFilterPlaceholder:"搜尋…",toolbarQuickFilterLabel:"搜尋",toolbarQuickFilterDeleteIconLabel:"清除",toolbarExport:"匯出",toolbarExportLabel:"匯出",toolbarExportCSV:"匯出 CSV",toolbarExportPrint:"列印",toolbarExportExcel:"匯出 Excel",columnsPanelTextFieldLabel:"欄位搜尋",columnsPanelTextFieldPlaceholder:"欄位名稱",columnsPanelDragIconLabel:"排序欄位",columnsPanelShowAllButton:"顯示所有",columnsPanelHideAllButton:"隱藏所有",filterPanelAddFilter:"增加篩選器",filterPanelRemoveAll:"清除所有",filterPanelDeleteIconLabel:"刪除",filterPanelLogicOperator:"邏輯運算子",filterPanelOperator:"運算子",filterPanelOperatorAnd:"且",filterPanelOperatorOr:"或",filterPanelColumns:"欄位",filterPanelInputLabel:"值",filterPanelInputPlaceholder:"篩選值",filterOperatorContains:"包含",filterOperatorEquals:"等於",filterOperatorStartsWith:"以...開頭",filterOperatorEndsWith:"以...結束",filterOperatorIs:"為",filterOperatorNot:"不為",filterOperatorAfter:"...之後",filterOperatorOnOrAfter:"...(含)之後",filterOperatorBefore:"...之前",filterOperatorOnOrBefore:"...(含)之前",filterOperatorIsEmpty:"為空",filterOperatorIsNotEmpty:"不為空",filterOperatorIsAnyOf:"是其中之一","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"包含",headerFilterOperatorEquals:"等於",headerFilterOperatorStartsWith:"以...開頭",headerFilterOperatorEndsWith:"以...結束",headerFilterOperatorIs:"為",headerFilterOperatorNot:"不為",headerFilterOperatorAfter:"...之後",headerFilterOperatorOnOrAfter:"...(含)之後",headerFilterOperatorBefore:"...之前",headerFilterOperatorOnOrBefore:"...(含)之前",headerFilterOperatorIsEmpty:"為空",headerFilterOperatorIsNotEmpty:"不為空",headerFilterOperatorIsAnyOf:"是其中之一","headerFilterOperator=":"等於","headerFilterOperator!=":"不等於","headerFilterOperator>":"大於","headerFilterOperator>=":"大於或等於","headerFilterOperator<":"小於","headerFilterOperator<=":"小於或等於",filterValueAny:"任何值",filterValueTrue:"真",filterValueFalse:"假",columnMenuLabel:"選單",columnMenuShowColumns:"顯示欄位",columnMenuManageColumns:"管理欄位",columnMenuFilter:"篩選器",columnMenuHideColumn:"隱藏",columnMenuUnsort:"預設排序",columnMenuSortAsc:"升序",columnMenuSortDesc:"降序",columnHeaderFiltersTooltipActive:e=>`${e} 個篩選器`,columnHeaderFiltersLabel:"顯示篩選器",columnHeaderSortIconLabel:"排序",footerRowSelected:e=>`已選取 ${e.toLocaleString()} 個`,footerTotalRows:"總數:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} / ${t.toLocaleString()}`,checkboxSelectionHeaderName:"核取方塊",checkboxSelectionSelectAllRows:"全選",checkboxSelectionUnselectAllRows:"取消全選",checkboxSelectionSelectRow:"選取",checkboxSelectionUnselectRow:"取消選取",booleanCellTrueLabel:"真",booleanCellFalseLabel:"假",actionsCellMore:"查看更多",pinToLeft:"釘選在左側",pinToRight:"釘選在右側",unpin:"取消釘選",treeDataGroupingHeaderName:"群組",treeDataExpand:"查看子項目",treeDataCollapse:"隱藏子項目",groupingColumnHeaderName:"群組",groupColumn:e=>`以 ${e} 分組`,unGroupColumn:e=>`取消以 ${e} 分組`,detailPanelToggle:"切換顯示詳細資訊",expandDetailPanel:"展開",collapseDetailPanel:"摺疊",rowReorderingHeaderName:"排序",aggregationMenuItemHeader:"集合",aggregationFunctionLabelSum:"總數",aggregationFunctionLabelAvg:"平均數",aggregationFunctionLabelMin:"最小",aggregationFunctionLabelMax:"最大",aggregationFunctionLabelSize:"尺寸"},Pw=Pe(Ow,fC),xw={noRowsLabel:"Nema redova",noResultsOverlayLabel:"Nema rezultata.",toolbarDensity:"Gustoća",toolbarDensityLabel:"Gustoća",toolbarDensityCompact:"Kompaktan",toolbarDensityStandard:"Standard",toolbarDensityComfortable:"Udobno",toolbarColumns:"Stupci",toolbarColumnsLabel:"Odaberite stupce",toolbarFilters:"Filteri",toolbarFiltersLabel:"Prikaži filtre",toolbarFiltersTooltipHide:"Sakrij filtre",toolbarFiltersTooltipShow:"Prikaži filtre",toolbarFiltersTooltipActive:e=>e!==1?`${e} aktivnih filtara`:`${e} aktivni filter`,toolbarQuickFilterPlaceholder:"Traži…",toolbarQuickFilterLabel:"traži",toolbarQuickFilterDeleteIconLabel:"Čisto",toolbarExport:"Izvoz",toolbarExportLabel:"Izvoz",toolbarExportCSV:"Preuzmi kao CSV",toolbarExportPrint:"Ispis",toolbarExportExcel:"Preuzmite kao Excel",columnsPanelTextFieldLabel:"Pronađi stupac",columnsPanelTextFieldPlaceholder:"Naslov stupca",columnsPanelDragIconLabel:"Promijeni redoslijed stupca",columnsPanelShowAllButton:"Pokaži sve",columnsPanelHideAllButton:"Sakrij sve",filterPanelAddFilter:"Dodajte filter",filterPanelRemoveAll:"Ukloniti sve",filterPanelDeleteIconLabel:"Izbrisati",filterPanelLogicOperator:"Logički operator",filterPanelOperator:"Operater",filterPanelOperatorAnd:"I",filterPanelOperatorOr:"Ili",filterPanelColumns:"Stupci",filterPanelInputLabel:"Vrijednost",filterPanelInputPlaceholder:"Vrijednost filtra",filterOperatorContains:"sadrži",filterOperatorEquals:"jednaki",filterOperatorStartsWith:"počinje sa",filterOperatorEndsWith:"završava sa",filterOperatorIs:"je",filterOperatorNot:"nije",filterOperatorAfter:"je poslije",filterOperatorOnOrAfter:"je na ili poslije",filterOperatorBefore:"je prije",filterOperatorOnOrBefore:"je na ili prije",filterOperatorIsEmpty:"prazno je",filterOperatorIsNotEmpty:"nije prazna",filterOperatorIsAnyOf:"je bilo koji od","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Sadrži",headerFilterOperatorEquals:"Jednako",headerFilterOperatorStartsWith:"Počinje sa",headerFilterOperatorEndsWith:"Završava s",headerFilterOperatorIs:"Je",headerFilterOperatorNot:"Nije",headerFilterOperatorAfter:"Je poslije",headerFilterOperatorOnOrAfter:"Je uključeno ili poslije",headerFilterOperatorBefore:"Je li prije",headerFilterOperatorOnOrBefore:"Uključeno je ili prije",headerFilterOperatorIsEmpty:"Prazno je",headerFilterOperatorIsNotEmpty:"Nije prazna",headerFilterOperatorIsAnyOf:"Je li bilo koji od","headerFilterOperator=":"Jednako","headerFilterOperator!=":"Nije jednako","headerFilterOperator>":"Veći od","headerFilterOperator>=":"Veće ili jednako","headerFilterOperator<":"Manje od","headerFilterOperator<=":"Manje od ili jednako",filterValueAny:"bilo koji",filterValueTrue:"pravi",filterValueFalse:"lažno",columnMenuLabel:"Jelovnik ",columnMenuShowColumns:"Prikaži stupce",columnMenuManageColumns:"Upravljanje stupcima",columnMenuFilter:"filtar",columnMenuHideColumn:"Sakrij stupac",columnMenuUnsort:"Poništi sortiranje",columnMenuSortAsc:"Poredaj uzlazno",columnMenuSortDesc:"Poredaj silaznim redom",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} aktivnih filtara`:`${e} aktivni filter`,columnHeaderFiltersLabel:"Prikaži filtre",columnHeaderSortIconLabel:"Vrsta",footerRowSelected:e=>e!==1?`Odabrano je ${e.toLocaleString()} redaka`:`${e.toLocaleString()} redak odabran`,footerTotalRows:"Ukupno redaka:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} od ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Odabir potvrdnog okvira",checkboxSelectionSelectAllRows:"Odaberite sve retke",checkboxSelectionUnselectAllRows:"Poništi odabir svih redaka",checkboxSelectionSelectRow:"Odaberite red",checkboxSelectionUnselectRow:"Poništi odabir retka",booleanCellTrueLabel:"Da",booleanCellFalseLabel:"Ne",actionsCellMore:"više",pinToLeft:"Prikvači lijevo",pinToRight:"Prikvači desno",unpin:"Otkvači",treeDataGroupingHeaderName:"Group",treeDataExpand:"vidjeti djecu",treeDataCollapse:"sakriti djecu",groupingColumnHeaderName:"Skupina",groupColumn:e=>`Grupiraj prema ${e}`,unGroupColumn:e=>`Zaustavi grupiranje prema ${e}`,detailPanelToggle:"Prebacivanje ploče s detaljima",expandDetailPanel:"Proširiti",collapseDetailPanel:"Kolaps",rowReorderingHeaderName:"Promjena redoslijeda",aggregationMenuItemHeader:"Agregacija",aggregationFunctionLabelSum:"iznos",aggregationFunctionLabelAvg:"prosj",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"max",aggregationFunctionLabelSize:"veličina"},vw=Pe(xw,Kh),Fw={noRowsLabel:"Nenhuma linha",noResultsOverlayLabel:"Nenhum resultado encontrado.",toolbarDensity:"Densidade",toolbarDensityLabel:"Densidade",toolbarDensityCompact:"Compactar",toolbarDensityStandard:"Padrão",toolbarDensityComfortable:"Confortável",toolbarColumns:"Colunas",toolbarColumnsLabel:"Selecione colunas",toolbarFilters:"Filtros",toolbarFiltersLabel:"Mostrar filtros",toolbarFiltersTooltipHide:"Ocultar filtros",toolbarFiltersTooltipShow:"Mostrar filtros",toolbarFiltersTooltipActive:e=>e!==1?`${e} filtros ativos`:`${e} filtro ativo`,toolbarQuickFilterPlaceholder:"Procurar…",toolbarQuickFilterLabel:"Procurar",toolbarQuickFilterDeleteIconLabel:"Claro",toolbarExport:"Exportar",toolbarExportLabel:"Exportar",toolbarExportCSV:"Baixar como CSV",toolbarExportPrint:"Imprimir",toolbarExportExcel:"Baixe como Excel",columnsPanelTextFieldLabel:"Encontrar coluna",columnsPanelTextFieldPlaceholder:"Título da coluna",columnsPanelDragIconLabel:"Reordenar coluna",columnsPanelShowAllButton:"Mostre tudo",columnsPanelHideAllButton:"Esconda tudo",filterPanelAddFilter:"Adicionar filtro",filterPanelRemoveAll:"Deletar tudo",filterPanelDeleteIconLabel:"Excluir",filterPanelLogicOperator:"Operador lógico",filterPanelOperator:"Operador",filterPanelOperatorAnd:"E",filterPanelOperatorOr:"Ou",filterPanelColumns:"Colunas",filterPanelInputLabel:"Valor",filterPanelInputPlaceholder:"Valor do filtro",filterOperatorContains:"contém",filterOperatorEquals:"é igual a",filterOperatorStartsWith:"começa com",filterOperatorEndsWith:"termina com",filterOperatorIs:"é",filterOperatorNot:"não é",filterOperatorAfter:"está depois",filterOperatorOnOrAfter:"está ligado ou depois",filterOperatorBefore:"é antes",filterOperatorOnOrBefore:"está ligado ou antes",filterOperatorIsEmpty:"está vazia",filterOperatorIsNotEmpty:"não está vazio",filterOperatorIsAnyOf:"é qualquer um","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"Contém",headerFilterOperatorEquals:"É igual a",headerFilterOperatorStartsWith:"Começa com",headerFilterOperatorEndsWith:"Termina com",headerFilterOperatorIs:"É",headerFilterOperatorNot:"Não é",headerFilterOperatorAfter:"Está depois",headerFilterOperatorOnOrAfter:"Está ligado ou depois",headerFilterOperatorBefore:"É antes",headerFilterOperatorOnOrBefore:"Está ligado ou antes",headerFilterOperatorIsEmpty:"Está vazia",headerFilterOperatorIsNotEmpty:"Não está vazio",headerFilterOperatorIsAnyOf:"Algum","headerFilterOperator=":"É igual a","headerFilterOperator!=":"Não é igual","headerFilterOperator>":"Maior que","headerFilterOperator>=":"Melhor que ou igual a","headerFilterOperator<":"Menor que","headerFilterOperator<=":"Menos que ou igual a",filterValueAny:"qualquer",filterValueTrue:"verdadeiro",filterValueFalse:"falso",columnMenuLabel:"Cardápio",columnMenuShowColumns:"Mostrar colunas",columnMenuManageColumns:"Gerenciar colunas",columnMenuFilter:"Filtro",columnMenuHideColumn:"Ocultar coluna",columnMenuUnsort:"Desclassificar",columnMenuSortAsc:"Classificar por ordem crescente",columnMenuSortDesc:"Classificar por ordem decrescente",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} filtros ativos`:`${e} filtro ativo`,columnHeaderFiltersLabel:"Mostrar filtros",columnHeaderSortIconLabel:"Organizar",footerRowSelected:e=>e!==1?`${e.toLocaleString()} linhas selecionadas`:`${e.toLocaleString()} linha selecionada`,footerTotalRows:"Total de linhas:",footerTotalVisibleRows:(e,t)=>`${e.toLocaleString()} de ${t.toLocaleString()}`,checkboxSelectionHeaderName:"Seleção de caixa de seleção",checkboxSelectionSelectAllRows:"Selecione todas as linhas",checkboxSelectionUnselectAllRows:"Desmarque todas as linhas",checkboxSelectionSelectRow:"Selecione a linha",checkboxSelectionUnselectRow:"Desmarcar linha",booleanCellTrueLabel:"sim",booleanCellFalseLabel:"não",actionsCellMore:"mais",pinToLeft:"Fixar à esquerda",pinToRight:"Fixar à direita",unpin:"Liberar",treeDataGroupingHeaderName:"Group",treeDataExpand:"veja crianças",treeDataCollapse:"esconder crianças",groupingColumnHeaderName:"Grupo",groupColumn:e=>`Agrupar por ${e}`,unGroupColumn:e=>`Pare de agrupar por ${e}`,detailPanelToggle:"Alternar painel de detalhes",expandDetailPanel:"Expandir",collapseDetailPanel:"Colapso",rowReorderingHeaderName:"Reordenação de linhas",aggregationMenuItemHeader:"Agregação",aggregationFunctionLabelSum:"soma",aggregationFunctionLabelAvg:"média",aggregationFunctionLabelMin:"min",aggregationFunctionLabelMax:"máx.",aggregationFunctionLabelSize:"tamanho"},yw=Pe(Fw,oC),Iw={noRowsLabel:"沒有行",noResultsOverlayLabel:"未找到結果。",toolbarDensity:"密度",toolbarDensityLabel:"密度",toolbarDensityCompact:"袖珍的",toolbarDensityStandard:"標準",toolbarDensityComfortable:"舒服的",toolbarColumns:"列",toolbarColumnsLabel:"選擇列",toolbarFilters:"過濾器",toolbarFiltersLabel:"顯示過濾器",toolbarFiltersTooltipHide:"隱藏過濾器",toolbarFiltersTooltipShow:"顯示過濾器",toolbarFiltersTooltipActive:e=>e!==1?`${e} 個有效過濾器`:`${e} 個活動過濾器`,toolbarQuickFilterPlaceholder:"搜尋…",toolbarQuickFilterLabel:"搜尋",toolbarQuickFilterDeleteIconLabel:"清除",toolbarExport:"出口",toolbarExportLabel:"出口",toolbarExportCSV:"下載為 CSV",toolbarExportPrint:"列印",toolbarExportExcel:"下載為 Excel",columnsPanelTextFieldLabel:"查找欄目",columnsPanelTextFieldPlaceholder:"欄目標題",columnsPanelDragIconLabel:"重新排序列",columnsPanelShowAllButton:"顯示所有",columnsPanelHideAllButton:"全部藏起來",filterPanelAddFilter:"新增過濾器",filterPanelRemoveAll:"移除所有",filterPanelDeleteIconLabel:"刪除",filterPanelLogicOperator:"邏輯運算符",filterPanelOperator:"操作員",filterPanelOperatorAnd:"和",filterPanelOperatorOr:"或者",filterPanelColumns:"列",filterPanelInputLabel:"價值",filterPanelInputPlaceholder:"過濾值",filterOperatorContains:"包含",filterOperatorEquals:"等於",filterOperatorStartsWith:"以。。開始",filterOperatorEndsWith:"以。。結束",filterOperatorIs:"是",filterOperatorNot:"不是",filterOperatorAfter:"是在之後",filterOperatorOnOrAfter:"是在或之後",filterOperatorBefore:"是在之前",filterOperatorOnOrBefore:"是在或之前",filterOperatorIsEmpty:"是空的",filterOperatorIsNotEmpty:"不為空",filterOperatorIsAnyOf:"是以下任一個","filterOperator=":"=","filterOperator!=":"!=","filterOperator>":">","filterOperator>=":">=","filterOperator<":"<","filterOperator<=":"<=",headerFilterOperatorContains:"包含",headerFilterOperatorEquals:"等於",headerFilterOperatorStartsWith:"以。。開始",headerFilterOperatorEndsWith:"以。。結束",headerFilterOperatorIs:"是",headerFilterOperatorNot:"不是",headerFilterOperatorAfter:"是在之後",headerFilterOperatorOnOrAfter:"是在或之後",headerFilterOperatorBefore:"是之前",headerFilterOperatorOnOrBefore:"是在或之前",headerFilterOperatorIsEmpty:"是空的",headerFilterOperatorIsNotEmpty:"不為空",headerFilterOperatorIsAnyOf:"是以下任一個","headerFilterOperator=":"等於","headerFilterOperator!=":"不等於","headerFilterOperator>":"比...更棒","headerFilterOperator>=":"大於或等於","headerFilterOperator<":"少於","headerFilterOperator<=":"小於或等於",filterValueAny:"任何",filterValueTrue:"真的",filterValueFalse:"錯誤的",columnMenuLabel:"選單",columnMenuShowColumns:"顯示欄目",columnMenuManageColumns:"管理欄目",columnMenuFilter:"篩選",columnMenuHideColumn:"隱藏列",columnMenuUnsort:"取消排序",columnMenuSortAsc:"按升序排序",columnMenuSortDesc:"按降序排序",columnHeaderFiltersTooltipActive:e=>e!==1?`${e} 個有效過濾器`:`${e} 個活動過濾器`,columnHeaderFiltersLabel:"顯示過濾器",columnHeaderSortIconLabel:"種類",footerRowSelected:e=>e!==1?`已選擇 ${e.toLocaleString()} 行`:`已選擇 ${e.toLocaleString()} 行`,footerTotalRows:"總行數:",footerTotalVisibleRows:(e,t)=>`${t.toLocaleString()} 的 ${e.toLocaleString()}`,checkboxSelectionHeaderName:"複選框選擇",checkboxSelectionSelectAllRows:"選擇所有行",checkboxSelectionUnselectAllRows:"取消選擇所有行",checkboxSelectionSelectRow:"選擇行",checkboxSelectionUnselectRow:"取消選擇行",booleanCellTrueLabel:"是的",booleanCellFalseLabel:"不",actionsCellMore:"更多的",pinToLeft:"固定到左側",pinToRight:"固定到右側",unpin:"取消固定",treeDataGroupingHeaderName:"Group",treeDataExpand:"看看孩子們",treeDataCollapse:"隱藏孩子",groupingColumnHeaderName:"團體",groupColumn:e=>`按 ${e} 分組`,unGroupColumn:e=>`停止以 ${e} 分組`,detailPanelToggle:"詳細資訊面板切換",expandDetailPanel:"擴張",collapseDetailPanel:"坍塌",rowReorderingHeaderName:"行重新排序",aggregationMenuItemHeader:"聚合",aggregationFunctionLabelSum:"和",aggregationFunctionLabelAvg:"平均",aggregationFunctionLabelMin:"分分鐘",aggregationFunctionLabelMax:"最大限度",aggregationFunctionLabelSize:"尺寸"},Mw=Pe(Iw,pC);/** + * @mui/x-data-grid v6.19.6 * * @license MIT * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */const Lw=Object.freeze(Object.defineProperty({__proto__:null,DATA_GRID_PROPS_DEFAULT_VALUES:jr,DEFAULT_GRID_COL_TYPE_KEY:an,DataGrid:Ah,GRID_ACTIONS_COLUMN_TYPE:zr,GRID_ACTIONS_COL_DEF:Js,GRID_BOOLEAN_COL_DEF:tn,GRID_CHECKBOX_SELECTION_COL_DEF:Jt,GRID_CHECKBOX_SELECTION_FIELD:yt,GRID_COLUMN_MENU_SLOTS:bs,GRID_COLUMN_MENU_SLOT_PROPS:hs,GRID_DATETIME_COL_DEF:nu,GRID_DATE_COL_DEF:lu,GRID_DEFAULT_LOCALE_TEXT:un,GRID_EXPERIMENTAL_ENABLED:Os,GRID_NUMERIC_COL_DEF:iu,GRID_ROOT_GROUP_ID:Ue,GRID_SINGLE_SELECT_COL_DEF:uu,GRID_STRING_COL_DEF:it,GridActionsCell:di,GridActionsCellItem:vp,GridAddIcon:tl,GridApiContext:Pl,GridArrowDownwardIcon:Jo,GridArrowUpwardIcon:Zo,GridBody:ja,GridBooleanCell:ei,GridCell:Kd,GridCellCheckboxForwardRef:Bi,GridCellCheckboxRenderer:Ui,GridCellEditStartReasons:wt,GridCellEditStopReasons:lt,GridCellModes:ye,GridCheckCircleIcon:kf,GridCheckIcon:ls,GridClearIcon:ss,GridCloseIcon:no,GridColumnHeaderFilterIconButton:ji,GridColumnHeaderItem:xi,GridColumnHeaderMenu:wi,GridColumnHeaderSeparator:Oi,GridColumnHeaderSeparatorSides:Vl,GridColumnHeaderSortIcon:Ci,GridColumnHeaderTitle:Si,GridColumnHeaders:Cu,GridColumnIcon:Qi,GridColumnMenu:ws,GridColumnMenuColumnsItem:fs,GridColumnMenuContainer:cs,GridColumnMenuFilterItem:gs,GridColumnMenuHideItem:ds,GridColumnMenuManageItem:ps,GridColumnMenuSortItem:ms,GridColumnsPanel:Ps,GridContextProvider:Xs,GridCsvExportMenuItem:$s,GridDeleteForeverIcon:us,GridDeleteIcon:Ef,GridDragIcon:rl,GridEditBooleanCell:ri,GridEditDateCell:li,GridEditInputCell:ni,GridEditModes:mt,GridEditSingleSelectCell:ui,GridExpandMoreIcon:Xo,GridFilterAltIcon:el,GridFilterForm:ys,GridFilterInputBoolean:Is,GridFilterInputDate:jt,GridFilterInputMultipleSingleSelect:ks,GridFilterInputMultipleValue:en,GridFilterInputSingleSelect:ol,GridFilterInputValue:ut,GridFilterListIcon:Wi,GridFilterPanel:Ms,GridFooter:Vs,GridFooterContainer:mi,GridFooterPlaceholder:Ba,GridGenericColumnMenu:Cs,GridHeader:Ns,GridHeaderCheckbox:qi,GridKeyboardArrowRight:Yo,GridLoadIcon:rs,GridLoadingOverlay:Gs,GridLogicOperator:Ke,GridMenu:Vr,GridMenuIcon:Mf,GridMoreVertIcon:ns,GridNoRowsOverlay:zs,GridOverlay:ko,GridOverlays:Za,GridPagination:js,GridPanel:vs,GridPanelContent:Ql,GridPanelFooter:Zl,GridPanelHeader:Ss,GridPanelWrapper:Jl,GridPreferencePanelsValue:st,GridPreferencesPanel:Fs,GridPrintExportMenuItem:As,GridRemoveIcon:ts,GridRoot:gi,GridRow:Ys,GridRowCount:Bs,GridRowEditStartReasons:Ft,GridRowEditStopReasons:St,GridRowModes:ke,GridSaveAltIcon:os,GridSearchIcon:Ki,GridSelectedRowCount:_s,GridSeparatorIcon:Zi,GridSignature:gt,GridSkeletonCell:fi,GridTableRowsIcon:Yi,GridToolbar:Vg,GridToolbarColumnsButton:Es,GridToolbarContainer:bi,GridToolbarDensitySelector:Ls,GridToolbarExport:Rs,GridToolbarExportContainer:Ds,GridToolbarFilterButton:Ts,GridToolbarQuickFilter:Hs,GridTripleDotsVerticalIcon:es,GridViewColumnIcon:is,GridViewHeadlineIcon:Ji,GridViewStreamIcon:Xi,GridVisibilityOffIcon:as,SUBMIT_FILTER_DATE_STROKE_TIME:Hh,SUBMIT_FILTER_STROKE_TIME:Rh,arSD:hC,beBY:OC,bgBG:xC,checkGridRowIdIsValid:Ua,createUseGridApiEventHandler:vi,csCZ:FC,daDK:IC,deDE:kC,elGR:LC,enUS:TC,esES:$C,faIR:RC,fiFI:_C,frFR:NC,getDataGridUtilityClass:be,getDefaultGridFilterModel:ur,getGridBooleanOperators:Zs,getGridDateOperators:nn,getGridDefaultColumnTypes:cu,getGridNumericOperators:au,getGridNumericQuickFilterFn:il,getGridSingleSelectOperators:su,getGridStringOperators:Qs,getGridStringQuickFilterFn:al,gridClasses:V,gridColumnDefinitionsSelector:ft,gridColumnFieldsSelector:Pt,gridColumnGroupingSelector:Tr,gridColumnGroupsHeaderMaxDepthSelector:fr,gridColumnGroupsHeaderStructureSelector:ka,gridColumnGroupsLookupSelector:yl,gridColumnGroupsUnwrappedModelSelector:Ma,gridColumnLookupSelector:Vt,gridColumnMenuSelector:so,gridColumnPositionsSelector:qt,gridColumnVisibilityModelSelector:at,gridColumnsTotalWidthSelector:xo,gridDataRowIdsSelector:or,gridDateComparator:Ul,gridDateFormatter:ru,gridDateTimeFormatter:ou,gridDensityFactorSelector:Qt,gridDensitySelector:yo,gridDensityValueSelector:Dl,gridExpandedRowCountSelector:El,gridExpandedSortedRowEntriesSelector:Mt,gridExpandedSortedRowIdsSelector:ar,gridFilterActiveItemsLookupSelector:Na,gridFilterActiveItemsSelector:Ll,gridFilterModelSelector:Re,gridFilterableColumnDefinitionsSelector:Fl,gridFilterableColumnLookupSelector:Ia,gridFilteredDescendantCountLookupSelector:Md,gridFilteredRowsLookupSelector:Ml,gridFilteredSortedRowEntriesSelector:_a,gridFilteredSortedRowIdsSelector:Va,gridFilteredSortedTopLevelRowEntriesSelector:kl,gridFilteredTopLevelRowCountSelector:Ar,gridFocusCellSelector:Ze,gridFocusColumnHeaderSelector:Ga,gridFocusStateSelector:Rr,gridNumberComparator:Bl,gridPageCountSelector:bf,gridPageSelector:Li,gridPageSizeSelector:Ti,gridPaginatedVisibleSortedGridRowEntriesSelector:Di,gridPaginatedVisibleSortedGridRowIdsSelector:zl,gridPaginationModelSelector:ot,gridPaginationRowRangeSelector:Eo,gridPaginationSelector:Gl,gridPanelClasses:xs,gridPreferencePanelStateSelector:At,gridQuickFilterValuesSelector:Ra,gridRowCountSelector:Dr,gridRowGroupingNameSelector:Ta,gridRowMaximumTreeDepthSelector:$r,gridRowSelectionStateSelector:rt,gridRowTreeDepthsSelector:qo,gridRowTreeSelector:nt,gridRowsDataRowIdToIdLookupSelector:Or,gridRowsLoadingSelector:Ea,gridRowsLookupSelector:Ot,gridRowsMetaSelector:dr,gridSortColumnLookupSelector:Aa,gridSortModelSelector:tt,gridSortedRowEntriesSelector:Fo,gridSortedRowIdsSelector:vo,gridStringOrNumberComparator:Hi,gridTabIndexCellSelector:xr,gridTabIndexColumnHeaderSelector:Tl,gridTabIndexStateSelector:Hr,gridTopLevelRowCountSelector:La,gridVirtualizationColumnEnabledSelector:Kl,gridVirtualizationEnabledSelector:zi,gridVirtualizationSelector:Wl,gridVisibleColumnDefinitionsSelector:He,gridVisibleColumnFieldsSelector:Lr,gridVisibleRowsLookupSelector:Ha,heIL:zC,hrHR:yw,huHU:BC,isLeaf:Al,itIT:qC,jaJP:KC,koKR:ZC,nbNO:YC,nlNL:ew,plPL:rw,ptBR:lw,ptPT:Mw,renderActionsCell:pi,renderBooleanCell:ti,renderEditBooleanCell:oi,renderEditDateCell:Hl,renderEditInputCell:ai,renderEditSingleSelectCell:ci,roRO:aw,ruRU:sw,selectedGridRowsCountSelector:$i,selectedGridRowsSelector:Ai,selectedIdsLookupSelector:Fr,skSK:cw,svSE:pw,trTR:gw,ukUA:bw,unstable_gridFocusColumnGroupHeaderSelector:Pr,unstable_gridFocusColumnHeaderFilterSelector:kd,unstable_gridHeaderFilteringEditFieldSelector:_i,unstable_gridHeaderFilteringMenuSelector:Vi,unstable_gridHeaderFilteringStateSelector:ql,unstable_gridTabIndexColumnGroupHeaderSelector:za,unstable_gridTabIndexColumnHeaderFilterSelector:Ed,unstable_resetCleanupTracking:af,urPK:Cw,useFirstRender:mr,useGridApiContext:ce,useGridApiEventHandler:re,useGridApiMethod:me,useGridApiOptionHandler:Ee,useGridApiRef:ud,useGridLogger:je,useGridNativeEventListener:Ii,useGridRootProps:Y,useGridSelector:Q,useGridVirtualization:Gi,viVN:Sw,virtualizationStateInitializer:Ni,zhCN:Pw,zhHK:Ew,zhTW:vw},Symbol.toStringTag,{value:"Module"})),Tw=ac(Lw);var dn={},Dw=X&&X.__createBinding||(Object.create?function(e,t,r,o){o===void 0&&(o=r);var l=Object.getOwnPropertyDescriptor(t,r);(!l||("get"in l?!t.__esModule:l.writable||l.configurable))&&(l={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,l)}:function(e,t,r,o){o===void 0&&(o=r),e[o]=t[r]}),$w=X&&X.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Aw=X&&X.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&Dw(t,e,r);return $w(t,e),t},Rw=X&&X.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(dn,"__esModule",{value:!0});const Lt=Aw(a),Hw=bt,_w=Rw(ic),Pu=(0,Hw.makeStyles)()(e=>({resizeBar:{background:e.palette.action.disabledBackground,height:12,position:"relative",overflow:"hidden"},tick:{position:"absolute",height:"100%",pointerEvents:"none",background:e.palette.action.disabled,width:1},hiddenTick:{position:"absolute",height:"100%",width:5}}));function Vw({left:e,scrollLeft:t,idx:r,onDrag:o,onMouseDown:l}){const{classes:n}=Pu(),i=(0,Lt.useCallback)((s,u)=>o(s,u,r),[r,o]);return Lt.default.createElement(Lt.default.Fragment,null,Lt.default.createElement(_w.default,{onDrag:i,onMouseDown:l,vertical:!0,className:n.hiddenTick,style:{left:e-t-2.5}}),Lt.default.createElement("div",{style:{left:e-t},className:n.tick}))}function Nw({widths:e,setWidths:t,checkbox:r,scrollLeft:o=0}){const{classes:l}=Pu(),n=[],[i,s]=(0,Lt.useState)();let u=r?52:0;for(let d=0;dLt.default.createElement(Vw,{key:c,onMouseDown:()=>{s([...e])},left:c===n.length-1?d-3:d,onDrag:(p,f,b)=>{const g=[...e];g[b]=Math.max(i[b]-f,50),t(g)},idx:c,scrollLeft:o})))}dn.default=Nw;var Lo={};Object.defineProperty(Lo,"__esModule",{value:!0});Lo.useResizeBar=void 0;const zo=a;function Gw(){const e=(0,zo.useRef)(null),[t,r]=(0,zo.useState)(0);return(0,zo.useEffect)(()=>{const o=setInterval(()=>{var l;const n=(l=e.current)===null||l===void 0?void 0:l.querySelector(".MuiDataGrid-virtualScroller");n&&r(n.scrollLeft)},100);return()=>{clearInterval(o)}},[]),{ref:e,scrollLeft:t}}Lo.useResizeBar=Gw;var zw=X&&X.__createBinding||(Object.create?function(e,t,r,o){o===void 0&&(o=r);var l=Object.getOwnPropertyDescriptor(t,r);(!l||("get"in l?!t.__esModule:l.writable||l.configurable))&&(l={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,l)}:function(e,t,r,o){o===void 0&&(o=r),e[o]=t[r]}),jw=X&&X.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Bw=X&&X.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&zw(t,e,r);return jw(t,e),t},xu=X&&X.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ol,"__esModule",{value:!0});const Xe=Bw(a),Uw=bt,ia=Tw,jo=Rt,sa=Ht,qw=xu(dn),Ww=xu(pr),Kw=Lo,Qw=Kt,Zw=(0,Uw.makeStyles)()(e=>({margin:{margin:e.spacing(1),width:"100%"},cell:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}}));function Jw({value:e,prefix:t,name:r}){const{classes:o}=Zw(),{ref:l,scrollLeft:n}=(0,Kw.useResizeBar)(),[i,s]=(0,Xe.useState)(!1),u=Object.keys(e[0]).sort(),d=new Set(u),c=Object.entries(e).map(([g,h])=>{const{id:x,...S}=h;return{id:g,identifier:x,...S}});for(const g of e)for(const h of Object.keys(g))d.add(h);let p;d.has("id")?(d.delete("id"),p=["identifier",...d]):p=[...d];const[f,b]=(0,Xe.useState)(p.map(g=>(0,sa.measureGridWidth)(c.map(h=>h[g]))));return d.sizes(g.target.checked)}),label:Xe.default.createElement(jo.Typography,{variant:"body2"},"Show options")}),Xe.default.createElement("div",{className:o.margin,ref:l},Xe.default.createElement(qw.default,{widths:f,setWidths:b,scrollLeft:n}),Xe.default.createElement(ia.DataGrid,{disableRowSelectionOnClick:!0,rows:c,rowCount:25,rowHeight:25,columnHeaderHeight:35,hideFooter:c.length<25,slots:{toolbar:i?ia.GridToolbar:null},slotProps:{toolbar:{printOptions:{disableToolbarButton:!0}}},columns:p.map((g,h)=>({field:g,renderCell:x=>{const S=x.value;return Xe.default.createElement("div",{className:o.cell},Xe.default.createElement(Qw.SanitizedHTML,{html:(0,sa.getStr)(S)}))},width:f[h]}))}))):null}Ol.default=Jw;var ro={},ua;function Yw(){if(ua)return ro;ua=1;var e=X&&X.__importDefault||function(d){return d&&d.__esModule?d:{default:d}};Object.defineProperty(ro,"__esModule",{value:!0});const t=e(a),r=e(ho),o=bt,l=e(gl()),n=e(pr),i=e(Er),s=(0,o.makeStyles)()(d=>({field:{display:"flex",flexWrap:"wrap"},fieldSubvalue:{wordBreak:"break-word",maxHeight:300,padding:d.spacing(.5),border:`1px solid ${d.palette.action.selected}`,boxSizing:"border-box",overflow:"auto"}}));function u({name:d,value:c,description:p,prefix:f=[]}){const{classes:b}=s();return c.length===1?(0,r.default)(c[0])?t.default.createElement(l.default,{attributes:c[0],prefix:[...f,d]}):t.default.createElement("div",{className:b.field},t.default.createElement(n.default,{prefix:f,description:p,name:d}),t.default.createElement(i.default,{value:c[0]})):c.every(g=>(0,r.default)(g))?t.default.createElement(t.default.Fragment,null,c.map((g,h)=>t.default.createElement(l.default,{key:JSON.stringify(g)+"-"+h,attributes:g,prefix:[...f,d+"-"+h]}))):t.default.createElement("div",{className:b.field},t.default.createElement(n.default,{prefix:f,description:p,name:d}),c.map((g,h)=>t.default.createElement("div",{key:JSON.stringify(g)+"-"+h,className:b.fieldSubvalue},t.default.createElement(i.default,{value:g}))))}return ro.default=u,ro}var pn={},fn=X&&X.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(pn,"__esModule",{value:!0});const Bo=fn(a),Xw=fn(pr),eS=bt,tS=fn(Er),rS=(0,eS.makeStyles)()({field:{display:"flex",flexWrap:"wrap"}});function oS({value:e,prefix:t,name:r}){const{classes:o}=rS(),{uri:l,baseUri:n=""}=e;let i;try{i=new URL(l,n).href}catch{i=l}return Bo.default.createElement("div",{className:o.field},Bo.default.createElement(Xw.default,{prefix:t,name:r}),Bo.default.createElement(tS.default,{value:i}))}pn.default=oS;var ca;function gl(){if(ca)return to;ca=1;var e=X&&X.__importDefault||function(f){return f&&f.__esModule?f:{default:f}};Object.defineProperty(to,"__esModule",{value:!0});const t=e(a),r=e(ho),o=ct,l=Ht,n=e(Ol),i=e(Yw()),s=e(pn),u=e(Oo),d=170,c=["__jbrowsefmt","length","position","subfeatures","uniqueId","exonFrames","parentId","thickStart","thickEnd"];function p(f){const{attributes:b,omit:g=[],omitSingleLevel:h=[],descriptions:x,formatter:S=H=>H,hideUris:C,prefix:E=[]}=f,T=new Set([...g,...c,...h]),{__jbrowsefmt:_,...F}=b,L={...F,..._},k=(0,o.generateMaxWidth)(Object.entries(L).filter(([H,A])=>A!==void 0&&!T.has(H)),E);return t.default.createElement(t.default.Fragment,null,Object.entries(L).filter(([H,A])=>A!==void 0&&!T.has(H)).map(([H,A])=>{const P=(0,o.accessNested)([...E,H],x);if(Array.isArray(A))return A.length>1&&A.every(R=>(0,r.default)(R))?t.default.createElement(n.default,{key:H,name:H,prefix:E,value:A}):t.default.createElement(i.default,{key:H,name:H,value:A,description:P,prefix:E});if((0,r.default)(A)){const{omitSingleLevel:R,...y}=f;return(0,l.isUriLocation)(A)?C?null:t.default.createElement(s.default,{key:H,name:H,prefix:E,value:A}):t.default.createElement(p,{...y,key:H,attributes:A,descriptions:x,prefix:[...E,H]})}else return t.default.createElement(u.default,{key:H,name:H,value:S(A,H),description:P,prefix:E,width:Math.min(k,d)})}))}return to.default=p,to}(function(e){var t=X&&X.__createBinding||(Object.create?function(P,R,y,w){w===void 0&&(w=y);var O=Object.getOwnPropertyDescriptor(R,y);(!O||("get"in O?!R.__esModule:O.writable||O.configurable))&&(O={enumerable:!0,get:function(){return R[y]}}),Object.defineProperty(P,w,O)}:function(P,R,y,w){w===void 0&&(w=y),P[w]=R[y]}),r=X&&X.__setModuleDefault||(Object.create?function(P,R){Object.defineProperty(P,"default",{enumerable:!0,value:R})}:function(P,R){P.default=R}),o=X&&X.__importStar||function(P){if(P&&P.__esModule)return P;var R={};if(P!=null)for(var y in P)y!=="default"&&Object.prototype.hasOwnProperty.call(P,y)&&t(R,P,y);return r(R,P),R},l=X&&X.__importDefault||function(P){return P&&P.__esModule?P:{default:P}};Object.defineProperty(e,"__esModule",{value:!0}),e.Attributes=e.FeatureDetails=e.BaseAttributes=e.BaseCoreDetails=e.BaseCard=void 0;const n=o(a),i=sc,s=Rt,u=bt,d=pa,c=l(wo),p=Ht,f=Kt,b=l(Cl),g=l(Oo),h=l(gl()),x=ct,S=["name","start","end","strand","refName","description","type"],C=(0,u.makeStyles)()(P=>{var R;return{expansionPanelDetails:{display:"block",padding:P.spacing(1)},expandIcon:{color:((R=P.palette.tertiary)===null||R===void 0?void 0:R.contrastText)||"#fff"}}});function E({children:P,title:R,defaultExpanded:y=!0}){const{classes:w}=C(),[O,M]=(0,n.useState)(y);return n.default.createElement(s.Accordion,{expanded:O,onChange:()=>M(D=>!D),TransitionProps:{unmountOnExit:!0,timeout:150}},n.default.createElement(s.AccordionSummary,{expandIcon:n.default.createElement(c.default,{className:w.expandIcon})},n.default.createElement(s.Typography,{variant:"button"}," ",R)),n.default.createElement(s.AccordionDetails,{className:w.expansionPanelDetails},P))}e.BaseCard=E;function T(P){const{feature:R}=P,y=R.strand,w={"-1":"-",0:"",1:"+"},O=w[y]?`(${w[y]})`:"",M=(0,p.assembleLocString)(R);return n.default.createElement(n.default.Fragment,null,`${M} ${O}`)}function _(P){const{feature:R}=P,y=R,w={...y,...y.__jbrowsefmt},{start:O,end:M}=w,D={...w,length:(0,p.toLocale)(M-O)},I={description:"Description",name:"Name",length:"Length",type:"Type"};return n.default.createElement(n.default.Fragment,null,n.default.createElement(g.default,{name:"Position",value:n.default.createElement(T,{...P,feature:w})}),Object.entries(I).map(([$,N])=>[N,D[$]]).filter(([,$])=>$!=null).map(([$,N])=>n.default.createElement(g.default,{key:$,name:$,value:N})))}const F=P=>{const{title:R="Primary data"}=P;return n.default.createElement(E,{...P,title:R},n.default.createElement(_,{...P}))};e.BaseCoreDetails=F;const L=P=>{const{feature:R}=P;return n.default.createElement(E,{...P,title:"Attributes"},n.default.createElement(h.default,{...P,attributes:R}))};e.BaseAttributes=L;function k(P){const{omit:R=[],model:y,feature:w,depth:O=0}=P,{maxDepth:M}=y,{mate:D,name:I="",id:$="",type:N="",subfeatures:j,uniqueId:G}=w,U=(0,p.getEnv)(y).pluginManager,K=(0,p.getSession)(y),J=U.evaluateExtensionPoint("Core-extraFeaturePanel",null,{session:K,feature:w,model:y});return n.default.createElement(E,{title:(0,x.generateTitle)(I,$,N)},n.default.createElement(s.Typography,null,"Core details"),n.default.createElement(_,{...P}),D?n.default.createElement(n.default.Fragment,null,n.default.createElement(s.Divider,null),n.default.createElement(s.Typography,null,"Mate details"),n.default.createElement(_,{...P,feature:{...D,uniqueId:G+"-mate"}})):null,n.default.createElement(s.Divider,null),n.default.createElement(s.Typography,null,"Attributes"),n.default.createElement(h.default,{attributes:w,...P,omit:R,omitSingleLevel:S}),n.default.createElement(i.ErrorBoundary,{FallbackComponent:ee=>n.default.createElement(f.ErrorMessage,{error:ee.error})},n.default.createElement(b.default,{...P})),J?n.default.createElement(n.default.Fragment,null,n.default.createElement(s.Divider,null),n.default.createElement(E,{title:J.name},n.default.createElement(J.Component,{...P}))):null,On.default.createElement(k,{key:JSON.stringify(ee),feature:{...ee,uniqueId:`${G}_${le}`},model:y,depth:O+1}))):null)}e.FeatureDetails=k;const H=(0,d.observer)(function({model:P}){const{error:R,featureData:y}=P;if(R)return n.default.createElement(f.ErrorMessage,{error:R});if(!y)return null;const w=JSON.parse(JSON.stringify(y,(O,M)=>M===void 0?null:M));return(0,x.isEmpty)(w)?null:n.default.createElement(k,{model:P,feature:w})});e.default=H;var A=gl();Object.defineProperty(e,"Attributes",{enumerable:!0,get:function(){return l(A).default}})})(cc);export{cc as B}; -//# sourceMappingURL=index-DrQDdWjW.js.map + */const kw=Object.freeze(Object.defineProperty({__proto__:null,DATA_GRID_PROPS_DEFAULT_VALUES:zr,DEFAULT_GRID_COL_TYPE_KEY:nn,DataGrid:Dh,GRID_ACTIONS_COLUMN_TYPE:Gr,GRID_ACTIONS_COL_DEF:Zs,GRID_BOOLEAN_COL_DEF:en,GRID_CHECKBOX_SELECTION_COL_DEF:Jt,GRID_CHECKBOX_SELECTION_FIELD:yt,GRID_COLUMN_MENU_SLOTS:ms,GRID_COLUMN_MENU_SLOT_PROPS:bs,GRID_DATETIME_COL_DEF:lu,GRID_DATE_COL_DEF:ou,GRID_DEFAULT_LOCALE_TEXT:sn,GRID_EXPERIMENTAL_ENABLED:Ss,GRID_NUMERIC_COL_DEF:au,GRID_ROOT_GROUP_ID:Ue,GRID_SINGLE_SELECT_COL_DEF:su,GRID_STRING_COL_DEF:it,GridActionsCell:ci,GridActionsCellItem:xp,GridAddIcon:el,GridApiContext:Ol,GridArrowDownwardIcon:Zo,GridArrowUpwardIcon:Qo,GridBody:za,GridBooleanCell:Xa,GridCell:Wd,GridCellCheckboxForwardRef:ji,GridCellCheckboxRenderer:Bi,GridCellEditStartReasons:wt,GridCellEditStopReasons:lt,GridCellModes:ye,GridCheckCircleIcon:Mf,GridCheckIcon:os,GridClearIcon:is,GridCloseIcon:lo,GridColumnHeaderFilterIconButton:zi,GridColumnHeaderItem:Pi,GridColumnHeaderMenu:Ci,GridColumnHeaderSeparator:Si,GridColumnHeaderSeparatorSides:_l,GridColumnHeaderSortIcon:hi,GridColumnHeaderTitle:wi,GridColumnHeaders:hu,GridColumnIcon:Ki,GridColumnMenu:Cs,GridColumnMenuColumnsItem:ps,GridColumnMenuContainer:us,GridColumnMenuFilterItem:fs,GridColumnMenuHideItem:cs,GridColumnMenuManageItem:ds,GridColumnMenuSortItem:gs,GridColumnsPanel:Os,GridContextProvider:Ys,GridCsvExportMenuItem:Ds,GridDeleteForeverIcon:ss,GridDeleteIcon:kf,GridDragIcon:tl,GridEditBooleanCell:ti,GridEditDateCell:oi,GridEditInputCell:li,GridEditModes:mt,GridEditSingleSelectCell:si,GridExpandMoreIcon:Yo,GridFilterAltIcon:Xo,GridFilterForm:Fs,GridFilterInputBoolean:ys,GridFilterInputDate:jt,GridFilterInputMultipleSingleSelect:Ms,GridFilterInputMultipleValue:Xl,GridFilterInputSingleSelect:rl,GridFilterInputValue:ut,GridFilterListIcon:qi,GridFilterPanel:Is,GridFooter:_s,GridFooterContainer:gi,GridFooterPlaceholder:ja,GridGenericColumnMenu:hs,GridHeader:Vs,GridHeaderCheckbox:Ui,GridKeyboardArrowRight:Jo,GridLoadIcon:ts,GridLoadingOverlay:Ns,GridLogicOperator:Ke,GridMenu:_r,GridMenuIcon:If,GridMoreVertIcon:ls,GridNoRowsOverlay:Gs,GridOverlay:Mo,GridOverlays:Qa,GridPagination:zs,GridPanel:xs,GridPanelContent:Kl,GridPanelFooter:Ql,GridPanelHeader:ws,GridPanelWrapper:Zl,GridPreferencePanelsValue:st,GridPreferencesPanel:vs,GridPrintExportMenuItem:$s,GridRemoveIcon:es,GridRoot:fi,GridRow:Js,GridRowCount:js,GridRowEditStartReasons:Ft,GridRowEditStopReasons:St,GridRowModes:ke,GridSaveAltIcon:rs,GridSearchIcon:Wi,GridSelectedRowCount:Hs,GridSeparatorIcon:Qi,GridSignature:gt,GridSkeletonCell:pi,GridTableRowsIcon:Ji,GridToolbar:_g,GridToolbarColumnsButton:ks,GridToolbarContainer:mi,GridToolbarDensitySelector:Es,GridToolbarExport:As,GridToolbarExportContainer:Ts,GridToolbarFilterButton:Ls,GridToolbarQuickFilter:Rs,GridTripleDotsVerticalIcon:Xi,GridViewColumnIcon:as,GridViewHeadlineIcon:Zi,GridViewStreamIcon:Yi,GridVisibilityOffIcon:ns,SUBMIT_FILTER_DATE_STROKE_TIME:Ah,SUBMIT_FILTER_STROKE_TIME:$h,arSD:mC,beBY:wC,bgBG:OC,checkGridRowIdIsValid:Ba,createUseGridApiEventHandler:xi,csCZ:xC,daDK:FC,deDE:IC,elGR:kC,enUS:EC,esES:TC,faIR:$C,fiFI:RC,frFR:_C,getDataGridUtilityClass:be,getDefaultGridFilterModel:ur,getGridBooleanOperators:Qs,getGridDateOperators:ln,getGridDefaultColumnTypes:uu,getGridNumericOperators:nu,getGridNumericQuickFilterFn:al,getGridSingleSelectOperators:iu,getGridStringOperators:Ks,getGridStringQuickFilterFn:nl,gridClasses:V,gridColumnDefinitionsSelector:ft,gridColumnFieldsSelector:Pt,gridColumnGroupingSelector:Lr,gridColumnGroupsHeaderMaxDepthSelector:fr,gridColumnGroupsHeaderStructureSelector:Ma,gridColumnGroupsLookupSelector:Fl,gridColumnGroupsUnwrappedModelSelector:Ia,gridColumnLookupSelector:Vt,gridColumnMenuSelector:io,gridColumnPositionsSelector:qt,gridColumnVisibilityModelSelector:at,gridColumnsTotalWidthSelector:Po,gridDataRowIdsSelector:or,gridDateComparator:Bl,gridDateFormatter:tu,gridDateTimeFormatter:ru,gridDensityFactorSelector:Qt,gridDensitySelector:Fo,gridDensityValueSelector:Tl,gridExpandedRowCountSelector:kl,gridExpandedSortedRowEntriesSelector:Mt,gridExpandedSortedRowIdsSelector:ar,gridFilterActiveItemsLookupSelector:Va,gridFilterActiveItemsSelector:El,gridFilterModelSelector:Re,gridFilterableColumnDefinitionsSelector:vl,gridFilterableColumnLookupSelector:ya,gridFilteredDescendantCountLookupSelector:Id,gridFilteredRowsLookupSelector:Il,gridFilteredSortedRowEntriesSelector:Ha,gridFilteredSortedRowIdsSelector:_a,gridFilteredSortedTopLevelRowEntriesSelector:Ml,gridFilteredTopLevelRowCountSelector:$r,gridFocusCellSelector:Ze,gridFocusColumnHeaderSelector:Na,gridFocusStateSelector:Ar,gridNumberComparator:jl,gridPageCountSelector:mf,gridPageSelector:Ei,gridPageSizeSelector:Li,gridPaginatedVisibleSortedGridRowEntriesSelector:Ti,gridPaginatedVisibleSortedGridRowIdsSelector:Gl,gridPaginationModelSelector:ot,gridPaginationRowRangeSelector:ko,gridPaginationSelector:Nl,gridPanelClasses:Ps,gridPreferencePanelStateSelector:At,gridQuickFilterValuesSelector:Aa,gridRowCountSelector:Tr,gridRowGroupingNameSelector:La,gridRowMaximumTreeDepthSelector:Dr,gridRowSelectionStateSelector:rt,gridRowTreeDepthsSelector:Uo,gridRowTreeSelector:nt,gridRowsDataRowIdToIdLookupSelector:Pr,gridRowsLoadingSelector:ka,gridRowsLookupSelector:Ot,gridRowsMetaSelector:dr,gridSortColumnLookupSelector:$a,gridSortModelSelector:tt,gridSortedRowEntriesSelector:vo,gridSortedRowIdsSelector:xo,gridStringOrNumberComparator:Ri,gridTabIndexCellSelector:vr,gridTabIndexColumnHeaderSelector:Ll,gridTabIndexStateSelector:Rr,gridTopLevelRowCountSelector:Ea,gridVirtualizationColumnEnabledSelector:Wl,gridVirtualizationEnabledSelector:Gi,gridVirtualizationSelector:ql,gridVisibleColumnDefinitionsSelector:He,gridVisibleColumnFieldsSelector:Er,gridVisibleRowsLookupSelector:Ra,heIL:NC,hrHR:vw,huHU:zC,isLeaf:$l,itIT:BC,jaJP:qC,koKR:KC,nbNO:ZC,nlNL:YC,plPL:ew,ptBR:rw,ptPT:yw,renderActionsCell:di,renderBooleanCell:ei,renderEditBooleanCell:ri,renderEditDateCell:Rl,renderEditInputCell:ni,renderEditSingleSelectCell:ui,roRO:lw,ruRU:aw,selectedGridRowsCountSelector:Di,selectedGridRowsSelector:$i,selectedIdsLookupSelector:yr,skSK:sw,svSE:cw,trTR:pw,ukUA:gw,unstable_gridFocusColumnGroupHeaderSelector:xr,unstable_gridFocusColumnHeaderFilterSelector:Md,unstable_gridHeaderFilteringEditFieldSelector:Hi,unstable_gridHeaderFilteringMenuSelector:_i,unstable_gridHeaderFilteringStateSelector:Ul,unstable_gridTabIndexColumnGroupHeaderSelector:Ga,unstable_gridTabIndexColumnHeaderFilterSelector:kd,unstable_resetCleanupTracking:nf,urPK:bw,useFirstRender:mr,useGridApiContext:ce,useGridApiEventHandler:re,useGridApiMethod:me,useGridApiOptionHandler:Ee,useGridApiRef:sd,useGridLogger:je,useGridNativeEventListener:yi,useGridRootProps:Y,useGridSelector:K,useGridVirtualization:Ni,viVN:Cw,virtualizationStateInitializer:Vi,zhCN:Sw,zhHK:Mw,zhTW:Pw},Symbol.toStringTag,{value:"Module"})),Ew=nc(kw);var cn={},Lw=X&&X.__createBinding||(Object.create?function(e,t,r,o){o===void 0&&(o=r);var l=Object.getOwnPropertyDescriptor(t,r);(!l||("get"in l?!t.__esModule:l.writable||l.configurable))&&(l={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,l)}:function(e,t,r,o){o===void 0&&(o=r),e[o]=t[r]}),Tw=X&&X.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Dw=X&&X.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&Lw(t,e,r);return Tw(t,e),t},$w=X&&X.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(cn,"__esModule",{value:!0});const Lt=Dw(a),Aw=bt,Rw=$w(ac),Ou=(0,Aw.makeStyles)()(e=>({resizeBar:{background:e.palette.action.disabledBackground,height:12,position:"relative",overflow:"hidden"},tick:{position:"absolute",height:"100%",pointerEvents:"none",background:e.palette.action.disabled,width:1},hiddenTick:{position:"absolute",height:"100%",width:5}}));function Hw({left:e,scrollLeft:t,idx:r,onDrag:o,onMouseDown:l}){const{classes:n}=Ou(),i=(0,Lt.useCallback)((s,u)=>o(s,u,r),[r,o]);return Lt.default.createElement(Lt.default.Fragment,null,Lt.default.createElement(Rw.default,{onDrag:i,onMouseDown:l,vertical:!0,className:n.hiddenTick,style:{left:e-t-2.5}}),Lt.default.createElement("div",{style:{left:e-t},className:n.tick}))}function _w({widths:e,setWidths:t,checkbox:r,scrollLeft:o=0}){const{classes:l}=Ou(),n=[],[i,s]=(0,Lt.useState)();let u=r?52:0;for(let d=0;dLt.default.createElement(Hw,{key:c,onMouseDown:()=>{s([...e])},left:c===n.length-1?d-3:d,onDrag:(p,f,b)=>{const g=[...e];g[b]=Math.max(i[b]-f,50),t(g)},idx:c,scrollLeft:o})))}cn.default=_w;var Eo={};Object.defineProperty(Eo,"__esModule",{value:!0});Eo.useResizeBar=void 0;const Go=a;function Vw(){const e=(0,Go.useRef)(null),[t,r]=(0,Go.useState)(0);return(0,Go.useEffect)(()=>{const o=setInterval(()=>{var l;const n=(l=e.current)===null||l===void 0?void 0:l.querySelector(".MuiDataGrid-virtualScroller");n&&r(n.scrollLeft)},100);return()=>{clearInterval(o)}},[]),{ref:e,scrollLeft:t}}Eo.useResizeBar=Vw;var Nw=X&&X.__createBinding||(Object.create?function(e,t,r,o){o===void 0&&(o=r);var l=Object.getOwnPropertyDescriptor(t,r);(!l||("get"in l?!t.__esModule:l.writable||l.configurable))&&(l={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,l)}:function(e,t,r,o){o===void 0&&(o=r),e[o]=t[r]}),Gw=X&&X.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),zw=X&&X.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&Nw(t,e,r);return Gw(t,e),t},Pu=X&&X.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Sl,"__esModule",{value:!0});const Xe=zw(a),jw=bt,aa=Ew,zo=Rt,ia=Ht,Bw=Pu(cn),Uw=Pu(pr),qw=Eo,Ww=Kt,Kw=(0,jw.makeStyles)()(e=>({margin:{margin:e.spacing(1),width:"100%"},cell:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}}));function Qw({value:e,prefix:t,name:r}){const{classes:o}=Kw(),{ref:l,scrollLeft:n}=(0,qw.useResizeBar)(),[i,s]=(0,Xe.useState)(!1),u=Object.keys(e[0]).sort(),d=new Set(u),c=Object.entries(e).map(([g,h])=>{const{id:P,...w}=h;return{id:g,identifier:P,...w}});for(const g of e)for(const h of Object.keys(g))d.add(h);let p;d.has("id")?(d.delete("id"),p=["identifier",...d]):p=[...d];const[f,b]=(0,Xe.useState)(p.map(g=>(0,ia.measureGridWidth)(c.map(h=>h[g]))));return d.sizes(g.target.checked)}),label:Xe.default.createElement(zo.Typography,{variant:"body2"},"Show options")}),Xe.default.createElement("div",{className:o.margin,ref:l},Xe.default.createElement(Bw.default,{widths:f,setWidths:b,scrollLeft:n}),Xe.default.createElement(aa.DataGrid,{disableRowSelectionOnClick:!0,rows:c,rowCount:25,rowHeight:25,columnHeaderHeight:35,hideFooter:c.length<25,slots:{toolbar:i?aa.GridToolbar:null},slotProps:{toolbar:{printOptions:{disableToolbarButton:!0}}},columns:p.map((g,h)=>({field:g,renderCell:P=>{const w=P.value;return Xe.default.createElement("div",{className:o.cell},Xe.default.createElement(Ww.SanitizedHTML,{html:(0,ia.getStr)(w)}))},width:f[h]}))}))):null}Sl.default=Qw;var to={},sa;function Zw(){if(sa)return to;sa=1;var e=X&&X.__importDefault||function(d){return d&&d.__esModule?d:{default:d}};Object.defineProperty(to,"__esModule",{value:!0});const t=e(a),r=e(bo),o=bt,l=e(fl()),n=e(pr),i=e(kr),s=(0,o.makeStyles)()(d=>({field:{display:"flex",flexWrap:"wrap"},fieldSubvalue:{wordBreak:"break-word",maxHeight:300,padding:d.spacing(.5),border:`1px solid ${d.palette.action.selected}`,boxSizing:"border-box",overflow:"auto"}}));function u({name:d,value:c,description:p,prefix:f=[]}){const{classes:b}=s();return c.length===1?(0,r.default)(c[0])?t.default.createElement(l.default,{attributes:c[0],prefix:[...f,d]}):t.default.createElement("div",{className:b.field},t.default.createElement(n.default,{prefix:f,description:p,name:d}),t.default.createElement(i.default,{value:c[0]})):c.every(g=>(0,r.default)(g))?t.default.createElement(t.default.Fragment,null,c.map((g,h)=>t.default.createElement(l.default,{key:JSON.stringify(g)+"-"+h,attributes:g,prefix:[...f,d+"-"+h]}))):t.default.createElement("div",{className:b.field},t.default.createElement(n.default,{prefix:f,description:p,name:d}),c.map((g,h)=>t.default.createElement("div",{key:JSON.stringify(g)+"-"+h,className:b.fieldSubvalue},t.default.createElement(i.default,{value:g}))))}return to.default=u,to}var dn={},pn=X&&X.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(dn,"__esModule",{value:!0});const jo=pn(a),Jw=pn(pr),Yw=bt,Xw=pn(kr),eS=(0,Yw.makeStyles)()({field:{display:"flex",flexWrap:"wrap"}});function tS({value:e,prefix:t,name:r}){const{classes:o}=eS(),{uri:l,baseUri:n=""}=e;let i;try{i=new URL(l,n).href}catch{i=l}return jo.default.createElement("div",{className:o.field},jo.default.createElement(Jw.default,{prefix:t,name:r}),jo.default.createElement(Xw.default,{value:i}))}dn.default=tS;var ua;function fl(){if(ua)return eo;ua=1;var e=X&&X.__importDefault||function(f){return f&&f.__esModule?f:{default:f}};Object.defineProperty(eo,"__esModule",{value:!0});const t=e(a),r=e(bo),o=ct,l=Ht,n=e(Sl),i=e(Zw()),s=e(dn),u=e(So),d=170,c=["__jbrowsefmt","length","position","subfeatures","uniqueId","exonFrames","parentId","thickStart","thickEnd"];function p(f){const{attributes:b,omit:g=[],omitSingleLevel:h=[],descriptions:P,formatter:w=H=>H,hideUris:C,prefix:E=[]}=f,T=new Set([...g,...c,...h]),{__jbrowsefmt:_,...F}=b,L={...F,..._},I=(0,o.generateMaxWidth)(Object.entries(L).filter(([H,$])=>$!==void 0&&!T.has(H)),E);return t.default.createElement(t.default.Fragment,null,Object.entries(L).filter(([H,$])=>$!==void 0&&!T.has(H)).map(([H,$])=>{const v=(0,o.accessNested)([...E,H],P);if(Array.isArray($))return $.length>1&&$.every(R=>(0,r.default)(R))?t.default.createElement(n.default,{key:H,name:H,prefix:E,value:$}):t.default.createElement(i.default,{key:H,name:H,value:$,description:v,prefix:E});if((0,r.default)($)){const{omitSingleLevel:R,...y}=f;return(0,l.isUriLocation)($)?C?null:t.default.createElement(s.default,{key:H,name:H,prefix:E,value:$}):t.default.createElement(p,{...y,key:H,attributes:$,descriptions:P,prefix:[...E,H]})}else return t.default.createElement(u.default,{key:H,name:H,value:w($,H),description:v,prefix:E,width:Math.min(I,d)})}))}return eo.default=p,eo}(function(e){var t=X&&X.__createBinding||(Object.create?function(v,R,y,S){S===void 0&&(S=y);var O=Object.getOwnPropertyDescriptor(R,y);(!O||("get"in O?!R.__esModule:O.writable||O.configurable))&&(O={enumerable:!0,get:function(){return R[y]}}),Object.defineProperty(v,S,O)}:function(v,R,y,S){S===void 0&&(S=y),v[S]=R[y]}),r=X&&X.__setModuleDefault||(Object.create?function(v,R){Object.defineProperty(v,"default",{enumerable:!0,value:R})}:function(v,R){v.default=R}),o=X&&X.__importStar||function(v){if(v&&v.__esModule)return v;var R={};if(v!=null)for(var y in v)y!=="default"&&Object.prototype.hasOwnProperty.call(v,y)&&t(R,v,y);return r(R,v),R},l=X&&X.__importDefault||function(v){return v&&v.__esModule?v:{default:v}};Object.defineProperty(e,"__esModule",{value:!0}),e.Attributes=e.FeatureDetails=e.BaseAttributes=e.BaseCoreDetails=e.BaseCard=void 0;const n=o(a),i=ic,s=Rt,u=bt,d=da,c=l(Co),p=Ht,f=Kt,b=l(hl),g=l(So),h=l(fl()),P=ct,w=["name","start","end","strand","refName","description","type"],C=(0,u.makeStyles)()(v=>{var R;return{expansionPanelDetails:{display:"block",padding:v.spacing(1)},expandIcon:{color:((R=v.palette.tertiary)===null||R===void 0?void 0:R.contrastText)||"#fff"}}});function E({children:v,title:R,defaultExpanded:y=!0}){const{classes:S}=C(),[O,M]=(0,n.useState)(y);return n.default.createElement(s.Accordion,{expanded:O,onChange:()=>M(A=>!A),TransitionProps:{unmountOnExit:!0,timeout:150}},n.default.createElement(s.AccordionSummary,{expandIcon:n.default.createElement(c.default,{className:S.expandIcon})},n.default.createElement(s.Typography,{variant:"button"}," ",R)),n.default.createElement(s.AccordionDetails,{className:S.expansionPanelDetails},v))}e.BaseCard=E;function T(v){const{feature:R}=v,y=R.strand,S={"-1":"-",0:"",1:"+"},O=S[y]?`(${S[y]})`:"",M=(0,p.assembleLocString)(R);return n.default.createElement(n.default.Fragment,null,`${M} ${O}`)}function _(v){const{feature:R}=v,y=R,S={...y,...y.__jbrowsefmt},{start:O,end:M}=S,A={...S,length:(0,p.toLocale)(M-O)},k={description:"Description",name:"Name",length:"Length",type:"Type"};return n.default.createElement(n.default.Fragment,null,n.default.createElement(g.default,{name:"Position",value:n.default.createElement(T,{...v,feature:S})}),Object.entries(k).map(([D,N])=>[N,A[D]]).filter(([,D])=>D!=null).map(([D,N])=>n.default.createElement(g.default,{key:D,name:D,value:N})))}const F=v=>{const{title:R="Primary data"}=v;return n.default.createElement(E,{...v,title:R},n.default.createElement(_,{...v}))};e.BaseCoreDetails=F;const L=v=>{const{feature:R}=v;return n.default.createElement(E,{...v,title:"Attributes"},n.default.createElement(h.default,{...v,attributes:R}))};e.BaseAttributes=L;function I(v){const{omit:R=[],model:y,feature:S,depth:O=0}=v,{maxDepth:M}=y,{mate:A,name:k="",id:D="",type:N="",subfeatures:j,uniqueId:z}=S,B=(0,p.getEnv)(y).pluginManager,Z=(0,p.getSession)(y),Q=B.evaluateExtensionPoint("Core-extraFeaturePanel",null,{session:Z,feature:S,model:y});return n.default.createElement(E,{title:(0,P.generateTitle)(k,D,N)},n.default.createElement(s.Typography,null,"Core details"),n.default.createElement(_,{...v}),A?n.default.createElement(n.default.Fragment,null,n.default.createElement(s.Divider,null),n.default.createElement(s.Typography,null,"Mate details"),n.default.createElement(_,{...v,feature:{...A,uniqueId:z+"-mate"}})):null,n.default.createElement(s.Divider,null),n.default.createElement(s.Typography,null,"Attributes"),n.default.createElement(h.default,{attributes:S,...v,omit:R,omitSingleLevel:w}),n.default.createElement(i.ErrorBoundary,{FallbackComponent:ee=>n.default.createElement(f.ErrorMessage,{error:ee.error})},n.default.createElement(b.default,{...v})),Q?n.default.createElement(n.default.Fragment,null,n.default.createElement(s.Divider,null),n.default.createElement(E,{title:Q.name},n.default.createElement(Q.Component,{...v}))):null,On.default.createElement(I,{key:JSON.stringify(ee),feature:{...ee,uniqueId:`${z}_${oe}`},model:y,depth:O+1}))):null)}e.FeatureDetails=I;const H=(0,d.observer)(function({model:v}){const{error:R,featureData:y}=v;if(R)return n.default.createElement(f.ErrorMessage,{error:R});if(!y)return null;const S=JSON.parse(JSON.stringify(y,(O,M)=>M===void 0?null:M));return(0,P.isEmpty)(S)?null:n.default.createElement(I,{model:v,feature:S})});e.default=H;var $=fl();Object.defineProperty(e,"Attributes",{enumerable:!0,get:function(){return l($).default}})})(uc);export{uc as B}; +//# sourceMappingURL=index-BAq0vo4N.js.map diff --git a/assets/index-BAq0vo4N.js.map b/assets/index-BAq0vo4N.js.map new file mode 100644 index 00000000..7f2d0e11 --- /dev/null +++ b/assets/index-BAq0vo4N.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index-BAq0vo4N.js","sources":["../../../node_modules/@mui/utils/chainPropTypes/chainPropTypes.js","../../../node_modules/@mui/icons-material/ExpandMore.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/SequenceFeatureDetails/SequenceHelpDialog.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/SequenceFeatureDetails/hooks.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureSettingsDialog.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/util.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/SequenceFeatureDetails/util.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/SequenceFeatureDetails/CDNASequence.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/SequenceFeatureDetails/ProteinSequence.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/SequenceFeatureDetails/GenomicSequence.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/SequenceFeatureDetails/CDSSequence.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/SequenceFeatureDetails/index.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/FieldName.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/SimpleField.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/util.js","../../../node_modules/@mui/x-data-grid/components/GridApiContext.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridApiContext.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridApiRef.js","../../../node_modules/@mui/x-data-grid/context/GridRootPropsContext.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridRootProps.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridPrivateApiContext.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useLazyRef.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useOnMount.js","../../../node_modules/@mui/x-data-grid/utils/warning.js","../../../node_modules/@mui/x-data-grid/utils/fastObjectShallowCompare.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridSelector.js","../../../node_modules/@mui/x-data-grid/constants/gridClasses.js","../../../node_modules/reselect/es/defaultMemoize.js","../../../node_modules/reselect/es/index.js","../../../node_modules/@mui/x-data-grid/utils/createSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/columns/gridColumnsSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/columnGrouping/gridColumnGroupsSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/rows/gridRowsSelector.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridAriaAttributes.js","../../../node_modules/@mui/x-data-grid/components/containers/GridMainContainer.js","../../../node_modules/@mui/x-data-grid/hooks/features/sorting/gridSortingSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/filter/gridFilterSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/focus/gridFocusStateSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/density/densitySelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/columnMenu/columnMenuSelector.js","../../../node_modules/@mui/x-data-grid/components/base/GridBody.js","../../../node_modules/@mui/x-data-grid/components/base/GridFooterPlaceholder.js","../../../node_modules/@mui/x-data-grid/hooks/features/rows/gridRowsUtils.js","../../../node_modules/@mui/x-data-grid/components/base/GridOverlays.js","../../../node_modules/@mui/x-data-grid/utils/fastMemo.js","../../../node_modules/@mui/x-data-grid/utils/doesSupportPreventScroll.js","../../../node_modules/@mui/x-data-grid/models/gridEditRowModel.js","../../../node_modules/@mui/x-data-grid/models/gridFilterItem.js","../../../node_modules/@mui/x-data-grid/models/params/gridEditCellParams.js","../../../node_modules/@mui/x-data-grid/models/params/gridRowParams.js","../../../node_modules/@mui/x-data-grid/models/gridColumnGrouping.js","../../../node_modules/@mui/x-data-grid/utils/domUtils.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridApiMethod.js","../../../node_modules/@mui/x-data-grid/hooks/features/rows/useGridParamsApi.js","../../../node_modules/@mui/x-data-grid/components/cell/GridCell.js","../../../node_modules/@mui/x-data-grid/components/cell/GridBooleanCell.js","../../../node_modules/@mui/x-data-grid/components/cell/GridEditBooleanCell.js","../../../node_modules/@mui/x-data-grid/components/cell/GridEditDateCell.js","../../../node_modules/@mui/x-data-grid/components/cell/GridEditInputCell.js","../../../node_modules/@mui/x-data-grid/utils/keyboardUtils.js","../../../node_modules/@mui/x-data-grid/components/panel/filterPanel/filterPanelUtils.js","../../../node_modules/@mui/x-data-grid/components/cell/GridEditSingleSelectCell.js","../../../node_modules/@mui/x-data-grid/components/menu/GridMenu.js","../../../node_modules/@mui/x-data-grid/components/cell/GridActionsCell.js","../../../node_modules/@mui/x-data-grid/components/cell/GridActionsCellItem.js","../../../node_modules/@mui/x-data-grid/components/cell/GridSkeletonCell.js","../../../node_modules/@mui/x-data-grid/components/containers/GridRootStyles.js","../../../node_modules/@mui/x-data-grid/components/containers/GridRoot.js","../../../node_modules/@mui/x-data-grid/components/containers/GridFooterContainer.js","../../../node_modules/@mui/x-data-grid/components/containers/GridOverlay.js","../../../node_modules/@mui/x-data-grid/components/containers/GridToolbarContainer.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridIconButtonContainer.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridColumnHeaderSortIcon.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/ColumnHeaderMenuIcon.js","../../../node_modules/@mui/x-data-grid/components/menu/columnMenu/GridColumnHeaderMenu.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridColumnHeaderTitle.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridColumnHeaderSeparator.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridGenericColumnHeaderItem.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridColumnHeaderItem.js","../../../node_modules/@mui/x-data-grid/hooks/features/filter/gridFilterState.js","../../../node_modules/@mui/x-data-grid/utils/cleanupTracking/TimerBasedCleanupTracking.js","../../../node_modules/@mui/x-data-grid/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridApiEventHandler.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridLogger.js","../../../node_modules/@mui/x-data-grid/utils/utils.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridNativeEventListener.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useFirstRender.js","../../../node_modules/@mui/x-data-grid/hooks/features/pagination/gridPaginationUtils.js","../../../node_modules/@mui/x-data-grid/hooks/features/pagination/gridPaginationSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/preferencesPanel/gridPreferencePanelSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/preferencesPanel/gridPreferencePanelsValue.js","../../../node_modules/@mui/x-data-grid/hooks/features/rows/gridRowsMetaSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/rowSelection/gridRowSelectionSelector.js","../../../node_modules/@mui/x-data-grid/hooks/features/sorting/gridSortingUtils.js","../../../node_modules/@mui/x-data-grid/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js","../../../node_modules/@mui/x-data-grid/hooks/features/virtualization/useGridVirtualization.js","../../../node_modules/@mui/x-data-grid/hooks/features/virtualization/gridVirtualizationSelectors.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridColumnHeaderFilterIconButton.js","../../../node_modules/@mui/x-data-grid/components/columnSelection/GridCellCheckboxRenderer.js","../../../node_modules/@mui/x-data-grid/components/columnSelection/GridHeaderCheckbox.js","../../../node_modules/@mui/x-data-grid/material/icons/index.js","../../../node_modules/@mui/x-data-grid/components/menu/columnMenu/GridColumnMenuContainer.js","../../../node_modules/@mui/x-data-grid/hooks/features/columnMenu/useGridColumnMenuSlots.js","../../../node_modules/@mui/x-data-grid/components/menu/columnMenu/menuItems/GridColumnMenuHideItem.js","../../../node_modules/@mui/x-data-grid/components/menu/columnMenu/menuItems/GridColumnMenuManageItem.js","../../../node_modules/@mui/x-data-grid/components/menu/columnMenu/menuItems/GridColumnMenuColumnsItem.js","../../../node_modules/@mui/x-data-grid/components/menu/columnMenu/menuItems/GridColumnMenuFilterItem.js","../../../node_modules/@mui/x-data-grid/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js","../../../node_modules/@mui/x-data-grid/components/menu/columnMenu/GridColumnMenu.js","../../../node_modules/@mui/x-data-grid/components/panel/GridPanelContent.js","../../../node_modules/@mui/x-data-grid/components/panel/GridPanelFooter.js","../../../node_modules/@mui/x-data-grid/components/panel/GridPanelHeader.js","../../../node_modules/@mui/x-data-grid/components/panel/GridPanelWrapper.js","../../../node_modules/@mui/x-data-grid/constants/envConstants.js","../../../node_modules/@mui/x-data-grid/components/panel/GridColumnsPanel.js","../../../node_modules/@mui/x-data-grid/components/panel/GridPanel.js","../../../node_modules/@mui/x-data-grid/components/panel/GridPreferencesPanel.js","../../../node_modules/@mui/x-data-grid/components/panel/filterPanel/GridFilterForm.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useTimeout.js","../../../node_modules/@mui/x-data-grid/components/panel/filterPanel/GridFilterInputValue.js","../../../node_modules/@mui/x-data-grid/components/panel/filterPanel/GridFilterInputDate.js","../../../node_modules/@mui/x-data-grid/components/panel/filterPanel/GridFilterInputSingleSelect.js","../../../node_modules/@mui/x-data-grid/components/panel/filterPanel/GridFilterInputBoolean.js","../../../node_modules/@mui/x-data-grid/components/panel/filterPanel/GridFilterPanel.js","../../../node_modules/@mui/x-data-grid/components/panel/filterPanel/GridFilterInputMultipleValue.js","../../../node_modules/@mui/x-data-grid/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js","../../../node_modules/@mui/x-data-grid/components/toolbar/GridToolbarColumnsButton.js","../../../node_modules/@mui/x-data-grid/components/toolbar/GridToolbarDensitySelector.js","../../../node_modules/@mui/x-data-grid/components/toolbar/GridToolbarFilterButton.js","../../../node_modules/@mui/x-data-grid/components/toolbar/GridToolbarExportContainer.js","../../../node_modules/@mui/x-data-grid/components/toolbar/GridToolbarExport.js","../../../node_modules/@mui/x-data-grid/components/toolbar/GridToolbarQuickFilter.js","../../../node_modules/@mui/x-data-grid/components/toolbar/GridToolbar.js","../../../node_modules/@mui/x-data-grid/components/GridSelectedRowCount.js","../../../node_modules/@mui/x-data-grid/components/GridFooter.js","../../../node_modules/@mui/x-data-grid/components/GridHeader.js","../../../node_modules/@mui/x-data-grid/components/GridLoadingOverlay.js","../../../node_modules/@mui/x-data-grid/components/GridNoRowsOverlay.js","../../../node_modules/@mui/x-data-grid/components/GridPagination.js","../../../node_modules/@mui/x-data-grid/components/GridRowCount.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridVisibleRows.js","../../../node_modules/@mui/x-data-grid/colDef/utils.js","../../../node_modules/@mui/x-data-grid/utils/getPublicApiRef.js","../../../node_modules/@mui/x-data-grid/hooks/features/filter/gridFilterUtils.js","../../../node_modules/@mui/x-data-grid/colDef/gridStringOperators.js","../../../node_modules/@mui/x-data-grid/colDef/gridStringColDef.js","../../../node_modules/@mui/x-data-grid/colDef/gridBooleanOperators.js","../../../node_modules/@mui/x-data-grid/colDef/gridBooleanColDef.js","../../../node_modules/@mui/x-data-grid/colDef/gridCheckboxSelectionColDef.js","../../../node_modules/@mui/x-data-grid/colDef/gridActionsColDef.js","../../../node_modules/@mui/x-data-grid/constants/gridDetailPanelToggleField.js","../../../node_modules/@mui/x-data-grid/hooks/features/editing/gridEditingSelectors.js","../../../node_modules/@mui/x-data-grid/components/GridRow.js","../../../node_modules/@mui/x-data-grid/context/GridContextProvider.js","../../../node_modules/@mui/x-data-grid/hooks/core/useGridLoggerFactory.js","../../../node_modules/@mui/x-data-grid/utils/Store.js","../../../node_modules/@mui/x-data-grid/utils/EventManager.js","../../../node_modules/@mui/x-data-grid/hooks/core/useGridApiInitialization.js","../../../node_modules/@mui/x-data-grid/hooks/core/useGridLocaleText.js","../../../node_modules/@mui/x-data-grid/hooks/core/pipeProcessing/useGridPipeProcessing.js","../../../node_modules/@mui/x-data-grid/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js","../../../node_modules/@mui/x-data-grid/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js","../../../node_modules/@mui/x-data-grid/hooks/core/strategyProcessing/useGridRegisterStrategyProcessor.js","../../../node_modules/@mui/x-data-grid/hooks/core/strategyProcessing/useGridStrategyProcessing.js","../../../node_modules/@mui/x-data-grid/hooks/core/useGridStateInitialization.js","../../../node_modules/@mui/x-data-grid/hooks/core/useGridInitialization.js","../../../node_modules/@mui/x-data-grid/hooks/utils/useGridInitializeState.js","../../../node_modules/@mui/x-data-grid/colDef/gridDateOperators.js","../../../node_modules/@mui/x-data-grid/colDef/gridDateColDef.js","../../../node_modules/@mui/x-data-grid/colDef/gridNumericOperators.js","../../../node_modules/@mui/x-data-grid/colDef/gridNumericColDef.js","../../../node_modules/@mui/x-data-grid/colDef/gridSingleSelectOperators.js","../../../node_modules/@mui/x-data-grid/colDef/gridSingleSelectColDef.js","../../../node_modules/@mui/x-data-grid/colDef/gridDefaultColumnTypes.js","../../../node_modules/@mui/x-data-grid/hooks/features/export/serializers/csvSerializer.js","../../../node_modules/@mui/x-data-grid/hooks/features/clipboard/useGridClipboard.js","../../../node_modules/@mui/x-data-grid/hooks/features/columnMenu/useGridColumnMenu.js","../../../node_modules/@mui/x-data-grid/hooks/features/columns/gridColumnsUtils.js","../../../node_modules/@mui/x-data-grid/hooks/features/columns/useGridColumns.js","../../../node_modules/@mui/x-data-grid/hooks/features/density/useGridDensity.js","../../../node_modules/@mui/x-data-grid/utils/exportAs.js","../../../node_modules/@mui/x-data-grid/hooks/features/export/utils.js","../../../node_modules/@mui/x-data-grid/hooks/features/export/useGridCsvExport.js","../../../node_modules/@mui/x-data-grid/hooks/features/pagination/useGridPagination.js","../../../node_modules/@mui/x-data-grid/hooks/features/export/useGridPrintExport.js","../../../node_modules/@mui/x-data-grid/hooks/features/filter/useGridFilter.js","../../../node_modules/@mui/x-data-grid/hooks/features/focus/useGridFocus.js","../../../node_modules/@mui/x-data-grid/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js","../../../node_modules/@mui/x-data-grid/hooks/features/preferencesPanel/useGridPreferencesPanel.js","../../../node_modules/@mui/x-data-grid/hooks/features/editing/useGridCellEditing.js","../../../node_modules/@mui/x-data-grid/hooks/features/editing/useGridRowEditing.js","../../../node_modules/@mui/x-data-grid/hooks/features/editing/useGridEditing.js","../../../node_modules/@mui/x-data-grid/hooks/features/rows/useGridRows.js","../../../node_modules/@mui/x-data-grid/hooks/features/rows/useGridRowsPreProcessors.js","../../../node_modules/@mui/x-data-grid/hooks/features/rowSelection/useGridRowSelection.js","../../../node_modules/@mui/x-data-grid/constants/localeTextConstants.js","../../../node_modules/@mui/x-data-grid/hooks/features/rowSelection/useGridRowSelectionPreProcessors.js","../../../node_modules/@mui/x-data-grid/hooks/features/sorting/useGridSorting.js","../../../node_modules/@mui/x-data-grid/hooks/features/scroll/useGridScroll.js","../../../node_modules/@mui/x-data-grid/hooks/features/events/useGridEvents.js","../../../node_modules/@mui/x-data-grid/hooks/features/dimensions/useGridDimensions.js","../../../node_modules/@mui/x-data-grid/hooks/features/virtualization/useGridVirtualScroller.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridColumnGroupHeader.js","../../../node_modules/@mui/x-data-grid/hooks/features/columnHeaders/useGridColumnHeaders.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridBaseColumnHeaders.js","../../../node_modules/@mui/x-data-grid/components/columnHeaders/GridColumnHeadersInner.js","../../../node_modules/@mui/x-data-grid/components/GridColumnHeaders.js","../../../node_modules/@mui/x-data-grid/components/GridNoResultsOverlay.js","../../../node_modules/@mui/x-data-grid/material/icons/GridColumnUnsortedIcon.js","../../../node_modules/@mui/x-data-grid/material/components/MUISelectOption.js","../../../node_modules/@mui/x-data-grid/material/index.js","../../../node_modules/@mui/x-data-grid/constants/defaultGridSlotsComponents.js","../../../node_modules/@mui/x-data-grid/internals/utils/slotsMigration.js","../../../node_modules/@mui/x-data-grid/internals/utils/computeSlots.js","../../../node_modules/@mui/x-data-grid/internals/utils/useProps.js","../../../node_modules/@mui/x-data-grid/DataGrid/useDataGridProps.js","../../../node_modules/@mui/x-data-grid/hooks/features/rows/useGridRowsMeta.js","../../../node_modules/@mui/x-data-grid/hooks/features/statePersistence/useGridStatePersistence.js","../../../node_modules/@mui/x-data-grid/hooks/features/columns/useGridColumnSpanning.js","../../../node_modules/@mui/x-data-grid/hooks/features/columnGrouping/gridColumnGroupsUtils.js","../../../node_modules/@mui/x-data-grid/hooks/features/columnGrouping/useGridColumnGrouping.js","../../../node_modules/@mui/x-data-grid/DataGrid/useDataGridComponent.js","../../../node_modules/@mui/x-data-grid/components/virtualization/GridVirtualScroller.js","../../../node_modules/@mui/x-data-grid/components/virtualization/GridVirtualScrollerContent.js","../../../node_modules/@mui/x-data-grid/components/virtualization/GridVirtualScrollerRenderZone.js","../../../node_modules/@mui/x-data-grid/components/DataGridVirtualScroller.js","../../../node_modules/@mui/x-data-grid/DataGrid/DataGrid.js","../../../node_modules/@mui/material/locale/index.js","../../../node_modules/@mui/x-data-grid/utils/getGridLocalization.js","../../../node_modules/@mui/x-data-grid/locales/arSD.js","../../../node_modules/@mui/x-data-grid/locales/coreLocales.js","../../../node_modules/@mui/x-data-grid/locales/beBY.js","../../../node_modules/@mui/x-data-grid/locales/bgBG.js","../../../node_modules/@mui/x-data-grid/locales/csCZ.js","../../../node_modules/@mui/x-data-grid/locales/daDK.js","../../../node_modules/@mui/x-data-grid/locales/deDE.js","../../../node_modules/@mui/x-data-grid/locales/elGR.js","../../../node_modules/@mui/x-data-grid/locales/enUS.js","../../../node_modules/@mui/x-data-grid/locales/esES.js","../../../node_modules/@mui/x-data-grid/locales/faIR.js","../../../node_modules/@mui/x-data-grid/locales/fiFI.js","../../../node_modules/@mui/x-data-grid/locales/frFR.js","../../../node_modules/@mui/x-data-grid/locales/heIL.js","../../../node_modules/@mui/x-data-grid/locales/huHU.js","../../../node_modules/@mui/x-data-grid/locales/itIT.js","../../../node_modules/@mui/x-data-grid/locales/jaJP.js","../../../node_modules/@mui/x-data-grid/locales/koKR.js","../../../node_modules/@mui/x-data-grid/locales/nbNO.js","../../../node_modules/@mui/x-data-grid/locales/nlNL.js","../../../node_modules/@mui/x-data-grid/locales/plPL.js","../../../node_modules/@mui/x-data-grid/locales/ptBR.js","../../../node_modules/@mui/x-data-grid/locales/roRO.js","../../../node_modules/@mui/x-data-grid/locales/ruRU.js","../../../node_modules/@mui/x-data-grid/locales/skSK.js","../../../node_modules/@mui/x-data-grid/locales/svSE.js","../../../node_modules/@mui/x-data-grid/locales/trTR.js","../../../node_modules/@mui/x-data-grid/locales/ukUA.js","../../../node_modules/@mui/x-data-grid/locales/urPK.js","../../../node_modules/@mui/x-data-grid/locales/viVN.js","../../../node_modules/@mui/x-data-grid/locales/zhCN.js","../../../node_modules/@mui/x-data-grid/locales/zhTW.js","../../../node_modules/@mui/x-data-grid/locales/hrHR.js","../../../node_modules/@mui/x-data-grid/locales/ptPT.js","../../../node_modules/@mui/x-data-grid/locales/zhHK.js","../../../node_modules/@mui/x-data-grid/index.js","../../../node_modules/@jbrowse/core/ui/ResizeBar.js","../../../node_modules/@jbrowse/core/ui/useResizeBar.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/UriField.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/Attributes.js","../../../node_modules/@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/index.js"],"sourcesContent":["export default function chainPropTypes(propType1, propType2) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return function validate(...args) {\n return propType1(...args) || propType2(...args);\n };\n}","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z\"\n}), 'ExpandMore');","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\nconst material_1 = require(\"@mui/material\");\nconst ui_1 = require(\"@jbrowse/core/ui\");\n// icons\nconst Settings_1 = __importDefault(require(\"@mui/icons-material/Settings\"));\nfunction HelpDialog({ handleClose, }) {\n return (react_1.default.createElement(ui_1.Dialog, { maxWidth: \"xl\", open: true, onClose: () => handleClose(), title: \"Feature sequence panel help\" },\n react_1.default.createElement(material_1.DialogContent, null,\n react_1.default.createElement(material_1.Typography, { paragraph: true }, \"The \\\"Feature sequence\\\" panel shows the underlying genomic sequence for a given feature, fetched from the reference genome.\"),\n react_1.default.createElement(material_1.Typography, null, \"For gene features, this panel does special calculations to e.g. stitch together the coding sequence, the options are:\"),\n react_1.default.createElement(\"ul\", null,\n react_1.default.createElement(\"li\", null, \"CDS - shows the stitched together CDS sequences\"),\n react_1.default.createElement(\"li\", null, \"Protein - the translated coding sequence, with the \\\"standard\\\" genetic code\"),\n react_1.default.createElement(\"li\", null, \"cDNA - shows the 'copy DNA' of transcript, formed from exon sequences\"),\n react_1.default.createElement(\"li\", null, \"Genomic w/ introns +/- Nbp up+down stream - the sequence underlying the entire gene including including introns, with UTR and CDS highlighted\")),\n react_1.default.createElement(material_1.Typography, { paragraph: true }, \"For other feature types, the options are:\"),\n react_1.default.createElement(\"ul\", null,\n react_1.default.createElement(\"li\", null, \"Genomic +/- Nbp up+down stream - the reference genome sequence underlying the feature, with the up and downstream sequence\")),\n react_1.default.createElement(material_1.Typography, null,\n \"Note 1: you can use the \\\"gear icon\\\" \",\n react_1.default.createElement(Settings_1.default, null),\n \" to edit the number of bp displayed up/downstream and in the intron region\"),\n react_1.default.createElement(material_1.Typography, null, \"Note 2: The 'Copy HTML' function retains the colors from the sequence panel but cannot be pasted into some programs like notepad that only expect plain text.\")),\n react_1.default.createElement(material_1.DialogActions, null,\n react_1.default.createElement(material_1.Button, { onClick: () => handleClose(), autoFocus: true, variant: \"contained\" }, \"Close\"))));\n}\nexports.default = HelpDialog;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useFeatureSequence = void 0;\nconst react_1 = require(\"react\");\nconst util_1 = require(\"../../util\");\nconst configuration_1 = require(\"../../configuration\");\nconst BPLIMIT = 500000;\nfunction useFeatureSequence(model, feature, upDownBp, forceLoad) {\n const [sequence, setSequence] = (0, react_1.useState)();\n const [error, setError] = (0, react_1.useState)();\n (0, react_1.useEffect)(() => {\n var _a;\n let finished = false;\n if (!model) {\n return () => { };\n }\n const { assemblyManager, rpcManager } = (0, util_1.getSession)(model);\n const [assemblyName] = ((_a = model.view) === null || _a === void 0 ? void 0 : _a.assemblyNames) || [];\n async function fetchSeq(start, end, refName) {\n const assembly = await assemblyManager.waitForAssembly(assemblyName);\n if (!assembly) {\n throw new Error('assembly not found');\n }\n const sessionId = 'getSequence';\n const feats = await rpcManager.call(sessionId, 'CoreGetFeatures', {\n adapterConfig: (0, configuration_1.getConf)(assembly, ['sequence', 'adapter']),\n sessionId,\n regions: [\n {\n start,\n end,\n refName: assembly.getCanonicalRefName(refName),\n assemblyName,\n },\n ],\n });\n const [feat] = feats;\n return (feat === null || feat === void 0 ? void 0 : feat.get('seq')) || '';\n }\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n ;\n (async () => {\n try {\n setError(undefined);\n const { start, end, refName } = feature;\n if (!forceLoad && end - start > BPLIMIT) {\n setSequence({\n error: `Genomic sequence larger than ${BPLIMIT}bp, use \"force load\" button to display`,\n });\n }\n else {\n const b = start - upDownBp;\n const e = end + upDownBp;\n const seq = await fetchSeq(start, end, refName);\n const up = await fetchSeq(Math.max(0, b), start, refName);\n const down = await fetchSeq(end, e, refName);\n if (!finished) {\n setSequence({ seq, upstream: up, downstream: down });\n }\n }\n }\n catch (e) {\n console.error(e);\n setError(e);\n }\n })();\n return () => {\n finished = true;\n };\n }, [feature, model, upDownBp, forceLoad]);\n return { sequence, error };\n}\nexports.useFeatureSequence = useFeatureSequence;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importStar(require(\"react\"));\nconst material_1 = require(\"@mui/material\");\nconst ui_1 = require(\"@jbrowse/core/ui\");\nconst mui_1 = require(\"tss-react/mui\");\nconst useStyles = (0, mui_1.makeStyles)()(theme => ({\n formElt: {\n margin: theme.spacing(3),\n width: 400,\n },\n dialogContent: {\n width: '80em',\n },\n}));\nfunction SequenceFeatureSettingsDialog({ handleClose, intronBp: intronBpArg, upDownBp: upDownBpArg, }) {\n const { classes } = useStyles();\n const [intronBp, setIntronBp] = (0, react_1.useState)(`${intronBpArg}`);\n const [upDownBp, setUpDownBp] = (0, react_1.useState)(`${upDownBpArg}`);\n const intronBpValid = !Number.isNaN(+intronBp);\n const upDownBpValid = !Number.isNaN(+upDownBp);\n return (react_1.default.createElement(ui_1.Dialog, { maxWidth: \"xl\", open: true, onClose: () => handleClose(), title: \"Feature sequence settings\" },\n react_1.default.createElement(material_1.DialogContent, { className: classes.dialogContent },\n react_1.default.createElement(material_1.TextField, { label: \"Number of intronic bases around splice site to display\", className: classes.formElt, value: intronBp, helperText: !intronBpValid ? 'Not a number' : '', error: !intronBpValid, onChange: event => setIntronBp(event.target.value) }),\n react_1.default.createElement(material_1.TextField, { label: \"Number of bases up/down stream of feature to display\", className: classes.formElt, value: upDownBp, helperText: !upDownBpValid ? 'Not a number' : '', error: !upDownBpValid, onChange: event => setUpDownBp(event.target.value) })),\n react_1.default.createElement(material_1.DialogActions, null,\n react_1.default.createElement(material_1.Button, { onClick: () => handleClose({\n upDownBp: +upDownBp,\n intronBp: +intronBp,\n }), disabled: !intronBpValid || !upDownBpValid, color: \"primary\", variant: \"contained\" }, \"Submit\"),\n react_1.default.createElement(material_1.Button, { onClick: () => handleClose(), color: \"secondary\", autoFocus: true, variant: \"contained\" }, \"Cancel\"))));\n}\nexports.default = SequenceFeatureSettingsDialog;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ellipses = exports.calculateUTRs2 = exports.calculateUTRs = exports.revlist = exports.dedupe = exports.stitch = void 0;\nfunction stitch(subfeats, sequence) {\n return subfeats.map(sub => sequence.slice(sub.start, sub.end)).join('');\n}\nexports.stitch = stitch;\n// filter items if they have the same \"ID\" or location\nfunction getItemId(feat) {\n return `${feat.start}-${feat.end}`;\n}\n// filters if successive elements share same start/end\nfunction dedupe(list) {\n return list.filter((item, pos, ary) => !pos || getItemId(item) !== getItemId(ary[pos - 1]));\n}\nexports.dedupe = dedupe;\nfunction revlist(list, seqlen) {\n return list\n .map(sub => ({\n ...sub,\n start: seqlen - sub.end,\n end: seqlen - sub.start,\n }))\n .sort((a, b) => a.start - b.start);\n}\nexports.revlist = revlist;\nfunction calculateUTRs(cds, exons) {\n // checking length ensures the .at below are valid\n if (!cds.length) {\n return [];\n }\n const firstCds = cds.at(0);\n const lastCds = cds.at(-1);\n const firstCdsIdx = exons.findIndex(exon => exon.end >= firstCds.start && exon.start <= firstCds.start);\n const lastCdsIdx = exons.findIndex(exon => exon.end >= lastCds.end && exon.start <= lastCds.end);\n const lastCdsExon = exons[lastCdsIdx];\n const firstCdsExon = exons[firstCdsIdx];\n const fiveUTRs = [\n ...exons.slice(0, firstCdsIdx),\n { start: firstCdsExon.start, end: firstCds.start },\n ].map(elt => ({ ...elt, type: 'five_prime_UTR' }));\n const threeUTRs = [\n { start: lastCds.end, end: lastCdsExon.end },\n ...exons.slice(lastCdsIdx + 1),\n ].map(elt => ({ ...elt, type: 'three_prime_UTR' }));\n return [...fiveUTRs, ...threeUTRs];\n}\nexports.calculateUTRs = calculateUTRs;\n// calculates UTRs using impliedUTRs logic, but there are no exon subfeatures\nfunction calculateUTRs2(cds, parentFeat) {\n if (!cds.length) {\n return [];\n }\n const firstCds = cds.at(0);\n const lastCds = cds.at(-1);\n const fiveUTRs = [{ start: parentFeat.start, end: firstCds.start }].map(elt => ({ ...elt, type: 'five_prime_UTR' }));\n const threeUTRs = [{ start: lastCds.end, end: parentFeat.end }].map(elt => ({\n ...elt,\n type: 'three_prime_UTR',\n }));\n return [...fiveUTRs, ...threeUTRs];\n}\nexports.calculateUTRs2 = calculateUTRs2;\nfunction ellipses(slug) {\n return slug.length > 20 ? `${slug.slice(0, 20)}...` : slug;\n}\nexports.ellipses = ellipses;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.genomeColor = exports.updownstreamColor = exports.cdsColor = exports.proteinColor = exports.utrColor = exports.intronColor = void 0;\n// note that these are currently put into the style section instead of being\n// defined in classes to aid copy and paste to an external document e.g. word\nexports.intronColor = undefined;\nexports.utrColor = 'rgb(200,240,240)';\nexports.proteinColor = 'rgb(220,160,220)';\nexports.cdsColor = 'rgb(220,220,180)';\nexports.updownstreamColor = 'rgba(250,200,200)';\nexports.genomeColor = 'rgb(200,280,200)';\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\nconst util_1 = require(\"./util\");\nfunction CDNASequence({ utr, cds, exons, sequence, upstream, downstream, includeIntrons, collapseIntron, intronBp, }) {\n const chunks = (cds.length ? [...cds, ...utr].sort((a, b) => a.start - b.start) : exons).filter(f => f.start !== f.end);\n return (react_1.default.createElement(react_1.default.Fragment, null,\n upstream ? (react_1.default.createElement(\"span\", { style: { background: util_1.updownstreamColor } }, upstream)) : null,\n chunks.map((chunk, idx) => {\n var _a;\n const intron = sequence.slice(chunk.end, (_a = chunks[idx + 1]) === null || _a === void 0 ? void 0 : _a.start);\n return (react_1.default.createElement(react_1.default.Fragment, { key: JSON.stringify(chunk) },\n react_1.default.createElement(\"span\", { style: {\n background: chunk.type === 'CDS' ? util_1.cdsColor : util_1.utrColor,\n } }, sequence.slice(chunk.start, chunk.end)),\n includeIntrons && idx < chunks.length - 1 ? (react_1.default.createElement(\"span\", { style: { background: util_1.intronColor } }, collapseIntron && intron.length > intronBp * 2\n ? `${intron.slice(0, intronBp)}...${intron.slice(-intronBp)}`\n : intron)) : null));\n }),\n downstream ? (react_1.default.createElement(\"span\", { style: { background: util_1.updownstreamColor } }, downstream)) : null));\n}\nexports.default = CDNASequence;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\nconst util_1 = require(\"../util\");\nconst util_2 = require(\"./util\");\nfunction ProteinSequence({ cds, sequence, codonTable, }) {\n const str = (0, util_1.stitch)(cds, sequence);\n let protein = '';\n for (let i = 0; i < str.length; i += 3) {\n // use & symbol for undefined codon, or partial slice\n protein += codonTable[str.slice(i, i + 3)] || '&';\n }\n return react_1.default.createElement(\"span\", { style: { background: util_2.proteinColor } }, protein);\n}\nexports.default = ProteinSequence;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\nconst util_1 = require(\"./util\");\nfunction GenomicSequence({ sequence, upstream, downstream, }) {\n return (react_1.default.createElement(react_1.default.Fragment, null,\n upstream ? (react_1.default.createElement(\"span\", { style: { background: util_1.updownstreamColor } }, upstream)) : null,\n react_1.default.createElement(\"span\", { style: { background: util_1.genomeColor } }, sequence),\n downstream ? (react_1.default.createElement(\"span\", { style: { background: util_1.updownstreamColor } }, downstream)) : null));\n}\nexports.default = GenomicSequence;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\nconst util_1 = require(\"./util\");\nconst util_2 = require(\"../util\");\nfunction CDSSequence({ cds, sequence, }) {\n return react_1.default.createElement(\"span\", { style: { background: util_1.cdsColor } }, (0, util_2.stitch)(cds, sequence));\n}\nexports.default = CDSSequence;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\nconst util_1 = require(\"../../util\");\nconst util_2 = require(\"../util\");\nconst CDNASequence_1 = __importDefault(require(\"./CDNASequence\"));\nconst ProteinSequence_1 = __importDefault(require(\"./ProteinSequence\"));\nconst GenomicSequence_1 = __importDefault(require(\"./GenomicSequence\"));\nconst CDSSequence_1 = __importDefault(require(\"./CDSSequence\"));\nconst SeqPanel = react_1.default.forwardRef(function SeqPanel2(props, ref) {\n const { feature, mode, intronBp = 10 } = props;\n let { sequence: { seq, upstream = '', downstream = '' }, } = props;\n const { subfeatures = [] } = feature;\n const children = subfeatures\n .sort((a, b) => a.start - b.start)\n .map(sub => ({\n ...sub,\n start: sub.start - feature.start,\n end: sub.end - feature.start,\n }));\n // we filter duplicate entries in cds and exon lists duplicate entries may be\n // rare but was seen in Gencode v36 track NCList, likely a bug on GFF3 or\n // probably worth ignoring here (produces broken protein translations if\n // included)\n //\n // position 1:224,800,006..225,203,064 gene ENSG00000185842.15 first\n // transcript ENST00000445597.6\n //\n // http://localhost:3000/?config=test_data%2Fconfig.json&session=share-FUl7G1isvF&password=HXh5Y\n let cds = (0, util_2.dedupe)(children.filter(sub => sub.type === 'CDS'));\n let utr = (0, util_2.dedupe)(children.filter(sub => sub.type.match(/utr/i)));\n let exons = (0, util_2.dedupe)(children.filter(sub => sub.type === 'exon'));\n if (!utr.length && cds.length && exons.length) {\n utr = (0, util_2.calculateUTRs)(cds, exons);\n }\n if (!utr.length && cds.length && !exons.length) {\n utr = (0, util_2.calculateUTRs2)(cds, {\n start: 0,\n end: feature.end - feature.start,\n type: 'gene',\n });\n }\n if (feature.strand === -1) {\n // doing this in a single assignment is needed because downstream and\n // upstream are swapped so this avoids a temp variable\n ;\n [seq, upstream, downstream] = [\n (0, util_1.revcom)(seq),\n (0, util_1.revcom)(downstream),\n (0, util_1.revcom)(upstream),\n ];\n cds = (0, util_2.revlist)(cds, seq.length);\n exons = (0, util_2.revlist)(exons, seq.length);\n utr = (0, util_2.revlist)(utr, seq.length);\n }\n const codonTable = (0, util_1.generateCodonTable)(util_1.defaultCodonTable);\n return (react_1.default.createElement(\"div\", { ref: ref, \"data-testid\": \"sequence_panel\" },\n react_1.default.createElement(\"div\", { style: {\n /* raw styles instead of className so that html copy works */\n fontFamily: 'monospace',\n wordWrap: 'break-word',\n overflow: 'auto',\n color: 'black',\n fontSize: 12,\n maxWidth: 600,\n maxHeight: 300,\n } },\n react_1.default.createElement(\"span\", { style: { background: 'white' } }, `>${feature.name ||\n feature.id ||\n `${feature.refName}:${feature.start + 1}-${feature.end}`}-${mode}\\n`),\n react_1.default.createElement(\"br\", null),\n mode === 'genomic' ? (react_1.default.createElement(GenomicSequence_1.default, { sequence: seq })) : mode === 'genomic_sequence_updownstream' ? (react_1.default.createElement(GenomicSequence_1.default, { sequence: seq, upstream: upstream, downstream: downstream })) : mode === 'cds' ? (react_1.default.createElement(CDSSequence_1.default, { cds: cds, sequence: seq })) : mode === 'cdna' ? (react_1.default.createElement(CDNASequence_1.default, { exons: exons, cds: cds, utr: utr, sequence: seq, intronBp: intronBp })) : mode === 'protein' ? (react_1.default.createElement(ProteinSequence_1.default, { cds: cds, codonTable: codonTable, sequence: seq })) : mode === 'gene' ? (react_1.default.createElement(CDNASequence_1.default, { exons: exons, cds: cds, utr: utr, sequence: seq, includeIntrons: true, intronBp: intronBp })) : mode === 'gene_collapsed_intron' ? (react_1.default.createElement(CDNASequence_1.default, { exons: exons, cds: cds, sequence: seq, utr: utr, includeIntrons: true, collapseIntron: true, intronBp: intronBp })) : mode === 'gene_updownstream' ? (react_1.default.createElement(CDNASequence_1.default, { exons: exons, cds: cds, sequence: seq, utr: utr, upstream: upstream, downstream: downstream, includeIntrons: true, intronBp: intronBp })) : mode === 'gene_updownstream_collapsed_intron' ? (react_1.default.createElement(CDNASequence_1.default, { exons: exons, cds: cds, sequence: seq, utr: utr, upstream: upstream, downstream: downstream, includeIntrons: true, collapseIntron: true, intronBp: intronBp })) : (react_1.default.createElement(\"div\", null, \"Unknown type\")))));\n});\nexports.default = SeqPanel;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importStar(require(\"react\"));\nconst material_1 = require(\"@mui/material\");\nconst mui_1 = require(\"tss-react/mui\");\nconst copy_to_clipboard_1 = __importDefault(require(\"copy-to-clipboard\"));\n// locals\nconst util_1 = require(\"../../util\");\nconst ui_1 = require(\"../../ui\");\n// icons\nconst Settings_1 = __importDefault(require(\"@mui/icons-material/Settings\"));\nconst hooks_1 = require(\"./hooks\");\n// lazies\nconst SettingsDialog = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./SequenceFeatureSettingsDialog'))));\nconst SequencePanel = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./SequencePanel'))));\nconst useStyles = (0, mui_1.makeStyles)()(theme => ({\n button: {\n margin: theme.spacing(1),\n },\n formControl: {\n margin: 0,\n },\n container2: {\n marginTop: theme.spacing(1),\n },\n}));\n// set the key on this component to feature.id to clear state after new feature\n// is selected\nfunction SequenceFeatureDetails({ model, feature: prefeature, }) {\n var _a, _b;\n const { classes } = useStyles();\n const feature = prefeature;\n const seqPanelRef = (0, react_1.useRef)(null);\n const [intronBp, setIntronBp] = (0, util_1.useLocalStorage)('intronBp', 10);\n const [upDownBp, setUpDownBp] = (0, util_1.useLocalStorage)('upDownBp', 500);\n const [copied, setCopied] = (0, react_1.useState)(false);\n const [copiedHtml, setCopiedHtml] = (0, react_1.useState)(false);\n const [force, setForce] = (0, react_1.useState)(false);\n const hasCDS = (_a = feature.subfeatures) === null || _a === void 0 ? void 0 : _a.some(sub => sub.type === 'CDS');\n const hasExon = (_b = feature.subfeatures) === null || _b === void 0 ? void 0 : _b.some(sub => sub.type === 'exon');\n const hasExonOrCDS = hasExon || hasCDS;\n const { sequence, error } = (0, hooks_1.useFeatureSequence)(model, prefeature, upDownBp, force);\n const [mode, setMode] = (0, react_1.useState)(hasCDS ? 'cds' : hasExon ? 'cdna' : 'genomic');\n const rest = {\n ...(hasCDS ? { cds: 'CDS' } : {}),\n ...(hasCDS ? { protein: 'Protein' } : {}),\n ...(hasExonOrCDS ? { cdna: 'cDNA' } : {}),\n ...(hasExonOrCDS ? { gene: `Genomic w/ full introns` } : {}),\n ...(hasExonOrCDS\n ? {\n gene_updownstream: `Genomic w/ full introns +/- ${upDownBp}bp up+down stream`,\n }\n : {}),\n ...(hasExonOrCDS\n ? { gene_collapsed_intron: `Genomic w/ ${intronBp}bp intron` }\n : {}),\n ...(hasExonOrCDS\n ? {\n gene_updownstream_collapsed_intron: `Genomic w/ ${intronBp}bp intron +/- ${upDownBp}bp up+down stream `,\n }\n : {}),\n ...(!hasExonOrCDS ? { genomic: 'Genomic' } : {}),\n ...(!hasExonOrCDS\n ? {\n genomic_sequence_updownstream: `Genomic +/- ${upDownBp}bp up+down stream`,\n }\n : {}),\n };\n return (react_1.default.createElement(\"div\", { className: classes.container2 },\n react_1.default.createElement(material_1.FormControl, { className: classes.formControl },\n react_1.default.createElement(material_1.Select, { value: mode, onChange: event => setMode(event.target.value) }, Object.entries(rest).map(([key, val]) => (react_1.default.createElement(material_1.MenuItem, { key: key, value: key }, val))))),\n react_1.default.createElement(material_1.FormControl, { className: classes.formControl },\n react_1.default.createElement(material_1.Button, { className: classes.button, variant: \"contained\", onClick: () => {\n const ref = seqPanelRef.current;\n if (ref) {\n (0, copy_to_clipboard_1.default)(ref.textContent || '', { format: 'text/plain' });\n setCopied(true);\n setTimeout(() => setCopied(false), 1000);\n }\n } }, copied ? 'Copied to clipboard!' : 'Copy plaintext')),\n react_1.default.createElement(material_1.FormControl, { className: classes.formControl },\n react_1.default.createElement(material_1.Tooltip, { title: \"The 'Copy HTML' function retains the colors from the sequence panel but cannot be pasted into some programs like notepad that only expect plain text\" },\n react_1.default.createElement(material_1.Button, { className: classes.button, variant: \"contained\", onClick: () => {\n const ref = seqPanelRef.current;\n if (!ref) {\n return;\n }\n (0, copy_to_clipboard_1.default)(ref.innerHTML, { format: 'text/html' });\n setCopiedHtml(true);\n setTimeout(() => setCopiedHtml(false), 1000);\n } }, copiedHtml ? 'Copied to clipboard!' : 'Copy HTML'))),\n react_1.default.createElement(Settings, { upDownBp: upDownBp, intronBp: intronBp, setIntronBp: setIntronBp, setUpDownBp: setUpDownBp }),\n react_1.default.createElement(\"br\", null),\n feature.type === 'gene' ? (react_1.default.createElement(material_1.Typography, null, \"Note: inspect subfeature sequences for protein/CDS computations\")) : null,\n error ? (react_1.default.createElement(material_1.Typography, { color: \"error\" }, `${error}`)) : !sequence ? (react_1.default.createElement(ui_1.LoadingEllipses, null)) : sequence ? ('error' in sequence ? (react_1.default.createElement(react_1.default.Fragment, null,\n react_1.default.createElement(material_1.Typography, { color: \"error\" }, sequence.error),\n react_1.default.createElement(material_1.Button, { variant: \"contained\", color: \"inherit\", onClick: () => setForce(true) }, \"Force load\"))) : (react_1.default.createElement(react_1.Suspense, { fallback: react_1.default.createElement(ui_1.LoadingEllipses, null) },\n react_1.default.createElement(SequencePanel, { ref: seqPanelRef, feature: feature, mode: mode, sequence: sequence, intronBp: intronBp })))) : (react_1.default.createElement(material_1.Typography, null, \"No sequence found\"))));\n}\nexports.default = SequenceFeatureDetails;\nfunction Settings({ intronBp, upDownBp, setIntronBp, setUpDownBp, }) {\n const { classes } = useStyles();\n const [settingsDialogOpen, setSettingsDialogOpen] = (0, react_1.useState)(false);\n return (react_1.default.createElement(react_1.default.Fragment, null,\n react_1.default.createElement(material_1.FormControl, { className: classes.formControl },\n react_1.default.createElement(material_1.IconButton, { onClick: () => setSettingsDialogOpen(true) },\n react_1.default.createElement(Settings_1.default, null))),\n settingsDialogOpen ? (react_1.default.createElement(react_1.Suspense, { fallback: null },\n react_1.default.createElement(SettingsDialog, { handleClose: arg => {\n if (arg) {\n const { upDownBp, intronBp } = arg;\n setIntronBp(intronBp);\n setUpDownBp(upDownBp);\n }\n setSettingsDialogOpen(false);\n }, upDownBp: upDownBp, intronBp: intronBp }))) : null));\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importStar(require(\"react\"));\nconst material_1 = require(\"@mui/material\");\nconst mui_1 = require(\"tss-react/mui\");\nconst mobx_react_1 = require(\"mobx-react\");\nconst ui_1 = require(\"../../ui\");\nconst util_1 = require(\"../../util\");\n// icons\nconst Help_1 = __importDefault(require(\"@mui/icons-material/Help\"));\n// lazies\nconst HelpDialog = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./SequenceHelpDialog'))));\nconst SequenceFeatureDetails = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./SequenceFeatureDetails'))));\nconst useStyles = (0, mui_1.makeStyles)()(theme => ({\n formControl: {\n margin: 0,\n },\n container: {\n marginTop: theme.spacing(4),\n marginBottom: theme.spacing(4),\n },\n}));\nconst SequenceFeatureDetailsHelpButton = (0, mobx_react_1.observer)(function ({ model, }) {\n const { classes } = useStyles();\n const session = (0, util_1.getSession)(model);\n return (react_1.default.createElement(material_1.FormControl, { className: classes.formControl },\n react_1.default.createElement(material_1.IconButton, { onClick: () => session.queueDialog(handleClose => [HelpDialog, { handleClose }]) },\n react_1.default.createElement(Help_1.default, null))));\n});\n// display the stitched-together sequence of a gene's CDS, cDNA, or protein\n// sequence. this is a best effort and weird genomic phenomena could lead these\n// to not be 100% accurate\nfunction SequenceFeaturePanel({ model, feature }) {\n const { classes } = useStyles();\n const [shown, setShown] = (0, react_1.useState)(false);\n return !model ? null : (react_1.default.createElement(\"div\", { className: classes.container },\n react_1.default.createElement(material_1.Button, { variant: \"contained\", onClick: () => setShown(!shown) }, shown ? 'Hide feature sequence' : 'Show feature sequence'),\n react_1.default.createElement(SequenceFeatureDetailsHelpButton, { model: model }),\n shown ? (react_1.default.createElement(react_1.Suspense, { fallback: react_1.default.createElement(ui_1.LoadingEllipses, null) },\n react_1.default.createElement(SequenceFeatureDetails\n /* eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion */\n , { \n /* eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion */\n key: feature.uniqueId, model: model, feature: feature }))) : null));\n}\nexports.default = SequenceFeaturePanel;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\nconst material_1 = require(\"@mui/material\");\nconst mui_1 = require(\"tss-react/mui\");\nconst useStyles = (0, mui_1.makeStyles)()(theme => ({\n fieldDescription: {\n '&:hover': {\n background: theme.palette.mode === 'dark' ? '#e65100' : 'yellow',\n },\n },\n fieldName: {\n wordBreak: 'break-all',\n minWidth: 90,\n borderBottom: '1px solid #0003',\n fontSize: 12,\n background: theme.palette.action.disabledBackground,\n marginRight: theme.spacing(1),\n padding: theme.spacing(0.5),\n },\n}));\nfunction FieldName({ description, name, width, prefix = [], }) {\n const { classes, cx } = useStyles();\n const val = [...prefix, name].join('.');\n return description ? (react_1.default.createElement(material_1.Tooltip, { title: description, placement: \"left\" },\n react_1.default.createElement(\"div\", { className: cx(classes.fieldDescription, classes.fieldName) }, val))) : (react_1.default.createElement(\"div\", { className: classes.fieldName, style: { width: width } }, val));\n}\nexports.default = FieldName;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\nconst mui_1 = require(\"tss-react/mui\");\nconst is_object_1 = __importDefault(require(\"is-object\"));\nconst material_1 = require(\"@mui/material\");\n// locals\nconst ui_1 = require(\"../../ui\");\nconst useStyles = (0, mui_1.makeStyles)()(theme => ({\n fieldValue: {\n wordBreak: 'break-word',\n maxHeight: 300,\n fontSize: 12,\n padding: theme.spacing(0.5),\n overflow: 'auto',\n },\n}));\nfunction BasicValue({ value }) {\n const { classes } = useStyles();\n const isLink = `${value}`.match(/^https?:\\/\\//);\n return (react_1.default.createElement(\"div\", { className: classes.fieldValue }, react_1.default.isValidElement(value) ? (value) : isLink ? (react_1.default.createElement(material_1.Link, { href: `${value}` }, `${value}`)) : (react_1.default.createElement(ui_1.SanitizedHTML, { html: (0, is_object_1.default)(value) ? JSON.stringify(value) : String(value) }))));\n}\nexports.default = BasicValue;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\nconst mui_1 = require(\"tss-react/mui\");\nconst FieldName_1 = __importDefault(require(\"./FieldName\"));\nconst BasicValue_1 = __importDefault(require(\"./BasicValue\"));\nconst useStyles = (0, mui_1.makeStyles)()({\n field: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n});\nfunction SimpleField({ name, value, description, prefix, width, }) {\n const { classes } = useStyles();\n return value !== null && value !== undefined ? (react_1.default.createElement(\"div\", { className: classes.field },\n react_1.default.createElement(FieldName_1.default, { prefix: prefix, description: description, name: name, width: width }),\n react_1.default.createElement(BasicValue_1.default, { value: value }))) : null;\n}\nexports.default = SimpleField;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.accessNested = exports.generateMaxWidth = exports.generateTitle = exports.isEmpty = void 0;\nconst is_object_1 = __importDefault(require(\"is-object\"));\nconst util_1 = require(\"../../util\");\nconst util_2 = require(\"../util\");\nfunction isEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\nexports.isEmpty = isEmpty;\nfunction generateTitle(name, id, type) {\n return [(0, util_2.ellipses)(`${name}` || `${id}`), `${type}`]\n .filter(f => !!f)\n .join(' - ');\n}\nexports.generateTitle = generateTitle;\nfunction generateMaxWidth(array, prefix) {\n return (Math.ceil((0, util_1.max)(array.map(key => (0, util_1.measureText)([...prefix, key[0]].join('.'), 12)))) + 10);\n}\nexports.generateMaxWidth = generateMaxWidth;\n// pick using a path from an object, similar to _.get from lodash with special\n// logic for Descriptions from e.g. VCF headers\n//\n// @param arr example ['a','b'], obj = {a:{b:'hello}}\n// @returns hello (with special addition to grab description also)\nfunction accessNested(arr, obj = {}) {\n let obj2 = obj;\n arr.forEach(elt => {\n if ((0, is_object_1.default)(obj2)) {\n obj2 = obj2[elt];\n }\n });\n return typeof obj2 === 'string'\n ? obj2\n : (0, is_object_1.default)(obj2) && typeof (obj2 === null || obj2 === void 0 ? void 0 : obj2.Description) === 'string'\n ? obj2.Description\n : undefined;\n}\nexports.accessNested = accessNested;\n","import * as React from 'react';\nexport const GridApiContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n GridApiContext.displayName = 'GridApiContext';\n}","import * as React from 'react';\nimport { GridApiContext } from '../../components/GridApiContext';\nexport function useGridApiContext() {\n const apiRef = React.useContext(GridApiContext);\n if (apiRef === undefined) {\n throw new Error(['MUI: Could not find the data grid context.', 'It looks like you rendered your component outside of a DataGrid, DataGridPro or DataGridPremium parent component.', 'This can also happen if you are bundling multiple versions of the data grid.'].join('\\n'));\n }\n return apiRef;\n}","import * as React from 'react';\n/**\n * Hook that instantiate a [[GridApiRef]].\n */\nexport const useGridApiRef = () => React.useRef({});","import * as React from 'react';\nconst GridRootPropsContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n GridRootPropsContext.displayName = 'GridRootPropsContext';\n}\nexport { GridRootPropsContext };","import * as React from 'react';\nimport { GridRootPropsContext } from '../../context/GridRootPropsContext';\nexport const useGridRootProps = () => {\n const contextValue = React.useContext(GridRootPropsContext);\n if (!contextValue) {\n throw new Error('MUI: useGridRootProps should only be used inside the DataGrid, DataGridPro or DataGridPremium component.');\n }\n return contextValue;\n};","import * as React from 'react';\nexport const GridPrivateApiContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n GridPrivateApiContext.displayName = 'GridPrivateApiContext';\n}\nexport function useGridPrivateApiContext() {\n const privateApiRef = React.useContext(GridPrivateApiContext);\n if (privateApiRef === undefined) {\n throw new Error(['MUI: Could not find the data grid private context.', 'It looks like you rendered your component outside of a DataGrid, DataGridPro or DataGridPremium parent component.', 'This can also happen if you are bundling multiple versions of the data grid.'].join('\\n'));\n }\n return privateApiRef;\n}","import * as React from 'react';\nconst UNINITIALIZED = {};\n\n// See https://github.com/facebook/react/issues/14490 for when to use this.\nexport function useLazyRef(init, initArg) {\n const ref = React.useRef(UNINITIALIZED);\n if (ref.current === UNINITIALIZED) {\n ref.current = init(initArg);\n }\n return ref;\n}","import * as React from 'react';\nconst EMPTY = [];\nexport function useOnMount(fn) {\n /* eslint-disable react-hooks/exhaustive-deps */\n React.useEffect(fn, EMPTY);\n /* eslint-enable react-hooks/exhaustive-deps */\n}","export const buildWarning = (message, gravity = 'warning') => {\n let alreadyWarned = false;\n const cleanMessage = Array.isArray(message) ? message.join('\\n') : message;\n return () => {\n if (!alreadyWarned) {\n alreadyWarned = true;\n if (gravity === 'error') {\n console.error(cleanMessage);\n } else {\n console.warn(cleanMessage);\n }\n }\n };\n};\nexport const wrapWithWarningOnCall = (method, message) => {\n if (process.env.NODE_ENV === 'production') {\n return method;\n }\n const warning = buildWarning(message);\n return (...args) => {\n warning();\n return method(...args);\n };\n};","const is = Object.is;\nexport function fastObjectShallowCompare(a, b) {\n if (a === b) {\n return true;\n }\n if (!(a instanceof Object) || !(b instanceof Object)) {\n return false;\n }\n let aLength = 0;\n let bLength = 0;\n\n /* eslint-disable no-restricted-syntax */\n /* eslint-disable guard-for-in */\n for (const key in a) {\n aLength += 1;\n if (!is(a[key], b[key])) {\n return false;\n }\n if (!(key in b)) {\n return false;\n }\n }\n\n /* eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-unused-vars */\n for (const _ in b) {\n bLength += 1;\n }\n /* eslint-enable no-restricted-syntax */\n /* eslint-enable guard-for-in */\n\n return aLength === bLength;\n}","import * as React from 'react';\nimport { useLazyRef } from './useLazyRef';\nimport { useOnMount } from './useOnMount';\nimport { buildWarning } from '../../utils/warning';\nimport { fastObjectShallowCompare } from '../../utils/fastObjectShallowCompare';\nconst stateNotInitializedWarning = buildWarning(['MUI: `useGridSelector` has been called before the initialization of the state.', 'This hook can only be used inside the context of the grid.']);\nfunction isOutputSelector(selector) {\n return selector.acceptsApiRef;\n}\nfunction applySelector(apiRef, selector) {\n if (isOutputSelector(selector)) {\n return selector(apiRef);\n }\n return selector(apiRef.current.state);\n}\nconst defaultCompare = Object.is;\nexport const objectShallowCompare = fastObjectShallowCompare;\nconst createRefs = () => ({\n state: null,\n equals: null,\n selector: null\n});\nexport const useGridSelector = (apiRef, selector, equals = defaultCompare) => {\n if (process.env.NODE_ENV !== 'production') {\n if (!apiRef.current.state) {\n stateNotInitializedWarning();\n }\n }\n const refs = useLazyRef(createRefs);\n const didInit = refs.current.selector !== null;\n const [state, setState] = React.useState(\n // We don't use an initialization function to avoid allocations\n didInit ? null : applySelector(apiRef, selector));\n refs.current.state = state;\n refs.current.equals = equals;\n refs.current.selector = selector;\n useOnMount(() => {\n return apiRef.current.store.subscribe(() => {\n const newState = applySelector(apiRef, refs.current.selector);\n if (!refs.current.equals(refs.current.state, newState)) {\n refs.current.state = newState;\n setState(newState);\n }\n });\n });\n return state;\n};","import { unstable_generateUtilityClasses as generateUtilityClasses, unstable_generateUtilityClass as generateUtilityClass } from '@mui/utils';\nexport function getDataGridUtilityClass(slot) {\n return generateUtilityClass('MuiDataGrid', slot);\n}\nexport const gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'autosizing', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--selectionMode', 'cell', 'cellContent', 'cellCheckbox', 'cellSkeleton', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnGroupHeader', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeader--showColumnBorder', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'row', 'row--editable', 'row--editing', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumns--left', 'pinnedColumns--right', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withBorderColor', 'cell--withRightBorder', 'columnHeader--withRightBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);","// Cache implementation based on Erik Rasmussen's `lru-memoize`:\n// https://github.com/erikras/lru-memoize\nvar NOT_FOUND = 'NOT_FOUND';\n\nfunction createSingletonCache(equals) {\n var entry;\n return {\n get: function get(key) {\n if (entry && equals(entry.key, key)) {\n return entry.value;\n }\n\n return NOT_FOUND;\n },\n put: function put(key, value) {\n entry = {\n key: key,\n value: value\n };\n },\n getEntries: function getEntries() {\n return entry ? [entry] : [];\n },\n clear: function clear() {\n entry = undefined;\n }\n };\n}\n\nfunction createLruCache(maxSize, equals) {\n var entries = [];\n\n function get(key) {\n var cacheIndex = entries.findIndex(function (entry) {\n return equals(key, entry.key);\n }); // We found a cached entry\n\n if (cacheIndex > -1) {\n var entry = entries[cacheIndex]; // Cached entry not at top of cache, move it to the top\n\n if (cacheIndex > 0) {\n entries.splice(cacheIndex, 1);\n entries.unshift(entry);\n }\n\n return entry.value;\n } // No entry found in cache, return sentinel\n\n\n return NOT_FOUND;\n }\n\n function put(key, value) {\n if (get(key) === NOT_FOUND) {\n // TODO Is unshift slow?\n entries.unshift({\n key: key,\n value: value\n });\n\n if (entries.length > maxSize) {\n entries.pop();\n }\n }\n }\n\n function getEntries() {\n return entries;\n }\n\n function clear() {\n entries = [];\n }\n\n return {\n get: get,\n put: put,\n getEntries: getEntries,\n clear: clear\n };\n}\n\nexport var defaultEqualityCheck = function defaultEqualityCheck(a, b) {\n return a === b;\n};\nexport function createCacheKeyComparator(equalityCheck) {\n return function areArgumentsShallowlyEqual(prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n } // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n\n\n var length = prev.length;\n\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n };\n}\n// defaultMemoize now supports a configurable cache size with LRU behavior,\n// and optional comparison of the result value with existing values\nexport function defaultMemoize(func, equalityCheckOrOptions) {\n var providedOptions = typeof equalityCheckOrOptions === 'object' ? equalityCheckOrOptions : {\n equalityCheck: equalityCheckOrOptions\n };\n var _providedOptions$equa = providedOptions.equalityCheck,\n equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa,\n _providedOptions$maxS = providedOptions.maxSize,\n maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS,\n resultEqualityCheck = providedOptions.resultEqualityCheck;\n var comparator = createCacheKeyComparator(equalityCheck);\n var cache = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator); // we reference arguments instead of spreading them for performance reasons\n\n function memoized() {\n var value = cache.get(arguments);\n\n if (value === NOT_FOUND) {\n // @ts-ignore\n value = func.apply(null, arguments);\n\n if (resultEqualityCheck) {\n var entries = cache.getEntries();\n var matchingEntry = entries.find(function (entry) {\n return resultEqualityCheck(entry.value, value);\n });\n\n if (matchingEntry) {\n value = matchingEntry.value;\n }\n }\n\n cache.put(arguments, value);\n }\n\n return value;\n }\n\n memoized.clearCache = function () {\n return cache.clear();\n };\n\n return memoized;\n}","import { defaultMemoize, defaultEqualityCheck } from './defaultMemoize';\nexport { defaultMemoize, defaultEqualityCheck };\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep === 'function' ? \"function \" + (dep.name || 'unnamed') + \"()\" : typeof dep;\n }).join(', ');\n throw new Error(\"createSelector expects all input-selectors to be functions, but received the following types: [\" + dependencyTypes + \"]\");\n }\n\n return dependencies;\n}\n\nexport function createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptionsFromArgs[_key - 1] = arguments[_key];\n }\n\n var createSelector = function createSelector() {\n for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var _recomputations = 0;\n\n var _lastResult; // Due to the intricacies of rest params, we can't do an optional arg after `...funcs`.\n // So, start by declaring the default value here.\n // (And yes, the words 'memoize' and 'options' appear too many times in this next sequence.)\n\n\n var directlyPassedOptions = {\n memoizeOptions: undefined\n }; // Normally, the result func or \"output selector\" is the last arg\n\n var resultFunc = funcs.pop(); // If the result func is actually an _object_, assume it's our options object\n\n if (typeof resultFunc === 'object') {\n directlyPassedOptions = resultFunc; // and pop the real result func off\n\n resultFunc = funcs.pop();\n }\n\n if (typeof resultFunc !== 'function') {\n throw new Error(\"createSelector expects an output function after the inputs, but received: [\" + typeof resultFunc + \"]\");\n } // Determine which set of options we're using. Prefer options passed directly,\n // but fall back to options given to createSelectorCreator.\n\n\n var _directlyPassedOption = directlyPassedOptions,\n _directlyPassedOption2 = _directlyPassedOption.memoizeOptions,\n memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2; // Simplifying assumption: it's unlikely that the first options arg of the provided memoizer\n // is an array. In most libs I've looked at, it's an equality function or options object.\n // Based on that, if `memoizeOptions` _is_ an array, we assume it's a full\n // user-provided array of options. Otherwise, it must be just the _first_ arg, and so\n // we wrap it in an array so we can apply it.\n\n var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];\n var dependencies = getDependencies(funcs);\n var memoizedResultFunc = memoize.apply(void 0, [function recomputationWrapper() {\n _recomputations++; // apply arguments instead of spreading for performance.\n\n return resultFunc.apply(null, arguments);\n }].concat(finalMemoizeOptions)); // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n\n var selector = memoize(function dependenciesChecker() {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n // @ts-ignore\n params.push(dependencies[i].apply(null, arguments));\n } // apply arguments instead of spreading for performance.\n\n\n _lastResult = memoizedResultFunc.apply(null, params);\n return _lastResult;\n });\n Object.assign(selector, {\n resultFunc: resultFunc,\n memoizedResultFunc: memoizedResultFunc,\n dependencies: dependencies,\n lastResult: function lastResult() {\n return _lastResult;\n },\n recomputations: function recomputations() {\n return _recomputations;\n },\n resetRecomputations: function resetRecomputations() {\n return _recomputations = 0;\n }\n });\n return selector;\n }; // @ts-ignore\n\n\n return createSelector;\n}\nexport var createSelector = /* #__PURE__ */createSelectorCreator(defaultMemoize);\n// Manual definition of state and output arguments\nexport var createStructuredSelector = function createStructuredSelector(selectors, selectorCreator) {\n if (selectorCreator === void 0) {\n selectorCreator = createSelector;\n }\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + (\"where each property is a selector, instead received a \" + typeof selectors));\n }\n\n var objectKeys = Object.keys(selectors);\n var resultSelector = selectorCreator( // @ts-ignore\n objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n return resultSelector;\n};","import { createSelector as reselectCreateSelector } from 'reselect';\nimport { buildWarning } from './warning';\nconst cacheContainer = {\n cache: new WeakMap()\n};\nconst missingInstanceIdWarning = buildWarning(['MUI: A selector was called without passing the instance ID, which may impact the performance of the grid.', 'To fix, call it with `apiRef`, e.g. `mySelector(apiRef)`, or pass the instance ID explicitly, e.g. `mySelector(state, apiRef.current.instanceId)`.']);\nfunction checkIsAPIRef(value) {\n return 'current' in value && 'instanceId' in value.current;\n}\nconst DEFAULT_INSTANCE_ID = {\n id: 'default'\n};\nexport const createSelector = (a, b, c, d, e, f, ...rest) => {\n if (rest.length > 0) {\n throw new Error('Unsupported number of selectors');\n }\n let selector;\n if (a && b && c && d && e && f) {\n selector = (stateOrApiRef, instanceIdParam) => {\n const isAPIRef = checkIsAPIRef(stateOrApiRef);\n const instanceId = instanceIdParam != null ? instanceIdParam : isAPIRef ? stateOrApiRef.current.instanceId : DEFAULT_INSTANCE_ID;\n const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef;\n const va = a(state, instanceId);\n const vb = b(state, instanceId);\n const vc = c(state, instanceId);\n const vd = d(state, instanceId);\n const ve = e(state, instanceId);\n return f(va, vb, vc, vd, ve);\n };\n } else if (a && b && c && d && e) {\n selector = (stateOrApiRef, instanceIdParam) => {\n const isAPIRef = checkIsAPIRef(stateOrApiRef);\n const instanceId = instanceIdParam != null ? instanceIdParam : isAPIRef ? stateOrApiRef.current.instanceId : DEFAULT_INSTANCE_ID;\n const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef;\n const va = a(state, instanceId);\n const vb = b(state, instanceId);\n const vc = c(state, instanceId);\n const vd = d(state, instanceId);\n return e(va, vb, vc, vd);\n };\n } else if (a && b && c && d) {\n selector = (stateOrApiRef, instanceIdParam) => {\n const isAPIRef = checkIsAPIRef(stateOrApiRef);\n const instanceId = instanceIdParam != null ? instanceIdParam : isAPIRef ? stateOrApiRef.current.instanceId : DEFAULT_INSTANCE_ID;\n const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef;\n const va = a(state, instanceId);\n const vb = b(state, instanceId);\n const vc = c(state, instanceId);\n return d(va, vb, vc);\n };\n } else if (a && b && c) {\n selector = (stateOrApiRef, instanceIdParam) => {\n const isAPIRef = checkIsAPIRef(stateOrApiRef);\n const instanceId = instanceIdParam != null ? instanceIdParam : isAPIRef ? stateOrApiRef.current.instanceId : DEFAULT_INSTANCE_ID;\n const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef;\n const va = a(state, instanceId);\n const vb = b(state, instanceId);\n return c(va, vb);\n };\n } else if (a && b) {\n selector = (stateOrApiRef, instanceIdParam) => {\n const isAPIRef = checkIsAPIRef(stateOrApiRef);\n const instanceId = instanceIdParam != null ? instanceIdParam : isAPIRef ? stateOrApiRef.current.instanceId : DEFAULT_INSTANCE_ID;\n const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef;\n const va = a(state, instanceId);\n return b(va);\n };\n } else {\n throw new Error('Missing arguments');\n }\n\n // We use this property to detect if the selector was created with createSelector\n // or it's only a simple function the receives the state and returns part of it.\n selector.acceptsApiRef = true;\n return selector;\n};\nexport const createSelectorMemoized = (...args) => {\n const selector = (...selectorArgs) => {\n var _cache$get, _cache$get3;\n const [stateOrApiRef, instanceId] = selectorArgs;\n const isAPIRef = checkIsAPIRef(stateOrApiRef);\n const cacheKey = isAPIRef ? stateOrApiRef.current.instanceId : instanceId != null ? instanceId : DEFAULT_INSTANCE_ID;\n const state = isAPIRef ? stateOrApiRef.current.state : stateOrApiRef;\n if (process.env.NODE_ENV !== 'production') {\n if (cacheKey.id === 'default') {\n missingInstanceIdWarning();\n }\n }\n const {\n cache\n } = cacheContainer;\n if (cache.get(cacheKey) && (_cache$get = cache.get(cacheKey)) != null && _cache$get.get(args)) {\n var _cache$get2;\n // We pass the cache key because the called selector might have as\n // dependency another selector created with this `createSelector`.\n return (_cache$get2 = cache.get(cacheKey)) == null ? void 0 : _cache$get2.get(args)(state, cacheKey);\n }\n const newSelector = reselectCreateSelector(...args);\n if (!cache.get(cacheKey)) {\n cache.set(cacheKey, new Map());\n }\n (_cache$get3 = cache.get(cacheKey)) == null || _cache$get3.set(args, newSelector);\n return newSelector(state, cacheKey);\n };\n\n // We use this property to detect if the selector was created with createSelector\n // or it's only a simple function the receives the state and returns part of it.\n selector.acceptsApiRef = true;\n return selector;\n};\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_resetCreateSelectorCache = () => {\n cacheContainer.cache = new WeakMap();\n};","import { createSelector, createSelectorMemoized } from '../../../utils/createSelector';\n/**\n * Get the columns state\n * @category Columns\n */\nexport const gridColumnsStateSelector = state => state.columns;\n\n/**\n * Get an array of column fields in the order rendered on screen.\n * @category Columns\n */\nexport const gridColumnFieldsSelector = createSelector(gridColumnsStateSelector, columnsState => columnsState.orderedFields);\n\n/**\n * Get the columns as a lookup (an object containing the field for keys and the definition for values).\n * @category Columns\n */\nexport const gridColumnLookupSelector = createSelector(gridColumnsStateSelector, columnsState => columnsState.lookup);\n\n/**\n * Get an array of column definitions in the order rendered on screen..\n * @category Columns\n */\nexport const gridColumnDefinitionsSelector = createSelectorMemoized(gridColumnFieldsSelector, gridColumnLookupSelector, (allFields, lookup) => allFields.map(field => lookup[field]));\n\n/**\n * Get the column visibility model, containing the visibility status of each column.\n * If a column is not registered in the model, it is visible.\n * @category Visible Columns\n */\nexport const gridColumnVisibilityModelSelector = createSelector(gridColumnsStateSelector, columnsState => columnsState.columnVisibilityModel);\n\n/**\n * Get the visible columns as a lookup (an object containing the field for keys and the definition for values).\n * @category Visible Columns\n */\nexport const gridVisibleColumnDefinitionsSelector = createSelectorMemoized(gridColumnDefinitionsSelector, gridColumnVisibilityModelSelector, (columns, columnVisibilityModel) => columns.filter(column => columnVisibilityModel[column.field] !== false));\n\n/**\n * Get the field of each visible column.\n * @category Visible Columns\n */\nexport const gridVisibleColumnFieldsSelector = createSelectorMemoized(gridVisibleColumnDefinitionsSelector, visibleColumns => visibleColumns.map(column => column.field));\n\n/**\n * Get the left position in pixel of each visible columns relative to the left of the first column.\n * @category Visible Columns\n */\nexport const gridColumnPositionsSelector = createSelectorMemoized(gridVisibleColumnDefinitionsSelector, visibleColumns => {\n const positions = [];\n let currentPosition = 0;\n for (let i = 0; i < visibleColumns.length; i += 1) {\n positions.push(currentPosition);\n currentPosition += visibleColumns[i].computedWidth;\n }\n return positions;\n});\n\n/**\n * Get the summed width of all the visible columns.\n * @category Visible Columns\n */\nexport const gridColumnsTotalWidthSelector = createSelector(gridVisibleColumnDefinitionsSelector, gridColumnPositionsSelector, (visibleColumns, positions) => {\n const colCount = visibleColumns.length;\n if (colCount === 0) {\n return 0;\n }\n return positions[colCount - 1] + visibleColumns[colCount - 1].computedWidth;\n});\n\n/**\n * Get the filterable columns as an array.\n * @category Columns\n */\nexport const gridFilterableColumnDefinitionsSelector = createSelectorMemoized(gridColumnDefinitionsSelector, columns => columns.filter(col => col.filterable));\n\n/**\n * Get the filterable columns as a lookup (an object containing the field for keys and the definition for values).\n * @category Columns\n */\nexport const gridFilterableColumnLookupSelector = createSelectorMemoized(gridColumnDefinitionsSelector, columns => columns.reduce((acc, col) => {\n if (col.filterable) {\n acc[col.field] = col;\n }\n return acc;\n}, {}));","import { createSelector, createSelectorMemoized } from '../../../utils/createSelector';\n/**\n * @category ColumnGrouping\n * @ignore - do not document.\n */\nexport const gridColumnGroupingSelector = state => state.columnGrouping;\nexport const gridColumnGroupsUnwrappedModelSelector = createSelectorMemoized(gridColumnGroupingSelector, columnGrouping => {\n var _columnGrouping$unwra;\n return (_columnGrouping$unwra = columnGrouping == null ? void 0 : columnGrouping.unwrappedGroupingModel) != null ? _columnGrouping$unwra : {};\n});\nexport const gridColumnGroupsLookupSelector = createSelectorMemoized(gridColumnGroupingSelector, columnGrouping => {\n var _columnGrouping$looku;\n return (_columnGrouping$looku = columnGrouping == null ? void 0 : columnGrouping.lookup) != null ? _columnGrouping$looku : {};\n});\nexport const gridColumnGroupsHeaderStructureSelector = createSelectorMemoized(gridColumnGroupingSelector, columnGrouping => {\n var _columnGrouping$heade;\n return (_columnGrouping$heade = columnGrouping == null ? void 0 : columnGrouping.headerStructure) != null ? _columnGrouping$heade : [];\n});\nexport const gridColumnGroupsHeaderMaxDepthSelector = createSelector(gridColumnGroupingSelector, columnGrouping => {\n var _columnGrouping$maxDe;\n return (_columnGrouping$maxDe = columnGrouping == null ? void 0 : columnGrouping.maxDepth) != null ? _columnGrouping$maxDe : 0;\n});","import { createSelector, createSelectorMemoized } from '../../../utils/createSelector';\nconst gridRowsStateSelector = state => state.rows;\nexport const gridRowCountSelector = createSelector(gridRowsStateSelector, rows => rows.totalRowCount);\nexport const gridRowsLoadingSelector = createSelector(gridRowsStateSelector, rows => rows.loading);\nexport const gridTopLevelRowCountSelector = createSelector(gridRowsStateSelector, rows => rows.totalTopLevelRowCount);\n\n// TODO rows v6: Rename\nexport const gridRowsLookupSelector = createSelector(gridRowsStateSelector, rows => rows.dataRowIdToModelLookup);\nexport const gridRowsDataRowIdToIdLookupSelector = createSelector(gridRowsStateSelector, rows => rows.dataRowIdToIdLookup);\nexport const gridRowTreeSelector = createSelector(gridRowsStateSelector, rows => rows.tree);\nexport const gridRowGroupingNameSelector = createSelector(gridRowsStateSelector, rows => rows.groupingName);\nexport const gridRowTreeDepthsSelector = createSelector(gridRowsStateSelector, rows => rows.treeDepths);\nexport const gridRowMaximumTreeDepthSelector = createSelectorMemoized(gridRowsStateSelector, rows => {\n const entries = Object.entries(rows.treeDepths);\n if (entries.length === 0) {\n return 1;\n }\n return entries.filter(([, nodeCount]) => nodeCount > 0).map(([depth]) => Number(depth)).sort((a, b) => b - a)[0] + 1;\n});\nexport const gridDataRowIdsSelector = createSelector(gridRowsStateSelector, rows => rows.dataRowIds);\n\n/**\n * @ignore - do not document.\n */\nexport const gridAdditionalRowGroupsSelector = createSelector(gridRowsStateSelector, rows => rows == null ? void 0 : rows.additionalRowGroups);\n\n/**\n * @ignore - do not document.\n */\nexport const gridPinnedRowsSelector = createSelectorMemoized(gridAdditionalRowGroupsSelector, additionalRowGroups => {\n var _rawPinnedRows$bottom, _rawPinnedRows$top;\n const rawPinnedRows = additionalRowGroups == null ? void 0 : additionalRowGroups.pinnedRows;\n return {\n bottom: rawPinnedRows == null || (_rawPinnedRows$bottom = rawPinnedRows.bottom) == null ? void 0 : _rawPinnedRows$bottom.map(rowEntry => {\n var _rowEntry$model;\n return {\n id: rowEntry.id,\n model: (_rowEntry$model = rowEntry.model) != null ? _rowEntry$model : {}\n };\n }),\n top: rawPinnedRows == null || (_rawPinnedRows$top = rawPinnedRows.top) == null ? void 0 : _rawPinnedRows$top.map(rowEntry => {\n var _rowEntry$model2;\n return {\n id: rowEntry.id,\n model: (_rowEntry$model2 = rowEntry.model) != null ? _rowEntry$model2 : {}\n };\n })\n };\n});\n\n/**\n * @ignore - do not document.\n */\nexport const gridPinnedRowsCountSelector = createSelector(gridPinnedRowsSelector, pinnedRows => {\n var _pinnedRows$top, _pinnedRows$bottom;\n return ((pinnedRows == null || (_pinnedRows$top = pinnedRows.top) == null ? void 0 : _pinnedRows$top.length) || 0) + ((pinnedRows == null || (_pinnedRows$bottom = pinnedRows.bottom) == null ? void 0 : _pinnedRows$bottom.length) || 0);\n});","import { gridVisibleColumnDefinitionsSelector } from '../features/columns/gridColumnsSelector';\nimport { useGridSelector } from './useGridSelector';\nimport { useGridRootProps } from './useGridRootProps';\nimport { gridColumnGroupsHeaderMaxDepthSelector } from '../features/columnGrouping/gridColumnGroupsSelector';\nimport { gridPinnedRowsCountSelector, gridRowCountSelector } from '../features/rows/gridRowsSelector';\nimport { useGridPrivateApiContext } from './useGridPrivateApiContext';\nexport const useGridAriaAttributes = () => {\n var _rootProps$experiment;\n const apiRef = useGridPrivateApiContext();\n const rootProps = useGridRootProps();\n const visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);\n const totalRowCount = useGridSelector(apiRef, gridRowCountSelector);\n const headerGroupingMaxDepth = useGridSelector(apiRef, gridColumnGroupsHeaderMaxDepthSelector);\n const pinnedRowsCount = useGridSelector(apiRef, gridPinnedRowsCountSelector);\n let role = 'grid';\n if ((_rootProps$experiment = rootProps.experimentalFeatures) != null && _rootProps$experiment.ariaV7 && rootProps.treeData) {\n role = 'treegrid';\n }\n return {\n role,\n 'aria-colcount': visibleColumns.length,\n 'aria-rowcount': headerGroupingMaxDepth + 1 + pinnedRowsCount + totalRowCount,\n 'aria-multiselectable': !rootProps.disableMultipleRowSelection\n };\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { styled } from '@mui/system';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { useGridAriaAttributes } from '../../hooks/utils/useGridAriaAttributes';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['main']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridMainContainerRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'Main',\n overridesResolver: (props, styles) => styles.main\n})(() => ({\n position: 'relative',\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n}));\nexport const GridMainContainer = /*#__PURE__*/React.forwardRef((props, ref) => {\n var _rootProps$experiment;\n const rootProps = useGridRootProps();\n const classes = useUtilityClasses(rootProps);\n const getAriaAttributes = (_rootProps$experiment = rootProps.experimentalFeatures) != null && _rootProps$experiment.ariaV7 // ariaV7 should never change\n ? useGridAriaAttributes : null;\n const ariaAttributes = typeof getAriaAttributes === 'function' ? getAriaAttributes() : null;\n return /*#__PURE__*/_jsx(GridMainContainerRoot, _extends({\n ref: ref,\n className: classes.root,\n ownerState: rootProps\n }, ariaAttributes, {\n children: props.children\n }));\n});","import { createSelector, createSelectorMemoized } from '../../../utils/createSelector';\nimport { gridRowsLookupSelector } from '../rows/gridRowsSelector';\n\n/**\n * @category Sorting\n * @ignore - do not document.\n */\nconst gridSortingStateSelector = state => state.sorting;\n\n/**\n * Get the id of the rows after the sorting process.\n * @category Sorting\n */\nexport const gridSortedRowIdsSelector = createSelector(gridSortingStateSelector, sortingState => sortingState.sortedRows);\n\n/**\n * Get the id and the model of the rows after the sorting process.\n * @category Sorting\n */\nexport const gridSortedRowEntriesSelector = createSelectorMemoized(gridSortedRowIdsSelector, gridRowsLookupSelector,\n// TODO rows v6: Is this the best approach ?\n(sortedIds, idRowsLookup) => sortedIds.map(id => {\n var _idRowsLookup$id;\n return {\n id,\n model: (_idRowsLookup$id = idRowsLookup[id]) != null ? _idRowsLookup$id : {}\n };\n}));\n\n/**\n * Get the current sorting model.\n * @category Sorting\n */\nexport const gridSortModelSelector = createSelector(gridSortingStateSelector, sorting => sorting.sortModel);\n/**\n * @category Sorting\n * @ignore - do not document.\n */\nexport const gridSortColumnLookupSelector = createSelectorMemoized(gridSortModelSelector, sortModel => {\n const result = sortModel.reduce((res, sortItem, index) => {\n res[sortItem.field] = {\n sortDirection: sortItem.sort,\n sortIndex: sortModel.length > 1 ? index + 1 : undefined\n };\n return res;\n }, {});\n return result;\n});","import { createSelector, createSelectorMemoized } from '../../../utils/createSelector';\nimport { gridSortedRowEntriesSelector } from '../sorting/gridSortingSelector';\nimport { gridColumnLookupSelector } from '../columns/gridColumnsSelector';\nimport { gridRowMaximumTreeDepthSelector, gridRowTreeSelector } from '../rows/gridRowsSelector';\n\n/**\n * @category Filtering\n */\nconst gridFilterStateSelector = state => state.filter;\n\n/**\n * Get the current filter model.\n * @category Filtering\n */\nexport const gridFilterModelSelector = createSelector(gridFilterStateSelector, filterState => filterState.filterModel);\n\n/**\n * Get the current quick filter values.\n * @category Filtering\n */\nexport const gridQuickFilterValuesSelector = createSelector(gridFilterModelSelector, filterModel => filterModel.quickFilterValues);\n\n/**\n * @category Visible rows\n * @ignore - do not document.\n */\nexport const gridVisibleRowsLookupSelector = state => state.visibleRowsLookup;\n\n/**\n * @category Filtering\n * @ignore - do not document.\n */\nexport const gridFilteredRowsLookupSelector = createSelector(gridFilterStateSelector, filterState => filterState.filteredRowsLookup);\n\n/**\n * @category Filtering\n * @ignore - do not document.\n */\nexport const gridFilteredDescendantCountLookupSelector = createSelector(gridFilterStateSelector, filterState => filterState.filteredDescendantCountLookup);\n\n/**\n * Get the id and the model of the rows accessible after the filtering process.\n * Does not contain the collapsed children.\n * @category Filtering\n */\nexport const gridExpandedSortedRowEntriesSelector = createSelectorMemoized(gridVisibleRowsLookupSelector, gridSortedRowEntriesSelector, (visibleRowsLookup, sortedRows) => sortedRows.filter(row => visibleRowsLookup[row.id] !== false));\n\n/**\n * Get the id of the rows accessible after the filtering process.\n * Does not contain the collapsed children.\n * @category Filtering\n */\nexport const gridExpandedSortedRowIdsSelector = createSelectorMemoized(gridExpandedSortedRowEntriesSelector, visibleSortedRowEntries => visibleSortedRowEntries.map(row => row.id));\n\n/**\n * Get the id and the model of the rows accessible after the filtering process.\n * Contains the collapsed children.\n * @category Filtering\n */\nexport const gridFilteredSortedRowEntriesSelector = createSelectorMemoized(gridFilteredRowsLookupSelector, gridSortedRowEntriesSelector, (filteredRowsLookup, sortedRows) => sortedRows.filter(row => filteredRowsLookup[row.id] !== false));\n\n/**\n * Get the id of the rows accessible after the filtering process.\n * Contains the collapsed children.\n * @category Filtering\n */\nexport const gridFilteredSortedRowIdsSelector = createSelectorMemoized(gridFilteredSortedRowEntriesSelector, filteredSortedRowEntries => filteredSortedRowEntries.map(row => row.id));\n\n/**\n * Get the id and the model of the top level rows accessible after the filtering process.\n * @category Filtering\n */\nexport const gridFilteredSortedTopLevelRowEntriesSelector = createSelectorMemoized(gridExpandedSortedRowEntriesSelector, gridRowTreeSelector, gridRowMaximumTreeDepthSelector, (visibleSortedRows, rowTree, rowTreeDepth) => {\n if (rowTreeDepth < 2) {\n return visibleSortedRows;\n }\n return visibleSortedRows.filter(row => {\n var _rowTree$row$id;\n return ((_rowTree$row$id = rowTree[row.id]) == null ? void 0 : _rowTree$row$id.depth) === 0;\n });\n});\n\n/**\n * Get the amount of rows accessible after the filtering process.\n * @category Filtering\n */\nexport const gridExpandedRowCountSelector = createSelector(gridExpandedSortedRowEntriesSelector, visibleSortedRows => visibleSortedRows.length);\n\n/**\n * Get the amount of top level rows accessible after the filtering process.\n * @category Filtering\n */\nexport const gridFilteredTopLevelRowCountSelector = createSelector(gridFilteredSortedTopLevelRowEntriesSelector, visibleSortedTopLevelRows => visibleSortedTopLevelRows.length);\n\n/**\n * @category Filtering\n * @ignore - do not document.\n */\nexport const gridFilterActiveItemsSelector = createSelectorMemoized(gridFilterModelSelector, gridColumnLookupSelector, (filterModel, columnLookup) => {\n var _filterModel$items;\n return (_filterModel$items = filterModel.items) == null ? void 0 : _filterModel$items.filter(item => {\n var _column$filterOperato, _item$value;\n if (!item.field) {\n return false;\n }\n const column = columnLookup[item.field];\n if (!(column != null && column.filterOperators) || (column == null || (_column$filterOperato = column.filterOperators) == null ? void 0 : _column$filterOperato.length) === 0) {\n return false;\n }\n const filterOperator = column.filterOperators.find(operator => operator.value === item.operator);\n if (!filterOperator) {\n return false;\n }\n return !filterOperator.InputComponent || item.value != null && ((_item$value = item.value) == null ? void 0 : _item$value.toString()) !== '';\n });\n});\n/**\n * @category Filtering\n * @ignore - do not document.\n */\nexport const gridFilterActiveItemsLookupSelector = createSelectorMemoized(gridFilterActiveItemsSelector, activeFilters => {\n const result = activeFilters.reduce((res, filterItem) => {\n if (!res[filterItem.field]) {\n res[filterItem.field] = [filterItem];\n } else {\n res[filterItem.field].push(filterItem);\n }\n return res;\n }, {});\n return result;\n});","import { createSelector } from '../../../utils/createSelector';\nexport const gridFocusStateSelector = state => state.focus;\nexport const gridFocusCellSelector = createSelector(gridFocusStateSelector, focusState => focusState.cell);\nexport const gridFocusColumnHeaderSelector = createSelector(gridFocusStateSelector, focusState => focusState.columnHeader);\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_gridFocusColumnHeaderFilterSelector = createSelector(gridFocusStateSelector, focusState => focusState.columnHeaderFilter);\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_gridFocusColumnGroupHeaderSelector = createSelector(gridFocusStateSelector, focusState => focusState.columnGroupHeader);\nexport const gridTabIndexStateSelector = state => state.tabIndex;\nexport const gridTabIndexCellSelector = createSelector(gridTabIndexStateSelector, state => state.cell);\nexport const gridTabIndexColumnHeaderSelector = createSelector(gridTabIndexStateSelector, state => state.columnHeader);\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_gridTabIndexColumnHeaderFilterSelector = createSelector(gridTabIndexStateSelector, state => state.columnHeaderFilter);\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_gridTabIndexColumnGroupHeaderSelector = createSelector(gridTabIndexStateSelector, state => state.columnGroupHeader);","import { createSelector } from '../../../utils/createSelector';\nexport const gridDensitySelector = state => state.density;\nexport const gridDensityValueSelector = createSelector(gridDensitySelector, density => density.value);\nexport const gridDensityFactorSelector = createSelector(gridDensitySelector, density => density.factor);","export const gridColumnMenuSelector = state => state.columnMenu;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { useGridPrivateApiContext } from '../../hooks/utils/useGridPrivateApiContext';\nimport { useGridSelector } from '../../hooks/utils/useGridSelector';\nimport { GridMainContainer } from '../containers/GridMainContainer';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { gridColumnPositionsSelector, gridColumnVisibilityModelSelector, gridVisibleColumnDefinitionsSelector } from '../../hooks/features/columns/gridColumnsSelector';\nimport { gridFilterActiveItemsLookupSelector } from '../../hooks/features/filter/gridFilterSelector';\nimport { gridSortColumnLookupSelector } from '../../hooks/features/sorting/gridSortingSelector';\nimport { gridTabIndexColumnHeaderSelector, gridTabIndexCellSelector, gridFocusColumnHeaderSelector, unstable_gridTabIndexColumnGroupHeaderSelector, unstable_gridFocusColumnGroupHeaderSelector } from '../../hooks/features/focus/gridFocusStateSelector';\nimport { gridDensityFactorSelector } from '../../hooks/features/density/densitySelector';\nimport { gridColumnGroupsHeaderMaxDepthSelector, gridColumnGroupsHeaderStructureSelector } from '../../hooks/features/columnGrouping/gridColumnGroupsSelector';\nimport { gridColumnMenuSelector } from '../../hooks/features/columnMenu/columnMenuSelector';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction GridBody(props) {\n const {\n VirtualScrollerComponent,\n ColumnHeadersProps,\n children\n } = props;\n const apiRef = useGridPrivateApiContext();\n const rootProps = useGridRootProps();\n const rootRef = React.useRef(null);\n const visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);\n const filterColumnLookup = useGridSelector(apiRef, gridFilterActiveItemsLookupSelector);\n const sortColumnLookup = useGridSelector(apiRef, gridSortColumnLookupSelector);\n const columnPositions = useGridSelector(apiRef, gridColumnPositionsSelector);\n const columnHeaderTabIndexState = useGridSelector(apiRef, gridTabIndexColumnHeaderSelector);\n const cellTabIndexState = useGridSelector(apiRef, gridTabIndexCellSelector);\n const columnGroupHeaderTabIndexState = useGridSelector(apiRef, unstable_gridTabIndexColumnGroupHeaderSelector);\n const columnHeaderFocus = useGridSelector(apiRef, gridFocusColumnHeaderSelector);\n const columnGroupHeaderFocus = useGridSelector(apiRef, unstable_gridFocusColumnGroupHeaderSelector);\n const densityFactor = useGridSelector(apiRef, gridDensityFactorSelector);\n const headerGroupingMaxDepth = useGridSelector(apiRef, gridColumnGroupsHeaderMaxDepthSelector);\n const columnMenuState = useGridSelector(apiRef, gridColumnMenuSelector);\n const columnVisibility = useGridSelector(apiRef, gridColumnVisibilityModelSelector);\n const columnGroupsHeaderStructure = useGridSelector(apiRef, gridColumnGroupsHeaderStructureSelector);\n const hasOtherElementInTabSequence = !(columnGroupHeaderTabIndexState === null && columnHeaderTabIndexState === null && cellTabIndexState === null);\n useEnhancedEffect(() => {\n apiRef.current.computeSizeAndPublishResizeEvent();\n const elementToObserve = rootRef.current;\n if (typeof ResizeObserver === 'undefined') {\n return () => {};\n }\n let animationFrame;\n const observer = new ResizeObserver(() => {\n // See https://github.com/mui/mui-x/issues/8733\n animationFrame = requestAnimationFrame(() => {\n apiRef.current.computeSizeAndPublishResizeEvent();\n });\n });\n if (elementToObserve) {\n observer.observe(elementToObserve);\n }\n return () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (elementToObserve) {\n observer.unobserve(elementToObserve);\n }\n };\n }, [apiRef]);\n const columnHeadersRef = React.useRef(null);\n const columnsContainerRef = React.useRef(null);\n const virtualScrollerRef = React.useRef(null);\n apiRef.current.register('private', {\n columnHeadersContainerElementRef: columnsContainerRef,\n columnHeadersElementRef: columnHeadersRef,\n virtualScrollerRef,\n mainElementRef: rootRef\n });\n const hasDimensions = !!apiRef.current.getRootDimensions();\n return /*#__PURE__*/_jsxs(GridMainContainer, {\n ref: rootRef,\n children: [/*#__PURE__*/_jsx(rootProps.slots.columnHeaders, _extends({\n ref: columnsContainerRef,\n innerRef: columnHeadersRef,\n visibleColumns: visibleColumns,\n filterColumnLookup: filterColumnLookup,\n sortColumnLookup: sortColumnLookup,\n columnPositions: columnPositions,\n columnHeaderTabIndexState: columnHeaderTabIndexState,\n columnGroupHeaderTabIndexState: columnGroupHeaderTabIndexState,\n columnHeaderFocus: columnHeaderFocus,\n columnGroupHeaderFocus: columnGroupHeaderFocus,\n densityFactor: densityFactor,\n headerGroupingMaxDepth: headerGroupingMaxDepth,\n columnMenuState: columnMenuState,\n columnVisibility: columnVisibility,\n columnGroupsHeaderStructure: columnGroupsHeaderStructure,\n hasOtherElementInTabSequence: hasOtherElementInTabSequence\n }, ColumnHeadersProps)), hasDimensions && /*#__PURE__*/_jsx(VirtualScrollerComponent\n // The content is only rendered after dimensions are computed because\n // the lazy-loading hook is listening to `renderedRowsIntervalChange`,\n // but only does something if the dimensions are also available.\n // If this event is published while dimensions haven't been computed,\n // the `onFetchRows` prop won't be called during mount.\n , {\n ref: virtualScrollerRef\n }), children]\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridBody.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n children: PropTypes.node,\n ColumnHeadersProps: PropTypes.object,\n VirtualScrollerComponent: PropTypes.elementType.isRequired\n} : void 0;\nexport { GridBody };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function GridFooterPlaceholder() {\n var _rootProps$slotProps;\n const rootProps = useGridRootProps();\n if (rootProps.hideFooter) {\n return null;\n }\n return /*#__PURE__*/_jsx(rootProps.slots.footer, _extends({}, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.footer));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { gridPinnedRowsSelector } from './gridRowsSelector';\nimport { gridDensityFactorSelector } from '../density/densitySelector';\nexport const GRID_ROOT_GROUP_ID = `auto-generated-group-node-root`;\nexport const GRID_ID_AUTOGENERATED = Symbol('mui.id_autogenerated');\nexport const buildRootGroup = () => ({\n type: 'group',\n id: GRID_ROOT_GROUP_ID,\n depth: -1,\n groupingField: null,\n groupingKey: null,\n isAutoGenerated: true,\n children: [],\n childrenFromPath: {},\n childrenExpanded: true,\n parent: null\n});\n\n/**\n * A helper function to check if the id provided is valid.\n * @param {GridRowId} id Id as [[GridRowId]].\n * @param {GridRowModel | Partial} row Row as [[GridRowModel]].\n * @param {string} detailErrorMessage A custom error message to display for invalid IDs\n */\nexport function checkGridRowIdIsValid(id, row, detailErrorMessage = 'A row was provided without id in the rows prop:') {\n if (id == null) {\n throw new Error(['MUI: The data grid component requires all rows to have a unique `id` property.', 'Alternatively, you can use the `getRowId` prop to specify a custom id for each row.', detailErrorMessage, JSON.stringify(row)].join('\\n'));\n }\n}\nexport const getRowIdFromRowModel = (rowModel, getRowId, detailErrorMessage) => {\n const id = getRowId ? getRowId(rowModel) : rowModel.id;\n checkGridRowIdIsValid(id, rowModel, detailErrorMessage);\n return id;\n};\nexport const createRowsInternalCache = ({\n rows,\n getRowId,\n loading,\n rowCount\n}) => {\n const updates = {\n type: 'full',\n rows: []\n };\n const dataRowIdToModelLookup = {};\n const dataRowIdToIdLookup = {};\n for (let i = 0; i < rows.length; i += 1) {\n const model = rows[i];\n const id = getRowIdFromRowModel(model, getRowId);\n dataRowIdToModelLookup[id] = model;\n dataRowIdToIdLookup[id] = id;\n updates.rows.push(id);\n }\n return {\n rowsBeforePartialUpdates: rows,\n loadingPropBeforePartialUpdates: loading,\n rowCountPropBeforePartialUpdates: rowCount,\n updates,\n dataRowIdToIdLookup,\n dataRowIdToModelLookup\n };\n};\nexport const getTopLevelRowCount = ({\n tree,\n rowCountProp = 0\n}) => {\n const rootGroupNode = tree[GRID_ROOT_GROUP_ID];\n return Math.max(rowCountProp, rootGroupNode.children.length + (rootGroupNode.footerId == null ? 0 : 1));\n};\nexport const getRowsStateFromCache = ({\n apiRef,\n rowCountProp = 0,\n loadingProp,\n previousTree,\n previousTreeDepths\n}) => {\n const cache = apiRef.current.caches.rows;\n\n // 1. Apply the \"rowTreeCreation\" family processing.\n const {\n tree: unProcessedTree,\n treeDepths: unProcessedTreeDepths,\n dataRowIds: unProcessedDataRowIds,\n groupingName\n } = apiRef.current.applyStrategyProcessor('rowTreeCreation', {\n previousTree,\n previousTreeDepths,\n updates: cache.updates,\n dataRowIdToIdLookup: cache.dataRowIdToIdLookup,\n dataRowIdToModelLookup: cache.dataRowIdToModelLookup\n });\n\n // 2. Apply the \"hydrateRows\" pipe-processing.\n const groupingParamsWithHydrateRows = apiRef.current.unstable_applyPipeProcessors('hydrateRows', {\n tree: unProcessedTree,\n treeDepths: unProcessedTreeDepths,\n dataRowIdToIdLookup: cache.dataRowIdToIdLookup,\n dataRowIds: unProcessedDataRowIds,\n dataRowIdToModelLookup: cache.dataRowIdToModelLookup\n });\n\n // 3. Reset the cache updates\n apiRef.current.caches.rows.updates = {\n type: 'partial',\n actions: {\n insert: [],\n modify: [],\n remove: []\n },\n idToActionLookup: {}\n };\n return _extends({}, groupingParamsWithHydrateRows, {\n totalRowCount: Math.max(rowCountProp, groupingParamsWithHydrateRows.dataRowIds.length),\n totalTopLevelRowCount: getTopLevelRowCount({\n tree: groupingParamsWithHydrateRows.tree,\n rowCountProp\n }),\n groupingName,\n loading: loadingProp\n });\n};\nexport const isAutoGeneratedRow = rowNode => rowNode.type === 'skeletonRow' || rowNode.type === 'footer' || rowNode.type === 'group' && rowNode.isAutoGenerated || rowNode.type === 'pinnedRow' && rowNode.isAutoGenerated;\nexport const getTreeNodeDescendants = (tree, parentId, skipAutoGeneratedRows) => {\n const node = tree[parentId];\n if (node.type !== 'group') {\n return [];\n }\n const validDescendants = [];\n for (let i = 0; i < node.children.length; i += 1) {\n const child = node.children[i];\n if (!skipAutoGeneratedRows || !isAutoGeneratedRow(tree[child])) {\n validDescendants.push(child);\n }\n const childDescendants = getTreeNodeDescendants(tree, child, skipAutoGeneratedRows);\n for (let j = 0; j < childDescendants.length; j += 1) {\n validDescendants.push(childDescendants[j]);\n }\n }\n if (!skipAutoGeneratedRows && node.footerId != null) {\n validDescendants.push(node.footerId);\n }\n return validDescendants;\n};\nexport const updateCacheWithNewRows = ({\n previousCache,\n getRowId,\n updates\n}) => {\n var _previousCache$update, _previousCache$update2, _previousCache$update3;\n if (previousCache.updates.type === 'full') {\n throw new Error('MUI: Unable to prepare a partial update if a full update is not applied yet');\n }\n\n // Remove duplicate updates.\n // A server can batch updates, and send several updates for the same row in one fn call.\n const uniqueUpdates = new Map();\n updates.forEach(update => {\n const id = getRowIdFromRowModel(update, getRowId, 'A row was provided without id when calling updateRows():');\n if (uniqueUpdates.has(id)) {\n uniqueUpdates.set(id, _extends({}, uniqueUpdates.get(id), update));\n } else {\n uniqueUpdates.set(id, update);\n }\n });\n const partialUpdates = {\n type: 'partial',\n actions: {\n insert: [...((_previousCache$update = previousCache.updates.actions.insert) != null ? _previousCache$update : [])],\n modify: [...((_previousCache$update2 = previousCache.updates.actions.modify) != null ? _previousCache$update2 : [])],\n remove: [...((_previousCache$update3 = previousCache.updates.actions.remove) != null ? _previousCache$update3 : [])]\n },\n idToActionLookup: _extends({}, previousCache.updates.idToActionLookup)\n };\n const dataRowIdToModelLookup = _extends({}, previousCache.dataRowIdToModelLookup);\n const dataRowIdToIdLookup = _extends({}, previousCache.dataRowIdToIdLookup);\n const alreadyAppliedActionsToRemove = {\n insert: {},\n modify: {},\n remove: {}\n };\n\n // Depending on the action already applied to the data row,\n // We might want drop the already-applied-update.\n // For instance:\n // - if you delete then insert, then you don't want to apply the deletion in the tree.\n // - if you insert, then modify, then you just want to apply the insertion in the tree.\n uniqueUpdates.forEach((partialRow, id) => {\n const actionAlreadyAppliedToRow = partialUpdates.idToActionLookup[id];\n\n // Action === \"delete\"\n // eslint-disable-next-line no-underscore-dangle\n if (partialRow._action === 'delete') {\n // If the data row has been removed since the last state update,\n // Then do nothing.\n if (actionAlreadyAppliedToRow === 'remove' || !dataRowIdToModelLookup[id]) {\n return;\n }\n\n // If the data row has been inserted / modified since the last state update,\n // Then drop this \"insert\" / \"modify\" update.\n if (actionAlreadyAppliedToRow != null) {\n alreadyAppliedActionsToRemove[actionAlreadyAppliedToRow][id] = true;\n }\n\n // Remove the data row from the lookups and add it to the \"delete\" update.\n partialUpdates.actions.remove.push(id);\n delete dataRowIdToModelLookup[id];\n delete dataRowIdToIdLookup[id];\n return;\n }\n const oldRow = dataRowIdToModelLookup[id];\n\n // Action === \"modify\"\n if (oldRow) {\n // If the data row has been removed since the last state update,\n // Then drop this \"remove\" update and add it to the \"modify\" update instead.\n if (actionAlreadyAppliedToRow === 'remove') {\n alreadyAppliedActionsToRemove.remove[id] = true;\n partialUpdates.actions.modify.push(id);\n }\n // If the date has not been inserted / modified since the last state update,\n // Then add it to the \"modify\" update (if it has been inserted it should just remain \"inserted\").\n else if (actionAlreadyAppliedToRow == null) {\n partialUpdates.actions.modify.push(id);\n }\n\n // Update the data row lookups.\n dataRowIdToModelLookup[id] = _extends({}, oldRow, partialRow);\n return;\n }\n\n // Action === \"insert\"\n // If the data row has been removed since the last state update,\n // Then drop the \"remove\" update and add it to the \"insert\" update instead.\n if (actionAlreadyAppliedToRow === 'remove') {\n alreadyAppliedActionsToRemove.remove[id] = true;\n partialUpdates.actions.insert.push(id);\n }\n // If the data row has not been inserted since the last state update,\n // Then add it to the \"insert\" update.\n // `actionAlreadyAppliedToRow` can't be equal to \"modify\", otherwise we would have an `oldRow` above.\n else if (actionAlreadyAppliedToRow == null) {\n partialUpdates.actions.insert.push(id);\n }\n\n // Update the data row lookups.\n dataRowIdToModelLookup[id] = partialRow;\n dataRowIdToIdLookup[id] = id;\n });\n const actionTypeWithActionsToRemove = Object.keys(alreadyAppliedActionsToRemove);\n for (let i = 0; i < actionTypeWithActionsToRemove.length; i += 1) {\n const actionType = actionTypeWithActionsToRemove[i];\n const idsToRemove = alreadyAppliedActionsToRemove[actionType];\n if (Object.keys(idsToRemove).length > 0) {\n partialUpdates.actions[actionType] = partialUpdates.actions[actionType].filter(id => !idsToRemove[id]);\n }\n }\n return {\n dataRowIdToModelLookup,\n dataRowIdToIdLookup,\n updates: partialUpdates,\n rowsBeforePartialUpdates: previousCache.rowsBeforePartialUpdates,\n loadingPropBeforePartialUpdates: previousCache.loadingPropBeforePartialUpdates,\n rowCountPropBeforePartialUpdates: previousCache.rowCountPropBeforePartialUpdates\n };\n};\nexport function calculatePinnedRowsHeight(apiRef) {\n var _pinnedRows$top, _pinnedRows$bottom;\n const pinnedRows = gridPinnedRowsSelector(apiRef);\n const topPinnedRowsHeight = (pinnedRows == null || (_pinnedRows$top = pinnedRows.top) == null ? void 0 : _pinnedRows$top.reduce((acc, value) => {\n acc += apiRef.current.unstable_getRowHeight(value.id);\n return acc;\n }, 0)) || 0;\n const bottomPinnedRowsHeight = (pinnedRows == null || (_pinnedRows$bottom = pinnedRows.bottom) == null ? void 0 : _pinnedRows$bottom.reduce((acc, value) => {\n acc += apiRef.current.unstable_getRowHeight(value.id);\n return acc;\n }, 0)) || 0;\n return {\n top: topPinnedRowsHeight,\n bottom: bottomPinnedRowsHeight\n };\n}\nexport function getMinimalContentHeight(apiRef, rowHeight) {\n const densityFactor = gridDensityFactorSelector(apiRef);\n return `var(--DataGrid-overlayHeight, ${2 * Math.floor(rowHeight * densityFactor)}px)`;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/system';\nimport { unstable_composeClasses as composeClasses, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport clsx from 'clsx';\nimport { useGridSelector } from '../../hooks/utils/useGridSelector';\nimport { gridExpandedRowCountSelector } from '../../hooks/features/filter/gridFilterSelector';\nimport { gridRowCountSelector, gridRowsLoadingSelector } from '../../hooks/features/rows/gridRowsSelector';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { getMinimalContentHeight } from '../../hooks/features/rows/gridRowsUtils';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst GridOverlayWrapperRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'OverlayWrapper',\n shouldForwardProp: prop => prop !== 'overlayType',\n overridesResolver: (props, styles) => styles.overlayWrapper\n})(({\n overlayType\n}) => ({\n position: 'sticky',\n // To stay in place while scrolling\n top: 0,\n left: 0,\n width: 0,\n // To stay above the content instead of shifting it down\n height: 0,\n // To stay above the content instead of shifting it down\n zIndex: overlayType === 'loadingOverlay' ? 5 // Should be above pinned columns, pinned rows, and detail panel\n : 4 // Should be above pinned columns and detail panel\n}));\nconst GridOverlayWrapperInner = styled('div', {\n name: 'MuiDataGrid',\n slot: 'OverlayWrapperInner',\n shouldForwardProp: prop => prop !== 'overlayType',\n overridesResolver: (props, styles) => styles.overlayWrapperInner\n})({});\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['overlayWrapper'],\n inner: ['overlayWrapperInner']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction GridOverlayWrapper(props) {\n var _viewportInnerSize$he, _viewportInnerSize$wi;\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const [viewportInnerSize, setViewportInnerSize] = React.useState(() => {\n var _apiRef$current$getRo, _apiRef$current$getRo2;\n return (_apiRef$current$getRo = (_apiRef$current$getRo2 = apiRef.current.getRootDimensions()) == null ? void 0 : _apiRef$current$getRo2.viewportInnerSize) != null ? _apiRef$current$getRo : null;\n });\n const handleViewportSizeChange = React.useCallback(() => {\n var _apiRef$current$getRo3, _apiRef$current$getRo4;\n setViewportInnerSize((_apiRef$current$getRo3 = (_apiRef$current$getRo4 = apiRef.current.getRootDimensions()) == null ? void 0 : _apiRef$current$getRo4.viewportInnerSize) != null ? _apiRef$current$getRo3 : null);\n }, [apiRef]);\n useEnhancedEffect(() => {\n return apiRef.current.subscribeEvent('viewportInnerSizeChange', handleViewportSizeChange);\n }, [apiRef, handleViewportSizeChange]);\n let height = (_viewportInnerSize$he = viewportInnerSize == null ? void 0 : viewportInnerSize.height) != null ? _viewportInnerSize$he : 0;\n if (rootProps.autoHeight && height === 0) {\n height = getMinimalContentHeight(apiRef, rootProps.rowHeight); // Give room to show the overlay when there no rows.\n }\n const classes = useUtilityClasses(_extends({}, props, {\n classes: rootProps.classes\n }));\n if (!viewportInnerSize) {\n return null;\n }\n return /*#__PURE__*/_jsx(GridOverlayWrapperRoot, {\n className: clsx(classes.root),\n overlayType: props.overlayType,\n children: /*#__PURE__*/_jsx(GridOverlayWrapperInner, _extends({\n className: clsx(classes.inner),\n style: {\n height,\n width: (_viewportInnerSize$wi = viewportInnerSize == null ? void 0 : viewportInnerSize.width) != null ? _viewportInnerSize$wi : 0\n }\n }, props))\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridOverlayWrapper.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n overlayType: PropTypes.string.isRequired\n} : void 0;\nexport function GridOverlays() {\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const totalRowCount = useGridSelector(apiRef, gridRowCountSelector);\n const visibleRowCount = useGridSelector(apiRef, gridExpandedRowCountSelector);\n const loading = useGridSelector(apiRef, gridRowsLoadingSelector);\n const showNoRowsOverlay = !loading && totalRowCount === 0;\n const showNoResultsOverlay = !loading && totalRowCount > 0 && visibleRowCount === 0;\n let overlay = null;\n let overlayType = '';\n if (showNoRowsOverlay) {\n var _rootProps$slotProps;\n overlay = /*#__PURE__*/_jsx(rootProps.slots.noRowsOverlay, _extends({}, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.noRowsOverlay));\n overlayType = 'noRowsOverlay';\n }\n if (showNoResultsOverlay) {\n var _rootProps$slotProps2;\n overlay = /*#__PURE__*/_jsx(rootProps.slots.noResultsOverlay, _extends({}, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.noResultsOverlay));\n overlayType = 'noResultsOverlay';\n }\n if (loading) {\n var _rootProps$slotProps3;\n overlay = /*#__PURE__*/_jsx(rootProps.slots.loadingOverlay, _extends({}, (_rootProps$slotProps3 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps3.loadingOverlay));\n overlayType = 'loadingOverlay';\n }\n if (overlay === null) {\n return null;\n }\n return /*#__PURE__*/_jsx(GridOverlayWrapper, {\n overlayType: overlayType,\n children: overlay\n });\n}","import * as React from 'react';\nimport { fastObjectShallowCompare } from './fastObjectShallowCompare';\nexport function fastMemo(component) {\n return /*#__PURE__*/React.memo(component, fastObjectShallowCompare);\n}","// Based on https://stackoverflow.com/a/59518678\nlet cachedSupportsPreventScroll;\nexport function doesSupportPreventScroll() {\n if (cachedSupportsPreventScroll === undefined) {\n document.createElement('div').focus({\n get preventScroll() {\n cachedSupportsPreventScroll = true;\n return false;\n }\n });\n }\n return cachedSupportsPreventScroll;\n}","var GridEditModes = /*#__PURE__*/function (GridEditModes) {\n GridEditModes[\"Cell\"] = \"cell\";\n GridEditModes[\"Row\"] = \"row\";\n return GridEditModes;\n}(GridEditModes || {});\nvar GridCellModes = /*#__PURE__*/function (GridCellModes) {\n GridCellModes[\"Edit\"] = \"edit\";\n GridCellModes[\"View\"] = \"view\";\n return GridCellModes;\n}(GridCellModes || {});\nvar GridRowModes = /*#__PURE__*/function (GridRowModes) {\n GridRowModes[\"Edit\"] = \"edit\";\n GridRowModes[\"View\"] = \"view\";\n return GridRowModes;\n}(GridRowModes || {});\nexport { GridEditModes, GridCellModes, GridRowModes };","/**\n * Filter item definition interface.\n * @demos\n * - [Custom filter operator](/x/react-data-grid/filtering/customization/#create-a-custom-operator)\n */\nvar GridLogicOperator = /*#__PURE__*/function (GridLogicOperator) {\n GridLogicOperator[\"And\"] = \"and\";\n GridLogicOperator[\"Or\"] = \"or\";\n return GridLogicOperator;\n}(GridLogicOperator || {});\nexport { GridLogicOperator };","/**\n * Params passed to `apiRef.current.setEditCellValue`.\n */\nvar GridCellEditStartReasons = /*#__PURE__*/function (GridCellEditStartReasons) {\n GridCellEditStartReasons[\"enterKeyDown\"] = \"enterKeyDown\";\n GridCellEditStartReasons[\"cellDoubleClick\"] = \"cellDoubleClick\";\n GridCellEditStartReasons[\"printableKeyDown\"] = \"printableKeyDown\";\n GridCellEditStartReasons[\"deleteKeyDown\"] = \"deleteKeyDown\";\n GridCellEditStartReasons[\"pasteKeyDown\"] = \"pasteKeyDown\";\n return GridCellEditStartReasons;\n}(GridCellEditStartReasons || {});\n/**\n * Params passed to the `cellEditStart` event.\n */\nvar GridCellEditStopReasons = /*#__PURE__*/function (GridCellEditStopReasons) {\n GridCellEditStopReasons[\"cellFocusOut\"] = \"cellFocusOut\";\n GridCellEditStopReasons[\"escapeKeyDown\"] = \"escapeKeyDown\";\n GridCellEditStopReasons[\"enterKeyDown\"] = \"enterKeyDown\";\n GridCellEditStopReasons[\"tabKeyDown\"] = \"tabKeyDown\";\n GridCellEditStopReasons[\"shiftTabKeyDown\"] = \"shiftTabKeyDown\";\n return GridCellEditStopReasons;\n}(GridCellEditStopReasons || {});\n/**\n * Params passed to the `cellEditStop event.\n */\n// https://github.com/mui/mui-x/pull/3738#discussion_r798504277\nexport { GridCellEditStartReasons, GridCellEditStopReasons };","/**\n * Object passed as parameter in the row callbacks.\n * @demos\n * - [Master detail](/x/react-data-grid/master-detail/)\n */\n/**\n * Object passed as parameter in the row `getRowClassName` callback prop.\n * @demos\n * - [Styling rows](/x/react-data-grid/style/#styling-rows)\n */\n/**\n * Object passed as parameter in the row `getRowHeight` callback prop.\n */\n/**\n * The getRowHeight return value.\n */\nvar GridRowEditStartReasons = /*#__PURE__*/function (GridRowEditStartReasons) {\n GridRowEditStartReasons[\"enterKeyDown\"] = \"enterKeyDown\";\n GridRowEditStartReasons[\"cellDoubleClick\"] = \"cellDoubleClick\";\n GridRowEditStartReasons[\"printableKeyDown\"] = \"printableKeyDown\";\n GridRowEditStartReasons[\"deleteKeyDown\"] = \"deleteKeyDown\";\n return GridRowEditStartReasons;\n}(GridRowEditStartReasons || {});\n/**\n * Params passed to the `rowEditStart` event.\n */\nvar GridRowEditStopReasons = /*#__PURE__*/function (GridRowEditStopReasons) {\n GridRowEditStopReasons[\"rowFocusOut\"] = \"rowFocusOut\";\n GridRowEditStopReasons[\"escapeKeyDown\"] = \"escapeKeyDown\";\n GridRowEditStopReasons[\"enterKeyDown\"] = \"enterKeyDown\";\n GridRowEditStopReasons[\"tabKeyDown\"] = \"tabKeyDown\";\n GridRowEditStopReasons[\"shiftTabKeyDown\"] = \"shiftTabKeyDown\";\n return GridRowEditStopReasons;\n}(GridRowEditStopReasons || {});\n/**\n * Object passed as parameter in the row `getRowSpacing` callback prop.\n * @demos\n * - [Row spacing](/x/react-data-grid/row-height/#row-spacing)\n */\n/**\n * The getRowSpacing return value.\n */\n// https://github.com/mui/mui-x/pull/3738#discussion_r798504277\nexport { GridRowEditStartReasons, GridRowEditStopReasons };","export function isLeaf(node) {\n return node.field !== undefined;\n}\n\n/**\n * A function used to process headerClassName params.\n */\n\n/**\n * The union type representing the [[GridColDef]] column header class type.\n */","import { gridClasses } from '../constants/gridClasses';\nexport function isOverflown(element) {\n return element.scrollHeight > element.clientHeight || element.scrollWidth > element.clientWidth;\n}\nexport function findParentElementFromClassName(elem, className) {\n return elem.closest(`.${className}`);\n}\nexport function getRowEl(cell) {\n if (!cell) {\n return null;\n }\n return findParentElementFromClassName(cell, gridClasses.row);\n}\n\n// TODO remove\nexport function isGridCellRoot(elem) {\n return elem != null && elem.classList.contains(gridClasses.cell);\n}\nexport function isGridHeaderCellRoot(elem) {\n return elem != null && elem.classList.contains(gridClasses.columnHeader);\n}\nfunction escapeOperandAttributeSelector(operand) {\n return operand.replace(/[\"\\\\]/g, '\\\\$&');\n}\nexport function getGridColumnHeaderElement(root, field) {\n return root.querySelector(`[role=\"columnheader\"][data-field=\"${escapeOperandAttributeSelector(field)}\"]`);\n}\nfunction getGridRowElementSelector(id) {\n return `.${gridClasses.row}[data-id=\"${escapeOperandAttributeSelector(String(id))}\"]`;\n}\nexport function getGridRowElement(root, id) {\n return root.querySelector(getGridRowElementSelector(id));\n}\nexport function getGridCellElement(root, {\n id,\n field\n}) {\n const rowSelector = getGridRowElementSelector(id);\n const cellSelector = `.${gridClasses.cell}[data-field=\"${escapeOperandAttributeSelector(field)}\"]`;\n const selector = `${rowSelector} ${cellSelector}`;\n return root.querySelector(selector);\n}\n\n// https://www.abeautifulsite.net/posts/finding-the-active-element-in-a-shadow-root/\nexport const getActiveElement = (root = document) => {\n const activeEl = root.activeElement;\n if (!activeEl) {\n return null;\n }\n if (activeEl.shadowRoot) {\n return getActiveElement(activeEl.shadowRoot);\n }\n return activeEl;\n};\nexport function isEventTargetInPortal(event) {\n if (\n // The target is not an element when triggered by a Select inside the cell\n // See https://github.com/mui/material-ui/issues/10534\n event.target.nodeType === 1 && !event.currentTarget.contains(event.target)) {\n return true;\n }\n return false;\n}","import * as React from 'react';\nexport function useGridApiMethod(privateApiRef, apiMethods, visibility) {\n const isFirstRender = React.useRef(true);\n React.useEffect(() => {\n isFirstRender.current = false;\n privateApiRef.current.register(visibility, apiMethods);\n }, [privateApiRef, visibility, apiMethods]);\n if (isFirstRender.current) {\n privateApiRef.current.register(visibility, apiMethods);\n }\n}","import * as React from 'react';\nimport { getGridCellElement, getGridColumnHeaderElement, getGridRowElement } from '../../../utils/domUtils';\nimport { GRID_ID_AUTOGENERATED } from './gridRowsUtils';\nimport { useGridApiMethod } from '../../utils/useGridApiMethod';\nimport { gridFocusCellSelector, gridTabIndexCellSelector } from '../focus/gridFocusStateSelector';\nexport class MissingRowIdError extends Error {}\n\n/**\n * @requires useGridColumns (method)\n * @requires useGridRows (method)\n * @requires useGridFocus (state)\n * @requires useGridEditing (method)\n * TODO: Impossible priority - useGridEditing also needs to be after useGridParamsApi\n * TODO: Impossible priority - useGridFocus also needs to be after useGridParamsApi\n */\nexport function useGridParamsApi(apiRef, props) {\n const {\n getRowId\n } = props;\n const getColumnHeaderParams = React.useCallback(field => ({\n field,\n colDef: apiRef.current.getColumn(field)\n }), [apiRef]);\n const getRowParams = React.useCallback(id => {\n const row = apiRef.current.getRow(id);\n if (!row) {\n throw new MissingRowIdError(`No row with id #${id} found`);\n }\n const params = {\n id,\n columns: apiRef.current.getAllColumns(),\n row\n };\n return params;\n }, [apiRef]);\n const getBaseCellParams = React.useCallback((id, field) => {\n const row = apiRef.current.getRow(id);\n const rowNode = apiRef.current.getRowNode(id);\n if (!row || !rowNode) {\n throw new MissingRowIdError(`No row with id #${id} found`);\n }\n const cellFocus = gridFocusCellSelector(apiRef);\n const cellTabIndex = gridTabIndexCellSelector(apiRef);\n const params = {\n id,\n field,\n row,\n rowNode,\n value: row[field],\n colDef: apiRef.current.getColumn(field),\n cellMode: apiRef.current.getCellMode(id, field),\n api: apiRef.current,\n hasFocus: cellFocus !== null && cellFocus.field === field && cellFocus.id === id,\n tabIndex: cellTabIndex && cellTabIndex.field === field && cellTabIndex.id === id ? 0 : -1\n };\n return params;\n }, [apiRef]);\n const getCellParams = React.useCallback((id, field) => {\n const colDef = apiRef.current.getColumn(field);\n const value = apiRef.current.getCellValue(id, field);\n const row = apiRef.current.getRow(id);\n const rowNode = apiRef.current.getRowNode(id);\n if (!row || !rowNode) {\n throw new MissingRowIdError(`No row with id #${id} found`);\n }\n const cellFocus = gridFocusCellSelector(apiRef);\n const cellTabIndex = gridTabIndexCellSelector(apiRef);\n const params = {\n id,\n field,\n row,\n rowNode,\n colDef,\n cellMode: apiRef.current.getCellMode(id, field),\n hasFocus: cellFocus !== null && cellFocus.field === field && cellFocus.id === id,\n tabIndex: cellTabIndex && cellTabIndex.field === field && cellTabIndex.id === id ? 0 : -1,\n value,\n formattedValue: value,\n isEditable: false\n };\n if (colDef && colDef.valueFormatter) {\n params.formattedValue = colDef.valueFormatter({\n id,\n field: params.field,\n value: params.value,\n api: apiRef.current\n });\n }\n params.isEditable = colDef && apiRef.current.isCellEditable(params);\n return params;\n }, [apiRef]);\n const getCellValue = React.useCallback((id, field) => {\n const colDef = apiRef.current.getColumn(field);\n if (!colDef || !colDef.valueGetter) {\n const rowModel = apiRef.current.getRow(id);\n if (!rowModel) {\n throw new MissingRowIdError(`No row with id #${id} found`);\n }\n return rowModel[field];\n }\n return colDef.valueGetter(getBaseCellParams(id, field));\n }, [apiRef, getBaseCellParams]);\n const getRowValue = React.useCallback((row, colDef) => {\n var _getRowId;\n const id = GRID_ID_AUTOGENERATED in row ? row[GRID_ID_AUTOGENERATED] : (_getRowId = getRowId == null ? void 0 : getRowId(row)) != null ? _getRowId : row.id;\n const field = colDef.field;\n if (!colDef || !colDef.valueGetter) {\n return row[field];\n }\n return colDef.valueGetter(getBaseCellParams(id, field));\n }, [getBaseCellParams, getRowId]);\n const getRowFormattedValue = React.useCallback((row, colDef) => {\n var _ref;\n const value = getRowValue(row, colDef);\n if (!colDef || !colDef.valueFormatter) {\n return value;\n }\n const id = (_ref = getRowId ? getRowId(row) : row.id) != null ? _ref : row[GRID_ID_AUTOGENERATED];\n const field = colDef.field;\n return colDef.valueFormatter({\n id,\n field,\n value,\n api: apiRef.current\n });\n }, [apiRef, getRowId, getRowValue]);\n const getColumnHeaderElement = React.useCallback(field => {\n if (!apiRef.current.rootElementRef.current) {\n return null;\n }\n return getGridColumnHeaderElement(apiRef.current.rootElementRef.current, field);\n }, [apiRef]);\n const getRowElement = React.useCallback(id => {\n if (!apiRef.current.rootElementRef.current) {\n return null;\n }\n return getGridRowElement(apiRef.current.rootElementRef.current, id);\n }, [apiRef]);\n const getCellElement = React.useCallback((id, field) => {\n if (!apiRef.current.rootElementRef.current) {\n return null;\n }\n return getGridCellElement(apiRef.current.rootElementRef.current, {\n id,\n field\n });\n }, [apiRef]);\n const paramsApi = {\n getCellValue,\n getCellParams,\n getCellElement,\n getRowValue,\n getRowFormattedValue,\n getRowParams,\n getRowElement,\n getColumnHeaderParams,\n getColumnHeaderElement\n };\n useGridApiMethod(apiRef, paramsApi, 'public');\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"changeReason\", \"unstable_updateValueOnRender\"],\n _excluded2 = [\"align\", \"children\", \"editCellState\", \"colIndex\", \"column\", \"cellMode\", \"field\", \"formattedValue\", \"hasFocus\", \"height\", \"isEditable\", \"isSelected\", \"rowId\", \"tabIndex\", \"style\", \"value\", \"width\", \"className\", \"showRightBorder\", \"extendRowFullWidth\", \"row\", \"colSpan\", \"disableDragEvents\", \"isNotVisible\", \"onClick\", \"onDoubleClick\", \"onMouseDown\", \"onMouseUp\", \"onMouseOver\", \"onKeyDown\", \"onKeyUp\", \"onDragEnter\", \"onDragOver\"],\n _excluded3 = [\"column\", \"rowId\", \"editCellState\", \"align\", \"children\", \"colIndex\", \"height\", \"width\", \"className\", \"showRightBorder\", \"extendRowFullWidth\", \"row\", \"colSpan\", \"disableDragEvents\", \"isNotVisible\", \"onClick\", \"onDoubleClick\", \"onMouseDown\", \"onMouseUp\", \"onMouseOver\", \"onKeyDown\", \"onKeyUp\", \"onDragEnter\", \"onDragOver\", \"style\"],\n _excluded4 = [\"changeReason\", \"unstable_updateValueOnRender\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_useForkRef as useForkRef, unstable_composeClasses as composeClasses, unstable_ownerDocument as ownerDocument, unstable_capitalize as capitalize } from '@mui/utils';\nimport { fastMemo } from '../../utils/fastMemo';\nimport { doesSupportPreventScroll } from '../../utils/doesSupportPreventScroll';\nimport { getDataGridUtilityClass, gridClasses } from '../../constants/gridClasses';\nimport { GridCellModes } from '../../models';\nimport { useGridSelector, objectShallowCompare } from '../../hooks/utils/useGridSelector';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { gridFocusCellSelector } from '../../hooks/features/focus/gridFocusStateSelector';\nimport { MissingRowIdError } from '../../hooks/features/rows/useGridParamsApi';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst EMPTY_CELL_PARAMS = {\n id: -1,\n field: '__unset__',\n row: {},\n rowNode: {\n id: -1,\n depth: 0,\n type: 'leaf',\n parent: -1,\n groupingKey: null\n },\n colDef: {\n type: 'string',\n field: '__unset__',\n computedWidth: 0\n },\n cellMode: GridCellModes.View,\n hasFocus: false,\n tabIndex: -1,\n value: null,\n formattedValue: '__unset__',\n isEditable: false,\n api: {}\n};\nconst useUtilityClasses = ownerState => {\n const {\n align,\n showRightBorder,\n isEditable,\n isSelected,\n isSelectionMode,\n classes\n } = ownerState;\n const slots = {\n root: ['cell', `cell--text${capitalize(align)}`, isEditable && 'cell--editable', isSelected && 'selected', showRightBorder && 'cell--withRightBorder', isSelectionMode && !isEditable && 'cell--selectionMode', 'withBorderColor'],\n content: ['cellContent']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nlet warnedOnce = false;\n\n// GridCellWrapper is a compatibility layer for the V6 cell slot. If we can use the more efficient\n// `GridCellV7`, we should. That component is a merge of `GridCellWrapper` and `GridCell`.\n// TODO(v7): Remove the wrapper & cellV6 and use the cellV7 exclusively.\n// TODO(v7): Removing the wrapper will break the docs performance visualization demo.\nconst GridCellWrapper = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n column,\n rowId,\n editCellState\n } = props;\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const field = column.field;\n const cellParamsWithAPI = useGridSelector(apiRef, () => {\n // This is required because `.getCellParams` tries to get the `state.rows.tree` entry\n // associated with `rowId`/`fieldId`, but this selector runs after the state has been\n // updated, while `rowId`/`fieldId` reference an entry in the old state.\n try {\n const cellParams = apiRef.current.getCellParams(rowId, field);\n const result = cellParams;\n result.api = apiRef.current;\n return result;\n } catch (e) {\n if (e instanceof MissingRowIdError) {\n return EMPTY_CELL_PARAMS;\n }\n throw e;\n }\n }, objectShallowCompare);\n const isSelected = useGridSelector(apiRef, () => apiRef.current.unstable_applyPipeProcessors('isCellSelected', false, {\n id: rowId,\n field\n }));\n if (cellParamsWithAPI === EMPTY_CELL_PARAMS) {\n return null;\n }\n const {\n cellMode,\n hasFocus,\n isEditable,\n value,\n formattedValue\n } = cellParamsWithAPI;\n const managesOwnFocus = column.type === 'actions';\n const tabIndex = (cellMode === 'view' || !isEditable) && !managesOwnFocus ? cellParamsWithAPI.tabIndex : -1;\n const {\n classes: rootClasses,\n getCellClassName\n } = rootProps;\n const classNames = apiRef.current.unstable_applyPipeProcessors('cellClassName', [], {\n id: rowId,\n field\n });\n if (column.cellClassName) {\n classNames.push(typeof column.cellClassName === 'function' ? column.cellClassName(cellParamsWithAPI) : column.cellClassName);\n }\n if (getCellClassName) {\n classNames.push(getCellClassName(cellParamsWithAPI));\n }\n let children;\n if (editCellState == null && column.renderCell) {\n children = column.renderCell(cellParamsWithAPI);\n classNames.push(gridClasses['cell--withRenderer']);\n classNames.push(rootClasses == null ? void 0 : rootClasses['cell--withRenderer']);\n }\n if (editCellState != null && column.renderEditCell) {\n const updatedRow = apiRef.current.getRowWithUpdatedValues(rowId, column.field);\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const editCellStateRest = _objectWithoutPropertiesLoose(editCellState, _excluded);\n const params = _extends({}, cellParamsWithAPI, {\n row: updatedRow\n }, editCellStateRest);\n children = column.renderEditCell(params);\n classNames.push(gridClasses['cell--editing']);\n classNames.push(rootClasses == null ? void 0 : rootClasses['cell--editing']);\n }\n const {\n slots\n } = rootProps;\n const CellComponent = slots.cell;\n const cellProps = _extends({}, props, {\n ref,\n field,\n formattedValue,\n hasFocus,\n isEditable,\n isSelected,\n value,\n cellMode,\n children,\n tabIndex,\n className: clsx(classNames)\n });\n return /*#__PURE__*/React.createElement(CellComponent, cellProps);\n});\nconst GridCell = /*#__PURE__*/React.forwardRef((props, ref) => {\n var _rootProps$experiment, _rootProps$experiment2;\n const {\n align,\n children: childrenProp,\n colIndex,\n column,\n cellMode,\n field,\n formattedValue,\n hasFocus,\n height,\n isEditable,\n isSelected,\n rowId,\n tabIndex,\n style: styleProp,\n value,\n width,\n className,\n showRightBorder,\n colSpan,\n disableDragEvents,\n isNotVisible,\n onClick,\n onDoubleClick,\n onMouseDown,\n onMouseUp,\n onMouseOver,\n onKeyDown,\n onKeyUp,\n onDragEnter,\n onDragOver\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded2);\n const valueToRender = formattedValue == null ? value : formattedValue;\n const cellRef = React.useRef(null);\n const handleRef = useForkRef(ref, cellRef);\n const focusElementRef = React.useRef(null);\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const ownerState = {\n align,\n showRightBorder,\n isEditable,\n classes: rootProps.classes,\n isSelected\n };\n const classes = useUtilityClasses(ownerState);\n const publishMouseUp = React.useCallback(eventName => event => {\n const params = apiRef.current.getCellParams(rowId, field || '');\n apiRef.current.publishEvent(eventName, params, event);\n if (onMouseUp) {\n onMouseUp(event);\n }\n }, [apiRef, field, onMouseUp, rowId]);\n const publishMouseDown = React.useCallback(eventName => event => {\n const params = apiRef.current.getCellParams(rowId, field || '');\n apiRef.current.publishEvent(eventName, params, event);\n if (onMouseDown) {\n onMouseDown(event);\n }\n }, [apiRef, field, onMouseDown, rowId]);\n const publish = React.useCallback((eventName, propHandler) => event => {\n // The row might have been deleted during the click\n if (!apiRef.current.getRow(rowId)) {\n return;\n }\n const params = apiRef.current.getCellParams(rowId, field || '');\n apiRef.current.publishEvent(eventName, params, event);\n if (propHandler) {\n propHandler(event);\n }\n }, [apiRef, field, rowId]);\n const style = React.useMemo(() => {\n if (isNotVisible) {\n return {\n padding: 0,\n opacity: 0,\n width: 0,\n border: 0\n };\n }\n const cellStyle = _extends({\n minWidth: width,\n maxWidth: width,\n minHeight: height,\n maxHeight: height === 'auto' ? 'none' : height\n }, styleProp);\n return cellStyle;\n }, [width, height, isNotVisible, styleProp]);\n React.useEffect(() => {\n if (!hasFocus || cellMode === GridCellModes.Edit) {\n return;\n }\n const doc = ownerDocument(apiRef.current.rootElementRef.current);\n if (cellRef.current && !cellRef.current.contains(doc.activeElement)) {\n const focusableElement = cellRef.current.querySelector('[tabindex=\"0\"]');\n const elementToFocus = focusElementRef.current || focusableElement || cellRef.current;\n if (doesSupportPreventScroll()) {\n elementToFocus.focus({\n preventScroll: true\n });\n } else {\n const scrollPosition = apiRef.current.getScrollPosition();\n elementToFocus.focus();\n apiRef.current.scroll(scrollPosition);\n }\n }\n }, [hasFocus, cellMode, apiRef]);\n let handleFocus = other.onFocus;\n if (process.env.NODE_ENV === 'test' && (_rootProps$experiment = rootProps.experimentalFeatures) != null && _rootProps$experiment.warnIfFocusStateIsNotSynced) {\n handleFocus = event => {\n const focusedCell = gridFocusCellSelector(apiRef);\n if ((focusedCell == null ? void 0 : focusedCell.id) === rowId && focusedCell.field === field) {\n if (typeof other.onFocus === 'function') {\n other.onFocus(event);\n }\n return;\n }\n if (!warnedOnce) {\n console.warn([`MUI: The cell with id=${rowId} and field=${field} received focus.`, `According to the state, the focus should be at id=${focusedCell == null ? void 0 : focusedCell.id}, field=${focusedCell == null ? void 0 : focusedCell.field}.`, \"Not syncing the state may cause unwanted behaviors since the `cellFocusIn` event won't be fired.\", 'Call `fireEvent.mouseUp` before the `fireEvent.click` to sync the focus with the state.'].join('\\n'));\n warnedOnce = true;\n }\n };\n }\n const managesOwnFocus = column.type === 'actions';\n let children = childrenProp;\n if (children === undefined) {\n const valueString = valueToRender == null ? void 0 : valueToRender.toString();\n children = /*#__PURE__*/_jsx(\"div\", {\n className: classes.content,\n title: valueString,\n role: \"presentation\",\n children: valueString\n });\n }\n if ( /*#__PURE__*/React.isValidElement(children) && managesOwnFocus) {\n children = /*#__PURE__*/React.cloneElement(children, {\n focusElementRef\n });\n }\n const draggableEventHandlers = disableDragEvents ? null : {\n onDragEnter: publish('cellDragEnter', onDragEnter),\n onDragOver: publish('cellDragOver', onDragOver)\n };\n const ariaV7 = (_rootProps$experiment2 = rootProps.experimentalFeatures) == null ? void 0 : _rootProps$experiment2.ariaV7;\n return (\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n _jsx(\"div\", _extends({\n ref: handleRef,\n className: clsx(className, classes.root),\n role: ariaV7 ? 'gridcell' : 'cell',\n \"data-field\": field,\n \"data-colindex\": colIndex,\n \"aria-colindex\": colIndex + 1,\n \"aria-colspan\": colSpan,\n style: style,\n tabIndex: tabIndex,\n onClick: publish('cellClick', onClick),\n onDoubleClick: publish('cellDoubleClick', onDoubleClick),\n onMouseOver: publish('cellMouseOver', onMouseOver),\n onMouseDown: publishMouseDown('cellMouseDown'),\n onMouseUp: publishMouseUp('cellMouseUp'),\n onKeyDown: publish('cellKeyDown', onKeyDown),\n onKeyUp: publish('cellKeyUp', onKeyUp)\n }, draggableEventHandlers, other, {\n onFocus: handleFocus,\n children: children\n }))\n );\n});\nconst MemoizedCellWrapper = fastMemo(GridCellWrapper);\nprocess.env.NODE_ENV !== \"production\" ? GridCellWrapper.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n align: PropTypes.oneOf(['center', 'left', 'right']),\n className: PropTypes.string,\n colIndex: PropTypes.number,\n colSpan: PropTypes.number,\n column: PropTypes.object,\n disableDragEvents: PropTypes.bool,\n height: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]),\n onClick: PropTypes.func,\n onDoubleClick: PropTypes.func,\n onDragEnter: PropTypes.func,\n onDragOver: PropTypes.func,\n onKeyDown: PropTypes.func,\n onMouseDown: PropTypes.func,\n onMouseUp: PropTypes.func,\n rowId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n showRightBorder: PropTypes.bool,\n width: PropTypes.number\n} : void 0;\nprocess.env.NODE_ENV !== \"production\" ? GridCell.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n align: PropTypes.oneOf(['center', 'left', 'right']),\n cellMode: PropTypes.oneOf(['edit', 'view']),\n children: PropTypes.node,\n className: PropTypes.string,\n colIndex: PropTypes.number,\n colSpan: PropTypes.number,\n column: PropTypes.object,\n disableDragEvents: PropTypes.bool,\n editCellState: PropTypes.shape({\n changeReason: PropTypes.oneOf(['debouncedSetEditCellValue', 'setEditCellValue']),\n isProcessingProps: PropTypes.bool,\n isValidating: PropTypes.bool,\n value: PropTypes.any\n }),\n isNotVisible: PropTypes.bool,\n height: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]),\n onClick: PropTypes.func,\n onDoubleClick: PropTypes.func,\n onDragEnter: PropTypes.func,\n onDragOver: PropTypes.func,\n onKeyDown: PropTypes.func,\n onMouseDown: PropTypes.func,\n onMouseUp: PropTypes.func,\n rowId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n showRightBorder: PropTypes.bool,\n width: PropTypes.number\n} : void 0;\nexport { MemoizedCellWrapper as GridCellWrapper, GridCell };\nconst GridCellV7 = /*#__PURE__*/React.forwardRef((props, ref) => {\n var _getActions, _ref, _rootProps$unstable_c, _rootProps$experiment3, _rootProps$experiment4;\n const {\n column,\n rowId,\n editCellState,\n align,\n colIndex,\n height,\n width,\n className,\n showRightBorder,\n colSpan,\n disableDragEvents,\n isNotVisible,\n onClick,\n onDoubleClick,\n onMouseDown,\n onMouseUp,\n onMouseOver,\n onKeyDown,\n onKeyUp,\n onDragEnter,\n onDragOver,\n style: styleProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded3);\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const field = column.field;\n const cellParamsWithAPI = useGridSelector(apiRef, () => {\n // This is required because `.getCellParams` tries to get the `state.rows.tree` entry\n // associated with `rowId`/`fieldId`, but this selector runs after the state has been\n // updated, while `rowId`/`fieldId` reference an entry in the old state.\n try {\n const cellParams = apiRef.current.getCellParams(rowId, field);\n const result = cellParams;\n result.api = apiRef.current;\n return result;\n } catch (e) {\n if (e instanceof MissingRowIdError) {\n return EMPTY_CELL_PARAMS;\n }\n throw e;\n }\n }, objectShallowCompare);\n const isSelected = useGridSelector(apiRef, () => apiRef.current.unstable_applyPipeProcessors('isCellSelected', false, {\n id: rowId,\n field\n }));\n const {\n cellMode,\n hasFocus,\n isEditable,\n value,\n formattedValue\n } = cellParamsWithAPI;\n const canManageOwnFocus = column.type === 'actions' && ((_getActions = (_ref = column).getActions) == null ? void 0 : _getActions.call(_ref, apiRef.current.getRowParams(rowId)).some(action => !action.props.disabled));\n const tabIndex = (cellMode === 'view' || !isEditable) && !canManageOwnFocus ? cellParamsWithAPI.tabIndex : -1;\n const {\n classes: rootClasses,\n getCellClassName\n } = rootProps;\n const classNames = apiRef.current.unstable_applyPipeProcessors('cellClassName', [], {\n id: rowId,\n field\n });\n if (column.cellClassName) {\n classNames.push(typeof column.cellClassName === 'function' ? column.cellClassName(cellParamsWithAPI) : column.cellClassName);\n }\n if (getCellClassName) {\n classNames.push(getCellClassName(cellParamsWithAPI));\n }\n const valueToRender = formattedValue == null ? value : formattedValue;\n const cellRef = React.useRef(null);\n const handleRef = useForkRef(ref, cellRef);\n const focusElementRef = React.useRef(null);\n // @ts-expect-error To access `unstable_cellSelection` flag as it's a `premium` feature\n const isSelectionMode = (_rootProps$unstable_c = rootProps.unstable_cellSelection) != null ? _rootProps$unstable_c : false;\n const ownerState = {\n align,\n showRightBorder,\n isEditable,\n classes: rootProps.classes,\n isSelected,\n isSelectionMode\n };\n const classes = useUtilityClasses(ownerState);\n const publishMouseUp = React.useCallback(eventName => event => {\n const params = apiRef.current.getCellParams(rowId, field || '');\n apiRef.current.publishEvent(eventName, params, event);\n if (onMouseUp) {\n onMouseUp(event);\n }\n }, [apiRef, field, onMouseUp, rowId]);\n const publishMouseDown = React.useCallback(eventName => event => {\n const params = apiRef.current.getCellParams(rowId, field || '');\n apiRef.current.publishEvent(eventName, params, event);\n if (onMouseDown) {\n onMouseDown(event);\n }\n }, [apiRef, field, onMouseDown, rowId]);\n const publish = React.useCallback((eventName, propHandler) => event => {\n // The row might have been deleted during the click\n if (!apiRef.current.getRow(rowId)) {\n return;\n }\n const params = apiRef.current.getCellParams(rowId, field || '');\n apiRef.current.publishEvent(eventName, params, event);\n if (propHandler) {\n propHandler(event);\n }\n }, [apiRef, field, rowId]);\n const style = React.useMemo(() => {\n if (isNotVisible) {\n return _extends({\n padding: 0,\n opacity: 0,\n width: 0,\n border: 0\n }, styleProp);\n }\n const cellStyle = _extends({\n minWidth: width,\n maxWidth: width,\n minHeight: height,\n maxHeight: height === 'auto' ? 'none' : height\n }, styleProp);\n return cellStyle;\n }, [width, height, isNotVisible, styleProp]);\n React.useEffect(() => {\n if (!hasFocus || cellMode === GridCellModes.Edit) {\n return;\n }\n const doc = ownerDocument(apiRef.current.rootElementRef.current);\n if (cellRef.current && !cellRef.current.contains(doc.activeElement)) {\n const focusableElement = cellRef.current.querySelector('[tabindex=\"0\"]');\n const elementToFocus = focusElementRef.current || focusableElement || cellRef.current;\n if (doesSupportPreventScroll()) {\n elementToFocus.focus({\n preventScroll: true\n });\n } else {\n const scrollPosition = apiRef.current.getScrollPosition();\n elementToFocus.focus();\n apiRef.current.scroll(scrollPosition);\n }\n }\n }, [hasFocus, cellMode, apiRef]);\n if (cellParamsWithAPI === EMPTY_CELL_PARAMS) {\n return null;\n }\n let handleFocus = other.onFocus;\n if (process.env.NODE_ENV === 'test' && (_rootProps$experiment3 = rootProps.experimentalFeatures) != null && _rootProps$experiment3.warnIfFocusStateIsNotSynced) {\n handleFocus = event => {\n const focusedCell = gridFocusCellSelector(apiRef);\n if ((focusedCell == null ? void 0 : focusedCell.id) === rowId && focusedCell.field === field) {\n if (typeof other.onFocus === 'function') {\n other.onFocus(event);\n }\n return;\n }\n if (!warnedOnce) {\n console.warn([`MUI: The cell with id=${rowId} and field=${field} received focus.`, `According to the state, the focus should be at id=${focusedCell == null ? void 0 : focusedCell.id}, field=${focusedCell == null ? void 0 : focusedCell.field}.`, \"Not syncing the state may cause unwanted behaviors since the `cellFocusIn` event won't be fired.\", 'Call `fireEvent.mouseUp` before the `fireEvent.click` to sync the focus with the state.'].join('\\n'));\n warnedOnce = true;\n }\n };\n }\n let children;\n if (editCellState == null && column.renderCell) {\n children = column.renderCell(cellParamsWithAPI);\n classNames.push(gridClasses['cell--withRenderer']);\n classNames.push(rootClasses == null ? void 0 : rootClasses['cell--withRenderer']);\n }\n if (editCellState != null && column.renderEditCell) {\n const updatedRow = apiRef.current.getRowWithUpdatedValues(rowId, column.field);\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const editCellStateRest = _objectWithoutPropertiesLoose(editCellState, _excluded4);\n const params = _extends({}, cellParamsWithAPI, {\n row: updatedRow\n }, editCellStateRest);\n children = column.renderEditCell(params);\n classNames.push(gridClasses['cell--editing']);\n classNames.push(rootClasses == null ? void 0 : rootClasses['cell--editing']);\n }\n if (children === undefined) {\n const valueString = valueToRender == null ? void 0 : valueToRender.toString();\n children = /*#__PURE__*/_jsx(\"div\", {\n className: classes.content,\n title: valueString,\n role: \"presentation\",\n children: valueString\n });\n }\n if ( /*#__PURE__*/React.isValidElement(children) && canManageOwnFocus) {\n children = /*#__PURE__*/React.cloneElement(children, {\n focusElementRef\n });\n }\n const draggableEventHandlers = disableDragEvents ? null : {\n onDragEnter: publish('cellDragEnter', onDragEnter),\n onDragOver: publish('cellDragOver', onDragOver)\n };\n const ariaV7 = (_rootProps$experiment4 = rootProps.experimentalFeatures) == null ? void 0 : _rootProps$experiment4.ariaV7;\n return (\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n _jsx(\"div\", _extends({\n ref: handleRef,\n className: clsx(className, classNames, classes.root),\n role: ariaV7 ? 'gridcell' : 'cell',\n \"data-field\": field,\n \"data-colindex\": colIndex,\n \"aria-colindex\": colIndex + 1,\n \"aria-colspan\": colSpan,\n style: style,\n tabIndex: tabIndex,\n onClick: publish('cellClick', onClick),\n onDoubleClick: publish('cellDoubleClick', onDoubleClick),\n onMouseOver: publish('cellMouseOver', onMouseOver),\n onMouseDown: publishMouseDown('cellMouseDown'),\n onMouseUp: publishMouseUp('cellMouseUp'),\n onKeyDown: publish('cellKeyDown', onKeyDown),\n onKeyUp: publish('cellKeyUp', onKeyUp)\n }, draggableEventHandlers, other, {\n onFocus: handleFocus,\n children: children\n }))\n );\n});\nprocess.env.NODE_ENV !== \"production\" ? GridCellV7.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n align: PropTypes.oneOf(['center', 'left', 'right']).isRequired,\n className: PropTypes.string,\n colIndex: PropTypes.number.isRequired,\n colSpan: PropTypes.number,\n column: PropTypes.object.isRequired,\n disableDragEvents: PropTypes.bool,\n editCellState: PropTypes.shape({\n changeReason: PropTypes.oneOf(['debouncedSetEditCellValue', 'setEditCellValue']),\n isProcessingProps: PropTypes.bool,\n isValidating: PropTypes.bool,\n value: PropTypes.any\n }),\n height: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]).isRequired,\n isNotVisible: PropTypes.bool,\n onClick: PropTypes.func,\n onDoubleClick: PropTypes.func,\n onDragEnter: PropTypes.func,\n onDragOver: PropTypes.func,\n onKeyDown: PropTypes.func,\n onMouseDown: PropTypes.func,\n onMouseUp: PropTypes.func,\n rowId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n showRightBorder: PropTypes.bool,\n width: PropTypes.number.isRequired\n} : void 0;\nconst MemoizedGridCellV7 = fastMemo(GridCellV7);\nexport { MemoizedGridCellV7 as GridCellV7 };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"id\", \"value\", \"formattedValue\", \"api\", \"field\", \"row\", \"rowNode\", \"colDef\", \"cellMode\", \"isEditable\", \"hasFocus\", \"tabIndex\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { isAutoGeneratedRow } from '../../hooks/features/rows/gridRowsUtils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['booleanCell']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction GridBooleanCellRaw(props) {\n const {\n value\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const ownerState = {\n classes: rootProps.classes\n };\n const classes = useUtilityClasses(ownerState);\n const Icon = React.useMemo(() => value ? rootProps.slots.booleanCellTrueIcon : rootProps.slots.booleanCellFalseIcon, [rootProps.slots.booleanCellFalseIcon, rootProps.slots.booleanCellTrueIcon, value]);\n return /*#__PURE__*/_jsx(Icon, _extends({\n fontSize: \"small\",\n className: classes.root,\n titleAccess: apiRef.current.getLocaleText(value ? 'booleanCellTrueLabel' : 'booleanCellFalseLabel'),\n \"data-value\": Boolean(value)\n }, other));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridBooleanCellRaw.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * GridApi that let you manipulate the grid.\n */\n api: PropTypes.object.isRequired,\n /**\n * The mode of the cell.\n */\n cellMode: PropTypes.oneOf(['edit', 'view']).isRequired,\n /**\n * The column of the row that the current cell belongs to.\n */\n colDef: PropTypes.object.isRequired,\n /**\n * The column field of the cell that triggered the event.\n */\n field: PropTypes.string.isRequired,\n /**\n * A ref allowing to set imperative focus.\n * It can be passed to the element that should receive focus.\n * @ignore - do not document.\n */\n focusElementRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.shape({\n focus: PropTypes.func.isRequired\n })\n })]),\n /**\n * The cell value formatted with the column valueFormatter.\n */\n formattedValue: PropTypes.any,\n /**\n * If true, the cell is the active element.\n */\n hasFocus: PropTypes.bool.isRequired,\n /**\n * The grid row id.\n */\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n /**\n * If true, the cell is editable.\n */\n isEditable: PropTypes.bool,\n /**\n * The row model of the row that the current cell belongs to.\n */\n row: PropTypes.any.isRequired,\n /**\n * The node of the row that the current cell belongs to.\n */\n rowNode: PropTypes.object.isRequired,\n /**\n * the tabIndex value.\n */\n tabIndex: PropTypes.oneOf([-1, 0]).isRequired,\n /**\n * The cell value.\n * If the column has `valueGetter`, use `params.row` to directly access the fields.\n */\n value: PropTypes.any\n} : void 0;\nconst GridBooleanCell = /*#__PURE__*/React.memo(GridBooleanCellRaw);\nexport { GridBooleanCell };\nexport const renderBooleanCell = params => {\n if (isAutoGeneratedRow(params.rowNode)) {\n return '';\n }\n return /*#__PURE__*/_jsx(GridBooleanCell, _extends({}, params));\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"id\", \"value\", \"formattedValue\", \"api\", \"field\", \"row\", \"rowNode\", \"colDef\", \"cellMode\", \"isEditable\", \"tabIndex\", \"className\", \"hasFocus\", \"isValidating\", \"isProcessingProps\", \"error\", \"onValueChange\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses, unstable_useId as useId, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['editBooleanCell']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction GridEditBooleanCell(props) {\n var _rootProps$slotProps;\n const {\n id: idProp,\n value,\n field,\n className,\n hasFocus,\n onValueChange\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridApiContext();\n const inputRef = React.useRef(null);\n const id = useId();\n const [valueState, setValueState] = React.useState(value);\n const rootProps = useGridRootProps();\n const ownerState = {\n classes: rootProps.classes\n };\n const classes = useUtilityClasses(ownerState);\n const handleChange = React.useCallback(async event => {\n const newValue = event.target.checked;\n if (onValueChange) {\n await onValueChange(event, newValue);\n }\n setValueState(newValue);\n await apiRef.current.setEditCellValue({\n id: idProp,\n field,\n value: newValue\n }, event);\n }, [apiRef, field, idProp, onValueChange]);\n React.useEffect(() => {\n setValueState(value);\n }, [value]);\n useEnhancedEffect(() => {\n if (hasFocus) {\n inputRef.current.focus();\n }\n }, [hasFocus]);\n return /*#__PURE__*/_jsx(\"label\", _extends({\n htmlFor: id,\n className: clsx(classes.root, className)\n }, other, {\n children: /*#__PURE__*/_jsx(rootProps.slots.baseCheckbox, _extends({\n id: id,\n inputRef: inputRef,\n checked: Boolean(valueState),\n onChange: handleChange,\n size: \"small\"\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseCheckbox))\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridEditBooleanCell.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * GridApi that let you manipulate the grid.\n */\n api: PropTypes.object.isRequired,\n /**\n * The mode of the cell.\n */\n cellMode: PropTypes.oneOf(['edit', 'view']).isRequired,\n changeReason: PropTypes.oneOf(['debouncedSetEditCellValue', 'setEditCellValue']),\n /**\n * The column of the row that the current cell belongs to.\n */\n colDef: PropTypes.object.isRequired,\n /**\n * The column field of the cell that triggered the event.\n */\n field: PropTypes.string.isRequired,\n /**\n * The cell value formatted with the column valueFormatter.\n */\n formattedValue: PropTypes.any,\n /**\n * If true, the cell is the active element.\n */\n hasFocus: PropTypes.bool.isRequired,\n /**\n * The grid row id.\n */\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n /**\n * If true, the cell is editable.\n */\n isEditable: PropTypes.bool,\n isProcessingProps: PropTypes.bool,\n isValidating: PropTypes.bool,\n /**\n * Callback called when the value is changed by the user.\n * @param {React.ChangeEvent} event The event source of the callback.\n * @param {boolean} newValue The value that is going to be passed to `apiRef.current.setEditCellValue`.\n * @returns {Promise | void} A promise to be awaited before calling `apiRef.current.setEditCellValue`\n */\n onValueChange: PropTypes.func,\n /**\n * The row model of the row that the current cell belongs to.\n */\n row: PropTypes.any.isRequired,\n /**\n * The node of the row that the current cell belongs to.\n */\n rowNode: PropTypes.object.isRequired,\n /**\n * the tabIndex value.\n */\n tabIndex: PropTypes.oneOf([-1, 0]).isRequired,\n /**\n * The cell value.\n * If the column has `valueGetter`, use `params.row` to directly access the fields.\n */\n value: PropTypes.any\n} : void 0;\nexport { GridEditBooleanCell };\nexport const renderEditBooleanCell = params => /*#__PURE__*/_jsx(GridEditBooleanCell, _extends({}, params));","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"id\", \"value\", \"formattedValue\", \"api\", \"field\", \"row\", \"rowNode\", \"colDef\", \"cellMode\", \"isEditable\", \"tabIndex\", \"hasFocus\", \"inputProps\", \"isValidating\", \"isProcessingProps\", \"onValueChange\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport InputBase from '@mui/material/InputBase';\nimport { styled } from '@mui/material/styles';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst StyledInputBase = styled(InputBase)({\n fontSize: 'inherit'\n});\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['editInputCell']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction GridEditDateCell(props) {\n const {\n id,\n value: valueProp,\n field,\n colDef,\n hasFocus,\n inputProps,\n onValueChange\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const isDateTime = colDef.type === 'dateTime';\n const apiRef = useGridApiContext();\n const inputRef = React.useRef();\n const valueTransformed = React.useMemo(() => {\n let parsedDate;\n if (valueProp == null) {\n parsedDate = null;\n } else if (valueProp instanceof Date) {\n parsedDate = valueProp;\n } else {\n parsedDate = new Date((valueProp != null ? valueProp : '').toString());\n }\n let formattedDate;\n if (parsedDate == null || Number.isNaN(parsedDate.getTime())) {\n formattedDate = '';\n } else {\n const localDate = new Date(parsedDate.getTime() - parsedDate.getTimezoneOffset() * 60 * 1000);\n formattedDate = localDate.toISOString().substr(0, isDateTime ? 16 : 10);\n }\n return {\n parsed: parsedDate,\n formatted: formattedDate\n };\n }, [valueProp, isDateTime]);\n const [valueState, setValueState] = React.useState(valueTransformed);\n const rootProps = useGridRootProps();\n const ownerState = {\n classes: rootProps.classes\n };\n const classes = useUtilityClasses(ownerState);\n const parseValueToDate = React.useCallback(value => {\n if (value === '') {\n return null;\n }\n const [date, time] = value.split('T');\n const [year, month, day] = date.split('-');\n const parsedDate = new Date();\n parsedDate.setFullYear(Number(year), Number(month) - 1, Number(day));\n parsedDate.setHours(0, 0, 0, 0);\n if (time) {\n const [hours, minutes] = time.split(':');\n parsedDate.setHours(Number(hours), Number(minutes), 0, 0);\n }\n return parsedDate;\n }, []);\n const handleChange = React.useCallback(async event => {\n const newFormattedDate = event.target.value;\n const newParsedDate = parseValueToDate(newFormattedDate);\n if (onValueChange) {\n await onValueChange(event, newParsedDate);\n }\n setValueState({\n parsed: newParsedDate,\n formatted: newFormattedDate\n });\n apiRef.current.setEditCellValue({\n id,\n field,\n value: newParsedDate\n }, event);\n }, [apiRef, field, id, onValueChange, parseValueToDate]);\n React.useEffect(() => {\n setValueState(state => {\n var _valueTransformed$par, _state$parsed;\n if (valueTransformed.parsed !== state.parsed && ((_valueTransformed$par = valueTransformed.parsed) == null ? void 0 : _valueTransformed$par.getTime()) !== ((_state$parsed = state.parsed) == null ? void 0 : _state$parsed.getTime())) {\n return valueTransformed;\n }\n return state;\n });\n }, [valueTransformed]);\n useEnhancedEffect(() => {\n if (hasFocus) {\n inputRef.current.focus();\n }\n }, [hasFocus]);\n return /*#__PURE__*/_jsx(StyledInputBase, _extends({\n inputRef: inputRef,\n fullWidth: true,\n className: classes.root,\n type: isDateTime ? 'datetime-local' : 'date',\n inputProps: _extends({\n max: isDateTime ? '9999-12-31T23:59' : '9999-12-31'\n }, inputProps),\n value: valueState.formatted,\n onChange: handleChange\n }, other));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridEditDateCell.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * GridApi that let you manipulate the grid.\n */\n api: PropTypes.object.isRequired,\n /**\n * The mode of the cell.\n */\n cellMode: PropTypes.oneOf(['edit', 'view']).isRequired,\n changeReason: PropTypes.oneOf(['debouncedSetEditCellValue', 'setEditCellValue']),\n /**\n * The column of the row that the current cell belongs to.\n */\n colDef: PropTypes.object.isRequired,\n /**\n * The column field of the cell that triggered the event.\n */\n field: PropTypes.string.isRequired,\n /**\n * The cell value formatted with the column valueFormatter.\n */\n formattedValue: PropTypes.any,\n /**\n * If true, the cell is the active element.\n */\n hasFocus: PropTypes.bool.isRequired,\n /**\n * The grid row id.\n */\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n /**\n * If true, the cell is editable.\n */\n isEditable: PropTypes.bool,\n isProcessingProps: PropTypes.bool,\n isValidating: PropTypes.bool,\n /**\n * Callback called when the value is changed by the user.\n * @param {React.ChangeEvent} event The event source of the callback.\n * @param {Date | null} newValue The value that is going to be passed to `apiRef.current.setEditCellValue`.\n * @returns {Promise | void} A promise to be awaited before calling `apiRef.current.setEditCellValue`\n */\n onValueChange: PropTypes.func,\n /**\n * The row model of the row that the current cell belongs to.\n */\n row: PropTypes.any.isRequired,\n /**\n * The node of the row that the current cell belongs to.\n */\n rowNode: PropTypes.object.isRequired,\n /**\n * the tabIndex value.\n */\n tabIndex: PropTypes.oneOf([-1, 0]).isRequired,\n /**\n * The cell value.\n * If the column has `valueGetter`, use `params.row` to directly access the fields.\n */\n value: PropTypes.any\n} : void 0;\nexport { GridEditDateCell };\nexport const renderEditDateCell = params => /*#__PURE__*/_jsx(GridEditDateCell, _extends({}, params));","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"id\", \"value\", \"formattedValue\", \"api\", \"field\", \"row\", \"rowNode\", \"colDef\", \"cellMode\", \"isEditable\", \"tabIndex\", \"hasFocus\", \"isValidating\", \"debounceMs\", \"isProcessingProps\", \"onValueChange\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { styled } from '@mui/material/styles';\nimport InputBase from '@mui/material/InputBase';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['editInputCell']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridEditInputCellRoot = styled(InputBase, {\n name: 'MuiDataGrid',\n slot: 'EditInputCell',\n overridesResolver: (props, styles) => styles.editInputCell\n})(({\n theme\n}) => _extends({}, theme.typography.body2, {\n padding: '1px 0',\n '& input': {\n padding: '0 16px',\n height: '100%'\n }\n}));\nconst GridEditInputCell = /*#__PURE__*/React.forwardRef((props, ref) => {\n const rootProps = useGridRootProps();\n const {\n id,\n value,\n field,\n colDef,\n hasFocus,\n debounceMs = 200,\n isProcessingProps,\n onValueChange\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridApiContext();\n const inputRef = React.useRef();\n const [valueState, setValueState] = React.useState(value);\n const classes = useUtilityClasses(rootProps);\n const handleChange = React.useCallback(async event => {\n const newValue = event.target.value;\n if (onValueChange) {\n await onValueChange(event, newValue);\n }\n const column = apiRef.current.getColumn(field);\n let parsedValue = newValue;\n if (column.valueParser) {\n parsedValue = column.valueParser(newValue, apiRef.current.getCellParams(id, field));\n }\n setValueState(parsedValue);\n apiRef.current.setEditCellValue({\n id,\n field,\n value: parsedValue,\n debounceMs,\n unstable_skipValueParser: true\n }, event);\n }, [apiRef, debounceMs, field, id, onValueChange]);\n const meta = apiRef.current.unstable_getEditCellMeta(id, field);\n React.useEffect(() => {\n if ((meta == null ? void 0 : meta.changeReason) !== 'debouncedSetEditCellValue') {\n setValueState(value);\n }\n }, [meta, value]);\n useEnhancedEffect(() => {\n if (hasFocus) {\n inputRef.current.focus();\n }\n }, [hasFocus]);\n return /*#__PURE__*/_jsx(GridEditInputCellRoot, _extends({\n ref: ref,\n inputRef: inputRef,\n className: classes.root,\n ownerState: rootProps,\n fullWidth: true,\n type: colDef.type === 'number' ? colDef.type : 'text',\n value: valueState != null ? valueState : '',\n onChange: handleChange,\n endAdornment: isProcessingProps ? /*#__PURE__*/_jsx(rootProps.slots.loadIcon, {\n fontSize: \"small\",\n color: \"action\"\n }) : undefined\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridEditInputCell.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * GridApi that let you manipulate the grid.\n */\n api: PropTypes.object.isRequired,\n /**\n * The mode of the cell.\n */\n cellMode: PropTypes.oneOf(['edit', 'view']).isRequired,\n changeReason: PropTypes.oneOf(['debouncedSetEditCellValue', 'setEditCellValue']),\n /**\n * The column of the row that the current cell belongs to.\n */\n colDef: PropTypes.object.isRequired,\n debounceMs: PropTypes.number,\n /**\n * The column field of the cell that triggered the event.\n */\n field: PropTypes.string.isRequired,\n /**\n * The cell value formatted with the column valueFormatter.\n */\n formattedValue: PropTypes.any,\n /**\n * If true, the cell is the active element.\n */\n hasFocus: PropTypes.bool.isRequired,\n /**\n * The grid row id.\n */\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n /**\n * If true, the cell is editable.\n */\n isEditable: PropTypes.bool,\n isProcessingProps: PropTypes.bool,\n isValidating: PropTypes.bool,\n /**\n * Callback called when the value is changed by the user.\n * @param {React.ChangeEvent} event The event source of the callback.\n * @param {Date | null} newValue The value that is going to be passed to `apiRef.current.setEditCellValue`.\n * @returns {Promise | void} A promise to be awaited before calling `apiRef.current.setEditCellValue`\n */\n onValueChange: PropTypes.func,\n /**\n * The row model of the row that the current cell belongs to.\n */\n row: PropTypes.any.isRequired,\n /**\n * The node of the row that the current cell belongs to.\n */\n rowNode: PropTypes.object.isRequired,\n /**\n * the tabIndex value.\n */\n tabIndex: PropTypes.oneOf([-1, 0]).isRequired,\n /**\n * The cell value.\n * If the column has `valueGetter`, use `params.row` to directly access the fields.\n */\n value: PropTypes.any\n} : void 0;\nexport { GridEditInputCell };\nexport const renderEditInputCell = params => /*#__PURE__*/_jsx(GridEditInputCell, _extends({}, params));","export const isEscapeKey = key => key === 'Escape'; // TODO remove\nexport const isEnterKey = key => key === 'Enter'; // TODO remove\nexport const isTabKey = key => key === 'Tab'; // TODO remove\n\nexport const isSpaceKey = key => key === ' ';\nexport const isArrowKeys = key => key.indexOf('Arrow') === 0;\nexport const isHomeOrEndKeys = key => key === 'Home' || key === 'End';\nexport const isPageKeys = key => key.indexOf('Page') === 0;\nexport const isDeleteKeys = key => key === 'Delete' || key === 'Backspace';\n\n// Non printable keys have a name, e.g. \"ArrowRight\", see the whole list:\n// https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values\n// So event.key.length === 1 is often enough.\n//\n// However, we also need to ignore shortcuts, for example: select all:\n// - Windows: Ctrl+A, event.ctrlKey is true\n// - macOS: ⌘ Command+A, event.metaKey is true\nexport function isPrintableKey(event) {\n return event.key.length === 1 && !event.ctrlKey && !event.metaKey;\n}\nexport const GRID_MULTIPLE_SELECTION_KEYS = ['Meta', 'Control', 'Shift'];\nexport const GRID_CELL_EXIT_EDIT_MODE_KEYS = ['Enter', 'Escape', 'Tab'];\nexport const GRID_CELL_EDIT_COMMIT_KEYS = ['Enter', 'Tab'];\nexport const isMultipleKey = key => GRID_MULTIPLE_SELECTION_KEYS.indexOf(key) > -1;\nexport const isCellEnterEditModeKeys = event => isEnterKey(event.key) || isDeleteKeys(event.key) || isPrintableKey(event);\nexport const isCellExitEditModeKeys = key => GRID_CELL_EXIT_EDIT_MODE_KEYS.indexOf(key) > -1;\nexport const isCellEditCommitKeys = key => GRID_CELL_EDIT_COMMIT_KEYS.indexOf(key) > -1;\nexport const isNavigationKey = key => isHomeOrEndKeys(key) || isArrowKeys(key) || isPageKeys(key) || isSpaceKey(key);\nexport const isKeyboardEvent = event => !!event.key;\nexport const isHideMenuKey = key => isTabKey(key) || isEscapeKey(key);","export function isSingleSelectColDef(colDef) {\n return (colDef == null ? void 0 : colDef.type) === 'singleSelect';\n}\nexport function getValueFromValueOptions(value, valueOptions, getOptionValue) {\n if (valueOptions === undefined) {\n return undefined;\n }\n const result = valueOptions.find(option => {\n const optionValue = getOptionValue(option);\n return String(optionValue) === String(value);\n });\n return getOptionValue(result);\n}\nexport const getLabelFromValueOption = valueOption => {\n const label = typeof valueOption === 'object' ? valueOption.label : valueOption;\n return label != null ? String(label) : '';\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"id\", \"value\", \"formattedValue\", \"api\", \"field\", \"row\", \"rowNode\", \"colDef\", \"cellMode\", \"isEditable\", \"tabIndex\", \"className\", \"hasFocus\", \"isValidating\", \"isProcessingProps\", \"error\", \"onValueChange\", \"initialOpen\", \"getOptionLabel\", \"getOptionValue\"],\n _excluded2 = [\"MenuProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { GridCellEditStopReasons } from '../../models/params/gridEditCellParams';\nimport { isEscapeKey } from '../../utils/keyboardUtils';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { GridEditModes } from '../../models/gridEditRowModel';\nimport { getValueFromValueOptions, isSingleSelectColDef } from '../panel/filterPanel/filterPanelUtils';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { createElement as _createElement } from \"react\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction isKeyboardEvent(event) {\n return !!event.key;\n}\nfunction GridEditSingleSelectCell(props) {\n var _rootProps$slotProps, _baseSelectProps$nati, _rootProps$slotProps2;\n const rootProps = useGridRootProps();\n const {\n id,\n value: valueProp,\n field,\n row,\n colDef,\n hasFocus,\n error,\n onValueChange,\n initialOpen = rootProps.editMode === GridEditModes.Cell,\n getOptionLabel: getOptionLabelProp,\n getOptionValue: getOptionValueProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridApiContext();\n const ref = React.useRef();\n const inputRef = React.useRef();\n const [open, setOpen] = React.useState(initialOpen);\n const baseSelectProps = ((_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseSelect) || {};\n const isSelectNative = (_baseSelectProps$nati = baseSelectProps.native) != null ? _baseSelectProps$nati : false;\n const _ref = ((_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseSelect) || {},\n {\n MenuProps\n } = _ref,\n otherBaseSelectProps = _objectWithoutPropertiesLoose(_ref, _excluded2);\n useEnhancedEffect(() => {\n if (hasFocus) {\n var _inputRef$current;\n (_inputRef$current = inputRef.current) == null || _inputRef$current.focus();\n }\n }, [hasFocus]);\n if (!isSingleSelectColDef(colDef)) {\n return null;\n }\n let valueOptions;\n if (typeof (colDef == null ? void 0 : colDef.valueOptions) === 'function') {\n valueOptions = colDef == null ? void 0 : colDef.valueOptions({\n id,\n row,\n field\n });\n } else {\n valueOptions = colDef == null ? void 0 : colDef.valueOptions;\n }\n if (!valueOptions) {\n return null;\n }\n const getOptionValue = getOptionValueProp || colDef.getOptionValue;\n const getOptionLabel = getOptionLabelProp || colDef.getOptionLabel;\n const handleChange = async event => {\n if (!isSingleSelectColDef(colDef) || !valueOptions) {\n return;\n }\n setOpen(false);\n const target = event.target;\n // NativeSelect casts the value to a string.\n const formattedTargetValue = getValueFromValueOptions(target.value, valueOptions, getOptionValue);\n if (onValueChange) {\n await onValueChange(event, formattedTargetValue);\n }\n await apiRef.current.setEditCellValue({\n id,\n field,\n value: formattedTargetValue\n }, event);\n };\n const handleClose = (event, reason) => {\n if (rootProps.editMode === GridEditModes.Row) {\n setOpen(false);\n return;\n }\n if (reason === 'backdropClick' || isEscapeKey(event.key)) {\n const params = apiRef.current.getCellParams(id, field);\n apiRef.current.publishEvent('cellEditStop', _extends({}, params, {\n reason: isEscapeKey(event.key) ? GridCellEditStopReasons.escapeKeyDown : GridCellEditStopReasons.cellFocusOut\n }));\n }\n };\n const handleOpen = event => {\n if (isKeyboardEvent(event) && event.key === 'Enter') {\n return;\n }\n setOpen(true);\n };\n if (!valueOptions || !colDef) {\n return null;\n }\n return /*#__PURE__*/_jsx(rootProps.slots.baseSelect, _extends({\n ref: ref,\n inputRef: inputRef,\n value: valueProp,\n onChange: handleChange,\n open: open,\n onOpen: handleOpen,\n MenuProps: _extends({\n onClose: handleClose\n }, MenuProps),\n error: error,\n native: isSelectNative,\n fullWidth: true\n }, other, otherBaseSelectProps, {\n children: valueOptions.map(valueOption => {\n var _rootProps$slotProps3;\n const value = getOptionValue(valueOption);\n return /*#__PURE__*/_createElement(rootProps.slots.baseSelectOption, _extends({}, ((_rootProps$slotProps3 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps3.baseSelectOption) || {}, {\n native: isSelectNative,\n key: value,\n value: value\n }), getOptionLabel(valueOption));\n })\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridEditSingleSelectCell.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * GridApi that let you manipulate the grid.\n */\n api: PropTypes.object.isRequired,\n /**\n * The mode of the cell.\n */\n cellMode: PropTypes.oneOf(['edit', 'view']).isRequired,\n changeReason: PropTypes.oneOf(['debouncedSetEditCellValue', 'setEditCellValue']),\n /**\n * The column of the row that the current cell belongs to.\n */\n colDef: PropTypes.object.isRequired,\n /**\n * The column field of the cell that triggered the event.\n */\n field: PropTypes.string.isRequired,\n /**\n * The cell value formatted with the column valueFormatter.\n */\n formattedValue: PropTypes.any,\n /**\n * Used to determine the label displayed for a given value option.\n * @param {ValueOptions} value The current value option.\n * @returns {string} The text to be displayed.\n */\n getOptionLabel: PropTypes.func,\n /**\n * Used to determine the value used for a value option.\n * @param {ValueOptions} value The current value option.\n * @returns {string} The value to be used.\n */\n getOptionValue: PropTypes.func,\n /**\n * If true, the cell is the active element.\n */\n hasFocus: PropTypes.bool.isRequired,\n /**\n * The grid row id.\n */\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n /**\n * If true, the select opens by default.\n */\n initialOpen: PropTypes.bool,\n /**\n * If true, the cell is editable.\n */\n isEditable: PropTypes.bool,\n isProcessingProps: PropTypes.bool,\n isValidating: PropTypes.bool,\n /**\n * Callback called when the value is changed by the user.\n * @param {SelectChangeEvent} event The event source of the callback.\n * @param {any} newValue The value that is going to be passed to `apiRef.current.setEditCellValue`.\n * @returns {Promise | void} A promise to be awaited before calling `apiRef.current.setEditCellValue`\n */\n onValueChange: PropTypes.func,\n /**\n * The row model of the row that the current cell belongs to.\n */\n row: PropTypes.any.isRequired,\n /**\n * The node of the row that the current cell belongs to.\n */\n rowNode: PropTypes.object.isRequired,\n /**\n * the tabIndex value.\n */\n tabIndex: PropTypes.oneOf([-1, 0]).isRequired,\n /**\n * The cell value.\n * If the column has `valueGetter`, use `params.row` to directly access the fields.\n */\n value: PropTypes.any\n} : void 0;\nexport { GridEditSingleSelectCell };\nexport const renderEditSingleSelectCell = params => /*#__PURE__*/_jsx(GridEditSingleSelectCell, _extends({}, params));","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"open\", \"target\", \"onClose\", \"children\", \"position\", \"className\", \"onExited\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport ClickAwayListener from '@mui/material/ClickAwayListener';\nimport { unstable_composeClasses as composeClasses, unstable_useEnhancedEffect as useEnhancedEffect, HTMLElementType } from '@mui/utils';\nimport Grow from '@mui/material/Grow';\nimport Paper from '@mui/material/Paper';\nimport Popper from '@mui/material/Popper';\nimport { styled } from '@mui/material/styles';\nimport { getDataGridUtilityClass, gridClasses } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['menu']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridMenuRoot = styled(Popper, {\n name: 'MuiDataGrid',\n slot: 'Menu',\n overridesResolver: (_, styles) => styles.menu\n})(({\n theme\n}) => ({\n zIndex: theme.zIndex.modal,\n [`& .${gridClasses.menuList}`]: {\n outline: 0\n }\n}));\nconst transformOrigin = {\n 'bottom-start': 'top left',\n 'bottom-end': 'top right'\n};\nfunction GridMenu(props) {\n var _rootProps$slotProps;\n const {\n open,\n target,\n onClose,\n children,\n position,\n className,\n onExited\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const classes = useUtilityClasses(rootProps);\n const savedFocusRef = React.useRef(null);\n useEnhancedEffect(() => {\n if (open) {\n savedFocusRef.current = document.activeElement instanceof HTMLElement ? document.activeElement : null;\n } else {\n var _savedFocusRef$curren, _savedFocusRef$curren2;\n (_savedFocusRef$curren = savedFocusRef.current) == null || (_savedFocusRef$curren2 = _savedFocusRef$curren.focus) == null || _savedFocusRef$curren2.call(_savedFocusRef$curren);\n savedFocusRef.current = null;\n }\n }, [open]);\n React.useEffect(() => {\n // Emit menuOpen or menuClose events\n const eventName = open ? 'menuOpen' : 'menuClose';\n apiRef.current.publishEvent(eventName, {\n target\n });\n }, [apiRef, open, target]);\n const handleExited = popperOnExited => node => {\n if (popperOnExited) {\n popperOnExited();\n }\n if (onExited) {\n onExited(node);\n }\n };\n const handleClickAway = event => {\n if (event.target && (target === event.target || target != null && target.contains(event.target))) {\n return;\n }\n onClose(event);\n };\n return /*#__PURE__*/_jsx(GridMenuRoot, _extends({\n as: rootProps.slots.basePopper,\n className: clsx(className, classes.root),\n ownerState: rootProps,\n open: open,\n anchorEl: target,\n transition: true,\n placement: position\n }, other, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.basePopper, {\n children: ({\n TransitionProps,\n placement\n }) => /*#__PURE__*/_jsx(ClickAwayListener, {\n onClickAway: handleClickAway,\n mouseEvent: \"onMouseDown\",\n children: /*#__PURE__*/_jsx(Grow, _extends({}, TransitionProps, {\n style: {\n transformOrigin: transformOrigin[placement]\n },\n onExited: handleExited(TransitionProps == null ? void 0 : TransitionProps.onExited),\n children: /*#__PURE__*/_jsx(Paper, {\n children: children\n })\n }))\n })\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridMenu.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n children: PropTypes.node,\n onClose: PropTypes.func.isRequired,\n onExited: PropTypes.func,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n position: PropTypes.oneOf(['bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n target: HTMLElementType\n} : void 0;\nexport { GridMenu };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"api\", \"colDef\", \"id\", \"hasFocus\", \"isEditable\", \"field\", \"value\", \"formattedValue\", \"row\", \"rowNode\", \"cellMode\", \"tabIndex\", \"position\", \"focusElementRef\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport MenuList from '@mui/material/MenuList';\nimport { useTheme } from '@mui/material/styles';\nimport { unstable_useId as useId } from '@mui/utils';\nimport { gridClasses } from '../../constants/gridClasses';\nimport { GridMenu } from '../menu/GridMenu';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst hasActions = colDef => typeof colDef.getActions === 'function';\nfunction GridActionsCell(props) {\n var _rootProps$slotProps;\n const {\n colDef,\n id,\n hasFocus,\n tabIndex,\n position = 'bottom-end',\n focusElementRef\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const [focusedButtonIndex, setFocusedButtonIndex] = React.useState(-1);\n const [open, setOpen] = React.useState(false);\n const apiRef = useGridApiContext();\n const rootRef = React.useRef(null);\n const buttonRef = React.useRef(null);\n const ignoreCallToFocus = React.useRef(false);\n const touchRippleRefs = React.useRef({});\n const theme = useTheme();\n const menuId = useId();\n const buttonId = useId();\n const rootProps = useGridRootProps();\n if (!hasActions(colDef)) {\n throw new Error('MUI: Missing the `getActions` property in the `GridColDef`.');\n }\n const options = colDef.getActions(apiRef.current.getRowParams(id));\n const iconButtons = options.filter(option => !option.props.showInMenu);\n const menuButtons = options.filter(option => option.props.showInMenu);\n const numberOfButtons = iconButtons.length + (menuButtons.length ? 1 : 0);\n React.useLayoutEffect(() => {\n if (!hasFocus) {\n Object.entries(touchRippleRefs.current).forEach(([index, ref]) => {\n ref == null || ref.stop({}, () => {\n delete touchRippleRefs.current[index];\n });\n });\n }\n }, [hasFocus]);\n React.useEffect(() => {\n if (focusedButtonIndex < 0 || !rootRef.current) {\n return;\n }\n if (focusedButtonIndex >= rootRef.current.children.length) {\n return;\n }\n const child = rootRef.current.children[focusedButtonIndex];\n child.focus({\n preventScroll: true\n });\n }, [focusedButtonIndex]);\n React.useEffect(() => {\n if (!hasFocus) {\n setFocusedButtonIndex(-1);\n ignoreCallToFocus.current = false;\n }\n }, [hasFocus]);\n React.useImperativeHandle(focusElementRef, () => ({\n focus() {\n // If ignoreCallToFocus is true, then one of the buttons was clicked and the focus is already set\n if (!ignoreCallToFocus.current) {\n // find the first focusable button and pass the index to the state\n const focusableButtonIndex = options.findIndex(o => !o.props.disabled);\n setFocusedButtonIndex(focusableButtonIndex);\n }\n }\n }), [options]);\n React.useEffect(() => {\n if (focusedButtonIndex >= numberOfButtons) {\n setFocusedButtonIndex(numberOfButtons - 1);\n }\n }, [focusedButtonIndex, numberOfButtons]);\n const showMenu = () => {\n setOpen(true);\n setFocusedButtonIndex(numberOfButtons - 1);\n ignoreCallToFocus.current = true;\n };\n const hideMenu = () => {\n setOpen(false);\n };\n const handleTouchRippleRef = index => instance => {\n touchRippleRefs.current[index] = instance;\n };\n const handleButtonClick = (index, onClick) => event => {\n setFocusedButtonIndex(index);\n ignoreCallToFocus.current = true;\n if (onClick) {\n onClick(event);\n }\n };\n const handleRootKeyDown = event => {\n if (numberOfButtons <= 1) {\n return;\n }\n const getNewIndex = (index, direction) => {\n var _options;\n if (index < 0 || index > options.length) {\n return index;\n }\n\n // for rtl mode we need to reverse the direction\n const rtlMod = theme.direction === 'rtl' ? -1 : 1;\n const indexMod = (direction === 'left' ? -1 : 1) * rtlMod;\n\n // if the button that should receive focus is disabled go one more step\n return (_options = options[index + indexMod]) != null && _options.props.disabled ? getNewIndex(index + indexMod, direction) : index + indexMod;\n };\n let newIndex = focusedButtonIndex;\n if (event.key === 'ArrowRight') {\n newIndex = getNewIndex(focusedButtonIndex, 'right');\n } else if (event.key === 'ArrowLeft') {\n newIndex = getNewIndex(focusedButtonIndex, 'left');\n }\n if (newIndex < 0 || newIndex >= numberOfButtons) {\n return; // We're already in the first or last item = do nothing and let the grid listen the event\n }\n if (newIndex !== focusedButtonIndex) {\n event.preventDefault(); // Prevent scrolling\n event.stopPropagation(); // Don't stop propagation for other keys, e.g. ArrowUp\n setFocusedButtonIndex(newIndex);\n }\n };\n const handleListKeyDown = event => {\n if (event.key === 'Tab') {\n event.preventDefault();\n }\n if (['Tab', 'Escape'].includes(event.key)) {\n hideMenu();\n }\n };\n return /*#__PURE__*/_jsxs(\"div\", _extends({\n role: \"menu\",\n ref: rootRef,\n tabIndex: -1,\n className: gridClasses.actionsCell,\n onKeyDown: handleRootKeyDown\n }, other, {\n children: [iconButtons.map((button, index) => /*#__PURE__*/React.cloneElement(button, {\n key: index,\n touchRippleRef: handleTouchRippleRef(index),\n onClick: handleButtonClick(index, button.props.onClick),\n tabIndex: focusedButtonIndex === index ? tabIndex : -1\n })), menuButtons.length > 0 && buttonId && /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, _extends({\n ref: buttonRef,\n id: buttonId,\n \"aria-label\": apiRef.current.getLocaleText('actionsCellMore'),\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": open,\n \"aria-controls\": open ? menuId : undefined,\n role: \"menuitem\",\n size: \"small\",\n onClick: showMenu,\n touchRippleRef: handleTouchRippleRef(buttonId),\n tabIndex: focusedButtonIndex === iconButtons.length ? tabIndex : -1\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseIconButton, {\n children: /*#__PURE__*/_jsx(rootProps.slots.moreActionsIcon, {\n fontSize: \"small\"\n })\n })), menuButtons.length > 0 && /*#__PURE__*/_jsx(GridMenu, {\n open: open,\n target: buttonRef.current,\n position: position,\n onClose: hideMenu,\n children: /*#__PURE__*/_jsx(MenuList, {\n id: menuId,\n className: gridClasses.menuList,\n onKeyDown: handleListKeyDown,\n \"aria-labelledby\": buttonId,\n variant: \"menu\",\n autoFocusItem: true,\n children: menuButtons.map((button, index) => /*#__PURE__*/React.cloneElement(button, {\n key: index,\n closeMenu: hideMenu\n }))\n })\n })]\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridActionsCell.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n api: PropTypes.object,\n /**\n * The mode of the cell.\n */\n cellMode: PropTypes.oneOf(['edit', 'view']).isRequired,\n /**\n * The column of the row that the current cell belongs to.\n */\n colDef: PropTypes.object.isRequired,\n /**\n * The column field of the cell that triggered the event.\n */\n field: PropTypes.string.isRequired,\n /**\n * A ref allowing to set imperative focus.\n * It can be passed to the element that should receive focus.\n * @ignore - do not document.\n */\n focusElementRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.shape({\n focus: PropTypes.func.isRequired\n })\n })]),\n /**\n * The cell value formatted with the column valueFormatter.\n */\n formattedValue: PropTypes.any,\n /**\n * If true, the cell is the active element.\n */\n hasFocus: PropTypes.bool.isRequired,\n /**\n * The grid row id.\n */\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n /**\n * If true, the cell is editable.\n */\n isEditable: PropTypes.bool,\n position: PropTypes.oneOf(['bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n /**\n * The row model of the row that the current cell belongs to.\n */\n row: PropTypes.any.isRequired,\n /**\n * The node of the row that the current cell belongs to.\n */\n rowNode: PropTypes.object.isRequired,\n /**\n * the tabIndex value.\n */\n tabIndex: PropTypes.oneOf([-1, 0]).isRequired,\n /**\n * The cell value.\n * If the column has `valueGetter`, use `params.row` to directly access the fields.\n */\n value: PropTypes.any\n} : void 0;\nexport { GridActionsCell };\nexport const renderActionsCell = params => /*#__PURE__*/_jsx(GridActionsCell, _extends({}, params));","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"label\", \"icon\", \"showInMenu\", \"onClick\"],\n _excluded2 = [\"label\", \"icon\", \"showInMenu\", \"onClick\", \"closeMenuOnClick\", \"closeMenu\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst GridActionsCellItem = /*#__PURE__*/React.forwardRef((props, ref) => {\n const rootProps = useGridRootProps();\n if (!props.showInMenu) {\n var _rootProps$slotProps;\n const {\n label,\n icon,\n onClick\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const handleClick = event => {\n onClick == null || onClick(event);\n };\n return /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, _extends({\n ref: ref,\n size: \"small\",\n role: \"menuitem\",\n \"aria-label\": label\n }, other, {\n onClick: handleClick\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseIconButton, {\n children: /*#__PURE__*/React.cloneElement(icon, {\n fontSize: 'small'\n })\n }));\n }\n const {\n label,\n icon,\n onClick,\n closeMenuOnClick = true,\n closeMenu\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded2);\n const handleClick = event => {\n onClick == null || onClick(event);\n if (closeMenuOnClick) {\n closeMenu == null || closeMenu();\n }\n };\n return /*#__PURE__*/_jsxs(MenuItem, _extends({\n ref: ref\n }, other, {\n onClick: handleClick,\n children: [icon && /*#__PURE__*/_jsx(ListItemIcon, {\n children: icon\n }), label]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridActionsCellItem.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n icon: PropTypes.element,\n label: PropTypes.string.isRequired,\n showInMenu: PropTypes.bool\n} : void 0;\nexport { GridActionsCellItem };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"field\", \"align\", \"width\", \"contentWidth\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport Skeleton from '@mui/material/Skeleton';\nimport { unstable_composeClasses as composeClasses, unstable_capitalize as capitalize } from '@mui/utils';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n align,\n classes\n } = ownerState;\n const slots = {\n root: ['cell', 'cellSkeleton', `cell--text${capitalize(align)}`, 'withBorderColor']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction GridSkeletonCell(props) {\n const {\n align,\n width,\n contentWidth\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const rootProps = useGridRootProps();\n const ownerState = {\n classes: rootProps.classes,\n align\n };\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(\"div\", _extends({\n className: classes.root,\n style: {\n width\n }\n }, other, {\n children: /*#__PURE__*/_jsx(Skeleton, {\n width: `${contentWidth}%`\n })\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridSkeletonCell.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n align: PropTypes.string.isRequired,\n contentWidth: PropTypes.number.isRequired,\n field: PropTypes.string.isRequired,\n width: PropTypes.number.isRequired\n} : void 0;\nexport { GridSkeletonCell };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { alpha, styled, darken, lighten } from '@mui/material/styles';\nimport { gridClasses } from '../../constants/gridClasses';\nfunction getBorderColor(theme) {\n if (theme.vars) {\n return theme.vars.palette.TableCell.border;\n }\n if (theme.palette.mode === 'light') {\n return lighten(alpha(theme.palette.divider, 1), 0.88);\n }\n return darken(alpha(theme.palette.divider, 1), 0.68);\n}\nconst columnHeadersStyles = {\n [`.${gridClasses.columnSeparator}, .${gridClasses['columnSeparator--resizing']}`]: {\n visibility: 'visible',\n width: 'auto'\n }\n};\nconst columnHeaderStyles = {\n [`& .${gridClasses.iconButtonContainer}`]: {\n visibility: 'visible',\n width: 'auto'\n },\n [`& .${gridClasses.menuIcon}`]: {\n width: 'auto',\n visibility: 'visible'\n }\n};\nexport const GridRootStyles = styled('div', {\n name: 'MuiDataGrid',\n slot: 'Root',\n overridesResolver: (props, styles) => [{\n [`&.${gridClasses.autoHeight}`]: styles.autoHeight\n }, {\n [`&.${gridClasses.aggregationColumnHeader}`]: styles.aggregationColumnHeader\n }, {\n [`&.${gridClasses['aggregationColumnHeader--alignLeft']}`]: styles['aggregationColumnHeader--alignLeft']\n }, {\n [`&.${gridClasses['aggregationColumnHeader--alignCenter']}`]: styles['aggregationColumnHeader--alignCenter']\n }, {\n [`&.${gridClasses['aggregationColumnHeader--alignRight']}`]: styles['aggregationColumnHeader--alignRight']\n }, {\n [`&.${gridClasses.aggregationColumnHeaderLabel}`]: styles.aggregationColumnHeaderLabel\n }, {\n [`&.${gridClasses['root--disableUserSelection']} .${gridClasses.cell}`]: styles['root--disableUserSelection']\n }, {\n [`&.${gridClasses.autosizing}`]: styles.autosizing\n }, {\n [`& .${gridClasses.editBooleanCell}`]: styles.editBooleanCell\n }, {\n [`& .${gridClasses['cell--editing']}`]: styles['cell--editing']\n }, {\n [`& .${gridClasses['cell--textCenter']}`]: styles['cell--textCenter']\n }, {\n [`& .${gridClasses['cell--textLeft']}`]: styles['cell--textLeft']\n }, {\n [`& .${gridClasses['cell--textRight']}`]: styles['cell--textRight']\n },\n // TODO v6: Remove\n {\n [`& .${gridClasses['cell--withRenderer']}`]: styles['cell--withRenderer']\n }, {\n [`& .${gridClasses.cell}`]: styles.cell\n }, {\n [`& .${gridClasses['cell--rangeTop']}`]: styles['cell--rangeTop']\n }, {\n [`& .${gridClasses['cell--rangeBottom']}`]: styles['cell--rangeBottom']\n }, {\n [`& .${gridClasses['cell--rangeLeft']}`]: styles['cell--rangeLeft']\n }, {\n [`& .${gridClasses['cell--rangeRight']}`]: styles['cell--rangeRight']\n }, {\n [`& .${gridClasses['cell--withRightBorder']}`]: styles['cell--withRightBorder']\n }, {\n [`& .${gridClasses.cellContent}`]: styles.cellContent\n }, {\n [`& .${gridClasses.cellCheckbox}`]: styles.cellCheckbox\n }, {\n [`& .${gridClasses.cellSkeleton}`]: styles.cellSkeleton\n }, {\n [`& .${gridClasses.checkboxInput}`]: styles.checkboxInput\n }, {\n [`& .${gridClasses['columnHeader--alignCenter']}`]: styles['columnHeader--alignCenter']\n }, {\n [`& .${gridClasses['columnHeader--alignLeft']}`]: styles['columnHeader--alignLeft']\n }, {\n [`& .${gridClasses['columnHeader--alignRight']}`]: styles['columnHeader--alignRight']\n }, {\n [`& .${gridClasses['columnHeader--dragging']}`]: styles['columnHeader--dragging']\n }, {\n [`& .${gridClasses['columnHeader--moving']}`]: styles['columnHeader--moving']\n }, {\n [`& .${gridClasses['columnHeader--numeric']}`]: styles['columnHeader--numeric']\n }, {\n [`& .${gridClasses['columnHeader--sortable']}`]: styles['columnHeader--sortable']\n }, {\n [`& .${gridClasses['columnHeader--sorted']}`]: styles['columnHeader--sorted']\n }, {\n [`& .${gridClasses['columnHeader--withRightBorder']}`]: styles['columnHeader--withRightBorder']\n }, {\n [`& .${gridClasses.columnHeader}`]: styles.columnHeader\n }, {\n [`& .${gridClasses.headerFilterRow}`]: styles.headerFilterRow\n }, {\n [`& .${gridClasses.columnHeaderCheckbox}`]: styles.columnHeaderCheckbox\n }, {\n [`& .${gridClasses.columnHeaderDraggableContainer}`]: styles.columnHeaderDraggableContainer\n }, {\n [`& .${gridClasses.columnHeaderTitleContainer}`]: styles.columnHeaderTitleContainer\n }, {\n [`& .${gridClasses['columnSeparator--resizable']}`]: styles['columnSeparator--resizable']\n }, {\n [`& .${gridClasses['columnSeparator--resizing']}`]: styles['columnSeparator--resizing']\n }, {\n [`& .${gridClasses.columnSeparator}`]: styles.columnSeparator\n }, {\n [`& .${gridClasses.filterIcon}`]: styles.filterIcon\n }, {\n [`& .${gridClasses.iconSeparator}`]: styles.iconSeparator\n }, {\n [`& .${gridClasses.menuIcon}`]: styles.menuIcon\n }, {\n [`& .${gridClasses.menuIconButton}`]: styles.menuIconButton\n }, {\n [`& .${gridClasses.menuOpen}`]: styles.menuOpen\n }, {\n [`& .${gridClasses.menuList}`]: styles.menuList\n }, {\n [`& .${gridClasses['row--editable']}`]: styles['row--editable']\n }, {\n [`& .${gridClasses['row--editing']}`]: styles['row--editing']\n }, {\n [`& .${gridClasses['row--dragging']}`]: styles['row--dragging']\n }, {\n [`& .${gridClasses.row}`]: styles.row\n }, {\n [`& .${gridClasses.rowReorderCellPlaceholder}`]: styles.rowReorderCellPlaceholder\n }, {\n [`& .${gridClasses.rowReorderCell}`]: styles.rowReorderCell\n }, {\n [`& .${gridClasses['rowReorderCell--draggable']}`]: styles['rowReorderCell--draggable']\n }, {\n [`& .${gridClasses.sortIcon}`]: styles.sortIcon\n }, {\n [`& .${gridClasses.withBorderColor}`]: styles.withBorderColor\n }, {\n [`& .${gridClasses.treeDataGroupingCell}`]: styles.treeDataGroupingCell\n }, {\n [`& .${gridClasses.treeDataGroupingCellToggle}`]: styles.treeDataGroupingCellToggle\n }, {\n [`& .${gridClasses.detailPanelToggleCell}`]: styles.detailPanelToggleCell\n }, {\n [`& .${gridClasses['detailPanelToggleCell--expanded']}`]: styles['detailPanelToggleCell--expanded']\n }, styles.root]\n})(({\n theme\n}) => {\n const borderColor = getBorderColor(theme);\n const radius = theme.shape.borderRadius;\n const gridStyle = _extends({\n '--unstable_DataGrid-radius': typeof radius === 'number' ? `${radius}px` : radius,\n '--unstable_DataGrid-headWeight': theme.typography.fontWeightMedium,\n '--unstable_DataGrid-overlayBackground': theme.vars ? `rgba(${theme.vars.palette.background.defaultChannel} / ${theme.vars.palette.action.disabledOpacity})` : alpha(theme.palette.background.default, theme.palette.action.disabledOpacity),\n '--DataGrid-cellOffsetMultiplier': 2,\n flex: 1,\n boxSizing: 'border-box',\n position: 'relative',\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor,\n borderRadius: 'var(--unstable_DataGrid-radius)',\n color: (theme.vars || theme).palette.text.primary\n }, theme.typography.body2, {\n outline: 'none',\n height: '100%',\n display: 'flex',\n minWidth: 0,\n // See https://github.com/mui/mui-x/issues/8547\n minHeight: 0,\n flexDirection: 'column',\n overflowAnchor: 'none',\n // Keep the same scrolling position\n [`&.${gridClasses.autoHeight}`]: {\n height: 'auto',\n [`& .${gridClasses['row--lastVisible']} .${gridClasses.cell}`]: {\n borderBottomColor: 'transparent'\n }\n },\n [`&.${gridClasses.autosizing}`]: {\n [`& .${gridClasses.columnHeaderTitleContainerContent} > *`]: {\n overflow: 'visible !important'\n },\n [`& .${gridClasses.cell} > *`]: {\n overflow: 'visible !important',\n whiteSpace: 'nowrap'\n },\n [`& .${gridClasses.groupingCriteriaCell}`]: {\n width: 'unset'\n },\n [`& .${gridClasses.treeDataGroupingCell}`]: {\n width: 'unset'\n }\n },\n [`& .${gridClasses['virtualScrollerContent--overflowed']} .${gridClasses['row--lastVisible']} .${gridClasses.cell}`]: {\n borderBottomColor: 'transparent'\n },\n [`& .${gridClasses.columnHeader}, & .${gridClasses.cell}`]: {\n WebkitTapHighlightColor: 'transparent',\n lineHeight: null,\n padding: '0 10px',\n boxSizing: 'border-box'\n },\n [`& .${gridClasses.columnHeader}:focus-within, & .${gridClasses.cell}:focus-within`]: {\n outline: `solid ${theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / 0.5)` : alpha(theme.palette.primary.main, 0.5)} 1px`,\n outlineWidth: 1,\n outlineOffset: -1\n },\n [`& .${gridClasses.columnHeader}:focus, & .${gridClasses.cell}:focus`]: {\n outline: `solid ${theme.palette.primary.main} 1px`\n },\n [`& .${gridClasses.columnHeaderCheckbox}, & .${gridClasses.cellCheckbox}`]: {\n padding: 0,\n justifyContent: 'center',\n alignItems: 'center'\n },\n [`& .${gridClasses.columnHeader}`]: {\n position: 'relative',\n display: 'flex',\n alignItems: 'center'\n },\n [`& .${gridClasses['columnHeader--sorted']} .${gridClasses.iconButtonContainer}, & .${gridClasses['columnHeader--filtered']} .${gridClasses.iconButtonContainer}`]: {\n visibility: 'visible',\n width: 'auto'\n },\n [`& .${gridClasses.columnHeader}:not(.${gridClasses['columnHeader--sorted']}) .${gridClasses.sortIcon}`]: {\n opacity: 0,\n transition: theme.transitions.create(['opacity'], {\n duration: theme.transitions.duration.shorter\n })\n },\n [`& .${gridClasses.columnHeaderTitleContainer}`]: {\n display: 'flex',\n alignItems: 'center',\n minWidth: 0,\n flex: 1,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n // to anchor the aggregation label\n position: 'relative'\n },\n [`& .${gridClasses.columnHeaderTitleContainerContent}`]: {\n overflow: 'hidden',\n display: 'flex',\n alignItems: 'center'\n },\n [`& .${gridClasses['columnHeader--filledGroup']} .${gridClasses.columnHeaderTitleContainer}`]: {\n borderBottomWidth: '1px',\n borderBottomStyle: 'solid',\n boxSizing: 'border-box'\n },\n [`& .${gridClasses['columnHeader--filledGroup']}.${gridClasses['columnHeader--showColumnBorder']} .${gridClasses.columnHeaderTitleContainer}`]: {\n borderBottom: `none`\n },\n [`& .${gridClasses['columnHeader--filledGroup']}.${gridClasses['columnHeader--showColumnBorder']}`]: {\n borderBottomWidth: '1px',\n borderBottomStyle: 'solid',\n boxSizing: 'border-box'\n },\n [`& .${gridClasses.headerFilterRow}`]: {\n borderTop: `1px solid ${borderColor}`\n },\n [`& .${gridClasses.sortIcon}, & .${gridClasses.filterIcon}`]: {\n fontSize: 'inherit'\n },\n [`& .${gridClasses['columnHeader--sortable']}`]: {\n cursor: 'pointer'\n },\n [`& .${gridClasses['columnHeader--alignCenter']} .${gridClasses.columnHeaderTitleContainer}`]: {\n justifyContent: 'center'\n },\n [`& .${gridClasses['columnHeader--alignRight']} .${gridClasses.columnHeaderDraggableContainer}, & .${gridClasses['columnHeader--alignRight']} .${gridClasses.columnHeaderTitleContainer}`]: {\n flexDirection: 'row-reverse'\n },\n [`& .${gridClasses['columnHeader--alignCenter']} .${gridClasses.menuIcon}, & .${gridClasses['columnHeader--alignRight']} .${gridClasses.menuIcon}`]: {\n marginRight: 'auto',\n marginLeft: -6\n },\n [`& .${gridClasses['columnHeader--alignRight']} .${gridClasses.menuIcon}, & .${gridClasses['columnHeader--alignRight']} .${gridClasses.menuIcon}`]: {\n marginRight: 'auto',\n marginLeft: -10\n },\n [`& .${gridClasses['columnHeader--moving']}`]: {\n backgroundColor: (theme.vars || theme).palette.action.hover\n },\n [`& .${gridClasses.columnSeparator}`]: {\n visibility: 'hidden',\n position: 'absolute',\n zIndex: 100,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n color: borderColor\n },\n '@media (hover: hover)': {\n [`& .${gridClasses.columnHeaders}:hover`]: columnHeadersStyles,\n [`& .${gridClasses.columnHeader}:hover`]: columnHeaderStyles,\n [`& .${gridClasses.columnHeader}:not(.${gridClasses['columnHeader--sorted']}):hover .${gridClasses.sortIcon}`]: {\n opacity: 0.5\n }\n },\n '@media (hover: none)': {\n [`& .${gridClasses.columnHeaders}`]: columnHeadersStyles,\n [`& .${gridClasses.columnHeader}`]: columnHeaderStyles\n },\n [`& .${gridClasses['columnSeparator--sideLeft']}`]: {\n left: -12\n },\n [`& .${gridClasses['columnSeparator--sideRight']}`]: {\n right: -12\n },\n [`& .${gridClasses['columnSeparator--resizable']}`]: {\n cursor: 'col-resize',\n touchAction: 'none',\n '&:hover': {\n color: (theme.vars || theme).palette.text.primary,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n color: borderColor\n }\n },\n [`&.${gridClasses['columnSeparator--resizing']}`]: {\n color: (theme.vars || theme).palette.text.primary\n },\n '& svg': {\n pointerEvents: 'none'\n }\n },\n [`& .${gridClasses.iconSeparator}`]: {\n color: 'inherit'\n },\n [`& .${gridClasses.menuIcon}`]: {\n width: 0,\n visibility: 'hidden',\n fontSize: 20,\n marginRight: -10,\n display: 'flex',\n alignItems: 'center'\n },\n [`.${gridClasses.menuOpen}`]: {\n visibility: 'visible',\n width: 'auto'\n },\n [`& .${gridClasses.row}`]: {\n display: 'flex',\n width: 'fit-content',\n breakInside: 'avoid',\n // Avoid the row to be broken in two different print pages.\n '&:hover, &.Mui-hovered': {\n backgroundColor: (theme.vars || theme).palette.action.hover,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n '&.Mui-selected': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n '&:hover, &.Mui-hovered': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(\n ${theme.vars.palette.action.selectedOpacity} + \n ${theme.vars.palette.action.hoverOpacity}\n ))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity)\n }\n }\n }\n },\n [`& .${gridClasses.cell}`]: {\n display: 'flex',\n alignItems: 'center',\n borderBottom: '1px solid',\n '&.Mui-selected': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n '&:hover, &.Mui-hovered': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity + theme.palette.action.hoverOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity)\n }\n }\n }\n },\n [`&.${gridClasses['root--disableUserSelection']} .${gridClasses.cell}`]: {\n userSelect: 'none'\n },\n [`& .${gridClasses.row}:not(.${gridClasses['row--dynamicHeight']}) > .${gridClasses.cell}`]: {\n overflow: 'hidden',\n whiteSpace: 'nowrap'\n },\n [`& .${gridClasses.cellContent}`]: {\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n [`& .${gridClasses.cell}.${gridClasses['cell--selectionMode']}`]: {\n cursor: 'default'\n },\n [`& .${gridClasses.cell}.${gridClasses['cell--editing']}`]: {\n padding: 1,\n display: 'flex',\n boxShadow: theme.shadows[2],\n backgroundColor: (theme.vars || theme).palette.background.paper,\n '&:focus-within': {\n outline: `solid ${(theme.vars || theme).palette.primary.main} 1px`,\n outlineOffset: '-1px'\n }\n },\n [`& .${gridClasses['row--editing']}`]: {\n boxShadow: theme.shadows[2]\n },\n [`& .${gridClasses['row--editing']} .${gridClasses.cell}`]: {\n boxShadow: theme.shadows[0],\n backgroundColor: (theme.vars || theme).palette.background.paper\n },\n [`& .${gridClasses.editBooleanCell}`]: {\n display: 'flex',\n height: '100%',\n width: '100%',\n alignItems: 'center',\n justifyContent: 'center'\n },\n [`& .${gridClasses.booleanCell}[data-value=\"true\"]`]: {\n color: (theme.vars || theme).palette.text.secondary\n },\n [`& .${gridClasses.booleanCell}[data-value=\"false\"]`]: {\n color: (theme.vars || theme).palette.text.disabled\n },\n [`& .${gridClasses.actionsCell}`]: {\n display: 'inline-flex',\n alignItems: 'center',\n gridGap: theme.spacing(1)\n },\n [`& .${gridClasses.rowReorderCell}`]: {\n display: 'inline-flex',\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n opacity: (theme.vars || theme).palette.action.disabledOpacity\n },\n [`& .${gridClasses['rowReorderCell--draggable']}`]: {\n cursor: 'move',\n opacity: 1\n },\n [`& .${gridClasses.rowReorderCellContainer}`]: {\n padding: 0,\n alignItems: 'stretch'\n },\n [`.${gridClasses.withBorderColor}`]: {\n borderColor\n },\n [`& .${gridClasses['cell--withRightBorder']}`]: {\n borderRightWidth: '1px',\n borderRightStyle: 'solid'\n },\n [`& .${gridClasses['columnHeader--withRightBorder']}`]: {\n borderRightWidth: '1px',\n borderRightStyle: 'solid'\n },\n [`& .${gridClasses['cell--textLeft']}`]: {\n justifyContent: 'flex-start'\n },\n [`& .${gridClasses['cell--textRight']}`]: {\n justifyContent: 'flex-end'\n },\n [`& .${gridClasses['cell--textCenter']}`]: {\n justifyContent: 'center'\n },\n [`& .${gridClasses.columnHeaderDraggableContainer}`]: {\n display: 'flex',\n width: '100%',\n height: '100%'\n },\n [`& .${gridClasses.rowReorderCellPlaceholder}`]: {\n display: 'none'\n },\n [`& .${gridClasses['columnHeader--dragging']}, & .${gridClasses['row--dragging']}`]: {\n background: (theme.vars || theme).palette.background.paper,\n padding: '0 12px',\n borderRadius: 'var(--unstable_DataGrid-radius)',\n opacity: (theme.vars || theme).palette.action.disabledOpacity\n },\n [`& .${gridClasses['row--dragging']}`]: {\n background: (theme.vars || theme).palette.background.paper,\n padding: '0 12px',\n borderRadius: 'var(--unstable_DataGrid-radius)',\n opacity: (theme.vars || theme).palette.action.disabledOpacity,\n [`& .${gridClasses.rowReorderCellPlaceholder}`]: {\n display: 'flex'\n }\n },\n [`& .${gridClasses.treeDataGroupingCell}`]: {\n display: 'flex',\n alignItems: 'center',\n width: '100%'\n },\n [`& .${gridClasses.treeDataGroupingCellToggle}`]: {\n flex: '0 0 28px',\n alignSelf: 'stretch',\n marginRight: theme.spacing(2)\n },\n [`& .${gridClasses.groupingCriteriaCell}`]: {\n display: 'flex',\n alignItems: 'center',\n width: '100%'\n },\n [`& .${gridClasses.groupingCriteriaCellToggle}`]: {\n flex: '0 0 28px',\n alignSelf: 'stretch',\n marginRight: theme.spacing(2)\n }\n });\n return gridStyle;\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_useForkRef as useForkRef, unstable_useEnhancedEffect as useEnhancedEffect, unstable_capitalize as capitalize, unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { GridRootStyles } from './GridRootStyles';\nimport { useGridSelector } from '../../hooks/utils/useGridSelector';\nimport { useGridPrivateApiContext } from '../../hooks/utils/useGridPrivateApiContext';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { gridDensityValueSelector } from '../../hooks/features/density/densitySelector';\nimport { useGridAriaAttributes } from '../../hooks/utils/useGridAriaAttributes';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n autoHeight,\n density,\n classes\n } = ownerState;\n const slots = {\n root: ['root', autoHeight && 'autoHeight', `root--density${capitalize(density)}`, 'withBorderColor']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridRoot = /*#__PURE__*/React.forwardRef(function GridRoot(props, ref) {\n var _rootProps$experiment;\n const rootProps = useGridRootProps();\n const {\n children,\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridPrivateApiContext();\n const densityValue = useGridSelector(apiRef, gridDensityValueSelector);\n const rootContainerRef = React.useRef(null);\n const handleRef = useForkRef(rootContainerRef, ref);\n const getAriaAttributes = (_rootProps$experiment = rootProps.experimentalFeatures) != null && _rootProps$experiment.ariaV7 // ariaV7 should never change\n ? null : useGridAriaAttributes;\n const ariaAttributes = typeof getAriaAttributes === 'function' ? getAriaAttributes() : null;\n const ownerState = _extends({}, rootProps, {\n density: densityValue\n });\n const classes = useUtilityClasses(ownerState);\n apiRef.current.register('public', {\n rootElementRef: rootContainerRef\n });\n\n // Our implementation of \n const [mountedState, setMountedState] = React.useState(false);\n useEnhancedEffect(() => {\n setMountedState(true);\n }, []);\n if (!mountedState) {\n return null;\n }\n return /*#__PURE__*/_jsx(GridRootStyles, _extends({\n ref: handleRef,\n className: clsx(className, classes.root),\n ownerState: ownerState\n }, ariaAttributes, other, {\n children: children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridRoot.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridRoot };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { styled } from '@mui/system';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['footerContainer', 'withBorderColor']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridFooterContainerRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'FooterContainer',\n overridesResolver: (props, styles) => styles.footerContainer\n})({\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n minHeight: 52,\n borderTop: '1px solid'\n});\nconst GridFooterContainer = /*#__PURE__*/React.forwardRef(function GridFooterContainer(props, ref) {\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const rootProps = useGridRootProps();\n const classes = useUtilityClasses(rootProps);\n return /*#__PURE__*/_jsx(GridFooterContainerRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: rootProps\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridFooterContainer.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridFooterContainer };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { styled } from '@mui/system';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['overlay']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridOverlayRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'Overlay',\n overridesResolver: (_, styles) => styles.overlay\n})({\n width: '100%',\n height: '100%',\n display: 'flex',\n alignSelf: 'center',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: 'var(--unstable_DataGrid-overlayBackground)'\n});\nconst GridOverlay = /*#__PURE__*/React.forwardRef(function GridOverlay(props, ref) {\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const rootProps = useGridRootProps();\n const classes = useUtilityClasses(rootProps);\n return /*#__PURE__*/_jsx(GridOverlayRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: rootProps\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridOverlay.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridOverlay };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"children\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { styled } from '@mui/system';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['toolbarContainer']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridToolbarContainerRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'ToolbarContainer',\n overridesResolver: (_, styles) => styles.toolbarContainer\n})(({\n theme\n}) => ({\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n gap: theme.spacing(1),\n padding: theme.spacing(0.5, 0.5, 0)\n}));\nconst GridToolbarContainer = /*#__PURE__*/React.forwardRef(function GridToolbarContainer(props, ref) {\n const {\n className,\n children\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const rootProps = useGridRootProps();\n const classes = useUtilityClasses(rootProps);\n if (!children) {\n return null;\n }\n return /*#__PURE__*/_jsx(GridToolbarContainerRoot, _extends({\n ref: ref,\n className: clsx(className, classes.root),\n ownerState: rootProps\n }, other, {\n children: children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridToolbarContainer.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridToolbarContainer };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { styled } from '@mui/system';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['iconButtonContainer']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridIconButtonContainerRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'IconButtonContainer',\n overridesResolver: (props, styles) => styles.iconButtonContainer\n})(() => ({\n display: 'flex',\n visibility: 'hidden',\n width: 0\n}));\nexport const GridIconButtonContainer = /*#__PURE__*/React.forwardRef(function GridIconButtonContainer(props, ref) {\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const rootProps = useGridRootProps();\n const classes = useUtilityClasses(rootProps);\n return /*#__PURE__*/_jsx(GridIconButtonContainerRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: rootProps\n }, other));\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport Badge from '@mui/material/Badge';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { GridIconButtonContainer } from './GridIconButtonContainer';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n icon: ['sortIcon']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction getIcon(icons, direction, className, sortingOrder) {\n let Icon;\n const iconProps = {};\n if (direction === 'asc') {\n Icon = icons.columnSortedAscendingIcon;\n } else if (direction === 'desc') {\n Icon = icons.columnSortedDescendingIcon;\n } else {\n Icon = icons.columnUnsortedIcon;\n iconProps.sortingOrder = sortingOrder;\n }\n return Icon ? /*#__PURE__*/_jsx(Icon, _extends({\n fontSize: \"small\",\n className: className\n }, iconProps)) : null;\n}\nfunction GridColumnHeaderSortIconRaw(props) {\n var _rootProps$slotProps;\n const {\n direction,\n index,\n sortingOrder\n } = props;\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const ownerState = _extends({}, props, {\n classes: rootProps.classes\n });\n const classes = useUtilityClasses(ownerState);\n const iconElement = getIcon(rootProps.slots, direction, classes.icon, sortingOrder);\n if (!iconElement) {\n return null;\n }\n const iconButton = /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, _extends({\n tabIndex: -1,\n \"aria-label\": apiRef.current.getLocaleText('columnHeaderSortIconLabel'),\n title: apiRef.current.getLocaleText('columnHeaderSortIconLabel'),\n size: \"small\"\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseIconButton, {\n children: iconElement\n }));\n return /*#__PURE__*/_jsxs(GridIconButtonContainer, {\n children: [index != null && /*#__PURE__*/_jsx(Badge, {\n badgeContent: index,\n color: \"default\",\n children: iconButton\n }), index == null && iconButton]\n });\n}\nconst GridColumnHeaderSortIcon = /*#__PURE__*/React.memo(GridColumnHeaderSortIconRaw);\nprocess.env.NODE_ENV !== \"production\" ? GridColumnHeaderSortIconRaw.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n direction: PropTypes.oneOf(['asc', 'desc']),\n index: PropTypes.number,\n sortingOrder: PropTypes.arrayOf(PropTypes.oneOf(['asc', 'desc'])).isRequired\n} : void 0;\nexport { GridColumnHeaderSortIcon };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n open\n } = ownerState;\n const slots = {\n root: ['menuIcon', open && 'menuOpen'],\n button: ['menuIconButton']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nexport const ColumnHeaderMenuIcon = /*#__PURE__*/React.memo(props => {\n var _rootProps$slotProps, _rootProps$slotProps2;\n const {\n colDef,\n open,\n columnMenuId,\n columnMenuButtonId,\n iconButtonRef\n } = props;\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const ownerState = _extends({}, props, {\n classes: rootProps.classes\n });\n const classes = useUtilityClasses(ownerState);\n const handleMenuIconClick = React.useCallback(event => {\n event.preventDefault();\n event.stopPropagation();\n apiRef.current.toggleColumnMenu(colDef.field);\n }, [apiRef, colDef.field]);\n return /*#__PURE__*/_jsx(\"div\", {\n className: classes.root,\n children: /*#__PURE__*/_jsx(rootProps.slots.baseTooltip, _extends({\n title: apiRef.current.getLocaleText('columnMenuLabel'),\n enterDelay: 1000\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseTooltip, {\n children: /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, _extends({\n ref: iconButtonRef,\n tabIndex: -1,\n className: classes.button,\n \"aria-label\": apiRef.current.getLocaleText('columnMenuLabel'),\n size: \"small\",\n onClick: handleMenuIconClick,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": open,\n \"aria-controls\": open ? columnMenuId : undefined,\n id: columnMenuButtonId\n }, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseIconButton, {\n children: /*#__PURE__*/_jsx(rootProps.slots.columnMenuIcon, {\n fontSize: \"small\"\n })\n }))\n }))\n });\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_useEventCallback as useEventCallback, HTMLElementType } from '@mui/utils';\nimport { useGridApiContext } from '../../../hooks/utils/useGridApiContext';\nimport { GridMenu } from '../GridMenu';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction GridColumnHeaderMenu({\n columnMenuId,\n columnMenuButtonId,\n ContentComponent,\n contentComponentProps,\n field,\n open,\n target,\n onExited\n}) {\n const apiRef = useGridApiContext();\n const colDef = apiRef.current.getColumn(field);\n const hideMenu = useEventCallback(event => {\n if (event) {\n // Prevent triggering the sorting\n event.stopPropagation();\n if (target != null && target.contains(event.target)) {\n return;\n }\n }\n apiRef.current.hideColumnMenu();\n });\n if (!target || !colDef) {\n return null;\n }\n return /*#__PURE__*/_jsx(GridMenu, {\n placement: `bottom-${colDef.align === 'right' ? 'start' : 'end'}`,\n open: open,\n target: target,\n onClose: hideMenu,\n onExited: onExited,\n children: /*#__PURE__*/_jsx(ContentComponent, _extends({\n colDef: colDef,\n hideMenu: hideMenu,\n open: open,\n id: columnMenuId,\n labelledby: columnMenuButtonId\n }, contentComponentProps))\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnHeaderMenu.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n columnMenuButtonId: PropTypes.string,\n columnMenuId: PropTypes.string,\n ContentComponent: PropTypes.elementType.isRequired,\n contentComponentProps: PropTypes.any,\n field: PropTypes.string.isRequired,\n onExited: PropTypes.func,\n open: PropTypes.bool.isRequired,\n target: HTMLElementType\n} : void 0;\nexport { GridColumnHeaderMenu };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { styled } from '@mui/system';\nimport { isOverflown } from '../../utils/domUtils';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['columnHeaderTitle']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridColumnHeaderTitleRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'ColumnHeaderTitle',\n overridesResolver: (props, styles) => styles.columnHeaderTitle\n})({\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n fontWeight: 'var(--unstable_DataGrid-headWeight)'\n});\nconst ColumnHeaderInnerTitle = /*#__PURE__*/React.forwardRef(function ColumnHeaderInnerTitle(props, ref) {\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const rootProps = useGridRootProps();\n const classes = useUtilityClasses(rootProps);\n return /*#__PURE__*/_jsx(GridColumnHeaderTitleRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: rootProps\n }, other));\n});\n// No React.memo here as if we display the sort icon, we need to recalculate the isOver\nfunction GridColumnHeaderTitle(props) {\n var _rootProps$slotProps;\n const {\n label,\n description\n } = props;\n const rootProps = useGridRootProps();\n const titleRef = React.useRef(null);\n const [tooltip, setTooltip] = React.useState('');\n const handleMouseOver = React.useCallback(() => {\n if (!description && titleRef != null && titleRef.current) {\n const isOver = isOverflown(titleRef.current);\n if (isOver) {\n setTooltip(label);\n } else {\n setTooltip('');\n }\n }\n }, [description, label]);\n return /*#__PURE__*/_jsx(rootProps.slots.baseTooltip, _extends({\n title: description || tooltip\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseTooltip, {\n children: /*#__PURE__*/_jsx(ColumnHeaderInnerTitle, {\n onMouseOver: handleMouseOver,\n ref: titleRef,\n children: label\n })\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnHeaderTitle.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n columnWidth: PropTypes.number.isRequired,\n description: PropTypes.node,\n label: PropTypes.string.isRequired\n} : void 0;\nexport { GridColumnHeaderTitle };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"resizable\", \"resizing\", \"height\", \"side\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses, unstable_capitalize as capitalize } from '@mui/utils';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar GridColumnHeaderSeparatorSides = /*#__PURE__*/function (GridColumnHeaderSeparatorSides) {\n GridColumnHeaderSeparatorSides[\"Left\"] = \"left\";\n GridColumnHeaderSeparatorSides[\"Right\"] = \"right\";\n return GridColumnHeaderSeparatorSides;\n}(GridColumnHeaderSeparatorSides || {});\nconst useUtilityClasses = ownerState => {\n const {\n resizable,\n resizing,\n classes,\n side\n } = ownerState;\n const slots = {\n root: ['columnSeparator', resizable && 'columnSeparator--resizable', resizing && 'columnSeparator--resizing', side && `columnSeparator--side${capitalize(side)}`],\n icon: ['iconSeparator']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction GridColumnHeaderSeparatorRaw(props) {\n const {\n height,\n side = GridColumnHeaderSeparatorSides.Right\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const rootProps = useGridRootProps();\n const ownerState = _extends({}, props, {\n side,\n classes: rootProps.classes\n });\n const classes = useUtilityClasses(ownerState);\n const stopClick = React.useCallback(event => {\n event.preventDefault();\n event.stopPropagation();\n }, []);\n return (\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n _jsx(\"div\", _extends({\n className: classes.root,\n style: {\n minHeight: height,\n opacity: rootProps.showColumnVerticalBorder ? 0 : 1\n }\n }, other, {\n onClick: stopClick,\n children: /*#__PURE__*/_jsx(rootProps.slots.columnResizeIcon, {\n className: classes.icon\n })\n }))\n );\n}\nconst GridColumnHeaderSeparator = /*#__PURE__*/React.memo(GridColumnHeaderSeparatorRaw);\nprocess.env.NODE_ENV !== \"production\" ? GridColumnHeaderSeparatorRaw.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n height: PropTypes.number.isRequired,\n resizable: PropTypes.bool.isRequired,\n resizing: PropTypes.bool.isRequired,\n side: PropTypes.oneOf(['left', 'right'])\n} : void 0;\nexport { GridColumnHeaderSeparator, GridColumnHeaderSeparatorSides };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"classes\", \"columnMenuOpen\", \"colIndex\", \"height\", \"isResizing\", \"sortDirection\", \"hasFocus\", \"tabIndex\", \"separatorSide\", \"isDraggable\", \"headerComponent\", \"description\", \"elementId\", \"width\", \"columnMenuIconButton\", \"columnMenu\", \"columnTitleIconButtons\", \"headerClassName\", \"label\", \"resizable\", \"draggableContainerProps\", \"columnHeaderSeparatorProps\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { useGridPrivateApiContext } from '../../hooks/utils/useGridPrivateApiContext';\nimport { GridColumnHeaderTitle } from './GridColumnHeaderTitle';\nimport { GridColumnHeaderSeparator } from './GridColumnHeaderSeparator';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst GridGenericColumnHeaderItem = /*#__PURE__*/React.forwardRef(function GridGenericColumnHeaderItem(props, ref) {\n const {\n classes,\n columnMenuOpen,\n colIndex,\n height,\n isResizing,\n sortDirection,\n hasFocus,\n tabIndex,\n separatorSide,\n isDraggable,\n headerComponent,\n description,\n width,\n columnMenuIconButton = null,\n columnMenu = null,\n columnTitleIconButtons = null,\n headerClassName,\n label,\n resizable,\n draggableContainerProps,\n columnHeaderSeparatorProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridPrivateApiContext();\n const rootProps = useGridRootProps();\n const headerCellRef = React.useRef(null);\n const [showColumnMenuIcon, setShowColumnMenuIcon] = React.useState(columnMenuOpen);\n const handleRef = useForkRef(headerCellRef, ref);\n let ariaSort = 'none';\n if (sortDirection != null) {\n ariaSort = sortDirection === 'asc' ? 'ascending' : 'descending';\n }\n React.useEffect(() => {\n if (!showColumnMenuIcon) {\n setShowColumnMenuIcon(columnMenuOpen);\n }\n }, [showColumnMenuIcon, columnMenuOpen]);\n React.useLayoutEffect(() => {\n const columnMenuState = apiRef.current.state.columnMenu;\n if (hasFocus && !columnMenuState.open) {\n const focusableElement = headerCellRef.current.querySelector('[tabindex=\"0\"]');\n const elementToFocus = focusableElement || headerCellRef.current;\n elementToFocus == null || elementToFocus.focus();\n apiRef.current.columnHeadersContainerElementRef.current.scrollLeft = 0;\n }\n }, [apiRef, hasFocus]);\n return /*#__PURE__*/_jsxs(\"div\", _extends({\n ref: handleRef,\n className: clsx(classes.root, headerClassName),\n style: {\n height,\n width,\n minWidth: width,\n maxWidth: width\n },\n role: \"columnheader\",\n tabIndex: tabIndex,\n \"aria-colindex\": colIndex + 1,\n \"aria-sort\": ariaSort,\n \"aria-label\": headerComponent == null ? label : undefined\n }, other, {\n children: [/*#__PURE__*/_jsxs(\"div\", _extends({\n className: classes.draggableContainer,\n draggable: isDraggable,\n role: \"presentation\"\n }, draggableContainerProps, {\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: classes.titleContainer,\n role: \"presentation\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: classes.titleContainerContent,\n children: headerComponent !== undefined ? headerComponent : /*#__PURE__*/_jsx(GridColumnHeaderTitle, {\n label: label,\n description: description,\n columnWidth: width\n })\n }), columnTitleIconButtons]\n }), columnMenuIconButton]\n })), /*#__PURE__*/_jsx(GridColumnHeaderSeparator, _extends({\n resizable: !rootProps.disableColumnResize && !!resizable,\n resizing: isResizing,\n height: height,\n side: separatorSide\n }, columnHeaderSeparatorProps)), columnMenu]\n }));\n});\nexport { GridGenericColumnHeaderItem };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses, unstable_useId as useId } from '@mui/utils';\nimport { useGridPrivateApiContext } from '../../hooks/utils/useGridPrivateApiContext';\nimport { GridColumnHeaderSortIcon } from './GridColumnHeaderSortIcon';\nimport { ColumnHeaderMenuIcon } from './ColumnHeaderMenuIcon';\nimport { GridColumnHeaderMenu } from '../menu/columnMenu/GridColumnHeaderMenu';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { GridGenericColumnHeaderItem } from './GridGenericColumnHeaderItem';\nimport { isEventTargetInPortal } from '../../utils/domUtils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n colDef,\n classes,\n isDragging,\n sortDirection,\n showRightBorder,\n filterItemsCounter\n } = ownerState;\n const isColumnSorted = sortDirection != null;\n const isColumnFiltered = filterItemsCounter != null && filterItemsCounter > 0;\n // todo refactor to a prop on col isNumeric or ?? ie: coltype===price wont work\n const isColumnNumeric = colDef.type === 'number';\n const slots = {\n root: ['columnHeader', colDef.headerAlign === 'left' && 'columnHeader--alignLeft', colDef.headerAlign === 'center' && 'columnHeader--alignCenter', colDef.headerAlign === 'right' && 'columnHeader--alignRight', colDef.sortable && 'columnHeader--sortable', isDragging && 'columnHeader--moving', isColumnSorted && 'columnHeader--sorted', isColumnFiltered && 'columnHeader--filtered', isColumnNumeric && 'columnHeader--numeric', 'withBorderColor', showRightBorder && 'columnHeader--withRightBorder'],\n draggableContainer: ['columnHeaderDraggableContainer'],\n titleContainer: ['columnHeaderTitleContainer'],\n titleContainerContent: ['columnHeaderTitleContainerContent']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction GridColumnHeaderItem(props) {\n var _rootProps$slotProps, _colDef$sortingOrder, _rootProps$slotProps2, _colDef$headerName;\n const {\n colDef,\n columnMenuOpen,\n colIndex,\n headerHeight,\n isResizing,\n sortDirection,\n sortIndex,\n filterItemsCounter,\n hasFocus,\n tabIndex,\n disableReorder,\n separatorSide\n } = props;\n const apiRef = useGridPrivateApiContext();\n const rootProps = useGridRootProps();\n const headerCellRef = React.useRef(null);\n const columnMenuId = useId();\n const columnMenuButtonId = useId();\n const iconButtonRef = React.useRef(null);\n const [showColumnMenuIcon, setShowColumnMenuIcon] = React.useState(columnMenuOpen);\n const isDraggable = React.useMemo(() => !rootProps.disableColumnReorder && !disableReorder && !colDef.disableReorder, [rootProps.disableColumnReorder, disableReorder, colDef.disableReorder]);\n let headerComponent;\n if (colDef.renderHeader) {\n headerComponent = colDef.renderHeader(apiRef.current.getColumnHeaderParams(colDef.field));\n }\n const ownerState = _extends({}, props, {\n classes: rootProps.classes,\n showRightBorder: rootProps.showColumnVerticalBorder\n });\n const classes = useUtilityClasses(ownerState);\n const publish = React.useCallback(eventName => event => {\n // Ignore portal\n // See https://github.com/mui/mui-x/issues/1721\n if (isEventTargetInPortal(event)) {\n return;\n }\n apiRef.current.publishEvent(eventName, apiRef.current.getColumnHeaderParams(colDef.field), event);\n }, [apiRef, colDef.field]);\n const mouseEventsHandlers = React.useMemo(() => ({\n onClick: publish('columnHeaderClick'),\n onDoubleClick: publish('columnHeaderDoubleClick'),\n onMouseOver: publish('columnHeaderOver'),\n // TODO remove as it's not used\n onMouseOut: publish('columnHeaderOut'),\n // TODO remove as it's not used\n onMouseEnter: publish('columnHeaderEnter'),\n // TODO remove as it's not used\n onMouseLeave: publish('columnHeaderLeave'),\n // TODO remove as it's not used\n onKeyDown: publish('columnHeaderKeyDown'),\n onFocus: publish('columnHeaderFocus'),\n onBlur: publish('columnHeaderBlur')\n }), [publish]);\n const draggableEventHandlers = React.useMemo(() => isDraggable ? {\n onDragStart: publish('columnHeaderDragStart'),\n onDragEnter: publish('columnHeaderDragEnter'),\n onDragOver: publish('columnHeaderDragOver'),\n onDragEnd: publish('columnHeaderDragEnd')\n } : {}, [isDraggable, publish]);\n const columnHeaderSeparatorProps = React.useMemo(() => ({\n onMouseDown: publish('columnSeparatorMouseDown'),\n onDoubleClick: publish('columnSeparatorDoubleClick')\n }), [publish]);\n React.useEffect(() => {\n if (!showColumnMenuIcon) {\n setShowColumnMenuIcon(columnMenuOpen);\n }\n }, [showColumnMenuIcon, columnMenuOpen]);\n const handleExited = React.useCallback(() => {\n setShowColumnMenuIcon(false);\n }, []);\n const columnMenuIconButton = !rootProps.disableColumnMenu && !colDef.disableColumnMenu && /*#__PURE__*/_jsx(ColumnHeaderMenuIcon, {\n colDef: colDef,\n columnMenuId: columnMenuId,\n columnMenuButtonId: columnMenuButtonId,\n open: showColumnMenuIcon,\n iconButtonRef: iconButtonRef\n });\n const columnMenu = /*#__PURE__*/_jsx(GridColumnHeaderMenu, {\n columnMenuId: columnMenuId,\n columnMenuButtonId: columnMenuButtonId,\n field: colDef.field,\n open: columnMenuOpen,\n target: iconButtonRef.current,\n ContentComponent: rootProps.slots.columnMenu,\n contentComponentProps: (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.columnMenu,\n onExited: handleExited\n });\n const sortingOrder = (_colDef$sortingOrder = colDef.sortingOrder) != null ? _colDef$sortingOrder : rootProps.sortingOrder;\n const columnTitleIconButtons = /*#__PURE__*/_jsxs(React.Fragment, {\n children: [!rootProps.disableColumnFilter && /*#__PURE__*/_jsx(rootProps.slots.columnHeaderFilterIconButton, _extends({\n field: colDef.field,\n counter: filterItemsCounter\n }, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.columnHeaderFilterIconButton)), colDef.sortable && !colDef.hideSortIcons && /*#__PURE__*/_jsx(GridColumnHeaderSortIcon, {\n direction: sortDirection,\n index: sortIndex,\n sortingOrder: sortingOrder\n })]\n });\n React.useLayoutEffect(() => {\n const columnMenuState = apiRef.current.state.columnMenu;\n if (hasFocus && !columnMenuState.open) {\n const focusableElement = headerCellRef.current.querySelector('[tabindex=\"0\"]');\n const elementToFocus = focusableElement || headerCellRef.current;\n elementToFocus == null || elementToFocus.focus();\n apiRef.current.columnHeadersContainerElementRef.current.scrollLeft = 0;\n }\n }, [apiRef, hasFocus]);\n const headerClassName = typeof colDef.headerClassName === 'function' ? colDef.headerClassName({\n field: colDef.field,\n colDef\n }) : colDef.headerClassName;\n const label = (_colDef$headerName = colDef.headerName) != null ? _colDef$headerName : colDef.field;\n return /*#__PURE__*/_jsx(GridGenericColumnHeaderItem, _extends({\n ref: headerCellRef,\n classes: classes,\n columnMenuOpen: columnMenuOpen,\n colIndex: colIndex,\n height: headerHeight,\n isResizing: isResizing,\n sortDirection: sortDirection,\n hasFocus: hasFocus,\n tabIndex: tabIndex,\n separatorSide: separatorSide,\n isDraggable: isDraggable,\n headerComponent: headerComponent,\n description: colDef.description,\n elementId: colDef.field,\n width: colDef.computedWidth,\n columnMenuIconButton: columnMenuIconButton,\n columnTitleIconButtons: columnTitleIconButtons,\n headerClassName: headerClassName,\n label: label,\n resizable: !rootProps.disableColumnResize && !!colDef.resizable,\n \"data-field\": colDef.field,\n columnMenu: columnMenu,\n draggableContainerProps: draggableEventHandlers,\n columnHeaderSeparatorProps: columnHeaderSeparatorProps\n }, mouseEventsHandlers));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnHeaderItem.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n colDef: PropTypes.object.isRequired,\n colIndex: PropTypes.number.isRequired,\n columnMenuOpen: PropTypes.bool.isRequired,\n disableReorder: PropTypes.bool,\n filterItemsCounter: PropTypes.number,\n hasFocus: PropTypes.bool,\n headerHeight: PropTypes.number.isRequired,\n isDragging: PropTypes.bool.isRequired,\n isResizing: PropTypes.bool.isRequired,\n separatorSide: PropTypes.oneOf(['left', 'right']),\n sortDirection: PropTypes.oneOf(['asc', 'desc']),\n sortIndex: PropTypes.number,\n tabIndex: PropTypes.oneOf([-1, 0]).isRequired\n} : void 0;\nexport { GridColumnHeaderItem };","import { GridLogicOperator } from '../../../models/gridFilterItem';\nexport const getDefaultGridFilterModel = () => ({\n items: [],\n logicOperator: GridLogicOperator.And,\n quickFilterValues: [],\n quickFilterLogicOperator: GridLogicOperator.And\n});\n\n/**\n * @param {GridRowId} rowId The id of the row we want to filter.\n * @param {(filterItem: GridFilterItem) => boolean} shouldApplyItem An optional callback to allow the filtering engine to only apply some items.\n */\n\n/**\n * Visibility status for each row.\n * A row is visible if it is passing the filters AND if its parents are expanded.\n * If a row is not registered in this lookup, it is visible.\n */","// If no effect ran after this amount of time, we assume that the render was not committed by React\nconst CLEANUP_TIMER_LOOP_MILLIS = 1000;\nexport class TimerBasedCleanupTracking {\n constructor(timeout = CLEANUP_TIMER_LOOP_MILLIS) {\n this.timeouts = new Map();\n this.cleanupTimeout = CLEANUP_TIMER_LOOP_MILLIS;\n this.cleanupTimeout = timeout;\n }\n register(object, unsubscribe, unregisterToken) {\n if (!this.timeouts) {\n this.timeouts = new Map();\n }\n const timeout = setTimeout(() => {\n if (typeof unsubscribe === 'function') {\n unsubscribe();\n }\n this.timeouts.delete(unregisterToken.cleanupToken);\n }, this.cleanupTimeout);\n this.timeouts.set(unregisterToken.cleanupToken, timeout);\n }\n unregister(unregisterToken) {\n const timeout = this.timeouts.get(unregisterToken.cleanupToken);\n if (timeout) {\n this.timeouts.delete(unregisterToken.cleanupToken);\n clearTimeout(timeout);\n }\n }\n reset() {\n if (this.timeouts) {\n this.timeouts.forEach((value, key) => {\n this.unregister({\n cleanupToken: key\n });\n });\n this.timeouts = undefined;\n }\n }\n}","export class FinalizationRegistryBasedCleanupTracking {\n constructor() {\n this.registry = new FinalizationRegistry(unsubscribe => {\n if (typeof unsubscribe === 'function') {\n unsubscribe();\n }\n });\n }\n register(object, unsubscribe, unregisterToken) {\n this.registry.register(object, unsubscribe, unregisterToken);\n }\n unregister(unregisterToken) {\n this.registry.unregister(unregisterToken);\n }\n\n // eslint-disable-next-line class-methods-use-this\n reset() {}\n}","import * as React from 'react';\nimport { TimerBasedCleanupTracking } from '../../utils/cleanupTracking/TimerBasedCleanupTracking';\nimport { FinalizationRegistryBasedCleanupTracking } from '../../utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking';\n/**\n * Signal to the underlying logic what version of the public component API\n * of the data grid is exposed.\n */\nvar GridSignature = /*#__PURE__*/function (GridSignature) {\n GridSignature[\"DataGrid\"] = \"DataGrid\";\n GridSignature[\"DataGridPro\"] = \"DataGridPro\";\n return GridSignature;\n}(GridSignature || {});\n// We use class to make it easier to detect in heap snapshots by name\nclass ObjectToBeRetainedByReact {}\n\n// Based on https://github.com/Bnaya/use-dispose-uncommitted/blob/main/src/finalization-registry-based-impl.ts\n// Check https://github.com/facebook/react/issues/15317 to get more information\nexport function createUseGridApiEventHandler(registryContainer) {\n let cleanupTokensCounter = 0;\n return function useGridApiEventHandler(apiRef, eventName, handler, options) {\n if (registryContainer.registry === null) {\n registryContainer.registry = typeof FinalizationRegistry !== 'undefined' ? new FinalizationRegistryBasedCleanupTracking() : new TimerBasedCleanupTracking();\n }\n const [objectRetainedByReact] = React.useState(new ObjectToBeRetainedByReact());\n const subscription = React.useRef(null);\n const handlerRef = React.useRef();\n handlerRef.current = handler;\n const cleanupTokenRef = React.useRef(null);\n if (!subscription.current && handlerRef.current) {\n const enhancedHandler = (params, event, details) => {\n if (!event.defaultMuiPrevented) {\n var _handlerRef$current;\n (_handlerRef$current = handlerRef.current) == null || _handlerRef$current.call(handlerRef, params, event, details);\n }\n };\n subscription.current = apiRef.current.subscribeEvent(eventName, enhancedHandler, options);\n cleanupTokensCounter += 1;\n cleanupTokenRef.current = {\n cleanupToken: cleanupTokensCounter\n };\n registryContainer.registry.register(objectRetainedByReact,\n // The callback below will be called once this reference stops being retained\n () => {\n var _subscription$current;\n (_subscription$current = subscription.current) == null || _subscription$current.call(subscription);\n subscription.current = null;\n cleanupTokenRef.current = null;\n }, cleanupTokenRef.current);\n } else if (!handlerRef.current && subscription.current) {\n subscription.current();\n subscription.current = null;\n if (cleanupTokenRef.current) {\n registryContainer.registry.unregister(cleanupTokenRef.current);\n cleanupTokenRef.current = null;\n }\n }\n React.useEffect(() => {\n if (!subscription.current && handlerRef.current) {\n const enhancedHandler = (params, event, details) => {\n if (!event.defaultMuiPrevented) {\n var _handlerRef$current2;\n (_handlerRef$current2 = handlerRef.current) == null || _handlerRef$current2.call(handlerRef, params, event, details);\n }\n };\n subscription.current = apiRef.current.subscribeEvent(eventName, enhancedHandler, options);\n }\n if (cleanupTokenRef.current && registryContainer.registry) {\n // If the effect was called, it means that this render was committed\n // so we can trust the cleanup function to remove the listener.\n registryContainer.registry.unregister(cleanupTokenRef.current);\n cleanupTokenRef.current = null;\n }\n return () => {\n var _subscription$current2;\n (_subscription$current2 = subscription.current) == null || _subscription$current2.call(subscription);\n subscription.current = null;\n };\n }, [apiRef, eventName, options]);\n };\n}\nconst registryContainer = {\n registry: null\n};\n\n// TODO: move to @mui/x-data-grid/internals\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_resetCleanupTracking = () => {\n var _registryContainer$re;\n (_registryContainer$re = registryContainer.registry) == null || _registryContainer$re.reset();\n registryContainer.registry = null;\n};\nexport const useGridApiEventHandler = createUseGridApiEventHandler(registryContainer);\nconst optionsSubscriberOptions = {\n isFirst: true\n};\nexport function useGridApiOptionHandler(apiRef, eventName, handler) {\n // Validate that only one per event name?\n useGridApiEventHandler(apiRef, eventName, handler, optionsSubscriberOptions);\n}\nexport { GridSignature };","import * as React from 'react';\nexport function useGridLogger(privateApiRef, name) {\n const logger = React.useRef(null);\n if (logger.current) {\n return logger.current;\n }\n const newLogger = privateApiRef.current.getLogger(name);\n logger.current = newLogger;\n return newLogger;\n}","export function isNumber(value) {\n return typeof value === 'number' && !Number.isNaN(value);\n}\nexport function isFunction(value) {\n return typeof value === 'function';\n}\nexport function isObject(value) {\n return typeof value === 'object' && value !== null;\n}\nexport function localStorageAvailable() {\n try {\n // Incognito mode might reject access to the localStorage for security reasons.\n // window isn't defined on Node.js\n // https://stackoverflow.com/questions/16427636/check-if-localstorage-is-available\n const key = '__some_random_key_you_are_not_going_to_use__';\n window.localStorage.setItem(key, key);\n window.localStorage.removeItem(key);\n return true;\n } catch (err) {\n return false;\n }\n}\nexport function escapeRegExp(value) {\n return value.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\n\n/**\n * Follows the CSS specification behavior for min and max\n * If min > max, then the min have priority\n */\nexport const clamp = (value, min, max) => Math.max(min, Math.min(max, value));\n\n/**\n * Based on `fast-deep-equal`\n *\n * MIT License\n *\n * Copyright (c) 2017 Evgeny Poberezkin\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n * We only type the public interface to avoid dozens of `as` in the function.\n */\n\nexport function isDeepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n if (a.constructor !== b.constructor) {\n return false;\n }\n if (Array.isArray(a)) {\n const length = a.length;\n if (length !== b.length) {\n return false;\n }\n for (let i = 0; i < length; i += 1) {\n if (!isDeepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n if (a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) {\n return false;\n }\n const entriesA = Array.from(a.entries());\n for (let i = 0; i < entriesA.length; i += 1) {\n if (!b.has(entriesA[i][0])) {\n return false;\n }\n }\n for (let i = 0; i < entriesA.length; i += 1) {\n const entryA = entriesA[i];\n if (!isDeepEqual(entryA[1], b.get(entryA[0]))) {\n return false;\n }\n }\n return true;\n }\n if (a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) {\n return false;\n }\n const entries = Array.from(a.entries());\n for (let i = 0; i < entries.length; i += 1) {\n if (!b.has(entries[i][0])) {\n return false;\n }\n }\n return true;\n }\n if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n const length = a.length;\n if (length !== b.length) {\n return false;\n }\n for (let i = 0; i < length; i += 1) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n }\n if (a.constructor === RegExp) {\n return a.source === b.source && a.flags === b.flags;\n }\n if (a.valueOf !== Object.prototype.valueOf) {\n return a.valueOf() === b.valueOf();\n }\n if (a.toString !== Object.prototype.toString) {\n return a.toString() === b.toString();\n }\n const keys = Object.keys(a);\n const length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (let i = 0; i < length; i += 1) {\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (let i = 0; i < length; i += 1) {\n const key = keys[i];\n if (!isDeepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n\n // true if both NaN, false otherwise\n // eslint-disable-next-line no-self-compare\n return a !== a && b !== b;\n}\n\n// Pseudo random number. See https://stackoverflow.com/a/47593316\nfunction mulberry32(a) {\n return () => {\n /* eslint-disable */\n let t = a += 0x6d2b79f5;\n t = Math.imul(t ^ t >>> 15, t | 1);\n t ^= t + Math.imul(t ^ t >>> 7, t | 61);\n return ((t ^ t >>> 14) >>> 0) / 4294967296;\n /* eslint-enable */\n };\n}\nexport function randomNumberBetween(seed, min, max) {\n const random = mulberry32(seed);\n return () => min + (max - min) * random();\n}\nexport function deepClone(obj) {\n if (typeof structuredClone === 'function') {\n return structuredClone(obj);\n }\n return JSON.parse(JSON.stringify(obj));\n}","import * as React from 'react';\nimport { isFunction } from '../../utils/utils';\nimport { useGridLogger } from './useGridLogger';\nexport const useGridNativeEventListener = (apiRef, ref, eventName, handler, options) => {\n const logger = useGridLogger(apiRef, 'useNativeEventListener');\n const [added, setAdded] = React.useState(false);\n const handlerRef = React.useRef(handler);\n const wrapHandler = React.useCallback(event => {\n return handlerRef.current && handlerRef.current(event);\n }, []);\n React.useEffect(() => {\n handlerRef.current = handler;\n }, [handler]);\n React.useEffect(() => {\n let targetElement;\n if (isFunction(ref)) {\n targetElement = ref();\n } else {\n targetElement = ref && ref.current ? ref.current : null;\n }\n if (targetElement && eventName && !added) {\n logger.debug(`Binding native ${eventName} event`);\n targetElement.addEventListener(eventName, wrapHandler, options);\n const boundElem = targetElement;\n setAdded(true);\n const unsubscribe = () => {\n logger.debug(`Clearing native ${eventName} event`);\n boundElem.removeEventListener(eventName, wrapHandler, options);\n };\n apiRef.current.subscribeEvent('unmount', unsubscribe);\n }\n }, [ref, wrapHandler, eventName, added, logger, options, apiRef]);\n};","import * as React from 'react';\nexport const useFirstRender = callback => {\n const isFirstRender = React.useRef(true);\n if (isFirstRender.current) {\n isFirstRender.current = false;\n callback();\n }\n};","import { buildWarning } from '../../../utils/warning';\nimport { GridSignature } from '../../utils';\nconst MAX_PAGE_SIZE = 100;\nexport const defaultPageSize = autoPageSize => autoPageSize ? 0 : 100;\nexport const getPageCount = (rowCount, pageSize) => {\n if (pageSize > 0 && rowCount > 0) {\n return Math.ceil(rowCount / pageSize);\n }\n return 0;\n};\nexport const noRowCountInServerMode = buildWarning([\"MUI: the 'rowCount' prop is undefined while using paginationMode='server'\", 'For more detail, see http://mui.com/components/data-grid/pagination/#basic-implementation'], 'error');\nexport const getDefaultGridPaginationModel = autoPageSize => ({\n page: 0,\n pageSize: autoPageSize ? 0 : 100\n});\nexport const getValidPage = (page, pageCount = 0) => {\n if (pageCount === 0) {\n return page;\n }\n return Math.max(Math.min(page, pageCount - 1), 0);\n};\nexport const throwIfPageSizeExceedsTheLimit = (pageSize, signatureProp) => {\n if (signatureProp === GridSignature.DataGrid && pageSize > MAX_PAGE_SIZE) {\n throw new Error(['MUI: `pageSize` cannot exceed 100 in the MIT version of the DataGrid.', 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.'].join('\\n'));\n }\n};","import { createSelector, createSelectorMemoized } from '../../../utils/createSelector';\nimport { gridFilteredTopLevelRowCountSelector, gridExpandedSortedRowEntriesSelector, gridExpandedSortedRowIdsSelector, gridFilteredSortedTopLevelRowEntriesSelector } from '../filter/gridFilterSelector';\nimport { gridRowMaximumTreeDepthSelector, gridRowTreeSelector } from '../rows/gridRowsSelector';\nimport { getPageCount } from './gridPaginationUtils';\n\n/**\n * @category Pagination\n * @ignore - do not document.\n */\nexport const gridPaginationSelector = state => state.pagination;\n\n/**\n * Get the pagination model\n * @category Pagination\n */\nexport const gridPaginationModelSelector = createSelector(gridPaginationSelector, pagination => pagination.paginationModel);\n\n/**\n * Get the index of the page to render if the pagination is enabled\n * @category Pagination\n */\nexport const gridPageSelector = createSelector(gridPaginationModelSelector, paginationModel => paginationModel.page);\n\n/**\n * Get the maximum amount of rows to display on a single page if the pagination is enabled\n * @category Pagination\n */\nexport const gridPageSizeSelector = createSelector(gridPaginationModelSelector, paginationModel => paginationModel.pageSize);\n\n/**\n * Get the amount of pages needed to display all the rows if the pagination is enabled\n * @category Pagination\n */\nexport const gridPageCountSelector = createSelector(gridPaginationModelSelector, gridFilteredTopLevelRowCountSelector, (paginationModel, visibleTopLevelRowCount) => getPageCount(visibleTopLevelRowCount, paginationModel.pageSize));\n\n/**\n * Get the index of the first and the last row to include in the current page if the pagination is enabled.\n * @category Pagination\n */\nexport const gridPaginationRowRangeSelector = createSelectorMemoized(gridPaginationModelSelector, gridRowTreeSelector, gridRowMaximumTreeDepthSelector, gridExpandedSortedRowEntriesSelector, gridFilteredSortedTopLevelRowEntriesSelector, (paginationModel, rowTree, rowTreeDepth, visibleSortedRowEntries, visibleSortedTopLevelRowEntries) => {\n const visibleTopLevelRowCount = visibleSortedTopLevelRowEntries.length;\n const topLevelFirstRowIndex = Math.min(paginationModel.pageSize * paginationModel.page, visibleTopLevelRowCount - 1);\n const topLevelLastRowIndex = Math.min(topLevelFirstRowIndex + paginationModel.pageSize - 1, visibleTopLevelRowCount - 1);\n\n // The range contains no element\n if (topLevelFirstRowIndex === -1 || topLevelLastRowIndex === -1) {\n return null;\n }\n\n // The tree is flat, there is no need to look for children\n if (rowTreeDepth < 2) {\n return {\n firstRowIndex: topLevelFirstRowIndex,\n lastRowIndex: topLevelLastRowIndex\n };\n }\n const topLevelFirstRow = visibleSortedTopLevelRowEntries[topLevelFirstRowIndex];\n const topLevelRowsInCurrentPageCount = topLevelLastRowIndex - topLevelFirstRowIndex + 1;\n const firstRowIndex = visibleSortedRowEntries.findIndex(row => row.id === topLevelFirstRow.id);\n let lastRowIndex = firstRowIndex;\n let topLevelRowAdded = 0;\n while (lastRowIndex < visibleSortedRowEntries.length && topLevelRowAdded <= topLevelRowsInCurrentPageCount) {\n var _rowTree$row$id;\n const row = visibleSortedRowEntries[lastRowIndex];\n const depth = (_rowTree$row$id = rowTree[row.id]) == null ? void 0 : _rowTree$row$id.depth;\n if (depth === undefined) {\n lastRowIndex += 1;\n } else {\n if (topLevelRowAdded < topLevelRowsInCurrentPageCount || depth > 0) {\n lastRowIndex += 1;\n }\n if (depth === 0) {\n topLevelRowAdded += 1;\n }\n }\n }\n return {\n firstRowIndex,\n lastRowIndex: lastRowIndex - 1\n };\n});\n\n/**\n * Get the id and the model of each row to include in the current page if the pagination is enabled.\n * @category Pagination\n */\nexport const gridPaginatedVisibleSortedGridRowEntriesSelector = createSelectorMemoized(gridExpandedSortedRowEntriesSelector, gridPaginationRowRangeSelector, (visibleSortedRowEntries, paginationRange) => {\n if (!paginationRange) {\n return [];\n }\n return visibleSortedRowEntries.slice(paginationRange.firstRowIndex, paginationRange.lastRowIndex + 1);\n});\n\n/**\n * Get the id of each row to include in the current page if the pagination is enabled.\n * @category Pagination\n */\nexport const gridPaginatedVisibleSortedGridRowIdsSelector = createSelectorMemoized(gridExpandedSortedRowIdsSelector, gridPaginationRowRangeSelector, (visibleSortedRowIds, paginationRange) => {\n if (!paginationRange) {\n return [];\n }\n return visibleSortedRowIds.slice(paginationRange.firstRowIndex, paginationRange.lastRowIndex + 1);\n});","export const gridPreferencePanelStateSelector = state => state.preferencePanel;","var GridPreferencePanelsValue = /*#__PURE__*/function (GridPreferencePanelsValue) {\n GridPreferencePanelsValue[\"filters\"] = \"filters\";\n GridPreferencePanelsValue[\"columns\"] = \"columns\";\n return GridPreferencePanelsValue;\n}(GridPreferencePanelsValue || {});\nexport { GridPreferencePanelsValue };","export const gridRowsMetaSelector = state => state.rowsMeta;","import { createSelector, createSelectorMemoized } from '../../../utils/createSelector';\nimport { gridRowsLookupSelector } from '../rows/gridRowsSelector';\nexport const gridRowSelectionStateSelector = state => state.rowSelection;\nexport const selectedGridRowsCountSelector = createSelector(gridRowSelectionStateSelector, selection => selection.length);\nexport const selectedGridRowsSelector = createSelectorMemoized(gridRowSelectionStateSelector, gridRowsLookupSelector, (selectedRows, rowsLookup) => new Map(selectedRows.map(id => [id, rowsLookup[id]])));\nexport const selectedIdsLookupSelector = createSelectorMemoized(gridRowSelectionStateSelector, selection => selection.reduce((lookup, rowId) => {\n lookup[rowId] = rowId;\n return lookup;\n}, {}));","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { buildWarning } from '../../../utils/warning';\nconst sortModelDisableMultiColumnsSortingWarning = buildWarning(['MUI: The `sortModel` can only contain a single item when the `disableMultipleColumnsSorting` prop is set to `true`.', 'If you are using the community version of the `DataGrid`, this prop is always `true`.'], 'error');\nexport const sanitizeSortModel = (model, disableMultipleColumnsSorting) => {\n if (disableMultipleColumnsSorting && model.length > 1) {\n sortModelDisableMultiColumnsSortingWarning();\n return [model[0]];\n }\n return model;\n};\nexport const mergeStateWithSortModel = (sortModel, disableMultipleColumnsSorting) => state => _extends({}, state, {\n sorting: _extends({}, state.sorting, {\n sortModel: sanitizeSortModel(sortModel, disableMultipleColumnsSorting)\n })\n});\nconst isDesc = direction => direction === 'desc';\n\n/**\n * Transform an item of the sorting model into a method comparing two rows.\n * @param {GridSortItem} sortItem The sort item we want to apply.\n * @param {React.MutableRefObject} apiRef The API of the grid.\n * @returns {GridParsedSortItem | null} The parsed sort item. Returns `null` is the sort item is not valid.\n */\nconst parseSortItem = (sortItem, apiRef) => {\n const column = apiRef.current.getColumn(sortItem.field);\n if (!column) {\n return null;\n }\n const comparator = isDesc(sortItem.sort) ? (...args) => -1 * column.sortComparator(...args) : column.sortComparator;\n const getSortCellParams = id => ({\n id,\n field: column.field,\n rowNode: apiRef.current.getRowNode(id),\n value: apiRef.current.getCellValue(id, column.field),\n api: apiRef.current\n });\n return {\n getSortCellParams,\n comparator\n };\n};\n/**\n * Compare two rows according to a list of valid sort items.\n * The `row1Params` and `row2Params` must have the same length as `parsedSortItems`,\n * and each of their index must contain the `GridSortCellParams` of the sort item with the same index.\n * @param {GridParsedSortItem[]} parsedSortItems All the sort items with which we want to compare the rows.\n * @param {GridRowAggregatedSortingParams} row1 The node and params of the 1st row for each sort item.\n * @param {GridRowAggregatedSortingParams} row2 The node and params of the 2nd row for each sort item.\n */\nconst compareRows = (parsedSortItems, row1, row2) => {\n return parsedSortItems.reduce((res, item, index) => {\n if (res !== 0) {\n // return the results of the first comparator which distinguish the two rows\n return res;\n }\n const sortCellParams1 = row1.params[index];\n const sortCellParams2 = row2.params[index];\n res = item.comparator(sortCellParams1.value, sortCellParams2.value, sortCellParams1, sortCellParams2);\n return res;\n }, 0);\n};\n\n/**\n * Generates a method to easily sort a list of rows according to the current sort model.\n * @param {GridSortModel} sortModel The model with which we want to sort the rows.\n * @param {React.MutableRefObject} apiRef The API of the grid.\n * @returns {GridSortingModelApplier | null} A method that generates a list of sorted row ids from a list of rows according to the current sort model. If `null`, we consider that the rows should remain in the order there were provided.\n */\nexport const buildAggregatedSortingApplier = (sortModel, apiRef) => {\n const comparatorList = sortModel.map(item => parseSortItem(item, apiRef)).filter(comparator => !!comparator);\n if (comparatorList.length === 0) {\n return null;\n }\n return rowList => rowList.map(node => ({\n node,\n params: comparatorList.map(el => el.getSortCellParams(node.id))\n })).sort((a, b) => compareRows(comparatorList, a, b)).map(row => row.node.id);\n};\nexport const getNextGridSortDirection = (sortingOrder, current) => {\n const currentIdx = sortingOrder.indexOf(current);\n if (!current || currentIdx === -1 || currentIdx + 1 === sortingOrder.length) {\n return sortingOrder[0];\n }\n return sortingOrder[currentIdx + 1];\n};\nconst gridNillComparator = (v1, v2) => {\n if (v1 == null && v2 != null) {\n return -1;\n }\n if (v2 == null && v1 != null) {\n return 1;\n }\n if (v1 == null && v2 == null) {\n return 0;\n }\n return null;\n};\nconst collator = new Intl.Collator();\nexport const gridStringOrNumberComparator = (value1, value2) => {\n const nillResult = gridNillComparator(value1, value2);\n if (nillResult !== null) {\n return nillResult;\n }\n if (typeof value1 === 'string') {\n return collator.compare(value1.toString(), value2.toString());\n }\n return value1 - value2;\n};\nexport const gridNumberComparator = (value1, value2) => {\n const nillResult = gridNillComparator(value1, value2);\n if (nillResult !== null) {\n return nillResult;\n }\n return Number(value1) - Number(value2);\n};\nexport const gridDateComparator = (value1, value2) => {\n const nillResult = gridNillComparator(value1, value2);\n if (nillResult !== null) {\n return nillResult;\n }\n if (value1 > value2) {\n return 1;\n }\n if (value1 < value2) {\n return -1;\n }\n return 0;\n};","/* eslint-disable @typescript-eslint/naming-convention */\nimport { createSelector } from '../../../utils/createSelector';\nexport const unstable_gridHeaderFilteringStateSelector = state => state.headerFiltering;\nexport const unstable_gridHeaderFilteringEditFieldSelector = createSelector(unstable_gridHeaderFilteringStateSelector, headerFilteringState => headerFilteringState.editing);\nexport const unstable_gridHeaderFilteringMenuSelector = createSelector(unstable_gridHeaderFilteringStateSelector, headerFilteringState => headerFilteringState.menuOpen);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useGridApiMethod } from '../../utils/useGridApiMethod';\nexport const virtualizationStateInitializer = (state, props) => {\n const virtualization = {\n enabled: !props.disableVirtualization,\n enabledForColumns: true\n };\n return _extends({}, state, {\n virtualization\n });\n};\nexport function useGridVirtualization(apiRef, props) {\n /*\n * API METHODS\n */\n\n const setVirtualization = enabled => {\n apiRef.current.setState(state => _extends({}, state, {\n virtualization: _extends({}, state.virtualization, {\n enabled\n })\n }));\n };\n const setColumnVirtualization = enabled => {\n apiRef.current.setState(state => _extends({}, state, {\n virtualization: _extends({}, state.virtualization, {\n enabledForColumns: enabled\n })\n }));\n };\n const api = {\n unstable_setVirtualization: setVirtualization,\n unstable_setColumnVirtualization: setColumnVirtualization\n };\n useGridApiMethod(apiRef, api, 'public');\n\n /*\n * EFFECTS\n */\n\n /* eslint-disable react-hooks/exhaustive-deps */\n React.useEffect(() => {\n setVirtualization(!props.disableVirtualization);\n }, [props.disableVirtualization]);\n /* eslint-enable react-hooks/exhaustive-deps */\n}","import { createSelector } from '../../../utils/createSelector';\n/**\n * Get the columns state\n * @category Virtualization\n */\nexport const gridVirtualizationSelector = state => state.virtualization;\n\n/**\n * Get the enabled state for virtualization\n * @category Virtualization\n */\nexport const gridVirtualizationEnabledSelector = createSelector(gridVirtualizationSelector, state => state.enabled);\n\n/**\n * Get the enabled state for virtualization\n * @category Virtualization\n */\nexport const gridVirtualizationColumnEnabledSelector = createSelector(gridVirtualizationSelector, state => state.enabledForColumns);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses, unstable_useId as useId } from '@mui/utils';\nimport Badge from '@mui/material/Badge';\nimport { useGridSelector } from '../../hooks';\nimport { gridPreferencePanelStateSelector } from '../../hooks/features/preferencesPanel/gridPreferencePanelSelector';\nimport { GridPreferencePanelsValue } from '../../hooks/features/preferencesPanel/gridPreferencePanelsValue';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { GridIconButtonContainer } from './GridIconButtonContainer';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n icon: ['filterIcon']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction GridColumnHeaderFilterIconButton(props) {\n var _rootProps$slotProps, _rootProps$slotProps2;\n const {\n counter,\n field,\n onClick\n } = props;\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const ownerState = _extends({}, props, {\n classes: rootProps.classes\n });\n const classes = useUtilityClasses(ownerState);\n const preferencePanel = useGridSelector(apiRef, gridPreferencePanelStateSelector);\n const labelId = useId();\n const panelId = useId();\n const toggleFilter = React.useCallback(event => {\n event.preventDefault();\n event.stopPropagation();\n const {\n open,\n openedPanelValue\n } = gridPreferencePanelStateSelector(apiRef.current.state);\n if (open && openedPanelValue === GridPreferencePanelsValue.filters) {\n apiRef.current.hideFilterPanel();\n } else {\n apiRef.current.showFilterPanel(undefined, panelId, labelId);\n }\n if (onClick) {\n onClick(apiRef.current.getColumnHeaderParams(field), event);\n }\n }, [apiRef, field, onClick, panelId, labelId]);\n if (!counter) {\n return null;\n }\n const open = preferencePanel.open && preferencePanel.labelId === labelId;\n const iconButton = /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, _extends({\n id: labelId,\n onClick: toggleFilter,\n color: \"default\",\n \"aria-label\": apiRef.current.getLocaleText('columnHeaderFiltersLabel'),\n size: \"small\",\n tabIndex: -1,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": open,\n \"aria-controls\": open ? panelId : undefined\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseIconButton, {\n children: /*#__PURE__*/_jsx(rootProps.slots.columnFilteredIcon, {\n className: classes.icon,\n fontSize: \"small\"\n })\n }));\n return /*#__PURE__*/_jsx(rootProps.slots.baseTooltip, _extends({\n title: apiRef.current.getLocaleText('columnHeaderFiltersTooltipActive')(counter),\n enterDelay: 1000\n }, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseTooltip, {\n children: /*#__PURE__*/_jsxs(GridIconButtonContainer, {\n children: [counter > 1 && /*#__PURE__*/_jsx(Badge, {\n badgeContent: counter,\n color: \"default\",\n children: iconButton\n }), counter === 1 && iconButton]\n })\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnHeaderFilterIconButton.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n counter: PropTypes.number,\n field: PropTypes.string.isRequired,\n onClick: PropTypes.func\n} : void 0;\nexport { GridColumnHeaderFilterIconButton };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"field\", \"id\", \"value\", \"formattedValue\", \"row\", \"rowNode\", \"colDef\", \"isEditable\", \"cellMode\", \"hasFocus\", \"tabIndex\", \"api\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses, unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { isSpaceKey } from '../../utils/keyboardUtils';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['checkboxInput']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridCellCheckboxForwardRef = /*#__PURE__*/React.forwardRef(function GridCellCheckboxRenderer(props, ref) {\n var _rootProps$slotProps;\n const {\n field,\n id,\n value: isChecked,\n rowNode,\n hasFocus,\n tabIndex\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const ownerState = {\n classes: rootProps.classes\n };\n const classes = useUtilityClasses(ownerState);\n const checkboxElement = React.useRef(null);\n const rippleRef = React.useRef(null);\n const handleRef = useForkRef(checkboxElement, ref);\n const element = apiRef.current.getCellElement(id, field);\n const handleChange = event => {\n const params = {\n value: event.target.checked,\n id\n };\n apiRef.current.publishEvent('rowSelectionCheckboxChange', params, event);\n };\n React.useLayoutEffect(() => {\n if (tabIndex === 0 && element) {\n element.tabIndex = -1;\n }\n }, [element, tabIndex]);\n React.useEffect(() => {\n if (hasFocus) {\n var _checkboxElement$curr;\n const input = (_checkboxElement$curr = checkboxElement.current) == null ? void 0 : _checkboxElement$curr.querySelector('input');\n input == null || input.focus({\n preventScroll: true\n });\n } else if (rippleRef.current) {\n // Only available in @mui/material v5.4.1 or later\n rippleRef.current.stop({});\n }\n }, [hasFocus]);\n const handleKeyDown = React.useCallback(event => {\n if (isSpaceKey(event.key)) {\n // We call event.stopPropagation to avoid selecting the row and also scrolling to bottom\n // TODO: Remove and add a check inside useGridKeyboardNavigation\n event.stopPropagation();\n }\n }, []);\n if (rowNode.type === 'footer' || rowNode.type === 'pinnedRow') {\n return null;\n }\n const isSelectable = apiRef.current.isRowSelectable(id);\n const label = apiRef.current.getLocaleText(isChecked ? 'checkboxSelectionUnselectRow' : 'checkboxSelectionSelectRow');\n return /*#__PURE__*/_jsx(rootProps.slots.baseCheckbox, _extends({\n ref: handleRef,\n tabIndex: tabIndex,\n checked: isChecked,\n onChange: handleChange,\n className: classes.root,\n inputProps: {\n 'aria-label': label\n },\n onKeyDown: handleKeyDown,\n disabled: !isSelectable,\n touchRippleRef: rippleRef\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseCheckbox, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridCellCheckboxForwardRef.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * GridApi that let you manipulate the grid.\n */\n api: PropTypes.object.isRequired,\n /**\n * The mode of the cell.\n */\n cellMode: PropTypes.oneOf(['edit', 'view']).isRequired,\n /**\n * The column of the row that the current cell belongs to.\n */\n colDef: PropTypes.object.isRequired,\n /**\n * The column field of the cell that triggered the event.\n */\n field: PropTypes.string.isRequired,\n /**\n * A ref allowing to set imperative focus.\n * It can be passed to the element that should receive focus.\n * @ignore - do not document.\n */\n focusElementRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.shape({\n focus: PropTypes.func.isRequired\n })\n })]),\n /**\n * The cell value formatted with the column valueFormatter.\n */\n formattedValue: PropTypes.any,\n /**\n * If true, the cell is the active element.\n */\n hasFocus: PropTypes.bool.isRequired,\n /**\n * The grid row id.\n */\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n /**\n * If true, the cell is editable.\n */\n isEditable: PropTypes.bool,\n /**\n * The row model of the row that the current cell belongs to.\n */\n row: PropTypes.any.isRequired,\n /**\n * The node of the row that the current cell belongs to.\n */\n rowNode: PropTypes.object.isRequired,\n /**\n * the tabIndex value.\n */\n tabIndex: PropTypes.oneOf([-1, 0]).isRequired,\n /**\n * The cell value.\n * If the column has `valueGetter`, use `params.row` to directly access the fields.\n */\n value: PropTypes.any\n} : void 0;\nexport { GridCellCheckboxForwardRef };\nexport const GridCellCheckboxRenderer = GridCellCheckboxForwardRef;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"field\", \"colDef\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { useGridSelector } from '../../hooks/utils/useGridSelector';\nimport { gridTabIndexColumnHeaderSelector } from '../../hooks/features/focus/gridFocusStateSelector';\nimport { gridRowSelectionStateSelector } from '../../hooks/features/rowSelection/gridRowSelectionSelector';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { gridExpandedSortedRowIdsSelector } from '../../hooks/features/filter/gridFilterSelector';\nimport { gridPaginatedVisibleSortedGridRowIdsSelector } from '../../hooks/features/pagination/gridPaginationSelector';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['checkboxInput']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridHeaderCheckbox = /*#__PURE__*/React.forwardRef(function GridHeaderCheckbox(props, ref) {\n var _rootProps$slotProps;\n const other = _objectWithoutPropertiesLoose(props, _excluded);\n const [, forceUpdate] = React.useState(false);\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const ownerState = {\n classes: rootProps.classes\n };\n const classes = useUtilityClasses(ownerState);\n const tabIndexState = useGridSelector(apiRef, gridTabIndexColumnHeaderSelector);\n const selection = useGridSelector(apiRef, gridRowSelectionStateSelector);\n const visibleRowIds = useGridSelector(apiRef, gridExpandedSortedRowIdsSelector);\n const paginatedVisibleRowIds = useGridSelector(apiRef, gridPaginatedVisibleSortedGridRowIdsSelector);\n const filteredSelection = React.useMemo(() => {\n if (typeof rootProps.isRowSelectable !== 'function') {\n return selection;\n }\n return selection.filter(id => {\n // The row might have been deleted\n if (!apiRef.current.getRow(id)) {\n return false;\n }\n return rootProps.isRowSelectable(apiRef.current.getRowParams(id));\n });\n }, [apiRef, rootProps.isRowSelectable, selection]);\n\n // All the rows that could be selected / unselected by toggling this checkbox\n const selectionCandidates = React.useMemo(() => {\n const rowIds = !rootProps.pagination || !rootProps.checkboxSelectionVisibleOnly ? visibleRowIds : paginatedVisibleRowIds;\n\n // Convert to an object to make O(1) checking if a row exists or not\n // TODO create selector that returns visibleRowIds/paginatedVisibleRowIds as an object\n return rowIds.reduce((acc, id) => {\n acc[id] = true;\n return acc;\n }, {});\n }, [rootProps.pagination, rootProps.checkboxSelectionVisibleOnly, paginatedVisibleRowIds, visibleRowIds]);\n\n // Amount of rows selected and that are visible in the current page\n const currentSelectionSize = React.useMemo(() => filteredSelection.filter(id => selectionCandidates[id]).length, [filteredSelection, selectionCandidates]);\n const isIndeterminate = currentSelectionSize > 0 && currentSelectionSize < Object.keys(selectionCandidates).length;\n const isChecked = currentSelectionSize > 0;\n const handleChange = event => {\n const params = {\n value: event.target.checked\n };\n apiRef.current.publishEvent('headerSelectionCheckboxChange', params);\n };\n const tabIndex = tabIndexState !== null && tabIndexState.field === props.field ? 0 : -1;\n React.useLayoutEffect(() => {\n const element = apiRef.current.getColumnHeaderElement(props.field);\n if (tabIndex === 0 && element) {\n element.tabIndex = -1;\n }\n }, [tabIndex, apiRef, props.field]);\n const handleKeyDown = React.useCallback(event => {\n if (event.key === ' ') {\n // imperative toggle the checkbox because Space is disable by some preventDefault\n apiRef.current.publishEvent('headerSelectionCheckboxChange', {\n value: !isChecked\n });\n }\n }, [apiRef, isChecked]);\n const handleSelectionChange = React.useCallback(() => {\n forceUpdate(p => !p);\n }, []);\n React.useEffect(() => {\n return apiRef.current.subscribeEvent('rowSelectionChange', handleSelectionChange);\n }, [apiRef, handleSelectionChange]);\n const label = apiRef.current.getLocaleText(isChecked ? 'checkboxSelectionUnselectAllRows' : 'checkboxSelectionSelectAllRows');\n return /*#__PURE__*/_jsx(rootProps.slots.baseCheckbox, _extends({\n ref: ref,\n indeterminate: isIndeterminate,\n checked: isChecked,\n onChange: handleChange,\n className: classes.root,\n inputProps: {\n 'aria-label': label\n },\n tabIndex: tabIndex,\n onKeyDown: handleKeyDown\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseCheckbox, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridHeaderCheckbox.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The column of the current header component.\n */\n colDef: PropTypes.object.isRequired,\n /**\n * The column field of the column that triggered the event\n */\n field: PropTypes.string.isRequired\n} : void 0;\nexport { GridHeaderCheckbox };","import * as React from 'react';\nimport { createSvgIcon } from '@mui/material/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const GridArrowUpwardIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z\"\n}), 'ArrowUpward');\nexport const GridArrowDownwardIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z\"\n}), 'ArrowDownward');\nexport const GridKeyboardArrowRight = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M8.59 16.59 13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\"\n}), 'KeyboardArrowRight');\nexport const GridExpandMoreIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z\"\n}), 'ExpandMore');\nexport const GridFilterListIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z\"\n}), 'FilterList');\nexport const GridFilterAltIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39c.51-.66.04-1.61-.79-1.61H5.04c-.83 0-1.3.95-.79 1.61z\"\n}), 'FilterAlt');\nexport const GridSearchIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"\n}), 'Search');\nexport const GridMenuIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\"\n}), 'Menu');\nexport const GridCheckCircleIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n}), 'CheckCircle');\nexport const GridColumnIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M6 5H3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm14 0h-3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm-7 0h-3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1z\"\n}), 'ColumnIcon');\nexport const GridSeparatorIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M11 19V5h2v14z\"\n}), 'Separator');\nexport const GridViewHeadlineIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M4 15h16v-2H4v2zm0 4h16v-2H4v2zm0-8h16V9H4v2zm0-6v2h16V5H4z\"\n}), 'ViewHeadline');\nexport const GridTableRowsIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M21,8H3V4h18V8z M21,10H3v4h18V10z M21,16H3v4h18V16z\"\n}), 'TableRows');\nexport const GridViewStreamIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M4 18h17v-6H4v6zM4 5v6h17V5H4z\"\n}), 'ViewStream');\nexport const GridTripleDotsVerticalIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\"\n}), 'TripleDotsVertical');\nexport const GridCloseIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');\nexport const GridAddIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\"\n}), 'Add');\nexport const GridRemoveIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M19 13H5v-2h14v2z\"\n}), 'Remove');\nexport const GridLoadIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z\"\n}), 'Load');\nexport const GridDragIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M11 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm-2-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\"\n}), 'Drag');\nexport const GridSaveAltIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M19 12v7H5v-7H3v7c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-7h-2zm-6 .67l2.59-2.58L17 11.5l-5 5-5-5 1.41-1.41L11 12.67V3h2z\"\n}), 'SaveAlt');\nexport const GridCheckIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"\n}), 'Check');\nexport const GridMoreVertIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\"\n}), 'MoreVert');\nexport const GridVisibilityOffIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78l3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"\n}), 'VisibilityOff');\nexport const GridViewColumnIcon = createSvgIcon( /*#__PURE__*/_jsx(\"g\", {\n children: /*#__PURE__*/_jsx(\"path\", {\n d: \"M14.67,5v14H9.33V5H14.67z M15.67,19H21V5h-5.33V19z M8.33,19V5H3v14H8.33z\"\n })\n}), 'ViewColumn');\nexport const GridClearIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Clear');\nexport const GridDeleteIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\"\n}), 'Delete');\nexport const GridDeleteForeverIcon = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zm2.46-7.12l1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12zM15.5 4l-1-1h-5l-1 1H5v2h14V4z\"\n}), 'Delete');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"hideMenu\", \"colDef\", \"id\", \"labelledby\", \"className\", \"children\", \"open\"];\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport MenuList from '@mui/material/MenuList';\nimport { styled } from '@mui/material/styles';\nimport { isHideMenuKey, isTabKey } from '../../../utils/keyboardUtils';\nimport { gridClasses } from '../../../constants/gridClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst StyledMenuList = styled(MenuList)(() => ({\n minWidth: 248\n}));\nconst GridColumnMenuContainer = /*#__PURE__*/React.forwardRef(function GridColumnMenuContainer(props, ref) {\n const {\n hideMenu,\n id,\n labelledby,\n className,\n children,\n open\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const handleListKeyDown = React.useCallback(event => {\n if (isTabKey(event.key)) {\n event.preventDefault();\n }\n if (isHideMenuKey(event.key)) {\n hideMenu(event);\n }\n }, [hideMenu]);\n return /*#__PURE__*/_jsx(StyledMenuList, _extends({\n id: id,\n ref: ref,\n className: clsx(gridClasses.menuList, className),\n \"aria-labelledby\": labelledby,\n onKeyDown: handleListKeyDown,\n autoFocus: open\n }, other, {\n children: children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridColumnMenuContainer.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n colDef: PropTypes.object.isRequired,\n hideMenu: PropTypes.func.isRequired,\n id: PropTypes.string,\n labelledby: PropTypes.string,\n open: PropTypes.bool.isRequired\n} : void 0;\nexport { GridColumnMenuContainer };","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"displayOrder\"];\nimport * as React from 'react';\nimport Divider from '@mui/material/Divider';\nimport { useGridPrivateApiContext } from '../../utils/useGridPrivateApiContext';\nconst useGridColumnMenuSlots = props => {\n const apiRef = useGridPrivateApiContext();\n const {\n defaultSlots,\n defaultSlotProps,\n slots = {},\n slotProps = {},\n hideMenu,\n colDef,\n addDividers = true\n } = props;\n const processedComponents = React.useMemo(() => _extends({}, defaultSlots, slots), [defaultSlots, slots]);\n const processedSlotProps = React.useMemo(() => {\n if (!slotProps || Object.keys(slotProps).length === 0) {\n return defaultSlotProps;\n }\n const mergedProps = _extends({}, slotProps);\n Object.entries(defaultSlotProps).forEach(([key, currentSlotProps]) => {\n mergedProps[key] = _extends({}, currentSlotProps, slotProps[key] || {});\n });\n return mergedProps;\n }, [defaultSlotProps, slotProps]);\n const defaultItems = apiRef.current.unstable_applyPipeProcessors('columnMenu', [], props.colDef);\n const userItems = React.useMemo(() => {\n const defaultComponentKeys = Object.keys(defaultSlots);\n return Object.keys(slots).filter(key => !defaultComponentKeys.includes(key));\n }, [slots, defaultSlots]);\n return React.useMemo(() => {\n const uniqueItems = Array.from(new Set([...defaultItems, ...userItems]));\n const cleansedItems = uniqueItems.filter(key => processedComponents[key] != null);\n const sorted = cleansedItems.sort((a, b) => {\n const leftItemProps = processedSlotProps[a];\n const rightItemProps = processedSlotProps[b];\n const leftDisplayOrder = Number.isFinite(leftItemProps == null ? void 0 : leftItemProps.displayOrder) ? leftItemProps.displayOrder : 100;\n const rightDisplayOrder = Number.isFinite(rightItemProps == null ? void 0 : rightItemProps.displayOrder) ? rightItemProps.displayOrder : 100;\n return leftDisplayOrder - rightDisplayOrder;\n });\n return sorted.reduce((acc, key, index) => {\n let itemProps = {\n colDef,\n onClick: hideMenu\n };\n const processedComponentProps = processedSlotProps[key];\n if (processedComponentProps) {\n const customProps = _objectWithoutPropertiesLoose(processedComponentProps, _excluded);\n itemProps = _extends({}, itemProps, customProps);\n }\n return addDividers && index !== sorted.length - 1 ? [...acc, [processedComponents[key], itemProps], [Divider, {}]] : [...acc, [processedComponents[key], itemProps]];\n }, []);\n }, [addDividers, colDef, defaultItems, hideMenu, processedComponents, processedSlotProps, userItems]);\n};\nexport { useGridColumnMenuSlots };","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport { useGridApiContext } from '../../../../hooks/utils/useGridApiContext';\nimport { useGridRootProps } from '../../../../hooks/utils/useGridRootProps';\nimport { gridVisibleColumnDefinitionsSelector } from '../../../../hooks/features/columns';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction GridColumnMenuHideItem(props) {\n const {\n colDef,\n onClick\n } = props;\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const visibleColumns = gridVisibleColumnDefinitionsSelector(apiRef);\n const columnsWithMenu = visibleColumns.filter(col => col.disableColumnMenu !== true);\n // do not allow to hide the last column with menu\n const disabled = columnsWithMenu.length === 1;\n const toggleColumn = React.useCallback(event => {\n /**\n * Disabled `MenuItem` would trigger `click` event\n * after imperative `.click()` call on HTML element.\n * Also, click is triggered in testing environment as well.\n */\n if (disabled) {\n return;\n }\n apiRef.current.setColumnVisibility(colDef.field, false);\n onClick(event);\n }, [apiRef, colDef.field, onClick, disabled]);\n if (rootProps.disableColumnSelector) {\n return null;\n }\n if (colDef.hideable === false) {\n return null;\n }\n return /*#__PURE__*/_jsxs(MenuItem, {\n onClick: toggleColumn,\n disabled: disabled,\n children: [/*#__PURE__*/_jsx(ListItemIcon, {\n children: /*#__PURE__*/_jsx(rootProps.slots.columnMenuHideIcon, {\n fontSize: \"small\"\n })\n }), /*#__PURE__*/_jsx(ListItemText, {\n children: apiRef.current.getLocaleText('columnMenuHideColumn')\n })]\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnMenuHideItem.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n colDef: PropTypes.object.isRequired,\n onClick: PropTypes.func.isRequired\n} : void 0;\nexport { GridColumnMenuHideItem };","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport { GridPreferencePanelsValue } from '../../../../hooks/features/preferencesPanel/gridPreferencePanelsValue';\nimport { useGridApiContext } from '../../../../hooks/utils/useGridApiContext';\nimport { useGridRootProps } from '../../../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction GridColumnMenuManageItem(props) {\n const {\n onClick\n } = props;\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const showColumns = React.useCallback(event => {\n onClick(event); // hide column menu\n apiRef.current.showPreferences(GridPreferencePanelsValue.columns);\n }, [apiRef, onClick]);\n if (rootProps.disableColumnSelector) {\n return null;\n }\n return /*#__PURE__*/_jsxs(MenuItem, {\n onClick: showColumns,\n children: [/*#__PURE__*/_jsx(ListItemIcon, {\n children: /*#__PURE__*/_jsx(rootProps.slots.columnMenuManageColumnsIcon, {\n fontSize: \"small\"\n })\n }), /*#__PURE__*/_jsx(ListItemText, {\n children: apiRef.current.getLocaleText('columnMenuManageColumns')\n })]\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnMenuManageItem.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n colDef: PropTypes.object.isRequired,\n onClick: PropTypes.func.isRequired\n} : void 0;\nexport { GridColumnMenuManageItem };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GridColumnMenuHideItem } from './GridColumnMenuHideItem';\nimport { GridColumnMenuManageItem } from './GridColumnMenuManageItem';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction GridColumnMenuColumnsItem(props) {\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(GridColumnMenuHideItem, _extends({}, props)), /*#__PURE__*/_jsx(GridColumnMenuManageItem, _extends({}, props))]\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnMenuColumnsItem.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n colDef: PropTypes.object.isRequired,\n onClick: PropTypes.func.isRequired\n} : void 0;\nexport { GridColumnMenuColumnsItem };","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport { useGridApiContext } from '../../../../hooks/utils/useGridApiContext';\nimport { useGridRootProps } from '../../../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction GridColumnMenuFilterItem(props) {\n const {\n colDef,\n onClick\n } = props;\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const showFilter = React.useCallback(event => {\n onClick(event);\n apiRef.current.showFilterPanel(colDef.field);\n }, [apiRef, colDef.field, onClick]);\n if (rootProps.disableColumnFilter || !colDef.filterable) {\n return null;\n }\n return /*#__PURE__*/_jsxs(MenuItem, {\n onClick: showFilter,\n children: [/*#__PURE__*/_jsx(ListItemIcon, {\n children: /*#__PURE__*/_jsx(rootProps.slots.columnMenuFilterIcon, {\n fontSize: \"small\"\n })\n }), /*#__PURE__*/_jsx(ListItemText, {\n children: apiRef.current.getLocaleText('columnMenuFilter')\n })]\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnMenuFilterItem.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n colDef: PropTypes.object.isRequired,\n onClick: PropTypes.func.isRequired\n} : void 0;\nexport { GridColumnMenuFilterItem };","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport { useGridSelector } from '../../../../hooks/utils/useGridSelector';\nimport { gridSortModelSelector } from '../../../../hooks/features/sorting/gridSortingSelector';\nimport { useGridApiContext } from '../../../../hooks/utils/useGridApiContext';\nimport { useGridRootProps } from '../../../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction GridColumnMenuSortItem(props) {\n var _colDef$sortingOrder;\n const {\n colDef,\n onClick\n } = props;\n const apiRef = useGridApiContext();\n const sortModel = useGridSelector(apiRef, gridSortModelSelector);\n const rootProps = useGridRootProps();\n const sortDirection = React.useMemo(() => {\n if (!colDef) {\n return null;\n }\n const sortItem = sortModel.find(item => item.field === colDef.field);\n return sortItem == null ? void 0 : sortItem.sort;\n }, [colDef, sortModel]);\n const sortingOrder = (_colDef$sortingOrder = colDef.sortingOrder) != null ? _colDef$sortingOrder : rootProps.sortingOrder;\n const onSortMenuItemClick = React.useCallback(event => {\n onClick(event);\n const direction = event.currentTarget.getAttribute('data-value') || null;\n apiRef.current.sortColumn(colDef, direction === sortDirection ? null : direction);\n }, [apiRef, colDef, onClick, sortDirection]);\n if (!colDef || !colDef.sortable || !sortingOrder.some(item => !!item)) {\n return null;\n }\n const getLabel = key => {\n const label = apiRef.current.getLocaleText(key);\n return typeof label === 'function' ? label(colDef) : label;\n };\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [sortingOrder.includes('asc') && sortDirection !== 'asc' ? /*#__PURE__*/_jsxs(MenuItem, {\n onClick: onSortMenuItemClick,\n \"data-value\": \"asc\",\n children: [/*#__PURE__*/_jsx(ListItemIcon, {\n children: /*#__PURE__*/_jsx(rootProps.slots.columnMenuSortAscendingIcon, {\n fontSize: \"small\"\n })\n }), /*#__PURE__*/_jsx(ListItemText, {\n children: getLabel('columnMenuSortAsc')\n })]\n }) : null, sortingOrder.includes('desc') && sortDirection !== 'desc' ? /*#__PURE__*/_jsxs(MenuItem, {\n onClick: onSortMenuItemClick,\n \"data-value\": \"desc\",\n children: [/*#__PURE__*/_jsx(ListItemIcon, {\n children: /*#__PURE__*/_jsx(rootProps.slots.columnMenuSortDescendingIcon, {\n fontSize: \"small\"\n })\n }), /*#__PURE__*/_jsx(ListItemText, {\n children: getLabel('columnMenuSortDesc')\n })]\n }) : null, sortingOrder.includes(null) && sortDirection != null ? /*#__PURE__*/_jsxs(MenuItem, {\n onClick: onSortMenuItemClick,\n children: [/*#__PURE__*/_jsx(ListItemIcon, {}), /*#__PURE__*/_jsx(ListItemText, {\n children: apiRef.current.getLocaleText('columnMenuUnsort')\n })]\n }) : null]\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnMenuSortItem.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n colDef: PropTypes.object.isRequired,\n onClick: PropTypes.func.isRequired\n} : void 0;\nexport { GridColumnMenuSortItem };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"defaultSlots\", \"defaultSlotProps\", \"slots\", \"slotProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useGridColumnMenuSlots } from '../../../hooks/features/columnMenu/useGridColumnMenuSlots';\nimport { GridColumnMenuContainer } from './GridColumnMenuContainer';\nimport { GridColumnMenuColumnsItem } from './menuItems/GridColumnMenuColumnsItem';\nimport { GridColumnMenuFilterItem } from './menuItems/GridColumnMenuFilterItem';\nimport { GridColumnMenuSortItem } from './menuItems/GridColumnMenuSortItem';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const GRID_COLUMN_MENU_SLOTS = {\n columnMenuSortItem: GridColumnMenuSortItem,\n columnMenuFilterItem: GridColumnMenuFilterItem,\n columnMenuColumnsItem: GridColumnMenuColumnsItem\n};\nexport const GRID_COLUMN_MENU_SLOT_PROPS = {\n columnMenuSortItem: {\n displayOrder: 10\n },\n columnMenuFilterItem: {\n displayOrder: 20\n },\n columnMenuColumnsItem: {\n displayOrder: 30\n }\n};\nconst GridGenericColumnMenu = /*#__PURE__*/React.forwardRef(function GridGenericColumnMenu(props, ref) {\n const {\n defaultSlots,\n defaultSlotProps,\n slots,\n slotProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const orderedSlots = useGridColumnMenuSlots(_extends({}, other, {\n defaultSlots,\n defaultSlotProps,\n slots,\n slotProps\n }));\n return /*#__PURE__*/_jsx(GridColumnMenuContainer, _extends({\n ref: ref\n }, other, {\n children: orderedSlots.map(([Component, otherProps], index) => /*#__PURE__*/_jsx(Component, _extends({}, otherProps), index))\n }));\n});\nconst GridColumnMenu = /*#__PURE__*/React.forwardRef(function GridColumnMenu(props, ref) {\n return /*#__PURE__*/_jsx(GridGenericColumnMenu, _extends({}, props, {\n ref: ref,\n defaultSlots: GRID_COLUMN_MENU_SLOTS,\n defaultSlotProps: GRID_COLUMN_MENU_SLOT_PROPS\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridColumnMenu.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n colDef: PropTypes.object.isRequired,\n hideMenu: PropTypes.func.isRequired,\n id: PropTypes.string,\n labelledby: PropTypes.string,\n open: PropTypes.bool.isRequired,\n /**\n * Could be used to pass new props or override props specific to a column menu component\n * e.g. `displayOrder`\n */\n slotProps: PropTypes.object,\n /**\n * `slots` could be used to add new and (or) override default column menu items\n * If you register a nee component you must pass it's `displayOrder` in `slotProps`\n * or it will be placed in the end of the list\n */\n slots: PropTypes.object\n} : void 0;\nexport { GridColumnMenu, GridGenericColumnMenu };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { styled } from '@mui/system';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['panelContent']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridPanelContentRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'PanelContent',\n overridesResolver: (props, styles) => styles.panelContent\n})({\n display: 'flex',\n flexDirection: 'column',\n overflow: 'auto',\n flex: '1 1',\n maxHeight: 400\n});\nfunction GridPanelContent(props) {\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const rootProps = useGridRootProps();\n const classes = useUtilityClasses(rootProps);\n return /*#__PURE__*/_jsx(GridPanelContentRoot, _extends({\n className: clsx(className, classes.root),\n ownerState: rootProps\n }, other));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridPanelContent.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridPanelContent };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { styled } from '@mui/system';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['panelFooter']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridPanelFooterRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'PanelFooter',\n overridesResolver: (props, styles) => styles.panelFooter\n})(({\n theme\n}) => ({\n padding: theme.spacing(0.5),\n display: 'flex',\n justifyContent: 'space-between'\n}));\nfunction GridPanelFooter(props) {\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const rootProps = useGridRootProps();\n const classes = useUtilityClasses(rootProps);\n return /*#__PURE__*/_jsx(GridPanelFooterRoot, _extends({\n className: clsx(className, classes.root),\n ownerState: rootProps\n }, other));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridPanelFooter.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridPanelFooter };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { styled } from '@mui/system';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['panelHeader']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridPanelHeaderRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'PanelHeader',\n overridesResolver: (props, styles) => styles.panelHeader\n})(({\n theme\n}) => ({\n padding: theme.spacing(1)\n}));\nfunction GridPanelHeader(props) {\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const rootProps = useGridRootProps();\n const classes = useUtilityClasses(rootProps);\n return /*#__PURE__*/_jsx(GridPanelHeaderRoot, _extends({\n className: clsx(className, classes.root),\n ownerState: rootProps\n }, other));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridPanelHeader.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridPanelHeader };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"slotProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport FocusTrap from '@mui/material/Unstable_TrapFocus';\nimport { styled } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['panelWrapper']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridPanelWrapperRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'PanelWrapper',\n overridesResolver: (props, styles) => styles.panelWrapper\n})({\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n '&:focus': {\n outline: 0\n }\n});\nconst isEnabled = () => true;\nconst GridPanelWrapper = /*#__PURE__*/React.forwardRef(function GridPanelWrapper(props, ref) {\n const {\n className,\n slotProps = {}\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const rootProps = useGridRootProps();\n const classes = useUtilityClasses(rootProps);\n return /*#__PURE__*/_jsx(FocusTrap, _extends({\n open: true,\n disableEnforceFocus: true,\n isEnabled: isEnabled\n }, slotProps.TrapFocus, {\n children: /*#__PURE__*/_jsx(GridPanelWrapperRoot, _extends({\n ref: ref,\n tabIndex: -1,\n className: clsx(className, classes.root),\n ownerState: rootProps\n }, other))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridPanelWrapper.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n slotProps: PropTypes.object\n} : void 0;\nexport { GridPanelWrapper };","// A guide to feature toggling (deprecated)\n//\n// The feature toggle is:\n// - independent from the NODE_ENV\n// - isn't pruning code in production, as the objective is to eventually ship the code.\n// - doesn't allow to cherry-pick which feature to enable\n//\n// By default, the experimental features are only enabled in:\n// - the local environment\n// - the pull request previews\n//\n// Reviewers can force the value with the local storage and the GRID_EXPERIMENTAL_ENABLED key:\n// - 'true' => force it to be enabled\n// - 'false' => force it to be disabled\n//\n// Developers (users) are discouraged to enable the experimental feature by setting the GRID_EXPERIMENTAL_ENABLED env.\n// Instead, prefer exposing experimental APIs, for instance, a prop or a new `unstable_` module.\n\nexport const GRID_EXPERIMENTAL_ENABLED = false;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"sort\", \"searchPredicate\", \"autoFocusSearchField\", \"disableHideAllButton\", \"disableShowAllButton\", \"getTogglableColumns\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport IconButton from '@mui/material/IconButton';\nimport { switchClasses } from '@mui/material/Switch';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport { styled } from '@mui/material/styles';\nimport { gridColumnDefinitionsSelector, gridColumnVisibilityModelSelector } from '../../hooks/features/columns/gridColumnsSelector';\nimport { useGridSelector } from '../../hooks/utils/useGridSelector';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { GridPanelContent } from './GridPanelContent';\nimport { GridPanelFooter } from './GridPanelFooter';\nimport { GridPanelHeader } from './GridPanelHeader';\nimport { GridPanelWrapper } from './GridPanelWrapper';\nimport { GRID_EXPERIMENTAL_ENABLED } from '../../constants/envConstants';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['columnsPanel'],\n columnsPanelRow: ['columnsPanelRow']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridColumnsPanelRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'ColumnsPanel',\n overridesResolver: (props, styles) => styles.columnsPanel\n})({\n padding: '8px 0px 8px 8px'\n});\nconst GridColumnsPanelRowRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'ColumnsPanelRow',\n overridesResolver: (props, styles) => styles.columnsPanelRow\n})(({\n theme\n}) => ({\n display: 'flex',\n justifyContent: 'space-between',\n padding: '1px 8px 1px 7px',\n [`& .${switchClasses.root}`]: {\n marginRight: theme.spacing(0.5)\n }\n}));\nconst GridIconButtonRoot = styled(IconButton)({\n justifyContent: 'flex-end'\n});\nconst collator = new Intl.Collator();\nconst defaultSearchPredicate = (column, searchValue) => {\n return (column.headerName || column.field).toLowerCase().indexOf(searchValue) > -1;\n};\nfunction GridColumnsPanel(props) {\n var _rootProps$slotProps, _rootProps$slotProps3, _rootProps$slotProps4;\n const apiRef = useGridApiContext();\n const searchInputRef = React.useRef(null);\n const columns = useGridSelector(apiRef, gridColumnDefinitionsSelector);\n const columnVisibilityModel = useGridSelector(apiRef, gridColumnVisibilityModelSelector);\n const rootProps = useGridRootProps();\n const [searchValue, setSearchValue] = React.useState('');\n const classes = useUtilityClasses(rootProps);\n const {\n sort,\n searchPredicate = defaultSearchPredicate,\n autoFocusSearchField = true,\n disableHideAllButton = false,\n disableShowAllButton = false,\n getTogglableColumns\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const sortedColumns = React.useMemo(() => {\n switch (sort) {\n case 'asc':\n return [...columns].sort((a, b) => collator.compare(a.headerName || a.field, b.headerName || b.field));\n case 'desc':\n return [...columns].sort((a, b) => -collator.compare(a.headerName || a.field, b.headerName || b.field));\n default:\n return columns;\n }\n }, [columns, sort]);\n const toggleColumn = event => {\n const {\n name: field\n } = event.target;\n apiRef.current.setColumnVisibility(field, columnVisibilityModel[field] === false);\n };\n const toggleAllColumns = React.useCallback(isVisible => {\n const currentModel = gridColumnVisibilityModelSelector(apiRef);\n const newModel = _extends({}, currentModel);\n const togglableColumns = getTogglableColumns ? getTogglableColumns(columns) : null;\n columns.forEach(col => {\n if (col.hideable && (togglableColumns == null || togglableColumns.includes(col.field))) {\n if (isVisible) {\n // delete the key from the model instead of setting it to `true`\n delete newModel[col.field];\n } else {\n newModel[col.field] = false;\n }\n }\n });\n return apiRef.current.setColumnVisibilityModel(newModel);\n }, [apiRef, columns, getTogglableColumns]);\n const handleSearchValueChange = React.useCallback(event => {\n setSearchValue(event.target.value);\n }, []);\n const currentColumns = React.useMemo(() => {\n const togglableColumns = getTogglableColumns ? getTogglableColumns(sortedColumns) : null;\n const togglableSortedColumns = togglableColumns ? sortedColumns.filter(({\n field\n }) => togglableColumns.includes(field)) : sortedColumns;\n if (!searchValue) {\n return togglableSortedColumns;\n }\n return togglableSortedColumns.filter(column => searchPredicate(column, searchValue.toLowerCase()));\n }, [sortedColumns, searchValue, searchPredicate, getTogglableColumns]);\n const firstSwitchRef = React.useRef(null);\n React.useEffect(() => {\n if (autoFocusSearchField) {\n searchInputRef.current.focus();\n } else if (firstSwitchRef.current && typeof firstSwitchRef.current.focus === 'function') {\n firstSwitchRef.current.focus();\n }\n }, [autoFocusSearchField]);\n let firstHideableColumnFound = false;\n const isFirstHideableColumn = column => {\n if (firstHideableColumnFound === false && column.hideable !== false) {\n firstHideableColumnFound = true;\n return true;\n }\n return false;\n };\n return /*#__PURE__*/_jsxs(GridPanelWrapper, _extends({}, other, {\n children: [/*#__PURE__*/_jsx(GridPanelHeader, {\n children: /*#__PURE__*/_jsx(rootProps.slots.baseTextField, _extends({\n label: apiRef.current.getLocaleText('columnsPanelTextFieldLabel'),\n placeholder: apiRef.current.getLocaleText('columnsPanelTextFieldPlaceholder'),\n inputRef: searchInputRef,\n value: searchValue,\n onChange: handleSearchValueChange,\n variant: \"standard\",\n fullWidth: true\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseTextField))\n }), /*#__PURE__*/_jsx(GridPanelContent, {\n children: /*#__PURE__*/_jsx(GridColumnsPanelRoot, {\n className: classes.root,\n ownerState: rootProps,\n children: currentColumns.map(column => {\n var _rootProps$slotProps2;\n return /*#__PURE__*/_jsxs(GridColumnsPanelRowRoot, {\n className: classes.columnsPanelRow,\n ownerState: rootProps,\n children: [/*#__PURE__*/_jsx(FormControlLabel, {\n control: /*#__PURE__*/_jsx(rootProps.slots.baseSwitch, _extends({\n disabled: column.hideable === false,\n checked: columnVisibilityModel[column.field] !== false,\n onClick: toggleColumn,\n name: column.field,\n size: \"small\",\n inputRef: isFirstHideableColumn(column) ? firstSwitchRef : undefined\n }, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseSwitch)),\n label: column.headerName || column.field\n }), !rootProps.disableColumnReorder && GRID_EXPERIMENTAL_ENABLED && /*#__PURE__*/_jsx(GridIconButtonRoot, {\n draggable: true,\n \"aria-label\": apiRef.current.getLocaleText('columnsPanelDragIconLabel'),\n title: apiRef.current.getLocaleText('columnsPanelDragIconLabel'),\n size: \"small\",\n disabled: true,\n children: /*#__PURE__*/_jsx(rootProps.slots.columnReorderIcon, {})\n })]\n }, column.field);\n })\n })\n }), disableShowAllButton && disableHideAllButton ? null : /*#__PURE__*/_jsxs(GridPanelFooter, {\n children: [!disableHideAllButton ? /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({\n onClick: () => toggleAllColumns(false)\n }, (_rootProps$slotProps3 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps3.baseButton, {\n disabled: disableHideAllButton,\n children: apiRef.current.getLocaleText('columnsPanelHideAllButton')\n })) : /*#__PURE__*/_jsx(\"span\", {}), !disableShowAllButton ? /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({\n onClick: () => toggleAllColumns(true)\n }, (_rootProps$slotProps4 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps4.baseButton, {\n disabled: disableShowAllButton,\n children: apiRef.current.getLocaleText('columnsPanelShowAllButton')\n })) : null]\n })]\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridColumnsPanel.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * If `true`, the column search field will be focused automatically.\n * If `false`, the first column switch input will be focused automatically.\n * This helps to avoid input keyboard panel to popup automatically on touch devices.\n * @default true\n */\n autoFocusSearchField: PropTypes.bool,\n /**\n * If `true`, the `Hide all` button will not be displayed.\n * @default false\n */\n disableHideAllButton: PropTypes.bool,\n /**\n * If `true`, the `Show all` button will be disabled\n * @default false\n */\n disableShowAllButton: PropTypes.bool,\n /**\n * Returns the list of togglable columns.\n * If used, only those columns will be displayed in the panel\n * which are passed as the return value of the function.\n * @param {GridColDef[]} columns The `ColDef` list of all columns.\n * @returns {GridColDef['field'][]} The list of togglable columns' field names.\n */\n getTogglableColumns: PropTypes.func,\n searchPredicate: PropTypes.func,\n slotProps: PropTypes.object,\n sort: PropTypes.oneOf(['asc', 'desc'])\n} : void 0;\nexport { GridColumnsPanel };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"classes\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { styled } from '@mui/material/styles';\nimport { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport ClickAwayListener from '@mui/material/ClickAwayListener';\nimport Paper from '@mui/material/Paper';\nimport Popper from '@mui/material/Popper';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { isEscapeKey } from '../../utils/keyboardUtils';\nimport { gridClasses } from '../../constants/gridClasses';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const gridPanelClasses = generateUtilityClasses('MuiDataGrid', ['panel', 'paper']);\nconst GridPanelRoot = styled(Popper, {\n name: 'MuiDataGrid',\n slot: 'Panel',\n overridesResolver: (props, styles) => styles.panel\n})(({\n theme\n}) => ({\n zIndex: theme.zIndex.modal\n}));\nconst GridPaperRoot = styled(Paper, {\n name: 'MuiDataGrid',\n slot: 'Paper',\n overridesResolver: (props, styles) => styles.paper\n})(({\n theme\n}) => ({\n backgroundColor: (theme.vars || theme).palette.background.paper,\n minWidth: 300,\n maxHeight: 450,\n display: 'flex'\n}));\nconst GridPanel = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n children,\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const classes = gridPanelClasses;\n const [isPlaced, setIsPlaced] = React.useState(false);\n const handleClickAway = React.useCallback(() => {\n apiRef.current.hidePreferences();\n }, [apiRef]);\n const handleKeyDown = React.useCallback(event => {\n if (isEscapeKey(event.key)) {\n apiRef.current.hidePreferences();\n }\n }, [apiRef]);\n const modifiers = React.useMemo(() => [{\n name: 'flip',\n enabled: false\n }, {\n name: 'isPlaced',\n enabled: true,\n phase: 'main',\n fn: () => {\n setIsPlaced(true);\n },\n effect: () => () => {\n setIsPlaced(false);\n }\n }], []);\n const [anchorEl, setAnchorEl] = React.useState(null);\n React.useEffect(() => {\n var _apiRef$current$rootE;\n const columnHeadersElement = (_apiRef$current$rootE = apiRef.current.rootElementRef) == null || (_apiRef$current$rootE = _apiRef$current$rootE.current) == null ? void 0 : _apiRef$current$rootE.querySelector(`.${gridClasses.columnHeaders}`);\n if (columnHeadersElement) {\n setAnchorEl(columnHeadersElement);\n }\n }, [apiRef]);\n if (!anchorEl) {\n return null;\n }\n return /*#__PURE__*/_jsx(GridPanelRoot, _extends({\n ref: ref,\n placement: \"bottom-start\",\n className: clsx(className, classes.panel),\n ownerState: rootProps,\n anchorEl: anchorEl,\n modifiers: modifiers\n }, other, {\n children: /*#__PURE__*/_jsx(ClickAwayListener, {\n mouseEvent: \"onMouseUp\",\n onClickAway: handleClickAway,\n children: /*#__PURE__*/_jsx(GridPaperRoot, {\n className: classes.paper,\n ownerState: rootProps,\n elevation: 8,\n onKeyDown: handleKeyDown,\n children: isPlaced && children\n })\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridPanel.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * Popper render function or node.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n ownerState: PropTypes.object\n} : void 0;\nexport { GridPanel };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { gridColumnDefinitionsSelector } from '../../hooks/features/columns/gridColumnsSelector';\nimport { useGridSelector } from '../../hooks/utils/useGridSelector';\nimport { gridPreferencePanelStateSelector } from '../../hooks/features/preferencesPanel/gridPreferencePanelSelector';\nimport { GridPreferencePanelsValue } from '../../hooks/features/preferencesPanel/gridPreferencePanelsValue';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const GridPreferencesPanel = /*#__PURE__*/React.forwardRef(function GridPreferencesPanel(props, ref) {\n var _preferencePanelState, _rootProps$slotProps, _rootProps$slotProps2;\n const apiRef = useGridApiContext();\n const columns = useGridSelector(apiRef, gridColumnDefinitionsSelector);\n const rootProps = useGridRootProps();\n const preferencePanelState = useGridSelector(apiRef, gridPreferencePanelStateSelector);\n const panelContent = apiRef.current.unstable_applyPipeProcessors('preferencePanel', null, (_preferencePanelState = preferencePanelState.openedPanelValue) != null ? _preferencePanelState : GridPreferencePanelsValue.filters);\n return /*#__PURE__*/_jsx(rootProps.slots.panel, _extends({\n ref: ref,\n as: rootProps.slots.basePopper,\n open: columns.length > 0 && preferencePanelState.open,\n id: preferencePanelState.panelId,\n \"aria-labelledby\": preferencePanelState.labelId\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.panel, props, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.basePopper, {\n children: panelContent\n }));\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"item\", \"hasMultipleFilters\", \"deleteFilter\", \"applyFilterChanges\", \"multiFilterOperator\", \"showMultiFilterOperators\", \"disableMultiFilterOperator\", \"applyMultiFilterOperatorChanges\", \"focusElementRef\", \"logicOperators\", \"columnsSort\", \"filterColumns\", \"deleteIconProps\", \"logicOperatorInputProps\", \"operatorInputProps\", \"columnInputProps\", \"valueInputProps\", \"children\"],\n _excluded2 = [\"InputComponentProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses, unstable_useId as useId, unstable_capitalize as capitalize } from '@mui/utils';\nimport { styled } from '@mui/material/styles';\nimport clsx from 'clsx';\nimport { gridFilterableColumnDefinitionsSelector } from '../../../hooks/features/columns/gridColumnsSelector';\nimport { gridFilterModelSelector } from '../../../hooks/features/filter/gridFilterSelector';\nimport { useGridSelector } from '../../../hooks/utils/useGridSelector';\nimport { GridLogicOperator } from '../../../models/gridFilterItem';\nimport { useGridApiContext } from '../../../hooks/utils/useGridApiContext';\nimport { useGridRootProps } from '../../../hooks/utils/useGridRootProps';\nimport { getDataGridUtilityClass } from '../../../constants/gridClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { createElement as _createElement } from \"react\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['filterForm'],\n deleteIcon: ['filterFormDeleteIcon'],\n logicOperatorInput: ['filterFormLogicOperatorInput'],\n columnInput: ['filterFormColumnInput'],\n operatorInput: ['filterFormOperatorInput'],\n valueInput: ['filterFormValueInput']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridFilterFormRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'FilterForm',\n overridesResolver: (props, styles) => styles.filterForm\n})(({\n theme\n}) => ({\n display: 'flex',\n padding: theme.spacing(1)\n}));\nconst FilterFormDeleteIcon = styled('div', {\n name: 'MuiDataGrid',\n slot: 'FilterFormDeleteIcon',\n overridesResolver: (_, styles) => styles.filterFormDeleteIcon\n})(({\n theme\n}) => ({\n flexShrink: 0,\n justifyContent: 'flex-end',\n marginRight: theme.spacing(0.5),\n marginBottom: theme.spacing(0.2)\n}));\nconst FilterFormLogicOperatorInput = styled('div', {\n name: 'MuiDataGrid',\n slot: 'FilterFormLogicOperatorInput',\n overridesResolver: (_, styles) => styles.filterFormLogicOperatorInput\n})({\n minWidth: 55,\n marginRight: 5,\n justifyContent: 'end'\n});\nconst FilterFormColumnInput = styled('div', {\n name: 'MuiDataGrid',\n slot: 'FilterFormColumnInput',\n overridesResolver: (_, styles) => styles.filterFormColumnInput\n})({\n width: 150\n});\nconst FilterFormOperatorInput = styled('div', {\n name: 'MuiDataGrid',\n slot: 'FilterFormOperatorInput',\n overridesResolver: (_, styles) => styles.filterFormOperatorInput\n})({\n width: 120\n});\nconst FilterFormValueInput = styled('div', {\n name: 'MuiDataGrid',\n slot: 'FilterFormValueInput',\n overridesResolver: (_, styles) => styles.filterFormValueInput\n})({\n width: 190\n});\nconst getLogicOperatorLocaleKey = logicOperator => {\n switch (logicOperator) {\n case GridLogicOperator.And:\n return 'filterPanelOperatorAnd';\n case GridLogicOperator.Or:\n return 'filterPanelOperatorOr';\n default:\n throw new Error('MUI: Invalid `logicOperator` property in the `GridFilterPanel`.');\n }\n};\nconst getColumnLabel = col => col.headerName || col.field;\nconst collator = new Intl.Collator();\nconst GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(props, ref) {\n var _rootProps$slotProps, _rootProps$slotProps2, _baseSelectProps$nati, _rootProps$slotProps3, _rootProps$slotProps4, _rootProps$slotProps5, _rootProps$slotProps6, _rootProps$slotProps7, _rootProps$slotProps8, _currentColumn$filter2;\n const {\n item,\n hasMultipleFilters,\n deleteFilter,\n applyFilterChanges,\n multiFilterOperator,\n showMultiFilterOperators,\n disableMultiFilterOperator,\n applyMultiFilterOperatorChanges,\n focusElementRef,\n logicOperators = [GridLogicOperator.And, GridLogicOperator.Or],\n columnsSort,\n filterColumns,\n deleteIconProps = {},\n logicOperatorInputProps = {},\n operatorInputProps = {},\n columnInputProps = {},\n valueInputProps = {}\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridApiContext();\n const filterableColumns = useGridSelector(apiRef, gridFilterableColumnDefinitionsSelector);\n const filterModel = useGridSelector(apiRef, gridFilterModelSelector);\n const columnSelectId = useId();\n const columnSelectLabelId = useId();\n const operatorSelectId = useId();\n const operatorSelectLabelId = useId();\n const rootProps = useGridRootProps();\n const classes = useUtilityClasses(rootProps);\n const valueRef = React.useRef(null);\n const filterSelectorRef = React.useRef(null);\n const hasLogicOperatorColumn = hasMultipleFilters && logicOperators.length > 0;\n const baseFormControlProps = ((_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseFormControl) || {};\n const baseSelectProps = ((_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseSelect) || {};\n const isBaseSelectNative = (_baseSelectProps$nati = baseSelectProps.native) != null ? _baseSelectProps$nati : true;\n const baseInputLabelProps = ((_rootProps$slotProps3 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps3.baseInputLabel) || {};\n const baseSelectOptionProps = ((_rootProps$slotProps4 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps4.baseSelectOption) || {};\n const {\n InputComponentProps\n } = valueInputProps,\n valueInputPropsOther = _objectWithoutPropertiesLoose(valueInputProps, _excluded2);\n const filteredColumns = React.useMemo(() => {\n if (filterColumns === undefined || typeof filterColumns !== 'function') {\n return filterableColumns;\n }\n const filteredFields = filterColumns({\n field: item.field,\n columns: filterableColumns,\n currentFilters: (filterModel == null ? void 0 : filterModel.items) || []\n });\n return filterableColumns.filter(column => filteredFields.includes(column.field));\n }, [filterColumns, filterModel == null ? void 0 : filterModel.items, filterableColumns, item.field]);\n const sortedFilteredColumns = React.useMemo(() => {\n switch (columnsSort) {\n case 'asc':\n return filteredColumns.sort((a, b) => collator.compare(getColumnLabel(a), getColumnLabel(b)));\n case 'desc':\n return filteredColumns.sort((a, b) => -collator.compare(getColumnLabel(a), getColumnLabel(b)));\n default:\n return filteredColumns;\n }\n }, [filteredColumns, columnsSort]);\n const currentColumn = item.field ? apiRef.current.getColumn(item.field) : null;\n const currentOperator = React.useMemo(() => {\n var _currentColumn$filter;\n if (!item.operator || !currentColumn) {\n return null;\n }\n return (_currentColumn$filter = currentColumn.filterOperators) == null ? void 0 : _currentColumn$filter.find(operator => operator.value === item.operator);\n }, [item, currentColumn]);\n const changeColumn = React.useCallback(event => {\n const field = event.target.value;\n const column = apiRef.current.getColumn(field);\n if (column.field === currentColumn.field) {\n // column did not change\n return;\n }\n\n // try to keep the same operator when column change\n const newOperator = column.filterOperators.find(operator => operator.value === item.operator) || column.filterOperators[0];\n\n // Erase filter value if the input component or filtered column type is modified\n const eraseItemValue = !newOperator.InputComponent || newOperator.InputComponent !== (currentOperator == null ? void 0 : currentOperator.InputComponent) || column.type !== currentColumn.type;\n applyFilterChanges(_extends({}, item, {\n field,\n operator: newOperator.value,\n value: eraseItemValue ? undefined : item.value\n }));\n }, [apiRef, applyFilterChanges, item, currentColumn, currentOperator]);\n const changeOperator = React.useCallback(event => {\n const operator = event.target.value;\n const newOperator = currentColumn == null ? void 0 : currentColumn.filterOperators.find(op => op.value === operator);\n const eraseItemValue = !(newOperator != null && newOperator.InputComponent) || (newOperator == null ? void 0 : newOperator.InputComponent) !== (currentOperator == null ? void 0 : currentOperator.InputComponent);\n applyFilterChanges(_extends({}, item, {\n operator,\n value: eraseItemValue ? undefined : item.value\n }));\n }, [applyFilterChanges, item, currentColumn, currentOperator]);\n const changeLogicOperator = React.useCallback(event => {\n const logicOperator = event.target.value === GridLogicOperator.And.toString() ? GridLogicOperator.And : GridLogicOperator.Or;\n applyMultiFilterOperatorChanges(logicOperator);\n }, [applyMultiFilterOperatorChanges]);\n const handleDeleteFilter = () => {\n if (rootProps.disableMultipleColumnsFiltering) {\n if (item.value === undefined) {\n deleteFilter(item);\n } else {\n // TODO v6: simplify the behavior by always remove the filter form\n applyFilterChanges(_extends({}, item, {\n value: undefined\n }));\n }\n } else {\n deleteFilter(item);\n }\n };\n React.useImperativeHandle(focusElementRef, () => ({\n focus: () => {\n if (currentOperator != null && currentOperator.InputComponent) {\n var _valueRef$current;\n valueRef == null || (_valueRef$current = valueRef.current) == null || _valueRef$current.focus();\n } else {\n filterSelectorRef.current.focus();\n }\n }\n }), [currentOperator]);\n return /*#__PURE__*/_jsxs(GridFilterFormRoot, _extends({\n ref: ref,\n className: classes.root,\n \"data-id\": item.id,\n ownerState: rootProps\n }, other, {\n children: [/*#__PURE__*/_jsx(FilterFormDeleteIcon, _extends({\n variant: \"standard\",\n as: rootProps.slots.baseFormControl\n }, baseFormControlProps, deleteIconProps, {\n className: clsx(classes.deleteIcon, baseFormControlProps.className, deleteIconProps.className),\n ownerState: rootProps,\n children: /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, _extends({\n \"aria-label\": apiRef.current.getLocaleText('filterPanelDeleteIconLabel'),\n title: apiRef.current.getLocaleText('filterPanelDeleteIconLabel'),\n onClick: handleDeleteFilter,\n size: \"small\"\n }, (_rootProps$slotProps5 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps5.baseIconButton, {\n children: /*#__PURE__*/_jsx(rootProps.slots.filterPanelDeleteIcon, {\n fontSize: \"small\"\n })\n }))\n })), /*#__PURE__*/_jsx(FilterFormLogicOperatorInput, _extends({\n variant: \"standard\",\n as: rootProps.slots.baseFormControl\n }, baseFormControlProps, logicOperatorInputProps, {\n sx: _extends({\n display: hasLogicOperatorColumn ? 'flex' : 'none',\n visibility: showMultiFilterOperators ? 'visible' : 'hidden'\n }, baseFormControlProps.sx || {}, logicOperatorInputProps.sx || {}),\n className: clsx(classes.logicOperatorInput, baseFormControlProps.className, logicOperatorInputProps.className),\n ownerState: rootProps,\n children: /*#__PURE__*/_jsx(rootProps.slots.baseSelect, _extends({\n inputProps: {\n 'aria-label': apiRef.current.getLocaleText('filterPanelLogicOperator')\n },\n value: multiFilterOperator,\n onChange: changeLogicOperator,\n disabled: !!disableMultiFilterOperator || logicOperators.length === 1,\n native: isBaseSelectNative\n }, (_rootProps$slotProps6 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps6.baseSelect, {\n children: logicOperators.map(logicOperator => /*#__PURE__*/_createElement(rootProps.slots.baseSelectOption, _extends({}, baseSelectOptionProps, {\n native: isBaseSelectNative,\n key: logicOperator.toString(),\n value: logicOperator.toString()\n }), apiRef.current.getLocaleText(getLogicOperatorLocaleKey(logicOperator))))\n }))\n })), /*#__PURE__*/_jsxs(FilterFormColumnInput, _extends({\n variant: \"standard\",\n as: rootProps.slots.baseFormControl\n }, baseFormControlProps, columnInputProps, {\n className: clsx(classes.columnInput, baseFormControlProps.className, columnInputProps.className),\n ownerState: rootProps,\n children: [/*#__PURE__*/_jsx(rootProps.slots.baseInputLabel, _extends({}, baseInputLabelProps, {\n htmlFor: columnSelectId,\n id: columnSelectLabelId,\n children: apiRef.current.getLocaleText('filterPanelColumns')\n })), /*#__PURE__*/_jsx(rootProps.slots.baseSelect, _extends({\n labelId: columnSelectLabelId,\n id: columnSelectId,\n label: apiRef.current.getLocaleText('filterPanelColumns'),\n value: item.field || '',\n onChange: changeColumn,\n native: isBaseSelectNative\n }, (_rootProps$slotProps7 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps7.baseSelect, {\n children: sortedFilteredColumns.map(col => /*#__PURE__*/_createElement(rootProps.slots.baseSelectOption, _extends({}, baseSelectOptionProps, {\n native: isBaseSelectNative,\n key: col.field,\n value: col.field\n }), getColumnLabel(col)))\n }))]\n })), /*#__PURE__*/_jsxs(FilterFormOperatorInput, _extends({\n variant: \"standard\",\n as: rootProps.slots.baseFormControl\n }, baseFormControlProps, operatorInputProps, {\n className: clsx(classes.operatorInput, baseFormControlProps.className, operatorInputProps.className),\n ownerState: rootProps,\n children: [/*#__PURE__*/_jsx(rootProps.slots.baseInputLabel, _extends({}, baseInputLabelProps, {\n htmlFor: operatorSelectId,\n id: operatorSelectLabelId,\n children: apiRef.current.getLocaleText('filterPanelOperator')\n })), /*#__PURE__*/_jsx(rootProps.slots.baseSelect, _extends({\n labelId: operatorSelectLabelId,\n label: apiRef.current.getLocaleText('filterPanelOperator'),\n id: operatorSelectId,\n value: item.operator,\n onChange: changeOperator,\n native: isBaseSelectNative,\n inputRef: filterSelectorRef\n }, (_rootProps$slotProps8 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps8.baseSelect, {\n children: currentColumn == null || (_currentColumn$filter2 = currentColumn.filterOperators) == null ? void 0 : _currentColumn$filter2.map(operator => /*#__PURE__*/_createElement(rootProps.slots.baseSelectOption, _extends({}, baseSelectOptionProps, {\n native: isBaseSelectNative,\n key: operator.value,\n value: operator.value\n }), operator.label || apiRef.current.getLocaleText(`filterOperator${capitalize(operator.value)}`)))\n }))]\n })), /*#__PURE__*/_jsx(FilterFormValueInput, _extends({\n variant: \"standard\",\n as: rootProps.slots.baseFormControl\n }, baseFormControlProps, valueInputPropsOther, {\n className: clsx(classes.valueInput, baseFormControlProps.className, valueInputPropsOther.className),\n ownerState: rootProps,\n children: currentOperator != null && currentOperator.InputComponent ? /*#__PURE__*/_jsx(currentOperator.InputComponent, _extends({\n apiRef: apiRef,\n item: item,\n applyValue: applyFilterChanges,\n focusElementRef: valueRef\n }, currentOperator.InputComponentProps, InputComponentProps)) : null\n }))]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridFilterForm.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * Callback called when the operator, column field or value is changed.\n * @param {GridFilterItem} item The updated [[GridFilterItem]].\n */\n applyFilterChanges: PropTypes.func.isRequired,\n /**\n * Callback called when the logic operator is changed.\n * @param {GridLogicOperator} operator The new logic operator.\n */\n applyMultiFilterOperatorChanges: PropTypes.func.isRequired,\n /**\n * @ignore - do not document.\n */\n children: PropTypes.node,\n /**\n * Props passed to the column input component.\n * @default {}\n */\n columnInputProps: PropTypes.any,\n /**\n * Changes how the options in the columns selector should be ordered.\n * If not specified, the order is derived from the `columns` prop.\n */\n columnsSort: PropTypes.oneOf(['asc', 'desc']),\n /**\n * Callback called when the delete button is clicked.\n * @param {GridFilterItem} item The deleted [[GridFilterItem]].\n */\n deleteFilter: PropTypes.func.isRequired,\n /**\n * Props passed to the delete icon.\n * @default {}\n */\n deleteIconProps: PropTypes.any,\n /**\n * If `true`, disables the logic operator field but still renders it.\n */\n disableMultiFilterOperator: PropTypes.bool,\n /**\n * Allows to filter the columns displayed in the filter form.\n * @param {FilterColumnsArgs} args The columns of the grid and name of field.\n * @returns {GridColDef['field'][]} The filtered fields array.\n */\n filterColumns: PropTypes.func,\n /**\n * A ref allowing to set imperative focus.\n * It can be passed to the el\n */\n focusElementRef: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.func, PropTypes.object]),\n /**\n * If `true`, the logic operator field is rendered.\n * The field will be invisible if `showMultiFilterOperators` is also `true`.\n */\n hasMultipleFilters: PropTypes.bool.isRequired,\n /**\n * The [[GridFilterItem]] representing this form.\n */\n item: PropTypes.shape({\n field: PropTypes.string.isRequired,\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n operator: PropTypes.string.isRequired,\n value: PropTypes.any\n }).isRequired,\n /**\n * Props passed to the logic operator input component.\n * @default {}\n */\n logicOperatorInputProps: PropTypes.any,\n /**\n * Sets the available logic operators.\n * @default [GridLogicOperator.And, GridLogicOperator.Or]\n */\n logicOperators: PropTypes.arrayOf(PropTypes.oneOf(['and', 'or']).isRequired),\n /**\n * The current logic operator applied.\n */\n multiFilterOperator: PropTypes.oneOf(['and', 'or']),\n /**\n * Props passed to the operator input component.\n * @default {}\n */\n operatorInputProps: PropTypes.any,\n /**\n * If `true`, the logic operator field is visible.\n */\n showMultiFilterOperators: PropTypes.bool,\n /**\n * Props passed to the value input component.\n * @default {}\n */\n valueInputProps: PropTypes.any\n} : void 0;\n\n/**\n * Demos:\n * - [Filtering - overview](https://mui.com/x/react-data-grid/filtering/)\n *\n * API:\n * - [GridFilterForm API](https://mui.com/x/api/data-grid/grid-filter-form/)\n */\nexport { GridFilterForm };","import { useLazyRef } from './useLazyRef';\nimport { useOnMount } from './useOnMount';\nclass Timeout {\n constructor() {\n this.currentId = 0;\n this.clear = () => {\n if (this.currentId !== 0) {\n clearTimeout(this.currentId);\n this.currentId = 0;\n }\n };\n this.disposeEffect = () => {\n return this.clear;\n };\n }\n static create() {\n return new Timeout();\n }\n start(delay, fn) {\n this.clear();\n this.currentId = setTimeout(fn, delay);\n }\n}\nexport function useTimeout() {\n const timeout = useLazyRef(Timeout.create).current;\n useOnMount(timeout.disposeEffect);\n return timeout;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"item\", \"applyValue\", \"type\", \"apiRef\", \"focusElementRef\", \"tabIndex\", \"disabled\", \"isFilterActive\", \"clearButton\", \"InputProps\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_useId as useId } from '@mui/utils';\nimport { useTimeout } from '../../../hooks/utils/useTimeout';\nimport { useGridRootProps } from '../../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction GridFilterInputValue(props) {\n var _item$value, _rootProps$slotProps;\n const {\n item,\n applyValue,\n type,\n apiRef,\n focusElementRef,\n tabIndex,\n disabled,\n clearButton,\n InputProps,\n variant = 'standard'\n } = props,\n others = _objectWithoutPropertiesLoose(props, _excluded);\n const filterTimeout = useTimeout();\n const [filterValueState, setFilterValueState] = React.useState((_item$value = item.value) != null ? _item$value : '');\n const [applying, setIsApplying] = React.useState(false);\n const id = useId();\n const rootProps = useGridRootProps();\n const onFilterChange = React.useCallback(event => {\n const {\n value\n } = event.target;\n setFilterValueState(String(value));\n setIsApplying(true);\n filterTimeout.start(rootProps.filterDebounceMs, () => {\n const newItem = _extends({}, item, {\n value,\n fromInput: id\n });\n applyValue(newItem);\n setIsApplying(false);\n });\n }, [id, applyValue, item, rootProps.filterDebounceMs, filterTimeout]);\n React.useEffect(() => {\n const itemPlusTag = item;\n if (itemPlusTag.fromInput !== id || item.value === undefined) {\n var _item$value2;\n setFilterValueState(String((_item$value2 = item.value) != null ? _item$value2 : ''));\n }\n }, [id, item]);\n return /*#__PURE__*/_jsx(rootProps.slots.baseTextField, _extends({\n id: id,\n label: apiRef.current.getLocaleText('filterPanelInputLabel'),\n placeholder: apiRef.current.getLocaleText('filterPanelInputPlaceholder'),\n value: filterValueState,\n onChange: onFilterChange,\n variant: variant,\n type: type || 'text',\n InputProps: _extends({}, applying || clearButton ? {\n endAdornment: applying ? /*#__PURE__*/_jsx(rootProps.slots.loadIcon, {\n fontSize: \"small\",\n color: \"action\"\n }) : clearButton\n } : {}, {\n disabled\n }, InputProps, {\n inputProps: _extends({\n tabIndex\n }, InputProps == null ? void 0 : InputProps.inputProps)\n }),\n InputLabelProps: {\n shrink: true\n },\n inputRef: focusElementRef\n }, others, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseTextField));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridFilterInputValue.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n apiRef: PropTypes.shape({\n current: PropTypes.object.isRequired\n }).isRequired,\n applyValue: PropTypes.func.isRequired,\n clearButton: PropTypes.node,\n focusElementRef: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.func, PropTypes.object]),\n /**\n * It is `true` if the filter either has a value or an operator with no value\n * required is selected (e.g. `isEmpty`)\n */\n isFilterActive: PropTypes.bool,\n item: PropTypes.shape({\n field: PropTypes.string.isRequired,\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n operator: PropTypes.string.isRequired,\n value: PropTypes.any\n }).isRequired\n} : void 0;\nexport { GridFilterInputValue };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"item\", \"applyValue\", \"type\", \"apiRef\", \"focusElementRef\", \"InputProps\", \"isFilterActive\", \"clearButton\", \"tabIndex\", \"disabled\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_useId as useId } from '@mui/utils';\nimport { useTimeout } from '../../../hooks/utils/useTimeout';\nimport { useGridRootProps } from '../../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction GridFilterInputDate(props) {\n var _item$value, _rootProps$slotProps;\n const {\n item,\n applyValue,\n type,\n apiRef,\n focusElementRef,\n InputProps,\n clearButton,\n tabIndex,\n disabled\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const filterTimeout = useTimeout();\n const [filterValueState, setFilterValueState] = React.useState((_item$value = item.value) != null ? _item$value : '');\n const [applying, setIsApplying] = React.useState(false);\n const id = useId();\n const rootProps = useGridRootProps();\n const onFilterChange = React.useCallback(event => {\n const value = event.target.value;\n setFilterValueState(String(value));\n setIsApplying(true);\n filterTimeout.start(rootProps.filterDebounceMs, () => {\n applyValue(_extends({}, item, {\n value\n }));\n setIsApplying(false);\n });\n }, [applyValue, item, rootProps.filterDebounceMs, filterTimeout]);\n React.useEffect(() => {\n var _item$value2;\n const itemValue = (_item$value2 = item.value) != null ? _item$value2 : '';\n setFilterValueState(String(itemValue));\n }, [item.value]);\n return /*#__PURE__*/_jsx(rootProps.slots.baseTextField, _extends({\n fullWidth: true,\n id: id,\n label: apiRef.current.getLocaleText('filterPanelInputLabel'),\n placeholder: apiRef.current.getLocaleText('filterPanelInputPlaceholder'),\n value: filterValueState,\n onChange: onFilterChange,\n variant: \"standard\",\n type: type || 'text',\n InputLabelProps: {\n shrink: true\n },\n inputRef: focusElementRef,\n InputProps: _extends({}, applying || clearButton ? {\n endAdornment: applying ? /*#__PURE__*/_jsx(rootProps.slots.loadIcon, {\n fontSize: \"small\",\n color: \"action\"\n }) : clearButton\n } : {}, {\n disabled\n }, InputProps, {\n inputProps: _extends({\n max: type === 'datetime-local' ? '9999-12-31T23:59' : '9999-12-31',\n tabIndex\n }, InputProps == null ? void 0 : InputProps.inputProps)\n })\n }, other, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseTextField));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridFilterInputDate.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n apiRef: PropTypes.shape({\n current: PropTypes.object.isRequired\n }).isRequired,\n applyValue: PropTypes.func.isRequired,\n clearButton: PropTypes.node,\n focusElementRef: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.func, PropTypes.object]),\n /**\n * It is `true` if the filter either has a value or an operator with no value\n * required is selected (e.g. `isEmpty`)\n */\n isFilterActive: PropTypes.bool,\n item: PropTypes.shape({\n field: PropTypes.string.isRequired,\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n operator: PropTypes.string.isRequired,\n value: PropTypes.any\n }).isRequired\n} : void 0;\nexport { GridFilterInputDate };","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"item\", \"applyValue\", \"type\", \"apiRef\", \"focusElementRef\", \"getOptionLabel\", \"getOptionValue\", \"placeholder\", \"tabIndex\", \"label\", \"variant\", \"isFilterActive\", \"clearButton\", \"InputLabelProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_useId as useId } from '@mui/utils';\nimport { styled } from '@mui/material/styles';\nimport { useGridRootProps } from '../../../hooks/utils/useGridRootProps';\nimport { getValueFromValueOptions, isSingleSelectColDef } from './filterPanelUtils';\nimport { createElement as _createElement } from \"react\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst renderSingleSelectOptions = ({\n column: {\n valueOptions,\n field\n },\n OptionComponent,\n getOptionLabel,\n getOptionValue,\n isSelectNative,\n baseSelectOptionProps\n}) => {\n const iterableColumnValues = typeof valueOptions === 'function' ? ['', ...valueOptions({\n field\n })] : ['', ...(valueOptions || [])];\n return iterableColumnValues.map(option => {\n const value = getOptionValue(option);\n const label = getOptionLabel(option);\n return /*#__PURE__*/_createElement(OptionComponent, _extends({}, baseSelectOptionProps, {\n native: isSelectNative,\n key: value,\n value: value\n }), label);\n });\n};\nconst SingleSelectOperatorContainer = styled('div')({\n display: 'flex',\n alignItems: 'flex-end',\n width: '100%',\n [`& button`]: {\n margin: 'auto 0px 5px 5px'\n }\n});\nfunction GridFilterInputSingleSelect(props) {\n var _item$value, _rootProps$slotProps$, _rootProps$slotProps, _resolvedColumn, _resolvedColumn2, _rootProps$slotProps2, _rootProps$slotProps3, _rootProps$slotProps4;\n const {\n item,\n applyValue,\n type,\n apiRef,\n focusElementRef,\n getOptionLabel: getOptionLabelProp,\n getOptionValue: getOptionValueProp,\n placeholder,\n tabIndex,\n label: labelProp,\n variant = 'standard',\n clearButton\n } = props,\n others = _objectWithoutPropertiesLoose(props, _excluded);\n const [filterValueState, setFilterValueState] = React.useState((_item$value = item.value) != null ? _item$value : '');\n const id = useId();\n const labelId = useId();\n const rootProps = useGridRootProps();\n const isSelectNative = (_rootProps$slotProps$ = (_rootProps$slotProps = rootProps.slotProps) == null || (_rootProps$slotProps = _rootProps$slotProps.baseSelect) == null ? void 0 : _rootProps$slotProps.native) != null ? _rootProps$slotProps$ : true;\n let resolvedColumn = null;\n if (item.field) {\n const column = apiRef.current.getColumn(item.field);\n if (isSingleSelectColDef(column)) {\n resolvedColumn = column;\n }\n }\n const getOptionValue = getOptionValueProp || ((_resolvedColumn = resolvedColumn) == null ? void 0 : _resolvedColumn.getOptionValue);\n const getOptionLabel = getOptionLabelProp || ((_resolvedColumn2 = resolvedColumn) == null ? void 0 : _resolvedColumn2.getOptionLabel);\n const currentValueOptions = React.useMemo(() => {\n if (!resolvedColumn) {\n return undefined;\n }\n return typeof resolvedColumn.valueOptions === 'function' ? resolvedColumn.valueOptions({\n field: resolvedColumn.field\n }) : resolvedColumn.valueOptions;\n }, [resolvedColumn]);\n const onFilterChange = React.useCallback(event => {\n let value = event.target.value;\n\n // NativeSelect casts the value to a string.\n value = getValueFromValueOptions(value, currentValueOptions, getOptionValue);\n setFilterValueState(String(value));\n applyValue(_extends({}, item, {\n value\n }));\n }, [currentValueOptions, getOptionValue, applyValue, item]);\n React.useEffect(() => {\n var _itemValue;\n let itemValue;\n if (currentValueOptions !== undefined) {\n // sanitize if valueOptions are provided\n itemValue = getValueFromValueOptions(item.value, currentValueOptions, getOptionValue);\n if (itemValue !== item.value) {\n applyValue(_extends({}, item, {\n value: itemValue\n }));\n return;\n }\n } else {\n itemValue = item.value;\n }\n itemValue = (_itemValue = itemValue) != null ? _itemValue : '';\n setFilterValueState(String(itemValue));\n }, [item, currentValueOptions, applyValue, getOptionValue]);\n if (!isSingleSelectColDef(resolvedColumn)) {\n return null;\n }\n if (!isSingleSelectColDef(resolvedColumn)) {\n return null;\n }\n const label = labelProp != null ? labelProp : apiRef.current.getLocaleText('filterPanelInputLabel');\n return /*#__PURE__*/_jsxs(SingleSelectOperatorContainer, {\n children: [/*#__PURE__*/_jsxs(rootProps.slots.baseFormControl, {\n children: [/*#__PURE__*/_jsx(rootProps.slots.baseInputLabel, _extends({}, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseInputLabel, {\n id: labelId,\n htmlFor: id,\n shrink: true,\n variant: variant,\n children: label\n })), /*#__PURE__*/_jsx(rootProps.slots.baseSelect, _extends({\n id: id,\n label: label,\n labelId: labelId,\n value: filterValueState,\n onChange: onFilterChange,\n variant: variant,\n type: type || 'text',\n inputProps: {\n tabIndex,\n ref: focusElementRef,\n placeholder: placeholder != null ? placeholder : apiRef.current.getLocaleText('filterPanelInputPlaceholder')\n },\n native: isSelectNative,\n notched: variant === 'outlined' ? true : undefined\n }, others /* FIXME: typing error */, (_rootProps$slotProps3 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps3.baseSelect, {\n children: renderSingleSelectOptions({\n column: resolvedColumn,\n OptionComponent: rootProps.slots.baseSelectOption,\n getOptionLabel,\n getOptionValue,\n isSelectNative,\n baseSelectOptionProps: (_rootProps$slotProps4 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps4.baseSelectOption\n })\n }))]\n }), clearButton]\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridFilterInputSingleSelect.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n apiRef: PropTypes.shape({\n current: PropTypes.object.isRequired\n }).isRequired,\n applyValue: PropTypes.func.isRequired,\n clearButton: PropTypes.node,\n focusElementRef: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.func, PropTypes.object]),\n /**\n * Used to determine the label displayed for a given value option.\n * @param {ValueOptions} value The current value option.\n * @returns {string} The text to be displayed.\n */\n getOptionLabel: PropTypes.func,\n /**\n * Used to determine the value used for a value option.\n * @param {ValueOptions} value The current value option.\n * @returns {string} The value to be used.\n */\n getOptionValue: PropTypes.func,\n /**\n * It is `true` if the filter either has a value or an operator with no value\n * required is selected (e.g. `isEmpty`)\n */\n isFilterActive: PropTypes.bool,\n item: PropTypes.shape({\n field: PropTypes.string.isRequired,\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n operator: PropTypes.string.isRequired,\n value: PropTypes.any\n }).isRequired\n} : void 0;\nexport { GridFilterInputSingleSelect };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"item\", \"applyValue\", \"apiRef\", \"focusElementRef\", \"isFilterActive\", \"clearButton\", \"tabIndex\", \"label\", \"variant\", \"InputLabelProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { refType, unstable_useId as useId } from '@mui/utils';\nimport { styled } from '@mui/material/styles';\nimport { useGridRootProps } from '../../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst BooleanOperatorContainer = styled('div')({\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n [`& button`]: {\n margin: 'auto 0px 5px 5px'\n }\n});\nfunction GridFilterInputBoolean(props) {\n var _rootProps$slotProps, _baseSelectProps$nati, _rootProps$slotProps2, _rootProps$slotProps3;\n const {\n item,\n applyValue,\n apiRef,\n focusElementRef,\n clearButton,\n tabIndex,\n label: labelProp,\n variant = 'standard'\n } = props,\n others = _objectWithoutPropertiesLoose(props, _excluded);\n const [filterValueState, setFilterValueState] = React.useState(item.value || '');\n const rootProps = useGridRootProps();\n const labelId = useId();\n const selectId = useId();\n const baseSelectProps = ((_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseSelect) || {};\n const isSelectNative = (_baseSelectProps$nati = baseSelectProps.native) != null ? _baseSelectProps$nati : true;\n const baseSelectOptionProps = ((_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseSelectOption) || {};\n const onFilterChange = React.useCallback(event => {\n const value = event.target.value;\n setFilterValueState(value);\n applyValue(_extends({}, item, {\n value\n }));\n }, [applyValue, item]);\n React.useEffect(() => {\n setFilterValueState(item.value || '');\n }, [item.value]);\n const label = labelProp != null ? labelProp : apiRef.current.getLocaleText('filterPanelInputLabel');\n return /*#__PURE__*/_jsxs(BooleanOperatorContainer, {\n children: [/*#__PURE__*/_jsxs(rootProps.slots.baseFormControl, {\n fullWidth: true,\n children: [/*#__PURE__*/_jsx(rootProps.slots.baseInputLabel, _extends({}, (_rootProps$slotProps3 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps3.baseInputLabel, {\n id: labelId,\n shrink: true,\n variant: variant,\n children: label\n })), /*#__PURE__*/_jsxs(rootProps.slots.baseSelect, _extends({\n labelId: labelId,\n id: selectId,\n label: label,\n value: filterValueState,\n onChange: onFilterChange,\n variant: variant,\n notched: variant === 'outlined' ? true : undefined,\n native: isSelectNative,\n displayEmpty: true,\n inputProps: {\n ref: focusElementRef,\n tabIndex\n }\n }, others, baseSelectProps, {\n children: [/*#__PURE__*/_jsx(rootProps.slots.baseSelectOption, _extends({}, baseSelectOptionProps, {\n native: isSelectNative,\n value: \"\",\n children: apiRef.current.getLocaleText('filterValueAny')\n })), /*#__PURE__*/_jsx(rootProps.slots.baseSelectOption, _extends({}, baseSelectOptionProps, {\n native: isSelectNative,\n value: \"true\",\n children: apiRef.current.getLocaleText('filterValueTrue')\n })), /*#__PURE__*/_jsx(rootProps.slots.baseSelectOption, _extends({}, baseSelectOptionProps, {\n native: isSelectNative,\n value: \"false\",\n children: apiRef.current.getLocaleText('filterValueFalse')\n }))]\n }))]\n }), clearButton]\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GridFilterInputBoolean.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n apiRef: PropTypes.shape({\n current: PropTypes.object.isRequired\n }).isRequired,\n applyValue: PropTypes.func.isRequired,\n clearButton: PropTypes.node,\n focusElementRef: refType,\n /**\n * It is `true` if the filter either has a value or an operator with no value\n * required is selected (e.g. `isEmpty`)\n */\n isFilterActive: PropTypes.bool,\n item: PropTypes.shape({\n field: PropTypes.string.isRequired,\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n operator: PropTypes.string.isRequired,\n value: PropTypes.any\n }).isRequired\n} : void 0;\nexport { GridFilterInputBoolean };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"logicOperators\", \"columnsSort\", \"filterFormProps\", \"getColumnForNewFilter\", \"children\", \"disableAddFilterButton\", \"disableRemoveAllButton\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GridLogicOperator } from '../../../models/gridFilterItem';\nimport { useGridApiContext } from '../../../hooks/utils/useGridApiContext';\nimport { GridPanelContent } from '../GridPanelContent';\nimport { GridPanelFooter } from '../GridPanelFooter';\nimport { GridPanelWrapper } from '../GridPanelWrapper';\nimport { GridFilterForm } from './GridFilterForm';\nimport { useGridRootProps } from '../../../hooks/utils/useGridRootProps';\nimport { useGridSelector } from '../../../hooks/utils/useGridSelector';\nimport { gridFilterModelSelector } from '../../../hooks/features/filter/gridFilterSelector';\nimport { gridFilterableColumnDefinitionsSelector } from '../../../hooks/features/columns/gridColumnsSelector';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst getGridFilter = col => ({\n field: col.field,\n operator: col.filterOperators[0].value,\n id: Math.round(Math.random() * 1e5)\n});\nconst GridFilterPanel = /*#__PURE__*/React.forwardRef(function GridFilterPanel(props, ref) {\n var _rootProps$slotProps, _rootProps$slotProps2;\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const filterModel = useGridSelector(apiRef, gridFilterModelSelector);\n const filterableColumns = useGridSelector(apiRef, gridFilterableColumnDefinitionsSelector);\n const lastFilterRef = React.useRef(null);\n const placeholderFilter = React.useRef(null);\n const {\n logicOperators = [GridLogicOperator.And, GridLogicOperator.Or],\n columnsSort,\n filterFormProps,\n getColumnForNewFilter,\n disableAddFilterButton = false,\n disableRemoveAllButton = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const applyFilter = apiRef.current.upsertFilterItem;\n const applyFilterLogicOperator = React.useCallback(operator => {\n apiRef.current.setFilterLogicOperator(operator);\n }, [apiRef]);\n const getDefaultFilter = React.useCallback(() => {\n let nextColumnWithOperator;\n if (getColumnForNewFilter && typeof getColumnForNewFilter === 'function') {\n // To allow override the column for default (first) filter\n const nextFieldName = getColumnForNewFilter({\n currentFilters: (filterModel == null ? void 0 : filterModel.items) || [],\n columns: filterableColumns\n });\n if (nextFieldName === null) {\n return null;\n }\n nextColumnWithOperator = filterableColumns.find(({\n field\n }) => field === nextFieldName);\n } else {\n nextColumnWithOperator = filterableColumns.find(colDef => {\n var _colDef$filterOperato;\n return (_colDef$filterOperato = colDef.filterOperators) == null ? void 0 : _colDef$filterOperato.length;\n });\n }\n if (!nextColumnWithOperator) {\n return null;\n }\n return getGridFilter(nextColumnWithOperator);\n }, [filterModel == null ? void 0 : filterModel.items, filterableColumns, getColumnForNewFilter]);\n const getNewFilter = React.useCallback(() => {\n if (getColumnForNewFilter === undefined || typeof getColumnForNewFilter !== 'function') {\n return getDefaultFilter();\n }\n const currentFilters = filterModel.items.length ? filterModel.items : [getDefaultFilter()].filter(Boolean);\n\n // If no items are there in filterModel, we have to pass defaultFilter\n const nextColumnFieldName = getColumnForNewFilter({\n currentFilters: currentFilters,\n columns: filterableColumns\n });\n if (nextColumnFieldName === null) {\n return null;\n }\n const nextColumnWithOperator = filterableColumns.find(({\n field\n }) => field === nextColumnFieldName);\n if (!nextColumnWithOperator) {\n return null;\n }\n return getGridFilter(nextColumnWithOperator);\n }, [filterModel.items, filterableColumns, getColumnForNewFilter, getDefaultFilter]);\n const items = React.useMemo(() => {\n if (filterModel.items.length) {\n return filterModel.items;\n }\n if (!placeholderFilter.current) {\n placeholderFilter.current = getDefaultFilter();\n }\n return placeholderFilter.current ? [placeholderFilter.current] : [];\n }, [filterModel.items, getDefaultFilter]);\n const hasMultipleFilters = items.length > 1;\n const addNewFilter = () => {\n const newFilter = getNewFilter();\n if (!newFilter) {\n return;\n }\n apiRef.current.upsertFilterItems([...items, newFilter]);\n };\n const deleteFilter = React.useCallback(item => {\n const shouldCloseFilterPanel = items.length === 1;\n apiRef.current.deleteFilterItem(item);\n if (shouldCloseFilterPanel) {\n apiRef.current.hideFilterPanel();\n }\n }, [apiRef, items.length]);\n const handleRemoveAll = () => {\n if (items.length === 1 && items[0].value === undefined) {\n apiRef.current.deleteFilterItem(items[0]);\n apiRef.current.hideFilterPanel();\n }\n apiRef.current.setFilterModel(_extends({}, filterModel, {\n items: []\n }));\n };\n React.useEffect(() => {\n if (logicOperators.length > 0 && filterModel.logicOperator && !logicOperators.includes(filterModel.logicOperator)) {\n applyFilterLogicOperator(logicOperators[0]);\n }\n }, [logicOperators, applyFilterLogicOperator, filterModel.logicOperator]);\n React.useEffect(() => {\n if (items.length > 0) {\n lastFilterRef.current.focus();\n }\n }, [items.length]);\n return /*#__PURE__*/_jsxs(GridPanelWrapper, _extends({\n ref: ref\n }, other, {\n children: [/*#__PURE__*/_jsx(GridPanelContent, {\n children: items.map((item, index) => /*#__PURE__*/_jsx(GridFilterForm, _extends({\n item: item,\n applyFilterChanges: applyFilter,\n deleteFilter: deleteFilter,\n hasMultipleFilters: hasMultipleFilters,\n showMultiFilterOperators: index > 0,\n multiFilterOperator: filterModel.logicOperator,\n disableMultiFilterOperator: index !== 1,\n applyMultiFilterOperatorChanges: applyFilterLogicOperator,\n focusElementRef: index === items.length - 1 ? lastFilterRef : null,\n logicOperators: logicOperators,\n columnsSort: columnsSort\n }, filterFormProps), item.id == null ? index : item.id))\n }), !rootProps.disableMultipleColumnsFiltering && !(disableAddFilterButton && disableRemoveAllButton) ? /*#__PURE__*/_jsxs(GridPanelFooter, {\n children: [!disableAddFilterButton ? /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({\n onClick: addNewFilter,\n startIcon: /*#__PURE__*/_jsx(rootProps.slots.filterPanelAddIcon, {})\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseButton, {\n children: apiRef.current.getLocaleText('filterPanelAddFilter')\n })) : /*#__PURE__*/_jsx(\"span\", {}), !disableRemoveAllButton ? /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({\n onClick: handleRemoveAll,\n startIcon: /*#__PURE__*/_jsx(rootProps.slots.filterPanelRemoveAllIcon, {})\n }, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseButton, {\n children: apiRef.current.getLocaleText('filterPanelRemoveAll')\n })) : null]\n }) : null]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridFilterPanel.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * @ignore - do not document.\n */\n children: PropTypes.node,\n /**\n * Changes how the options in the columns selector should be ordered.\n * If not specified, the order is derived from the `columns` prop.\n */\n columnsSort: PropTypes.oneOf(['asc', 'desc']),\n /**\n * If `true`, the `Add filter` button will not be displayed.\n * @default false\n */\n disableAddFilterButton: PropTypes.bool,\n /**\n * If `true`, the `Remove all` button will be disabled\n * @default false\n */\n disableRemoveAllButton: PropTypes.bool,\n /**\n * Props passed to each filter form.\n */\n filterFormProps: PropTypes.shape({\n columnInputProps: PropTypes.any,\n columnsSort: PropTypes.oneOf(['asc', 'desc']),\n deleteIconProps: PropTypes.any,\n filterColumns: PropTypes.func,\n logicOperatorInputProps: PropTypes.any,\n operatorInputProps: PropTypes.any,\n valueInputProps: PropTypes.any\n }),\n /**\n * Function that returns the next filter item to be picked as default filter.\n * @param {GetColumnForNewFilterArgs} args Currently configured filters and columns.\n * @returns {GridColDef['field']} The field to be used for the next filter or `null` to prevent adding a filter.\n */\n getColumnForNewFilter: PropTypes.func,\n /**\n * Sets the available logic operators.\n * @default [GridLogicOperator.And, GridLogicOperator.Or]\n */\n logicOperators: PropTypes.arrayOf(PropTypes.oneOf(['and', 'or']).isRequired),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\n\n/**\n * Demos:\n * - [Filtering - overview](https://mui.com/x/react-data-grid/filtering/)\n *\n * API:\n * - [GridFilterPanel API](https://mui.com/x/api/data-grid/grid-filter-panel/)\n */\nexport { GridFilterPanel, getGridFilter };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"item\", \"applyValue\", \"type\", \"apiRef\", \"focusElementRef\", \"color\", \"error\", \"helperText\", \"size\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport { unstable_useId as useId } from '@mui/utils';\nimport { useGridRootProps } from '../../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction GridFilterInputMultipleValue(props) {\n const {\n item,\n applyValue,\n type,\n apiRef,\n focusElementRef,\n color,\n error,\n helperText,\n size,\n variant\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const TextFieldProps = {\n color,\n error,\n helperText,\n size,\n variant\n };\n const [filterValueState, setFilterValueState] = React.useState(item.value || []);\n const id = useId();\n const rootProps = useGridRootProps();\n React.useEffect(() => {\n var _item$value;\n const itemValue = (_item$value = item.value) != null ? _item$value : [];\n setFilterValueState(itemValue.map(String));\n }, [item.value]);\n const handleChange = React.useCallback((event, value) => {\n setFilterValueState(value.map(String));\n applyValue(_extends({}, item, {\n value: [...value]\n }));\n }, [applyValue, item]);\n return /*#__PURE__*/_jsx(Autocomplete, _extends({\n multiple: true,\n freeSolo: true,\n options: [],\n filterOptions: (options, params) => {\n const {\n inputValue\n } = params;\n return inputValue == null || inputValue === '' ? [] : [inputValue];\n },\n id: id,\n value: filterValueState,\n onChange: handleChange,\n renderTags: (value, getTagProps) => value.map((option, index) => /*#__PURE__*/_jsx(rootProps.slots.baseChip, _extends({\n variant: \"outlined\",\n size: \"small\",\n label: option\n }, getTagProps({\n index\n })))),\n renderInput: params => {\n var _rootProps$slotProps;\n return /*#__PURE__*/_jsx(rootProps.slots.baseTextField, _extends({}, params, {\n label: apiRef.current.getLocaleText('filterPanelInputLabel'),\n placeholder: apiRef.current.getLocaleText('filterPanelInputPlaceholder'),\n InputLabelProps: _extends({}, params.InputLabelProps, {\n shrink: true\n }),\n inputRef: focusElementRef,\n type: type || 'text'\n }, TextFieldProps, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseTextField));\n }\n }, other));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridFilterInputMultipleValue.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n apiRef: PropTypes.shape({\n current: PropTypes.object.isRequired\n }).isRequired,\n applyValue: PropTypes.func.isRequired,\n focusElementRef: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.func, PropTypes.object]),\n item: PropTypes.shape({\n field: PropTypes.string.isRequired,\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n operator: PropTypes.string.isRequired,\n value: PropTypes.any\n }).isRequired,\n type: PropTypes.oneOf(['number', 'text'])\n} : void 0;\nexport { GridFilterInputMultipleValue };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"item\", \"applyValue\", \"type\", \"apiRef\", \"focusElementRef\", \"color\", \"error\", \"helperText\", \"size\", \"variant\", \"getOptionLabel\", \"getOptionValue\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport Autocomplete, { createFilterOptions } from '@mui/material/Autocomplete';\nimport { unstable_useId as useId } from '@mui/utils';\nimport { isSingleSelectColDef } from './filterPanelUtils';\nimport { useGridRootProps } from '../../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst filter = createFilterOptions();\nfunction GridFilterInputMultipleSingleSelect(props) {\n var _resolvedColumn, _resolvedColumn2;\n const {\n item,\n applyValue,\n apiRef,\n focusElementRef,\n color,\n error,\n helperText,\n size,\n variant = 'standard',\n getOptionLabel: getOptionLabelProp,\n getOptionValue: getOptionValueProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const TextFieldProps = {\n color,\n error,\n helperText,\n size,\n variant\n };\n const id = useId();\n const rootProps = useGridRootProps();\n let resolvedColumn = null;\n if (item.field) {\n const column = apiRef.current.getColumn(item.field);\n if (isSingleSelectColDef(column)) {\n resolvedColumn = column;\n }\n }\n const getOptionValue = getOptionValueProp || ((_resolvedColumn = resolvedColumn) == null ? void 0 : _resolvedColumn.getOptionValue);\n const getOptionLabel = getOptionLabelProp || ((_resolvedColumn2 = resolvedColumn) == null ? void 0 : _resolvedColumn2.getOptionLabel);\n const isOptionEqualToValue = React.useCallback((option, value) => getOptionValue(option) === getOptionValue(value), [getOptionValue]);\n const resolvedValueOptions = React.useMemo(() => {\n var _resolvedColumn3;\n if (!((_resolvedColumn3 = resolvedColumn) != null && _resolvedColumn3.valueOptions)) {\n return [];\n }\n if (typeof resolvedColumn.valueOptions === 'function') {\n return resolvedColumn.valueOptions({\n field: resolvedColumn.field\n });\n }\n return resolvedColumn.valueOptions;\n }, [resolvedColumn]);\n const resolvedFormattedValueOptions = React.useMemo(() => {\n return resolvedValueOptions == null ? void 0 : resolvedValueOptions.map(getOptionValue);\n }, [resolvedValueOptions, getOptionValue]);\n\n // The value is computed from the item.value and used directly\n // If it was done by a useEffect/useState, the Autocomplete could receive incoherent value and options\n const filteredValues = React.useMemo(() => {\n if (!Array.isArray(item.value)) {\n return [];\n }\n if (resolvedValueOptions !== undefined) {\n const itemValueIndexes = item.value.map(element => {\n // Gets the index matching between values and valueOptions\n return resolvedFormattedValueOptions == null ? void 0 : resolvedFormattedValueOptions.findIndex(formattedOption => formattedOption === element);\n });\n return itemValueIndexes.filter(index => index >= 0).map(index => resolvedValueOptions[index]);\n }\n return item.value;\n }, [item.value, resolvedValueOptions, resolvedFormattedValueOptions]);\n React.useEffect(() => {\n if (!Array.isArray(item.value) || filteredValues.length !== item.value.length) {\n // Updates the state if the filter value has been cleaned by the component\n applyValue(_extends({}, item, {\n value: filteredValues.map(getOptionValue)\n }));\n }\n }, [item, filteredValues, applyValue, getOptionValue]);\n const handleChange = React.useCallback((event, value) => {\n applyValue(_extends({}, item, {\n value: value.map(getOptionValue)\n }));\n }, [applyValue, item, getOptionValue]);\n return /*#__PURE__*/_jsx(Autocomplete, _extends({\n multiple: true,\n options: resolvedValueOptions,\n isOptionEqualToValue: isOptionEqualToValue,\n filterOptions: filter,\n id: id,\n value: filteredValues,\n onChange: handleChange,\n getOptionLabel: getOptionLabel,\n renderTags: (value, getTagProps) => value.map((option, index) => /*#__PURE__*/_jsx(rootProps.slots.baseChip, _extends({\n variant: \"outlined\",\n size: \"small\",\n label: getOptionLabel(option)\n }, getTagProps({\n index\n })))),\n renderInput: params => {\n var _rootProps$slotProps;\n return /*#__PURE__*/_jsx(rootProps.slots.baseTextField, _extends({}, params, {\n label: apiRef.current.getLocaleText('filterPanelInputLabel'),\n placeholder: apiRef.current.getLocaleText('filterPanelInputPlaceholder'),\n InputLabelProps: _extends({}, params.InputLabelProps, {\n shrink: true\n }),\n inputRef: focusElementRef,\n type: \"singleSelect\"\n }, TextFieldProps, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseTextField));\n }\n }, other));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridFilterInputMultipleSingleSelect.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n apiRef: PropTypes.shape({\n current: PropTypes.object.isRequired\n }).isRequired,\n applyValue: PropTypes.func.isRequired,\n focusElementRef: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.func, PropTypes.object]),\n /**\n * Used to determine the label displayed for a given value option.\n * @param {ValueOptions} value The current value option.\n * @returns {string} The text to be displayed.\n */\n getOptionLabel: PropTypes.func,\n /**\n * Used to determine the value used for a value option.\n * @param {ValueOptions} value The current value option.\n * @returns {string} The value to be used.\n */\n getOptionValue: PropTypes.func,\n item: PropTypes.shape({\n field: PropTypes.string.isRequired,\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n operator: PropTypes.string.isRequired,\n value: PropTypes.any\n }).isRequired,\n type: PropTypes.oneOf(['singleSelect'])\n} : void 0;\nexport { GridFilterInputMultipleSingleSelect };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onClick\"];\nimport * as React from 'react';\nimport { unstable_useId as useId } from '@mui/material/utils';\nimport { useGridSelector } from '../../hooks/utils/useGridSelector';\nimport { gridPreferencePanelStateSelector } from '../../hooks/features/preferencesPanel/gridPreferencePanelSelector';\nimport { GridPreferencePanelsValue } from '../../hooks/features/preferencesPanel/gridPreferencePanelsValue';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const GridToolbarColumnsButton = /*#__PURE__*/React.forwardRef(function GridToolbarColumnsButton(props, ref) {\n var _rootProps$slotProps;\n const {\n onClick\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const columnButtonId = useId();\n const columnPanelId = useId();\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const preferencePanel = useGridSelector(apiRef, gridPreferencePanelStateSelector);\n const showColumns = event => {\n if (preferencePanel.open && preferencePanel.openedPanelValue === GridPreferencePanelsValue.columns) {\n apiRef.current.hidePreferences();\n } else {\n apiRef.current.showPreferences(GridPreferencePanelsValue.columns, columnPanelId, columnButtonId);\n }\n onClick == null || onClick(event);\n };\n\n // Disable the button if the corresponding is disabled\n if (rootProps.disableColumnSelector) {\n return null;\n }\n const isOpen = preferencePanel.open && preferencePanel.panelId === columnPanelId;\n return /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({\n ref: ref,\n id: columnButtonId,\n size: \"small\",\n \"aria-label\": apiRef.current.getLocaleText('toolbarColumnsLabel'),\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": isOpen,\n \"aria-controls\": isOpen ? columnPanelId : undefined,\n startIcon: /*#__PURE__*/_jsx(rootProps.slots.columnSelectorIcon, {})\n }, other, {\n onClick: showColumns\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseButton, {\n children: apiRef.current.getLocaleText('toolbarColumns')\n }));\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onClick\"];\nimport * as React from 'react';\nimport { unstable_useId as useId, unstable_useForkRef as useForkRef } from '@mui/utils';\nimport MenuList from '@mui/material/MenuList';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport { gridDensityValueSelector } from '../../hooks/features/density/densitySelector';\nimport { isHideMenuKey, isTabKey } from '../../utils/keyboardUtils';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { useGridSelector } from '../../hooks/utils/useGridSelector';\nimport { GridMenu } from '../menu/GridMenu';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { gridClasses } from '../../constants/gridClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const GridToolbarDensitySelector = /*#__PURE__*/React.forwardRef(function GridToolbarDensitySelector(props, ref) {\n var _rootProps$slotProps;\n const {\n onClick\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const densityValue = useGridSelector(apiRef, gridDensityValueSelector);\n const densityButtonId = useId();\n const densityMenuId = useId();\n const [open, setOpen] = React.useState(false);\n const buttonRef = React.useRef(null);\n const handleRef = useForkRef(ref, buttonRef);\n const densityOptions = [{\n icon: /*#__PURE__*/_jsx(rootProps.slots.densityCompactIcon, {}),\n label: apiRef.current.getLocaleText('toolbarDensityCompact'),\n value: 'compact'\n }, {\n icon: /*#__PURE__*/_jsx(rootProps.slots.densityStandardIcon, {}),\n label: apiRef.current.getLocaleText('toolbarDensityStandard'),\n value: 'standard'\n }, {\n icon: /*#__PURE__*/_jsx(rootProps.slots.densityComfortableIcon, {}),\n label: apiRef.current.getLocaleText('toolbarDensityComfortable'),\n value: 'comfortable'\n }];\n const startIcon = React.useMemo(() => {\n switch (densityValue) {\n case 'compact':\n return /*#__PURE__*/_jsx(rootProps.slots.densityCompactIcon, {});\n case 'comfortable':\n return /*#__PURE__*/_jsx(rootProps.slots.densityComfortableIcon, {});\n default:\n return /*#__PURE__*/_jsx(rootProps.slots.densityStandardIcon, {});\n }\n }, [densityValue, rootProps]);\n const handleDensitySelectorOpen = event => {\n setOpen(prevOpen => !prevOpen);\n onClick == null || onClick(event);\n };\n const handleDensitySelectorClose = () => {\n setOpen(false);\n };\n const handleDensityUpdate = newDensity => {\n apiRef.current.setDensity(newDensity);\n setOpen(false);\n };\n const handleListKeyDown = event => {\n if (isTabKey(event.key)) {\n event.preventDefault();\n }\n if (isHideMenuKey(event.key)) {\n setOpen(false);\n }\n };\n\n // Disable the button if the corresponding is disabled\n if (rootProps.disableDensitySelector) {\n return null;\n }\n const densityElements = densityOptions.map((option, index) => /*#__PURE__*/_jsxs(MenuItem, {\n onClick: () => handleDensityUpdate(option.value),\n selected: option.value === densityValue,\n children: [/*#__PURE__*/_jsx(ListItemIcon, {\n children: option.icon\n }), option.label]\n }, index));\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({\n ref: handleRef,\n size: \"small\",\n startIcon: startIcon,\n \"aria-label\": apiRef.current.getLocaleText('toolbarDensityLabel'),\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": open,\n \"aria-controls\": open ? densityMenuId : undefined,\n id: densityButtonId\n }, other, {\n onClick: handleDensitySelectorOpen\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseButton, {\n children: apiRef.current.getLocaleText('toolbarDensity')\n })), /*#__PURE__*/_jsx(GridMenu, {\n open: open,\n target: buttonRef.current,\n onClose: handleDensitySelectorClose,\n position: \"bottom-start\",\n children: /*#__PURE__*/_jsx(MenuList, {\n id: densityMenuId,\n className: gridClasses.menuList,\n \"aria-labelledby\": densityButtonId,\n onKeyDown: handleListKeyDown,\n autoFocusItem: open,\n children: densityElements\n })\n })]\n });\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"componentsProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses, unstable_capitalize as capitalize, unstable_useId as useId } from '@mui/utils';\nimport Badge from '@mui/material/Badge';\nimport { gridColumnLookupSelector } from '../../hooks/features/columns/gridColumnsSelector';\nimport { useGridSelector } from '../../hooks/utils/useGridSelector';\nimport { gridFilterActiveItemsSelector } from '../../hooks/features/filter/gridFilterSelector';\nimport { gridPreferencePanelStateSelector } from '../../hooks/features/preferencesPanel/gridPreferencePanelSelector';\nimport { GridPreferencePanelsValue } from '../../hooks/features/preferencesPanel/gridPreferencePanelsValue';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { getDataGridUtilityClass } from '../../constants/gridClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['toolbarFilterList']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridToolbarFilterListRoot = styled('ul', {\n name: 'MuiDataGrid',\n slot: 'ToolbarFilterList',\n overridesResolver: (_props, styles) => styles.toolbarFilterList\n})(({\n theme\n}) => ({\n margin: theme.spacing(1, 1, 0.5),\n padding: theme.spacing(0, 1)\n}));\nconst GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolbarFilterButton(props, ref) {\n var _rootProps$slotProps, _rootProps$slotProps2;\n const {\n componentsProps = {}\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const buttonProps = componentsProps.button || {};\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const activeFilters = useGridSelector(apiRef, gridFilterActiveItemsSelector);\n const lookup = useGridSelector(apiRef, gridColumnLookupSelector);\n const preferencePanel = useGridSelector(apiRef, gridPreferencePanelStateSelector);\n const classes = useUtilityClasses(rootProps);\n const filterButtonId = useId();\n const filterPanelId = useId();\n const tooltipContentNode = React.useMemo(() => {\n if (preferencePanel.open) {\n return apiRef.current.getLocaleText('toolbarFiltersTooltipHide');\n }\n if (activeFilters.length === 0) {\n return apiRef.current.getLocaleText('toolbarFiltersTooltipShow');\n }\n const getOperatorLabel = item => lookup[item.field].filterOperators.find(operator => operator.value === item.operator).label || apiRef.current.getLocaleText(`filterOperator${capitalize(item.operator)}`).toString();\n const getFilterItemValue = item => {\n const {\n getValueAsString\n } = lookup[item.field].filterOperators.find(operator => operator.value === item.operator);\n return getValueAsString ? getValueAsString(item.value) : item.value;\n };\n return /*#__PURE__*/_jsxs(\"div\", {\n children: [apiRef.current.getLocaleText('toolbarFiltersTooltipActive')(activeFilters.length), /*#__PURE__*/_jsx(GridToolbarFilterListRoot, {\n className: classes.root,\n ownerState: rootProps,\n children: activeFilters.map((item, index) => _extends({}, lookup[item.field] && /*#__PURE__*/_jsx(\"li\", {\n children: `${lookup[item.field].headerName || item.field}\n ${getOperatorLabel(item)}\n ${\n // implicit check for null and undefined\n item.value != null ? getFilterItemValue(item) : ''}`\n }, index)))\n })]\n });\n }, [apiRef, rootProps, preferencePanel.open, activeFilters, lookup, classes]);\n const toggleFilter = event => {\n var _buttonProps$onClick;\n const {\n open,\n openedPanelValue\n } = preferencePanel;\n if (open && openedPanelValue === GridPreferencePanelsValue.filters) {\n apiRef.current.hidePreferences();\n } else {\n apiRef.current.showPreferences(GridPreferencePanelsValue.filters, filterPanelId, filterButtonId);\n }\n (_buttonProps$onClick = buttonProps.onClick) == null || _buttonProps$onClick.call(buttonProps, event);\n };\n\n // Disable the button if the corresponding is disabled\n if (rootProps.disableColumnFilter) {\n return null;\n }\n const isOpen = preferencePanel.open && preferencePanel.panelId === filterPanelId;\n return /*#__PURE__*/_jsx(rootProps.slots.baseTooltip, _extends({\n title: tooltipContentNode,\n enterDelay: 1000\n }, other, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseTooltip, {\n children: /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({\n ref: ref,\n id: filterButtonId,\n size: \"small\",\n \"aria-label\": apiRef.current.getLocaleText('toolbarFiltersLabel'),\n \"aria-controls\": isOpen ? filterPanelId : undefined,\n \"aria-expanded\": isOpen,\n \"aria-haspopup\": true,\n startIcon: /*#__PURE__*/_jsx(Badge, {\n badgeContent: activeFilters.length,\n color: \"primary\",\n children: /*#__PURE__*/_jsx(rootProps.slots.openFilterButtonIcon, {})\n })\n }, buttonProps, {\n onClick: toggleFilter\n }, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseButton, {\n children: apiRef.current.getLocaleText('toolbarFilters')\n }))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridToolbarFilterButton.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The props used for each slot inside.\n * @default {}\n */\n componentsProps: PropTypes.object\n} : void 0;\nexport { GridToolbarFilterButton };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"onClick\"];\nimport * as React from 'react';\nimport { unstable_useId as useId, unstable_useForkRef as useForkRef } from '@mui/utils';\nimport MenuList from '@mui/material/MenuList';\nimport { isHideMenuKey, isTabKey } from '../../utils/keyboardUtils';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { GridMenu } from '../menu/GridMenu';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { gridClasses } from '../../constants/gridClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const GridToolbarExportContainer = /*#__PURE__*/React.forwardRef(function GridToolbarExportContainer(props, ref) {\n var _rootProps$slotProps;\n const {\n children,\n onClick\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const exportButtonId = useId();\n const exportMenuId = useId();\n const [open, setOpen] = React.useState(false);\n const buttonRef = React.useRef(null);\n const handleRef = useForkRef(ref, buttonRef);\n const handleMenuOpen = event => {\n setOpen(prevOpen => !prevOpen);\n onClick == null || onClick(event);\n };\n const handleMenuClose = () => setOpen(false);\n const handleListKeyDown = event => {\n if (isTabKey(event.key)) {\n event.preventDefault();\n }\n if (isHideMenuKey(event.key)) {\n handleMenuClose();\n }\n };\n if (children == null) {\n return null;\n }\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({\n ref: handleRef,\n size: \"small\",\n startIcon: /*#__PURE__*/_jsx(rootProps.slots.exportIcon, {}),\n \"aria-expanded\": open,\n \"aria-label\": apiRef.current.getLocaleText('toolbarExportLabel'),\n \"aria-haspopup\": \"menu\",\n \"aria-controls\": open ? exportMenuId : undefined,\n id: exportButtonId\n }, other, {\n onClick: handleMenuOpen\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseButton, {\n children: apiRef.current.getLocaleText('toolbarExport')\n })), /*#__PURE__*/_jsx(GridMenu, {\n open: open,\n target: buttonRef.current,\n onClose: handleMenuClose,\n position: \"bottom-start\",\n children: /*#__PURE__*/_jsx(MenuList, {\n id: exportMenuId,\n className: gridClasses.menuList,\n \"aria-labelledby\": exportButtonId,\n onKeyDown: handleListKeyDown,\n autoFocusItem: open,\n children: React.Children.map(children, child => {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return child;\n }\n return /*#__PURE__*/React.cloneElement(child, {\n hideMenu: handleMenuClose\n });\n })\n })\n })]\n });\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"hideMenu\", \"options\"],\n _excluded2 = [\"hideMenu\", \"options\"],\n _excluded3 = [\"csvOptions\", \"printOptions\", \"excelOptions\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport MenuItem from '@mui/material/MenuItem';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { GridToolbarExportContainer } from './GridToolbarExportContainer';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function GridCsvExportMenuItem(props) {\n const apiRef = useGridApiContext();\n const {\n hideMenu,\n options\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n return /*#__PURE__*/_jsx(MenuItem, _extends({\n onClick: () => {\n apiRef.current.exportDataAsCsv(options);\n hideMenu == null || hideMenu();\n }\n }, other, {\n children: apiRef.current.getLocaleText('toolbarExportCSV')\n }));\n}\nexport function GridPrintExportMenuItem(props) {\n const apiRef = useGridApiContext();\n const {\n hideMenu,\n options\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded2);\n return /*#__PURE__*/_jsx(MenuItem, _extends({\n onClick: () => {\n apiRef.current.exportDataAsPrint(options);\n hideMenu == null || hideMenu();\n }\n }, other, {\n children: apiRef.current.getLocaleText('toolbarExportPrint')\n }));\n}\nconst GridToolbarExport = /*#__PURE__*/React.forwardRef(function GridToolbarExport(props, ref) {\n const {\n csvOptions = {},\n printOptions = {},\n excelOptions\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded3);\n const apiRef = useGridApiContext();\n const preProcessedButtons = apiRef.current.unstable_applyPipeProcessors('exportMenu', [], {\n excelOptions,\n csvOptions,\n printOptions\n }).sort((a, b) => a.componentName > b.componentName ? 1 : -1);\n if (preProcessedButtons.length === 0) {\n return null;\n }\n return /*#__PURE__*/_jsx(GridToolbarExportContainer, _extends({}, other, {\n ref: ref,\n children: preProcessedButtons.map((button, index) => /*#__PURE__*/React.cloneElement(button.component, {\n key: index\n }))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridToolbarExport.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n csvOptions: PropTypes.object,\n printOptions: PropTypes.object\n} : void 0;\nexport { GridToolbarExport };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"quickFilterParser\", \"quickFilterFormatter\", \"debounceMs\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport TextField from '@mui/material/TextField';\nimport { styled } from '@mui/material/styles';\nimport { unstable_debounce as debounce } from '@mui/utils';\nimport { useGridApiContext } from '../../hooks/utils/useGridApiContext';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { useGridSelector } from '../../hooks/utils/useGridSelector';\nimport { gridQuickFilterValuesSelector } from '../../hooks/features/filter';\nimport { isDeepEqual } from '../../utils/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst GridToolbarQuickFilterRoot = styled(TextField, {\n name: 'MuiDataGrid',\n slot: 'ToolbarQuickFilter',\n overridesResolver: (props, styles) => styles.toolbarQuickFilter\n})(({\n theme\n}) => ({\n width: 'auto',\n paddingBottom: theme.spacing(0.5),\n '& input': {\n marginLeft: theme.spacing(0.5)\n },\n '& .MuiInput-underline:before': {\n borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`\n },\n [`& input[type=search]::-ms-clear,\n& input[type=search]::-ms-reveal`]: {\n /* clears the 'X' icon from IE */\n display: 'none',\n width: 0,\n height: 0\n },\n [`& input[type=\"search\"]::-webkit-search-decoration,\n & input[type=\"search\"]::-webkit-search-cancel-button,\n & input[type=\"search\"]::-webkit-search-results-button,\n & input[type=\"search\"]::-webkit-search-results-decoration`]: {\n /* clears the 'X' icon from Chrome */\n display: 'none'\n }\n}));\nconst defaultSearchValueParser = searchText => searchText.split(' ').filter(word => word !== '');\nconst defaultSearchValueFormatter = values => values.join(' ');\nfunction GridToolbarQuickFilter(props) {\n var _rootProps$slotProps, _rootProps$slotProps2;\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const quickFilterValues = useGridSelector(apiRef, gridQuickFilterValuesSelector);\n const {\n quickFilterParser = defaultSearchValueParser,\n quickFilterFormatter = defaultSearchValueFormatter,\n debounceMs = rootProps.filterDebounceMs\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const [searchValue, setSearchValue] = React.useState(() => quickFilterFormatter(quickFilterValues != null ? quickFilterValues : []));\n const prevQuickFilterValuesRef = React.useRef(quickFilterValues);\n React.useEffect(() => {\n if (!isDeepEqual(prevQuickFilterValuesRef.current, quickFilterValues)) {\n // The model of quick filter value has been updated\n prevQuickFilterValuesRef.current = quickFilterValues;\n\n // Update the input value if needed to match the new model\n setSearchValue(prevSearchValue => isDeepEqual(quickFilterParser(prevSearchValue), quickFilterValues) ? prevSearchValue : quickFilterFormatter(quickFilterValues != null ? quickFilterValues : []));\n }\n }, [quickFilterValues, quickFilterFormatter, quickFilterParser]);\n const updateSearchValue = React.useCallback(newSearchValue => {\n const newQuickFilterValues = quickFilterParser(newSearchValue);\n prevQuickFilterValuesRef.current = newQuickFilterValues;\n apiRef.current.setQuickFilterValues(newQuickFilterValues);\n }, [apiRef, quickFilterParser]);\n const debouncedUpdateSearchValue = React.useMemo(() => debounce(updateSearchValue, debounceMs), [updateSearchValue, debounceMs]);\n const handleSearchValueChange = React.useCallback(event => {\n const newSearchValue = event.target.value;\n setSearchValue(newSearchValue);\n debouncedUpdateSearchValue(newSearchValue);\n }, [debouncedUpdateSearchValue]);\n const handleSearchReset = React.useCallback(() => {\n setSearchValue('');\n updateSearchValue('');\n }, [updateSearchValue]);\n return /*#__PURE__*/_jsx(GridToolbarQuickFilterRoot, _extends({\n as: rootProps.slots.baseTextField,\n ownerState: rootProps,\n variant: \"standard\",\n value: searchValue,\n onChange: handleSearchValueChange,\n placeholder: apiRef.current.getLocaleText('toolbarQuickFilterPlaceholder'),\n \"aria-label\": apiRef.current.getLocaleText('toolbarQuickFilterLabel'),\n type: \"search\"\n }, other, {\n InputProps: _extends({\n startAdornment: /*#__PURE__*/_jsx(rootProps.slots.quickFilterIcon, {\n fontSize: \"small\"\n }),\n endAdornment: /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, _extends({\n \"aria-label\": apiRef.current.getLocaleText('toolbarQuickFilterDeleteIconLabel'),\n size: \"small\",\n sx: {\n visibility: searchValue ? 'visible' : 'hidden'\n },\n onClick: handleSearchReset\n }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseIconButton, {\n children: /*#__PURE__*/_jsx(rootProps.slots.quickFilterClearIcon, {\n fontSize: \"small\"\n })\n }))\n }, other.InputProps)\n }, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseTextField));\n}\nprocess.env.NODE_ENV !== \"production\" ? GridToolbarQuickFilter.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The debounce time in milliseconds.\n * @default 150\n */\n debounceMs: PropTypes.number,\n /**\n * Function responsible for formatting values of quick filter in a string when the model is modified\n * @param {any[]} values The new values passed to the quick filter model\n * @returns {string} The string to display in the text field\n * @default (values: string[]) => values.join(' ')\n */\n quickFilterFormatter: PropTypes.func,\n /**\n * Function responsible for parsing text input in an array of independent values for quick filtering.\n * @param {string} input The value entered by the user\n * @returns {any[]} The array of value on which quick filter is applied\n * @default (searchText: string) => searchText\n * .split(' ')\n * .filter((word) => word !== '')\n */\n quickFilterParser: PropTypes.func\n} : void 0;\n\n/**\n * Demos:\n * - [Filtering - overview](https://mui.com/x/react-data-grid/filtering/)\n * - [Filtering - quick filter](https://mui.com/x/react-data-grid/filtering/quick-filter/)\n *\n * API:\n * - [GridToolbarQuickFilter API](https://mui.com/x/api/data-grid/grid-toolbar-quick-filter/)\n */\nexport { GridToolbarQuickFilter };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"csvOptions\", \"printOptions\", \"excelOptions\", \"showQuickFilter\", \"quickFilterProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport Box from '@mui/material/Box';\nimport { GridToolbarContainer } from '../containers/GridToolbarContainer';\nimport { GridToolbarColumnsButton } from './GridToolbarColumnsButton';\nimport { GridToolbarDensitySelector } from './GridToolbarDensitySelector';\nimport { GridToolbarFilterButton } from './GridToolbarFilterButton';\nimport { GridToolbarExport } from './GridToolbarExport';\nimport { useGridRootProps } from '../../hooks/utils/useGridRootProps';\nimport { GridToolbarQuickFilter } from './GridToolbarQuickFilter';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst GridToolbar = /*#__PURE__*/React.forwardRef(function GridToolbar(props, ref) {\n // TODO v7: think about where export option should be passed.\n // from slotProps={{ toolbarExport: { ...exportOption } }} seems to be more appropriate\n const {\n csvOptions,\n printOptions,\n excelOptions,\n showQuickFilter = false,\n quickFilterProps = {}\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const rootProps = useGridRootProps();\n if (rootProps.disableColumnFilter && rootProps.disableColumnSelector && rootProps.disableDensitySelector && !showQuickFilter) {\n return null;\n }\n return /*#__PURE__*/_jsxs(GridToolbarContainer, _extends({\n ref: ref\n }, other, {\n children: [/*#__PURE__*/_jsx(GridToolbarColumnsButton, {}), /*#__PURE__*/_jsx(GridToolbarFilterButton, {}), /*#__PURE__*/_jsx(GridToolbarDensitySelector, {}), /*#__PURE__*/_jsx(GridToolbarExport, {\n csvOptions: csvOptions,\n printOptions: printOptions\n // TODO: remove the reference to excelOptions in community package\n ,\n excelOptions: excelOptions\n }), /*#__PURE__*/_jsx(Box, {\n sx: {\n flex: 1\n }\n }), showQuickFilter && /*#__PURE__*/_jsx(GridToolbarQuickFilter, _extends({}, quickFilterProps))]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridToolbar.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * Props passed to the quick filter component.\n */\n quickFilterProps: PropTypes.object,\n /**\n * Show the quick filter component.\n * @default false\n */\n showQuickFilter: PropTypes.bool,\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridToolbar };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"selectedRowCount\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { styled } from '@mui/system';\nimport { useGridApiContext } from '../hooks/utils/useGridApiContext';\nimport { getDataGridUtilityClass } from '../constants/gridClasses';\nimport { useGridRootProps } from '../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['selectedRowCount']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridSelectedRowCountRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'SelectedRowCount',\n overridesResolver: (props, styles) => styles.selectedRowCount\n})(({\n theme\n}) => ({\n alignItems: 'center',\n display: 'flex',\n margin: theme.spacing(0, 2),\n visibility: 'hidden',\n width: 0,\n height: 0,\n [theme.breakpoints.up('sm')]: {\n visibility: 'visible',\n width: 'auto',\n height: 'auto'\n }\n}));\nconst GridSelectedRowCount = /*#__PURE__*/React.forwardRef(function GridSelectedRowCount(props, ref) {\n const {\n className,\n selectedRowCount\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridApiContext();\n const ownerState = useGridRootProps();\n const classes = useUtilityClasses(ownerState);\n const rowSelectedText = apiRef.current.getLocaleText('footerRowSelected')(selectedRowCount);\n return /*#__PURE__*/_jsx(GridSelectedRowCountRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, other, {\n children: rowSelectedText\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridSelectedRowCount.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n selectedRowCount: PropTypes.number.isRequired,\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridSelectedRowCount };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useGridSelector } from '../hooks/utils/useGridSelector';\nimport { gridTopLevelRowCountSelector } from '../hooks/features/rows/gridRowsSelector';\nimport { selectedGridRowsCountSelector } from '../hooks/features/rowSelection/gridRowSelectionSelector';\nimport { gridFilteredTopLevelRowCountSelector } from '../hooks/features/filter/gridFilterSelector';\nimport { useGridApiContext } from '../hooks/utils/useGridApiContext';\nimport { GridSelectedRowCount } from './GridSelectedRowCount';\nimport { GridFooterContainer } from './containers/GridFooterContainer';\nimport { useGridRootProps } from '../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst GridFooter = /*#__PURE__*/React.forwardRef(function GridFooter(props, ref) {\n var _rootProps$slotProps, _rootProps$slotProps2;\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const totalTopLevelRowCount = useGridSelector(apiRef, gridTopLevelRowCountSelector);\n const selectedRowCount = useGridSelector(apiRef, selectedGridRowsCountSelector);\n const visibleTopLevelRowCount = useGridSelector(apiRef, gridFilteredTopLevelRowCountSelector);\n const selectedRowCountElement = !rootProps.hideFooterSelectedRowCount && selectedRowCount > 0 ? /*#__PURE__*/_jsx(GridSelectedRowCount, {\n selectedRowCount: selectedRowCount\n }) : /*#__PURE__*/_jsx(\"div\", {});\n const rowCountElement = !rootProps.hideFooterRowCount && !rootProps.pagination ? /*#__PURE__*/_jsx(rootProps.slots.footerRowCount, _extends({}, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.footerRowCount, {\n rowCount: totalTopLevelRowCount,\n visibleRowCount: visibleTopLevelRowCount\n })) : null;\n const paginationElement = rootProps.pagination && !rootProps.hideFooterPagination && rootProps.slots.pagination && /*#__PURE__*/_jsx(rootProps.slots.pagination, _extends({}, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.pagination));\n return /*#__PURE__*/_jsxs(GridFooterContainer, _extends({\n ref: ref\n }, props, {\n children: [selectedRowCountElement, rowCountElement, paginationElement]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridFooter.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridFooter };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useGridRootProps } from '../hooks/utils/useGridRootProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function GridHeader() {\n var _rootProps$slotProps, _rootProps$slotProps2;\n const rootProps = useGridRootProps();\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(rootProps.slots.preferencesPanel, _extends({}, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.preferencesPanel)), rootProps.slots.toolbar && /*#__PURE__*/_jsx(rootProps.slots.toolbar, _extends({}, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.toolbar))]\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { GridOverlay } from './containers/GridOverlay';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst GridLoadingOverlay = /*#__PURE__*/React.forwardRef(function GridLoadingOverlay(props, ref) {\n return /*#__PURE__*/_jsx(GridOverlay, _extends({\n ref: ref\n }, props, {\n children: /*#__PURE__*/_jsx(CircularProgress, {})\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridLoadingOverlay.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridLoadingOverlay };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useGridApiContext } from '../hooks/utils/useGridApiContext';\nimport { GridOverlay } from './containers/GridOverlay';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst GridNoRowsOverlay = /*#__PURE__*/React.forwardRef(function GridNoRowsOverlay(props, ref) {\n const apiRef = useGridApiContext();\n const noRowsLabel = apiRef.current.getLocaleText('noRowsLabel');\n return /*#__PURE__*/_jsx(GridOverlay, _extends({\n ref: ref\n }, props, {\n children: noRowsLabel\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridNoRowsOverlay.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport { GridNoRowsOverlay };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport TablePagination, { tablePaginationClasses } from '@mui/material/TablePagination';\nimport { styled } from '@mui/material/styles';\nimport { useGridSelector } from '../hooks/utils/useGridSelector';\nimport { useGridApiContext } from '../hooks/utils/useGridApiContext';\nimport { useGridRootProps } from '../hooks/utils/useGridRootProps';\nimport { gridFilteredTopLevelRowCountSelector } from '../hooks/features/filter';\nimport { gridPaginationModelSelector } from '../hooks/features/pagination/gridPaginationSelector';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst GridPaginationRoot = styled(TablePagination)(({\n theme\n}) => ({\n [`& .${tablePaginationClasses.selectLabel}`]: {\n display: 'none',\n [theme.breakpoints.up('sm')]: {\n display: 'block'\n }\n },\n [`& .${tablePaginationClasses.input}`]: {\n display: 'none',\n [theme.breakpoints.up('sm')]: {\n display: 'inline-flex'\n }\n }\n}));\n\n// A mutable version of a readonly array.\n\nexport const GridPagination = /*#__PURE__*/React.forwardRef(function GridPagination(props, ref) {\n const apiRef = useGridApiContext();\n const rootProps = useGridRootProps();\n const paginationModel = useGridSelector(apiRef, gridPaginationModelSelector);\n const visibleTopLevelRowCount = useGridSelector(apiRef, gridFilteredTopLevelRowCountSelector);\n const rowCount = React.useMemo(() => {\n var _ref, _rootProps$rowCount;\n return (_ref = (_rootProps$rowCount = rootProps.rowCount) != null ? _rootProps$rowCount : visibleTopLevelRowCount) != null ? _ref : 0;\n }, [rootProps.rowCount, visibleTopLevelRowCount]);\n const lastPage = React.useMemo(() => Math.floor(rowCount / (paginationModel.pageSize || 1)), [rowCount, paginationModel.pageSize]);\n const handlePageSizeChange = React.useCallback(event => {\n const pageSize = Number(event.target.value);\n apiRef.current.setPageSize(pageSize);\n }, [apiRef]);\n const handlePageChange = React.useCallback((_, page) => {\n apiRef.current.setPage(page);\n }, [apiRef]);\n const isPageSizeIncludedInPageSizeOptions = pageSize => {\n for (let i = 0; i < rootProps.pageSizeOptions.length; i += 1) {\n const option = rootProps.pageSizeOptions[i];\n if (typeof option === 'number') {\n if (option === pageSize) {\n return true;\n }\n } else if (option.value === pageSize) {\n return true;\n }\n }\n return false;\n };\n if (process.env.NODE_ENV !== 'production') {\n var _rootProps$pagination, _rootProps$pagination2;\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const warnedOnceMissingInPageSizeOptions = React.useRef(false);\n const pageSize = (_rootProps$pagination = (_rootProps$pagination2 = rootProps.paginationModel) == null ? void 0 : _rootProps$pagination2.pageSize) != null ? _rootProps$pagination : paginationModel.pageSize;\n if (!warnedOnceMissingInPageSizeOptions.current && !rootProps.autoPageSize && !isPageSizeIncludedInPageSizeOptions(pageSize)) {\n console.warn([`MUI: The page size \\`${paginationModel.pageSize}\\` is not preset in the \\`pageSizeOptions\\``, `Add it to show the pagination select.`].join('\\n'));\n warnedOnceMissingInPageSizeOptions.current = true;\n }\n }\n const pageSizeOptions = isPageSizeIncludedInPageSizeOptions(paginationModel.pageSize) ? rootProps.pageSizeOptions : [];\n return /*#__PURE__*/_jsx(GridPaginationRoot, _extends({\n ref: ref,\n component: \"div\",\n count: rowCount,\n page: paginationModel.page <= lastPage ? paginationModel.page : lastPage\n // TODO: Remove the cast once the type is fixed in Material UI and that the min Material UI version\n // for x-data-grid is past the fix.\n // Note that Material UI will not mutate the array, so this is safe.\n ,\n rowsPerPageOptions: pageSizeOptions,\n rowsPerPage: paginationModel.pageSize,\n onPageChange: handlePageChange,\n onRowsPerPageChange: handlePageSizeChange\n }, apiRef.current.getLocaleText('MuiTablePagination'), props));\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"rowCount\", \"visibleRowCount\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { styled } from '@mui/system';\nimport { useGridApiContext } from '../hooks/utils/useGridApiContext';\nimport { getDataGridUtilityClass } from '../constants/gridClasses';\nimport { useGridRootProps } from '../hooks/utils/useGridRootProps';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['rowCount']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nconst GridRowCountRoot = styled('div', {\n name: 'MuiDataGrid',\n slot: 'RowCount',\n overridesResolver: (props, styles) => styles.rowCount\n})(({\n theme\n}) => ({\n alignItems: 'center',\n display: 'flex',\n margin: theme.spacing(0, 2)\n}));\nconst GridRowCount = /*#__PURE__*/React.forwardRef(function GridRowCount(props, ref) {\n const {\n className,\n rowCount,\n visibleRowCount\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridApiContext();\n const ownerState = useGridRootProps();\n const classes = useUtilityClasses(ownerState);\n if (rowCount === 0) {\n return null;\n }\n const text = visibleRowCount < rowCount ? apiRef.current.getLocaleText('footerTotalVisibleRows')(visibleRowCount, rowCount) : rowCount.toLocaleString();\n return /*#__PURE__*/_jsxs(GridRowCountRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, other, {\n children: [apiRef.current.getLocaleText('footerTotalRows'), \" \", text]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridRowCount.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n rowCount: PropTypes.number.isRequired,\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n visibleRowCount: PropTypes.number.isRequired\n} : void 0;\nexport { GridRowCount };","import * as React from 'react';\nimport { gridPaginationRowRangeSelector, gridPaginatedVisibleSortedGridRowEntriesSelector } from '../features/pagination/gridPaginationSelector';\nimport { gridExpandedSortedRowEntriesSelector } from '../features/filter/gridFilterSelector';\nexport const getVisibleRows = (apiRef, props) => {\n let rows;\n let range;\n if (props.pagination && props.paginationMode === 'client') {\n range = gridPaginationRowRangeSelector(apiRef);\n rows = gridPaginatedVisibleSortedGridRowEntriesSelector(apiRef);\n } else {\n rows = gridExpandedSortedRowEntriesSelector(apiRef);\n if (rows.length === 0) {\n range = null;\n } else {\n range = {\n firstRowIndex: 0,\n lastRowIndex: rows.length - 1\n };\n }\n }\n return {\n rows,\n range\n };\n};\n\n/**\n * Computes the list of rows that are reachable by scroll.\n * Depending on whether pagination is enabled, it will return the rows in the current page.\n * - If the pagination is disabled or in server mode, it equals all the visible rows.\n * - If the row tree has several layers, it contains up to `state.pageSize` top level rows and all their descendants.\n * - If the row tree is flat, it only contains up to `state.pageSize` rows.\n */\nexport const useGridVisibleRows = (apiRef, props) => {\n const response = getVisibleRows(apiRef, props);\n return React.useMemo(() => ({\n rows: response.rows,\n range: response.range\n }), [response.rows, response.range]);\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * A global API ref, for v7-to-legacy converter\n */\nexport const GLOBAL_API_REF = {\n current: null\n};\n\n/**\n * A tagger to determine if the filter is internal or custom user-supplied.\n * To be a valid internal filter, the v7 function *must* be defined/redefined at\n * the same time as the legacy one.\n * https://github.com/mui/mui-x/pull/9254#discussion_r1231095551\n */\nexport function tagInternalFilter(fn) {\n fn.isInternal = true;\n return fn;\n}\nexport function isInternalFilter(fn) {\n return fn !== undefined && fn.isInternal === true;\n}\nexport function convertFilterV7ToLegacy(fn) {\n return tagInternalFilter((filterItem, column) => {\n const filterFn = fn(filterItem, column);\n if (!filterFn) {\n return filterFn;\n }\n return cellParams => {\n return filterFn(cellParams.value, cellParams.row, column, GLOBAL_API_REF.current);\n };\n });\n}\nexport function convertLegacyOperators(ops) {\n return ops.map(op => {\n return _extends({}, op, {\n getApplyFilterFn: convertFilterV7ToLegacy(op.getApplyFilterFnV7),\n getApplyFilterFnV7: tagInternalFilter(op.getApplyFilterFnV7)\n });\n });\n}\nexport function convertQuickFilterV7ToLegacy(fn) {\n return tagInternalFilter((filterItem, column, apiRef) => {\n const filterFn = fn(filterItem, column, apiRef);\n if (!filterFn) {\n return filterFn;\n }\n return cellParams => {\n return filterFn(cellParams.value, cellParams.row, column, apiRef);\n };\n });\n}","export function getPublicApiRef(apiRef) {\n return {\n current: apiRef.current.getPublicApi()\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { GridLogicOperator } from '../../../models';\nimport { GLOBAL_API_REF, isInternalFilter } from '../../../colDef/utils';\nimport { getDefaultGridFilterModel } from './gridFilterState';\nimport { buildWarning } from '../../../utils/warning';\nimport { getPublicApiRef } from '../../../utils/getPublicApiRef';\nimport { gridColumnFieldsSelector, gridColumnLookupSelector, gridVisibleColumnFieldsSelector } from '../columns';\nlet hasEval;\nfunction getHasEval() {\n if (hasEval !== undefined) {\n return hasEval;\n }\n try {\n hasEval = new Function('return true')();\n } catch (_) {\n hasEval = false;\n }\n return hasEval;\n}\n/**\n * Adds default values to the optional fields of a filter items.\n * @param {GridFilterItem} item The raw filter item.\n * @param {React.MutableRefObject} apiRef The API of the grid.\n * @return {GridFilterItem} The clean filter item with an uniq ID and an always-defined operator.\n * TODO: Make the typing reflect the different between GridFilterInputItem and GridFilterItem.\n */\nexport const cleanFilterItem = (item, apiRef) => {\n const cleanItem = _extends({}, item);\n if (cleanItem.id == null) {\n cleanItem.id = Math.round(Math.random() * 1e5);\n }\n if (cleanItem.operator == null) {\n // Selects a default operator\n // We don't use `apiRef.current.getColumn` because it is not ready during state initialization\n const column = gridColumnLookupSelector(apiRef)[cleanItem.field];\n cleanItem.operator = column && column.filterOperators[0].value;\n }\n return cleanItem;\n};\nconst filterModelDisableMultiColumnsFilteringWarning = buildWarning(['MUI: The `filterModel` can only contain a single item when the `disableMultipleColumnsFiltering` prop is set to `true`.', 'If you are using the community version of the `DataGrid`, this prop is always `true`.'], 'error');\nconst filterModelMissingItemIdWarning = buildWarning('MUI: The `id` field is required on `filterModel.items` when you use multiple filters.', 'error');\nconst filterModelMissingItemOperatorWarning = buildWarning('MUI: The `operator` field is required on `filterModel.items`, one or more of your filtering item has no `operator` provided.', 'error');\nexport const sanitizeFilterModel = (model, disableMultipleColumnsFiltering, apiRef) => {\n const hasSeveralItems = model.items.length > 1;\n let items;\n if (hasSeveralItems && disableMultipleColumnsFiltering) {\n filterModelDisableMultiColumnsFilteringWarning();\n items = [model.items[0]];\n } else {\n items = model.items;\n }\n const hasItemsWithoutIds = hasSeveralItems && items.some(item => item.id == null);\n const hasItemWithoutOperator = items.some(item => item.operator == null);\n if (hasItemsWithoutIds) {\n filterModelMissingItemIdWarning();\n }\n if (hasItemWithoutOperator) {\n filterModelMissingItemOperatorWarning();\n }\n if (hasItemWithoutOperator || hasItemsWithoutIds) {\n return _extends({}, model, {\n items: items.map(item => cleanFilterItem(item, apiRef))\n });\n }\n if (model.items !== items) {\n return _extends({}, model, {\n items\n });\n }\n return model;\n};\nexport const mergeStateWithFilterModel = (filterModel, disableMultipleColumnsFiltering, apiRef) => filteringState => _extends({}, filteringState, {\n filterModel: sanitizeFilterModel(filterModel, disableMultipleColumnsFiltering, apiRef)\n});\nexport const removeDiacritics = value => {\n if (typeof value === 'string') {\n return value.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n }\n return value;\n};\nconst getFilterCallbackFromItem = (filterItem, apiRef) => {\n if (!filterItem.field || !filterItem.operator) {\n return null;\n }\n const column = apiRef.current.getColumn(filterItem.field);\n if (!column) {\n return null;\n }\n let parsedValue;\n if (column.valueParser) {\n var _filterItem$value;\n const parser = column.valueParser;\n parsedValue = Array.isArray(filterItem.value) ? (_filterItem$value = filterItem.value) == null ? void 0 : _filterItem$value.map(x => parser(x)) : parser(filterItem.value);\n } else {\n parsedValue = filterItem.value;\n }\n const {\n ignoreDiacritics\n } = apiRef.current.rootProps;\n if (ignoreDiacritics) {\n parsedValue = removeDiacritics(parsedValue);\n }\n const newFilterItem = _extends({}, filterItem, {\n value: parsedValue\n });\n const filterOperators = column.filterOperators;\n if (!(filterOperators != null && filterOperators.length)) {\n throw new Error(`MUI: No filter operators found for column '${column.field}'.`);\n }\n const filterOperator = filterOperators.find(operator => operator.value === newFilterItem.operator);\n if (!filterOperator) {\n throw new Error(`MUI: No filter operator found for column '${column.field}' and operator value '${newFilterItem.operator}'.`);\n }\n const hasUserFunctionLegacy = !isInternalFilter(filterOperator.getApplyFilterFn);\n const hasUserFunctionV7 = !isInternalFilter(filterOperator.getApplyFilterFnV7);\n const publicApiRef = getPublicApiRef(apiRef);\n if (filterOperator.getApplyFilterFnV7 && !(hasUserFunctionLegacy && !hasUserFunctionV7)) {\n const applyFilterOnRow = filterOperator.getApplyFilterFnV7(newFilterItem, column);\n if (typeof applyFilterOnRow !== 'function') {\n return null;\n }\n return {\n v7: true,\n item: newFilterItem,\n fn: row => {\n let value = apiRef.current.getRowValue(row, column);\n if (ignoreDiacritics) {\n value = removeDiacritics(value);\n }\n return applyFilterOnRow(value, row, column, publicApiRef);\n }\n };\n }\n const applyFilterOnRow = filterOperator.getApplyFilterFn(newFilterItem, column);\n if (typeof applyFilterOnRow !== 'function') {\n return null;\n }\n return {\n v7: false,\n item: newFilterItem,\n fn: rowId => {\n const params = apiRef.current.getCellParams(rowId, newFilterItem.field);\n GLOBAL_API_REF.current = publicApiRef;\n if (ignoreDiacritics) {\n params.value = removeDiacritics(params.value);\n }\n const result = applyFilterOnRow(params);\n GLOBAL_API_REF.current = null;\n return result;\n }\n };\n};\nlet filterItemsApplierId = 1;\n\n/**\n * Generates a method to easily check if a row is matching the current filter model.\n * @param {GridFilterModel} filterModel The model with which we want to filter the rows.\n * @param {React.MutableRefObject} apiRef The API of the grid.\n * @returns {GridAggregatedFilterItemApplier | null} A method that checks if a row is matching the current filter model. If `null`, we consider that all the rows are matching the filters.\n */\nconst buildAggregatedFilterItemsApplier = (filterModel, apiRef, disableEval) => {\n const {\n items\n } = filterModel;\n const appliers = items.map(item => getFilterCallbackFromItem(item, apiRef)).filter(callback => !!callback);\n if (appliers.length === 0) {\n return null;\n }\n if (disableEval || !getHasEval()) {\n // This is the original logic, which is used if `eval()` is not supported (aka prevented by CSP).\n return (row, shouldApplyFilter) => {\n const resultPerItemId = {};\n for (let i = 0; i < appliers.length; i += 1) {\n const applier = appliers[i];\n if (!shouldApplyFilter || shouldApplyFilter(applier.item.field)) {\n resultPerItemId[applier.item.id] = applier.v7 ? applier.fn(row) : applier.fn(apiRef.current.getRowId(row));\n }\n }\n return resultPerItemId;\n };\n }\n\n // We generate a new function with `new Function()` to avoid expensive patterns for JS engines\n // such as a dynamic object assignment, e.g. `{ [dynamicKey]: value }`.\n const filterItemCore = new Function('getRowId', 'appliers', 'row', 'shouldApplyFilter', `\"use strict\";\n${appliers.map((applier, i) => `const shouldApply${i} = !shouldApplyFilter || shouldApplyFilter(${JSON.stringify(applier.item.field)});`).join('\\n')}\n\nconst result$$ = {\n${appliers.map((applier, i) => ` ${JSON.stringify(String(applier.item.id))}: !shouldApply${i}\n ? false\n : ${applier.v7 ? `appliers[${i}].fn(row)` : `appliers[${i}].fn(getRowId(row))`},`).join('\\n')}\n};\n\nreturn result$$;`.replaceAll('$$', String(filterItemsApplierId)));\n filterItemsApplierId += 1;\n\n // Assign to the arrow function a name to help debugging\n const filterItem = (row, shouldApplyItem) => filterItemCore(apiRef.current.getRowId, appliers, row, shouldApplyItem);\n return filterItem;\n};\n\n/**\n * Generates a method to easily check if a row is matching the current quick filter.\n * @param {any[]} filterModel The model with which we want to filter the rows.\n * @param {React.MutableRefObject} apiRef The API of the grid.\n * @returns {GridAggregatedFilterItemApplier | null} A method that checks if a row is matching the current filter model. If `null`, we consider that all the rows are matching the filters.\n */\nconst buildAggregatedQuickFilterApplier = (filterModel, apiRef) => {\n var _filterModel$quickFil, _filterModel$quickFil2, _filterModel$quickFil3;\n const quickFilterValues = (_filterModel$quickFil = (_filterModel$quickFil2 = filterModel.quickFilterValues) == null ? void 0 : _filterModel$quickFil2.filter(Boolean)) != null ? _filterModel$quickFil : [];\n if (quickFilterValues.length === 0) {\n return null;\n }\n const quickFilterExcludeHiddenColumns = (_filterModel$quickFil3 = filterModel.quickFilterExcludeHiddenColumns) != null ? _filterModel$quickFil3 : false;\n const columnFields = quickFilterExcludeHiddenColumns ? gridVisibleColumnFieldsSelector(apiRef) : gridColumnFieldsSelector(apiRef);\n const appliersPerField = [];\n const {\n ignoreDiacritics\n } = apiRef.current.rootProps;\n const publicApiRef = getPublicApiRef(apiRef);\n columnFields.forEach(field => {\n const column = apiRef.current.getColumn(field);\n const getApplyQuickFilterFn = column == null ? void 0 : column.getApplyQuickFilterFn;\n const getApplyQuickFilterFnV7 = column == null ? void 0 : column.getApplyQuickFilterFnV7;\n const hasUserFunctionLegacy = !isInternalFilter(getApplyQuickFilterFn);\n const hasUserFunctionV7 = !isInternalFilter(getApplyQuickFilterFnV7);\n if (getApplyQuickFilterFnV7 && !(hasUserFunctionLegacy && !hasUserFunctionV7)) {\n appliersPerField.push({\n column,\n appliers: quickFilterValues.map(quickFilterValue => {\n const value = ignoreDiacritics ? removeDiacritics(quickFilterValue) : quickFilterValue;\n return {\n v7: true,\n fn: getApplyQuickFilterFnV7(value, column, publicApiRef)\n };\n })\n });\n } else if (getApplyQuickFilterFn) {\n appliersPerField.push({\n column,\n appliers: quickFilterValues.map(quickFilterValue => {\n const value = ignoreDiacritics ? removeDiacritics(quickFilterValue) : quickFilterValue;\n return {\n v7: false,\n fn: getApplyQuickFilterFn(value, column, publicApiRef)\n };\n })\n });\n }\n });\n return function isRowMatchingQuickFilter(row, shouldApplyFilter) {\n const result = {};\n const usedCellParams = {};\n\n /* eslint-disable no-restricted-syntax, no-labels */\n outer: for (let v = 0; v < quickFilterValues.length; v += 1) {\n const filterValue = quickFilterValues[v];\n for (let i = 0; i < appliersPerField.length; i += 1) {\n const {\n column,\n appliers\n } = appliersPerField[i];\n const {\n field\n } = column;\n if (shouldApplyFilter && !shouldApplyFilter(field)) {\n continue;\n }\n const applier = appliers[v];\n let value = apiRef.current.getRowValue(row, column);\n if (applier.fn === null) {\n continue;\n }\n if (applier.v7) {\n if (ignoreDiacritics) {\n value = removeDiacritics(value);\n }\n const isMatching = applier.fn(value, row, column, publicApiRef);\n if (isMatching) {\n result[filterValue] = true;\n continue outer;\n }\n } else {\n var _usedCellParams$field;\n const cellParams = (_usedCellParams$field = usedCellParams[field]) != null ? _usedCellParams$field : apiRef.current.getCellParams(apiRef.current.getRowId(row), field);\n if (ignoreDiacritics) {\n cellParams.value = removeDiacritics(cellParams.value);\n }\n usedCellParams[field] = cellParams;\n const isMatching = applier.fn(cellParams);\n if (isMatching) {\n result[filterValue] = true;\n continue outer;\n }\n }\n }\n result[filterValue] = false;\n }\n /* eslint-enable no-restricted-syntax, no-labels */\n\n return result;\n };\n};\nexport const buildAggregatedFilterApplier = (filterModel, apiRef, disableEval) => {\n const isRowMatchingFilterItems = buildAggregatedFilterItemsApplier(filterModel, apiRef, disableEval);\n const isRowMatchingQuickFilter = buildAggregatedQuickFilterApplier(filterModel, apiRef);\n return function isRowMatchingFilters(row, shouldApplyFilter, result) {\n var _isRowMatchingFilterI, _isRowMatchingQuickFi;\n result.passingFilterItems = (_isRowMatchingFilterI = isRowMatchingFilterItems == null ? void 0 : isRowMatchingFilterItems(row, shouldApplyFilter)) != null ? _isRowMatchingFilterI : null;\n result.passingQuickFilterValues = (_isRowMatchingQuickFi = isRowMatchingQuickFilter == null ? void 0 : isRowMatchingQuickFilter(row, shouldApplyFilter)) != null ? _isRowMatchingQuickFi : null;\n };\n};\nconst isNotNull = result => result != null;\nconst filterModelItems = (cache, apiRef, items) => {\n if (!cache.cleanedFilterItems) {\n cache.cleanedFilterItems = items.filter(item => getFilterCallbackFromItem(item, apiRef) !== null);\n }\n return cache.cleanedFilterItems;\n};\nexport const passFilterLogic = (allFilterItemResults, allQuickFilterResults, filterModel, apiRef, cache) => {\n const cleanedFilterItems = filterModelItems(cache, apiRef, filterModel.items);\n const cleanedFilterItemResults = allFilterItemResults.filter(isNotNull);\n const cleanedQuickFilterResults = allQuickFilterResults.filter(isNotNull);\n\n // get result for filter items model\n if (cleanedFilterItemResults.length > 0) {\n var _filterModel$logicOpe;\n // Return true if the item pass with one of the rows\n const filterItemPredicate = item => {\n return cleanedFilterItemResults.some(filterItemResult => filterItemResult[item.id]);\n };\n const logicOperator = (_filterModel$logicOpe = filterModel.logicOperator) != null ? _filterModel$logicOpe : getDefaultGridFilterModel().logicOperator;\n if (logicOperator === GridLogicOperator.And) {\n const passesAllFilters = cleanedFilterItems.every(filterItemPredicate);\n if (!passesAllFilters) {\n return false;\n }\n } else {\n const passesSomeFilters = cleanedFilterItems.some(filterItemPredicate);\n if (!passesSomeFilters) {\n return false;\n }\n }\n }\n\n // get result for quick filter model\n if (cleanedQuickFilterResults.length > 0 && filterModel.quickFilterValues != null) {\n var _filterModel$quickFil4;\n // Return true if the item pass with one of the rows\n const quickFilterValuePredicate = value => {\n return cleanedQuickFilterResults.some(quickFilterValueResult => quickFilterValueResult[value]);\n };\n const quickFilterLogicOperator = (_filterModel$quickFil4 = filterModel.quickFilterLogicOperator) != null ? _filterModel$quickFil4 : getDefaultGridFilterModel().quickFilterLogicOperator;\n if (quickFilterLogicOperator === GridLogicOperator.And) {\n const passesAllQuickFilterValues = filterModel.quickFilterValues.every(quickFilterValuePredicate);\n if (!passesAllQuickFilterValues) {\n return false;\n }\n } else {\n const passesSomeQuickFilterValues = filterModel.quickFilterValues.some(quickFilterValuePredicate);\n if (!passesSomeQuickFilterValues) {\n return false;\n }\n }\n }\n return true;\n};","import { GridFilterInputValue } from '../components/panel/filterPanel/GridFilterInputValue';\nimport { escapeRegExp } from '../utils/utils';\nimport { GridFilterInputMultipleValue } from '../components/panel/filterPanel/GridFilterInputMultipleValue';\nimport { convertLegacyOperators, tagInternalFilter } from './utils';\nimport { removeDiacritics } from '../hooks/features/filter/gridFilterUtils';\nexport const getGridStringQuickFilterFn = tagInternalFilter(value => {\n if (!value) {\n return null;\n }\n const filterRegex = new RegExp(escapeRegExp(value), 'i');\n return (_, row, column, apiRef) => {\n let columnValue = apiRef.current.getRowFormattedValue(row, column);\n if (apiRef.current.ignoreDiacritics) {\n columnValue = removeDiacritics(columnValue);\n }\n return columnValue != null ? filterRegex.test(columnValue.toString()) : false;\n };\n});\nexport const getGridStringOperators = (disableTrim = false) => convertLegacyOperators([{\n value: 'contains',\n getApplyFilterFnV7: filterItem => {\n if (!filterItem.value) {\n return null;\n }\n const filterItemValue = disableTrim ? filterItem.value : filterItem.value.trim();\n const filterRegex = new RegExp(escapeRegExp(filterItemValue), 'i');\n return value => {\n return value != null ? filterRegex.test(String(value)) : false;\n };\n },\n InputComponent: GridFilterInputValue\n}, {\n value: 'equals',\n getApplyFilterFnV7: filterItem => {\n if (!filterItem.value) {\n return null;\n }\n const filterItemValue = disableTrim ? filterItem.value : filterItem.value.trim();\n const collator = new Intl.Collator(undefined, {\n sensitivity: 'base',\n usage: 'search'\n });\n return value => {\n return value != null ? collator.compare(filterItemValue, value.toString()) === 0 : false;\n };\n },\n InputComponent: GridFilterInputValue\n}, {\n value: 'startsWith',\n getApplyFilterFnV7: filterItem => {\n if (!filterItem.value) {\n return null;\n }\n const filterItemValue = disableTrim ? filterItem.value : filterItem.value.trim();\n const filterRegex = new RegExp(`^${escapeRegExp(filterItemValue)}.*$`, 'i');\n return value => {\n return value != null ? filterRegex.test(value.toString()) : false;\n };\n },\n InputComponent: GridFilterInputValue\n}, {\n value: 'endsWith',\n getApplyFilterFnV7: filterItem => {\n if (!filterItem.value) {\n return null;\n }\n const filterItemValue = disableTrim ? filterItem.value : filterItem.value.trim();\n const filterRegex = new RegExp(`.*${escapeRegExp(filterItemValue)}$`, 'i');\n return value => {\n return value != null ? filterRegex.test(value.toString()) : false;\n };\n },\n InputComponent: GridFilterInputValue\n}, {\n value: 'isEmpty',\n getApplyFilterFnV7: () => {\n return value => {\n return value === '' || value == null;\n };\n },\n requiresFilterValue: false\n}, {\n value: 'isNotEmpty',\n getApplyFilterFnV7: () => {\n return value => {\n return value !== '' && value != null;\n };\n },\n requiresFilterValue: false\n}, {\n value: 'isAnyOf',\n getApplyFilterFnV7: filterItem => {\n if (!Array.isArray(filterItem.value) || filterItem.value.length === 0) {\n return null;\n }\n const filterItemValue = disableTrim ? filterItem.value : filterItem.value.map(val => val.trim());\n const collator = new Intl.Collator(undefined, {\n sensitivity: 'base',\n usage: 'search'\n });\n return value => value != null ? filterItemValue.some(filterValue => {\n return collator.compare(filterValue, value.toString() || '') === 0;\n }) : false;\n },\n InputComponent: GridFilterInputMultipleValue\n}]);","import { renderEditInputCell } from '../components/cell/GridEditInputCell';\nimport { gridStringOrNumberComparator } from '../hooks/features/sorting/gridSortingUtils';\nimport { getGridStringOperators, getGridStringQuickFilterFn } from './gridStringOperators';\nimport { convertQuickFilterV7ToLegacy } from './utils';\n\n/**\n * TODO: Move pro and premium properties outside of this Community file\n */\nexport const GRID_STRING_COL_DEF = {\n width: 100,\n minWidth: 50,\n maxWidth: Infinity,\n hideable: true,\n sortable: true,\n resizable: true,\n filterable: true,\n groupable: true,\n pinnable: true,\n // @ts-ignore\n aggregable: true,\n editable: false,\n sortComparator: gridStringOrNumberComparator,\n type: 'string',\n align: 'left',\n filterOperators: getGridStringOperators(),\n renderEditCell: renderEditInputCell,\n getApplyQuickFilterFn: convertQuickFilterV7ToLegacy(getGridStringQuickFilterFn),\n getApplyQuickFilterFnV7: getGridStringQuickFilterFn\n};","import { GridFilterInputBoolean } from '../components/panel/filterPanel/GridFilterInputBoolean';\nimport { convertLegacyOperators } from './utils';\nexport const getGridBooleanOperators = () => convertLegacyOperators([{\n value: 'is',\n getApplyFilterFnV7: filterItem => {\n if (!filterItem.value) {\n return null;\n }\n const valueAsBoolean = filterItem.value === 'true';\n return value => {\n return Boolean(value) === valueAsBoolean;\n };\n },\n InputComponent: GridFilterInputBoolean\n}]);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { GRID_STRING_COL_DEF } from './gridStringColDef';\nimport { renderBooleanCell } from '../components/cell/GridBooleanCell';\nimport { renderEditBooleanCell } from '../components/cell/GridEditBooleanCell';\nimport { gridNumberComparator } from '../hooks/features/sorting/gridSortingUtils';\nimport { getGridBooleanOperators } from './gridBooleanOperators';\nfunction gridBooleanFormatter({\n value,\n api\n}) {\n return value ? api.getLocaleText('booleanCellTrueLabel') : api.getLocaleText('booleanCellFalseLabel');\n}\nconst stringToBoolean = value => {\n switch (value.toLowerCase().trim()) {\n case 'true':\n case 'yes':\n case '1':\n return true;\n case 'false':\n case 'no':\n case '0':\n case 'null':\n case 'undefined':\n return false;\n default:\n return undefined;\n }\n};\nexport const GRID_BOOLEAN_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {\n type: 'boolean',\n align: 'center',\n headerAlign: 'center',\n renderCell: renderBooleanCell,\n renderEditCell: renderEditBooleanCell,\n sortComparator: gridNumberComparator,\n valueFormatter: gridBooleanFormatter,\n filterOperators: getGridBooleanOperators(),\n getApplyQuickFilterFn: undefined,\n getApplyQuickFilterFnV7: undefined,\n // @ts-ignore\n aggregable: false,\n // @ts-ignore\n pastedValueParser: value => stringToBoolean(value)\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { GridCellCheckboxRenderer } from '../components/columnSelection/GridCellCheckboxRenderer';\nimport { GridHeaderCheckbox } from '../components/columnSelection/GridHeaderCheckbox';\nimport { selectedIdsLookupSelector } from '../hooks/features/rowSelection/gridRowSelectionSelector';\nimport { GRID_BOOLEAN_COL_DEF } from './gridBooleanColDef';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const GRID_CHECKBOX_SELECTION_FIELD = '__check__';\nexport const GRID_CHECKBOX_SELECTION_COL_DEF = _extends({}, GRID_BOOLEAN_COL_DEF, {\n field: GRID_CHECKBOX_SELECTION_FIELD,\n type: 'checkboxSelection',\n width: 50,\n resizable: false,\n sortable: false,\n filterable: false,\n // @ts-ignore\n aggregable: false,\n disableColumnMenu: true,\n disableReorder: true,\n disableExport: true,\n getApplyQuickFilterFn: undefined,\n getApplyQuickFilterFnV7: undefined,\n valueGetter: params => {\n const selectionLookup = selectedIdsLookupSelector(params.api.state, params.api.instanceId);\n return selectionLookup[params.id] !== undefined;\n },\n renderHeader: params => /*#__PURE__*/_jsx(GridHeaderCheckbox, _extends({}, params)),\n renderCell: params => /*#__PURE__*/_jsx(GridCellCheckboxRenderer, _extends({}, params))\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { GRID_STRING_COL_DEF } from './gridStringColDef';\nimport { renderActionsCell } from '../components/cell/GridActionsCell';\nexport const GRID_ACTIONS_COLUMN_TYPE = 'actions';\nexport const GRID_ACTIONS_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {\n sortable: false,\n filterable: false,\n // @ts-ignore\n aggregable: false,\n width: 100,\n align: 'center',\n headerAlign: 'center',\n headerName: '',\n disableColumnMenu: true,\n disableExport: true,\n renderCell: renderActionsCell,\n getApplyQuickFilterFn: undefined,\n getApplyQuickFilterFnV7: undefined\n});","// Can't import from pro package - hence duplication\nexport const GRID_DETAIL_PANEL_TOGGLE_FIELD = '__detail_panel_toggle__';","// TODO v6: rename to gridEditingStateSelector\nexport const gridEditRowsStateSelector = state => state.editRows;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"selected\", \"hovered\", \"rowId\", \"row\", \"index\", \"style\", \"position\", \"rowHeight\", \"className\", \"visibleColumns\", \"renderedColumns\", \"containerWidth\", \"firstColumnToRender\", \"lastColumnToRender\", \"isLastVisible\", \"focusedCellColumnIndexNotInRange\", \"isNotVisible\", \"focusedCell\", \"tabbableCell\", \"onClick\", \"onDoubleClick\", \"onMouseEnter\", \"onMouseLeave\", \"onMouseOut\", \"onMouseOver\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses, unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { fastMemo } from '../utils/fastMemo';\nimport { GridEditModes, GridRowModes, GridCellModes } from '../models/gridEditRowModel';\nimport { useGridApiContext } from '../hooks/utils/useGridApiContext';\nimport { getDataGridUtilityClass, gridClasses } from '../constants/gridClasses';\nimport { useGridRootProps } from '../hooks/utils/useGridRootProps';\nimport { gridColumnsTotalWidthSelector } from '../hooks/features/columns/gridColumnsSelector';\nimport { useGridSelector, objectShallowCompare } from '../hooks/utils/useGridSelector';\nimport { useGridVisibleRows } from '../hooks/utils/useGridVisibleRows';\nimport { findParentElementFromClassName, isEventTargetInPortal } from '../utils/domUtils';\nimport { GRID_CHECKBOX_SELECTION_COL_DEF } from '../colDef/gridCheckboxSelectionColDef';\nimport { GRID_ACTIONS_COLUMN_TYPE } from '../colDef/gridActionsColDef';\nimport { GRID_DETAIL_PANEL_TOGGLE_FIELD } from '../constants/gridDetailPanelToggleField';\nimport { gridSortModelSelector } from '../hooks/features/sorting/gridSortingSelector';\nimport { gridRowMaximumTreeDepthSelector } from '../hooks/features/rows/gridRowsSelector';\nimport { gridColumnGroupsHeaderMaxDepthSelector } from '../hooks/features/columnGrouping/gridColumnGroupsSelector';\nimport { randomNumberBetween } from '../utils/utils';\nimport { GridCellWrapper, GridCellV7 } from './cell/GridCell';\nimport { gridEditRowsStateSelector } from '../hooks/features/editing/gridEditingSelectors';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n editable,\n editing,\n selected,\n isLastVisible,\n rowHeight,\n classes\n } = ownerState;\n const slots = {\n root: ['row', selected && 'selected', editable && 'row--editable', editing && 'row--editing', isLastVisible && 'row--lastVisible', rowHeight === 'auto' && 'row--dynamicHeight']\n };\n return composeClasses(slots, getDataGridUtilityClass, classes);\n};\nfunction EmptyCell({\n width\n}) {\n if (!width) {\n return null;\n }\n const style = {\n width\n };\n return /*#__PURE__*/_jsx(\"div\", {\n className: `${gridClasses.cell} ${gridClasses.withBorderColor}`,\n style: style\n }); // TODO change to .MuiDataGrid-emptyCell or .MuiDataGrid-rowFiller\n}\nconst GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {\n const {\n selected,\n hovered,\n rowId,\n row,\n index,\n style: styleProp,\n position,\n rowHeight,\n className,\n visibleColumns,\n renderedColumns,\n containerWidth,\n firstColumnToRender,\n isLastVisible = false,\n focusedCellColumnIndexNotInRange,\n isNotVisible,\n focusedCell,\n onClick,\n onDoubleClick,\n onMouseEnter,\n onMouseLeave,\n onMouseOut,\n onMouseOver\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const apiRef = useGridApiContext();\n const ref = React.useRef(null);\n const rootProps = useGridRootProps();\n const currentPage = useGridVisibleRows(apiRef, rootProps);\n const columnsTotalWidth = useGridSelector(apiRef, gridColumnsTotalWidthSelector);\n const sortModel = useGridSelector(apiRef, gridSortModelSelector);\n const treeDepth = useGridSelector(apiRef, gridRowMaximumTreeDepthSelector);\n const headerGroupingMaxDepth = useGridSelector(apiRef, gridColumnGroupsHeaderMaxDepthSelector);\n const editRowsState = useGridSelector(apiRef, gridEditRowsStateSelector);\n const handleRef = useForkRef(ref, refProp);\n const ariaRowIndex = index + headerGroupingMaxDepth + 2; // 1 for the header row and 1 as it's 1-based\n\n const ownerState = {\n selected,\n hovered,\n isLastVisible,\n classes: rootProps.classes,\n editing: apiRef.current.getRowMode(rowId) === GridRowModes.Edit,\n editable: rootProps.editMode === GridEditModes.Row,\n rowHeight\n };\n const classes = useUtilityClasses(ownerState);\n React.useLayoutEffect(() => {\n if (rowHeight === 'auto' && ref.current && typeof ResizeObserver === 'undefined') {\n // Fallback for IE\n apiRef.current.unstable_storeRowHeightMeasurement(rowId, ref.current.clientHeight, position);\n }\n }, [apiRef, rowHeight, rowId, position]);\n React.useLayoutEffect(() => {\n if (currentPage.range) {\n // The index prop is relative to the rows from all pages. As example, the index prop of the\n // first row is 5 if `paginationModel.pageSize=5` and `paginationModel.page=1`. However, the index used by the virtualization\n // doesn't care about pagination and considers the rows from the current page only, so the\n // first row always has index=0. We need to subtract the index of the first row to make it\n // compatible with the index used by the virtualization.\n const rowIndex = apiRef.current.getRowIndexRelativeToVisibleRows(rowId);\n // pinned rows are not part of the visible rows\n if (rowIndex != null) {\n apiRef.current.unstable_setLastMeasuredRowIndex(rowIndex);\n }\n }\n const rootElement = ref.current;\n const hasFixedHeight = rowHeight !== 'auto';\n if (!rootElement || hasFixedHeight || typeof ResizeObserver === 'undefined') {\n return undefined;\n }\n const resizeObserver = new ResizeObserver(entries => {\n const [entry] = entries;\n const height = entry.borderBoxSize && entry.borderBoxSize.length > 0 ? entry.borderBoxSize[0].blockSize : entry.contentRect.height;\n apiRef.current.unstable_storeRowHeightMeasurement(rowId, height, position);\n });\n resizeObserver.observe(rootElement);\n return () => resizeObserver.disconnect();\n }, [apiRef, currentPage.range, index, rowHeight, rowId, position]);\n const publish = React.useCallback((eventName, propHandler) => event => {\n // Ignore portal\n if (isEventTargetInPortal(event)) {\n return;\n }\n\n // The row might have been deleted\n if (!apiRef.current.getRow(rowId)) {\n return;\n }\n apiRef.current.publishEvent(eventName, apiRef.current.getRowParams(rowId), event);\n if (propHandler) {\n propHandler(event);\n }\n }, [apiRef, rowId]);\n const publishClick = React.useCallback(event => {\n const cell = findParentElementFromClassName(event.target, gridClasses.cell);\n const field = cell == null ? void 0 : cell.getAttribute('data-field');\n\n // Check if the field is available because the cell that fills the empty\n // space of the row has no field.\n if (field) {\n // User clicked in the checkbox added by checkboxSelection\n if (field === GRID_CHECKBOX_SELECTION_COL_DEF.field) {\n return;\n }\n\n // User opened a detail panel\n if (field === GRID_DETAIL_PANEL_TOGGLE_FIELD) {\n return;\n }\n\n // User reorders a row\n if (field === '__reorder__') {\n return;\n }\n\n // User is editing a cell\n if (apiRef.current.getCellMode(rowId, field) === GridCellModes.Edit) {\n return;\n }\n\n // User clicked a button from the \"actions\" column type\n const column = apiRef.current.getColumn(field);\n if ((column == null ? void 0 : column.type) === GRID_ACTIONS_COLUMN_TYPE) {\n return;\n }\n }\n publish('rowClick', onClick)(event);\n }, [apiRef, onClick, publish, rowId]);\n const {\n slots,\n slotProps,\n disableColumnReorder\n } = rootProps;\n const CellComponent = slots.cell === GridCellV7 ? GridCellV7 : GridCellWrapper;\n const rowReordering = rootProps.rowReordering;\n const getCell = (column, cellProps) => {\n var _editRowsState$rowId$, _editRowsState$rowId;\n const disableDragEvents = disableColumnReorder && column.disableReorder || !rowReordering && !!sortModel.length && treeDepth > 1 && Object.keys(editRowsState).length > 0;\n const editCellState = (_editRowsState$rowId$ = (_editRowsState$rowId = editRowsState[rowId]) == null ? void 0 : _editRowsState$rowId[column.field]) != null ? _editRowsState$rowId$ : null;\n let cellIsNotVisible = false;\n if (focusedCellColumnIndexNotInRange !== undefined && visibleColumns[focusedCellColumnIndexNotInRange].field === column.field) {\n cellIsNotVisible = true;\n }\n return /*#__PURE__*/_jsx(CellComponent, _extends({\n column: column,\n width: cellProps.width,\n rowId: rowId,\n height: rowHeight,\n showRightBorder: cellProps.showRightBorder,\n align: column.align || 'left',\n colIndex: cellProps.indexRelativeToAllColumns,\n colSpan: cellProps.colSpan,\n disableDragEvents: disableDragEvents,\n editCellState: editCellState,\n isNotVisible: cellIsNotVisible\n }, slotProps == null ? void 0 : slotProps.cell), column.field);\n };\n const sizes = useGridSelector(apiRef, () => _extends({}, apiRef.current.unstable_getRowInternalSizes(rowId)), objectShallowCompare);\n let minHeight = rowHeight;\n if (minHeight === 'auto' && sizes) {\n let numberOfBaseSizes = 0;\n const maximumSize = Object.entries(sizes).reduce((acc, [key, size]) => {\n const isBaseHeight = /^base[A-Z]/.test(key);\n if (!isBaseHeight) {\n return acc;\n }\n numberOfBaseSizes += 1;\n if (size > acc) {\n return size;\n }\n return acc;\n }, 0);\n if (maximumSize > 0 && numberOfBaseSizes > 1) {\n minHeight = maximumSize;\n }\n }\n const style = React.useMemo(() => {\n if (isNotVisible) {\n return {\n opacity: 0,\n width: 0,\n height: 0\n };\n }\n const rowStyle = _extends({}, styleProp, {\n maxHeight: rowHeight === 'auto' ? 'none' : rowHeight,\n // max-height doesn't support \"auto\"\n minHeight\n });\n if (sizes != null && sizes.spacingTop) {\n const property = rootProps.rowSpacingType === 'border' ? 'borderTopWidth' : 'marginTop';\n rowStyle[property] = sizes.spacingTop;\n }\n if (sizes != null && sizes.spacingBottom) {\n const property = rootProps.rowSpacingType === 'border' ? 'borderBottomWidth' : 'marginBottom';\n let propertyValue = rowStyle[property];\n // avoid overriding existing value\n if (typeof propertyValue !== 'number') {\n propertyValue = parseInt(propertyValue || '0', 10);\n }\n propertyValue += sizes.spacingBottom;\n rowStyle[property] = propertyValue;\n }\n return rowStyle;\n }, [isNotVisible, rowHeight, styleProp, minHeight, sizes, rootProps.rowSpacingType]);\n const rowClassNames = apiRef.current.unstable_applyPipeProcessors('rowClassName', [], rowId);\n if (typeof rootProps.getRowClassName === 'function') {\n var _currentPage$range;\n const indexRelativeToCurrentPage = index - (((_currentPage$range = currentPage.range) == null ? void 0 : _currentPage$range.firstRowIndex) || 0);\n const rowParams = _extends({}, apiRef.current.getRowParams(rowId), {\n isFirstVisible: indexRelativeToCurrentPage === 0,\n isLastVisible: indexRelativeToCurrentPage === currentPage.rows.length - 1,\n indexRelativeToCurrentPage\n });\n rowClassNames.push(rootProps.getRowClassName(rowParams));\n }\n const randomNumber = randomNumberBetween(10000, 20, 80);\n const rowNode = apiRef.current.getRowNode(rowId);\n if (!rowNode) {\n return null;\n }\n const rowType = rowNode.type;\n const cells = [];\n for (let i = 0; i < renderedColumns.length; i += 1) {\n const column = renderedColumns[i];\n let indexRelativeToAllColumns = firstColumnToRender + i;\n if (focusedCellColumnIndexNotInRange !== undefined && focusedCell) {\n if (visibleColumns[focusedCellColumnIndexNotInRange].field === column.field) {\n indexRelativeToAllColumns = focusedCellColumnIndexNotInRange;\n } else {\n indexRelativeToAllColumns -= 1;\n }\n }\n const cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, indexRelativeToAllColumns);\n if (cellColSpanInfo && !cellColSpanInfo.spannedByColSpan) {\n if (rowType !== 'skeletonRow') {\n const {\n colSpan,\n width\n } = cellColSpanInfo.cellProps;\n const cellProps = {\n width,\n colSpan,\n showRightBorder: rootProps.showCellVerticalBorder,\n indexRelativeToAllColumns\n };\n cells.push(getCell(column, cellProps));\n } else {\n const {\n width\n } = cellColSpanInfo.cellProps;\n const contentWidth = Math.round(randomNumber());\n cells.push( /*#__PURE__*/_jsx(slots.skeletonCell, {\n width: width,\n contentWidth: contentWidth,\n field: column.field,\n align: column.align\n }, column.field));\n }\n }\n }\n const emptyCellWidth = containerWidth - columnsTotalWidth;\n const eventHandlers = row ? {\n onClick: publishClick,\n onDoubleClick: publish('rowDoubleClick', onDoubleClick),\n onMouseEnter: publish('rowMouseEnter', onMouseEnter),\n onMouseLeave: publish('rowMouseLeave', onMouseLeave),\n onMouseOut: publish('rowMouseOut', onMouseOut),\n onMouseOver: publish('rowMouseOver', onMouseOver)\n } : null;\n return /*#__PURE__*/_jsxs(\"div\", _extends({\n ref: handleRef,\n \"data-id\": rowId,\n \"data-rowindex\": index,\n role: \"row\",\n className: clsx(...rowClassNames, classes.root, className, hovered && 'Mui-hovered'),\n \"aria-rowindex\": ariaRowIndex,\n \"aria-selected\": selected,\n style: style\n }, eventHandlers, other, {\n children: [cells, emptyCellWidth > 0 && /*#__PURE__*/_jsx(EmptyCell, {\n width: emptyCellWidth\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? GridRow.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n containerWidth: PropTypes.number.isRequired,\n firstColumnToRender: PropTypes.number.isRequired,\n /**\n * Determines which cell has focus.\n * If `null`, no cell in this row has focus.\n */\n focusedCell: PropTypes.string,\n focusedCellColumnIndexNotInRange: PropTypes.number,\n /**\n * Index of the row in the whole sorted and filtered dataset.\n * If some rows above have expanded children, this index also take those children into account.\n */\n index: PropTypes.number.isRequired,\n isLastVisible: PropTypes.bool,\n isNotVisible: PropTypes.bool,\n lastColumnToRender: PropTypes.number.isRequired,\n onClick: PropTypes.func,\n onDoubleClick: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n position: PropTypes.oneOf(['center', 'left', 'right']).isRequired,\n renderedColumns: PropTypes.arrayOf(PropTypes.object).isRequired,\n row: PropTypes.object,\n rowHeight: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]).isRequired,\n rowId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n selected: PropTypes.bool.isRequired,\n /**\n * Determines which cell should be tabbable by having tabIndex=0.\n * If `null`, no cell in this row is in the tab sequence.\n */\n tabbableCell: PropTypes.string,\n visibleColumns: PropTypes.arrayOf(PropTypes.object).isRequired\n} : void 0;\nconst MemoizedGridRow = fastMemo(GridRow);\nexport { MemoizedGridRow as GridRow };","import * as React from 'react';\nimport { GridApiContext } from '../components/GridApiContext';\nimport { GridPrivateApiContext } from '../hooks/utils/useGridPrivateApiContext';\nimport { GridRootPropsContext } from './GridRootPropsContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function GridContextProvider({\n privateApiRef,\n props,\n children\n}) {\n const apiRef = React.useRef(privateApiRef.current.getPublicApi());\n return /*#__PURE__*/_jsx(GridRootPropsContext.Provider, {\n value: props,\n children: /*#__PURE__*/_jsx(GridPrivateApiContext.Provider, {\n value: privateApiRef,\n children: /*#__PURE__*/_jsx(GridApiContext.Provider, {\n value: apiRef,\n children: children\n })\n })\n });\n}","import * as React from 'react';\nimport { localStorageAvailable } from '../../utils/utils';\nimport { useGridApiMethod } from '../utils';\nconst forceDebug = localStorageAvailable() && window.localStorage.getItem('DEBUG') != null;\nconst noop = () => {};\nconst noopLogger = {\n debug: noop,\n info: noop,\n warn: noop,\n error: noop\n};\nconst LOG_LEVELS = ['debug', 'info', 'warn', 'error'];\nfunction getAppender(name, logLevel, appender = console) {\n const minLogLevelIdx = LOG_LEVELS.indexOf(logLevel);\n if (minLogLevelIdx === -1) {\n throw new Error(`MUI: Log level ${logLevel} not recognized.`);\n }\n const logger = LOG_LEVELS.reduce((loggerObj, method, idx) => {\n if (idx >= minLogLevelIdx) {\n loggerObj[method] = (...args) => {\n const [message, ...other] = args;\n appender[method](`MUI: ${name} - ${message}`, ...other);\n };\n } else {\n loggerObj[method] = noop;\n }\n return loggerObj;\n }, {});\n return logger;\n}\nexport const useGridLoggerFactory = (apiRef, props) => {\n const getLogger = React.useCallback(name => {\n if (forceDebug) {\n return getAppender(name, 'debug', props.logger);\n }\n if (!props.logLevel) {\n return noopLogger;\n }\n return getAppender(name, props.logLevel.toString(), props.logger);\n }, [props.logLevel, props.logger]);\n useGridApiMethod(apiRef, {\n getLogger\n }, 'private');\n};","export class Store {\n static create(value) {\n return new Store(value);\n }\n constructor(_value) {\n this.value = void 0;\n this.listeners = void 0;\n this.subscribe = fn => {\n this.listeners.add(fn);\n return () => {\n this.listeners.delete(fn);\n };\n };\n this.getSnapshot = () => {\n return this.value;\n };\n this.update = value => {\n this.value = value;\n this.listeners.forEach(l => l(value));\n };\n this.value = _value;\n this.listeners = new Set();\n }\n}","// Used https://gist.github.com/mudge/5830382 as a starting point.\n// See https://github.com/browserify/events/blob/master/events.js for\n// the Node.js (https://nodejs.org/api/events.html) polyfill used by webpack.\nexport class EventManager {\n constructor() {\n this.maxListeners = 20;\n this.warnOnce = false;\n this.events = {};\n }\n on(eventName, listener, options = {}) {\n let collection = this.events[eventName];\n if (!collection) {\n collection = {\n highPriority: new Map(),\n regular: new Map()\n };\n this.events[eventName] = collection;\n }\n if (options.isFirst) {\n collection.highPriority.set(listener, true);\n } else {\n collection.regular.set(listener, true);\n }\n if (process.env.NODE_ENV !== 'production') {\n const collectionSize = collection.highPriority.size + collection.regular.size;\n if (collectionSize > this.maxListeners && !this.warnOnce) {\n this.warnOnce = true;\n console.warn([`Possible EventEmitter memory leak detected. ${collectionSize} ${eventName} listeners added.`].join('\\n'));\n }\n }\n }\n removeListener(eventName, listener) {\n if (this.events[eventName]) {\n this.events[eventName].regular.delete(listener);\n this.events[eventName].highPriority.delete(listener);\n }\n }\n removeAllListeners() {\n this.events = {};\n }\n emit(eventName, ...args) {\n const collection = this.events[eventName];\n if (!collection) {\n return;\n }\n const highPriorityListeners = Array.from(collection.highPriority.keys());\n const regularListeners = Array.from(collection.regular.keys());\n for (let i = highPriorityListeners.length - 1; i >= 0; i -= 1) {\n const listener = highPriorityListeners[i];\n if (collection.highPriority.has(listener)) {\n listener.apply(this, args);\n }\n }\n for (let i = 0; i < regularListeners.length; i += 1) {\n const listener = regularListeners[i];\n if (collection.regular.has(listener)) {\n listener.apply(this, args);\n }\n }\n }\n once(eventName, listener) {\n // eslint-disable-next-line consistent-this\n const that = this;\n this.on(eventName, function oneTimeListener(...args) {\n that.removeListener(eventName, oneTimeListener);\n listener.apply(that, args);\n });\n }\n}","import * as React from 'react';\nimport { Store } from '../../utils/Store';\nimport { useGridApiMethod } from '../utils/useGridApiMethod';\nimport { GridSignature } from '../utils/useGridApiEventHandler';\nimport { EventManager } from '../../utils/EventManager';\nconst SYMBOL_API_PRIVATE = Symbol('mui.api_private');\nconst isSyntheticEvent = event => {\n return event.isPropagationStopped !== undefined;\n};\nexport function unwrapPrivateAPI(publicApi) {\n return publicApi[SYMBOL_API_PRIVATE];\n}\nlet globalId = 0;\nfunction createPrivateAPI(publicApiRef) {\n var _publicApiRef$current;\n const existingPrivateApi = (_publicApiRef$current = publicApiRef.current) == null ? void 0 : _publicApiRef$current[SYMBOL_API_PRIVATE];\n if (existingPrivateApi) {\n return existingPrivateApi;\n }\n const state = {};\n const privateApi = {\n state,\n store: Store.create(state),\n instanceId: {\n id: globalId\n }\n };\n globalId += 1;\n privateApi.getPublicApi = () => publicApiRef.current;\n privateApi.register = (visibility, methods) => {\n Object.keys(methods).forEach(methodName => {\n const method = methods[methodName];\n const currentPrivateMethod = privateApi[methodName];\n if ((currentPrivateMethod == null ? void 0 : currentPrivateMethod.spying) === true) {\n currentPrivateMethod.target = method;\n } else {\n privateApi[methodName] = method;\n }\n if (visibility === 'public') {\n const publicApi = publicApiRef.current;\n const currentPublicMethod = publicApi[methodName];\n if ((currentPublicMethod == null ? void 0 : currentPublicMethod.spying) === true) {\n currentPublicMethod.target = method;\n } else {\n publicApi[methodName] = method;\n }\n }\n });\n };\n privateApi.register('private', {\n caches: {},\n eventManager: new EventManager()\n });\n return privateApi;\n}\nfunction createPublicAPI(privateApiRef) {\n const publicApi = {\n get state() {\n return privateApiRef.current.state;\n },\n get store() {\n return privateApiRef.current.store;\n },\n get instanceId() {\n return privateApiRef.current.instanceId;\n },\n [SYMBOL_API_PRIVATE]: privateApiRef.current\n };\n return publicApi;\n}\nexport function useGridApiInitialization(inputApiRef, props) {\n const publicApiRef = React.useRef();\n const privateApiRef = React.useRef();\n if (!privateApiRef.current) {\n privateApiRef.current = createPrivateAPI(publicApiRef);\n }\n if (!publicApiRef.current) {\n publicApiRef.current = createPublicAPI(privateApiRef);\n }\n const publishEvent = React.useCallback((...args) => {\n const [name, params, event = {}] = args;\n event.defaultMuiPrevented = false;\n if (isSyntheticEvent(event) && event.isPropagationStopped()) {\n return;\n }\n const details = props.signature === GridSignature.DataGridPro ? {\n api: privateApiRef.current.getPublicApi()\n } : {};\n privateApiRef.current.eventManager.emit(name, params, event, details);\n }, [privateApiRef, props.signature]);\n const subscribeEvent = React.useCallback((event, handler, options) => {\n privateApiRef.current.eventManager.on(event, handler, options);\n const api = privateApiRef.current;\n return () => {\n api.eventManager.removeListener(event, handler);\n };\n }, [privateApiRef]);\n useGridApiMethod(privateApiRef, {\n subscribeEvent,\n publishEvent\n }, 'public');\n React.useImperativeHandle(inputApiRef, () => publicApiRef.current, [publicApiRef]);\n React.useEffect(() => {\n const api = privateApiRef.current;\n return () => {\n api.publishEvent('unmount');\n };\n }, [privateApiRef]);\n return privateApiRef;\n}","import * as React from 'react';\nexport const useGridLocaleText = (apiRef, props) => {\n const getLocaleText = React.useCallback(key => {\n if (props.localeText[key] == null) {\n throw new Error(`Missing translation for key ${key}.`);\n }\n return props.localeText[key];\n }, [props.localeText]);\n apiRef.current.register('public', {\n getLocaleText\n });\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _toPropertyKey from \"@babel/runtime/helpers/esm/toPropertyKey\";\nimport * as React from 'react';\nimport { useGridApiMethod } from '../../utils/useGridApiMethod';\n/**\n * Implement the Pipeline Pattern\n *\n * More information and detailed example in (TODO add link to technical doc when ready)\n *\n * Some plugins contains custom logic to enrich data provided by other plugins or components.\n * For instance, the row grouping plugin needs to add / remove the grouping columns when the grid columns are updated.\n *\n * =====================================================================================================================\n *\n * The plugin containing the custom logic must use:\n *\n * - `useGridRegisterPipeProcessor` to register their processor.\n *\n * - `apiRef.current.requestPipeProcessorsApplication` to imperatively re-apply a group.\n * This method should be used in last resort.\n * Most of the time, the application should be triggered by an update on the deps of the processor.\n *\n * =====================================================================================================================\n *\n * The plugin or component that needs to enrich its data must use:\n *\n * - `apiRef.current.unstable_applyPipeProcessors` to run in chain all the processors of a given group.\n *\n * - `useGridRegisterPipeApplier` to re-apply the whole pipe when requested.\n * The applier will be called when:\n * * a processor is registered.\n * * `apiRef.current.requestPipeProcessorsApplication` is called for the given group.\n */\nexport const useGridPipeProcessing = apiRef => {\n const processorsCache = React.useRef({});\n const isRunning = React.useRef(false);\n const runAppliers = React.useCallback(groupCache => {\n if (isRunning.current || !groupCache) {\n return;\n }\n isRunning.current = true;\n Object.values(groupCache.appliers).forEach(callback => {\n callback();\n });\n isRunning.current = false;\n }, []);\n const registerPipeProcessor = React.useCallback((group, id, processor) => {\n if (!processorsCache.current[group]) {\n processorsCache.current[group] = {\n processors: new Map(),\n appliers: {}\n };\n }\n const groupCache = processorsCache.current[group];\n const oldProcessor = groupCache.processors.get(id);\n if (oldProcessor !== processor) {\n groupCache.processors.set(id, processor);\n runAppliers(groupCache);\n }\n return () => {\n processorsCache.current[group].processors.set(id, null);\n };\n }, [runAppliers]);\n const registerPipeApplier = React.useCallback((group, id, applier) => {\n if (!processorsCache.current[group]) {\n processorsCache.current[group] = {\n processors: new Map(),\n appliers: {}\n };\n }\n processorsCache.current[group].appliers[id] = applier;\n return () => {\n const _appliers = processorsCache.current[group].appliers,\n otherAppliers = _objectWithoutPropertiesLoose(_appliers, [id].map(_toPropertyKey));\n processorsCache.current[group].appliers = otherAppliers;\n };\n }, []);\n const requestPipeProcessorsApplication = React.useCallback(group => {\n const groupCache = processorsCache.current[group];\n runAppliers(groupCache);\n }, [runAppliers]);\n const applyPipeProcessors = React.useCallback((...args) => {\n const [group, value, context] = args;\n if (!processorsCache.current[group]) {\n return value;\n }\n const preProcessors = Array.from(processorsCache.current[group].processors.values());\n return preProcessors.reduce((acc, preProcessor) => {\n if (!preProcessor) {\n return acc;\n }\n return preProcessor(acc, context);\n }, value);\n }, []);\n const preProcessingPrivateApi = {\n registerPipeProcessor,\n registerPipeApplier,\n requestPipeProcessorsApplication\n };\n const preProcessingPublicApi = {\n unstable_applyPipeProcessors: applyPipeProcessors\n };\n useGridApiMethod(apiRef, preProcessingPrivateApi, 'private');\n useGridApiMethod(apiRef, preProcessingPublicApi, 'public');\n};","import * as React from 'react';\nimport { useFirstRender } from '../../utils/useFirstRender';\nexport const useGridRegisterPipeProcessor = (apiRef, group, callback) => {\n const cleanup = React.useRef();\n const id = React.useRef(`mui-${Math.round(Math.random() * 1e9)}`);\n const registerPreProcessor = React.useCallback(() => {\n cleanup.current = apiRef.current.registerPipeProcessor(group, id.current, callback);\n }, [apiRef, callback, group]);\n useFirstRender(() => {\n registerPreProcessor();\n });\n const isFirstRender = React.useRef(true);\n React.useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n } else {\n registerPreProcessor();\n }\n return () => {\n if (cleanup.current) {\n cleanup.current();\n cleanup.current = null;\n }\n };\n }, [registerPreProcessor]);\n};","import * as React from 'react';\nimport { useFirstRender } from '../../utils/useFirstRender';\nexport const useGridRegisterPipeApplier = (apiRef, group, callback) => {\n const cleanup = React.useRef();\n const id = React.useRef(`mui-${Math.round(Math.random() * 1e9)}`);\n const registerPreProcessor = React.useCallback(() => {\n cleanup.current = apiRef.current.registerPipeApplier(group, id.current, callback);\n }, [apiRef, callback, group]);\n useFirstRender(() => {\n registerPreProcessor();\n });\n const isFirstRender = React.useRef(true);\n React.useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n } else {\n registerPreProcessor();\n }\n return () => {\n if (cleanup.current) {\n cleanup.current();\n cleanup.current = null;\n }\n };\n }, [registerPreProcessor]);\n};","import * as React from 'react';\nimport { useFirstRender } from '../../utils/useFirstRender';\nexport const useGridRegisterStrategyProcessor = (apiRef, strategyName, group, processor) => {\n const registerPreProcessor = React.useCallback(() => {\n apiRef.current.registerStrategyProcessor(strategyName, group, processor);\n }, [apiRef, processor, group, strategyName]);\n useFirstRender(() => {\n registerPreProcessor();\n });\n const isFirstRender = React.useRef(true);\n React.useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n } else {\n registerPreProcessor();\n }\n }, [registerPreProcessor]);\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _toPropertyKey from \"@babel/runtime/helpers/esm/toPropertyKey\";\nimport * as React from 'react';\nimport { useGridApiMethod } from '../../utils/useGridApiMethod';\nexport const GRID_DEFAULT_STRATEGY = 'none';\nexport const GRID_STRATEGIES_PROCESSORS = {\n rowTreeCreation: 'rowTree',\n filtering: 'rowTree',\n sorting: 'rowTree',\n visibleRowsLookupCreation: 'rowTree'\n};\n/**\n * Implements a variant of the Strategy Pattern (see https://en.wikipedia.org/wiki/Strategy_pattern)\n *\n * More information and detailed example in (TODO add link to technical doc when ready)\n *\n * Some plugins contains custom logic that must only be applied if the right strategy is active.\n * For instance, the row grouping plugin has a custom filtering algorithm.\n * This algorithm must be applied by the filtering plugin if the row grouping is the current way of grouping rows,\n * but not if the tree data is the current way of grouping rows.\n *\n * =====================================================================================================================\n *\n * The plugin containing the custom logic must use:\n *\n * - `useGridRegisterStrategyProcessor` to register their processor.\n * When the processor of the active strategy changes, it will fire `\"activeStrategyProcessorChange\"` to re-apply the processor.\n *\n * - `apiRef.current.setStrategyAvailability` to tell if their strategy can be used.\n *\n * =====================================================================================================================\n *\n * The plugin or component that needs to apply the custom logic of the current strategy must use:\n *\n * - `apiRef.current.applyStrategyProcessor` to run the processor of the active strategy for a given processor name.\n *\n * - the \"strategyAvailabilityChange\" event to update something when the active strategy changes.\n * Warning: Be careful not to apply the processor several times.\n * For instance \"rowsSet\" is fired by `useGridRows` whenever the active strategy changes.\n * So listening to both would most likely run your logic twice.\n *\n * - The \"activeStrategyProcessorChange\" event to update something when the processor of the active strategy changes.\n *\n * =====================================================================================================================\n *\n * Each processor name is part of a strategy group which can only have one active strategy at the time.\n * For now, there is only one strategy group named `rowTree` which customize\n * - row tree creation algorithm.\n * - sorting algorithm.\n * - filtering algorithm.\n */\nexport const useGridStrategyProcessing = apiRef => {\n const availableStrategies = React.useRef(new Map());\n const strategiesCache = React.useRef({});\n const registerStrategyProcessor = React.useCallback((strategyName, processorName, processor) => {\n const cleanup = () => {\n const _ref = strategiesCache.current[processorName],\n otherProcessors = _objectWithoutPropertiesLoose(_ref, [strategyName].map(_toPropertyKey));\n strategiesCache.current[processorName] = otherProcessors;\n };\n if (!strategiesCache.current[processorName]) {\n strategiesCache.current[processorName] = {};\n }\n const groupPreProcessors = strategiesCache.current[processorName];\n const previousProcessor = groupPreProcessors[strategyName];\n groupPreProcessors[strategyName] = processor;\n if (!previousProcessor || previousProcessor === processor) {\n return cleanup;\n }\n if (strategyName === apiRef.current.getActiveStrategy(GRID_STRATEGIES_PROCESSORS[processorName])) {\n apiRef.current.publishEvent('activeStrategyProcessorChange', processorName);\n }\n return cleanup;\n }, [apiRef]);\n const applyStrategyProcessor = React.useCallback((processorName, params) => {\n const activeStrategy = apiRef.current.getActiveStrategy(GRID_STRATEGIES_PROCESSORS[processorName]);\n if (activeStrategy == null) {\n throw new Error(\"Can't apply a strategy processor before defining an active strategy\");\n }\n const groupCache = strategiesCache.current[processorName];\n if (!groupCache || !groupCache[activeStrategy]) {\n throw new Error(`No processor found for processor \"${processorName}\" on strategy \"${activeStrategy}\"`);\n }\n const processor = groupCache[activeStrategy];\n return processor(params);\n }, [apiRef]);\n const getActiveStrategy = React.useCallback(strategyGroup => {\n var _availableStrategyEnt;\n const strategyEntries = Array.from(availableStrategies.current.entries());\n const availableStrategyEntry = strategyEntries.find(([, strategy]) => {\n if (strategy.group !== strategyGroup) {\n return false;\n }\n return strategy.isAvailable();\n });\n return (_availableStrategyEnt = availableStrategyEntry == null ? void 0 : availableStrategyEntry[0]) != null ? _availableStrategyEnt : GRID_DEFAULT_STRATEGY;\n }, []);\n const setStrategyAvailability = React.useCallback((strategyGroup, strategyName, isAvailable) => {\n availableStrategies.current.set(strategyName, {\n group: strategyGroup,\n isAvailable\n });\n apiRef.current.publishEvent('strategyAvailabilityChange');\n }, [apiRef]);\n const strategyProcessingApi = {\n registerStrategyProcessor,\n applyStrategyProcessor,\n getActiveStrategy,\n setStrategyAvailability\n };\n useGridApiMethod(apiRef, strategyProcessingApi, 'private');\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { GridSignature } from '../utils/useGridApiEventHandler';\nimport { useGridApiMethod } from '../utils';\nimport { isFunction } from '../../utils/utils';\nexport const useGridStateInitialization = (apiRef, props) => {\n const controlStateMapRef = React.useRef({});\n const [, rawForceUpdate] = React.useState();\n const registerControlState = React.useCallback(controlStateItem => {\n controlStateMapRef.current[controlStateItem.stateId] = controlStateItem;\n }, []);\n const setState = React.useCallback((state, reason) => {\n let newState;\n if (isFunction(state)) {\n newState = state(apiRef.current.state);\n } else {\n newState = state;\n }\n if (apiRef.current.state === newState) {\n return false;\n }\n let ignoreSetState = false;\n\n // Apply the control state constraints\n const updatedControlStateIds = [];\n Object.keys(controlStateMapRef.current).forEach(stateId => {\n const controlState = controlStateMapRef.current[stateId];\n const oldSubState = controlState.stateSelector(apiRef.current.state, apiRef.current.instanceId);\n const newSubState = controlState.stateSelector(newState, apiRef.current.instanceId);\n if (newSubState === oldSubState) {\n return;\n }\n updatedControlStateIds.push({\n stateId: controlState.stateId,\n hasPropChanged: newSubState !== controlState.propModel\n });\n\n // The state is controlled, the prop should always win\n if (controlState.propModel !== undefined && newSubState !== controlState.propModel) {\n ignoreSetState = true;\n }\n });\n if (updatedControlStateIds.length > 1) {\n // Each hook modify its own state, and it should not leak\n // Events are here to forward to other hooks and apply changes.\n // You are trying to update several states in a no isolated way.\n throw new Error(`You're not allowed to update several sub-state in one transaction. You already updated ${updatedControlStateIds[0].stateId}, therefore, you're not allowed to update ${updatedControlStateIds.map(el => el.stateId).join(', ')} in the same transaction.`);\n }\n if (!ignoreSetState) {\n // We always assign it as we mutate rows for perf reason.\n apiRef.current.state = newState;\n if (apiRef.current.publishEvent) {\n apiRef.current.publishEvent('stateChange', newState);\n }\n apiRef.current.store.update(newState);\n }\n if (updatedControlStateIds.length === 1) {\n const {\n stateId,\n hasPropChanged\n } = updatedControlStateIds[0];\n const controlState = controlStateMapRef.current[stateId];\n const model = controlState.stateSelector(newState, apiRef.current.instanceId);\n if (controlState.propOnChange && hasPropChanged) {\n const details = props.signature === GridSignature.DataGridPro ? {\n api: apiRef.current,\n reason\n } : {\n reason\n };\n controlState.propOnChange(model, details);\n }\n if (!ignoreSetState) {\n apiRef.current.publishEvent(controlState.changeEvent, model, {\n reason\n });\n }\n }\n return !ignoreSetState;\n }, [apiRef, props.signature]);\n const updateControlState = React.useCallback((key, state, reason) => {\n return apiRef.current.setState(previousState => {\n return _extends({}, previousState, {\n [key]: state(previousState[key])\n });\n }, reason);\n }, [apiRef]);\n const forceUpdate = React.useCallback(() => rawForceUpdate(() => apiRef.current.state), [apiRef]);\n const publicStateApi = {\n setState,\n forceUpdate\n };\n const privateStateApi = {\n updateControlState,\n registerControlState\n };\n useGridApiMethod(apiRef, publicStateApi, 'public');\n useGridApiMethod(apiRef, privateStateApi, 'private');\n};","import { useGridLoggerFactory } from './useGridLoggerFactory';\nimport { useGridApiInitialization } from './useGridApiInitialization';\nimport { useGridLocaleText } from './useGridLocaleText';\nimport { useGridPipeProcessing } from './pipeProcessing';\nimport { useGridStrategyProcessing } from './strategyProcessing';\nimport { useGridStateInitialization } from './useGridStateInitialization';\n\n/**\n * Initialize the technical pieces of the DataGrid (logger, state, ...) that any DataGrid implementation needs\n */\nexport const useGridInitialization = (inputApiRef, props) => {\n const privateApiRef = useGridApiInitialization(inputApiRef, props);\n useGridLoggerFactory(privateApiRef, props);\n useGridStateInitialization(privateApiRef, props);\n useGridPipeProcessing(privateApiRef);\n useGridStrategyProcessing(privateApiRef);\n useGridLocaleText(privateApiRef, props);\n privateApiRef.current.register('private', {\n rootProps: props\n });\n return privateApiRef;\n};","import * as React from 'react';\nexport const useGridInitializeState = (initializer, privateApiRef, props) => {\n const isInitialized = React.useRef(false);\n if (!isInitialized.current) {\n privateApiRef.current.state = initializer(privateApiRef.current.state, props, privateApiRef);\n isInitialized.current = true;\n }\n};","import { GridFilterInputDate } from '../components/panel/filterPanel/GridFilterInputDate';\nimport { convertLegacyOperators } from './utils';\nconst dateRegex = /(\\d+)-(\\d+)-(\\d+)/;\nconst dateTimeRegex = /(\\d+)-(\\d+)-(\\d+)T(\\d+):(\\d+)/;\nfunction buildApplyFilterFn(filterItem, compareFn, showTime, keepHours) {\n if (!filterItem.value) {\n return null;\n }\n const [year, month, day, hour, minute] = filterItem.value.match(showTime ? dateTimeRegex : dateRegex).slice(1).map(Number);\n const time = new Date(year, month - 1, day, hour || 0, minute || 0).getTime();\n return value => {\n if (!value) {\n return false;\n }\n if (keepHours) {\n return compareFn(value.getTime(), time);\n }\n\n // Make a copy of the date to not reset the hours in the original object\n const dateCopy = new Date(value);\n const timeToCompare = dateCopy.setHours(showTime ? value.getHours() : 0, showTime ? value.getMinutes() : 0, 0, 0);\n return compareFn(timeToCompare, time);\n };\n}\nexport const getGridDateOperators = showTime => convertLegacyOperators([{\n value: 'is',\n getApplyFilterFnV7: filterItem => {\n return buildApplyFilterFn(filterItem, (value1, value2) => value1 === value2, showTime);\n },\n InputComponent: GridFilterInputDate,\n InputComponentProps: {\n type: showTime ? 'datetime-local' : 'date'\n }\n}, {\n value: 'not',\n getApplyFilterFnV7: filterItem => {\n return buildApplyFilterFn(filterItem, (value1, value2) => value1 !== value2, showTime);\n },\n InputComponent: GridFilterInputDate,\n InputComponentProps: {\n type: showTime ? 'datetime-local' : 'date'\n }\n}, {\n value: 'after',\n getApplyFilterFnV7: filterItem => {\n return buildApplyFilterFn(filterItem, (value1, value2) => value1 > value2, showTime);\n },\n InputComponent: GridFilterInputDate,\n InputComponentProps: {\n type: showTime ? 'datetime-local' : 'date'\n }\n}, {\n value: 'onOrAfter',\n getApplyFilterFnV7: filterItem => {\n return buildApplyFilterFn(filterItem, (value1, value2) => value1 >= value2, showTime);\n },\n InputComponent: GridFilterInputDate,\n InputComponentProps: {\n type: showTime ? 'datetime-local' : 'date'\n }\n}, {\n value: 'before',\n getApplyFilterFnV7: filterItem => {\n return buildApplyFilterFn(filterItem, (value1, value2) => value1 < value2, showTime, !showTime);\n },\n InputComponent: GridFilterInputDate,\n InputComponentProps: {\n type: showTime ? 'datetime-local' : 'date'\n }\n}, {\n value: 'onOrBefore',\n getApplyFilterFnV7: filterItem => {\n return buildApplyFilterFn(filterItem, (value1, value2) => value1 <= value2, showTime);\n },\n InputComponent: GridFilterInputDate,\n InputComponentProps: {\n type: showTime ? 'datetime-local' : 'date'\n }\n}, {\n value: 'isEmpty',\n getApplyFilterFnV7: () => {\n return value => {\n return value == null;\n };\n },\n requiresFilterValue: false\n}, {\n value: 'isNotEmpty',\n getApplyFilterFnV7: () => {\n return value => {\n return value != null;\n };\n },\n requiresFilterValue: false\n}]);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { gridDateComparator } from '../hooks/features/sorting/gridSortingUtils';\nimport { getGridDateOperators } from './gridDateOperators';\nimport { GRID_STRING_COL_DEF } from './gridStringColDef';\nimport { renderEditDateCell } from '../components/cell/GridEditDateCell';\nfunction throwIfNotDateObject({\n value,\n columnType,\n rowId,\n field\n}) {\n if (!(value instanceof Date)) {\n throw new Error([`MUI: \\`${columnType}\\` column type only accepts \\`Date\\` objects as values.`, 'Use `valueGetter` to transform the value into a `Date` object.', `Row ID: ${rowId}, field: \"${field}\".`].join('\\n'));\n }\n}\nexport function gridDateFormatter({\n value,\n field,\n id\n}) {\n if (!value) {\n return '';\n }\n throwIfNotDateObject({\n value,\n columnType: 'date',\n rowId: id,\n field\n });\n return value.toLocaleDateString();\n}\nexport function gridDateTimeFormatter({\n value,\n field,\n id\n}) {\n if (!value) {\n return '';\n }\n throwIfNotDateObject({\n value,\n columnType: 'dateTime',\n rowId: id,\n field\n });\n return value.toLocaleString();\n}\nexport const GRID_DATE_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {\n type: 'date',\n sortComparator: gridDateComparator,\n valueFormatter: gridDateFormatter,\n filterOperators: getGridDateOperators(),\n renderEditCell: renderEditDateCell,\n // @ts-ignore\n pastedValueParser: value => new Date(value)\n});\nexport const GRID_DATETIME_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {\n type: 'dateTime',\n sortComparator: gridDateComparator,\n valueFormatter: gridDateTimeFormatter,\n filterOperators: getGridDateOperators(true),\n renderEditCell: renderEditDateCell,\n // @ts-ignore\n pastedValueParser: value => new Date(value)\n});","import { GridFilterInputValue } from '../components/panel/filterPanel/GridFilterInputValue';\nimport { GridFilterInputMultipleValue } from '../components/panel/filterPanel/GridFilterInputMultipleValue';\nimport { convertLegacyOperators, tagInternalFilter } from './utils';\nconst parseNumericValue = value => {\n if (value == null) {\n return null;\n }\n return Number(value);\n};\nexport const getGridNumericQuickFilterFn = tagInternalFilter(value => {\n if (value == null || Number.isNaN(value) || value === '') {\n return null;\n }\n return columnValue => {\n return parseNumericValue(columnValue) === parseNumericValue(value);\n };\n});\nexport const getGridNumericOperators = () => convertLegacyOperators([{\n value: '=',\n getApplyFilterFnV7: filterItem => {\n if (filterItem.value == null || Number.isNaN(filterItem.value)) {\n return null;\n }\n return value => {\n return parseNumericValue(value) === filterItem.value;\n };\n },\n InputComponent: GridFilterInputValue,\n InputComponentProps: {\n type: 'number'\n }\n}, {\n value: '!=',\n getApplyFilterFnV7: filterItem => {\n if (filterItem.value == null || Number.isNaN(filterItem.value)) {\n return null;\n }\n return value => {\n return parseNumericValue(value) !== filterItem.value;\n };\n },\n InputComponent: GridFilterInputValue,\n InputComponentProps: {\n type: 'number'\n }\n}, {\n value: '>',\n getApplyFilterFnV7: filterItem => {\n if (filterItem.value == null || Number.isNaN(filterItem.value)) {\n return null;\n }\n return value => {\n if (value == null) {\n return false;\n }\n return parseNumericValue(value) > filterItem.value;\n };\n },\n InputComponent: GridFilterInputValue,\n InputComponentProps: {\n type: 'number'\n }\n}, {\n value: '>=',\n getApplyFilterFnV7: filterItem => {\n if (filterItem.value == null || Number.isNaN(filterItem.value)) {\n return null;\n }\n return value => {\n if (value == null) {\n return false;\n }\n return parseNumericValue(value) >= filterItem.value;\n };\n },\n InputComponent: GridFilterInputValue,\n InputComponentProps: {\n type: 'number'\n }\n}, {\n value: '<',\n getApplyFilterFnV7: filterItem => {\n if (filterItem.value == null || Number.isNaN(filterItem.value)) {\n return null;\n }\n return value => {\n if (value == null) {\n return false;\n }\n return parseNumericValue(value) < filterItem.value;\n };\n },\n InputComponent: GridFilterInputValue,\n InputComponentProps: {\n type: 'number'\n }\n}, {\n value: '<=',\n getApplyFilterFnV7: filterItem => {\n if (filterItem.value == null || Number.isNaN(filterItem.value)) {\n return null;\n }\n return value => {\n if (value == null) {\n return false;\n }\n return parseNumericValue(value) <= filterItem.value;\n };\n },\n InputComponent: GridFilterInputValue,\n InputComponentProps: {\n type: 'number'\n }\n}, {\n value: 'isEmpty',\n getApplyFilterFnV7: () => {\n return value => {\n return value == null;\n };\n },\n requiresFilterValue: false\n}, {\n value: 'isNotEmpty',\n getApplyFilterFnV7: () => {\n return value => {\n return value != null;\n };\n },\n requiresFilterValue: false\n}, {\n value: 'isAnyOf',\n getApplyFilterFnV7: filterItem => {\n if (!Array.isArray(filterItem.value) || filterItem.value.length === 0) {\n return null;\n }\n return value => {\n return value != null && filterItem.value.includes(Number(value));\n };\n },\n InputComponent: GridFilterInputMultipleValue,\n InputComponentProps: {\n type: 'number'\n }\n}]);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { gridNumberComparator } from '../hooks/features/sorting/gridSortingUtils';\nimport { isNumber } from '../utils/utils';\nimport { getGridNumericOperators, getGridNumericQuickFilterFn } from './gridNumericOperators';\nimport { GRID_STRING_COL_DEF } from './gridStringColDef';\nimport { convertQuickFilterV7ToLegacy } from './utils';\nexport const GRID_NUMERIC_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {\n type: 'number',\n align: 'right',\n headerAlign: 'right',\n sortComparator: gridNumberComparator,\n valueParser: value => value === '' ? null : Number(value),\n valueFormatter: ({\n value\n }) => isNumber(value) ? value.toLocaleString() : value || '',\n filterOperators: getGridNumericOperators(),\n getApplyQuickFilterFn: convertQuickFilterV7ToLegacy(getGridNumericQuickFilterFn),\n getApplyQuickFilterFnV7: getGridNumericQuickFilterFn\n});","import { GridFilterInputSingleSelect } from '../components/panel/filterPanel/GridFilterInputSingleSelect';\nimport { GridFilterInputMultipleSingleSelect } from '../components/panel/filterPanel/GridFilterInputMultipleSingleSelect';\nimport { isObject } from '../utils/utils';\nimport { convertLegacyOperators } from './utils';\nconst parseObjectValue = value => {\n if (value == null || !isObject(value)) {\n return value;\n }\n return value.value;\n};\nexport const getGridSingleSelectOperators = () => convertLegacyOperators([{\n value: 'is',\n getApplyFilterFnV7: filterItem => {\n if (filterItem.value == null || filterItem.value === '') {\n return null;\n }\n return value => parseObjectValue(value) === parseObjectValue(filterItem.value);\n },\n InputComponent: GridFilterInputSingleSelect\n}, {\n value: 'not',\n getApplyFilterFnV7: filterItem => {\n if (filterItem.value == null || filterItem.value === '') {\n return null;\n }\n return value => parseObjectValue(value) !== parseObjectValue(filterItem.value);\n },\n InputComponent: GridFilterInputSingleSelect\n}, {\n value: 'isAnyOf',\n getApplyFilterFnV7: filterItem => {\n if (!Array.isArray(filterItem.value) || filterItem.value.length === 0) {\n return null;\n }\n const filterItemValues = filterItem.value.map(parseObjectValue);\n return value => filterItemValues.includes(parseObjectValue(value));\n },\n InputComponent: GridFilterInputMultipleSingleSelect\n}]);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { GRID_STRING_COL_DEF } from './gridStringColDef';\nimport { renderEditSingleSelectCell } from '../components/cell/GridEditSingleSelectCell';\nimport { getGridSingleSelectOperators } from './gridSingleSelectOperators';\nimport { isSingleSelectColDef } from '../components/panel/filterPanel/filterPanelUtils';\nimport { isObject } from '../utils/utils';\nconst isArrayOfObjects = options => {\n return typeof options[0] === 'object';\n};\nconst defaultGetOptionValue = value => {\n return isObject(value) ? value.value : value;\n};\nconst defaultGetOptionLabel = value => {\n return isObject(value) ? value.label : String(value);\n};\nexport const GRID_SINGLE_SELECT_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {\n type: 'singleSelect',\n getOptionLabel: defaultGetOptionLabel,\n getOptionValue: defaultGetOptionValue,\n valueFormatter(params) {\n const {\n id,\n field,\n value,\n api\n } = params;\n const colDef = params.api.getColumn(field);\n if (!isSingleSelectColDef(colDef)) {\n return '';\n }\n let valueOptions;\n if (typeof colDef.valueOptions === 'function') {\n valueOptions = colDef.valueOptions({\n id,\n row: id ? api.getRow(id) : null,\n field\n });\n } else {\n valueOptions = colDef.valueOptions;\n }\n if (value == null) {\n return '';\n }\n if (!valueOptions) {\n return value;\n }\n if (!isArrayOfObjects(valueOptions)) {\n return colDef.getOptionLabel(value);\n }\n const valueOption = valueOptions.find(option => colDef.getOptionValue(option) === value);\n return valueOption ? colDef.getOptionLabel(valueOption) : '';\n },\n renderEditCell: renderEditSingleSelectCell,\n filterOperators: getGridSingleSelectOperators(),\n // @ts-ignore\n pastedValueParser: (value, params) => {\n const colDef = params.colDef;\n const colDefValueOptions = colDef.valueOptions;\n const valueOptions = typeof colDefValueOptions === 'function' ? colDefValueOptions({\n field: colDef.field\n }) : colDefValueOptions || [];\n const getOptionValue = colDef.getOptionValue;\n const valueOption = valueOptions.find(option => {\n if (getOptionValue(option) === value) {\n return true;\n }\n return false;\n });\n if (valueOption) {\n return value;\n }\n // do not paste the value if it is not in the valueOptions\n return undefined;\n }\n});","import { GRID_STRING_COL_DEF } from './gridStringColDef';\nimport { GRID_NUMERIC_COL_DEF } from './gridNumericColDef';\nimport { GRID_DATE_COL_DEF, GRID_DATETIME_COL_DEF } from './gridDateColDef';\nimport { GRID_BOOLEAN_COL_DEF } from './gridBooleanColDef';\nimport { GRID_SINGLE_SELECT_COL_DEF } from './gridSingleSelectColDef';\nimport { GRID_ACTIONS_COL_DEF, GRID_ACTIONS_COLUMN_TYPE } from './gridActionsColDef';\nexport const DEFAULT_GRID_COL_TYPE_KEY = '__default__';\nexport const getGridDefaultColumnTypes = () => {\n const nativeColumnTypes = {\n string: GRID_STRING_COL_DEF,\n number: GRID_NUMERIC_COL_DEF,\n date: GRID_DATE_COL_DEF,\n dateTime: GRID_DATETIME_COL_DEF,\n boolean: GRID_BOOLEAN_COL_DEF,\n singleSelect: GRID_SINGLE_SELECT_COL_DEF,\n [GRID_ACTIONS_COLUMN_TYPE]: GRID_ACTIONS_COL_DEF,\n [DEFAULT_GRID_COL_TYPE_KEY]: GRID_STRING_COL_DEF\n };\n return nativeColumnTypes;\n};","import { GRID_CHECKBOX_SELECTION_COL_DEF } from '../../../../colDef';\nimport { buildWarning } from '../../../../utils/warning';\nfunction sanitizeCellValue(value, delimiterCharacter) {\n if (typeof value === 'string') {\n // Make sure value containing delimiter or line break won't be split into multiple rows\n if ([delimiterCharacter, '\\n', '\\r', '\"'].some(delimiter => value.includes(delimiter))) {\n return `\"${value.replace(/\"/g, '\"\"')}\"`;\n }\n return value;\n }\n return value;\n}\nexport const serializeCellValue = (cellParams, options) => {\n const {\n delimiterCharacter,\n ignoreValueFormatter\n } = options;\n let value;\n if (ignoreValueFormatter) {\n var _cellParams$value2;\n const columnType = cellParams.colDef.type;\n if (columnType === 'number') {\n value = String(cellParams.value);\n } else if (columnType === 'date' || columnType === 'dateTime') {\n var _cellParams$value;\n value = (_cellParams$value = cellParams.value) == null ? void 0 : _cellParams$value.toISOString();\n } else if (typeof ((_cellParams$value2 = cellParams.value) == null ? void 0 : _cellParams$value2.toString) === 'function') {\n value = cellParams.value.toString();\n } else {\n value = cellParams.value;\n }\n } else {\n value = cellParams.formattedValue;\n }\n return sanitizeCellValue(value, delimiterCharacter);\n};\nconst objectFormattedValueWarning = buildWarning(['MUI: When the value of a field is an object or a `renderCell` is provided, the CSV export might not display the value correctly.', 'You can provide a `valueFormatter` with a string representation to be used.']);\nclass CSVRow {\n constructor(options) {\n this.options = void 0;\n this.rowString = '';\n this.isEmpty = true;\n this.options = options;\n }\n addValue(value) {\n if (!this.isEmpty) {\n this.rowString += this.options.delimiterCharacter;\n }\n if (value === null || value === undefined) {\n this.rowString += '';\n } else if (typeof this.options.sanitizeCellValue === 'function') {\n this.rowString += this.options.sanitizeCellValue(value, this.options.delimiterCharacter);\n } else {\n this.rowString += value;\n }\n this.isEmpty = false;\n }\n getRowString() {\n return this.rowString;\n }\n}\nconst serializeRow = ({\n id,\n columns,\n getCellParams,\n delimiterCharacter,\n ignoreValueFormatter\n}) => {\n const row = new CSVRow({\n delimiterCharacter\n });\n columns.forEach(column => {\n const cellParams = getCellParams(id, column.field);\n if (process.env.NODE_ENV !== 'production') {\n if (String(cellParams.formattedValue) === '[object Object]') {\n objectFormattedValueWarning();\n }\n }\n row.addValue(serializeCellValue(cellParams, {\n delimiterCharacter,\n ignoreValueFormatter\n }));\n });\n return row.getRowString();\n};\nexport function buildCSV(options) {\n const {\n columns,\n rowIds,\n delimiterCharacter,\n includeHeaders,\n includeColumnGroupsHeaders,\n ignoreValueFormatter,\n apiRef\n } = options;\n const CSVBody = rowIds.reduce((acc, id) => `${acc}${serializeRow({\n id,\n columns,\n getCellParams: apiRef.current.getCellParams,\n delimiterCharacter,\n ignoreValueFormatter\n })}\\r\\n`, '').trim();\n if (!includeHeaders) {\n return CSVBody;\n }\n const filteredColumns = columns.filter(column => column.field !== GRID_CHECKBOX_SELECTION_COL_DEF.field);\n const headerRows = [];\n if (includeColumnGroupsHeaders) {\n const columnGroupLookup = apiRef.current.unstable_getAllGroupDetails();\n let maxColumnGroupsDepth = 0;\n const columnGroupPathsLookup = filteredColumns.reduce((acc, column) => {\n const columnGroupPath = apiRef.current.unstable_getColumnGroupPath(column.field);\n acc[column.field] = columnGroupPath;\n maxColumnGroupsDepth = Math.max(maxColumnGroupsDepth, columnGroupPath.length);\n return acc;\n }, {});\n for (let i = 0; i < maxColumnGroupsDepth; i += 1) {\n const headerGroupRow = new CSVRow({\n delimiterCharacter,\n sanitizeCellValue\n });\n headerRows.push(headerGroupRow);\n filteredColumns.forEach(column => {\n const columnGroupId = (columnGroupPathsLookup[column.field] || [])[i];\n const columnGroup = columnGroupLookup[columnGroupId];\n headerGroupRow.addValue(columnGroup ? columnGroup.headerName || columnGroup.groupId : '');\n });\n }\n }\n const mainHeaderRow = new CSVRow({\n delimiterCharacter,\n sanitizeCellValue\n });\n filteredColumns.forEach(column => {\n mainHeaderRow.addValue(column.headerName || column.field);\n });\n headerRows.push(mainHeaderRow);\n const CSVHead = `${headerRows.map(row => row.getRowString()).join('\\r\\n')}\\r\\n`;\n return `${CSVHead}${CSVBody}`.trim();\n}","import * as React from 'react';\nimport { useGridApiOptionHandler, useGridNativeEventListener } from '../../utils';\nimport { gridFocusCellSelector } from '../focus/gridFocusStateSelector';\nimport { serializeCellValue } from '../export/serializers/csvSerializer';\nfunction writeToClipboardPolyfill(data) {\n const span = document.createElement('span');\n span.style.whiteSpace = 'pre';\n span.style.userSelect = 'all';\n span.style.opacity = '0px';\n span.textContent = data;\n document.body.appendChild(span);\n const range = document.createRange();\n range.selectNode(span);\n const selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n try {\n document.execCommand('copy');\n } finally {\n document.body.removeChild(span);\n }\n}\nfunction copyToClipboard(data) {\n if (navigator.clipboard) {\n navigator.clipboard.writeText(data).catch(() => {\n writeToClipboardPolyfill(data);\n });\n } else {\n writeToClipboardPolyfill(data);\n }\n}\nfunction hasNativeSelection(element) {\n var _window$getSelection;\n // When getSelection is called on an