{"version":3,"file":"./assets/js/app.js","mappings":"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","sources":["webpack:///./node_modules/@babel/polyfill/lib/index.js","webpack:///./node_modules/@babel/polyfill/lib/noConflict.js","webpack:///./node_modules/core-js/es6/index.js","webpack:///./node_modules/core-js/fn/array/flat-map.js","webpack:///./node_modules/core-js/fn/array/includes.js","webpack:///./node_modules/core-js/fn/object/entries.js","webpack:///./node_modules/core-js/fn/object/get-own-property-descriptors.js","webpack:///./node_modules/core-js/fn/object/values.js","webpack:///./node_modules/core-js/fn/promise/finally.js","webpack:///./node_modules/core-js/fn/string/pad-end.js","webpack:///./node_modules/core-js/fn/string/pad-start.js","webpack:///./node_modules/core-js/fn/string/trim-end.js","webpack:///./node_modules/core-js/fn/string/trim-start.js","webpack:///./node_modules/core-js/fn/symbol/async-iterator.js","webpack:///./node_modules/core-js/library/fn/global.js","webpack:///./node_modules/core-js/library/modules/_a-function.js","webpack:///./node_modules/core-js/library/modules/_an-object.js","webpack:///./node_modules/core-js/library/modules/_core.js","webpack:///./node_modules/core-js/library/modules/_ctx.js","webpack:///./node_modules/core-js/library/modules/_descriptors.js","webpack:///./node_modules/core-js/library/modules/_dom-create.js","webpack:///./node_modules/core-js/library/modules/_export.js","webpack:///./node_modules/core-js/library/modules/_fails.js","webpack:///./node_modules/core-js/library/modules/_global.js","webpack:///./node_modules/core-js/library/modules/_has.js","webpack:///./node_modules/core-js/library/modules/_hide.js","webpack:///./node_modules/core-js/library/modules/_ie8-dom-define.js","webpack:///./node_modules/core-js/library/modules/_is-object.js","webpack:///./node_modules/core-js/library/modules/_object-dp.js","webpack:///./node_modules/core-js/library/modules/_property-desc.js","webpack:///./node_modules/core-js/library/modules/_to-primitive.js","webpack:///./node_modules/core-js/library/modules/es7.global.js","webpack:///./node_modules/core-js/modules/_a-function.js","webpack:///./node_modules/core-js/modules/_a-number-value.js","webpack:///./node_modules/core-js/modules/_add-to-unscopables.js","webpack:///./node_modules/core-js/modules/_advance-string-index.js","webpack:///./node_modules/core-js/modules/_an-instance.js","webpack:///./node_modules/core-js/modules/_an-object.js","webpack:///./node_modules/core-js/modules/_array-copy-within.js","webpack:///./node_modules/core-js/modules/_array-fill.js","webpack:///./node_modules/core-js/modules/_array-includes.js","webpack:///./node_modules/core-js/modules/_array-methods.js","webpack:///./node_modules/core-js/modules/_array-reduce.js","webpack:///./node_modules/core-js/modules/_array-species-constructor.js","webpack:///./node_modules/core-js/modules/_array-species-create.js","webpack:///./node_modules/core-js/modules/_bind.js","webpack:///./node_modules/core-js/modules/_classof.js","webpack:///./node_modules/core-js/modules/_cof.js","webpack:///./node_modules/core-js/modules/_collection-strong.js","webpack:///./node_modules/core-js/modules/_collection-weak.js","webpack:///./node_modules/core-js/modules/_collection.js","webpack:///./node_modules/core-js/modules/_core.js","webpack:///./node_modules/core-js/modules/_create-property.js","webpack:///./node_modules/core-js/modules/_ctx.js","webpack:///./node_modules/core-js/modules/_date-to-iso-string.js","webpack:///./node_modules/core-js/modules/_date-to-primitive.js","webpack:///./node_modules/core-js/modules/_defined.js","webpack:///./node_modules/core-js/modules/_descriptors.js","webpack:///./node_modules/core-js/modules/_dom-create.js","webpack:///./node_modules/core-js/modules/_enum-bug-keys.js","webpack:///./node_modules/core-js/modules/_enum-keys.js","webpack:///./node_modules/core-js/modules/_export.js","webpack:///./node_modules/core-js/modules/_fails-is-regexp.js","webpack:///./node_modules/core-js/modules/_fails.js","webpack:///./node_modules/core-js/modules/_fix-re-wks.js","webpack:///./node_modules/core-js/modules/_flags.js","webpack:///./node_modules/core-js/modules/_flatten-into-array.js","webpack:///./node_modules/core-js/modules/_for-of.js","webpack:///./node_modules/core-js/modules/_function-to-string.js","webpack:///./node_modules/core-js/modules/_global.js","webpack:///./node_modules/core-js/modules/_has.js","webpack:///./node_modules/core-js/modules/_hide.js","webpack:///./node_modules/core-js/modules/_html.js","webpack:///./node_modules/core-js/modules/_ie8-dom-define.js","webpack:///./node_modules/core-js/modules/_inherit-if-required.js","webpack:///./node_modules/core-js/modules/_invoke.js","webpack:///./node_modules/core-js/modules/_iobject.js","webpack:///./node_modules/core-js/modules/_is-array-iter.js","webpack:///./node_modules/core-js/modules/_is-array.js","webpack:///./node_modules/core-js/modules/_is-integer.js","webpack:///./node_modules/core-js/modules/_is-object.js","webpack:///./node_modules/core-js/modules/_is-regexp.js","webpack:///./node_modules/core-js/modules/_iter-call.js","webpack:///./node_modules/core-js/modules/_iter-create.js","webpack:///./node_modules/core-js/modules/_iter-define.js","webpack:///./node_modules/core-js/modules/_iter-detect.js","webpack:///./node_modules/core-js/modules/_iter-step.js","webpack:///./node_modules/core-js/modules/_iterators.js","webpack:///./node_modules/core-js/modules/_library.js","webpack:///./node_modules/core-js/modules/_math-expm1.js","webpack:///./node_modules/core-js/modules/_math-fround.js","webpack:///./node_modules/core-js/modules/_math-log1p.js","webpack:///./node_modules/core-js/modules/_math-sign.js","webpack:///./node_modules/core-js/modules/_meta.js","webpack:///./node_modules/core-js/modules/_microtask.js","webpack:///./node_modules/core-js/modules/_new-promise-capability.js","webpack:///./node_modules/core-js/modules/_object-assign.js","webpack:///./node_modules/core-js/modules/_object-create.js","webpack:///./node_modules/core-js/modules/_object-dp.js","webpack:///./node_modules/core-js/modules/_object-dps.js","webpack:///./node_modules/core-js/modules/_object-gopd.js","webpack:///./node_modules/core-js/modules/_object-gopn-ext.js","webpack:///./node_modules/core-js/modules/_object-gopn.js","webpack:///./node_modules/core-js/modules/_object-gops.js","webpack:///./node_modules/core-js/modules/_object-gpo.js","webpack:///./node_modules/core-js/modules/_object-keys-internal.js","webpack:///./node_modules/core-js/modules/_object-keys.js","webpack:///./node_modules/core-js/modules/_object-pie.js","webpack:///./node_modules/core-js/modules/_object-sap.js","webpack:///./node_modules/core-js/modules/_object-to-array.js","webpack:///./node_modules/core-js/modules/_own-keys.js","webpack:///./node_modules/core-js/modules/_parse-float.js","webpack:///./node_modules/core-js/modules/_parse-int.js","webpack:///./node_modules/core-js/modules/_perform.js","webpack:///./node_modules/core-js/modules/_promise-resolve.js","webpack:///./node_modules/core-js/modules/_property-desc.js","webpack:///./node_modules/core-js/modules/_redefine-all.js","webpack:///./node_modules/core-js/modules/_redefine.js","webpack:///./node_modules/core-js/modules/_regexp-exec-abstract.js","webpack:///./node_modules/core-js/modules/_regexp-exec.js","webpack:///./node_modules/core-js/modules/_same-value.js","webpack:///./node_modules/core-js/modules/_set-proto.js","webpack:///./node_modules/core-js/modules/_set-species.js","webpack:///./node_modules/core-js/modules/_set-to-string-tag.js","webpack:///./node_modules/core-js/modules/_shared-key.js","webpack:///./node_modules/core-js/modules/_shared.js","webpack:///./node_modules/core-js/modules/_species-constructor.js","webpack:///./node_modules/core-js/modules/_strict-method.js","webpack:///./node_modules/core-js/modules/_string-at.js","webpack:///./node_modules/core-js/modules/_string-context.js","webpack:///./node_modules/core-js/modules/_string-html.js","webpack:///./node_modules/core-js/modules/_string-pad.js","webpack:///./node_modules/core-js/modules/_string-repeat.js","webpack:///./node_modules/core-js/modules/_string-trim.js","webpack:///./node_modules/core-js/modules/_string-ws.js","webpack:///./node_modules/core-js/modules/_task.js","webpack:///./node_modules/core-js/modules/_to-absolute-index.js","webpack:///./node_modules/core-js/modules/_to-index.js","webpack:///./node_modules/core-js/modules/_to-integer.js","webpack:///./node_modules/core-js/modules/_to-iobject.js","webpack:///./node_modules/core-js/modules/_to-length.js","webpack:///./node_modules/core-js/modules/_to-object.js","webpack:///./node_modules/core-js/modules/_to-primitive.js","webpack:///./node_modules/core-js/modules/_typed-array.js","webpack:///./node_modules/core-js/modules/_typed-buffer.js","webpack:///./node_modules/core-js/modules/_typed.js","webpack:///./node_modules/core-js/modules/_uid.js","webpack:///./node_modules/core-js/modules/_user-agent.js","webpack:///./node_modules/core-js/modules/_validate-collection.js","webpack:///./node_modules/core-js/modules/_wks-define.js","webpack:///./node_modules/core-js/modules/_wks-ext.js","webpack:///./node_modules/core-js/modules/_wks.js","webpack:///./node_modules/core-js/modules/core.get-iterator-method.js","webpack:///./node_modules/core-js/modules/es6.array.copy-within.js","webpack:///./node_modules/core-js/modules/es6.array.every.js","webpack:///./node_modules/core-js/modules/es6.array.fill.js","webpack:///./node_modules/core-js/modules/es6.array.filter.js","webpack:///./node_modules/core-js/modules/es6.array.find-index.js","webpack:///./node_modules/core-js/modules/es6.array.find.js","webpack:///./node_modules/core-js/modules/es6.array.for-each.js","webpack:///./node_modules/core-js/modules/es6.array.from.js","webpack:///./node_modules/core-js/modules/es6.array.index-of.js","webpack:///./node_modules/core-js/modules/es6.array.is-array.js","webpack:///./node_modules/core-js/modules/es6.array.iterator.js","webpack:///./node_modules/core-js/modules/es6.array.join.js","webpack:///./node_modules/core-js/modules/es6.array.last-index-of.js","webpack:///./node_modules/core-js/modules/es6.array.map.js","webpack:///./node_modules/core-js/modules/es6.array.of.js","webpack:///./node_modules/core-js/modules/es6.array.reduce-right.js","webpack:///./node_modules/core-js/modules/es6.array.reduce.js","webpack:///./node_modules/core-js/modules/es6.array.slice.js","webpack:///./node_modules/core-js/modules/es6.array.some.js","webpack:///./node_modules/core-js/modules/es6.array.sort.js","webpack:///./node_modules/core-js/modules/es6.array.species.js","webpack:///./node_modules/core-js/modules/es6.date.now.js","webpack:///./node_modules/core-js/modules/es6.date.to-iso-string.js","webpack:///./node_modules/core-js/modules/es6.date.to-json.js","webpack:///./node_modules/core-js/modules/es6.date.to-primitive.js","webpack:///./node_modules/core-js/modules/es6.date.to-string.js","webpack:///./node_modules/core-js/modules/es6.function.bind.js","webpack:///./node_modules/core-js/modules/es6.function.has-instance.js","webpack:///./node_modules/core-js/modules/es6.function.name.js","webpack:///./node_modules/core-js/modules/es6.map.js","webpack:///./node_modules/core-js/modules/es6.math.acosh.js","webpack:///./node_modules/core-js/modules/es6.math.asinh.js","webpack:///./node_modules/core-js/modules/es6.math.atanh.js","webpack:///./node_modules/core-js/modules/es6.math.cbrt.js","webpack:///./node_modules/core-js/modules/es6.math.clz32.js","webpack:///./node_modules/core-js/modules/es6.math.cosh.js","webpack:///./node_modules/core-js/modules/es6.math.expm1.js","webpack:///./node_modules/core-js/modules/es6.math.fround.js","webpack:///./node_modules/core-js/modules/es6.math.hypot.js","webpack:///./node_modules/core-js/modules/es6.math.imul.js","webpack:///./node_modules/core-js/modules/es6.math.log10.js","webpack:///./node_modules/core-js/modules/es6.math.log1p.js","webpack:///./node_modules/core-js/modules/es6.math.log2.js","webpack:///./node_modules/core-js/modules/es6.math.sign.js","webpack:///./node_modules/core-js/modules/es6.math.sinh.js","webpack:///./node_modules/core-js/modules/es6.math.tanh.js","webpack:///./node_modules/core-js/modules/es6.math.trunc.js","webpack:///./node_modules/core-js/modules/es6.number.constructor.js","webpack:///./node_modules/core-js/modules/es6.number.epsilon.js","webpack:///./node_modules/core-js/modules/es6.number.is-finite.js","webpack:///./node_modules/core-js/modules/es6.number.is-integer.js","webpack:///./node_modules/core-js/modules/es6.number.is-nan.js","webpack:///./node_modules/core-js/modules/es6.number.is-safe-integer.js","webpack:///./node_modules/core-js/modules/es6.number.max-safe-integer.js","webpack:///./node_modules/core-js/modules/es6.number.min-safe-integer.js","webpack:///./node_modules/core-js/modules/es6.number.parse-float.js","webpack:///./node_modules/core-js/modules/es6.number.parse-int.js","webpack:///./node_modules/core-js/modules/es6.number.to-fixed.js","webpack:///./node_modules/core-js/modules/es6.number.to-precision.js","webpack:///./node_modules/core-js/modules/es6.object.assign.js","webpack:///./node_modules/core-js/modules/es6.object.create.js","webpack:///./node_modules/core-js/modules/es6.object.define-properties.js","webpack:///./node_modules/core-js/modules/es6.object.define-property.js","webpack:///./node_modules/core-js/modules/es6.object.freeze.js","webpack:///./node_modules/core-js/modules/es6.object.get-own-property-descriptor.js","webpack:///./node_modules/core-js/modules/es6.object.get-own-property-names.js","webpack:///./node_modules/core-js/modules/es6.object.get-prototype-of.js","webpack:///./node_modules/core-js/modules/es6.object.is-extensible.js","webpack:///./node_modules/core-js/modules/es6.object.is-frozen.js","webpack:///./node_modules/core-js/modules/es6.object.is-sealed.js","webpack:///./node_modules/core-js/modules/es6.object.is.js","webpack:///./node_modules/core-js/modules/es6.object.keys.js","webpack:///./node_modules/core-js/modules/es6.object.prevent-extensions.js","webpack:///./node_modules/core-js/modules/es6.object.seal.js","webpack:///./node_modules/core-js/modules/es6.object.set-prototype-of.js","webpack:///./node_modules/core-js/modules/es6.object.to-string.js","webpack:///./node_modules/core-js/modules/es6.parse-float.js","webpack:///./node_modules/core-js/modules/es6.parse-int.js","webpack:///./node_modules/core-js/modules/es6.promise.js","webpack:///./node_modules/core-js/modules/es6.reflect.apply.js","webpack:///./node_modules/core-js/modules/es6.reflect.construct.js","webpack:///./node_modules/core-js/modules/es6.reflect.define-property.js","webpack:///./node_modules/core-js/modules/es6.reflect.delete-property.js","webpack:///./node_modules/core-js/modules/es6.reflect.enumerate.js","webpack:///./node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js","webpack:///./node_modules/core-js/modules/es6.reflect.get-prototype-of.js","webpack:///./node_modules/core-js/modules/es6.reflect.get.js","webpack:///./node_modules/core-js/modules/es6.reflect.has.js","webpack:///./node_modules/core-js/modules/es6.reflect.is-extensible.js","webpack:///./node_modules/core-js/modules/es6.reflect.own-keys.js","webpack:///./node_modules/core-js/modules/es6.reflect.prevent-extensions.js","webpack:///./node_modules/core-js/modules/es6.reflect.set-prototype-of.js","webpack:///./node_modules/core-js/modules/es6.reflect.set.js","webpack:///./node_modules/core-js/modules/es6.regexp.constructor.js","webpack:///./node_modules/core-js/modules/es6.regexp.exec.js","webpack:///./node_modules/core-js/modules/es6.regexp.flags.js","webpack:///./node_modules/core-js/modules/es6.regexp.match.js","webpack:///./node_modules/core-js/modules/es6.regexp.replace.js","webpack:///./node_modules/core-js/modules/es6.regexp.search.js","webpack:///./node_modules/core-js/modules/es6.regexp.split.js","webpack:///./node_modules/core-js/modules/es6.regexp.to-string.js","webpack:///./node_modules/core-js/modules/es6.set.js","webpack:///./node_modules/core-js/modules/es6.string.anchor.js","webpack:///./node_modules/core-js/modules/es6.string.big.js","webpack:///./node_modules/core-js/modules/es6.string.blink.js","webpack:///./node_modules/core-js/modules/es6.string.bold.js","webpack:///./node_modules/core-js/modules/es6.string.code-point-at.js","webpack:///./node_modules/core-js/modules/es6.string.ends-with.js","webpack:///./node_modules/core-js/modules/es6.string.fixed.js","webpack:///./node_modules/core-js/modules/es6.string.fontcolor.js","webpack:///./node_modules/core-js/modules/es6.string.fontsize.js","webpack:///./node_modules/core-js/modules/es6.string.from-code-point.js","webpack:///./node_modules/core-js/modules/es6.string.includes.js","webpack:///./node_modules/core-js/modules/es6.string.italics.js","webpack:///./node_modules/core-js/modules/es6.string.iterator.js","webpack:///./node_modules/core-js/modules/es6.string.link.js","webpack:///./node_modules/core-js/modules/es6.string.raw.js","webpack:///./node_modules/core-js/modules/es6.string.repeat.js","webpack:///./node_modules/core-js/modules/es6.string.small.js","webpack:///./node_modules/core-js/modules/es6.string.starts-with.js","webpack:///./node_modules/core-js/modules/es6.string.strike.js","webpack:///./node_modules/core-js/modules/es6.string.sub.js","webpack:///./node_modules/core-js/modules/es6.string.sup.js","webpack:///./node_modules/core-js/modules/es6.string.trim.js","webpack:///./node_modules/core-js/modules/es6.symbol.js","webpack:///./node_modules/core-js/modules/es6.typed.array-buffer.js","webpack:///./node_modules/core-js/modules/es6.typed.data-view.js","webpack:///./node_modules/core-js/modules/es6.typed.float32-array.js","webpack:///./node_modules/core-js/modules/es6.typed.float64-array.js","webpack:///./node_modules/core-js/modules/es6.typed.int16-array.js","webpack:///./node_modules/core-js/modules/es6.typed.int32-array.js","webpack:///./node_modules/core-js/modules/es6.typed.int8-array.js","webpack:///./node_modules/core-js/modules/es6.typed.uint16-array.js","webpack:///./node_modules/core-js/modules/es6.typed.uint32-array.js","webpack:///./node_modules/core-js/modules/es6.typed.uint8-array.js","webpack:///./node_modules/core-js/modules/es6.typed.uint8-clamped-array.js","webpack:///./node_modules/core-js/modules/es6.weak-map.js","webpack:///./node_modules/core-js/modules/es6.weak-set.js","webpack:///./node_modules/core-js/modules/es7.array.flat-map.js","webpack:///./node_modules/core-js/modules/es7.array.includes.js","webpack:///./node_modules/core-js/modules/es7.object.entries.js","webpack:///./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","webpack:///./node_modules/core-js/modules/es7.object.values.js","webpack:///./node_modules/core-js/modules/es7.promise.finally.js","webpack:///./node_modules/core-js/modules/es7.string.pad-end.js","webpack:///./node_modules/core-js/modules/es7.string.pad-start.js","webpack:///./node_modules/core-js/modules/es7.string.trim-left.js","webpack:///./node_modules/core-js/modules/es7.string.trim-right.js","webpack:///./node_modules/core-js/modules/es7.symbol.async-iterator.js","webpack:///./node_modules/core-js/modules/web.dom.iterable.js","webpack:///./node_modules/core-js/modules/web.immediate.js","webpack:///./node_modules/core-js/modules/web.timers.js","webpack:///./node_modules/core-js/web/index.js","webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///./node_modules/css-loader/dist/runtime/sourceMaps.js","webpack:///jsFileDownloader/webpack/universalModuleDefinition","webpack:///jsFileDownloader/webpack/bootstrap","webpack:///jsFileDownloader/src/exception.js","webpack:///jsFileDownloader/src/index.js","webpack:///jsFileDownloader/src/signatures.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./src/js/Carousel.js","webpack:///./src/js/Contact.js","webpack:///./src/js/ProductBrochure.js","webpack:///./src/js/ReferenceDesign.js","webpack:///./src/js/Services.js","webpack:///./src/js/Subpage.js","webpack:///./src/js/libs/daijima/EventDispatcher.js","webpack:///./src/js/TemplateContents.js","webpack:///./src/js/Top.js","webpack:///./src/js/barba-custom.js","webpack:///./src/js/libs/TweenMax.min.js","webpack:///./src/js/libs/daijima/requestanimationframe.js","webpack:///./src/js/libs/daijima/trace.js","webpack:///./src/scss/common.scss","webpack:///./src/scss/contact.scss","webpack:///./src/scss/cookie_policy.scss","webpack:///./src/scss/product_brochure.scss","webpack:///./src/scss/reference_design.scss","webpack:///./src/scss/services.scss","webpack:///./src/scss/subpage.scss","webpack:///./src/scss/top.scss","webpack:///./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack:///./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack:///./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack:///./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack:///./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack:///./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/node module decorator","webpack:///webpack/runtime/nonce","webpack:///./src/scss/common.scss?86f1","webpack:///./src/scss/top.scss?8714","webpack:///./src/scss/subpage.scss?86ae","webpack:///./src/scss/services.scss?faff","webpack:///./src/scss/reference_design.scss?6e5a","webpack:///./src/scss/contact.scss?c4d7","webpack:///./src/scss/product_brochure.scss?b825","webpack:///./src/scss/cookie_policy.scss?1f24","webpack:///./src/js/libs/daijima/ua.js","webpack:///./src/js/Config.js","webpack:///./src/js/Header.js","webpack:///./src/js/Footer.js","webpack:///./node_modules/three/build/three.module.js","webpack:///./node_modules/three/src/math/MathUtils.js","webpack:///./node_modules/three/src/math/Quaternion.js","webpack:///./node_modules/three/src/math/Vector3.js","webpack:///./node_modules/three/src/math/Matrix4.js","webpack:///./node_modules/three/src/core/EventDispatcher.js","webpack:///./node_modules/three/src/math/Euler.js","webpack:///./node_modules/three/src/core/Layers.js","webpack:///./node_modules/three/src/math/Matrix3.js","webpack:///./node_modules/three/src/core/Object3D.js","webpack:///./node_modules/three/src/cameras/Camera.js","webpack:///./node_modules/three/src/cameras/OrthographicCamera.js","webpack:///./src/js/LoadingView.js","webpack:///./src/js/Loading.js","webpack:///./src/js/NextView.js","webpack:///./src/js/Transition.js","webpack:///./src/js/CookiePolicy.js","webpack:///./node_modules/three/examples/jsm/loaders/GLTFLoader.js","webpack:///./node_modules/three/examples/jsm/libs/meshopt_decoder.module.js","webpack:///./src/js/TopHero.js","webpack:///./node_modules/three/src/constants.js","webpack:///./src/js/Common.js","webpack:///./src/js/main.js"],"sourcesContent":["\"use strict\";\n\nrequire(\"./noConflict\");\n\nvar _global = _interopRequireDefault(require(\"core-js/library/fn/global\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nif (_global[\"default\"]._babelPolyfill && typeof console !== \"undefined\" && console.warn) {\n console.warn(\"@babel/polyfill is loaded more than once on this page. This is probably not desirable/intended \" + \"and may have consequences if different versions of the polyfills are applied sequentially. \" + \"If you do need to load the polyfill more than once, use @babel/polyfill/noConflict \" + \"instead to bypass the warning.\");\n}\n\n_global[\"default\"]._babelPolyfill = true;","\"use strict\";\n\nrequire(\"core-js/es6\");\n\nrequire(\"core-js/fn/array/includes\");\n\nrequire(\"core-js/fn/array/flat-map\");\n\nrequire(\"core-js/fn/string/pad-start\");\n\nrequire(\"core-js/fn/string/pad-end\");\n\nrequire(\"core-js/fn/string/trim-start\");\n\nrequire(\"core-js/fn/string/trim-end\");\n\nrequire(\"core-js/fn/symbol/async-iterator\");\n\nrequire(\"core-js/fn/object/get-own-property-descriptors\");\n\nrequire(\"core-js/fn/object/values\");\n\nrequire(\"core-js/fn/object/entries\");\n\nrequire(\"core-js/fn/promise/finally\");\n\nrequire(\"core-js/web\");\n\nrequire(\"regenerator-runtime/runtime\");","require('../modules/es6.symbol');\nrequire('../modules/es6.object.create');\nrequire('../modules/es6.object.define-property');\nrequire('../modules/es6.object.define-properties');\nrequire('../modules/es6.object.get-own-property-descriptor');\nrequire('../modules/es6.object.get-prototype-of');\nrequire('../modules/es6.object.keys');\nrequire('../modules/es6.object.get-own-property-names');\nrequire('../modules/es6.object.freeze');\nrequire('../modules/es6.object.seal');\nrequire('../modules/es6.object.prevent-extensions');\nrequire('../modules/es6.object.is-frozen');\nrequire('../modules/es6.object.is-sealed');\nrequire('../modules/es6.object.is-extensible');\nrequire('../modules/es6.object.assign');\nrequire('../modules/es6.object.is');\nrequire('../modules/es6.object.set-prototype-of');\nrequire('../modules/es6.object.to-string');\nrequire('../modules/es6.function.bind');\nrequire('../modules/es6.function.name');\nrequire('../modules/es6.function.has-instance');\nrequire('../modules/es6.parse-int');\nrequire('../modules/es6.parse-float');\nrequire('../modules/es6.number.constructor');\nrequire('../modules/es6.number.to-fixed');\nrequire('../modules/es6.number.to-precision');\nrequire('../modules/es6.number.epsilon');\nrequire('../modules/es6.number.is-finite');\nrequire('../modules/es6.number.is-integer');\nrequire('../modules/es6.number.is-nan');\nrequire('../modules/es6.number.is-safe-integer');\nrequire('../modules/es6.number.max-safe-integer');\nrequire('../modules/es6.number.min-safe-integer');\nrequire('../modules/es6.number.parse-float');\nrequire('../modules/es6.number.parse-int');\nrequire('../modules/es6.math.acosh');\nrequire('../modules/es6.math.asinh');\nrequire('../modules/es6.math.atanh');\nrequire('../modules/es6.math.cbrt');\nrequire('../modules/es6.math.clz32');\nrequire('../modules/es6.math.cosh');\nrequire('../modules/es6.math.expm1');\nrequire('../modules/es6.math.fround');\nrequire('../modules/es6.math.hypot');\nrequire('../modules/es6.math.imul');\nrequire('../modules/es6.math.log10');\nrequire('../modules/es6.math.log1p');\nrequire('../modules/es6.math.log2');\nrequire('../modules/es6.math.sign');\nrequire('../modules/es6.math.sinh');\nrequire('../modules/es6.math.tanh');\nrequire('../modules/es6.math.trunc');\nrequire('../modules/es6.string.from-code-point');\nrequire('../modules/es6.string.raw');\nrequire('../modules/es6.string.trim');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/es6.string.code-point-at');\nrequire('../modules/es6.string.ends-with');\nrequire('../modules/es6.string.includes');\nrequire('../modules/es6.string.repeat');\nrequire('../modules/es6.string.starts-with');\nrequire('../modules/es6.string.anchor');\nrequire('../modules/es6.string.big');\nrequire('../modules/es6.string.blink');\nrequire('../modules/es6.string.bold');\nrequire('../modules/es6.string.fixed');\nrequire('../modules/es6.string.fontcolor');\nrequire('../modules/es6.string.fontsize');\nrequire('../modules/es6.string.italics');\nrequire('../modules/es6.string.link');\nrequire('../modules/es6.string.small');\nrequire('../modules/es6.string.strike');\nrequire('../modules/es6.string.sub');\nrequire('../modules/es6.string.sup');\nrequire('../modules/es6.date.now');\nrequire('../modules/es6.date.to-json');\nrequire('../modules/es6.date.to-iso-string');\nrequire('../modules/es6.date.to-string');\nrequire('../modules/es6.date.to-primitive');\nrequire('../modules/es6.array.is-array');\nrequire('../modules/es6.array.from');\nrequire('../modules/es6.array.of');\nrequire('../modules/es6.array.join');\nrequire('../modules/es6.array.slice');\nrequire('../modules/es6.array.sort');\nrequire('../modules/es6.array.for-each');\nrequire('../modules/es6.array.map');\nrequire('../modules/es6.array.filter');\nrequire('../modules/es6.array.some');\nrequire('../modules/es6.array.every');\nrequire('../modules/es6.array.reduce');\nrequire('../modules/es6.array.reduce-right');\nrequire('../modules/es6.array.index-of');\nrequire('../modules/es6.array.last-index-of');\nrequire('../modules/es6.array.copy-within');\nrequire('../modules/es6.array.fill');\nrequire('../modules/es6.array.find');\nrequire('../modules/es6.array.find-index');\nrequire('../modules/es6.array.species');\nrequire('../modules/es6.array.iterator');\nrequire('../modules/es6.regexp.constructor');\nrequire('../modules/es6.regexp.exec');\nrequire('../modules/es6.regexp.to-string');\nrequire('../modules/es6.regexp.flags');\nrequire('../modules/es6.regexp.match');\nrequire('../modules/es6.regexp.replace');\nrequire('../modules/es6.regexp.search');\nrequire('../modules/es6.regexp.split');\nrequire('../modules/es6.promise');\nrequire('../modules/es6.map');\nrequire('../modules/es6.set');\nrequire('../modules/es6.weak-map');\nrequire('../modules/es6.weak-set');\nrequire('../modules/es6.typed.array-buffer');\nrequire('../modules/es6.typed.data-view');\nrequire('../modules/es6.typed.int8-array');\nrequire('../modules/es6.typed.uint8-array');\nrequire('../modules/es6.typed.uint8-clamped-array');\nrequire('../modules/es6.typed.int16-array');\nrequire('../modules/es6.typed.uint16-array');\nrequire('../modules/es6.typed.int32-array');\nrequire('../modules/es6.typed.uint32-array');\nrequire('../modules/es6.typed.float32-array');\nrequire('../modules/es6.typed.float64-array');\nrequire('../modules/es6.reflect.apply');\nrequire('../modules/es6.reflect.construct');\nrequire('../modules/es6.reflect.define-property');\nrequire('../modules/es6.reflect.delete-property');\nrequire('../modules/es6.reflect.enumerate');\nrequire('../modules/es6.reflect.get');\nrequire('../modules/es6.reflect.get-own-property-descriptor');\nrequire('../modules/es6.reflect.get-prototype-of');\nrequire('../modules/es6.reflect.has');\nrequire('../modules/es6.reflect.is-extensible');\nrequire('../modules/es6.reflect.own-keys');\nrequire('../modules/es6.reflect.prevent-extensions');\nrequire('../modules/es6.reflect.set');\nrequire('../modules/es6.reflect.set-prototype-of');\nmodule.exports = require('../modules/_core');\n","require('../../modules/es7.array.flat-map');\nmodule.exports = require('../../modules/_core').Array.flatMap;\n","require('../../modules/es7.array.includes');\nmodule.exports = require('../../modules/_core').Array.includes;\n","require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n","require('../../modules/es7.object.get-own-property-descriptors');\nmodule.exports = require('../../modules/_core').Object.getOwnPropertyDescriptors;\n","require('../../modules/es7.object.values');\nmodule.exports = require('../../modules/_core').Object.values;\n","'use strict';\nrequire('../../modules/es6.promise');\nrequire('../../modules/es7.promise.finally');\nmodule.exports = require('../../modules/_core').Promise['finally'];\n","require('../../modules/es7.string.pad-end');\nmodule.exports = require('../../modules/_core').String.padEnd;\n","require('../../modules/es7.string.pad-start');\nmodule.exports = require('../../modules/_core').String.padStart;\n","require('../../modules/es7.string.trim-right');\nmodule.exports = require('../../modules/_core').String.trimRight;\n","require('../../modules/es7.string.trim-left');\nmodule.exports = require('../../modules/_core').String.trimLeft;\n","require('../../modules/es7.symbol.async-iterator');\nmodule.exports = require('../../modules/_wks-ext').f('asyncIterator');\n","require('../modules/es7.global');\nmodule.exports = require('../modules/_core').global;\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","// https://github.com/tc39/proposal-global\nvar $export = require('./_export');\n\n$export($export.G, { global: require('./_global') });\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var cof = require('./_cof');\nmodule.exports = function (it, msg) {\n if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);\n return +it;\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\n\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","var aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar toLength = require('./_to-length');\n\nmodule.exports = function (that, callbackfn, aLen, memo, isRight) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IObject(O);\n var length = toLength(O.length);\n var index = isRight ? length - 1 : 0;\n var i = isRight ? -1 : 1;\n if (aLen < 2) for (;;) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (isRight ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\n// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar fails = require('./_fails');\nvar getTime = Date.prototype.getTime;\nvar $toISOString = Date.prototype.toISOString;\n\nvar lz = function (num) {\n return num > 9 ? num : '0' + num;\n};\n\n// PhantomJS / old WebKit has a broken implementations\nmodule.exports = (fails(function () {\n return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n $toISOString.call(new Date(NaN));\n})) ? function toISOString() {\n if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');\n var d = this;\n var y = d.getUTCFullYear();\n var m = d.getUTCMilliseconds();\n var s = y < 0 ? '-' : y > 9999 ? '+' : '';\n return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +\n '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +\n 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +\n ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';\n} : $toISOString;\n","'use strict';\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\nvar NUMBER = 'number';\n\nmodule.exports = function (hint) {\n if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint');\n return toPrimitive(anObject(this), hint != NUMBER);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar isArray = require('./_is-array');\nvar isObject = require('./_is-object');\nvar toLength = require('./_to-length');\nvar ctx = require('./_ctx');\nvar IS_CONCAT_SPREADABLE = require('./_wks')('isConcatSpreadable');\n\nfunction flattenIntoArray(target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? ctx(mapper, thisArg, 3) : false;\n var element, spreadable;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n spreadable = false;\n if (isObject(element)) {\n spreadable = element[IS_CONCAT_SPREADABLE];\n spreadable = spreadable !== undefined ? !!spreadable : isArray(element);\n }\n\n if (spreadable && depth > 0) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1fffffffffffff) throw TypeError();\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n}\n\nmodule.exports = flattenIntoArray;\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","module.exports = require('./_shared')('native-function-to-string', Function.toString);\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = {};\n","module.exports = false;\n","// 20.2.2.14 Math.expm1(x)\nvar $expm1 = Math.expm1;\nmodule.exports = (!$expm1\n // Old FF bug\n || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n // Tor Browser bug\n || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;\n} : $expm1;\n","// 20.2.2.16 Math.fround(x)\nvar sign = require('./_math-sign');\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n return n + 1 / EPSILON - 1 / EPSILON;\n};\n\nmodule.exports = Math.fround || function fround(x) {\n var $abs = Math.abs(x);\n var $sign = sign(x);\n var a, result;\n if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n a = (1 + EPSILON32 / EPSILON) * $abs;\n result = a - (a - $abs);\n // eslint-disable-next-line no-self-compare\n if (result > MAX32 || result != result) return $sign * Infinity;\n return $sign * result;\n};\n","// 20.2.2.20 Math.log1p(x)\nmodule.exports = Math.log1p || function log1p(x) {\n return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);\n};\n","// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","exports.f = {}.propertyIsEnumerable;\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","var DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || isEnum.call(O, key)) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","var $parseFloat = require('./_global').parseFloat;\nvar $trim = require('./_string-trim').trim;\n\nmodule.exports = 1 / $parseFloat(require('./_string-ws') + '-0') !== -Infinity ? function parseFloat(str) {\n var string = $trim(String(str), 3);\n var result = $parseFloat(string);\n return result === 0 && string.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","var $parseInt = require('./_global').parseInt;\nvar $trim = require('./_string-trim').trim;\nvar ws = require('./_string-ws');\nvar hex = /^[-+]?0[xX]/;\n\nmodule.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {\n var string = $trim(String(str), 3);\n return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));\n} : $parseInt;\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n","'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n // eslint-disable-next-line no-loop-func\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n","var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n var S = String(defined(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\nmodule.exports = function (NAME, exec) {\n var O = {};\n O[NAME] = exec(createHTML);\n $export($export.P + $export.F * fails(function () {\n var test = ''[NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n }), 'String', O);\n};\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('./_to-length');\nvar repeat = require('./_string-repeat');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, maxLength, fillString, left) {\n var S = String(defined(that));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n if (intMaxLength <= stringLength || fillStr == '') return S;\n var fillLen = intMaxLength - stringLength;\n var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return left ? stringFiller + S : S + stringFiller;\n};\n","'use strict';\nvar toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n\nmodule.exports = function repeat(count) {\n var str = String(defined(this));\n var res = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n var exp = {};\n var FORCE = fails(function () {\n return !!spaces[KEY]() || non[KEY]() != non;\n });\n var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n if (ALIAS) exp[ALIAS] = fn;\n $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n string = String(defined(string));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n};\n\nmodule.exports = exporter;\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length!');\n return length;\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nif (require('./_descriptors')) {\n var LIBRARY = require('./_library');\n var global = require('./_global');\n var fails = require('./_fails');\n var $export = require('./_export');\n var $typed = require('./_typed');\n var $buffer = require('./_typed-buffer');\n var ctx = require('./_ctx');\n var anInstance = require('./_an-instance');\n var propertyDesc = require('./_property-desc');\n var hide = require('./_hide');\n var redefineAll = require('./_redefine-all');\n var toInteger = require('./_to-integer');\n var toLength = require('./_to-length');\n var toIndex = require('./_to-index');\n var toAbsoluteIndex = require('./_to-absolute-index');\n var toPrimitive = require('./_to-primitive');\n var has = require('./_has');\n var classof = require('./_classof');\n var isObject = require('./_is-object');\n var toObject = require('./_to-object');\n var isArrayIter = require('./_is-array-iter');\n var create = require('./_object-create');\n var getPrototypeOf = require('./_object-gpo');\n var gOPN = require('./_object-gopn').f;\n var getIterFn = require('./core.get-iterator-method');\n var uid = require('./_uid');\n var wks = require('./_wks');\n var createArrayMethod = require('./_array-methods');\n var createArrayIncludes = require('./_array-includes');\n var speciesConstructor = require('./_species-constructor');\n var ArrayIterators = require('./es6.array.iterator');\n var Iterators = require('./_iterators');\n var $iterDetect = require('./_iter-detect');\n var setSpecies = require('./_set-species');\n var arrayFill = require('./_array-fill');\n var arrayCopyWithin = require('./_array-copy-within');\n var $DP = require('./_object-dp');\n var $GOPD = require('./_object-gopd');\n var dP = $DP.f;\n var gOPD = $GOPD.f;\n var RangeError = global.RangeError;\n var TypeError = global.TypeError;\n var Uint8Array = global.Uint8Array;\n var ARRAY_BUFFER = 'ArrayBuffer';\n var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n var PROTOTYPE = 'prototype';\n var ArrayProto = Array[PROTOTYPE];\n var $ArrayBuffer = $buffer.ArrayBuffer;\n var $DataView = $buffer.DataView;\n var arrayForEach = createArrayMethod(0);\n var arrayFilter = createArrayMethod(2);\n var arraySome = createArrayMethod(3);\n var arrayEvery = createArrayMethod(4);\n var arrayFind = createArrayMethod(5);\n var arrayFindIndex = createArrayMethod(6);\n var arrayIncludes = createArrayIncludes(true);\n var arrayIndexOf = createArrayIncludes(false);\n var arrayValues = ArrayIterators.values;\n var arrayKeys = ArrayIterators.keys;\n var arrayEntries = ArrayIterators.entries;\n var arrayLastIndexOf = ArrayProto.lastIndexOf;\n var arrayReduce = ArrayProto.reduce;\n var arrayReduceRight = ArrayProto.reduceRight;\n var arrayJoin = ArrayProto.join;\n var arraySort = ArrayProto.sort;\n var arraySlice = ArrayProto.slice;\n var arrayToString = ArrayProto.toString;\n var arrayToLocaleString = ArrayProto.toLocaleString;\n var ITERATOR = wks('iterator');\n var TAG = wks('toStringTag');\n var TYPED_CONSTRUCTOR = uid('typed_constructor');\n var DEF_CONSTRUCTOR = uid('def_constructor');\n var ALL_CONSTRUCTORS = $typed.CONSTR;\n var TYPED_ARRAY = $typed.TYPED;\n var VIEW = $typed.VIEW;\n var WRONG_LENGTH = 'Wrong length!';\n\n var $map = createArrayMethod(1, function (O, length) {\n return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n });\n\n var LITTLE_ENDIAN = fails(function () {\n // eslint-disable-next-line no-undef\n return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n });\n\n var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n new Uint8Array(1).set({});\n });\n\n var toOffset = function (it, BYTES) {\n var offset = toInteger(it);\n if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n return offset;\n };\n\n var validate = function (it) {\n if (isObject(it) && TYPED_ARRAY in it) return it;\n throw TypeError(it + ' is not a typed array!');\n };\n\n var allocate = function (C, length) {\n if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n throw TypeError('It is not a typed array constructor!');\n } return new C(length);\n };\n\n var speciesFromList = function (O, list) {\n return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n };\n\n var fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = allocate(C, length);\n while (length > index) result[index] = list[index++];\n return result;\n };\n\n var addGetter = function (it, key, internal) {\n dP(it, key, { get: function () { return this._d[internal]; } });\n };\n\n var $from = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iterFn = getIterFn(O);\n var i, length, values, result, step, iterator;\n if (iterFn != undefined && !isArrayIter(iterFn)) {\n for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n values.push(step.value);\n } O = values;\n }\n if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n };\n\n var $of = function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = allocate(this, length);\n while (length > index) result[index] = arguments[index++];\n return result;\n };\n\n // iOS Safari 6.x fails here\n var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n var $toLocaleString = function toLocaleString() {\n return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n };\n\n var proto = {\n copyWithin: function copyWithin(target, start /* , end */) {\n return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n },\n every: function every(callbackfn /* , thisArg */) {\n return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n return arrayFill.apply(validate(this), arguments);\n },\n filter: function filter(callbackfn /* , thisArg */) {\n return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n arguments.length > 1 ? arguments[1] : undefined));\n },\n find: function find(predicate /* , thisArg */) {\n return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n findIndex: function findIndex(predicate /* , thisArg */) {\n return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n forEach: function forEach(callbackfn /* , thisArg */) {\n arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n indexOf: function indexOf(searchElement /* , fromIndex */) {\n return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n includes: function includes(searchElement /* , fromIndex */) {\n return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n join: function join(separator) { // eslint-disable-line no-unused-vars\n return arrayJoin.apply(validate(this), arguments);\n },\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n return arrayLastIndexOf.apply(validate(this), arguments);\n },\n map: function map(mapfn /* , thisArg */) {\n return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduce.apply(validate(this), arguments);\n },\n reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduceRight.apply(validate(this), arguments);\n },\n reverse: function reverse() {\n var that = this;\n var length = validate(that).length;\n var middle = Math.floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n },\n some: function some(callbackfn /* , thisArg */) {\n return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n sort: function sort(comparefn) {\n return arraySort.call(validate(this), comparefn);\n },\n subarray: function subarray(begin, end) {\n var O = validate(this);\n var length = O.length;\n var $begin = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n O.buffer,\n O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n );\n }\n };\n\n var $slice = function slice(start, end) {\n return speciesFromList(this, arraySlice.call(validate(this), start, end));\n };\n\n var $set = function set(arrayLike /* , offset */) {\n validate(this);\n var offset = toOffset(arguments[1], 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError(WRONG_LENGTH);\n while (index < len) this[offset + index] = src[index++];\n };\n\n var $iterators = {\n entries: function entries() {\n return arrayEntries.call(validate(this));\n },\n keys: function keys() {\n return arrayKeys.call(validate(this));\n },\n values: function values() {\n return arrayValues.call(validate(this));\n }\n };\n\n var isTAIndex = function (target, key) {\n return isObject(target)\n && target[TYPED_ARRAY]\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n };\n var $getDesc = function getOwnPropertyDescriptor(target, key) {\n return isTAIndex(target, key = toPrimitive(key, true))\n ? propertyDesc(2, target[key])\n : gOPD(target, key);\n };\n var $setDesc = function defineProperty(target, key, desc) {\n if (isTAIndex(target, key = toPrimitive(key, true))\n && isObject(desc)\n && has(desc, 'value')\n && !has(desc, 'get')\n && !has(desc, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !desc.configurable\n && (!has(desc, 'writable') || desc.writable)\n && (!has(desc, 'enumerable') || desc.enumerable)\n ) {\n target[key] = desc.value;\n return target;\n } return dP(target, key, desc);\n };\n\n if (!ALL_CONSTRUCTORS) {\n $GOPD.f = $getDesc;\n $DP.f = $setDesc;\n }\n\n $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n getOwnPropertyDescriptor: $getDesc,\n defineProperty: $setDesc\n });\n\n if (fails(function () { arrayToString.call({}); })) {\n arrayToString = arrayToLocaleString = function toString() {\n return arrayJoin.call(this);\n };\n }\n\n var $TypedArrayPrototype$ = redefineAll({}, proto);\n redefineAll($TypedArrayPrototype$, $iterators);\n hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n redefineAll($TypedArrayPrototype$, {\n slice: $slice,\n set: $set,\n constructor: function () { /* noop */ },\n toString: arrayToString,\n toLocaleString: $toLocaleString\n });\n addGetter($TypedArrayPrototype$, 'buffer', 'b');\n addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n addGetter($TypedArrayPrototype$, 'length', 'e');\n dP($TypedArrayPrototype$, TAG, {\n get: function () { return this[TYPED_ARRAY]; }\n });\n\n // eslint-disable-next-line max-statements\n module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n CLAMPED = !!CLAMPED;\n var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + KEY;\n var SETTER = 'set' + KEY;\n var TypedArray = global[NAME];\n var Base = TypedArray || {};\n var TAC = TypedArray && getPrototypeOf(TypedArray);\n var FORCED = !TypedArray || !$typed.ABV;\n var O = {};\n var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n var getter = function (that, index) {\n var data = that._d;\n return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n };\n var setter = function (that, index, value) {\n var data = that._d;\n if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n };\n var addElement = function (that, index) {\n dP(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n if (FORCED) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME, '_d');\n var index = 0;\n var offset = 0;\n var buffer, byteLength, length, klass;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new $ArrayBuffer(byteLength);\n } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n buffer = data;\n offset = toOffset($offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - offset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (TYPED_ARRAY in data) {\n return fromList(TypedArray, data);\n } else {\n return $from.call(TypedArray, data);\n }\n hide(that, '_d', {\n b: buffer,\n o: offset,\n l: byteLength,\n e: length,\n v: new $DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n hide(TypedArrayPrototype, 'constructor', TypedArray);\n } else if (!fails(function () {\n TypedArray(1);\n }) || !fails(function () {\n new TypedArray(-1); // eslint-disable-line no-new\n }) || !$iterDetect(function (iter) {\n new TypedArray(); // eslint-disable-line no-new\n new TypedArray(null); // eslint-disable-line no-new\n new TypedArray(1.5); // eslint-disable-line no-new\n new TypedArray(iter); // eslint-disable-line no-new\n }, true)) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME);\n var klass;\n // `ws` module bug, temporarily remove validation length for Uint8Array\n // https://github.com/websockets/ws/pull/645\n if (!isObject(data)) return new Base(toIndex(data));\n if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n return $length !== undefined\n ? new Base(data, toOffset($offset, BYTES), $length)\n : $offset !== undefined\n ? new Base(data, toOffset($offset, BYTES))\n : new Base(data);\n }\n if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n return $from.call(TypedArray, data);\n });\n arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n });\n TypedArray[PROTOTYPE] = TypedArrayPrototype;\n if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n }\n var $nativeIterator = TypedArrayPrototype[ITERATOR];\n var CORRECT_ITER_NAME = !!$nativeIterator\n && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n var $iterator = $iterators.values;\n hide(TypedArray, TYPED_CONSTRUCTOR, true);\n hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n hide(TypedArrayPrototype, VIEW, true);\n hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n dP(TypedArrayPrototype, TAG, {\n get: function () { return NAME; }\n });\n }\n\n O[NAME] = TypedArray;\n\n $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n $export($export.S, NAME, {\n BYTES_PER_ELEMENT: BYTES\n });\n\n $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n from: $from,\n of: $of\n });\n\n if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n $export($export.P, NAME, proto);\n\n setSpecies(NAME);\n\n $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n $export($export.P + $export.F * fails(function () {\n new TypedArray(1).slice();\n }), NAME, { slice: $slice });\n\n $export($export.P + $export.F * (fails(function () {\n return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n }) || !fails(function () {\n TypedArrayPrototype.toLocaleString.call([1, 2]);\n })), NAME, { toLocaleString: $toLocaleString });\n\n Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n };\n} else module.exports = function () { /* empty */ };\n","'use strict';\nvar global = require('./_global');\nvar DESCRIPTORS = require('./_descriptors');\nvar LIBRARY = require('./_library');\nvar $typed = require('./_typed');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar fails = require('./_fails');\nvar anInstance = require('./_an-instance');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar toIndex = require('./_to-index');\nvar gOPN = require('./_object-gopn').f;\nvar dP = require('./_object-dp').f;\nvar arrayFill = require('./_array-fill');\nvar setToStringTag = require('./_set-to-string-tag');\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n var buffer = new Array(nBytes);\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var i = 0;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n var e, m, c;\n value = abs(value);\n // eslint-disable-next-line no-self-compare\n if (value != value || value === Infinity) {\n // eslint-disable-next-line no-self-compare\n m = value != value ? 1 : 0;\n e = eMax;\n } else {\n e = floor(log(value) / LN2);\n if (value * (c = pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * pow(2, eBias - 1) * pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n buffer[--i] |= s * 128;\n return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = eLen - 7;\n var i = nBytes - 1;\n var s = buffer[i--];\n var e = s & 127;\n var m;\n s >>= 7;\n for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : s ? -Infinity : Infinity;\n } else {\n m = m + pow(2, mLen);\n e = e - eBias;\n } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n return [it & 0xff];\n}\nfunction packI16(it) {\n return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = store.slice(start, start + bytes);\n return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = conversion(+value);\n for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n this._b = arrayFill.call(new Array(byteLength), 0);\n this[$LENGTH] = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = buffer[$LENGTH];\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n this[$BUFFER] = buffer;\n this[$OFFSET] = offset;\n this[$LENGTH] = byteLength;\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n addGetter($DataView, BUFFER, '_b');\n addGetter($DataView, BYTE_LENGTH, '_l');\n addGetter($DataView, BYTE_OFFSET, '_o');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packF32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packF64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n $ArrayBuffer(1);\n }) || !fails(function () {\n new $ArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new $ArrayBuffer(); // eslint-disable-line no-new\n new $ArrayBuffer(1.5); // eslint-disable-line no-new\n new $ArrayBuffer(NaN); // eslint-disable-line no-new\n return $ArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new BaseBuffer(toIndex(length));\n };\n var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n }\n if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var view = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataView[PROTOTYPE].setInt8;\n view.setInt8(0, 2147483648);\n view.setInt8(1, 2147483649);\n if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar uid = require('./_uid');\nvar TYPED = uid('typed_array');\nvar VIEW = uid('view');\nvar ABV = !!(global.ArrayBuffer && global.DataView);\nvar CONSTR = ABV;\nvar i = 0;\nvar l = 9;\nvar Typed;\n\nvar TypedArrayConstructors = (\n 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'\n).split(',');\n\nwhile (i < l) {\n if (Typed = global[TypedArrayConstructors[i++]]) {\n hide(Typed.prototype, TYPED, true);\n hide(Typed.prototype, VIEW, true);\n } else CONSTR = false;\n}\n\nmodule.exports = {\n ABV: ABV,\n CONSTR: CONSTR,\n TYPED: TYPED,\n VIEW: VIEW\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","exports.f = require('./_wks');\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { copyWithin: require('./_array-copy-within') });\n\nrequire('./_add-to-unscopables')('copyWithin');\n","'use strict';\nvar $export = require('./_export');\nvar $every = require('./_array-methods')(4);\n\n$export($export.P + $export.F * !require('./_strict-method')([].every, true), 'Array', {\n // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments[1]);\n }\n});\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\n","'use strict';\nvar $export = require('./_export');\nvar $filter = require('./_array-methods')(2);\n\n$export($export.P + $export.F * !require('./_strict-method')([].filter, true), 'Array', {\n // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $indexOf = require('./_array-includes')(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? $native.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments[1]);\n }\n});\n","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\n// 22.1.3.13 Array.prototype.join(separator)\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar arrayJoin = [].join;\n\n// fallback for not array-like strings\n$export($export.P + $export.F * (require('./_iobject') != Object || !require('./_strict-method')(arrayJoin)), 'Array', {\n join: function join(separator) {\n return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar $native = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0;\n var O = toIObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;\n return -1;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar createProperty = require('./_create-property');\n\n// WebKit Array.of isn't generic\n$export($export.S + $export.F * require('./_fails')(function () {\n function F() { /* empty */ }\n return !(Array.of.call(F) instanceof F);\n}), 'Array', {\n // 22.1.2.3 Array.of( ...items)\n of: function of(/* ...args */) {\n var index = 0;\n var aLen = arguments.length;\n var result = new (typeof this == 'function' ? this : Array)(aLen);\n while (aLen > index) createProperty(result, index, arguments[index++]);\n result.length = aLen;\n return result;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduceRight, true), 'Array', {\n // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])\n reduceRight: function reduceRight(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], true);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduce, true), 'Array', {\n // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], false);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar html = require('./_html');\nvar cof = require('./_cof');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar arraySlice = [].slice;\n\n// fallback for not array-like ES3 strings and DOM objects\n$export($export.P + $export.F * require('./_fails')(function () {\n if (html) arraySlice.call(html);\n}), 'Array', {\n slice: function slice(begin, end) {\n var len = toLength(this.length);\n var klass = cof(this);\n end = end === undefined ? len : end;\n if (klass == 'Array') return arraySlice.call(this, begin, end);\n var start = toAbsoluteIndex(begin, len);\n var upTo = toAbsoluteIndex(end, len);\n var size = toLength(upTo - start);\n var cloned = new Array(size);\n var i = 0;\n for (; i < size; i++) cloned[i] = klass == 'String'\n ? this.charAt(start + i)\n : this[start + i];\n return cloned;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $some = require('./_array-methods')(3);\n\n$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {\n // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n // IE8-\n test.sort(undefined);\n}) || !fails(function () {\n // V8 bug\n test.sort(null);\n // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n // 22.1.3.25 Array.prototype.sort(comparefn)\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? $sort.call(toObject(this))\n : $sort.call(toObject(this), aFunction(comparefn));\n }\n});\n","require('./_set-species')('Array');\n","// 20.3.3.1 / 15.9.4.4 Date.now()\nvar $export = require('./_export');\n\n$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });\n","// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar $export = require('./_export');\nvar toISOString = require('./_date-to-iso-string');\n\n// PhantomJS / old WebKit has a broken implementations\n$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {\n toISOString: toISOString\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\n\n$export($export.P + $export.F * require('./_fails')(function () {\n return new Date(NaN).toJSON() !== null\n || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n}), 'Date', {\n // eslint-disable-next-line no-unused-vars\n toJSON: function toJSON(key) {\n var O = toObject(this);\n var pv = toPrimitive(O);\n return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n }\n});\n","var TO_PRIMITIVE = require('./_wks')('toPrimitive');\nvar proto = Date.prototype;\n\nif (!(TO_PRIMITIVE in proto)) require('./_hide')(proto, TO_PRIMITIVE, require('./_date-to-primitive'));\n","var DateProto = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar $toString = DateProto[TO_STRING];\nvar getTime = DateProto.getTime;\nif (new Date(NaN) + '' != INVALID_DATE) {\n require('./_redefine')(DateProto, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? $toString.call(this) : INVALID_DATE;\n });\n}\n","// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = require('./_export');\n\n$export($export.P, 'Function', { bind: require('./_bind') });\n","'use strict';\nvar isObject = require('./_is-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar HAS_INSTANCE = require('./_wks')('hasInstance');\nvar FunctionProto = Function.prototype;\n// 19.2.3.6 Function.prototype[@@hasInstance](V)\nif (!(HAS_INSTANCE in FunctionProto)) require('./_object-dp').f(FunctionProto, HAS_INSTANCE, { value: function (O) {\n if (typeof this != 'function' || !isObject(O)) return false;\n if (!isObject(this.prototype)) return O instanceof this;\n // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:\n while (O = getPrototypeOf(O)) if (this.prototype === O) return true;\n return false;\n} });\n","var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","// 20.2.2.3 Math.acosh(x)\nvar $export = require('./_export');\nvar log1p = require('./_math-log1p');\nvar sqrt = Math.sqrt;\nvar $acosh = Math.acosh;\n\n$export($export.S + $export.F * !($acosh\n // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n && Math.floor($acosh(Number.MAX_VALUE)) == 710\n // Tor Browser bug: Math.acosh(Infinity) -> NaN\n && $acosh(Infinity) == Infinity\n), 'Math', {\n acosh: function acosh(x) {\n return (x = +x) < 1 ? NaN : x > 94906265.62425156\n ? Math.log(x) + Math.LN2\n : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n }\n});\n","// 20.2.2.5 Math.asinh(x)\nvar $export = require('./_export');\nvar $asinh = Math.asinh;\n\nfunction asinh(x) {\n return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));\n}\n\n// Tor Browser bug: Math.asinh(0) -> -0\n$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });\n","// 20.2.2.7 Math.atanh(x)\nvar $export = require('./_export');\nvar $atanh = Math.atanh;\n\n// Tor Browser bug: Math.atanh(-0) -> 0\n$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {\n atanh: function atanh(x) {\n return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;\n }\n});\n","// 20.2.2.9 Math.cbrt(x)\nvar $export = require('./_export');\nvar sign = require('./_math-sign');\n\n$export($export.S, 'Math', {\n cbrt: function cbrt(x) {\n return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);\n }\n});\n","// 20.2.2.11 Math.clz32(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n clz32: function clz32(x) {\n return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;\n }\n});\n","// 20.2.2.12 Math.cosh(x)\nvar $export = require('./_export');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n cosh: function cosh(x) {\n return (exp(x = +x) + exp(-x)) / 2;\n }\n});\n","// 20.2.2.14 Math.expm1(x)\nvar $export = require('./_export');\nvar $expm1 = require('./_math-expm1');\n\n$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });\n","// 20.2.2.16 Math.fround(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { fround: require('./_math-fround') });\n","// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])\nvar $export = require('./_export');\nvar abs = Math.abs;\n\n$export($export.S, 'Math', {\n hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * Math.sqrt(sum);\n }\n});\n","// 20.2.2.18 Math.imul(x, y)\nvar $export = require('./_export');\nvar $imul = Math.imul;\n\n// some WebKit versions fails with big numbers, some has wrong arity\n$export($export.S + $export.F * require('./_fails')(function () {\n return $imul(0xffffffff, 5) != -5 || $imul.length != 2;\n}), 'Math', {\n imul: function imul(x, y) {\n var UINT16 = 0xffff;\n var xn = +x;\n var yn = +y;\n var xl = UINT16 & xn;\n var yl = UINT16 & yn;\n return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n }\n});\n","// 20.2.2.21 Math.log10(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log10: function log10(x) {\n return Math.log(x) * Math.LOG10E;\n }\n});\n","// 20.2.2.20 Math.log1p(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { log1p: require('./_math-log1p') });\n","// 20.2.2.22 Math.log2(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log2: function log2(x) {\n return Math.log(x) / Math.LN2;\n }\n});\n","// 20.2.2.28 Math.sign(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { sign: require('./_math-sign') });\n","// 20.2.2.30 Math.sinh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n// V8 near Chromium 38 has a problem with very small numbers\n$export($export.S + $export.F * require('./_fails')(function () {\n return !Math.sinh(-2e-17) != -2e-17;\n}), 'Math', {\n sinh: function sinh(x) {\n return Math.abs(x = +x) < 1\n ? (expm1(x) - expm1(-x)) / 2\n : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);\n }\n});\n","// 20.2.2.33 Math.tanh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n tanh: function tanh(x) {\n var a = expm1(x = +x);\n var b = expm1(-x);\n return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n }\n});\n","// 20.2.2.34 Math.trunc(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n trunc: function trunc(it) {\n return (it > 0 ? Math.floor : Math.ceil)(it);\n }\n});\n","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n if (typeof it == 'string' && it.length > 2) {\n it = TRIM ? it.trim() : $trim(it, 3);\n var first = it.charCodeAt(0);\n var third, radix, maxCode;\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n default: return +it;\n }\n for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n code = digits.charCodeAt(i);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n $Number = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var that = this;\n return that instanceof $Number\n // check on 1..constructor(foo) case\n && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n };\n for (var keys = require('./_descriptors') ? gOPN(Base) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES6 (in case, if modules with ES6 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(Base, key = keys[j]) && !has($Number, key)) {\n dP($Number, key, gOPD(Base, key));\n }\n }\n $Number.prototype = proto;\n proto.constructor = $Number;\n require('./_redefine')(global, NUMBER, $Number);\n}\n","// 20.1.2.1 Number.EPSILON\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","// 20.1.2.5 Number.isSafeInteger(number)\nvar $export = require('./_export');\nvar isInteger = require('./_is-integer');\nvar abs = Math.abs;\n\n$export($export.S, 'Number', {\n isSafeInteger: function isSafeInteger(number) {\n return isInteger(number) && abs(number) <= 0x1fffffffffffff;\n }\n});\n","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 20.1.2.12 Number.parseFloat(string)\n$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 20.1.2.13 Number.parseInt(string, radix)\n$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });\n","'use strict';\nvar $export = require('./_export');\nvar toInteger = require('./_to-integer');\nvar aNumberValue = require('./_a-number-value');\nvar repeat = require('./_string-repeat');\nvar $toFixed = 1.0.toFixed;\nvar floor = Math.floor;\nvar data = [0, 0, 0, 0, 0, 0];\nvar ERROR = 'Number.toFixed: incorrect invocation!';\nvar ZERO = '0';\n\nvar multiply = function (n, c) {\n var i = -1;\n var c2 = c;\n while (++i < 6) {\n c2 += n * data[i];\n data[i] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\nvar divide = function (n) {\n var i = 6;\n var c = 0;\n while (--i >= 0) {\n c += data[i];\n data[i] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\nvar numToString = function () {\n var i = 6;\n var s = '';\n while (--i >= 0) {\n if (s !== '' || i === 0 || data[i] !== 0) {\n var t = String(data[i]);\n s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;\n }\n } return s;\n};\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\n$export($export.P + $export.F * (!!$toFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !require('./_fails')(function () {\n // V8 ~ Android 4.3-\n $toFixed.call({});\n})), 'Number', {\n toFixed: function toFixed(fractionDigits) {\n var x = aNumberValue(this, ERROR);\n var f = toInteger(fractionDigits);\n var s = '';\n var m = ZERO;\n var e, z, j, k;\n if (f < 0 || f > 20) throw RangeError(ERROR);\n // eslint-disable-next-line no-self-compare\n if (x != x) return 'NaN';\n if (x <= -1e21 || x >= 1e21) return String(x);\n if (x < 0) {\n s = '-';\n x = -x;\n }\n if (x > 1e-21) {\n e = log(x * pow(2, 69, 1)) - 69;\n z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = f;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n m = numToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n m = numToString() + repeat.call(ZERO, f);\n }\n }\n if (f > 0) {\n k = m.length;\n m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));\n } else {\n m = s + m;\n } return m;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $fails = require('./_fails');\nvar aNumberValue = require('./_a-number-value');\nvar $toPrecision = 1.0.toPrecision;\n\n$export($export.P + $export.F * ($fails(function () {\n // IE7-\n return $toPrecision.call(1, undefined) !== '1';\n}) || !$fails(function () {\n // V8 ~ Android 4.3-\n $toPrecision.call({});\n})), 'Number', {\n toPrecision: function toPrecision(precision) {\n var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');\n return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);\n }\n});\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","var $export = require('./_export');\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","// 19.1.2.7 Object.getOwnPropertyNames(O)\nrequire('./_object-sap')('getOwnPropertyNames', function () {\n return require('./_object-gopn-ext').f;\n});\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","// 19.1.2.11 Object.isExtensible(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isExtensible', function ($isExtensible) {\n return function isExtensible(it) {\n return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n };\n});\n","// 19.1.2.12 Object.isFrozen(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n","// 19.1.2.13 Object.isSealed(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isSealed', function ($isSealed) {\n return function isSealed(it) {\n return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n };\n});\n","// 19.1.3.10 Object.is(value1, value2)\nvar $export = require('./_export');\n$export($export.S, 'Object', { is: require('./_same-value') });\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","// 19.1.2.15 Object.preventExtensions(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('preventExtensions', function ($preventExtensions) {\n return function preventExtensions(it) {\n return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n };\n});\n","// 19.1.2.17 Object.seal(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('seal', function ($seal) {\n return function seal(it) {\n return $seal && isObject(it) ? $seal(meta(it)) : it;\n };\n});\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","'use strict';\n// 19.1.3.6 Object.prototype.toString()\nvar classof = require('./_classof');\nvar test = {};\ntest[require('./_wks')('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n require('./_redefine')(Object.prototype, 'toString', function toString() {\n return '[object ' + classof(this) + ']';\n }, true);\n}\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 18.2.4 parseFloat(string)\n$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 18.2.5 parseInt(string, radix)\n$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar rApply = (require('./_global').Reflect || {}).apply;\nvar fApply = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !require('./_fails')(function () {\n rApply(function () { /* empty */ });\n}), 'Reflect', {\n apply: function apply(target, thisArgument, argumentsList) {\n var T = aFunction(target);\n var L = anObject(argumentsList);\n return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n }\n});\n","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)\nvar dP = require('./_object-dp');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\n$export($export.S + $export.F * require('./_fails')(function () {\n // eslint-disable-next-line no-undef\n Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });\n}), 'Reflect', {\n defineProperty: function defineProperty(target, propertyKey, attributes) {\n anObject(target);\n propertyKey = toPrimitive(propertyKey, true);\n anObject(attributes);\n try {\n dP.f(target, propertyKey, attributes);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.4 Reflect.deleteProperty(target, propertyKey)\nvar $export = require('./_export');\nvar gOPD = require('./_object-gopd').f;\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var desc = gOPD(anObject(target), propertyKey);\n return desc && !desc.configurable ? false : delete target[propertyKey];\n }\n});\n","'use strict';\n// 26.1.5 Reflect.enumerate(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar Enumerate = function (iterated) {\n this._t = anObject(iterated); // target\n this._i = 0; // next index\n var keys = this._k = []; // keys\n var key;\n for (key in iterated) keys.push(key);\n};\nrequire('./_iter-create')(Enumerate, 'Object', function () {\n var that = this;\n var keys = that._k;\n var key;\n do {\n if (that._i >= keys.length) return { value: undefined, done: true };\n } while (!((key = keys[that._i++]) in that._t));\n return { value: key, done: false };\n});\n\n$export($export.S, 'Reflect', {\n enumerate: function enumerate(target) {\n return new Enumerate(target);\n }\n});\n","// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)\nvar gOPD = require('./_object-gopd');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n return gOPD.f(anObject(target), propertyKey);\n }\n});\n","// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = require('./_export');\nvar getProto = require('./_object-gpo');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getPrototypeOf: function getPrototypeOf(target) {\n return getProto(anObject(target));\n }\n});\n","// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n","// 26.1.9 Reflect.has(target, propertyKey)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', {\n has: function has(target, propertyKey) {\n return propertyKey in target;\n }\n});\n","// 26.1.10 Reflect.isExtensible(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $isExtensible = Object.isExtensible;\n\n$export($export.S, 'Reflect', {\n isExtensible: function isExtensible(target) {\n anObject(target);\n return $isExtensible ? $isExtensible(target) : true;\n }\n});\n","// 26.1.11 Reflect.ownKeys(target)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', { ownKeys: require('./_own-keys') });\n","// 26.1.12 Reflect.preventExtensions(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $preventExtensions = Object.preventExtensions;\n\n$export($export.S, 'Reflect', {\n preventExtensions: function preventExtensions(target) {\n anObject(target);\n try {\n if ($preventExtensions) $preventExtensions(target);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = require('./_export');\nvar setProto = require('./_set-proto');\n\nif (setProto) $export($export.S, 'Reflect', {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n setProto.check(target, proto);\n try {\n setProto.set(target, proto);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])\nvar dP = require('./_object-dp');\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar createDesc = require('./_property-desc');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\n\nfunction set(target, propertyKey, V /* , receiver */) {\n var receiver = arguments.length < 4 ? target : arguments[3];\n var ownDesc = gOPD.f(anObject(target), propertyKey);\n var existingDescriptor, proto;\n if (!ownDesc) {\n if (isObject(proto = getPrototypeOf(target))) {\n return set(proto, propertyKey, V, receiver);\n }\n ownDesc = createDesc(0);\n }\n if (has(ownDesc, 'value')) {\n if (ownDesc.writable === false || !isObject(receiver)) return false;\n if (existingDescriptor = gOPD.f(receiver, propertyKey)) {\n if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;\n existingDescriptor.value = V;\n dP.f(receiver, propertyKey, existingDescriptor);\n } else dP.f(receiver, propertyKey, createDesc(0, V));\n return true;\n }\n return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);\n}\n\n$export($export.S, 'Reflect', { set: set });\n","var global = require('./_global');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar dP = require('./_object-dp').f;\nvar gOPN = require('./_object-gopn').f;\nvar isRegExp = require('./_is-regexp');\nvar $flags = require('./_flags');\nvar $RegExp = global.RegExp;\nvar Base = $RegExp;\nvar proto = $RegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n// \"new\" creates a new object, old webkit buggy here\nvar CORRECT_NEW = new $RegExp(re1) !== re1;\n\nif (require('./_descriptors') && (!CORRECT_NEW || require('./_fails')(function () {\n re2[require('./_wks')('match')] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';\n}))) {\n $RegExp = function RegExp(p, f) {\n var tiRE = this instanceof $RegExp;\n var piRE = isRegExp(p);\n var fiU = f === undefined;\n return !tiRE && piRE && p.constructor === $RegExp && fiU ? p\n : inheritIfRequired(CORRECT_NEW\n ? new Base(piRE && !fiU ? p.source : p, f)\n : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)\n , tiRE ? this : proto, $RegExp);\n };\n var proxy = function (key) {\n key in $RegExp || dP($RegExp, key, {\n configurable: true,\n get: function () { return Base[key]; },\n set: function (it) { Base[key] = it; }\n });\n };\n for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);\n proto.constructor = $RegExp;\n $RegExp.prototype = proto;\n require('./_redefine')(global, 'RegExp', $RegExp);\n}\n\nrequire('./_set-species')('RegExp');\n","'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n","// 21.2.5.3 get RegExp.prototype.flags()\nif (require('./_descriptors') && /./g.flags != 'g') require('./_object-dp').f(RegExp.prototype, 'flags', {\n configurable: true,\n get: require('./_flags')\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative($match, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n if (!rx.global) return regExpExec(rx, S);\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative($replace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n results.push(result);\n if (!global) break;\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return $replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar sameValue = require('./_same-value');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@search logic\nrequire('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[SEARCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative($search, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","'use strict';\n\nvar isRegExp = require('./_is-regexp');\nvar anObject = require('./_an-object');\nvar speciesConstructor = require('./_species-constructor');\nvar advanceStringIndex = require('./_advance-string-index');\nvar toLength = require('./_to-length');\nvar callRegExpExec = require('./_regexp-exec-abstract');\nvar regexpExec = require('./_regexp-exec');\nvar fails = require('./_fails');\nvar $min = Math.min;\nvar $push = [].push;\nvar $SPLIT = 'split';\nvar LENGTH = 'length';\nvar LAST_INDEX = 'lastIndex';\nvar MAX_UINT32 = 0xffffffff;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return $split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy[LAST_INDEX];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);\n };\n } else {\n internalSplit = $split;\n }\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = defined(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n});\n","'use strict';\nrequire('./es6.regexp.flags');\nvar anObject = require('./_an-object');\nvar $flags = require('./_flags');\nvar DESCRIPTORS = require('./_descriptors');\nvar TO_STRING = 'toString';\nvar $toString = /./[TO_STRING];\n\nvar define = function (fn) {\n require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);\n};\n\n// 21.2.5.14 RegExp.prototype.toString()\nif (require('./_fails')(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {\n define(function toString() {\n var R = anObject(this);\n return '/'.concat(R.source, '/',\n 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);\n });\n// FF44- RegExp#toString has a wrong name\n} else if ($toString.name != TO_STRING) {\n define(function toString() {\n return $toString.call(this);\n });\n}\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","'use strict';\n// B.2.3.2 String.prototype.anchor(name)\nrequire('./_string-html')('anchor', function (createHTML) {\n return function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n };\n});\n","'use strict';\n// B.2.3.3 String.prototype.big()\nrequire('./_string-html')('big', function (createHTML) {\n return function big() {\n return createHTML(this, 'big', '', '');\n };\n});\n","'use strict';\n// B.2.3.4 String.prototype.blink()\nrequire('./_string-html')('blink', function (createHTML) {\n return function blink() {\n return createHTML(this, 'blink', '', '');\n };\n});\n","'use strict';\n// B.2.3.5 String.prototype.bold()\nrequire('./_string-html')('bold', function (createHTML) {\n return function bold() {\n return createHTML(this, 'b', '', '');\n };\n});\n","'use strict';\nvar $export = require('./_export');\nvar $at = require('./_string-at')(false);\n$export($export.P, 'String', {\n // 21.1.3.3 String.prototype.codePointAt(pos)\n codePointAt: function codePointAt(pos) {\n return $at(this, pos);\n }\n});\n","// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar ENDS_WITH = 'endsWith';\nvar $endsWith = ''[ENDS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(ENDS_WITH), 'String', {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = context(this, searchString, ENDS_WITH);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);\n var search = String(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","'use strict';\n// B.2.3.6 String.prototype.fixed()\nrequire('./_string-html')('fixed', function (createHTML) {\n return function fixed() {\n return createHTML(this, 'tt', '', '');\n };\n});\n","'use strict';\n// B.2.3.7 String.prototype.fontcolor(color)\nrequire('./_string-html')('fontcolor', function (createHTML) {\n return function fontcolor(color) {\n return createHTML(this, 'font', 'color', color);\n };\n});\n","'use strict';\n// B.2.3.8 String.prototype.fontsize(size)\nrequire('./_string-html')('fontsize', function (createHTML) {\n return function fontsize(size) {\n return createHTML(this, 'font', 'size', size);\n };\n});\n","var $export = require('./_export');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n // 21.1.2.2 String.fromCodePoint(...codePoints)\n fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n var res = [];\n var aLen = arguments.length;\n var i = 0;\n var code;\n while (aLen > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n res.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n );\n } return res.join('');\n }\n});\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\n// B.2.3.9 String.prototype.italics()\nrequire('./_string-html')('italics', function (createHTML) {\n return function italics() {\n return createHTML(this, 'i', '', '');\n };\n});\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","'use strict';\n// B.2.3.10 String.prototype.link(url)\nrequire('./_string-html')('link', function (createHTML) {\n return function link(url) {\n return createHTML(this, 'a', 'href', url);\n };\n});\n","var $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\n\n$export($export.S, 'String', {\n // 21.1.2.4 String.raw(callSite, ...substitutions)\n raw: function raw(callSite) {\n var tpl = toIObject(callSite.raw);\n var len = toLength(tpl.length);\n var aLen = arguments.length;\n var res = [];\n var i = 0;\n while (len > i) {\n res.push(String(tpl[i++]));\n if (i < aLen) res.push(String(arguments[i]));\n } return res.join('');\n }\n});\n","var $export = require('./_export');\n\n$export($export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: require('./_string-repeat')\n});\n","'use strict';\n// B.2.3.11 String.prototype.small()\nrequire('./_string-html')('small', function (createHTML) {\n return function small() {\n return createHTML(this, 'small', '', '');\n };\n});\n","// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","'use strict';\n// B.2.3.12 String.prototype.strike()\nrequire('./_string-html')('strike', function (createHTML) {\n return function strike() {\n return createHTML(this, 'strike', '', '');\n };\n});\n","'use strict';\n// B.2.3.13 String.prototype.sub()\nrequire('./_string-html')('sub', function (createHTML) {\n return function sub() {\n return createHTML(this, 'sub', '', '');\n };\n});\n","'use strict';\n// B.2.3.14 String.prototype.sup()\nrequire('./_string-html')('sup', function (createHTML) {\n return function sup() {\n return createHTML(this, 'sup', '', '');\n };\n});\n","'use strict';\n// 21.1.3.25 String.prototype.trim()\nrequire('./_string-trim')('trim', function ($trim) {\n return function trim() {\n return $trim(this, 3);\n };\n});\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","'use strict';\nvar $export = require('./_export');\nvar $typed = require('./_typed');\nvar buffer = require('./_typed-buffer');\nvar anObject = require('./_an-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar isObject = require('./_is-object');\nvar ArrayBuffer = require('./_global').ArrayBuffer;\nvar speciesConstructor = require('./_species-constructor');\nvar $ArrayBuffer = buffer.ArrayBuffer;\nvar $DataView = buffer.DataView;\nvar $isView = $typed.ABV && ArrayBuffer.isView;\nvar $slice = $ArrayBuffer.prototype.slice;\nvar VIEW = $typed.VIEW;\nvar ARRAY_BUFFER = 'ArrayBuffer';\n\n$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });\n\n$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {\n // 24.1.3.1 ArrayBuffer.isView(arg)\n isView: function isView(it) {\n return $isView && $isView(it) || isObject(it) && VIEW in it;\n }\n});\n\n$export($export.P + $export.U + $export.F * require('./_fails')(function () {\n return !new $ArrayBuffer(2).slice(1, undefined).byteLength;\n}), ARRAY_BUFFER, {\n // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)\n slice: function slice(start, end) {\n if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix\n var len = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, len);\n var fin = toAbsoluteIndex(end === undefined ? len : end, len);\n var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(fin - first));\n var viewS = new $DataView(this);\n var viewT = new $DataView(result);\n var index = 0;\n while (first < fin) {\n viewT.setUint8(index++, viewS.getUint8(first++));\n } return result;\n }\n});\n\nrequire('./_set-species')(ARRAY_BUFFER);\n","var $export = require('./_export');\n$export($export.G + $export.W + $export.F * !require('./_typed').ABV, {\n DataView: require('./_typed-buffer').DataView\n});\n","require('./_typed-array')('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float64', 8, function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int16', 2, function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int32', 4, function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int8', 1, function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint16', 2, function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint32', 4, function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n","'use strict';\nvar global = require('./_global');\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar validate = require('./_validate-collection');\nvar NATIVE_WEAK_MAP = require('./_validate-collection');\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","'use strict';\nvar weak = require('./_collection-weak');\nvar validate = require('./_validate-collection');\nvar WEAK_SET = 'WeakSet';\n\n// 23.4 WeakSet Objects\nrequire('./_collection')(WEAK_SET, function (get) {\n return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return weak.def(validate(this, WEAK_SET), value, true);\n }\n}, weak, false, true);\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap\nvar $export = require('./_export');\nvar flattenIntoArray = require('./_flatten-into-array');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar aFunction = require('./_a-function');\nvar arraySpeciesCreate = require('./_array-species-create');\n\n$export($export.P, 'Array', {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen, A;\n aFunction(callbackfn);\n sourceLen = toLength(O.length);\n A = arraySpeciesCreate(O, 0);\n flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments[1]);\n return A;\n }\n});\n\nrequire('./_add-to-unscopables')('flatMap');\n","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\nvar WEBKIT_BUG = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n$export($export.P + $export.F * WEBKIT_BUG, 'String', {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n }\n});\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\nvar WEBKIT_BUG = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n$export($export.P + $export.F * WEBKIT_BUG, 'String', {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n});\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimLeft', function ($trim) {\n return function trimLeft() {\n return $trim(this, 1);\n };\n}, 'trimStart');\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimRight', function ($trim) {\n return function trimRight() {\n return $trim(this, 2);\n };\n}, 'trimEnd');\n","require('./_wks-define')('asyncIterator');\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n","var $export = require('./_export');\nvar $task = require('./_task');\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n","// ie9- setTimeout & setInterval additional parameters fix\nvar global = require('./_global');\nvar $export = require('./_export');\nvar userAgent = require('./_user-agent');\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar wrap = function (set) {\n return function (fn, time /* , ...args */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : false;\n return set(boundArgs ? function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);\n } : fn, time);\n };\n};\n$export($export.G + $export.B + $export.F * MSIE, {\n setTimeout: wrap(global.setTimeout),\n setInterval: wrap(global.setInterval)\n});\n","require('../modules/web.timers');\nrequire('../modules/web.immediate');\nrequire('../modules/web.dom.iterable');\nmodule.exports = require('../modules/_core');\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n\n content += cssWithMappingToString(item);\n\n if (needLayer) {\n content += \"}\";\n }\n\n if (item[2]) {\n content += \"}\";\n }\n\n if (item[4]) {\n content += \"}\";\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n\n\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"jsFileDownloader\"] = factory();\n\telse\n\t\troot[\"jsFileDownloader\"] = factory();\n})(this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/index.js\");\n","export class DownloadException extends Error {\n constructor (message, request) {\n super(`Downloader error: ${message}`);\n this.request = request;\n this.name = 'DownloadException';\n }\n};\n\n/**\n * @deprecated use DownloadException instead, it will be removed in next releases!\n */\nexport const downloadException = DownloadException;\n","/*!\n * JS File Downloader v ##package_version##\n * https://github.com/AleeeKoi/js-file-downloader\n *\n * Copyright Alessandro Pellizzari\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n */\n\n'use strict';\n\nimport { DownloadException } from './exception';\nimport {fileSignatures} from './signatures';\n\nconst DEFAULT_PARAMS = {\n timeout: 40000,\n headers: [],\n forceDesktopMode: false,\n autoStart: true,\n withCredentials: false,\n method: 'GET',\n nameCallback: name => name,\n contentType: 'application/x-www-form-urlencoded',\n body: null,\n nativeFallbackOnError: false,\n contentTypeDetermination: false\n};\n\nclass JsFileDownloader {\n\n /**\n * Create a new JsFileDownloader instance\n * You need to define a {String} \"url\" params and other\n * @param {Object} customParams\n */\n constructor (customParams = {}) {\n this.params = Object.assign({}, DEFAULT_PARAMS, customParams);\n this.link = this.createLink();\n this.request = null;\n this.downloadedFile = null;\n this.abortController = undefined;\n\n if (this.params.autoStart) return this.downloadFile();\n\n return this;\n }\n\n start () {\n return this.downloadFile();\n }\n\n abort (reason) {\n if (!this.abortController) { return; }\n this.abortController.abort(reason || 'Download cancelled');\n }\n\n downloadFile () {\n return new Promise((resolve, reject) => {\n this.initDownload(resolve, reject);\n });\n }\n\n setAbortListner (abortListener) {\n if (!this.abortController) { return; }\n this.abortController.signal.addEventListener('abort', abortListener);\n }\n\n unsetAbortListner (abortListener) {\n if (!this.abortController) { return; }\n this.abortController.signal.removeEventListener('abort', abortListener);\n }\n\n initDownload (resolve, reject) {\n\n const fallback = () => {\n this.link.target = '_blank';\n this.link.href = this.params.url;\n this.clickLink();\n };\n\n // fallback for old browsers\n if (!('download' in this.link) || this.isMobile()) {\n fallback();\n return resolve();\n }\n\n this.request = this.createRequest();\n\n this.abortController = 'AbortController' in window ? new AbortController() : null;\n\n const abortListener = ({target}) => {\n this.unsetAbortListner(abortListener);\n !!this.request && this.request.abort();\n reject(target.reason);\n };\n\n this.setAbortListner(abortListener);\n\n if (!this.params.url) {\n return reject(new DownloadException('url param not defined!', this.request));\n }\n\n this.request.onload = async () => {\n this.unsetAbortListner(abortListener);\n if (parseInt(this.request.status, 10) !== 200) {\n return reject(new DownloadException(`status code [${this.request.status}]`, this.request));\n }\n await this.startDownload();\n return resolve(this);\n };\n\n this.request.ontimeout = () => {\n this.unsetAbortListner(abortListener);\n reject(new DownloadException('request timeout', this.request));\n };\n\n this.request.onerror = () => {\n this.unsetAbortListner(abortListener);\n if (this.params.nativeFallbackOnError) {\n fallback();\n resolve(this);\n } else {\n reject(new DownloadException('network error', this.request));\n }\n };\n\n this.request.send(this.params.body);\n\n return this;\n }\n\n isMobile () {\n return !this.params.forceDesktopMode &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n }\n\n createRequest () {\n let request = new XMLHttpRequest();\n\n request.open(this.params.method, this.params.url, true);\n if (this.params.contentType !== false) {\n request.setRequestHeader('Content-type', this.params.contentType);\n }\n this.params.headers.forEach(header => {\n request.setRequestHeader(header.name, header.value);\n });\n request.responseType = 'arraybuffer';\n if (this.params.process && typeof this.params.process === 'function') {\n request.addEventListener('progress', this.params.process);\n }\n if (this.params.onloadstart && typeof this.params.onloadstart === 'function') {\n request.onloadstart = this.params.onloadstart;\n }\n request.timeout = this.params.timeout;\n request.withCredentials = !!this.params.withCredentials || !!this.params.includeCredentials;\n return request;\n }\n\n getFileName () {\n // Forcing file name\n if (typeof this.params.filename === 'string') {\n return this.params.filename;\n }\n // Trying to get file name from response header\n let content = this.request.getResponseHeader('Content-Disposition');\n let contentParts = [];\n\n if (content) {\n contentParts = content.replace(/[\"']/g, '').match(/filename\\*?=([^;]+)/);\n }\n\n const extractedName = contentParts && contentParts.length >= 1 ?\n contentParts[1] :\n this.params.url.split('/').pop().split('?')[0];\n\n return this.params.nameCallback(extractedName);\n }\n\n getContentTypeFromFileSignature (file) {\n const signatures = Object.assign({}, fileSignatures, this.params.customFileSignatures);\n\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n const first4BytesOfFile = file.slice(0, 4);\n\n reader.onloadend = (evt) => {\n if (evt.target.readyState !== FileReader.DONE) {\n reject();\n return;\n }\n // Since an array buffer is just a generic way to represent a binary buffer\n // we need to create a TypedArray, in this case an Uint8Array\n const uint = new Uint8Array(evt.target.result);\n const bytes = [];\n\n uint.forEach((byte) => {\n // transform every byte to hexadecimal\n bytes.push(byte.toString(16));\n });\n\n const hex = bytes.join('').toUpperCase();\n resolve(signatures[hex]);\n };\n\n reader.onerror = reject;\n\n // read first 4 bytes of sliced file as an array buffer\n reader.readAsArrayBuffer(first4BytesOfFile);\n });\n }\n\n getContentTypeFromResponseHeader () {\n return this.request.getResponseHeader('content-type');\n }\n\n getContentType (response) {\n return new Promise(async (resolve) => {\n const { contentTypeDetermination } = this.params;\n const defaultContentType = 'application/octet-stream';\n let headerContentType;\n let signatureContentType;\n\n if (contentTypeDetermination === 'header' || contentTypeDetermination === 'full') {\n headerContentType = this.getContentTypeFromResponseHeader();\n }\n\n if (contentTypeDetermination === 'signature' || contentTypeDetermination === 'full') {\n signatureContentType = await this.getContentTypeFromFileSignature(new Blob([response]));\n }\n\n if (contentTypeDetermination === 'header') {\n resolve(headerContentType ?? defaultContentType);\n } else if (contentTypeDetermination === 'signature') {\n resolve(signatureContentType ?? defaultContentType);\n } else if (contentTypeDetermination === 'full') {\n resolve(signatureContentType ?? headerContentType ?? defaultContentType);\n } else {\n resolve(defaultContentType);\n }\n });\n }\n\n createLink () {\n let link = document.createElement('a');\n\n link.style.display = 'none';\n return link;\n }\n\n clickLink () {\n let event;\n\n try {\n event = new MouseEvent('click');\n } catch (e) {\n event = document.createEvent('MouseEvent');\n event.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n }\n\n this.link.dispatchEvent(event);\n }\n\n async getFile (response, fileName) {\n const type = await this.getContentType(response);\n let file;\n let options = { type };\n\n try {\n file = new File([response], fileName, options);\n } catch (e) {\n file = new Blob([response], options);\n file.name = fileName;\n file.lastModifiedDate = new Date();\n }\n\n return file;\n }\n\n async startDownload () {\n const fileName = this.getFileName();\n\n this.downloadedFile = await this.getFile(this.request.response, fileName);\n\n // native IE\n if ('msSaveOrOpenBlob' in window.navigator) {\n return window.navigator.msSaveOrOpenBlob(this.downloadedFile, fileName);\n }\n\n let objectUrl = window.URL.createObjectURL(this.downloadedFile);\n\n this.link.href = objectUrl;\n this.link.download = fileName;\n this.clickLink();\n\n setTimeout(() => {\n (window.URL || window.webkitURL || window).revokeObjectURL(objectUrl);\n }, 1000 * 40);\n\n return this.downloadedFile;\n }\n\n}\n\nexport default JsFileDownloader;\n","export const fileSignatures = {\n '89504E47': 'image/png',\n '25504446': 'application/pdf'\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","import TemplateContents from './TemplateContents';\n\nexport default class extends TemplateContents {\n constructor(param){\n super(param);\n }\n\n //ランディング時\n init() {\n // super.init();\n // this.pack.common.addScrollTarget(this);\n // this.pack.common.addEnterframeTarget(this);\n this.sw, this.sh;\n this.bindResizeHandler = this.resizeHandler.bind(this);\n this.hasTouch = (\"ontouchstart\" in window);\n this.resizeEvent = navigator.userAgent.match(/(iPhone|iPod|iPad)/) ? 'orientationchange' : 'resize';\n }\n\n setTarget(target) {\n this.target = target;\n\n this.setVars();\n this.setDom();\n this.initEvents();\n }\n\n setOnlyPC() {\n this.onlyPC = true;\n }\n\n setOnlySP() {\n this.onlySP = true;\n }\n\n setMarginRightPC(isVW, value) {\n this.hasMarginVWRightPC = isVW;\n if (isVW) this.marginVWRightPC = value;\n else this.marginRightPC = value;\n this.resizeHandler();\n }\n\n setMarginRightSP(isVW, value) {\n this.hasMarginVWRightSP = isVW;\n if (isVW) this.marginVWRightSP = value;\n else this.marginRightSP = value;\n this.resizeHandler();\n }\n\n setAdjustMinXPC(isVW, value) {\n this.hasMinXAdjustVWPC = isVW;\n if (isVW) this.minXAdjustVWPC = value;\n else this.minXAdjustPC = value;\n this.resizeHandler();\n }\n\n setAdjustMinXSP(isVW, value) {\n this.hasMinXAdjustVWSP = isVW;\n if (isVW) this.minXAdjustVWSP = value;\n else this.minXAdjustSP = value;\n this.resizeHandler();\n }\n\n //他ページから画面遷移で来た時(今回は使わない)\n reset() {\n // super.reset();\n // this.setVars();\n // this.pack.common.addScrollTarget(this);\n // this.pack.common.addEnterframeTarget(this);\n }\n\n //他ページに移動する時\n destruct() {\n super.destruct();\n // this.pack.common.removeScrollTarget(this);\n // this.pack.common.removeEnterframeTarget(this);\n\n this.carousel.removeEventListener(\"mouseover\", this.bindMouseOverHandler);\n this.carousel.removeEventListener(\"mouseout\", this.bindMouseOutHandler);\n this.carouselWrap.removeEventListener(\"mousemove\", this.bindMouseMoveHandler);\n this.carousel.removeEventListener(this.swipeStartEvent, this.bindStartSwipeHandler);\n this.carousel.removeEventListener(this.swipeStopEvent, this.bindStopSwipeHandler);\n\n for (let i = 0, len = this.anchors.length; i < len; i++) {\n let item = this.anchors[i];\n item.removeEventListener(\"click\", this.bindClickAnchorHandler);\n }\n\n if (this.next) this.next.removeEventListener(\"click\", this.bindClickNextHandler);\n if (this.prev) this.prev.removeEventListener(\"click\", this.bindClickPrevHandler);\n\n if (this.fader) {\n this.fader.removeEventListener(this.swipeStartEvent, this.bindStartSwipeFaderHandler);\n this.fader.removeEventListener(this.swipeStopEvent, this.bindStopSwipeFaderHandler);\n this.fader.removeEventListener(\"mouseover\", this.bindMouseOverFaderHandler);\n this.fader.removeEventListener(\"mouseout\", this.bindMouseOutFaderHandler);\n }\n }\n\n //変数設定\n setVars() {\n super.setVars();\n this.swipeIntervalCnt = 0;\n this.swiped = false;\n this.swipeInterval;\n this.swipeStartAbsoluteX;\n this.swipeStartPoint = { x: 0, y: 0 };\n this.pastSwipeX = 0;\n this.swipeX = 0;\n this.targetSwipeX = 0;\n this.pastTargetSwipeX = 0;\n\n this.isSwipingFader = false;\n this.swipeStartAbsoluteFaderX;\n this.swipeStartFaderPoint = { x: 0, y: 0 };\n this.pastSwipeFaderX = 0;\n this.targetSwipeFaderX = 0;\n\n this.enabled = false;\n this.marginRightPC = 0;\n this.marginRightSP = 0;\n this.hasMarginVWRightPC = false;\n this.hasMarginVWRightSP = false;\n this.marginVWRightPC = 0;\n this.marginVWRightSP = 0;\n\n this.minXAdjustPC = 0;\n this.minXAdjustSP = 0;\n this.hasMinXAdjustVWPC = false;\n this.hasMinXAdjustVWSP = false;\n this.minXAdjustVWPC = 0;\n this.minXAdjustVWSP = 0;\n\n this.faderAdjustWPC = 43;\n this.faderAdjustWSP = 40;\n }\n\n //dom設定\n setDom() {\n super.setDom();\n this.carouselWrap = this.target;\n this.carousel = this.target.querySelector('.carousel');\n this.carouselChilds = this.target.querySelectorAll('.carousel .carousel_item');\n this.carouselChildsImgs = this.target.querySelectorAll('.carousel .carousel_item img');\n this.anchors = this.target.querySelectorAll('.carousel .carousel_item a');\n this.prev = this.target.querySelector('.carousel_ui .prev_bt');\n this.next = this.target.querySelector('.carousel_ui .next_bt');\n this.barBase = this.target.querySelector('.carousel_ui .bar_base');\n this.bar = this.target.querySelector('.carousel_ui .bar_base .bar');\n this.fader = this.target.querySelector('.carousel_ui .fader');\n this.current = this.target.querySelector('.carousel_ui .current');\n }\n\n //イベント\n initEvents() {\n super.initEvents();\n\n this.swipingEvent = (this.pack.hasTouch) ? \"touchmove\" : \"mousemove\";\n this.swipeStartEvent = (this.pack.hasTouch) ? \"touchstart\" : \"mousedown\";\n this.swipeStopEvent = (this.pack.hasTouch) ? \"touchend\" : \"mouseup\";\n\n this.bindMouseOverHandler = this.mouseOverHandler.bind(this);\n this.bindMouseOutHandler = this.mouseOutHandler.bind(this);\n this.bindMouseMoveHandler = this.mouseMoveHandler.bind(this);\n this.bindStartSwipeHandler = this.startSwipeHandler.bind(this);\n this.bindSwipingHandler = this.swipingHandler.bind(this);\n this.bindStopSwipeHandler = this.stopSwipeHandler.bind(this);\n this.bindClickAnchorHandler = this.clickAnchorHandler.bind(this);\n this.bindClickNextHandler = this.clickNextHandler.bind(this);\n this.bindClickPrevHandler = this.clickPrevHandler.bind(this);\n this.bindStartSwipeFaderHandler = this.startSwipeFaderHandler.bind(this);\n this.bindSwipingFaderHandler = this.swipingFaderHandler.bind(this);\n this.bindStopSwipeFaderHandler = this.stopSwipeFaderHandler.bind(this);\n this.bindMouseOverFaderHandler = this.mouseOverFaderHandler.bind(this);\n this.bindMouseOutFaderHandler = this.mouseOutFaderHandler.bind(this);\n\n this.carousel.addEventListener(\"mouseover\", this.bindMouseOverHandler);\n this.carousel.addEventListener(\"mouseout\", this.bindMouseOutHandler);\n this.carouselWrap.addEventListener(\"mousemove\", this.bindMouseMoveHandler);\n this.carousel.addEventListener(this.swipeStartEvent, this.bindStartSwipeHandler);\n this.carousel.addEventListener(this.swipeStopEvent, this.bindStopSwipeHandler);\n\n for (let i = 0, len = this.anchors.length; i < len; i++) {\n let item = this.anchors[i];\n item.addEventListener(\"click\", this.bindClickAnchorHandler);\n }\n\n if (this.next) this.next.addEventListener(\"click\", this.bindClickNextHandler);\n if (this.prev) this.prev.addEventListener(\"click\", this.bindClickPrevHandler);\n\n if(this.fader){\n this.fader.addEventListener(this.swipeStartEvent, this.bindStartSwipeFaderHandler);\n this.fader.addEventListener(this.swipeStopEvent, this.bindStopSwipeFaderHandler);\n this.fader.addEventListener(\"mouseover\", this.bindMouseOverFaderHandler);\n this.fader.addEventListener(\"mouseout\", this.bindMouseOutFaderHandler);\n }\n }\n\n mouseOverFaderHandler(event) {\n this.fader.classList.add(\"hover\");\n }\n\n mouseOutFaderHandler(event) {\n if (!this.isSwipingFader) this.fader.classList.remove(\"hover\");\n }\n\n startSwipeFaderHandler(event) {\n this.resizeHandler();\n\n if (!this.enabled) return;\n this.isSwipingFader = true;\n let x;\n let hasTouch = event.type.indexOf('touch') == 0;\n\n if (hasTouch) {\n let touches = event.changedTouches[0];\n this.swipeStartAbsoluteFaderX = x = touches.clientX;\n } else {\n event.preventDefault();\n this.swipeStartAbsoluteFaderX = x = event.clientX;\n }\n\n this.swipeStartFaderPoint.x = x - this.pastSwipeFaderX;\n\n document.addEventListener(this.swipeStopEvent, this.bindStopSwipeFaderHandler);\n document.addEventListener(this.swipingEvent, this.bindSwipingFaderHandler);\n }\n\n swipingFaderHandler(event) {\n if (!this.enabled) return;\n let x;\n let hasTouch = event.type.indexOf('touch') == 0;\n let faderAdjustW;\n if(this.sw >= this.pack.BP) faderAdjustW = this.faderAdjustWPC;\n else faderAdjustW = this.faderAdjustWSP;\n\n let barBaseWidth = this.barBase.clientWidth - faderAdjustW;\n\n if (hasTouch) {\n let touches = event.changedTouches[0];\n this.swipeStartAbsoluteFaderX = x = touches.clientX;\n } else {\n event.preventDefault();\n this.swipeStartAbsoluteFaderX = x = event.clientX;\n }\n\n this.targetSwipeFaderX = (x - this.swipeStartFaderPoint.x);\n\n if (this.targetSwipeFaderX <= 0) this.targetSwipeFaderX = 0;\n else if (this.targetSwipeFaderX >= barBaseWidth) this.targetSwipeFaderX = barBaseWidth;\n\n // let scale = this.targetSwipeFaderX / barBaseWidth;\n // this.bar.style.transform = \"scaleX(\" + scale + \")\";\n this.fader.style.transform = \"translateX(\" + (this.targetSwipeFaderX / this.sw) * 100 + \"vw)\";\n\n // if(this.current) this.updateCurrent(scale);\n this.updateContents();\n }\n\n stopSwipeFaderHandler(event) {\n this.pastSwipeFaderX = this.targetSwipeFaderX;\n this.isSwipingFader = false;\n this.fader.classList.remove(\"hover\");\n document.removeEventListener(this.swipeStopEvent, this.bindStopSwipeFaderHandler);\n document.removeEventListener(this.swipingEvent, this.bindSwipingFaderHandler);\n }\n\n updateContents() {\n let faderAdjustW;\n if(this.sw >= this.pack.BP) faderAdjustW = this.faderAdjustWPC;\n else faderAdjustW = this.faderAdjustWSP;\n\n let uiMoveW = this.barBase.clientWidth - faderAdjustW;\n let contentsMoveW;\n let ratio;\n let dr = 1.1;\n\n if (this.sw >= this.pack.BP) contentsMoveW = this.getCarouselWidth() - this.sw + this.minXAdjustPC;\n else contentsMoveW = this.getCarouselWidth() - this.sw + this.minXAdjustSP;\n\n ratio = contentsMoveW / uiMoveW;\n\n this.targetSwipeX = -this.targetSwipeFaderX * ratio;\n this.pastSwipeX = this.targetSwipeX;\n\n TweenMax.killTweensOf(this);\n TweenMax.to(this, dr, {\n swipeX: this.targetSwipeX, onUpdate: () => {\n this.carousel.style.transform = 'translate3d(' + this.swipeX + 'px, 0, 0)';\n }, ease: Quart.easeOut\n });\n\n this.updateImages();\n }\n\n updateUI() {\n let faderAdjustW;\n if(this.sw >= this.pack.BP) faderAdjustW = this.faderAdjustWPC;\n else faderAdjustW = this.faderAdjustWSP;\n\n let barBaseWidth = this.barBase.clientWidth - faderAdjustW;\n let uiMoveW = barBaseWidth;\n let contentsMoveW;\n let ratio;\n if (this.sw >= this.pack.BP) contentsMoveW = this.getCarouselWidth() - this.sw + this.minXAdjustPC;\n else contentsMoveW = this.getCarouselWidth() - this.sw + this.minXAdjustSP;\n\n ratio = uiMoveW / contentsMoveW;\n\n this.targetSwipeFaderX = -this.targetSwipeX * ratio;\n this.pastSwipeFaderX = this.targetSwipeFaderX;\n // let scale = this.targetSwipeFaderX / barBaseWidth;\n // this.bar.style.transform = \"scaleX(\" + scale + \")\";\n this.fader.style.transform = \"translateX(\" + (this.targetSwipeFaderX / this.sw) * 100 + \"vw)\";\n\n if(this.current) this.updateCurrent(scale);\n }\n\n updateCurrent(scale){\n let len = this.carouselChilds.length;\n let single = 1 / len;\n let current = Math.ceil(scale/single);\n if(current === 0) current = 1;\n else if(current > len) current = len;\n\n this.current.innerText = this.pack.addZero(String(current));\n }\n\n mouseMoveHandler(event) {\n if (!this.enabled) return;\n }\n\n mouseOverHandler(event) {\n if (!this.enabled) return;\n }\n\n mouseOutHandler(event) {\n if (!this.enabled) return;\n }\n\n clickNextHandler(event) {\n if (!this.enabled) return;\n let dr = 1.1;\n let singleW = this.carouselChilds[0].clientWidth;\n if (this.sw >= this.pack.BP) singleW += this.marginRightPC;\n else singleW += this.marginRightSP;\n\n let minX;\n if (this.sw >= this.pack.BP) minX = -singleW * this.carouselChilds.length + this.sw - this.minXAdjustPC;\n else minX = -singleW * this.carouselChilds.length + this.sw - this.minXAdjustSP;\n\n this.pastSwipeX = this.targetSwipeX -= singleW;\n if (this.targetSwipeX <= minX) this.pastSwipeX = this.targetSwipeX = minX;\n TweenMax.killTweensOf(this);\n TweenMax.to(this, dr, {\n swipeX: this.targetSwipeX, onUpdate: () => {\n this.carousel.style.transform = 'translate3d(' + this.swipeX + 'px, 0, 0)';\n }, ease: Quart.easeOut\n });\n }\n\n clickPrevHandler(event) {\n if (!this.enabled) return;\n let dr = 1.1;\n let singleW = this.carouselChilds[0].clientWidth;\n if (this.sw >= this.pack.BP) singleW += this.marginRightPC;\n else singleW += this.marginRightSP;\n\n this.pastSwipeX = this.targetSwipeX += singleW;\n if (this.targetSwipeX >= 0) this.pastSwipeX = this.targetSwipeX = 0;\n TweenMax.killTweensOf(this);\n TweenMax.to(this, dr, {\n swipeX: this.targetSwipeX, onUpdate: () => {\n this.carousel.style.transform = 'translate3d(' + this.swipeX + 'px, 0, 0)';\n }, ease: Quart.easeOut\n });\n }\n\n clickAnchorHandler(event) {\n if (!this.enabled) return;\n //swipe処理とのバッティングを避ける処理\n if (this.swipeIntervalCnt > 3 && this.swiped) {\n event.stopPropagation();\n event.preventDefault();\n }\n }\n\n startSwipeHandler(event) {\n this.resizeHandler();\n\n if (!this.enabled) return;\n let x;\n let hasTouch = event.type.indexOf('touch') == 0;\n\n this.swipeIntervalCnt = 0;\n this.swipeInterval = setInterval(() => {\n this.swipeIntervalCnt++;\n }, 1000 / 30);\n\n if (hasTouch) {\n let touches = event.changedTouches[0];\n this.swipeStartAbsoluteX = touches.clientX;\n x = touches.clientX * 2;\n } else {\n event.preventDefault();\n this.swipeStartAbsoluteX = event.clientX;\n x = event.clientX * 2;\n }\n\n this.swipeStartPoint.x = x - this.pastSwipeX;\n\n document.addEventListener(this.swipeStopEvent, this.bindStopSwipeHandler);\n document.addEventListener(this.swipingEvent, this.bindSwipingHandler);\n }\n\n swipingHandler(event) {\n if (!this.enabled) return;\n let x;\n let hasTouch = event.type.indexOf('touch') == 0;\n let dr = 1.1;\n\n let minX;\n if (this.sw >= this.pack.BP) minX = -this.getCarouselWidth() + this.sw - this.minXAdjustPC;\n else minX = -this.getCarouselWidth() + this.sw - this.minXAdjustSP;\n\n if (hasTouch) {\n // event.preventDefault();\n let touches = event.changedTouches[0];\n x = touches.clientX * 2;\n } else {\n event.preventDefault();\n x = event.clientX * 2;\n }\n\n this.targetSwipeX = (x - this.swipeStartPoint.x);\n\n if (this.targetSwipeX <= minX) this.targetSwipeX = minX;\n else if (this.targetSwipeX >= 0) this.targetSwipeX = 0;\n\n TweenMax.killTweensOf(this);\n TweenMax.to(this, dr, {\n swipeX: this.targetSwipeX, onUpdate: () => {\n this.carousel.style.transform = 'translate3d(' + this.swipeX + 'px, 0, 0)';\n }, ease: Quart.easeOut\n });\n\n this.updateImages();\n if(this.fader) this.updateUI();\n }\n\n stopSwipeHandler(event) {\n if (!this.enabled) return;\n let x;\n let hasTouch = event.type.indexOf('touch') == 0;\n\n if (hasTouch) {\n let touches = event.changedTouches[0];\n x = touches.clientX * 2;\n } else {\n x = event.clientX * 2;\n }\n\n //スワイプしたかどうか\n if (this.swipeStartAbsoluteX === x) this.swiped = false;\n else this.swiped = true;\n\n this.pastSwipeX = this.targetSwipeX;\n clearInterval(this.swipeInterval);\n document.removeEventListener(this.swipeStopEvent, this.bindStopSwipeHandler);\n document.removeEventListener(this.swipingEvent, this.bindSwipingHandler);\n }\n\n updateImages() {\n if (this.sw < this.pack.BP) return;\n let dr = 1.1;\n let difPast = (this.targetSwipeX - this.pastTargetSwipeX);\n for (let i = 0, len = this.carouselChildsImgs.length; i < len; i++) {\n let item = this.carouselChildsImgs[i];\n TweenMax.killTweensOf(item);\n TweenMax.to(item, dr, { bezier: [{ x: difPast }, { x: 0 }], ease: Quart.easeOut });\n }\n\n this.pastTargetSwipeX = this.targetSwipeX;\n }\n\n //60fps\n enterframe() {\n if (!this.enabled) return;\n }\n\n //30fps\n enterframeThinOut() {\n\n }\n\n getCarouselWidth() {\n let w = 0;\n for (let i = 0, len = this.carouselChilds.length; i < len; i++) {\n let item = this.carouselChilds[i];\n let singleW = item.clientWidth;\n if (this.sw >= this.pack.BP) singleW += this.marginRightPC;\n else singleW += this.marginRightSP;\n w += singleW;\n }\n\n return w;\n }\n\n //リサイズ\n executeResize() {\n super.executeResize();\n\n let carouselWidth = this.getCarouselWidth();\n if (carouselWidth > this.sw) this.enabled = true;\n else this.enabled = false;\n\n if (this.sw >= this.pack.BP) {\n if (this.onlySP) this.enabled = false;\n else {\n\n }\n } else if (this.sw < this.pack.BP) {\n if (this.onlyPC) this.enabled = false;\n else {\n\n }\n }\n\n if (this.hasMarginVWRightPC) this.marginRightPC = this.sw * this.marginVWRightPC / 100;\n if (this.hasMarginVWRightSP) this.marginRightSP = this.sw * this.marginVWRightSP / 100;\n\n if (this.hasMinXAdjustVWPC) this.minXAdjustPC = this.sw * this.minXAdjustVWPC / 100;\n if (this.hasMinXAdjustVWSP) this.minXAdjustSP = this.sw * this.minXAdjustVWSP / 100;\n }\n}","import TemplateContents from './TemplateContents';\n\nexport default class extends TemplateContents {\n constructor(param) {\n super(param);\n }\n\n init() {\n super.init();\n\n // this.pack.common.addScrollTarget(this);\n // this.pack.common.addEnterframeTarget(this);\n }\n\n reset() {\n super.reset();\n\n this.setVars();\n // this.pack.common.addScrollTarget(this);\n // this.pack.common.addEnterframeTarget(this);\n }\n\n destruct() {\n super.destruct();\n\n this.confirmBtn.removeEventListener(\n 'click',\n this.bindClickConfirmHandler\n );\n this.submitBtn.removeEventListener(\n 'click',\n this.bindClickSubmitHandler\n );\n this.backBtn.removeEventListener('click', this.bindClickBackHandler);\n\n for (let i = 0, len = this.inputRowfields.length; i < len; i++) {\n let item = this.inputRowfields[i];\n item.removeEventListener('focus', this.bindFocusHandler[i]);\n item.removeEventListener('blur', this.bindBlurHandler[i]);\n }\n\n for (let i = 0, len = this.copyToClipboards.length; i < len; i++) {\n let item = this.copyToClipboards[i];\n item.removeEventListener(\n 'click',\n this.bincClickCopyToClipboardHandlerList[i]\n );\n }\n\n // this.pack.common.removeScrollTarget(this);\n // this.pack.common.removeEnterframeTarget(this);\n }\n\n setVars() {\n super.setVars();\n }\n\n setDom() {\n super.setDom();\n\n this.contactsContainer = document.querySelector(\n 'main.contact .section2 .contacts'\n );\n\n this.h1 = document.querySelector('main.contact h1');\n this.section1 = document.querySelector('main.contact .section1');\n this.section2 = document.querySelector('main.contact .section2');\n this.inputList = document.querySelectorAll(\n 'main.contact .section1 .contents_input ul li.item'\n );\n this.inputRowTits = document.querySelectorAll(\n 'main.contact .section1 .contents_input .input_item .tit'\n );\n this.inputRowfields = document.querySelectorAll(\n 'main.contact .section1 .contents_input .input_item input, main.contact .section1 .contents_input .input_item textarea'\n );\n this.confirmList = document.querySelectorAll(\n 'main.contact .section1 .contents_confirm ul li.item'\n );\n this.confirmListUserData = document.querySelectorAll(\n 'main.contact .section1 .contents_confirm ul li.item .user_data'\n );\n this.confirmBtn = document.querySelector(\n 'main.contact .section1 .contents_input .bt'\n );\n this.submitBtn = document.querySelector(\n 'main.contact .section1 .contents_confirm .submit_bt'\n );\n this.backBtn = document.querySelector(\n 'main.contact .section1 .contents_confirm .back_bt'\n );\n }\n\n initEvents() {\n super.initEvents();\n\n this.bindClickConfirmHandler = this.clickConfirmHandler.bind(this);\n this.bindClickSubmitHandler = this.clickSubmitHandler.bind(this);\n this.bindClickBackHandler = this.clickBackHandler.bind(this);\n this.bindFocusHandler = [];\n this.bindBlurHandler = [];\n\n this.confirmBtn.addEventListener('click', this.bindClickConfirmHandler);\n this.submitBtn.addEventListener('click', this.bindClickSubmitHandler);\n this.backBtn.addEventListener('click', this.bindClickBackHandler);\n\n for (let i = 0, len = this.inputRowfields.length; i < len; i++) {\n let item = this.inputRowfields[i];\n this.bindFocusHandler[i] = this.focusHandler;\n this.bindBlurHandler[i] = this.blurHandler;\n item.addEventListener('focus', {\n handleEvent: this.bindFocusHandler[i],\n id: i,\n sc: this,\n });\n item.addEventListener('blur', {\n handleEvent: this.bindBlurHandler[i],\n id: i,\n sc: this,\n });\n }\n }\n\n setEvents() {\n this.bincClickCopyToClipboardHandlerList = [];\n\n for (let i = 0, len = this.copyToClipboards.length; i < len; i++) {\n let item = this.copyToClipboards[i];\n this.bincClickCopyToClipboardHandlerList[i] =\n this.clickCopyToClipboardHandlerList;\n item.addEventListener('click', {\n handleEvent: this.bincClickCopyToClipboardHandlerList[i],\n sc: this,\n id: i,\n });\n }\n }\n\n clickCopyToClipboardHandlerList(event) {\n let sc = this.sc;\n let id = this.id;\n navigator.clipboard.writeText(sc.addresses[id].innerText);\n }\n\n focusHandler(event) {\n let sc = this.sc;\n let id = this.id;\n\n sc.inputRowTits[id].classList.add('small');\n }\n\n blurHandler(event) {\n let sc = this.sc;\n let id = this.id;\n // trace(sc.inputRowfields[id].value);\n if (sc.inputRowfields[id].value === '')\n sc.inputRowTits[id].classList.remove('small');\n }\n\n checkName(v) {\n if (v == '') return false;\n else return true;\n }\n\n checkEmail(v) {\n if (v == '') return false;\n else if (\n !v.match(\n /^([a-zA-Z0-9])+([a-zA-Z0-9\\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\\._-]+)+$/\n )\n )\n return false;\n else return true;\n }\n\n checkMessage(v) {\n if (v == '') return false;\n else return true;\n }\n\n clickConfirmHandler(event) {\n let fname = document.querySelector('input[name=\"fname\"]').value;\n let lname = document.querySelector('input[name=\"lname\"]').value;\n let company = document.querySelector('input[name=\"company\"]').value;\n let role = document.querySelector('input[name=\"role\"]').value;\n let email = document.querySelector('input[name=\"email\"]').value;\n let requirements = document.querySelector(\n 'input[name=\"requirements\"]'\n ).value;\n let message = document.querySelector('textarea[name=\"message\"]').value;\n // let news = document.querySelector('input[name=\"news\"]').checked;\n let privacy = document.querySelector(\n 'input[name=\"privacy_policy\"]'\n ).checked;\n\n let fnameResult = this.checkName(fname);\n let lnameResult = this.checkName(lname);\n // let companyResult = company;\n // let roleResult = role;\n let emailResult = this.checkEmail(email);\n // let requirementsResult = requirements;\n let messageResult = this.checkMessage(message);\n // let newsResult = news;\n let privacyResult = privacy;\n\n let liName1 = this.inputList[0];\n let liName2 = this.inputList[1];\n let liEmail = this.inputList[4];\n let liMessage = this.inputList[6];\n let liPrivacy = this.inputList[7];\n\n let liFName = this.pack.LANG === 'ja' ? liName2 : liName1;\n let liLName = this.pack.LANG === 'ja' ? liName1 : liName2;\n\n if (fnameResult) liFName.classList.remove('error');\n else liFName.classList.add('error');\n\n if (lnameResult) liLName.classList.remove('error');\n else liLName.classList.add('error');\n\n if (emailResult) liEmail.classList.remove('error');\n else liEmail.classList.add('error');\n\n if (messageResult) liMessage.classList.remove('error');\n else liMessage.classList.add('error');\n\n if (privacyResult) liPrivacy.classList.remove('error');\n else liPrivacy.classList.add('error');\n\n if (\n fnameResult &&\n lnameResult &&\n emailResult &&\n messageResult &&\n privacyResult\n ) {\n this.confirmListUserData[0].innerText =\n this.pack.LANG === 'ja' ? lname : fname;\n this.confirmListUserData[1].innerText =\n this.pack.LANG === 'ja' ? fname : lname;\n this.confirmListUserData[2].innerText = company;\n this.confirmListUserData[3].innerText = role;\n this.confirmListUserData[4].innerText = email;\n this.confirmListUserData[5].innerText = requirements;\n this.confirmListUserData[6].innerText = message;\n // this.confirmListUserData[6].innerText =\n // news === true ? 'Yes' : 'No';\n this.confirmListUserData[7].innerText =\n privacy === true ? 'Yes' : 'No';\n this.section1.classList.add('confirm');\n this.pack.anchorScroll(0);\n this.section2.classList.add('hide');\n }\n }\n\n clickSubmitHandler(event) {\n const formData = new FormData(document.querySelector('#form1'));\n const data = Object.fromEntries(formData.entries());\n delete data.privacy_policy;\n\n fetch(this.pack.CONTACT_API_PATH + '/form/contact', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(data),\n })\n .then((response) => response.json())\n .then((data) => {\n // console.log('Success:', data);\n this.section1.classList.add('thanks');\n this.section2.classList.add('thanks');\n this.pack.anchorScroll(0);\n })\n .catch((error) => {\n console.error('Error:', error);\n\n //for debug TODO(消す)\n // this.section1.classList.add(\"thanks\");\n // this.section2.classList.add(\"thanks\");\n // this.pack.anchorScroll(0);\n //for debug\n });\n }\n\n clickBackHandler(event) {\n this.section1.classList.remove('confirm');\n this.section2.classList.remove('confirm');\n this.pack.anchorScroll(0);\n }\n\n start() {\n this.setValues();\n TweenMax.delayedCall(0.9, () => {\n this.h1.classList.add('show');\n });\n }\n\n setValues() {\n let items = this.pack.apiJSONList[4].items;\n let html = '';\n\n //昇順ソート\n items.sort((a, b) => {\n if (a.fields.displayOrder < b.fields.displayOrder) return -1;\n if (a.fields.displayOrder > b.fields.displayOrder) return 1;\n return 0;\n });\n\n for (let i = 0, len = items.length; i < len; i++) {\n let item = items[i];\n html += this.getHTML(item.fields);\n }\n\n this.contactsContainer.innerHTML = html;\n\n this.addresses = document.querySelectorAll(\n 'main.contact .section2 .contacts a'\n );\n this.copyToClipboards = document.querySelectorAll(\n 'main.contact .section2 .contacts li .copy'\n );\n this.setEvents();\n }\n\n getHTML(data) {\n let mailAddress = data.mailAddress;\n let title = this.pack.getTitle(data);\n /*\n li.item\n div.tit BUSINESS\n div.address\n a(href=\"mailto:xxxx.business@tier4.jp\") xxxx.business@tier4.jp\n div.copy Copy to clipboard\n */\n\n return `\n
  • \n
    ${title}
    \n
    \n ${mailAddress}\n
    \n
    Copy to clipboard
    \n
  • \n `;\n }\n\n scrollHandler() {}\n\n enterframe() {}\n\n enterframeThinOut() {}\n\n executeResize() {\n super.executeResize();\n }\n}\n","import TemplateContents from './TemplateContents';\nimport JsFileDownloader from 'js-file-downloader';\n\nexport default class extends TemplateContents {\n constructor(param) {\n super(param);\n }\n\n init() {\n super.init();\n\n // this.pack.common.addScrollTarget(this);\n // this.pack.common.addEnterframeTarget(this);\n }\n\n reset() {\n super.reset();\n\n this.setVars();\n // this.pack.common.addScrollTarget(this);\n // this.pack.common.addEnterframeTarget(this);\n }\n\n destruct() {\n super.destruct();\n\n this.confirmBtn.removeEventListener(\n 'click',\n this.bindClickConfirmHandler\n );\n // this.submitBtn.removeEventListener(\n // 'click',\n // this.bindClickSubmitHandler\n // );\n // this.backBtn.removeEventListener('click', this.bindClickBackHandler);\n\n for (let i = 0, len = this.inputRowfields.length; i < len; i++) {\n let item = this.inputRowfields[i];\n item.removeEventListener('focus', this.bindFocusHandler[i]);\n item.removeEventListener('blur', this.bindBlurHandler[i]);\n }\n\n // for (let i = 0, len = this.copyToClipboards.length; i < len; i++) {\n // let item = this.copyToClipboards[i];\n // item.removeEventListener(\n // 'click',\n // this.bincClickCopyToClipboardHandlerList[i]\n // );\n // }\n\n // this.pack.common.removeScrollTarget(this);\n // this.pack.common.removeEnterframeTarget(this);\n }\n\n setVars() {\n super.setVars();\n }\n\n setDom() {\n super.setDom();\n\n // this.contactsContainer = document.querySelector(\n // 'main.product_brochure .section2 .contacts'\n // );\n\n this.h1 = document.querySelector('main.product_brochure h1');\n this.section1 = document.querySelector(\n 'main.product_brochure .section1'\n );\n // this.section2 = document.querySelector(\n // 'main.product_brochure .section2'\n // );\n this.inputList = document.querySelectorAll(\n 'main.product_brochure .section1 .contents_input ul li.item'\n );\n this.inputRowTits = document.querySelectorAll(\n 'main.product_brochure .section1 .contents_input .input_item .tit'\n );\n this.inputRowfields = document.querySelectorAll(\n 'main.product_brochure .section1 .contents_input .input_item input, main.product_brochure .section1 .contents_input .input_item textarea'\n );\n // this.confirmList = document.querySelectorAll(\n // 'main.product_brochure .section1 .contents_confirm ul li.item'\n // );\n // this.confirmListUserData = document.querySelectorAll(\n // 'main.product_brochure .section1 .contents_confirm ul li.item .user_data'\n // );\n this.confirmBtn = document.querySelector(\n 'main.product_brochure .section1 .contents_input .bt'\n );\n // this.submitBtn = document.querySelector(\n // 'main.product_brochure .section1 .contents_confirm .submit_bt'\n // );\n // this.backBtn = document.querySelector(\n // 'main.product_brochure .section1 .contents_confirm .back_bt'\n // );\n }\n\n initEvents() {\n super.initEvents();\n\n this.bindClickConfirmHandler = this.clickConfirmHandler.bind(this);\n this.bindClickSubmitHandler = this.clickSubmitHandler.bind(this);\n // this.bindClickBackHandler = this.clickBackHandler.bind(this);\n this.bindFocusHandler = [];\n this.bindBlurHandler = [];\n\n this.confirmBtn.addEventListener('click', this.bindClickConfirmHandler);\n // this.submitBtn.addEventListener('click', this.bindClickSubmitHandler);\n // this.backBtn.addEventListener('click', this.bindClickBackHandler);\n\n for (let i = 0, len = this.inputRowfields.length; i < len; i++) {\n let item = this.inputRowfields[i];\n this.bindFocusHandler[i] = this.focusHandler;\n this.bindBlurHandler[i] = this.blurHandler;\n item.addEventListener('focus', {\n handleEvent: this.bindFocusHandler[i],\n id: i,\n sc: this,\n });\n item.addEventListener('blur', {\n handleEvent: this.bindBlurHandler[i],\n id: i,\n sc: this,\n });\n }\n }\n\n setEvents() {\n // this.bincClickCopyToClipboardHandlerList = [];\n // for (let i = 0, len = this.copyToClipboards.length; i < len; i++) {\n // let item = this.copyToClipboards[i];\n // this.bincClickCopyToClipboardHandlerList[i] =\n // this.clickCopyToClipboardHandlerList;\n // item.addEventListener('click', {\n // handleEvent: this.bincClickCopyToClipboardHandlerList[i],\n // sc: this,\n // id: i,\n // });\n // }\n }\n\n clickCopyToClipboardHandlerList(event) {\n let sc = this.sc;\n let id = this.id;\n navigator.clipboard.writeText(sc.addresses[id].innerText);\n }\n\n focusHandler(event) {\n let sc = this.sc;\n let id = this.id;\n\n sc.inputRowTits[id].classList.add('small');\n }\n\n blurHandler(event) {\n let sc = this.sc;\n let id = this.id;\n // trace(sc.inputRowfields[id].value);\n if (sc.inputRowfields[id].value === '')\n sc.inputRowTits[id].classList.remove('small');\n }\n\n checkName(v) {\n if (v == '') return false;\n else return true;\n }\n\n checkEmail(v) {\n if (v == '') return false;\n else if (\n !v.match(\n /^([a-zA-Z0-9])+([a-zA-Z0-9\\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\\._-]+)+$/\n )\n )\n return false;\n else return true;\n }\n\n checkMessage(v) {\n if (v == '') return false;\n else return true;\n }\n\n clickConfirmHandler(event) {\n let fname = document.querySelector('input[name=\"fname\"]');\n let lname = document.querySelector('input[name=\"lname\"]');\n let email = document.querySelector('input[name=\"email\"]');\n let company = document.querySelector('input[name=\"company\"]');\n let privacy = document.querySelector('input[name=\"privacy_policy\"]');\n\n let fnameResult = this.checkName(fname.value);\n let lnameResult = this.checkName(lname.value);\n let companyResult = this.checkName(company.value);\n let emailResult = this.checkEmail(email.value);\n let privacyResult = privacy.checked;\n\n let liFName = fname.parentElement.parentElement;\n let liLName = lname.parentElement.parentElement;\n let liEmail = email.parentElement.parentElement;\n let liCompany = company.parentElement.parentElement;\n let liPrivacy = privacy.parentElement.parentElement;\n\n if (fnameResult) liFName.classList.remove('error');\n else liFName.classList.add('error');\n\n if (fnameResult) liLName.classList.remove('error');\n else liLName.classList.add('error');\n\n if (emailResult) liEmail.classList.remove('error');\n else liEmail.classList.add('error');\n\n if (companyResult) liCompany.classList.remove('error');\n else liCompany.classList.add('error');\n\n if (privacyResult) liPrivacy.classList.remove('error');\n else liPrivacy.classList.add('error');\n\n if (\n fnameResult &&\n lnameResult &&\n emailResult &&\n companyResult &&\n privacyResult\n ) {\n this.bindClickSubmitHandler(event);\n }\n }\n\n clickSubmitHandler(event) {\n const formData = new FormData(document.querySelector('#form1'));\n const data = Object.fromEntries(formData.entries());\n delete data.privacy_policy;\n\n fetch(this.pack.CONTACT_API_PATH + '/form/whitepaper', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(data),\n })\n .then((response) => response.json())\n .then((data) => {\n // console.log('Success:', data);\n this.section1.classList.add('thanks');\n // this.section2.classList.add('thanks');\n this.pack.anchorScroll(0);\n\n new JsFileDownloader({\n url: `/assets/img/product-brochure/download_${this.pack.LANG}.pdf`,\n filename: 'product-brochure.pdf',\n });\n })\n .catch((error) => {\n console.error('Error:', error);\n\n //for debug TODO(消す)\n // this.section1.classList.add(\"thanks\");\n // this.section2.classList.add(\"thanks\");\n // this.pack.anchorScroll(0);\n //for debug\n });\n }\n\n clickBackHandler(event) {\n this.section1.classList.remove('confirm');\n // this.section2.classList.remove('confirm');\n this.pack.anchorScroll(0);\n }\n\n start() {\n this.setValues();\n TweenMax.delayedCall(0.9, () => {\n this.h1.classList.add('show');\n });\n }\n\n setValues() {\n // let items = this.pack.apiJSONList[4].items;\n // let html = '';\n\n // //昇順ソート\n // items.sort((a, b) => {\n // if (a.fields.displayOrder < b.fields.displayOrder) return -1;\n // if (a.fields.displayOrder > b.fields.displayOrder) return 1;\n // return 0;\n // });\n\n // for (let i = 0, len = items.length; i < len; i++) {\n // let item = items[i];\n // html += this.getHTML(item.fields);\n // }\n\n // this.contactsContainer.innerHTML = html;\n\n // this.addresses = document.querySelectorAll(\n // 'main.product_brochure .section2 .contacts a'\n // );\n // this.copyToClipboards = document.querySelectorAll(\n // 'main.product_brochure .section2 .contacts li .copy'\n // );\n this.setEvents();\n }\n\n getHTML(data) {\n let mailAddress = data.mailAddress;\n let title = this.pack.getTitle(data);\n /*\n li.item\n div.tit BUSINESS\n div.address\n a(href=\"mailto:xxxx.business@tier4.jp\") xxxx.business@tier4.jp\n div.copy Copy to clipboard\n */\n\n return `\n
  • \n
    ${title}
    \n
    \n ${mailAddress}\n
    \n
    Copy to clipboard
    \n
  • \n `;\n }\n\n scrollHandler() {}\n\n enterframe() {}\n\n enterframeThinOut() {}\n\n executeResize() {\n super.executeResize();\n }\n}\n","import Platform from './Subpage';\nimport Carousel from \"./Carousel\";\n\nexport default class extends Platform{\n constructor(param){\n super(param);\n }\n\n init() {\n super.init();\n\n // this.pack.common.addScrollTarget(this);\n this.pack.common.addEnterframeTarget(this);\n }\n\n reset(){\n super.reset();\n\n this.setVars();\n // this.pack.common.addScrollTarget(this);\n this.pack.common.addEnterframeTarget(this);\n }\n\n destruct(){\n super.destruct();\n\n // this.pack.common.removeScrollTarget(this);\n this.pack.common.removeEnterframeTarget(this);\n }\n\n setVars(){\n super.setVars();\n this.protocol = location.protocol;\n this.section1MediaAPIPathList = [];\n this.section2MediaAPIPathList = [];\n this.section3MediaAPIPathList = [];\n }\n\n setDom(){\n super.setDom();\n\n this.hero = document.querySelector('main.reference_design .hero');\n this.heroScroll = document.querySelector('main.subpage .hero .scroll');\n this.section1SubTit = document.querySelector('main.reference_design .sections .section1 h2 .sub_tit');\n this.section1Tit = document.querySelector('main.reference_design .sections .section1 h2 .tit');\n this.section1TitJa = document.querySelector('main.reference_design .sections .section1 h2 .tit_ja');\n this.section1ChunkContainer = document.querySelector('main.reference_design .sections .section1 .cont .right .chunk_container');\n this.section1Chunks = document.querySelectorAll('main.reference_design .section1 .cont .right .chunk');\n this.section1Imgs = document.querySelectorAll('main.reference_design .section1 .cont .left picture');\n\n this.section2 = document.querySelector('main.reference_design .section2');\n this.section2SubTit = document.querySelector('main.reference_design .sections .section2 h2 .sub_tit');\n this.section2Tit = document.querySelector('main.reference_design .sections .section2 h2 .tit');\n this.section2TitJa = document.querySelector('main.reference_design .sections .section2 h2 .tit_ja');\n this.section2Txt = document.querySelector('main.reference_design .sections .section2 .section_child > p.txt');\n this.section2Txts = document.querySelectorAll('main.reference_design .sections .section2 .cont .chunk .left .txt');\n this.section2Cont = document.querySelector('main.reference_design .sections .section2 .cont');\n this.section2Chunks = document.querySelectorAll('main.reference_design .sections .section2 .cont .chunk');\n this.section2StickyPcImgContainer = document.querySelector('main.reference_design .sections .section2 .sticky_pc_images');\n\n this.section3 = document.querySelector('main.reference_design .section3');\n this.section3SubTit = document.querySelector('main.reference_design .sections .section3 h2 .sub_tit');\n this.section3Tit = document.querySelector('main.reference_design .sections .section3 h2 .tit');\n this.section3TitJa = document.querySelector('main.reference_design .sections .section3 h2 .tit_ja');\n this.section3ChunkContainer = document.querySelector('main.reference_design .sections .section3 .cont');\n this.section3Txt = document.querySelector('main.reference_design .sections .section3 .section_child > p.txt');\n this.section3Cont = document.querySelector('main.reference_design .sections .section3 .cont');\n this.section3Chunks = document.querySelectorAll('main.reference_design .sections .section3 .cont .chunk');\n this.section3StickyPcImgContainer = document.querySelector('main.reference_design .sections .section3 .sticky_pc_images');\n\n this.pack.setSpansDelay('main.reference_design .hero h1 span.item');\n }\n\n initEvents(){\n super.initEvents();\n }\n\n start(){\n super.start();\n\n this.carousel = new Carousel(this.pack);\n this.carousel2 = new Carousel(this.pack);\n\n this.setValues();\n this.sectionH3List = document.querySelectorAll('main.subpage .sections .section1 h3');\n }\n\n setCarousel(){\n this.carousel.setOnlySP();\n this.carousel.setTarget(this.section2);\n this.carousel.setMarginRightSP(true, this.pack.getSPVW(12));\n this.carousel.setAdjustMinXSP(true, 11.116666666666667); //5.25vw + 5.866666666666666vw(22px)\n }\n\n setCarousel2(){\n this.carousel2.setOnlySP();\n this.carousel2.setTarget(this.section3);\n this.carousel2.setMarginRightSP(true, this.pack.getSPVW(12));\n this.carousel2.setAdjustMinXSP(true, 11.116666666666667); //5.25vw + 5.866666666666666vw(22px)\n }\n\n setValues(){\n let items = this.pack.apiJSONList[3].items;\n let data = items[0].fields;\n this.setSection1Head(data);\n this.loadSection1Data(data);\n this.setSection2Head(data);\n this.setSection2(data);\n this.setSection3Head(data);\n this.loadSection3Data(data);\n }\n\n setSection1Head(data){\n //subTit\n let subTit = this.pack.getData(data, 'compositionOfReferenceDesignTitle');\n let subTitArray = subTit.split(\"
    \");\n let subTitSrc = this.getSubTitSrc(subTitArray);\n\n //tit\n let titEn = data['compositionOfReferenceDesignHeadlineEn'];\n let titJa = data['compositionOfReferenceDesignHeadlineJa'];\n let titArray = titEn.split(\"
    \");\n let titSrc = this.getTitSrc(titArray);\n\n this.section1SubTit.innerHTML = subTitSrc;\n this.section1Tit.innerHTML = titSrc;\n if(this.pack.LANG === 'ja') this.section1TitJa.innerHTML = titJa;\n\n this.pack.setSpansDelay('main.reference_design .sections .section1 h2 .tit span');\n }\n\n loadSection1Data(data){\n let articles = data.compositionOfReferenceDesignArtilecs;\n let urlList = [];\n let promiseList = [];\n let details = [];\n\n for( let i = 0, len = articles.length; i < len; i++ ){\n let sysId = articles[i].sys.id;\n let path = this.pack.getContentfulAPIPathWithSysID(sysId);\n urlList.push(path);\n }\n\n urlList.forEach ((url, i) => {\n promiseList.push (\n fetch(url).then ((res) => {\n return res.json();\n }).then( (res) => {\n // trace(i, res);\n details[i] = res;\n })\n );\n });\n\n Promise\n .all(promiseList)\n .then (()=> {\n this.setSection1(details);\n });\n }\n\n setSection1(data){\n let src = '';\n for( let i = 0, len = data.length; i < len; i++ ){\n let item = data[i].items[0].fields;\n src += this.getSection1Chunk(item);\n }\n\n this.section1ChunkContainer.innerHTML = src;\n this.section1Chunks = document.querySelectorAll('main.reference_design .section1 .cont .right .chunk');\n this.loadSection1MediaPathes(this.section1MediaAPIPathList);\n }\n\n getSection1Chunk(data){\n let middleHeadline = this.pack.getData(data, \"middleHeadline\");\n let description = this.pack.getData(data, \"description\");\n this.section1MediaAPIPathList.push(this.pack.getContentfulAPIImgAccessPath(data.image.sys.id));\n\n return `\n
    \n

    ${middleHeadline}

    \n
    ${description}
    \n
    \n \"\"\n
    \n
    \n `;\n }\n\n loadSection1MediaPathes(list){\n let urlList = list;\n let promiseList = [];\n let mediaPathList = [];\n urlList.forEach ((url, i) => {\n promiseList.push (\n fetch(url).then ((res) => {\n return res.json();\n }).then( (res) => {\n // trace(i, res);\n mediaPathList[i] = this.protocol + res.fields.file.url;\n })\n );\n });\n\n Promise\n .all(promiseList)\n .then (()=> {\n this.setSection1Medias(mediaPathList);\n });\n }\n\n setSection1Medias(list){\n for( let i = 0, len = this.section1Chunks.length; i < len; i++ ){\n let item = this.section1Chunks[i];\n let img = item.querySelector('img');\n img.src = list[i];\n }\n }\n\n setSection2Head(data){\n //subTit\n let subTit = this.pack.getData(data, 'classificationOfOdDsTitle');\n let subTitArray = subTit.split(\"
    \");\n let subTitSrc = this.getSubTitSrc(subTitArray);\n\n //tit\n let titEn = data['classificationOfOdDsHeadlineEn'];\n let titJa = data['classificationOfOdDsHeadlineJa'];\n let titArray = titEn.split(\"
    \");\n let titSrc = this.getTitSrc(titArray);\n\n //description\n let description = this.pack.getData(data, 'classificationOfOdDsDescription');\n\n this.section2SubTit.innerHTML = subTitSrc;\n this.section2Tit.innerHTML = titSrc;\n this.section2Txt.innerHTML = description;\n if(this.pack.LANG === 'ja') this.section2TitJa.innerHTML = titJa;\n\n this.pack.setSpansDelay('main.reference_design .sections .section2 h2 .tit span');\n }\n\n setSection2(data){\n for( let i = 0, len = 3; i < len; i++ ){\n let id = i + 1;\n let pathID = data['classificationOfOdDsOdd' + id + 'Image'].sys.id;\n this.section2MediaAPIPathList.push(this.pack.getContentfulAPIImgAccessPath(pathID));\n this.section2Txts[i].innerHTML = this.pack.getData(data, 'classificationOfOdDsOdd' + id + 'Description');\n }\n\n this.loadSection2MediaPathes(this.section2MediaAPIPathList);\n this.setCarousel();\n }\n\n loadSection2MediaPathes(list){\n let urlList = list;\n let promiseList = [];\n let mediaPathList = [];\n urlList.forEach ((url, i) => {\n promiseList.push (\n fetch(url).then ((res) => {\n return res.json();\n }).then( (res) => {\n // trace(i, res);\n mediaPathList[i] = this.protocol + res.fields.file.url;\n })\n );\n });\n\n Promise\n .all(promiseList)\n .then (()=> {\n this.setSection2Medias(mediaPathList);\n });\n }\n\n\n setSection2Medias(list){\n let stickyPCSrc = ``;\n for( let i = 0, len = this.section2Chunks.length; i < len; i++ ){\n let item = this.section2Chunks[i];\n let img = item.querySelector('img');\n let url = list[i];\n img.src = url;\n\n stickyPCSrc += `\"\"`;\n }\n\n this.section2StickyPcImgContainer.innerHTML = stickyPCSrc;\n this.section2StickyPcImages = document.querySelectorAll('main.reference_design .sections .section2 .sticky_pc_images img');\n }\n\n setSection3Head(data){\n //subTit\n let subTit = this.pack.getData(data, 'eachReferenceDesignTitle');\n let subTitArray = subTit.split(\"
    \");\n let subTitSrc = this.getSubTitSrc(subTitArray);\n\n //tit\n // let tit = this.pack.getData(data, 'eachReferenceDesignHeadline');\n let titEn = data['eachReferenceDesignHeadlineEn'];\n let titJa = data['eachReferenceDesignHeadlineJa'];\n let titArray = titEn.split(\"
    \");\n let titSrc = this.getTitSrc(titArray);\n\n //description\n let description = this.pack.getData(data, 'eachReferenceDesignDescription');\n\n this.section3SubTit.innerHTML = subTitSrc;\n this.section3Tit.innerHTML = titSrc;\n this.section3Txt.innerHTML = description;\n if(this.pack.LANG === 'ja') this.section3TitJa.innerHTML = titJa;\n this.pack.setSpansDelay('main.reference_design .sections .section3 h2 .tit span');\n }\n\n loadSection3Data(data){\n let articles = data.eachReferenceDesignArticles;\n let urlList = [];\n let promiseList = [];\n let details = [];\n\n for( let i = 0, len = articles.length; i < len; i++ ){\n let sysId = articles[i].sys.id;\n let path = this.pack.getContentfulAPIPathWithSysID(sysId);\n urlList.push(path);\n }\n\n urlList.forEach ((url, i) => {\n promiseList.push (\n fetch(url).then ((res) => {\n return res.json();\n }).then( (res) => {\n // trace(i, res);\n details[i] = res;\n })\n );\n });\n\n Promise\n .all(promiseList)\n .then (()=> {\n this.setSection3(details);\n });\n }\n\n setSection3(data){\n let src = '';\n for( let i = 0, len = data.length; i < len; i++ ){\n let item = data[i].items[0].fields;\n src += this.getSection3Chunk(item);\n }\n\n this.section3ChunkContainer.innerHTML = src;\n this.section3Chunks = document.querySelectorAll('main.reference_design .sections .section3 .cont .chunk');\n this.loadSection3MediaPathes(this.section3MediaAPIPathList);\n this.setCarousel2();\n }\n\n getSection3Chunk(data){\n let middleHeadline = this.pack.getData(data, 'middleHeadline');\n let description = this.pack.getData(data, 'description');\n let linkLabel = this.pack.getData(data, 'linkLabel');\n let url = data.url;\n this.section3MediaAPIPathList.push(this.pack.getContentfulAPIImgAccessPath(data.image.sys.id));\n\n let btn = '';\n if(url){\n let linkLabelSrc = '';\n for( let i = 0, len = linkLabel.length; i < len; i++ ){\n let value = linkLabel.substr(i, 1);\n if(value === \" \") linkLabelSrc += '';\n else linkLabelSrc += '';\n linkLabelSrc += value;\n linkLabelSrc += '';\n }\n\n btn = `\n
    \n \n ${linkLabelSrc}\n \n
    \n `;\n }\n\n return `\n
    \n
    \n

    ${middleHeadline}

    \n
    ${description}
    \n ${btn}\n
    \n
    \n
    \n \"\"\n
    \n
    \n
    \n `;\n }\n\n loadSection3MediaPathes(list){\n let urlList = list;\n let promiseList = [];\n let mediaPathList = [];\n urlList.forEach ((url, i) => {\n promiseList.push (\n fetch(url).then ((res) => {\n return res.json();\n }).then( (res) => {\n // trace(i, res);\n mediaPathList[i] = this.protocol + res.fields.file.url;\n })\n );\n });\n\n Promise\n .all(promiseList)\n .then (()=> {\n this.setSection3Medias(mediaPathList);\n });\n }\n\n setSection3Medias(list){\n let stickyPCSrc = ``;\n for( let i = 0, len = this.section3Chunks.length; i < len; i++ ){\n let item = this.section3Chunks[i];\n let img = item.querySelector('img');\n let url = list[i];\n img.src = url;\n\n stickyPCSrc += `\"\"`;\n }\n\n this.section3StickyPcImgContainer.innerHTML = stickyPCSrc;\n this.section3StickyPcImages = document.querySelectorAll('main.reference_design .sections .section3 .sticky_pc_images img');\n }\n\n getSubTitSrc(subTitArray){\n let subTitSrc = '';\n for( let h = 0; h < subTitArray.length; h++ ){\n let subTit = subTitArray[h];\n subTitSrc += '';\n for( let i = 0, len = subTit.length; i < len; i++ ){\n let value = subTit.substr(i, 1);\n if(value === \" \") subTitSrc += '';\n else subTitSrc += '';\n subTitSrc += value;\n subTitSrc += '';\n }\n subTitSrc += '';\n }\n\n return subTitSrc;\n }\n\n getTitSrc(titArray){\n let titSrc = '';\n for( let h = 0; h < titArray.length; h++ ){\n let tit = titArray[h];\n if(h === 0) titSrc += '';\n else titSrc += '';\n for( let i = 0, len = tit.length; i < len; i++ ){\n let value = tit.substr(i, 1);\n if(value === \" \") titSrc += '';\n else titSrc += '';\n titSrc += value;\n titSrc += '';\n }\n titSrc += '';\n }\n\n return titSrc;\n }\n\n checkSection1(){\n let current = -1;\n for( let i = 0, len = this.section1Chunks.length; i < len; i++ ){\n let item = this.section1Chunks[i];\n if(item.getBoundingClientRect().top < this.sh - 200){\n current = i;\n }\n }\n\n if(current < 0) return;\n this.resizeHandler();\n\n for( let i = 0, len = this.section1Imgs.length; i < len; i++ ){\n let item = this.section1Imgs[i];\n let chunk = this.section1Imgs[i];\n item.classList.remove(\"show\");\n chunk.classList.remove(\"clearify\");\n }\n\n this.section1Imgs[current].classList.add(\"show\");\n this.section1Chunks[current].classList.add(\"clearify\");\n }\n\n scrollHandler(){\n super.scrollHandler();\n this.checkSection1();\n }\n\n\n enterframe(){\n\n }\n\n enterframeThinOut(){\n this.updateSection(2);\n this.updateSection(3);\n }\n\n updateSection(id){\n let cont = this['section' + id + 'Cont'];\n let imgs = this['section' + id + 'StickyPcImages'];\n let contY = cont.getBoundingClientRect().top - this.sw * .3; //this.sw * .3でタイミング遅延の調整\n let contPer = 0;\n let checkPointY = this[\"section\" + id + \"StickyPcImgContainerY\"];\n\n if(contY <= checkPointY){\n let h = cont.clientHeight;\n contPer = (checkPointY - contY) / h;\n\n if(contPer > 1) contPer = 1;\n let len = imgs.length;\n contPer *= len;\n\n for( let i = 0; i < len; i++ ){\n let img = imgs[i];\n let startPer = i;\n let per = contPer - startPer;\n\n if(per < 0 ) per = 0;\n else per *= 1.5;\n\n if(i === 0 && per < 1) per = 1;\n img.style.transform = 'scale(' + per + ')';\n }\n }\n }\n\n executeResize() {\n super.executeResize();\n\n this.hero.style.height = (this.sw >= this.pack.BP) ? this.sh * .87 + 'px' : this.sh + 'px';\n this.heroScroll.style.top = this.sh + 'px';\n this.section2StickyPcImgContainerY = this.shh - this.section2StickyPcImgContainer.clientHeight / 2;\n this.section3StickyPcImgContainerY = this.shh - this.section3StickyPcImgContainer.clientHeight / 2;\n\n this.section2StickyPcImgContainer.style.top = this.section2StickyPcImgContainerY + 'px';\n this.section3StickyPcImgContainer.style.top = this.section3StickyPcImgContainerY + 'px';\n }\n}\n","import Platform from './Subpage';\n// let MarkdownIt = require('markdown-it');\n\nexport default class extends Platform {\n constructor(param) {\n super(param);\n }\n\n init() {\n super.init();\n\n this.pack.common.addScrollTarget(this);\n // this.pack.common.addEnterframeTarget(this);\n }\n\n reset() {\n super.reset();\n\n this.setVars();\n this.pack.common.addScrollTarget(this);\n // this.pack.common.addEnterframeTarget(this);\n }\n\n destruct() {\n super.destruct();\n\n this.pack.common.removeScrollTarget(this);\n // this.pack.common.removeEnterframeTarget(this);\n }\n\n setVars() {\n super.setVars();\n this.protocol = location.protocol;\n }\n\n setDom() {\n super.setDom();\n\n this.sections = document.querySelector('main.services .sections');\n this.localNav = document.querySelector(\n 'main.services .sections_for_local_nav .local_nav > ul > li > ul'\n );\n\n this.movie = document.querySelector('main.services .movie');\n this.movieChild = document.querySelector(\n 'main.services .movie .movie_child'\n );\n\n this.pack.setSpansDelay('main.services .hero h1 span.item');\n }\n\n initEvents() {\n super.initEvents();\n }\n\n start() {\n super.start();\n\n this.setValues();\n this.setLocalNav();\n this.setSections();\n this.setMedias();\n\n this.sectionH3List = document.querySelectorAll(\n 'main.subpage .sections .section h3'\n );\n }\n\n setValues() {\n let items = this.pack.apiJSONList[2].items;\n this.sectionChildLen = items.length;\n\n for (let i = 0, len = this.sectionChildLen; i < len; i++) {\n let item = items[i].fields;\n let mediaAPIPathList = [];\n let displayOrder = item.displayOrder;\n let subTit = this.pack.getData(item, 'areaTitle');\n let titEn = item['bigHeadlineEn'];\n let titJa = item['bigHeadlineJa'];\n\n let middleHeadline = this.pack.getData(item, 'middleHeadline');\n let description = this.pack.getData(item, 'description');\n let linkLabel = this.pack.getData(item, 'linkLabel');\n let url = item.url;\n mediaAPIPathList[0] = this.pack.getContentfulAPIImgAccessPath(\n item.image.sys.id\n );\n mediaAPIPathList[1] = this.pack.getContentfulAPIImgAccessPath(\n item.focusImage.sys.id\n );\n\n let data = {\n displayOrder: displayOrder,\n subTit: subTit,\n titEn: titEn,\n titJa: titJa,\n middleHeadline: middleHeadline,\n description: description,\n linkLabel: linkLabel,\n url: url,\n mediaAPIPathList: mediaAPIPathList,\n };\n\n this.contentsData.push(data);\n }\n\n this.contentsData.sort((a, b) => a.displayOrder - b.displayOrder);\n }\n\n setLocalNav() {\n let src = '';\n for (let i = 0, len = this.contentsData.length; i < len; i++) {\n let item = this.contentsData[i];\n src += this.getLocalNav(item, i);\n }\n\n this.localNav.innerHTML = src;\n this.localMenuList = document.querySelectorAll(\n 'main.services .sections_for_local_nav .local_nav > ul > li > ul > li'\n );\n this.localMenuList[0].classList.add('current');\n\n for (let i = 0, len = this.localMenuList.length; i < len; i++) {\n let item = this.localMenuList[i];\n item.addEventListener('click', {\n handleEvent: this.clickLocalMenuHandler,\n id: i,\n sc: this,\n });\n }\n }\n\n getLocalNav(data, id) {\n let subTit = data.subTit.replace(/
    /g, ''); //全ての
    を''に置き換える\n let subTitSrc = '';\n\n for (let i = 0, len = subTit.length; i < len; i++) {\n let value = subTit.substr(i, 1);\n if (value === ' ') subTitSrc += '';\n else subTitSrc += '';\n subTitSrc += value;\n subTitSrc += '';\n }\n\n return `\n
  • ${subTitSrc}
  • \n `;\n }\n\n setSections() {\n let src = '';\n for (let i = 0, len = this.contentsData.length; i < len; i++) {\n let item = this.contentsData[i];\n src += this.getSection(item, i);\n }\n this.sections.innerHTML = src + this.sections.innerHTML;\n this.sectionList = document.querySelectorAll(\n 'main.services .sections .section'\n );\n this.sectionH2List = document.querySelectorAll(\n 'main.services .sections .section h2'\n );\n\n this.pack.setSpansDelay(\n 'main.services .sections .section h2 .tit span'\n );\n }\n\n getSection(data, id) {\n let section1ClassName = 'section' + (id + 1);\n let patern = (id % 2) + 1;\n let subTit = data.subTit;\n let subTitArray = subTit.split('
    ');\n let subTitSrc = '';\n\n let titJa = data.titJa;\n let titEn = data.titEn;\n let titArray = titEn.split('
    ');\n let titSrc = '';\n\n let middleHeadline = data.middleHeadline;\n let middleHeadlineSrc = '';\n for (let i = 0, len = middleHeadline.length; i < len; i++) {\n middleHeadlineSrc += '' + middleHeadline[i] + '';\n }\n\n let description = data.description;\n let linkLabel = data.linkLabel;\n let url = data.url;\n\n //subTit\n for (let h = 0; h < subTitArray.length; h++) {\n let subTit = subTitArray[h];\n subTitSrc += '';\n for (let i = 0, len = subTit.length; i < len; i++) {\n let value = subTit.substr(i, 1);\n if (value === ' ') subTitSrc += '';\n else subTitSrc += '';\n subTitSrc += value;\n subTitSrc += '';\n }\n subTitSrc += '';\n }\n\n //tit\n for (let h = 0; h < titArray.length; h++) {\n let tit = titArray[h];\n if (h === 0) titSrc += '';\n else titSrc += '';\n for (let i = 0, len = tit.length; i < len; i++) {\n let value = tit.substr(i, 1);\n if (value === ' ') titSrc += '';\n else titSrc += '';\n titSrc += value;\n titSrc += '';\n }\n titSrc += '';\n }\n\n let btn = '';\n if (url) {\n let linkLabelSrc = '';\n for (let i = 0, len = linkLabel.length; i < len; i++) {\n let value = linkLabel.substr(i, 1);\n if (value === ' ') linkLabelSrc += '';\n else linkLabelSrc += '';\n linkLabelSrc += value;\n linkLabelSrc += '';\n }\n\n btn = `\n \n `;\n }\n\n let japaneseTit = '';\n\n if (this.pack.LANG === 'ja') {\n japaneseTit = `\n ${titJa}\n `;\n }\n\n let addTxtClass = '';\n if (this.pack.LANG === 'ja') addTxtClass = ' font2';\n\n return `\n
    \n
    \n

    \n \n ${subTitSrc}\n \n \n ${titSrc}\n \n ${japaneseTit}\n

    \n
    \n
    \n

    ${middleHeadlineSrc}

    \n

    ${description}

    \n ${btn}\n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n `;\n }\n\n setMedias() {\n for (let i = 0, len = this.contentsData.length; i < len; i++) {\n let item = this.contentsData[i];\n let mediaAPIPathList = item.mediaAPIPathList;\n this.loadMediaPathes(mediaAPIPathList, i);\n }\n }\n\n loadMediaPathes(list, id) {\n let urlList = list;\n let promiseList = [];\n let mediaPathList = [];\n urlList.forEach((url, i) => {\n promiseList.push(\n fetch(url)\n .then((res) => {\n return res.json();\n })\n .then((res) => {\n // trace(id, res);\n mediaPathList[i] = this.protocol + res.fields.file.url;\n })\n );\n });\n\n Promise.all(promiseList).then(() => {\n this.setSectionMedias(id, mediaPathList);\n });\n }\n\n setSectionMedias(id, mediaPathList) {\n let section = this.sectionList[id];\n let img1 = section.querySelector('.img1 img');\n let img2 = section.querySelector('.img2 img');\n\n img1.src = mediaPathList[0];\n img2.src = mediaPathList[1];\n }\n\n scrollHandler() {\n super.scrollHandler();\n this.checkMovie();\n }\n\n checkMovie() {\n let height = 500;\n\n let ratio = Math.min(this.pack.pageYOffset / height, 1);\n let invRatio = 1 - Math.min(this.pack.pageYOffset / height, 1);\n let borderRadius, width;\n if (this.sw >= this.pack.BP) {\n borderRadius = 2.2222222222 * invRatio;\n width = 89 + 11 * ratio;\n } else {\n borderRadius = 4.2666666667 * invRatio;\n width = 89 + 11 * ratio;\n }\n\n this.movieChild.style.borderRadius = borderRadius + 'rem';\n this.movieChild.style.width = width + 'vw';\n }\n\n enterframe() {}\n\n enterframeThinOut() {}\n\n executeResize() {\n super.executeResize();\n }\n}\n","import TemplateContents from './TemplateContents';\n\nexport default class extends TemplateContents{\n constructor(param){\n super(param);\n }\n\n init() {\n super.init();\n\n this.pack.common.addScrollTarget(this);\n // this.pack.common.addEnterframeTarget(this);\n this.pack.common.addEvery90framesTarget(this);\n }\n\n reset(){\n super.reset();\n\n this.setVars();\n this.pack.common.addScrollTarget(this);\n // this.pack.common.addEnterframeTarget(this);\n this.pack.common.addEvery90framesTarget(this);\n }\n\n destruct(){\n super.destruct();\n\n for( let i = 0, len = this.uiList.length; i < len; i++ ){\n let ui = this.uiList[i];\n let next = ui.next;\n let prev = ui.prev;\n let btns = ui.btns;\n next.removeEventListener(\"click\", this.clickNextHandler);\n prev.removeEventListener(\"click\", this.clickPrevHandler);\n\n for( let j = 0; j < btns.length; j++ ){\n let btn = btns[j];\n btn.removeEventListener(\"click\", this.clickBtnHandler);\n btn.removeEventListener(\"mouseover\", this.mouseOverBtnHandler);\n btn.removeEventListener(\"mouseout\", this.mouseOutBtnHandler);\n }\n }\n\n for( let i = 0, len = this.localMenuList.length; i < len; i++ ){\n let item = this.localMenuList[i];\n item.removeEventListener(\"click\", this.clickLocalMenuHandler);\n }\n\n this.pack.common.removeScrollTarget(this);\n // this.pack.common.removeEnterframeTarget(this);\n this.pack.common.removeEvery90framesTarget(this);\n }\n\n setVars(){\n super.setVars();\n\n this.currentSection = 0;\n\n this.uiList = [];\n this.contentsList = [];\n this.currentList = [];\n\n this.sectionChildLen;\n this.addedSectionChildCnt = 0;\n\n this.contentsData = [];\n }\n\n setDom(){\n super.setDom();\n\n this.h1 = document.querySelector('main.subpage h1');\n this.sections = document.querySelector('main.subpage .sections');\n this.sectionsForLocalNav = document.querySelector('main.subpage .sections_for_local_nav');\n\n this.sectionList = document.querySelectorAll('main.subpage .sections .section');\n this.sectionH2List = document.querySelectorAll('main.subpage .sections .section h2');\n this.localMenuList = document.querySelectorAll('main.subpage .sections_for_local_nav .local_nav > ul > li > ul > li');\n }\n\n initEvents(){\n super.initEvents();\n }\n\n setContentsAndEvents(){\n this.childSections = document.querySelectorAll('.child_section');\n\n for( let i = 0, len = this.childSections.length; i < len; i++ ){\n let section = this.childSections[i];\n let obj = {};\n\n obj.next = section.querySelector(\".next\");\n obj.prev = section.querySelector(\".prev\");\n obj.btnParents = section.querySelectorAll(\".item\");\n obj.btns = section.querySelectorAll(\".item span\");\n obj.numerator = section.querySelector(\".current .numerator\");\n let contents = {};\n contents.media = section.querySelectorAll(\".imgs img, .imgs video\");\n contents.text = section.querySelectorAll(\".items .item\");\n\n this.contentsList.push(contents);\n this.currentList.push(0);\n if(obj.next) this.uiList.push(obj);\n }\n\n for( let i = 0, len = this.uiList.length; i < len; i++ ){\n let ui = this.uiList[i];\n let next = ui.next;\n let prev = ui.prev;\n let btns = ui.btns;\n next.addEventListener(\"click\", {handleEvent:this.clickNextHandler, id:i, sc:this});\n prev.addEventListener(\"click\", {handleEvent:this.clickPrevHandler, id:i, sc:this});\n\n for( let j = 0; j < btns.length; j++ ){\n let btn = btns[j];\n btn.addEventListener(\"click\", {handleEvent:this.clickBtnHandler, id:i, id2:j, sc:this});\n btn.addEventListener(\"mouseover\", {handleEvent:this.mouseOverBtnHandler, id:i, id2:j, sc:this});\n btn.addEventListener(\"mouseout\", {handleEvent:this.mouseOutBtnHandler, id:i, id2:j, sc:this});\n }\n }\n }\n\n clickLocalMenuHandler(event){\n let sc = this.sc;\n let id = this.id;\n\n sc.pack.anchorScroll(window.pageYOffset + sc.sectionList[id].getBoundingClientRect().top - 200);\n }\n\n\n clickPrevHandler(event){\n let sc = this.sc;\n let id = this.id;\n\n let media = sc.contentsList[id].media;\n let text = sc.contentsList[id].text;\n let current = sc.currentList[id];\n let firstMedia = media[0];\n let firstText = text[0];\n\n if(current === 0) return;\n current--;\n sc.currentList[id] = current;\n sc.slide(firstMedia, firstText, -100 * current +\"%\");\n sc.setCurrent(id, current);\n }\n\n clickNextHandler(event){\n let sc = this.sc;\n let id = this.id;\n\n let media = sc.contentsList[id].media;\n let text = sc.contentsList[id].text;\n let current = sc.currentList[id];\n let len = media.length;\n let firstMedia = media[0];\n let firstText = text[0];\n\n if(current === len - 1) return;\n current++;\n sc.currentList[id] = current;\n sc.slide(firstMedia, firstText, -100 * current +\"%\");\n sc.setCurrent(id, current);\n }\n\n clickBtnHandler(event){\n let sc = this.sc;\n let id = this.id;\n let id2 = this.id2;\n\n let media = sc.contentsList[id].media;\n let text = sc.contentsList[id].text;\n\n let current = sc.currentList[id];\n let firstMedia = media[0];\n let firstText = text[0];\n\n current = id2;\n sc.currentList[id] = current;\n sc.slide(firstMedia, firstText, -100 * current +\"%\");\n sc.setCurrent(id, current);\n }\n\n mouseOverBtnHandler(event){\n let sc = this.sc;\n let id = this.id;\n let id2 = this.id2;\n let item = sc.uiList[id];\n let btns = item.btnParents;\n btns[id2].classList.add(\"hover\");\n }\n\n mouseOutBtnHandler(event){\n let sc = this.sc;\n let id = this.id;\n let id2 = this.id2;\n let item = sc.uiList[id];\n let btns = item.btnParents;\n btns[id2].classList.remove(\"hover\");\n }\n\n slide(targetMedia, targetText, position){\n TweenMax.killTweensOf([targetMedia, targetText]);\n TweenMax.to([targetMedia, targetText], .7, {marginLeft:position, ease:Quart.easeInOut});\n }\n\n setCurrent(id, current){\n let item = this.uiList[id];\n let btns = item.btnParents;\n let numerator = item.numerator;\n\n numerator.innerText = this.pack.addZero(String(current + 1));\n\n for( let i = 0, len = btns.length; i < len; i++ ){\n btns[i].classList.remove(\"current_mark\");\n }\n\n btns[current].classList.add(\"current_mark\");\n }\n\n start(){\n TweenMax.delayedCall(.9, ()=>{\n this.h1.classList.add('show');\n });\n }\n\n checkCurrentSection(){\n let current = 0;\n for( let i = 0, len = this.sectionList.length; i < len; i++ ){\n let section = this.sectionList[i];\n let top = section.getBoundingClientRect().top;\n if(top < this.sh) current = i;\n }\n\n // trace(current, this.currentSection);\n\n if(current != this.currentSection){\n this.currentSection = current;\n this.changeCurrentSection();\n }\n }\n\n checkH2Position(){\n let current = -1;\n for( let i = 0, len = this.sectionH2List.length; i < len; i++ ){\n let h2 = this.sectionH2List[i];\n let top = h2.getBoundingClientRect().top;\n if(top < this.sh - 200) current = i;\n }\n\n if(current < 0) return;\n\n if(!this.sectionList[current].classList.contains(\"show\")){\n this.sectionList[current].classList.add(\"show\");\n }\n }\n\n checkH3Position(){\n let current = -1;\n\n for( let i = 0, len = this.sectionH3List.length; i < len; i++ ){\n let h3 = this.sectionH3List[i];\n let top = h3.getBoundingClientRect().top;\n if(top < this.sh - 100) current = i;\n }\n\n if(current < 0) return;\n\n if(!this.sectionH3List[current].classList.contains(\"show\")){\n this.sectionH3List[current].classList.add(\"show\");\n }\n }\n\n changeCurrentSection(){\n let len = this.localMenuList.length;\n if(len === 0) return;\n\n for( let i = 0; i < len; i++ ){\n let menu = this.localMenuList[i];\n menu.classList.remove(\"current\");\n }\n\n this.localMenuList[this.currentSection].classList.add(\"current\");\n }\n\n\n setSection(id) {\n let items = this[\"contents\" + id + \"List\"];\n // let container = this[\"section\" + id + \"Container\"];\n // let mediaList = this[\"contents\" + id + \"MediaAPIPathList\"];\n // let domList = this[\"contents\" + id + \"DomList\"];\n\n for( let i = 0, len = items.length; i < len; i++ ){\n let item = items[i];\n let list = mediaList[i] = [];\n let dom = this.getChildSection(item, list);\n domList.push(dom);\n container.appendChild(dom);\n this.getMedias(list, id, i);\n }\n }\n\n getChildSection(data, mediaList){\n let tit = data.tit;\n let description = data.description;\n\n let childSection = document.createElement(\"section\");\n childSection.classList.add(\"child_section\");\n\n //VECTOR MAP BUILDER用アンカーリンク付与\n if(tit === \"VECTOR MAP BUILDER\") {\n childSection.setAttribute(\"id\", \"vector_map_builder\");\n }else if(tit === \"SCENARIO EDITOR\") {\n childSection.setAttribute(\"id\", \"scenario_editor\");\n }\n\n let titSrc = '';\n for( let i = 0, len = tit.length; i < len; i++ ){\n titSrc += '' + tit[i] + '';\n }\n\n let mediaIDList = data.mediaIDList;\n let detailLen = mediaIDList.length;\n let detailLenString = this.pack.addZero(String(detailLen));\n let details = [];\n\n for( let i = 0, len = mediaIDList.length; i < len; i++ ){\n let id = mediaIDList[i];\n this.detailList.filter((value)=>{\n if(id === value.relatedID) {\n details.push(value);\n mediaList.push(this.pack.getContentfulAPIImgAccessPath(value.mediaSysID));\n }\n });\n }\n\n let className = \"\";\n if(details.length > 1) className = \" patern\" + detailLen;\n let barSrc = `
    `;\n let contentsSrc = \"\";\n\n for( let i = 0, len = detailLen; i < len; i++ ){\n let detail = details[i];\n let className = \"\";\n let title = detail.title;\n let description = detail.description;\n if(i === 0) className = \" current_mark\";\n barSrc += ` \n
    \n \n
    \n `;\n\n contentsSrc += `\n
    \n
    ${title}
    \n
    ${description}
    \n
    \n `;\n }\n barSrc += `
    `;\n\n let src = ` \n
    \n

    ${titSrc}

    \n

    ${description}

    \n
    \n
    \n\n
    \n
    \n \n ${barSrc}\n \n
    \n
    01
    \n
    ${detailLenString}
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n ${contentsSrc}\n
    \n \n `;\n\n childSection.innerHTML = src;\n return childSection;\n }\n\n getMedias(list, id1, id2) {\n let urlList = list;\n let promiseList = [];\n this[\"contents\" + id1 + \"MediaPathList\"][id2] = [];\n urlList.forEach ((url, i) => {\n promiseList.push (\n fetch(url).then ((res) => {\n return res.json();\n }).then( (res) => {\n this[\"contents\" + id1 + \"MediaPathList\"][id2][i] = res;\n })\n );\n });\n\n Promise\n .all(promiseList)\n .then (()=> {\n // trace(\"Media path loaded\", this[\"contents\" + id1 + \"MediaPathList\"][id2]);\n this.setMedias(id1, id2);\n });\n }\n\n setMedias(id1, id2){\n let dom = this[\"contents\" + id1 + \"DomList\"][id2];\n let data = this[\"contents\" + id1 + \"MediaPathList\"][id2];\n let protocol = location.protocol;\n let mediaContainer = dom.querySelector(\".imgs\");\n let html = ``;\n\n for( let i = 0, len = data.length; i < len; i++ ){\n let url = protocol + data[i].fields.file.url;\n if(url.indexOf(\".mp4\") >= 0) html += ``;\n else html += `\"\"`;\n }\n\n mediaContainer.innerHTML = html;\n\n this.addedSectionChildCnt++;\n if(this.addedSectionChildCnt === this.sectionChildLen) this.setContentsAndEvents();\n\n // trace(this.sectionChildLen, this.addedSectionChildCnt, id1, id2);\n }\n\n scrollHandler(){\n this.checkCurrentSection();\n this.checkH2Position();\n this.checkH3Position();\n }\n\n\n enterframe(){\n\n }\n\n enterframeThinOut(){\n\n }\n\n enterEvery90Frames(){\n this.executeResize();\n }\n\n executeResize() {\n super.executeResize();\n if(this.sectionsForLocalNav) this.sectionsForLocalNav.style.height = this.sections.clientHeight - this.sh + \"px\";\n }\n}\n","export default class {\n\n constructor(param){\n this._events = {};\n }\n\n /**\n * イベントが登録されているか調べます\n * @param {string} eventName // イベント名\n */\n\n hasEventListener(eventName){\n return !!this._events[eventName];\n }\n\n /**\n * イベントを登録します\n * @param {string} eventName // イベント名\n * @param {function} callback // 追加する関数\n */\n addEventListener(eventName, callback){\n if (this.hasEventListener(eventName)) {\n var events = this._events[eventName],\n length = events.length,\n i = 0;\n for (; i < length; i++) {\n if (events[i] === callback) {\n return;\n }\n }\n\n events.push(callback);\n }else{\n this._events[eventName] = [callback];\n }\n }\n\n\n /**\n * イベントを削除します\n * @param {string} eventName // イベント名\n * @param {function} callback // 削除する関数\n */\n removeEventListener(eventName, callback){\n if (!this.hasEventListener(eventName)) {\n return;\n } else {\n var events = this._events[eventName],\n i = events.length,\n index;\n\n while (i--) {\n if (events[i] === callback) {\n index = i;\n }\n }\n\n events.splice(index, 1);\n }\n }\n\n\n /**\n * イベントを発火します\n * @param {string} eventName // イベント名\n * @param {object} opt_this // thisの値\n * @param opt_arg // 引数\n */\n dispatchEvent(eventName, opt_this, opt_arg) {\n if (!this.hasEventListener(eventName)) {\n return;\n } else {\n var events = this._events[eventName],\n copyEvents = _copyArray(events),\n arg = _copyArray(arguments),\n length = events.length,\n i = 0;\n\n // eventNameとopt_thisを削除\n arg.splice(0, 2);\n\n for (; i < length; i++) {\n copyEvents[i].apply(opt_this || this, arg);\n }\n }\n\n function _copyArray(array) {\n var newArray = [],\n i = 0;\n\n try {\n newArray = [].slice.call(array);\n } catch(e) {\n for (; i < array.length; i++) {\n newArray.push(array[i]);\n }\n }\n\n return newArray;\n }\n };\n}","import EventDispatcher from './libs/daijima/EventDispatcher';\n\nexport default class TemplateContents extends EventDispatcher {\n constructor(param){\n super();\n\n if(param) this.pack = param;\n this.init();\n }\n\n init(skipInitEvents){\n\n this.sw, this.sh;\n this.enterframeID;\n\n this.setVars();\n this.setDom();\n this.bindResizeHandler = this.resizeHandler.bind(this);\n this.hasTouch = (\"ontouchstart\" in window);\n this.resizeEvent = this.hasTouch ? 'orientationchange' : 'resize';\n\n if(skipInitEvents) return;\n this.initEvents();\n }\n\n reset(){\n this.cnt = 0;\n\n this.setDom();\n this.initEvents();\n }\n\n destruct(){\n window.cancelAnimationFrame(this.enterframeID);\n window.removeEventListener(this.resizeEvent, this.bindResizeHandler);\n }\n\n setVars(){\n\n }\n\n setDom(){\n\n }\n\n initEvents(){\n window.addEventListener(this.resizeEvent, this.bindResizeHandler);\n\n if(!this.hasTouch){\n\n }\n\n this.resizeHandler();\n }\n\n\n start(){\n\n }\n\n resizeHandler(event){\n let sc = this;\n\n if(event !== undefined && event.type === \"orientationchange\"){\n setTimeout(function(){\n sc.executeResize();\n }, 100);\n }else{\n this.executeResize();\n }\n }\n\n executeResize(){\n this.sw = window.innerWidth;\n this.sh = window.innerHeight;\n this.swh = this.sw / 2;\n this.shh = this.sh / 2;\n\n }\n}","import TemplateContents from './TemplateContents';\nimport Carousel from './Carousel';\n\nexport default class extends TemplateContents {\n constructor(param) {\n super(param);\n }\n\n init() {\n super.init(true);\n this.resizeEvent = 'resize';\n\n this.initEvents();\n\n this.pack.common.addScrollTarget(this);\n this.pack.common.addEnterframeTarget(this);\n }\n\n setCarousel() {\n this.carousel.setTarget(this.section5);\n this.carousel.setMarginRightPC(true, 2.7777777777);\n this.carousel.setMarginRightSP(true, 5.3333333333);\n this.carousel.setAdjustMinXPC(true, this.pack.getPCVW(200)); //カルーセルの絶対値のX軸を設定\n this.carousel.setAdjustMinXSP(true, 5.25); //カルーセルの絶対値のX軸を設定\n }\n\n reset() {\n super.reset();\n this.setVars();\n // this.setCarousel();\n this.pack.hero.reset();\n\n this.pack.common.addScrollTarget(this);\n this.pack.common.addEnterframeTarget(this);\n }\n\n destruct() {\n super.destruct();\n this.lockScroll = false;\n this.enabledScroll = false;\n\n document.removeEventListener(\n this.mousewheelEvent,\n this.bindWheelHandler\n );\n document.removeEventListener('touchstart', this.bindTouchStartHandler);\n document.removeEventListener('touchmove', this.bindTouchMoveHandler);\n document.removeEventListener('touchend', this.bindTouchEndHandler);\n\n this.pack.hero.removeEventListener(\n 'openingEnded',\n this.bindOpeningEndedHeroHandler\n );\n this.pack.hero.removeEventListener(\n 'changedScene',\n this.bindChangedHeroHandler\n );\n\n this.heroSkip.removeEventListener(\n 'click',\n this.bindClickHeroSkipHandler\n );\n\n document.removeEventListener('mousemove', this.bindMouseMoveHandler);\n\n this.localNavLeftBt.removeEventListener(\n 'click',\n this.bindClickLocalNavLeftBtHandler\n );\n this.localNavRightBt.removeEventListener(\n 'click',\n this.bindClickLocalNavRightBtHandler\n );\n\n // this.carousel.destruct();\n\n this.pack.header.showHeader();\n\n this.pack.common.removeScrollTarget(this);\n this.pack.common.removeEnterframeTarget(this);\n }\n\n destructAfterContentsOut() {\n this.pack.hero.removeHero(this.heroCanvasContainer);\n this.pack.hero.destruct();\n }\n\n setVars() {\n super.setVars();\n\n this.loadedContentful = false;\n this.lockScroll = true; //スクロールを無効にするかどうか\n this.enabledScroll = false;\n this.currentHero = 1;\n this.pastHero = this.currentHero;\n this.HERO_SCENE_LEN = 9;\n\n this.currentSection = -1;\n\n this.touchStartPoint = 0;\n\n this.ourTeamList = [];\n this.ourTeamImgAccessAPIPathList = [];\n\n this.ourPartnerList = [];\n this.ourPartnerImgAccessAPIPathList = [];\n\n this.isWaitingBackHeroScene8 = false;\n\n this.mouseX = 0;\n this.mouseY = 0;\n this.onHeroContents6UL = false;\n this.onHeroContents7UL = false;\n this.heroContents6Current = 1;\n this.heroContents7Current = 1;\n\n this.prevWheelTime = Date.now();\n this.prevWheelDelta = 0;\n }\n\n setDom() {\n super.setDom();\n\n this.heroCanvasContainer = document.querySelector(\n 'main.top .hero .canvasContainer'\n );\n this.heroContents = document.querySelectorAll('.hero .common_contents');\n this.heroScroll = document.querySelector('main.top .hero .scroll');\n this.heroCreateAccount = document.querySelector(\n 'main.top .hero .create_account'\n );\n this.heroSkip = document.querySelector('main.top .hero .skip');\n\n this.heroCont3H3 = document.querySelector(\n 'main.top .hero .contents .contents3 h3'\n );\n this.heroCont4H3 = document.querySelector(\n 'main.top .hero .contents .contents4 h3'\n );\n this.heroCont5H3 = document.querySelector(\n 'main.top .hero .contents .contents5 h3'\n );\n this.heroCont6H3 = document.querySelector(\n 'main.top .hero .contents .contents6 h3'\n );\n this.heroCont7H3 = document.querySelector(\n 'main.top .hero .contents .contents7 h3'\n );\n this.heroCont8H3 = document.querySelector(\n 'main.top .hero .contents .contents8 h3'\n );\n\n this.heroCont3Txt = document.querySelector(\n 'main.top .hero .contents .contents3 .txt'\n );\n this.heroCont4Txt = document.querySelector(\n 'main.top .hero .contents .contents4 .txt'\n );\n this.heroCont5Txt = document.querySelector(\n 'main.top .hero .contents .contents5 .txt'\n );\n this.heroCont6Txt = document.querySelector(\n 'main.top .hero .contents .contents6 .txt'\n );\n this.heroCont6UL = document.querySelector(\n 'main.top .hero .contents .contents6 ul'\n );\n this.heroCont7UL = document.querySelector(\n 'main.top .hero .contents .contents7 ul'\n );\n this.heroCont8Txt = document.querySelector(\n 'main.top .hero .contents .contents8 .txt'\n );\n this.heroCont8Chunk = document.querySelector(\n 'main.top .hero .contents .contents8 .chunk'\n );\n\n this.heroCont3Btn = document.querySelector(\n 'main.top .hero .contents .contents3 .btn'\n );\n this.heroCont4Btn = document.querySelector(\n 'main.top .hero .contents .contents4 .btn'\n );\n this.heroCont5Btn = document.querySelector(\n 'main.top .hero .contents .contents5 .btn'\n );\n this.heroCont6Btn = document.querySelector(\n 'main.top .hero .contents .contents6 .btn'\n );\n this.heroCont7Btn = document.querySelector(\n 'main.top .hero .contents .contents7 .btn'\n );\n this.heroCont8Btn = document.querySelector(\n 'main.top .hero .contents .contents8 .btn'\n );\n // this.heroCont9Btn = document.querySelector('main.top .hero .contents .contents9 .btn');\n\n this.heroContents6UL = document.querySelector(\n 'main.top .hero .contents .contents6 ul'\n );\n this.heroContents7UL = document.querySelector(\n 'main.top .hero .contents .contents7 ul'\n );\n\n this.localNav = document.querySelector('main.top .local_nav');\n this.localNavLabels = document.querySelectorAll(\n 'main.top .local_nav .labels .label'\n );\n this.localNavLeftBt = document.querySelector(\n 'main.top .local_nav .left_bt'\n );\n this.localNavRightBt = document.querySelector(\n 'main.top .local_nav .right_bt'\n );\n this.localNavNumerator = document.querySelector(\n 'main.top .local_nav .current .numerator'\n );\n\n this.sections = document.querySelectorAll('main.top .section');\n this.releaseNotesContainer = document.querySelector(\n 'main.top .section3 .documentation_update'\n );\n this.section5 = document.querySelector('main.top .section5');\n this.ourTeamContainer = document.querySelector(\n 'main.top .section5 .items'\n );\n this.ourPartnerContainer = document.querySelector(\n 'main.top .section4 .items'\n );\n\n this.next = document.querySelector('.next');\n }\n\n initEvents() {\n super.initEvents();\n\n this.mousewheelEvent =\n 'onwheel' in document\n ? 'wheel'\n : 'onmousewheel' in document\n ? 'mousewheel'\n : 'DOMMouseScroll';\n\n this.bindWheelHandler = this.wheelHandler.bind(this);\n this.bindTouchEndHandler = this.touchEndHandler.bind(this);\n this.bindTouchMoveHandler = this.touchMoveHandler.bind(this);\n this.bindTouchStartHandler = this.touchStartHandler.bind(this);\n this.bindOpeningEndedHeroHandler =\n this.openingEndedHeroHandler.bind(this);\n this.bindChangedHeroHandler = this.changedHeroHandler.bind(this);\n this.bindClickHeroSkipHandler = this.clickHeroSkipHandler.bind(this);\n\n this.bindMouseMoveHandler = this.mouseMoveHandler.bind(this);\n this.bindClickLocalNavLeftBtHandler =\n this.clickLocalNavLeftBtHandler.bind(this);\n this.bindClickLocalNavRightBtHandler =\n this.clickLocalNavRightBtHandler.bind(this);\n\n document.addEventListener(this.mousewheelEvent, this.bindWheelHandler, {\n passive: false,\n });\n document.addEventListener('touchstart', this.bindTouchStartHandler, {\n passive: false,\n });\n document.addEventListener('touchmove', this.bindTouchMoveHandler, {\n passive: false,\n });\n document.addEventListener('touchend', this.bindTouchEndHandler, {\n passive: false,\n });\n\n this.pack.hero.addEventListener(\n 'openingEnded',\n this.bindOpeningEndedHeroHandler\n );\n this.pack.hero.addEventListener(\n 'changedScene',\n this.bindChangedHeroHandler\n );\n\n this.heroSkip.addEventListener('click', this.bindClickHeroSkipHandler);\n\n document.addEventListener('mousemove', this.bindMouseMoveHandler, {\n passive: false,\n });\n\n this.localNavLeftBt.addEventListener(\n 'click',\n this.bindClickLocalNavLeftBtHandler\n );\n this.localNavRightBt.addEventListener(\n 'click',\n this.bindClickLocalNavRightBtHandler\n );\n }\n\n clickLocalNavLeftBtHandler(event) {\n if (this.lockScroll) {\n if (!this.enabledScroll) return;\n if (this.currentHero === 1) return;\n this.pastHero = this.currentHero;\n this.currentHero--;\n let isPrev = true;\n this.changeScene(isPrev);\n } else {\n if (this.currentSection === -1) {\n this.goBackToHero();\n this.pack.anchorScroll(0);\n } else if (this.currentSection === 0) {\n this.currentSection--;\n this.changeScene(true);\n this.pack.anchorScroll(0);\n } else {\n this.currentSection--;\n this.pack.anchorScroll(\n this.pack.pageYOffset +\n this.sections[\n this.currentSection\n ].getBoundingClientRect().top\n );\n }\n }\n }\n\n clickLocalNavRightBtHandler(event) {\n if (this.lockScroll) {\n if (!this.enabledScroll) return;\n if (this.currentHero === this.HERO_SCENE_LEN) return;\n this.pastHero = this.currentHero;\n this.currentHero++;\n this.changeScene();\n } else {\n this.currentSection++;\n if (this.currentSection === this.sections.length) return;\n this.pack.anchorScroll(\n this.pack.pageYOffset +\n this.sections[this.currentSection].getBoundingClientRect()\n .top\n );\n }\n }\n\n mouseMoveHandler(event) {\n this.mouseX = event.clientX;\n this.mouseY = event.clientY;\n }\n\n clickHeroSkipHandler(event) {\n this.pastHero = this.currentHero;\n this.currentHero = this.HERO_SCENE_LEN;\n this.pack.hero.skipScene();\n this.skipScene();\n }\n\n openingEndedHeroHandler(event) {\n this.enabledScroll = true;\n }\n\n changedHeroHandler(event) {\n this.enabledScroll = true;\n if (this.currentHero === this.HERO_SCENE_LEN) this.lockScroll = false;\n }\n\n wheelHandler(event) {\n if (this.pack.header.isMenuOpen) return;\n let delta = event.deltaY\n ? event.deltaY\n : event.wheelDelta\n ? event.wheelDelta\n : -event.detail;\n\n let currentTime = Date.now();\n let currentDelta = Math.abs(delta);\n let isCancel = false;\n\n if (currentDelta <= this.prevWheelDelta) {\n if (currentTime - this.prevWheelTime < 100) isCancel = true;\n }\n\n this.prevWheelTime = currentTime;\n this.prevWheelDelta = currentDelta;\n\n this.checkSceneChange(event, delta, isCancel);\n }\n\n touchStartHandler(event) {\n if (this.pack.header.isMenuOpen) return;\n let touches = event.changedTouches[0];\n this.touchStartPoint = touches.clientY;\n }\n\n touchMoveHandler(event) {\n if (this.pack.header.isMenuOpen) return;\n if (this.isWaitingBackHeroScene8) {\n event.preventDefault();\n return;\n }\n\n if (this.lockScroll) event.preventDefault();\n }\n\n touchEndHandler(event) {\n if (this.pack.header.isMenuOpen) return;\n if (!this.touchStartPoint) return;\n\n let touches = event.changedTouches[0];\n let y = touches.clientY;\n let delta = y > this.touchStartPoint ? -1 : 1;\n\n if (y === this.touchStartPoint) return;\n this.checkSceneChange(event, delta);\n }\n\n checkSceneChange(event, delta, isCancel) {\n if (this.isWaitingBackHeroScene8) {\n event.preventDefault();\n return;\n }\n\n if (this.lockScroll) {\n if (isCancel) {\n event.preventDefault();\n return;\n }\n\n window.scrollTo(0, 0);\n event.preventDefault();\n\n if (!this.enabledScroll) return;\n let isPrev;\n if (delta > 0) {\n if (this.currentHero === this.HERO_SCENE_LEN) return;\n if (this.currentHero === 6) {\n let len = 6;\n if (this.heroContents6Current < len) {\n this.heroContents6UL.classList.remove(\n 'show' + this.heroContents6Current\n );\n this.heroContents6Current++;\n this.heroContents6UL.classList.add(\n 'show' + this.heroContents6Current\n );\n this.pack.hero.changeSubScene(\n 6,\n this.heroContents6Current\n );\n this.enabledScroll = false;\n return;\n }\n }\n\n if (this.currentHero === 7) {\n let len = 3;\n\n if (this.heroContents7Current < len) {\n this.heroContents7UL.classList.remove(\n 'show' + this.heroContents7Current\n );\n this.heroContents7Current++;\n this.heroContents7UL.classList.add(\n 'show' + this.heroContents7Current\n );\n this.pack.hero.changeSubScene(\n 7,\n this.heroContents7Current\n );\n this.enabledScroll = false;\n\n return;\n }\n }\n this.pastHero = this.currentHero;\n this.currentHero++;\n } else {\n if (this.currentHero === 1) return;\n\n if (this.currentHero === 6) {\n if (this.heroContents6Current > 1) {\n this.heroContents6UL.classList.remove(\n 'show' + this.heroContents6Current\n );\n this.heroContents6Current--;\n this.heroContents6UL.classList.add(\n 'show' + this.heroContents6Current\n );\n this.pack.hero.changeSubScene(\n 6,\n this.heroContents6Current\n );\n this.enabledScroll = false;\n return;\n }\n }\n\n if (this.currentHero === 7) {\n if (this.heroContents7Current > 1) {\n this.heroContents7UL.classList.remove(\n 'show' + this.heroContents7Current\n );\n this.heroContents7Current--;\n this.heroContents7UL.classList.add(\n 'show' + this.heroContents7Current\n );\n this.pack.hero.changeSubScene(\n 7,\n this.heroContents7Current\n );\n this.enabledScroll = false;\n\n return;\n }\n }\n\n this.pastHero = this.currentHero;\n this.currentHero--;\n isPrev = true;\n }\n\n this.changeScene(isPrev);\n } else {\n if (window.scrollY > 0) return;\n\n if (delta < 0) {\n this.isWaitingBackHeroScene8 = true;\n TweenMax.delayedCall(1, () => {\n this.isWaitingBackHeroScene8 = false;\n this.goBackToHero();\n });\n }\n }\n }\n\n goBackToHero() {\n this.lockScroll = true;\n this.pastHero = this.currentHero;\n this.currentHero--;\n this.enabledScroll = false;\n this.pack.hero.setScene(this.currentHero, true);\n this.setScene(this.currentHero);\n this.changeLocalNavi(this.currentHero - 1);\n this.changeNumerator(this.pack.addZero(String(this.currentHero - 1)));\n }\n\n changeScene(isPrev) {\n this.enabledScroll = false;\n this.pack.hero.setScene(this.currentHero, isPrev);\n this.setScene(this.currentHero);\n this.changeLocalNavi(this.currentHero - 1);\n this.changeNumerator(this.pack.addZero(String(this.currentHero - 1)));\n }\n\n resetHeroContents(contents_num) {\n this['heroContents' + contents_num + 'Current'] = 1;\n let ul = this['heroContents' + contents_num + 'UL'];\n for (let i = 1, len = 6; i <= len; i++) {\n ul.classList.remove('show' + i);\n }\n }\n\n start() {\n this.pack.hero.addHero(this.heroCanvasContainer);\n this.pack.hero.start();\n\n TweenMax.delayedCall(0.7, () => {\n this.heroContents[0].classList.add('show');\n });\n\n TweenMax.delayedCall(2.3, () => {\n this.heroContents[0].classList.add('show');\n this.heroScroll.classList.add('show');\n this.heroCreateAccount.classList.add('show');\n });\n\n this.setValues();\n // this.setOurTeam();\n // this.loadOurTeamImages();\n this.setOurPartner();\n this.loadOurPartnerImages();\n this.pack.setDocuments(this.releaseNotesContainer);\n }\n\n setValues() {\n let items = this.pack.apiJSONList[0].items;\n\n for (let i = 0, len = items.length; i < len; i++) {\n let item = items[i].fields;\n\n let title = this.pack.getTitle(item);\n let description = this.pack.getDescription(item);\n let url = item.url;\n\n let imgAccessAPIPath;\n if (item.image)\n imgAccessAPIPath = this.pack.getContentfulAPIImgAccessPath(\n item.image.sys.id\n );\n\n this.ourTeamList[i] = {\n title: title,\n description: description,\n url: url,\n };\n this.ourTeamImgAccessAPIPathList[i] = imgAccessAPIPath;\n }\n\n items = this.pack.apiJSONList[1].items;\n for (let i = 0, len = items.length; i < len; i++) {\n let item = items[i].fields;\n let name = item.companyName;\n let description = this.pack.getDescription(item);\n let url = item.url;\n let imgAccessAPIPath = this.pack.getContentfulAPIImgAccessPath(\n item.logoImage.sys.id\n );\n\n this.ourPartnerList[i] = {\n name: name,\n description: description,\n url: url,\n };\n this.ourPartnerImgAccessAPIPathList[i] = imgAccessAPIPath;\n }\n }\n\n getOurTeamHTML(value) {\n /* pug src\n li.item.carousel_item\n a.white(href=\"\" target=\"_blank\")\n img(src=\"/assets/img/_post/top/team_member.jpg\" alt=\"\")\n .name About Dummy Name\n p.txt Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eget porttitor urna.\n */\n\n let title = value.title;\n let description = value.description;\n let url = value.url;\n let addTxtClass = '';\n if (this.pack.LANG === 'ja') addTxtClass = ' font2';\n\n return `\n
  • \n \n \"${title}\"\n
    ${title}
    \n

    ${description}

    \n
    \n
  • \n\n `;\n }\n\n getOurPartnerHTML(value) {\n /*\n li.item\n a.white(href=\"\" target=\"_blank\")\n div.img\n img(src=\"/assets/img/_post/top/partner_logo.png\" alt=\"\")\n p.txt Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eget porttitor urna.\n */\n\n let name = value.name;\n let description = value.description;\n let url = value.url;\n let addTxtClass = '';\n if (this.pack.LANG === 'ja') addTxtClass = ' font2';\n\n return `\n
  • \n \n
    \n \"${name}\"\n
    \n

    ${description}

    \n
    \n
  • \n `;\n }\n\n setOurTeam() {\n let src = '';\n for (let i = 0, len = this.ourTeamList.length; i < len; i++) {\n let item = this.ourTeamList[i];\n let html = this.getOurTeamHTML(item);\n src += html;\n }\n\n this.ourTeamContainer.innerHTML = src;\n\n this.carousel = new Carousel(this.pack);\n this.setCarousel();\n }\n\n setOurPartner() {\n let src = '';\n for (let i = 0, len = this.ourPartnerList.length; i < len; i++) {\n let item = this.ourPartnerList[i];\n let html = this.getOurPartnerHTML(item);\n src += html;\n }\n\n this.ourPartnerContainer.innerHTML = src;\n }\n\n loadOurTeamImages() {\n let urlList = this.ourTeamImgAccessAPIPathList;\n let promiseList = [];\n this.ourTeamImgPathList = [];\n\n urlList.forEach((url, i) => {\n promiseList.push(\n fetch(url)\n .then((res) => {\n return res.json();\n })\n .then((res) => {\n this.ourTeamImgPathList[i] = res;\n })\n );\n });\n\n Promise.all(promiseList).then(() => {\n // trace(\"Our team img path loaded\", this.ourTeamImgPathList);\n this.setOurTeamImgs();\n });\n }\n\n loadOurPartnerImages() {\n let urlList = this.ourPartnerImgAccessAPIPathList;\n let promiseList = [];\n this.ourPartnerImgPathList = [];\n\n urlList.forEach((url, i) => {\n promiseList.push(\n fetch(url)\n .then((res) => {\n return res.json();\n })\n .then((res) => {\n this.ourPartnerImgPathList[i] = res;\n })\n );\n });\n\n Promise.all(promiseList).then(() => {\n // trace(\"Our partner img path loaded\", this.ourPartnerImgPathList);\n this.setOurPartnerImgs();\n });\n }\n\n setOurTeamImgs() {\n let protocol = location.protocol;\n let imgs = document.querySelectorAll(\n 'main.top .section5 .items .item img'\n );\n for (let i = 0, len = this.ourTeamImgPathList.length; i < len; i++) {\n let imgURL = protocol + this.ourTeamImgPathList[i].fields.file.url;\n if (imgURL) imgs[i].src = imgURL;\n }\n }\n\n setOurPartnerImgs() {\n let protocol = location.protocol;\n let imgs = document.querySelectorAll(\n 'main.top .section4 .items .item img'\n );\n for (let i = 0, len = this.ourPartnerImgPathList.length; i < len; i++) {\n let imgURL =\n protocol + this.ourPartnerImgPathList[i].fields.file.url;\n imgs[i].src = imgURL;\n }\n }\n\n setScene(id) {\n this.heroContents[this.pastHero - 1].classList.remove('show');\n this.heroContents[this.currentHero - 1].classList.add('show');\n\n if (id === 1) {\n this.heroCreateAccount.classList.remove('hide');\n this.pack.header.showHeader();\n this.heroSkip.classList.remove('show');\n this.heroScroll.classList.add('show');\n this.localNav.classList.remove('show');\n } else if (id === 2) {\n this.heroCreateAccount.classList.add('hide');\n this.pack.header.hideHeader();\n this.heroSkip.classList.add('show');\n this.heroScroll.classList.remove('show');\n this.localNav.classList.add('show');\n }\n }\n\n skipScene() {\n this.lockScroll = false;\n\n this.heroContents[this.pastHero - 1].classList.remove('show');\n this.heroContents[this.currentHero - 1].classList.add('show');\n this.heroCreateAccount.classList.add('hide');\n this.pack.header.hideHeader();\n this.heroSkip.classList.add('show');\n this.heroScroll.classList.remove('show');\n this.changeLocalNavi(this.currentHero - 1);\n this.changeNumerator(this.pack.addZero(String(this.currentHero - 1)));\n this.pack.anchorScroll(this.sh);\n }\n\n changeNumerator(value) {\n this.localNavNumerator.innerText = value;\n this.localNavNumerator.classList.add('blink');\n TweenMax.delayedCall(0.3, () => {\n this.localNavNumerator.classList.remove('blink');\n });\n }\n\n changeLocalNavi(num) {\n if (num === 0) return;\n\n for (let i = 0, len = this.localNavLabels.length; i < len; i++) {\n let item = this.localNavLabels[i];\n item.classList.remove('show');\n }\n\n this.localNavLabels[num - 1].classList.add('show');\n }\n\n scrollHandler() {\n this.checkSections();\n }\n\n checkSections() {\n let current = -1;\n for (let i = 0, len = this.sections.length; i < len; i++) {\n let item = this.sections[i];\n let top = item.getBoundingClientRect().top;\n if (!item.classList.contains('show')) {\n if (top < 100) {\n item.classList.add('show');\n }\n }\n\n if (top < 100) {\n current = i;\n }\n }\n\n this.currentSection = current;\n\n let num = current + this.HERO_SCENE_LEN - 1;\n if (!this.localNavLabels[num].classList.contains('show')) {\n num += 1;\n this.changeLocalNavi(num);\n this.changeNumerator(this.pack.addZero(String(num)));\n }\n\n if (this.pack.pageYOffset < this.shh)\n this.localNav.classList.remove('white');\n else this.localNav.classList.add('white');\n\n if (this.next.getBoundingClientRect().top <= this.sh)\n this.localNav.classList.remove('show');\n else this.localNav.classList.add('show');\n }\n\n enterframe() {}\n\n enterframeThinOut() {\n this.pack.hero.enterframeThinOut();\n }\n\n executeResize() {\n super.executeResize();\n\n this.heroSkip.style.top = this.sh + 'px';\n\n if (this.sw >= this.pack.BP)\n this.heroCont3H3.style.top = '30.4444444444rem';\n else this.heroCont3H3.style.top = this.sh + 'px';\n\n this.heroCont4H3.style.top = this.sh + 'px';\n this.heroCont5H3.style.top = this.sh + 'px';\n\n if (this.sw >= this.pack.BP)\n this.heroCont6H3.style.top = this.sh + 'px';\n else this.heroCont6H3.style.top = 0 + 'px';\n\n if (this.sw >= this.pack.BP)\n this.heroCont7H3.style.top = this.sh + 'px';\n else this.heroCont7H3.style.top = 0 + 'px';\n\n if (this.sw >= this.pack.BP)\n this.heroCont6Txt.style.top = this.sh + 'px';\n else this.heroCont6Txt.style.top = 0 + 'px';\n\n this.heroCont8H3.style.top = this.sh + 'px';\n\n this.heroCont3Txt.style.top = this.sh + 'px';\n this.heroCont4Txt.style.top = this.sh + 'px';\n this.heroCont5Txt.style.top = this.sh + 'px';\n this.heroCont6UL.style.top = this.sh + 'px';\n this.heroCont7UL.style.top = this.sh + 'px';\n this.heroCont8Txt.style.top = this.sh + 'px';\n\n this.heroCont3Btn.style.top = this.sh + 'px';\n this.heroCont4Btn.style.top = this.sh + 'px';\n this.heroCont7Btn.style.top = this.sh + 'px';\n this.heroCont8Btn.style.top = this.sh + 'px';\n }\n}\n","import Top from './Top';\nimport Services from './Services';\nimport ReferenceDesign from './ReferenceDesign';\nimport Contact from './Contact';\nimport ProductBrochure from './ProductBrochure';\n\nclass BarbaCustom {\n constructor() {\n this.init();\n }\n\n init() {\n let sc = this;\n this.setVars();\n this.setDom();\n this.initEvents();\n this.initTransition();\n\n Barba.Pjax.getTransition = function () {\n return sc.transition;\n };\n\n Barba.Pjax.start();\n Barba.Prefetch.init();\n this.cancelSameLinks();\n // this.preventCheck();\n }\n\n /* preventCheck(){\n //TODO この関数内の処理は画面クリックしただけでwindow.historyが追加されていってしまったため、barba.jsに直接追加記述 2020/9/8 by Masayuki Daijima\n let sc = this;\n Barba.Pjax.originalPreventCheck = Barba.Pjax.preventCheck;\n Barba.Pjax.preventCheck = function(evt, element) {\n if(element){\n // アンカーリンクであり同一ページでなければPjaxを有効に\n let url = location.protocol + '//' + location.host + location.pathname;\n let extract_hash = element.href.replace(/#.*$/,\"\");\n\n // if (element.href.startsWith(location.protocol + '//' + location.host)) {}\n if (element.target === \"_blank\") return false;\n if (element.href.indexOf('#') > -1 && extract_hash != url ) return true;\n if (element.href.startsWith('mailto:')) return false;\n }\n return true;\n };\n }\n */\n\n setVars() {\n this.pack = window.TIER4;\n this.pack.barba = this;\n this.before;\n }\n\n setDom() {\n this.wrapper = document.querySelector('#barba-wrapper');\n this.barbaContainer = document.querySelector('.barba-container');\n this.transition = document.querySelector('#transition');\n this.scrollWrapper = document.querySelector('.scroll-wrapper');\n }\n\n initEvents() {\n Barba.Dispatcher.on(\n 'newPageReady',\n this.newPageReadyHandler.bind(this)\n );\n Barba.Dispatcher.on('linkClicked', this.linkClickedHandler.bind(this));\n Barba.Dispatcher.on(\n 'initStateChange',\n this.initStateChangeHandler.bind(this)\n );\n Barba.Dispatcher.on(\n 'transitionCompleted',\n this.transitionCompletedHandler.bind(this)\n );\n }\n\n newPageReadyHandler(\n currentStatus,\n oldStatus,\n barbaContainer,\n newPageRawHTML\n ) {\n //trace('newPageReady', currentStatus.namespace);\n\n this.before = this.pack.current;\n let namespace = (this.pack.current = currentStatus.namespace);\n\n if (Barba.HistoryManager.history.length === 1) {\n // ファーストビュー\n return; // この時に更新は必要ありません\n }\n\n // =============================================\n // Googleアナリティクスへ送信\n if (typeof gtag === 'function') {\n gtag('config', window.GA_MEASUREMENT_ID, {\n page_path: window.location.pathname,\n });\n }\n // =============================================\n }\n\n linkClickedHandler(urrentStatus, event) {\n // trace('linkClicked');\n }\n\n initStateChangeHandler(currentStatus) {\n let namespace = this.pack.current;\n let pack = this.pack;\n\n // trace('initStateChange', namespace, Barba.HistoryManager.history.length);\n\n if (Barba.HistoryManager.history.length === 1) {\n // ファーストビュー\n return; // この時に更新は必要ありません\n }\n\n pack.common.lockScroll = true;\n\n if (namespace === 'top') {\n this.pack.top.destruct();\n } else if (namespace === 'services') {\n this.pack.services.destruct();\n } else if (namespace === 'reference_design') {\n this.pack.reference_design.destruct();\n } else if (namespace === 'contact') {\n this.pack.contact.destruct();\n } else if (namespace === 'product_brochure') {\n this.pack.product_brochure.destruct();\n }\n\n TweenMax.delayedCall(1, () => {\n if (\n namespace === 'top' ||\n namespace === 'services' ||\n namespace === 'reference_design'\n ) {\n pack.nextView.remove();\n }\n });\n }\n\n transitionCompletedHandler(\n currentStatus,\n oldStatus,\n barbaContainer,\n newPageRawHTML\n ) {\n // trace('transitionCompleted');\n var headerFixed = false;\n // check if 「#」 exists\n if (location.hash) {\n var anchor = document.querySelector(location.hash);\n if (anchor) {\n var rect = anchor.getBoundingClientRect();\n var scrollTop =\n window.pageYOffset || document.documentElement.scrollTop;\n if (headerFixed) {\n var header = document.getElementById('header');\n if (header) {\n top = top - header.clientHeight;\n }\n }\n var top = rect.top + scrollTop;\n window.scrollTo(0, top);\n } else {\n // no anchor, go to top position\n window.scrollTo(0, 0);\n }\n } else {\n // no anchor, go to top position\n window.scrollTo(0, 0);\n }\n }\n\n endContentsOutHandler(namespace) {\n if (namespace === 'top') {\n this.pack.top.destructAfterContentsOut();\n }\n }\n\n initTransition() {\n let sc = this;\n let pack = sc.pack;\n\n this.transition = Barba.BaseTransition.extend({\n start() {\n this.newContainerLoaded = false;\n this.fadeOutCompleted = false;\n sc.isTransition = true;\n\n let pastNameSpace = sc.pack.current;\n\n //oldContainerが隠れるトランジション終了後のcallback\n let callback = () => {\n pack.header.closeMenuExternal();\n this.fadeOutCompleted = true;\n this.checkReady();\n sc.endContentsOutHandler(pastNameSpace);\n };\n\n pack.common.startTransitionIn(callback);\n this.contentsOut();\n },\n\n contentsOut() {\n // this.startSerial()\n // .then(this.newContainerLoading)\n // .then(this.initContainer.bind(this));\n\n this.newContainerLoading.then(this.initContainer.bind(this));\n },\n\n startSerial() {\n return new Promise(function (resolve) {\n resolve();\n });\n },\n\n initContainer() {\n if (!this.newContainer) {\n //SPで遷移後のnewContainerを認識できずにエラーが出る時があるので.2秒待ってもう1回initContainerを呼ぶ\n TweenMax.delayedCall(0.2, this.initContainer.bind(this));\n return;\n }\n\n //リンククリック時にnewContainerが表示される場合の処理\n if (this.newContainer) this.newContainer.style.display = 'none';\n\n this.newContainerLoaded = true;\n this.checkReady();\n },\n\n checkReady() {\n //newContainerの読み込みが完了し、oldContainerが消え切るトランジション完了したかをチェック\n if (this.newContainerLoaded && this.fadeOutCompleted) {\n this.contentsIn();\n }\n },\n\n contentsIn() {\n let namespace = pack.current;\n if (this.newContainer) {\n this.newContainer.style.display = 'block';\n this.newContainer.style.visibility = 'visible';\n }\n this.done();\n\n if (namespace === 'top') {\n if (pack.top) pack.top.reset();\n else pack.top = new Top(pack);\n pack.top.start();\n } else if (namespace === 'services') {\n if (pack.services) pack.services.reset();\n else pack.services = new Services(pack);\n pack.services.start();\n } else if (namespace === 'reference_design') {\n if (pack.reference_design) pack.reference_design.reset();\n else pack.reference_design = new ReferenceDesign(pack);\n pack.reference_design.start();\n } else if (namespace === 'contact') {\n if (pack.contact) pack.contact.reset();\n else pack.contact = new Contact(pack);\n pack.contact.start();\n } else if (namespace === 'product_brochure') {\n if (pack.product_brochure) pack.product_brochure.reset();\n else pack.product_brochure = new ProductBrochure(pack);\n pack.product_brochure.start();\n }\n pack.common.setCurrent();\n pack.common.lockScroll = false;\n if (\n namespace === 'top' ||\n namespace === 'services' ||\n namespace === 'reference_design'\n ) {\n pack.nextView.add();\n }\n\n this.resetScroll();\n\n //インラインJS\n this.addInlineJs();\n\n pack.common.resizeHandler();\n TweenMax.delayedCall(2, function () {\n //駄目押しリサイズ\n pack.common.resizeHandler();\n });\n\n pack.common.startTransitionOut();\n sc.isTransition = false;\n },\n\n resetScroll() {\n window.scrollTo(0, 0);\n // if(!sc.pack.hasTouch) sc.scrollWrapper.style.transform = 'translate3d(0, 0, 0)';\n pack.common.resetPageYOffset();\n },\n\n addInlineJs() {\n let js = this.newContainer.querySelector('script');\n\n if (js != null) {\n let addJs = document.createElement('script');\n addJs.innerHTML = js.innerHTML;\n this.newContainer.appendChild(addJs);\n }\n },\n });\n }\n\n cancelSameLinks() {\n // 現在と同じページのリンクをクリックした場合、リロードなし。\n let links = document.querySelectorAll('a[href]');\n let cbk = function (event) {\n if (event.currentTarget.href === window.location.href) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n for (let i = 0, len = links.length; i < len; i++) {\n links[i].addEventListener('click', cbk);\n }\n }\n}\n\nnew BarbaCustom();\n","/*!\n * VERSION: 2.0.2\n * DATE: 2018-08-27\n * UPDATES AND DOCS AT: http://greensock.com\n * \n * Includes all of the following: TweenLite, TweenMax, TimelineLite, TimelineMax, EasePack, CSSPlugin, RoundPropsPlugin, BezierPlugin, AttrPlugin, DirectionalRotationPlugin\n *\n * @license Copyright (c) 2008-2018, GreenSock. All rights reserved.\n * This work is subject to the terms at http://greensock.com/standard-license or for\n * Club GreenSock members, the software agreement that was issued with your membership.\n * \n * @author: Jack Doyle, jack@greensock.com\n **/\nvar _gsScope=\"undefined\"!=typeof module&&module.exports&&\"undefined\"!=typeof global?global:this||window;(_gsScope._gsQueue||(_gsScope._gsQueue=[])).push(function(){\"use strict\";_gsScope._gsDefine(\"TweenMax\",[\"core.Animation\",\"core.SimpleTimeline\",\"TweenLite\"],function(a,b,c){var d=function(a){var b,c=[],d=a.length;for(b=0;b!==d;c.push(a[b++]));return c},e=function(a,b,c){var d,e,f=a.cycle;for(d in f)e=f[d],a[d]=\"function\"==typeof e?e(c,b[c]):e[c%e.length];delete a.cycle},f=function(a,b,d){c.call(this,a,b,d),this._cycle=0,this._yoyo=this.vars.yoyo===!0||!!this.vars.yoyoEase,this._repeat=this.vars.repeat||0,this._repeatDelay=this.vars.repeatDelay||0,this._repeat&&this._uncache(!0),this.render=f.prototype.render},g=1e-10,h=c._internals,i=h.isSelector,j=h.isArray,k=f.prototype=c.to({},.1,{}),l=[];f.version=\"2.0.2\",k.constructor=f,k.kill()._gc=!1,f.killTweensOf=f.killDelayedCallsTo=c.killTweensOf,f.getTweensOf=c.getTweensOf,f.lagSmoothing=c.lagSmoothing,f.ticker=c.ticker,f.render=c.render,k.invalidate=function(){return this._yoyo=this.vars.yoyo===!0||!!this.vars.yoyoEase,this._repeat=this.vars.repeat||0,this._repeatDelay=this.vars.repeatDelay||0,this._yoyoEase=null,this._uncache(!0),c.prototype.invalidate.call(this)},k.updateTo=function(a,b){var d,e=this.ratio,f=this.vars.immediateRender||a.immediateRender;b&&this._startTime.998){var g=this._totalTime;this.render(0,!0,!1),this._initted=!1,this.render(g,!0,!1)}else if(this._initted=!1,this._init(),this._time>0||f)for(var h,i=1/(1-e),j=this._firstPT;j;)h=j.s+j.c,j.c*=i,j.s=h-j.c,j=j._next;return this},k.render=function(a,b,d){this._initted||0===this._duration&&this.vars.repeat&&this.invalidate();var e,f,i,j,k,l,m,n,o,p=this._dirty?this.totalDuration():this._totalDuration,q=this._time,r=this._totalTime,s=this._cycle,t=this._duration,u=this._rawPrevTime;if(a>=p-1e-7&&a>=0?(this._totalTime=p,this._cycle=this._repeat,this._yoyo&&0!==(1&this._cycle)?(this._time=0,this.ratio=this._ease._calcEnd?this._ease.getRatio(0):0):(this._time=t,this.ratio=this._ease._calcEnd?this._ease.getRatio(1):1),this._reversed||(e=!0,f=\"onComplete\",d=d||this._timeline.autoRemoveChildren),0===t&&(this._initted||!this.vars.lazy||d)&&(this._startTime===this._timeline._duration&&(a=0),(0>u||0>=a&&a>=-1e-7||u===g&&\"isPause\"!==this.data)&&u!==a&&(d=!0,u>g&&(f=\"onReverseComplete\")),this._rawPrevTime=n=!b||a||u===a?a:g)):1e-7>a?(this._totalTime=this._time=this._cycle=0,this.ratio=this._ease._calcEnd?this._ease.getRatio(0):0,(0!==r||0===t&&u>0)&&(f=\"onReverseComplete\",e=this._reversed),0>a&&(this._active=!1,0===t&&(this._initted||!this.vars.lazy||d)&&(u>=0&&(d=!0),this._rawPrevTime=n=!b||a||u===a?a:g)),this._initted||(d=!0)):(this._totalTime=this._time=a,0!==this._repeat&&(j=t+this._repeatDelay,this._cycle=this._totalTime/j>>0,0!==this._cycle&&this._cycle===this._totalTime/j&&a>=r&&this._cycle--,this._time=this._totalTime-this._cycle*j,this._yoyo&&0!==(1&this._cycle)&&(this._time=t-this._time,o=this._yoyoEase||this.vars.yoyoEase,o&&(this._yoyoEase||(o!==!0||this._initted?this._yoyoEase=o=o===!0?this._ease:o instanceof Ease?o:Ease.map[o]:(o=this.vars.ease,this._yoyoEase=o=o?o instanceof Ease?o:\"function\"==typeof o?new Ease(o,this.vars.easeParams):Ease.map[o]||c.defaultEase:c.defaultEase)),this.ratio=o?1-o.getRatio((t-this._time)/t):0)),this._time>t?this._time=t:this._time<0&&(this._time=0)),this._easeType&&!o?(k=this._time/t,l=this._easeType,m=this._easePower,(1===l||3===l&&k>=.5)&&(k=1-k),3===l&&(k*=2),1===m?k*=k:2===m?k*=k*k:3===m?k*=k*k*k:4===m&&(k*=k*k*k*k),1===l?this.ratio=1-k:2===l?this.ratio=k:this._time/t<.5?this.ratio=k/2:this.ratio=1-k/2):o||(this.ratio=this._ease.getRatio(this._time/t))),q===this._time&&!d&&s===this._cycle)return void(r!==this._totalTime&&this._onUpdate&&(b||this._callback(\"onUpdate\")));if(!this._initted){if(this._init(),!this._initted||this._gc)return;if(!d&&this._firstPT&&(this.vars.lazy!==!1&&this._duration||this.vars.lazy&&!this._duration))return this._time=q,this._totalTime=r,this._rawPrevTime=u,this._cycle=s,h.lazyTweens.push(this),void(this._lazy=[a,b]);!this._time||e||o?e&&this._ease._calcEnd&&!o&&(this.ratio=this._ease.getRatio(0===this._time?0:1)):this.ratio=this._ease.getRatio(this._time/t)}for(this._lazy!==!1&&(this._lazy=!1),this._active||!this._paused&&this._time!==q&&a>=0&&(this._active=!0),0===r&&(2===this._initted&&a>0&&this._init(),this._startAt&&(a>=0?this._startAt.render(a,!0,d):f||(f=\"_dummyGS\")),this.vars.onStart&&(0!==this._totalTime||0===t)&&(b||this._callback(\"onStart\"))),i=this._firstPT;i;)i.f?i.t[i.p](i.c*this.ratio+i.s):i.t[i.p]=i.c*this.ratio+i.s,i=i._next;this._onUpdate&&(0>a&&this._startAt&&this._startTime&&this._startAt.render(a,!0,d),b||(this._totalTime!==r||f)&&this._callback(\"onUpdate\")),this._cycle!==s&&(b||this._gc||this.vars.onRepeat&&this._callback(\"onRepeat\")),f&&(!this._gc||d)&&(0>a&&this._startAt&&!this._onUpdate&&this._startTime&&this._startAt.render(a,!0,d),e&&(this._timeline.autoRemoveChildren&&this._enabled(!1,!1),this._active=!1),!b&&this.vars[f]&&this._callback(f),0===t&&this._rawPrevTime===g&&n!==g&&(this._rawPrevTime=0))},f.to=function(a,b,c){return new f(a,b,c)},f.from=function(a,b,c){return c.runBackwards=!0,c.immediateRender=0!=c.immediateRender,new f(a,b,c)},f.fromTo=function(a,b,c,d){return d.startAt=c,d.immediateRender=0!=d.immediateRender&&0!=c.immediateRender,new f(a,b,d)},f.staggerTo=f.allTo=function(a,b,g,h,k,m,n){h=h||0;var o,p,q,r,s=0,t=[],u=function(){g.onComplete&&g.onComplete.apply(g.onCompleteScope||this,arguments),k.apply(n||g.callbackScope||this,m||l)},v=g.cycle,w=g.startAt&&g.startAt.cycle;for(j(a)||(\"string\"==typeof a&&(a=c.selector(a)||a),i(a)&&(a=d(a))),a=a||[],0>h&&(a=d(a),a.reverse(),h*=-1),o=a.length-1,q=0;o>=q;q++){p={};for(r in g)p[r]=g[r];if(v&&(e(p,a,q),null!=p.duration&&(b=p.duration,delete p.duration)),w){w=p.startAt={};for(r in g.startAt)w[r]=g.startAt[r];e(p.startAt,a,q)}p.delay=s+(p.delay||0),q===o&&k&&(p.onComplete=u),t[q]=new f(a[q],b,p),s+=h}return t},f.staggerFrom=f.allFrom=function(a,b,c,d,e,g,h){return c.runBackwards=!0,c.immediateRender=0!=c.immediateRender,f.staggerTo(a,b,c,d,e,g,h)},f.staggerFromTo=f.allFromTo=function(a,b,c,d,e,g,h,i){return d.startAt=c,d.immediateRender=0!=d.immediateRender&&0!=c.immediateRender,f.staggerTo(a,b,d,e,g,h,i)},f.delayedCall=function(a,b,c,d,e){return new f(b,0,{delay:a,onComplete:b,onCompleteParams:c,callbackScope:d,onReverseComplete:b,onReverseCompleteParams:c,immediateRender:!1,useFrames:e,overwrite:0})},f.set=function(a,b){return new f(a,0,b)},f.isTweening=function(a){return c.getTweensOf(a,!0).length>0};var m=function(a,b){for(var d=[],e=0,f=a._first;f;)f instanceof c?d[e++]=f:(b&&(d[e++]=f),d=d.concat(m(f,b)),e=d.length),f=f._next;return d},n=f.getAllTweens=function(b){return m(a._rootTimeline,b).concat(m(a._rootFramesTimeline,b))};f.killAll=function(a,c,d,e){null==c&&(c=!0),null==d&&(d=!0);var f,g,h,i=n(0!=e),j=i.length,k=c&&d&&e;for(h=0;j>h;h++)g=i[h],(k||g instanceof b||(f=g.target===g.vars.onComplete)&&d||c&&!f)&&(a?g.totalTime(g._reversed?0:g.totalDuration()):g._enabled(!1,!1))},f.killChildTweensOf=function(a,b){if(null!=a){var e,g,k,l,m,n=h.tweenLookup;if(\"string\"==typeof a&&(a=c.selector(a)||a),i(a)&&(a=d(a)),j(a))for(l=a.length;--l>-1;)f.killChildTweensOf(a[l],b);else{e=[];for(k in n)for(g=n[k].target.parentNode;g;)g===a&&(e=e.concat(n[k].tweens)),g=g.parentNode;for(m=e.length,l=0;m>l;l++)b&&e[l].totalTime(e[l].totalDuration()),e[l]._enabled(!1,!1)}}};var o=function(a,c,d,e){c=c!==!1,d=d!==!1,e=e!==!1;for(var f,g,h=n(e),i=c&&d&&e,j=h.length;--j>-1;)g=h[j],(i||g instanceof b||(f=g.target===g.vars.onComplete)&&d||c&&!f)&&g.paused(a)};return f.pauseAll=function(a,b,c){o(!0,a,b,c)},f.resumeAll=function(a,b,c){o(!1,a,b,c)},f.globalTimeScale=function(b){var d=a._rootTimeline,e=c.ticker.time;return arguments.length?(b=b||g,d._startTime=e-(e-d._startTime)*d._timeScale/b,d=a._rootFramesTimeline,e=c.ticker.frame,d._startTime=e-(e-d._startTime)*d._timeScale/b,d._timeScale=a._rootTimeline._timeScale=b,b):d._timeScale},k.progress=function(a,b){return arguments.length?this.totalTime(this.duration()*(this._yoyo&&0!==(1&this._cycle)?1-a:a)+this._cycle*(this._duration+this._repeatDelay),b):this._time/this.duration()},k.totalProgress=function(a,b){return arguments.length?this.totalTime(this.totalDuration()*a,b):this._totalTime/this.totalDuration()},k.time=function(a,b){return arguments.length?(this._dirty&&this.totalDuration(),a>this._duration&&(a=this._duration),this._yoyo&&0!==(1&this._cycle)?a=this._duration-a+this._cycle*(this._duration+this._repeatDelay):0!==this._repeat&&(a+=this._cycle*(this._duration+this._repeatDelay)),this.totalTime(a,b)):this._time},k.duration=function(b){return arguments.length?a.prototype.duration.call(this,b):this._duration},k.totalDuration=function(a){return arguments.length?-1===this._repeat?this:this.duration((a-this._repeat*this._repeatDelay)/(this._repeat+1)):(this._dirty&&(this._totalDuration=-1===this._repeat?999999999999:this._duration*(this._repeat+1)+this._repeatDelay*this._repeat,this._dirty=!1),this._totalDuration)},k.repeat=function(a){return arguments.length?(this._repeat=a,this._uncache(!0)):this._repeat},k.repeatDelay=function(a){return arguments.length?(this._repeatDelay=a,this._uncache(!0)):this._repeatDelay},k.yoyo=function(a){return arguments.length?(this._yoyo=a,this):this._yoyo},f},!0),_gsScope._gsDefine(\"TimelineLite\",[\"core.Animation\",\"core.SimpleTimeline\",\"TweenLite\"],function(a,b,c){var d=function(a){b.call(this,a),this._labels={},this.autoRemoveChildren=this.vars.autoRemoveChildren===!0,this.smoothChildTiming=this.vars.smoothChildTiming===!0,this._sortChildren=!0,this._onUpdate=this.vars.onUpdate;var c,d,e=this.vars;for(d in e)c=e[d],i(c)&&-1!==c.join(\"\").indexOf(\"{self}\")&&(e[d]=this._swapSelfInParams(c));i(e.tweens)&&this.add(e.tweens,0,e.align,e.stagger)},e=1e-10,f=c._internals,g=d._internals={},h=f.isSelector,i=f.isArray,j=f.lazyTweens,k=f.lazyRender,l=_gsScope._gsDefine.globals,m=function(a){var b,c={};for(b in a)c[b]=a[b];return c},n=function(a,b,c){var d,e,f=a.cycle;for(d in f)e=f[d],a[d]=\"function\"==typeof e?e(c,b[c]):e[c%e.length];delete a.cycle},o=g.pauseCallback=function(){},p=function(a){var b,c=[],d=a.length;for(b=0;b!==d;c.push(a[b++]));return c},q=d.prototype=new b;return d.version=\"2.0.2\",q.constructor=d,q.kill()._gc=q._forcingPlayhead=q._hasPause=!1,q.to=function(a,b,d,e){var f=d.repeat&&l.TweenMax||c;return b?this.add(new f(a,b,d),e):this.set(a,d,e)},q.from=function(a,b,d,e){return this.add((d.repeat&&l.TweenMax||c).from(a,b,d),e)},q.fromTo=function(a,b,d,e,f){var g=e.repeat&&l.TweenMax||c;return b?this.add(g.fromTo(a,b,d,e),f):this.set(a,e,f)},q.staggerTo=function(a,b,e,f,g,i,j,k){var l,o,q=new d({onComplete:i,onCompleteParams:j,callbackScope:k,smoothChildTiming:this.smoothChildTiming}),r=e.cycle;for(\"string\"==typeof a&&(a=c.selector(a)||a),a=a||[],h(a)&&(a=p(a)),f=f||0,0>f&&(a=p(a),a.reverse(),f*=-1),o=0;of&&(e=1),i.add(g,f)),g=h;return j.add(i,0),e&&i.totalDuration(),i},q.add=function(e,f,g,h){var j,k,l,m,n,o;if(\"number\"!=typeof f&&(f=this._parseTimeOrLabel(f,0,!0,e)),!(e instanceof a)){if(e instanceof Array||e&&e.push&&i(e)){for(g=g||\"normal\",h=h||0,j=f,k=e.length,l=0;k>l;l++)i(m=e[l])&&(m=new d({tweens:m})),this.add(m,j),\"string\"!=typeof m&&\"function\"!=typeof m&&(\"sequence\"===g?j=m._startTime+m.totalDuration()/m._timeScale:\"start\"===g&&(m._startTime-=m.delay())),j+=h;return this._uncache(!0)}if(\"string\"==typeof e)return this.addLabel(e,f);if(\"function\"!=typeof e)throw\"Cannot add \"+e+\" into the timeline; it is not a tween, timeline, function, or string.\";e=c.delayedCall(0,e)}if(b.prototype.add.call(this,e,f),e._time&&(j=Math.max(0,Math.min(e.totalDuration(),(this.rawTime()-e._startTime)*e._timeScale)),Math.abs(j-e._totalTime)>1e-5&&e.render(j,!1,!1)),(this._gc||this._time===this._duration)&&!this._paused&&this._duratione._startTime;n._timeline;)o&&n._timeline.smoothChildTiming?n.totalTime(n._totalTime,!0):n._gc&&n._enabled(!0,!1),n=n._timeline;return this},q.remove=function(b){if(b instanceof a){this._remove(b,!1);var c=b._timeline=b.vars.useFrames?a._rootFramesTimeline:a._rootTimeline;return b._startTime=(b._paused?b._pauseTime:c._time)-(b._reversed?b.totalDuration()-b._totalTime:b._totalTime)/b._timeScale,this}if(b instanceof Array||b&&b.push&&i(b)){for(var d=b.length;--d>-1;)this.remove(b[d]);return this}return\"string\"==typeof b?this.removeLabel(b):this.kill(null,b)},q._remove=function(a,c){b.prototype._remove.call(this,a,c);var d=this._last;return d?this._time>this.duration()&&(this._time=this._duration,this._totalTime=this._totalDuration):this._time=this._totalTime=this._duration=this._totalDuration=0,this},q.append=function(a,b){return this.add(a,this._parseTimeOrLabel(null,b,!0,a))},q.insert=q.insertMultiple=function(a,b,c,d){return this.add(a,b||0,c,d)},q.appendMultiple=function(a,b,c,d){return this.add(a,this._parseTimeOrLabel(null,b,!0,a),c,d)},q.addLabel=function(a,b){return this._labels[a]=this._parseTimeOrLabel(b),this},q.addPause=function(a,b,d,e){var f=c.delayedCall(0,o,d,e||this);return f.vars.onComplete=f.vars.onReverseComplete=b,f.data=\"isPause\",this._hasPause=!0,this.add(f,a)},q.removeLabel=function(a){return delete this._labels[a],this},q.getLabelTime=function(a){return null!=this._labels[a]?this._labels[a]:-1},q._parseTimeOrLabel=function(b,c,d,e){var f,g;if(e instanceof a&&e.timeline===this)this.remove(e);else if(e&&(e instanceof Array||e.push&&i(e)))for(g=e.length;--g>-1;)e[g]instanceof a&&e[g].timeline===this&&this.remove(e[g]);if(f=\"number\"!=typeof b||c?this.duration()>99999999999?this.recent().endTime(!1):this._duration:0,\"string\"==typeof c)return this._parseTimeOrLabel(c,d&&\"number\"==typeof b&&null==this._labels[c]?b-f:0,d);if(c=c||0,\"string\"!=typeof b||!isNaN(b)&&null==this._labels[b])null==b&&(b=f);else{if(g=b.indexOf(\"=\"),-1===g)return null==this._labels[b]?d?this._labels[b]=f+c:c:this._labels[b]+c;c=parseInt(b.charAt(g-1)+\"1\",10)*Number(b.substr(g+1)),b=g>1?this._parseTimeOrLabel(b.substr(0,g-1),0,d):f}return Number(b)+c},q.seek=function(a,b){return this.totalTime(\"number\"==typeof a?a:this._parseTimeOrLabel(a),b!==!1)},q.stop=function(){return this.paused(!0)},q.gotoAndPlay=function(a,b){return this.play(a,b)},q.gotoAndStop=function(a,b){return this.pause(a,b)},q.render=function(a,b,c){this._gc&&this._enabled(!0,!1);var d,f,g,h,i,l,m,n=this._time,o=this._dirty?this.totalDuration():this._totalDuration,p=this._startTime,q=this._timeScale,r=this._paused;if(n!==this._time&&(a+=this._time-n),a>=o-1e-7&&a>=0)this._totalTime=this._time=o,this._reversed||this._hasPausedChild()||(f=!0,h=\"onComplete\",i=!!this._timeline.autoRemoveChildren,0===this._duration&&(0>=a&&a>=-1e-7||this._rawPrevTime<0||this._rawPrevTime===e)&&this._rawPrevTime!==a&&this._first&&(i=!0,this._rawPrevTime>e&&(h=\"onReverseComplete\"))),this._rawPrevTime=this._duration||!b||a||this._rawPrevTime===a?a:e,a=o+1e-4;else if(1e-7>a)if(this._totalTime=this._time=0,(0!==n||0===this._duration&&this._rawPrevTime!==e&&(this._rawPrevTime>0||0>a&&this._rawPrevTime>=0))&&(h=\"onReverseComplete\",f=this._reversed),0>a)this._active=!1,this._timeline.autoRemoveChildren&&this._reversed?(i=f=!0,h=\"onReverseComplete\"):this._rawPrevTime>=0&&this._first&&(i=!0),this._rawPrevTime=a;else{if(this._rawPrevTime=this._duration||!b||a||this._rawPrevTime===a?a:e,0===a&&f)for(d=this._first;d&&0===d._startTime;)d._duration||(f=!1),d=d._next;a=0,this._initted||(i=!0)}else{if(this._hasPause&&!this._forcingPlayhead&&!b){if(a>=n)for(d=this._first;d&&d._startTime<=a&&!l;)d._duration||\"isPause\"!==d.data||d.ratio||0===d._startTime&&0===this._rawPrevTime||(l=d),d=d._next;else for(d=this._last;d&&d._startTime>=a&&!l;)d._duration||\"isPause\"===d.data&&d._rawPrevTime>0&&(l=d),d=d._prev;l&&(this._time=a=l._startTime,this._totalTime=a+this._cycle*(this._totalDuration+this._repeatDelay))}this._totalTime=this._time=this._rawPrevTime=a}if(this._time!==n&&this._first||c||i||l){if(this._initted||(this._initted=!0),this._active||!this._paused&&this._time!==n&&a>0&&(this._active=!0),0===n&&this.vars.onStart&&(0===this._time&&this._duration||b||this._callback(\"onStart\")),m=this._time,m>=n)for(d=this._first;d&&(g=d._next,m===this._time&&(!this._paused||r));)(d._active||d._startTime<=m&&!d._paused&&!d._gc)&&(l===d&&this.pause(),d._reversed?d.render((d._dirty?d.totalDuration():d._totalDuration)-(a-d._startTime)*d._timeScale,b,c):d.render((a-d._startTime)*d._timeScale,b,c)),d=g;else for(d=this._last;d&&(g=d._prev,m===this._time&&(!this._paused||r));){if(d._active||d._startTime<=n&&!d._paused&&!d._gc){if(l===d){for(l=d._prev;l&&l.endTime()>this._time;)l.render(l._reversed?l.totalDuration()-(a-l._startTime)*l._timeScale:(a-l._startTime)*l._timeScale,b,c),l=l._prev;l=null,this.pause()}d._reversed?d.render((d._dirty?d.totalDuration():d._totalDuration)-(a-d._startTime)*d._timeScale,b,c):d.render((a-d._startTime)*d._timeScale,b,c)}d=g}this._onUpdate&&(b||(j.length&&k(),this._callback(\"onUpdate\"))),h&&(this._gc||(p===this._startTime||q!==this._timeScale)&&(0===this._time||o>=this.totalDuration())&&(f&&(j.length&&k(),this._timeline.autoRemoveChildren&&this._enabled(!1,!1),this._active=!1),!b&&this.vars[h]&&this._callback(h)))}},q._hasPausedChild=function(){for(var a=this._first;a;){if(a._paused||a instanceof d&&a._hasPausedChild())return!0;a=a._next}return!1},q.getChildren=function(a,b,d,e){e=e||-9999999999;for(var f=[],g=this._first,h=0;g;)g._startTime-1;)(d[e].timeline===this||b&&this._contains(d[e]))&&(g[h++]=d[e]);return f&&this._enabled(!1,!0),g},q.recent=function(){return this._recent},q._contains=function(a){for(var b=a.timeline;b;){if(b===this)return!0;b=b.timeline}return!1},q.shiftChildren=function(a,b,c){c=c||0;for(var d,e=this._first,f=this._labels;e;)e._startTime>=c&&(e._startTime+=a),e=e._next;if(b)for(d in f)f[d]>=c&&(f[d]+=a);return this._uncache(!0)},q._kill=function(a,b){if(!a&&!b)return this._enabled(!1,!1);for(var c=b?this.getTweensOf(b):this.getChildren(!0,!0,!1),d=c.length,e=!1;--d>-1;)c[d]._kill(a,b)&&(e=!0);return e},q.clear=function(a){var b=this.getChildren(!1,!0,!0),c=b.length;for(this._time=this._totalTime=0;--c>-1;)b[c]._enabled(!1,!1);return a!==!1&&(this._labels={}),this._uncache(!0)},q.invalidate=function(){for(var b=this._first;b;)b.invalidate(),b=b._next;return a.prototype.invalidate.call(this)},q._enabled=function(a,c){if(a===this._gc)for(var d=this._first;d;)d._enabled(a,!0),d=d._next;return b.prototype._enabled.call(this,a,c)},q.totalTime=function(b,c,d){this._forcingPlayhead=!0;var e=a.prototype.totalTime.apply(this,arguments);return this._forcingPlayhead=!1,e},q.duration=function(a){return arguments.length?(0!==this.duration()&&0!==a&&this.timeScale(this._duration/a),this):(this._dirty&&this.totalDuration(),this._duration)},q.totalDuration=function(a){if(!arguments.length){if(this._dirty){for(var b,c,d=0,e=this._last,f=999999999999;e;)b=e._prev,e._dirty&&e.totalDuration(),e._startTime>f&&this._sortChildren&&!e._paused&&!this._calculatingDuration?(this._calculatingDuration=1,this.add(e,e._startTime-e._delay),this._calculatingDuration=0):f=e._startTime,e._startTime<0&&!e._paused&&(d-=e._startTime,this._timeline.smoothChildTiming&&(this._startTime+=e._startTime/this._timeScale,this._time-=e._startTime,this._totalTime-=e._startTime,this._rawPrevTime-=e._startTime),this.shiftChildren(-e._startTime,!1,-9999999999),f=0),c=e._startTime+e._totalDuration/e._timeScale,c>d&&(d=c),e=b;this._duration=this._totalDuration=d,this._dirty=!1}return this._totalDuration}return a&&this.totalDuration()?this.timeScale(this._totalDuration/a):this},q.paused=function(b){if(!b)for(var c=this._first,d=this._time;c;)c._startTime===d&&\"isPause\"===c.data&&(c._rawPrevTime=0),c=c._next;return a.prototype.paused.apply(this,arguments)},q.usesFrames=function(){for(var b=this._timeline;b._timeline;)b=b._timeline;return b===a._rootFramesTimeline},q.rawTime=function(a){return a&&(this._paused||this._repeat&&this.time()>0&&this.totalProgress()<1)?this._totalTime%(this._duration+this._repeatDelay):this._paused?this._totalTime:(this._timeline.rawTime(a)-this._startTime)*this._timeScale},d},!0),_gsScope._gsDefine(\"TimelineMax\",[\"TimelineLite\",\"TweenLite\",\"easing.Ease\"],function(a,b,c){var d=function(b){a.call(this,b),this._repeat=this.vars.repeat||0,this._repeatDelay=this.vars.repeatDelay||0,this._cycle=0,this._yoyo=this.vars.yoyo===!0,this._dirty=!0},e=1e-10,f=b._internals,g=f.lazyTweens,h=f.lazyRender,i=_gsScope._gsDefine.globals,j=new c(null,null,1,0),k=d.prototype=new a;return k.constructor=d,k.kill()._gc=!1,d.version=\"2.0.2\",k.invalidate=function(){return this._yoyo=this.vars.yoyo===!0,this._repeat=this.vars.repeat||0,this._repeatDelay=this.vars.repeatDelay||0,this._uncache(!0),a.prototype.invalidate.call(this)},k.addCallback=function(a,c,d,e){return this.add(b.delayedCall(0,a,d,e),c)},k.removeCallback=function(a,b){if(a)if(null==b)this._kill(null,a);else for(var c=this.getTweensOf(a,!1),d=c.length,e=this._parseTimeOrLabel(b);--d>-1;)c[d]._startTime===e&&c[d]._enabled(!1,!1);return this},k.removePause=function(b){return this.removeCallback(a._internals.pauseCallback,b)},k.tweenTo=function(a,c){c=c||{};var d,e,f,g={ease:j,useFrames:this.usesFrames(),immediateRender:!1,lazy:!1},h=c.repeat&&i.TweenMax||b;for(e in c)g[e]=c[e];return g.time=this._parseTimeOrLabel(a),d=Math.abs(Number(g.time)-this._time)/this._timeScale||.001,f=new h(this,d,g),g.onStart=function(){f.target.paused(!0),f.vars.time===f.target.time()||d!==f.duration()||f.isFromTo||f.duration(Math.abs(f.vars.time-f.target.time())/f.target._timeScale).render(f.time(),!0,!0),c.onStart&&c.onStart.apply(c.onStartScope||c.callbackScope||f,c.onStartParams||[])},f},k.tweenFromTo=function(a,b,c){c=c||{},a=this._parseTimeOrLabel(a),c.startAt={onComplete:this.seek,onCompleteParams:[a],callbackScope:this},c.immediateRender=c.immediateRender!==!1;var d=this.tweenTo(b,c);return d.isFromTo=1,d.duration(Math.abs(d.vars.time-a)/this._timeScale||.001)},k.render=function(a,b,c){this._gc&&this._enabled(!0,!1);var d,f,i,j,k,l,m,n,o=this._time,p=this._dirty?this.totalDuration():this._totalDuration,q=this._duration,r=this._totalTime,s=this._startTime,t=this._timeScale,u=this._rawPrevTime,v=this._paused,w=this._cycle;if(o!==this._time&&(a+=this._time-o),a>=p-1e-7&&a>=0)this._locked||(this._totalTime=p,this._cycle=this._repeat),this._reversed||this._hasPausedChild()||(f=!0,j=\"onComplete\",k=!!this._timeline.autoRemoveChildren,0===this._duration&&(0>=a&&a>=-1e-7||0>u||u===e)&&u!==a&&this._first&&(k=!0,u>e&&(j=\"onReverseComplete\"))),this._rawPrevTime=this._duration||!b||a||this._rawPrevTime===a?a:e,this._yoyo&&0!==(1&this._cycle)?this._time=a=0:(this._time=q,a=q+1e-4);else if(1e-7>a)if(this._locked||(this._totalTime=this._cycle=0),this._time=0,(0!==o||0===q&&u!==e&&(u>0||0>a&&u>=0)&&!this._locked)&&(j=\"onReverseComplete\",f=this._reversed),0>a)this._active=!1,this._timeline.autoRemoveChildren&&this._reversed?(k=f=!0,j=\"onReverseComplete\"):u>=0&&this._first&&(k=!0),this._rawPrevTime=a;else{if(this._rawPrevTime=q||!b||a||this._rawPrevTime===a?a:e,0===a&&f)for(d=this._first;d&&0===d._startTime;)d._duration||(f=!1),d=d._next;a=0,this._initted||(k=!0)}else if(0===q&&0>u&&(k=!0),this._time=this._rawPrevTime=a,this._locked||(this._totalTime=a,0!==this._repeat&&(l=q+this._repeatDelay,this._cycle=this._totalTime/l>>0,0!==this._cycle&&this._cycle===this._totalTime/l&&a>=r&&this._cycle--,this._time=this._totalTime-this._cycle*l,this._yoyo&&0!==(1&this._cycle)&&(this._time=q-this._time),this._time>q?(this._time=q,a=q+1e-4):this._time<0?this._time=a=0:a=this._time)),this._hasPause&&!this._forcingPlayhead&&!b){if(a=this._time,a>=o||this._repeat&&w!==this._cycle)for(d=this._first;d&&d._startTime<=a&&!m;)d._duration||\"isPause\"!==d.data||d.ratio||0===d._startTime&&0===this._rawPrevTime||(m=d),d=d._next;else for(d=this._last;d&&d._startTime>=a&&!m;)d._duration||\"isPause\"===d.data&&d._rawPrevTime>0&&(m=d),d=d._prev;m&&m._startTime0&&(this._active=!0),0===r&&this.vars.onStart&&(0===this._totalTime&&this._totalDuration||b||this._callback(\"onStart\")),n=this._time,n>=o)for(d=this._first;d&&(i=d._next,n===this._time&&(!this._paused||v));)(d._active||d._startTime<=this._time&&!d._paused&&!d._gc)&&(m===d&&this.pause(),d._reversed?d.render((d._dirty?d.totalDuration():d._totalDuration)-(a-d._startTime)*d._timeScale,b,c):d.render((a-d._startTime)*d._timeScale,b,c)),d=i;else for(d=this._last;d&&(i=d._prev,n===this._time&&(!this._paused||v));){if(d._active||d._startTime<=o&&!d._paused&&!d._gc){if(m===d){for(m=d._prev;m&&m.endTime()>this._time;)m.render(m._reversed?m.totalDuration()-(a-m._startTime)*m._timeScale:(a-m._startTime)*m._timeScale,b,c),m=m._prev;m=null,this.pause()}d._reversed?d.render((d._dirty?d.totalDuration():d._totalDuration)-(a-d._startTime)*d._timeScale,b,c):d.render((a-d._startTime)*d._timeScale,b,c)}d=i}this._onUpdate&&(b||(g.length&&h(),this._callback(\"onUpdate\"))),j&&(this._locked||this._gc||(s===this._startTime||t!==this._timeScale)&&(0===this._time||p>=this.totalDuration())&&(f&&(g.length&&h(),this._timeline.autoRemoveChildren&&this._enabled(!1,!1),this._active=!1),!b&&this.vars[j]&&this._callback(j)))},k.getActive=function(a,b,c){null==a&&(a=!0),null==b&&(b=!0),null==c&&(c=!1);var d,e,f=[],g=this.getChildren(a,b,c),h=0,i=g.length;for(d=0;i>d;d++)e=g[d],e.isActive()&&(f[h++]=e);return f},k.getLabelAfter=function(a){a||0!==a&&(a=this._time);var b,c=this.getLabelsArray(),d=c.length;for(b=0;d>b;b++)if(c[b].time>a)return c[b].name;return null},k.getLabelBefore=function(a){null==a&&(a=this._time);for(var b=this.getLabelsArray(),c=b.length;--c>-1;)if(b[c].timethis._duration&&(a=this._duration),this._yoyo&&0!==(1&this._cycle)?a=this._duration-a+this._cycle*(this._duration+this._repeatDelay):0!==this._repeat&&(a+=this._cycle*(this._duration+this._repeatDelay)),this.totalTime(a,b)):this._time},k.repeat=function(a){return arguments.length?(this._repeat=a,this._uncache(!0)):this._repeat},k.repeatDelay=function(a){return arguments.length?(this._repeatDelay=a,this._uncache(!0)):this._repeatDelay},k.yoyo=function(a){return arguments.length?(this._yoyo=a,this):this._yoyo},k.currentLabel=function(a){return arguments.length?this.seek(a,!0):this.getLabelBefore(this._time+1e-8)},d},!0),function(){var a=180/Math.PI,b=[],c=[],d=[],e={},f=_gsScope._gsDefine.globals,g=function(a,b,c,d){c===d&&(c=d-(d-b)/1e6),a===b&&(b=a+(c-a)/1e6),this.a=a,this.b=b,this.c=c,this.d=d,this.da=d-a,this.ca=c-a,this.ba=b-a},h=\",x,y,z,left,top,right,bottom,marginTop,marginLeft,marginRight,marginBottom,paddingLeft,paddingTop,paddingRight,paddingBottom,backgroundPosition,backgroundPosition_y,\",i=function(a,b,c,d){var e={a:a},f={},g={},h={c:d},i=(a+b)/2,j=(b+c)/2,k=(c+d)/2,l=(i+j)/2,m=(j+k)/2,n=(m-l)/8;return e.b=i+(a-i)/4,f.b=l+n,e.c=f.a=(e.b+f.b)/2,f.c=g.a=(l+m)/2,g.b=m-n,h.b=k+(d-k)/4,g.c=h.a=(g.b+h.b)/2,[e,f,g,h]},j=function(a,e,f,g,h){var j,k,l,m,n,o,p,q,r,s,t,u,v,w=a.length-1,x=0,y=a[0].a;for(j=0;w>j;j++)n=a[x],k=n.a,l=n.d,m=a[x+1].d,h?(t=b[j],u=c[j],v=(u+t)*e*.25/(g?.5:d[j]||.5),o=l-(l-k)*(g?.5*e:0!==t?v/t:0),p=l+(m-l)*(g?.5*e:0!==u?v/u:0),q=l-(o+((p-o)*(3*t/(t+u)+.5)/4||0))):(o=l-(l-k)*e*.5,p=l+(m-l)*e*.5,q=l-(o+p)/2),o+=q,p+=q,n.c=r=o,0!==j?n.b=y:n.b=y=n.a+.6*(n.c-n.a),n.da=l-k,n.ca=r-k,n.ba=y-k,f?(s=i(k,y,r,l),a.splice(x,1,s[0],s[1],s[2],s[3]),x+=4):x++,y=p;n=a[x],n.b=y,n.c=y+.4*(n.d-y),n.da=n.d-n.a,n.ca=n.c-n.a,n.ba=y-n.a,f&&(s=i(n.a,y,n.c,n.d),a.splice(x,1,s[0],s[1],s[2],s[3]))},k=function(a,d,e,f){var h,i,j,k,l,m,n=[];if(f)for(a=[f].concat(a),i=a.length;--i>-1;)\"string\"==typeof(m=a[i][d])&&\"=\"===m.charAt(1)&&(a[i][d]=f[d]+Number(m.charAt(0)+m.substr(2)));if(h=a.length-2,0>h)return n[0]=new g(a[0][d],0,0,a[0][d]),n;for(i=0;h>i;i++)j=a[i][d],k=a[i+1][d],n[i]=new g(j,0,0,k),e&&(l=a[i+2][d],b[i]=(b[i]||0)+(k-j)*(k-j),c[i]=(c[i]||0)+(l-k)*(l-k));return n[i]=new g(a[i][d],0,0,a[i+1][d]),n},l=function(a,f,g,i,l,m){var n,o,p,q,r,s,t,u,v={},w=[],x=m||a[0];l=\"string\"==typeof l?\",\"+l+\",\":h,null==f&&(f=1);for(o in a[0])w.push(o);if(a.length>1){for(u=a[a.length-1],t=!0,n=w.length;--n>-1;)if(o=w[n],Math.abs(x[o]-u[o])>.05){t=!1;break}t&&(a=a.concat(),m&&a.unshift(m),a.push(a[1]),m=a[a.length-3])}for(b.length=c.length=d.length=0,n=w.length;--n>-1;)o=w[n],e[o]=-1!==l.indexOf(\",\"+o+\",\"),v[o]=k(a,o,e[o],m);for(n=b.length;--n>-1;)b[n]=Math.sqrt(b[n]),\nc[n]=Math.sqrt(c[n]);if(!i){for(n=w.length;--n>-1;)if(e[o])for(p=v[w[n]],s=p.length-1,q=0;s>q;q++)r=p[q+1].da/c[q]+p[q].da/b[q]||0,d[q]=(d[q]||0)+r*r;for(n=d.length;--n>-1;)d[n]=Math.sqrt(d[n])}for(n=w.length,q=g?4:1;--n>-1;)o=w[n],p=v[o],j(p,f,g,i,e[o]),t&&(p.splice(0,q),p.splice(p.length-q,q));return v},m=function(a,b,c){b=b||\"soft\";var d,e,f,h,i,j,k,l,m,n,o,p={},q=\"cubic\"===b?3:2,r=\"soft\"===b,s=[];if(r&&c&&(a=[c].concat(a)),null==a||a.length-1;){for(m=s[j],p[m]=i=[],n=0,l=a.length,k=0;l>k;k++)d=null==c?a[k][m]:\"string\"==typeof(o=a[k][m])&&\"=\"===o.charAt(1)?c[m]+Number(o.charAt(0)+o.substr(2)):Number(o),r&&k>1&&l-1>k&&(i[n++]=(d+i[n-2])/2),i[n++]=d;for(l=n-q+1,n=0,k=0;l>k;k+=q)d=i[k],e=i[k+1],f=i[k+2],h=2===q?0:i[k+3],i[n++]=o=3===q?new g(d,e,f,h):new g(d,(2*e+d)/3,(2*e+f)/3,f);i.length=n}return p},n=function(a,b,c){for(var d,e,f,g,h,i,j,k,l,m,n,o=1/c,p=a.length;--p>-1;)for(m=a[p],f=m.a,g=m.d-f,h=m.c-f,i=m.b-f,d=e=0,k=1;c>=k;k++)j=o*k,l=1-j,d=e-(e=(j*j*g+3*l*(j*h+l*i))*j),n=p*c+k-1,b[n]=(b[n]||0)+d*d},o=function(a,b){b=b>>0||6;var c,d,e,f,g=[],h=[],i=0,j=0,k=b-1,l=[],m=[];for(c in a)n(a[c],g,b);for(e=g.length,d=0;e>d;d++)i+=Math.sqrt(g[d]),f=d%b,m[f]=i,f===k&&(j+=i,f=d/b>>0,l[f]=m,h[f]=j,i=0,m=[]);return{length:j,lengths:h,segments:l}},p=_gsScope._gsDefine.plugin({propName:\"bezier\",priority:-1,version:\"1.3.8\",API:2,global:!0,init:function(a,b,c){this._target=a,b instanceof Array&&(b={values:b}),this._func={},this._mod={},this._props=[],this._timeRes=null==b.timeResolution?6:parseInt(b.timeResolution,10);var d,e,f,g,h,i=b.values||[],j={},k=i[0],n=b.autoRotate||c.vars.orientToBezier;this._autoRotate=n?n instanceof Array?n:[[\"x\",\"y\",\"rotation\",n===!0?0:Number(n)||0]]:null;for(d in k)this._props.push(d);for(f=this._props.length;--f>-1;)d=this._props[f],this._overwriteProps.push(d),e=this._func[d]=\"function\"==typeof a[d],j[d]=e?a[d.indexOf(\"set\")||\"function\"!=typeof a[\"get\"+d.substr(3)]?d:\"get\"+d.substr(3)]():parseFloat(a[d]),h||j[d]!==i[0][d]&&(h=j);if(this._beziers=\"cubic\"!==b.type&&\"quadratic\"!==b.type&&\"soft\"!==b.type?l(i,isNaN(b.curviness)?1:b.curviness,!1,\"thruBasic\"===b.type,b.correlate,h):m(i,b.type,j),this._segCount=this._beziers[d].length,this._timeRes){var p=o(this._beziers,this._timeRes);this._length=p.length,this._lengths=p.lengths,this._segments=p.segments,this._l1=this._li=this._s1=this._si=0,this._l2=this._lengths[0],this._curSeg=this._segments[0],this._s2=this._curSeg[0],this._prec=1/this._curSeg.length}if(n=this._autoRotate)for(this._initialRotations=[],n[0]instanceof Array||(this._autoRotate=n=[n]),f=n.length;--f>-1;){for(g=0;3>g;g++)d=n[f][g],this._func[d]=\"function\"==typeof a[d]?a[d.indexOf(\"set\")||\"function\"!=typeof a[\"get\"+d.substr(3)]?d:\"get\"+d.substr(3)]:!1;d=n[f][2],this._initialRotations[f]=(this._func[d]?this._func[d].call(this._target):this._target[d])||0,this._overwriteProps.push(d)}return this._startRatio=c.vars.runBackwards?1:0,!0},set:function(b){var c,d,e,f,g,h,i,j,k,l,m=this._segCount,n=this._func,o=this._target,p=b!==this._startRatio;if(this._timeRes){if(k=this._lengths,l=this._curSeg,b*=this._length,e=this._li,b>this._l2&&m-1>e){for(j=m-1;j>e&&(this._l2=k[++e])<=b;);this._l1=k[e-1],this._li=e,this._curSeg=l=this._segments[e],this._s2=l[this._s1=this._si=0]}else if(b0){for(;e>0&&(this._l1=k[--e])>=b;);0===e&&bthis._s2&&ee&&(this._s2=l[++e])<=b;);this._s1=l[e-1],this._si=e}else if(b0){for(;e>0&&(this._s1=l[--e])>=b;);0===e&&bb?0:b>=1?m-1:m*b>>0,h=(b-c*(1/m))*m;for(d=1-h,e=this._props.length;--e>-1;)f=this._props[e],g=this._beziers[f][c],i=(h*h*g.da+3*d*(h*g.ca+d*g.ba))*h+g.a,this._mod[f]&&(i=this._mod[f](i,o)),n[f]?o[f](i):o[f]=i;if(this._autoRotate){var q,r,s,t,u,v,w,x=this._autoRotate;for(e=x.length;--e>-1;)f=x[e][2],v=x[e][3]||0,w=x[e][4]===!0?1:a,g=this._beziers[x[e][0]],q=this._beziers[x[e][1]],g&&q&&(g=g[c],q=q[c],r=g.a+(g.b-g.a)*h,t=g.b+(g.c-g.b)*h,r+=(t-r)*h,t+=(g.c+(g.d-g.c)*h-t)*h,s=q.a+(q.b-q.a)*h,u=q.b+(q.c-q.b)*h,s+=(u-s)*h,u+=(q.c+(q.d-q.c)*h-u)*h,i=p?Math.atan2(u-s,t-r)*w+v:this._initialRotations[e],this._mod[f]&&(i=this._mod[f](i,o)),n[f]?o[f](i):o[f]=i)}}}),q=p.prototype;p.bezierThrough=l,p.cubicToQuadratic=i,p._autoCSS=!0,p.quadraticToCubic=function(a,b,c){return new g(a,(2*b+a)/3,(2*b+c)/3,c)},p._cssRegister=function(){var a=f.CSSPlugin;if(a){var b=a._internals,c=b._parseToProxy,d=b._setPluginRatio,e=b.CSSPropTween;b._registerComplexSpecialProp(\"bezier\",{parser:function(a,b,f,g,h,i){b instanceof Array&&(b={values:b}),i=new p;var j,k,l,m=b.values,n=m.length-1,o=[],q={};if(0>n)return h;for(j=0;n>=j;j++)l=c(a,m[j],g,h,i,n!==j),o[j]=l.end;for(k in b)q[k]=b[k];return q.values=o,h=new e(a,\"bezier\",0,0,l.pt,2),h.data=l,h.plugin=i,h.setRatio=d,0===q.autoRotate&&(q.autoRotate=!0),!q.autoRotate||q.autoRotate instanceof Array||(j=q.autoRotate===!0?0:Number(q.autoRotate),q.autoRotate=null!=l.end.left?[[\"left\",\"top\",\"rotation\",j,!1]]:null!=l.end.x?[[\"x\",\"y\",\"rotation\",j,!1]]:!1),q.autoRotate&&(g._transform||g._enableTransforms(!1),l.autoRotate=g._target._gsTransform,l.proxy.rotation=l.autoRotate.rotation||0,g._overwriteProps.push(\"rotation\")),i._onInitTween(l.proxy,q,g._tween),h}})}},q._mod=function(a){for(var b,c=this._overwriteProps,d=c.length;--d>-1;)b=a[c[d]],b&&\"function\"==typeof b&&(this._mod[c[d]]=b)},q._kill=function(a){var b,c,d=this._props;for(b in this._beziers)if(b in a)for(delete this._beziers[b],delete this._func[b],c=d.length;--c>-1;)d[c]===b&&d.splice(c,1);if(d=this._autoRotate)for(c=d.length;--c>-1;)a[d[c][2]]&&d.splice(c,1);return this._super._kill.call(this,a)}}(),_gsScope._gsDefine(\"plugins.CSSPlugin\",[\"plugins.TweenPlugin\",\"TweenLite\"],function(a,b){var c,d,e,f,g=function(){a.call(this,\"css\"),this._overwriteProps.length=0,this.setRatio=g.prototype.setRatio},h=_gsScope._gsDefine.globals,i={},j=g.prototype=new a(\"css\");j.constructor=g,g.version=\"2.0.2\",g.API=2,g.defaultTransformPerspective=0,g.defaultSkewType=\"compensated\",g.defaultSmoothOrigin=!0,j=\"px\",g.suffixMap={top:j,right:j,bottom:j,left:j,width:j,height:j,fontSize:j,padding:j,margin:j,perspective:j,lineHeight:\"\"};var k,l,m,n,o,p,q,r,s=/(?:\\-|\\.|\\b)(\\d|\\.|e\\-)+/g,t=/(?:\\d|\\-\\d|\\.\\d|\\-\\.\\d|\\+=\\d|\\-=\\d|\\+=.\\d|\\-=\\.\\d)+/g,u=/(?:\\+=|\\-=|\\-|\\b)[\\d\\-\\.]+[a-zA-Z0-9]*(?:%|\\b)/gi,v=/(?![+-]?\\d*\\.?\\d+|[+-]|e[+-]\\d+)[^0-9]/g,w=/(?:\\d|\\-|\\+|=|#|\\.)*/g,x=/opacity *= *([^)]*)/i,y=/opacity:([^;]*)/i,z=/alpha\\(opacity *=.+?\\)/i,A=/^(rgb|hsl)/,B=/([A-Z])/g,C=/-([a-z])/gi,D=/(^(?:url\\(\\\"|url\\())|(?:(\\\"\\))$|\\)$)/gi,E=function(a,b){return b.toUpperCase()},F=/(?:Left|Right|Width)/i,G=/(M11|M12|M21|M22)=[\\d\\-\\.e]+/gi,H=/progid\\:DXImageTransform\\.Microsoft\\.Matrix\\(.+?\\)/i,I=/,(?=[^\\)]*(?:\\(|$))/gi,J=/[\\s,\\(]/i,K=Math.PI/180,L=180/Math.PI,M={},N={style:{}},O=_gsScope.document||{createElement:function(){return N}},P=function(a,b){return O.createElementNS?O.createElementNS(b||\"http://www.w3.org/1999/xhtml\",a):O.createElement(a)},Q=P(\"div\"),R=P(\"img\"),S=g._internals={_specialProps:i},T=(_gsScope.navigator||{}).userAgent||\"\",U=function(){var a=T.indexOf(\"Android\"),b=P(\"a\");return m=-1!==T.indexOf(\"Safari\")&&-1===T.indexOf(\"Chrome\")&&(-1===a||parseFloat(T.substr(a+8,2))>3),o=m&&parseFloat(T.substr(T.indexOf(\"Version/\")+8,2))<6,n=-1!==T.indexOf(\"Firefox\"),(/MSIE ([0-9]{1,}[\\.0-9]{0,})/.exec(T)||/Trident\\/.*rv:([0-9]{1,}[\\.0-9]{0,})/.exec(T))&&(p=parseFloat(RegExp.$1)),b?(b.style.cssText=\"top:1px;opacity:.55;\",/^0.55/.test(b.style.opacity)):!1}(),V=function(a){return x.test(\"string\"==typeof a?a:(a.currentStyle?a.currentStyle.filter:a.style.filter)||\"\")?parseFloat(RegExp.$1)/100:1},W=function(a){_gsScope.console&&console.log(a)},X=\"\",Y=\"\",Z=function(a,b){b=b||Q;var c,d,e=b.style;if(void 0!==e[a])return a;for(a=a.charAt(0).toUpperCase()+a.substr(1),c=[\"O\",\"Moz\",\"ms\",\"Ms\",\"Webkit\"],d=5;--d>-1&&void 0===e[c[d]+a];);return d>=0?(Y=3===d?\"ms\":c[d],X=\"-\"+Y.toLowerCase()+\"-\",Y+a):null},$=(\"undefined\"!=typeof window?window:O.defaultView||{getComputedStyle:function(){}}).getComputedStyle,_=g.getStyle=function(a,b,c,d,e){var f;return U||\"opacity\"!==b?(!d&&a.style[b]?f=a.style[b]:(c=c||$(a))?f=c[b]||c.getPropertyValue(b)||c.getPropertyValue(b.replace(B,\"-$1\").toLowerCase()):a.currentStyle&&(f=a.currentStyle[b]),null==e||f&&\"none\"!==f&&\"auto\"!==f&&\"auto auto\"!==f?f:e):V(a)},aa=S.convertToPixels=function(a,c,d,e,f){if(\"px\"===e||!e&&\"lineHeight\"!==c)return d;if(\"auto\"===e||!d)return 0;var h,i,j,k=F.test(c),l=a,m=Q.style,n=0>d,o=1===d;if(n&&(d=-d),o&&(d*=100),\"lineHeight\"!==c||e)if(\"%\"===e&&-1!==c.indexOf(\"border\"))h=d/100*(k?a.clientWidth:a.clientHeight);else{if(m.cssText=\"border:0 solid red;position:\"+_(a,\"position\")+\";line-height:0;\",\"%\"!==e&&l.appendChild&&\"v\"!==e.charAt(0)&&\"rem\"!==e)m[k?\"borderLeftWidth\":\"borderTopWidth\"]=d+e;else{if(l=a.parentNode||O.body,-1!==_(l,\"display\").indexOf(\"flex\")&&(m.position=\"absolute\"),i=l._gsCache,j=b.ticker.frame,i&&k&&i.time===j)return i.width*d/100;m[k?\"width\":\"height\"]=d+e}l.appendChild(Q),h=parseFloat(Q[k?\"offsetWidth\":\"offsetHeight\"]),l.removeChild(Q),k&&\"%\"===e&&g.cacheWidths!==!1&&(i=l._gsCache=l._gsCache||{},i.time=j,i.width=h/d*100),0!==h||f||(h=aa(a,c,d,e,!0))}else i=$(a).lineHeight,a.style.lineHeight=d,h=parseFloat($(a).lineHeight),a.style.lineHeight=i;return o&&(h/=100),n?-h:h},ba=S.calculateOffset=function(a,b,c){if(\"absolute\"!==_(a,\"position\",c))return 0;var d=\"left\"===b?\"Left\":\"Top\",e=_(a,\"margin\"+d,c);return a[\"offset\"+d]-(aa(a,b,parseFloat(e),e.replace(w,\"\"))||0)},ca=function(a,b){var c,d,e,f={};if(b=b||$(a,null))if(c=b.length)for(;--c>-1;)e=b[c],(-1===e.indexOf(\"-transform\")||Da===e)&&(f[e.replace(C,E)]=b.getPropertyValue(e));else for(c in b)(-1===c.indexOf(\"Transform\")||Ca===c)&&(f[c]=b[c]);else if(b=a.currentStyle||a.style)for(c in b)\"string\"==typeof c&&void 0===f[c]&&(f[c.replace(C,E)]=b[c]);return U||(f.opacity=V(a)),d=Ra(a,b,!1),f.rotation=d.rotation,f.skewX=d.skewX,f.scaleX=d.scaleX,f.scaleY=d.scaleY,f.x=d.x,f.y=d.y,Fa&&(f.z=d.z,f.rotationX=d.rotationX,f.rotationY=d.rotationY,f.scaleZ=d.scaleZ),f.filters&&delete f.filters,f},da=function(a,b,c,d,e){var f,g,h,i={},j=a.style;for(g in c)\"cssText\"!==g&&\"length\"!==g&&isNaN(g)&&(b[g]!==(f=c[g])||e&&e[g])&&-1===g.indexOf(\"Origin\")&&(\"number\"==typeof f||\"string\"==typeof f)&&(i[g]=\"auto\"!==f||\"left\"!==g&&\"top\"!==g?\"\"!==f&&\"auto\"!==f&&\"none\"!==f||\"string\"!=typeof b[g]||\"\"===b[g].replace(v,\"\")?f:0:ba(a,g),void 0!==j[g]&&(h=new sa(j,g,j[g],h)));if(d)for(g in d)\"className\"!==g&&(i[g]=d[g]);return{difs:i,firstMPT:h}},ea={width:[\"Left\",\"Right\"],height:[\"Top\",\"Bottom\"]},fa=[\"marginLeft\",\"marginRight\",\"marginTop\",\"marginBottom\"],ga=function(a,b,c){if(\"svg\"===(a.nodeName+\"\").toLowerCase())return(c||$(a))[b]||0;if(a.getCTM&&Oa(a))return a.getBBox()[b]||0;var d=parseFloat(\"width\"===b?a.offsetWidth:a.offsetHeight),e=ea[b],f=e.length;for(c=c||$(a,null);--f>-1;)d-=parseFloat(_(a,\"padding\"+e[f],c,!0))||0,d-=parseFloat(_(a,\"border\"+e[f]+\"Width\",c,!0))||0;return d},ha=function(a,b){if(\"contain\"===a||\"auto\"===a||\"auto auto\"===a)return a+\" \";(null==a||\"\"===a)&&(a=\"0 0\");var c,d=a.split(\" \"),e=-1!==a.indexOf(\"left\")?\"0%\":-1!==a.indexOf(\"right\")?\"100%\":d[0],f=-1!==a.indexOf(\"top\")?\"0%\":-1!==a.indexOf(\"bottom\")?\"100%\":d[1];if(d.length>3&&!b){for(d=a.split(\", \").join(\",\").split(\",\"),a=[],c=0;c2?\" \"+d[2]:\"\"),b&&(b.oxp=-1!==e.indexOf(\"%\"),b.oyp=-1!==f.indexOf(\"%\"),b.oxr=\"=\"===e.charAt(1),b.oyr=\"=\"===f.charAt(1),b.ox=parseFloat(e.replace(v,\"\")),b.oy=parseFloat(f.replace(v,\"\")),b.v=a),b||a},ia=function(a,b){return\"function\"==typeof a&&(a=a(r,q)),\"string\"==typeof a&&\"=\"===a.charAt(1)?parseInt(a.charAt(0)+\"1\",10)*parseFloat(a.substr(2)):parseFloat(a)-parseFloat(b)||0},ja=function(a,b){\"function\"==typeof a&&(a=a(r,q));var c=\"string\"==typeof a&&\"=\"===a.charAt(1);return\"string\"==typeof a&&\"v\"===a.charAt(a.length-2)&&(a=(c?a.substr(0,2):0)+window[\"inner\"+(\"vh\"===a.substr(-2)?\"Height\":\"Width\")]*(parseFloat(c?a.substr(2):a)/100)),null==a?b:c?parseInt(a.charAt(0)+\"1\",10)*parseFloat(a.substr(2))+b:parseFloat(a)||0},ka=function(a,b,c,d){var e,f,g,h,i,j=1e-6;return\"function\"==typeof a&&(a=a(r,q)),null==a?h=b:\"number\"==typeof a?h=a:(e=360,f=a.split(\"_\"),i=\"=\"===a.charAt(1),g=(i?parseInt(a.charAt(0)+\"1\",10)*parseFloat(f[0].substr(2)):parseFloat(f[0]))*(-1===a.indexOf(\"rad\")?1:L)-(i?0:b),f.length&&(d&&(d[c]=b+g),-1!==a.indexOf(\"short\")&&(g%=e,g!==g%(e/2)&&(g=0>g?g+e:g-e)),-1!==a.indexOf(\"_cw\")&&0>g?g=(g+9999999999*e)%e-(g/e|0)*e:-1!==a.indexOf(\"ccw\")&&g>0&&(g=(g-9999999999*e)%e-(g/e|0)*e)),h=b+g),j>h&&h>-j&&(h=0),h},la={aqua:[0,255,255],lime:[0,255,0],silver:[192,192,192],black:[0,0,0],maroon:[128,0,0],teal:[0,128,128],blue:[0,0,255],navy:[0,0,128],white:[255,255,255],fuchsia:[255,0,255],olive:[128,128,0],yellow:[255,255,0],orange:[255,165,0],gray:[128,128,128],purple:[128,0,128],green:[0,128,0],red:[255,0,0],pink:[255,192,203],cyan:[0,255,255],transparent:[255,255,255,0]},ma=function(a,b,c){return a=0>a?a+1:a>1?a-1:a,255*(1>6*a?b+(c-b)*a*6:.5>a?c:2>3*a?b+(c-b)*(2/3-a)*6:b)+.5|0},na=g.parseColor=function(a,b){var c,d,e,f,g,h,i,j,k,l,m;if(a)if(\"number\"==typeof a)c=[a>>16,a>>8&255,255&a];else{if(\",\"===a.charAt(a.length-1)&&(a=a.substr(0,a.length-1)),la[a])c=la[a];else if(\"#\"===a.charAt(0))4===a.length&&(d=a.charAt(1),e=a.charAt(2),f=a.charAt(3),a=\"#\"+d+d+e+e+f+f),a=parseInt(a.substr(1),16),c=[a>>16,a>>8&255,255&a];else if(\"hsl\"===a.substr(0,3))if(c=m=a.match(s),b){if(-1!==a.indexOf(\"=\"))return a.match(t)}else g=Number(c[0])%360/360,h=Number(c[1])/100,i=Number(c[2])/100,e=.5>=i?i*(h+1):i+h-i*h,d=2*i-e,c.length>3&&(c[3]=Number(c[3])),c[0]=ma(g+1/3,d,e),c[1]=ma(g,d,e),c[2]=ma(g-1/3,d,e);else c=a.match(s)||la.transparent;c[0]=Number(c[0]),c[1]=Number(c[1]),c[2]=Number(c[2]),c.length>3&&(c[3]=Number(c[3]))}else c=la.black;return b&&!m&&(d=c[0]/255,e=c[1]/255,f=c[2]/255,j=Math.max(d,e,f),k=Math.min(d,e,f),i=(j+k)/2,j===k?g=h=0:(l=j-k,h=i>.5?l/(2-j-k):l/(j+k),g=j===d?(e-f)/l+(f>e?6:0):j===e?(f-d)/l+2:(d-e)/l+4,g*=60),c[0]=g+.5|0,c[1]=100*h+.5|0,c[2]=100*i+.5|0),c},oa=function(a,b){var c,d,e,f=a.match(pa)||[],g=0,h=\"\";if(!f.length)return a;for(c=0;c0?g[0].replace(s,\"\"):\"\";return k?e=b?function(a){var b,m,n,o;if(\"number\"==typeof a)a+=l;else if(d&&I.test(a)){for(o=a.replace(I,\"|\").split(\"|\"),n=0;nn--)for(;++nm--)for(;++mi;i++)h[a[i]]=j[i]=j[i]||j[(i-1)/2>>0];return e.parse(b,h,f,g)}},sa=(S._setPluginRatio=function(a){this.plugin.setRatio(a);for(var b,c,d,e,f,g=this.data,h=g.proxy,i=g.firstMPT,j=1e-6;i;)b=h[i.v],i.r?b=i.r(b):j>b&&b>-j&&(b=0),i.t[i.p]=b,i=i._next;if(g.autoRotate&&(g.autoRotate.rotation=g.mod?g.mod.call(this._tween,h.rotation,this.t,this._tween):h.rotation),1===a||0===a)for(i=g.firstMPT,f=1===a?\"e\":\"b\";i;){if(c=i.t,c.type){if(1===c.type){for(e=c.xs0+c.s+c.xs1,d=1;d0;)i=\"xn\"+g,h=d.p+\"_\"+i,n[h]=d.data[i],m[h]=d[i],f||(j=new sa(d,i,h,j,d.rxp[i]));d=d._next}return{proxy:m,end:n,firstMPT:j,pt:k}},S.CSSPropTween=function(a,b,d,e,g,h,i,j,k,l,m){this.t=a,this.p=b,this.s=d,this.c=e,this.n=i||b,a instanceof ta||f.push(this.n),this.r=j?\"function\"==typeof j?j:Math.round:j,this.type=h||0,k&&(this.pr=k,c=!0),this.b=void 0===l?d:l,this.e=void 0===m?d+e:m,g&&(this._next=g,g._prev=this)}),ua=function(a,b,c,d,e,f){var g=new ta(a,b,c,d-c,e,-1,f);return g.b=c,g.e=g.xs0=d,g},va=g.parseComplex=function(a,b,c,d,e,f,h,i,j,l){c=c||f||\"\",\"function\"==typeof d&&(d=d(r,q)),h=new ta(a,b,0,0,h,l?2:1,null,!1,i,c,d),d+=\"\",e&&pa.test(d+c)&&(d=[c,d],g.colorStringFilter(d),c=d[0],d=d[1]);var m,n,o,p,u,v,w,x,y,z,A,B,C,D=c.split(\", \").join(\",\").split(\" \"),E=d.split(\", \").join(\",\").split(\" \"),F=D.length,G=k!==!1;for((-1!==d.indexOf(\",\")||-1!==c.indexOf(\",\"))&&(-1!==(d+c).indexOf(\"rgb\")||-1!==(d+c).indexOf(\"hsl\")?(D=D.join(\" \").replace(I,\", \").split(\" \"),E=E.join(\" \").replace(I,\", \").split(\" \")):(D=D.join(\" \").split(\",\").join(\", \").split(\" \"),E=E.join(\" \").split(\",\").join(\", \").split(\" \")),F=D.length),F!==E.length&&(D=(f||\"\").split(\" \"),F=D.length),h.plugin=j,h.setRatio=l,pa.lastIndex=0,m=0;F>m;m++)if(p=D[m],u=E[m]+\"\",x=parseFloat(p),x||0===x)h.appendXtra(\"\",x,ia(u,x),u.replace(t,\"\"),G&&-1!==u.indexOf(\"px\")?Math.round:!1,!0);else if(e&&pa.test(p))B=u.indexOf(\")\")+1,B=\")\"+(B?u.substr(B):\"\"),C=-1!==u.indexOf(\"hsl\")&&U,z=u,p=na(p,C),u=na(u,C),y=p.length+u.length>6,y&&!U&&0===u[3]?(h[\"xs\"+h.l]+=h.l?\" transparent\":\"transparent\",h.e=h.e.split(E[m]).join(\"transparent\")):(U||(y=!1),C?h.appendXtra(z.substr(0,z.indexOf(\"hsl\"))+(y?\"hsla(\":\"hsl(\"),p[0],ia(u[0],p[0]),\",\",!1,!0).appendXtra(\"\",p[1],ia(u[1],p[1]),\"%,\",!1).appendXtra(\"\",p[2],ia(u[2],p[2]),y?\"%,\":\"%\"+B,!1):h.appendXtra(z.substr(0,z.indexOf(\"rgb\"))+(y?\"rgba(\":\"rgb(\"),p[0],u[0]-p[0],\",\",Math.round,!0).appendXtra(\"\",p[1],u[1]-p[1],\",\",Math.round).appendXtra(\"\",p[2],u[2]-p[2],y?\",\":B,Math.round),y&&(p=p.length<4?1:p[3],h.appendXtra(\"\",p,(u.length<4?1:u[3])-p,B,!1))),pa.lastIndex=0;else if(v=p.match(s)){if(w=u.match(t),!w||w.length!==v.length)return h;for(o=0,n=0;n0;)j[\"xn\"+wa]=0,j[\"xs\"+wa]=\"\";j.xs0=\"\",j._next=j._prev=j.xfirst=j.data=j.plugin=j.setRatio=j.rxp=null,j.appendXtra=function(a,b,c,d,e,f){var g=this,h=g.l;return g[\"xs\"+h]+=f&&(h||g[\"xs\"+h])?\" \"+a:a||\"\",c||0===h||g.plugin?(g.l++,g.type=g.setRatio?2:1,g[\"xs\"+g.l]=d||\"\",h>0?(g.data[\"xn\"+h]=b+c,g.rxp[\"xn\"+h]=e,g[\"xn\"+h]=b,g.plugin||(g.xfirst=new ta(g,\"xn\"+h,b,c,g.xfirst||g,0,g.n,e,g.pr),g.xfirst.xs0=0),g):(g.data={s:b+c},g.rxp={},g.s=b,g.c=c,g.r=e,g)):(g[\"xs\"+h]+=b+(d||\"\"),g)};var xa=function(a,b){b=b||{},this.p=b.prefix?Z(a)||a:a,i[a]=i[this.p]=this,this.format=b.formatter||qa(b.defaultValue,b.color,b.collapsible,b.multi),b.parser&&(this.parse=b.parser),this.clrs=b.color,this.multi=b.multi,this.keyword=b.keyword,this.dflt=b.defaultValue,this.pr=b.priority||0},ya=S._registerComplexSpecialProp=function(a,b,c){\"object\"!=typeof b&&(b={parser:c});var d,e,f=a.split(\",\"),g=b.defaultValue;for(c=c||[g],d=0;dh.length?i.length:h.length,g=0;j>g;g++)b=h[g]=h[g]||this.dflt,c=i[g]=i[g]||this.dflt,m&&(k=b.indexOf(m),l=c.indexOf(m),k!==l&&(-1===l?h[g]=h[g].split(m).join(\"\"):-1===k&&(h[g]+=\" \"+m)));b=h.join(\", \"),c=i.join(\", \")}return va(a,this.p,b,c,this.clrs,this.dflt,d,this.pr,e,f)},j.parse=function(a,b,c,d,f,g,h){return this.parseComplex(a.style,this.format(_(a,this.p,e,!1,this.dflt)),this.format(b),f,g)},g.registerSpecialProp=function(a,b,c){ya(a,{parser:function(a,d,e,f,g,h,i){var j=new ta(a,e,0,0,g,2,e,!1,c);return j.plugin=h,j.setRatio=b(a,d,f._tween,e),j},priority:c})},g.useSVGTransformAttr=!0;var Aa,Ba=\"scaleX,scaleY,scaleZ,x,y,z,skewX,skewY,rotation,rotationX,rotationY,perspective,xPercent,yPercent\".split(\",\"),Ca=Z(\"transform\"),Da=X+\"transform\",Ea=Z(\"transformOrigin\"),Fa=null!==Z(\"perspective\"),Ga=S.Transform=function(){this.perspective=parseFloat(g.defaultTransformPerspective)||0,this.force3D=g.defaultForce3D!==!1&&Fa?g.defaultForce3D||\"auto\":!1},Ha=_gsScope.SVGElement,Ia=function(a,b,c){var d,e=O.createElementNS(\"http://www.w3.org/2000/svg\",a),f=/([a-z])([A-Z])/g;for(d in c)e.setAttributeNS(null,d.replace(f,\"$1-$2\").toLowerCase(),c[d]);return b.appendChild(e),e},Ja=O.documentElement||{},Ka=function(){var a,b,c,d=p||/Android/i.test(T)&&!_gsScope.chrome;return O.createElementNS&&!d&&(a=Ia(\"svg\",Ja),b=Ia(\"rect\",a,{width:100,height:50,x:100}),c=b.getBoundingClientRect().width,b.style[Ea]=\"50% 50%\",b.style[Ca]=\"scaleX(0.5)\",d=c===b.getBoundingClientRect().width&&!(n&&Fa),Ja.removeChild(a)),d}(),La=function(a,b,c,d,e,f){var h,i,j,k,l,m,n,o,p,q,r,s,t,u,v=a._gsTransform,w=Qa(a,!0);v&&(t=v.xOrigin,u=v.yOrigin),(!d||(h=d.split(\" \")).length<2)&&(n=a.getBBox(),0===n.x&&0===n.y&&n.width+n.height===0&&(n={x:parseFloat(a.hasAttribute(\"x\")?a.getAttribute(\"x\"):a.hasAttribute(\"cx\")?a.getAttribute(\"cx\"):0)||0,y:parseFloat(a.hasAttribute(\"y\")?a.getAttribute(\"y\"):a.hasAttribute(\"cy\")?a.getAttribute(\"cy\"):0)||0,width:0,height:0}),b=ha(b).split(\" \"),h=[(-1!==b[0].indexOf(\"%\")?parseFloat(b[0])/100*n.width:parseFloat(b[0]))+n.x,(-1!==b[1].indexOf(\"%\")?parseFloat(b[1])/100*n.height:parseFloat(b[1]))+n.y]),c.xOrigin=k=parseFloat(h[0]),c.yOrigin=l=parseFloat(h[1]),d&&w!==Pa&&(m=w[0],n=w[1],o=w[2],p=w[3],q=w[4],r=w[5],s=m*p-n*o,s&&(i=k*(p/s)+l*(-o/s)+(o*r-p*q)/s,j=k*(-n/s)+l*(m/s)-(m*r-n*q)/s,k=c.xOrigin=h[0]=i,l=c.yOrigin=h[1]=j)),v&&(f&&(c.xOffset=v.xOffset,c.yOffset=v.yOffset,v=c),e||e!==!1&&g.defaultSmoothOrigin!==!1?(i=k-t,j=l-u,v.xOffset+=i*w[0]+j*w[2]-i,v.yOffset+=i*w[1]+j*w[3]-j):v.xOffset=v.yOffset=0),f||a.setAttribute(\"data-svg-origin\",h.join(\" \"))},Ma=function(a){var b,c=P(\"svg\",this.ownerSVGElement&&this.ownerSVGElement.getAttribute(\"xmlns\")||\"http://www.w3.org/2000/svg\"),d=this.parentNode,e=this.nextSibling,f=this.style.cssText;if(Ja.appendChild(c),c.appendChild(this),this.style.display=\"block\",a)try{b=this.getBBox(),this._originalGetBBox=this.getBBox,this.getBBox=Ma}catch(g){}else this._originalGetBBox&&(b=this._originalGetBBox());return e?d.insertBefore(this,e):d.appendChild(this),Ja.removeChild(c),this.style.cssText=f,b},Na=function(a){try{return a.getBBox()}catch(b){return Ma.call(a,!0)}},Oa=function(a){return!(!Ha||!a.getCTM||a.parentNode&&!a.ownerSVGElement||!Na(a))},Pa=[1,0,0,1,0,0],Qa=function(a,b){var c,d,e,f,g,h,i=a._gsTransform||new Ga,j=1e5,k=a.style;if(Ca?d=_(a,Da,null,!0):a.currentStyle&&(d=a.currentStyle.filter.match(G),d=d&&4===d.length?[d[0].substr(4),Number(d[2].substr(4)),Number(d[1].substr(4)),d[3].substr(4),i.x||0,i.y||0].join(\",\"):\"\"),c=!d||\"none\"===d||\"matrix(1, 0, 0, 1, 0, 0)\"===d,!Ca||!(h=!$(a)||\"none\"===$(a).display)&&a.parentNode||(h&&(f=k.display,k.display=\"block\"),a.parentNode||(g=1,Ja.appendChild(a)),d=_(a,Da,null,!0),c=!d||\"none\"===d||\"matrix(1, 0, 0, 1, 0, 0)\"===d,f?k.display=f:h&&Va(k,\"display\"),g&&Ja.removeChild(a)),(i.svg||a.getCTM&&Oa(a))&&(c&&-1!==(k[Ca]+\"\").indexOf(\"matrix\")&&(d=k[Ca],c=0),e=a.getAttribute(\"transform\"),c&&e&&(e=a.transform.baseVal.consolidate().matrix,d=\"matrix(\"+e.a+\",\"+e.b+\",\"+e.c+\",\"+e.d+\",\"+e.e+\",\"+e.f+\")\",c=0)),c)return Pa;for(e=(d||\"\").match(s)||[],wa=e.length;--wa>-1;)f=Number(e[wa]),e[wa]=(g=f-(f|=0))?(g*j+(0>g?-.5:.5)|0)/j+f:f;return b&&e.length>6?[e[0],e[1],e[4],e[5],e[12],e[13]]:e},Ra=S.getTransform=function(a,c,d,e){if(a._gsTransform&&d&&!e)return a._gsTransform;var f,h,i,j,k,l,m=d?a._gsTransform||new Ga:new Ga,n=m.scaleX<0,o=2e-5,p=1e5,q=Fa?parseFloat(_(a,Ea,c,!1,\"0 0 0\").split(\" \")[2])||m.zOrigin||0:0,r=parseFloat(g.defaultTransformPerspective)||0;if(m.svg=!(!a.getCTM||!Oa(a)),m.svg&&(La(a,_(a,Ea,c,!1,\"50% 50%\")+\"\",m,a.getAttribute(\"data-svg-origin\")),Aa=g.useSVGTransformAttr||Ka),f=Qa(a),f!==Pa){if(16===f.length){var s,t,u,v,w,x=f[0],y=f[1],z=f[2],A=f[3],B=f[4],C=f[5],D=f[6],E=f[7],F=f[8],G=f[9],H=f[10],I=f[12],J=f[13],K=f[14],M=f[11],N=Math.atan2(D,H);m.zOrigin&&(K=-m.zOrigin,I=F*K-f[12],J=G*K-f[13],K=H*K+m.zOrigin-f[14]),m.rotationX=N*L,N&&(v=Math.cos(-N),w=Math.sin(-N),s=B*v+F*w,t=C*v+G*w,u=D*v+H*w,F=B*-w+F*v,G=C*-w+G*v,H=D*-w+H*v,M=E*-w+M*v,B=s,C=t,D=u),N=Math.atan2(-z,H),m.rotationY=N*L,N&&(v=Math.cos(-N),w=Math.sin(-N),s=x*v-F*w,t=y*v-G*w,u=z*v-H*w,G=y*w+G*v,H=z*w+H*v,M=A*w+M*v,x=s,y=t,z=u),N=Math.atan2(y,x),m.rotation=N*L,N&&(v=Math.cos(N),w=Math.sin(N),s=x*v+y*w,t=B*v+C*w,u=F*v+G*w,y=y*v-x*w,C=C*v-B*w,G=G*v-F*w,x=s,B=t,F=u),m.rotationX&&Math.abs(m.rotationX)+Math.abs(m.rotation)>359.9&&(m.rotationX=m.rotation=0,m.rotationY=180-m.rotationY),N=Math.atan2(B,C),m.scaleX=(Math.sqrt(x*x+y*y+z*z)*p+.5|0)/p,m.scaleY=(Math.sqrt(C*C+D*D)*p+.5|0)/p,m.scaleZ=(Math.sqrt(F*F+G*G+H*H)*p+.5|0)/p,x/=m.scaleX,B/=m.scaleY,y/=m.scaleX,C/=m.scaleY,Math.abs(N)>o?(m.skewX=N*L,B=0,\"simple\"!==m.skewType&&(m.scaleY*=1/Math.cos(N))):m.skewX=0,m.perspective=M?1/(0>M?-M:M):0,m.x=I,m.y=J,m.z=K,m.svg&&(m.x-=m.xOrigin-(m.xOrigin*x-m.yOrigin*B),m.y-=m.yOrigin-(m.yOrigin*y-m.xOrigin*C))}else if(!Fa||e||!f.length||m.x!==f[4]||m.y!==f[5]||!m.rotationX&&!m.rotationY){var O=f.length>=6,P=O?f[0]:1,Q=f[1]||0,R=f[2]||0,S=O?f[3]:1;m.x=f[4]||0,m.y=f[5]||0,i=Math.sqrt(P*P+Q*Q),j=Math.sqrt(S*S+R*R),k=P||Q?Math.atan2(Q,P)*L:m.rotation||0,l=R||S?Math.atan2(R,S)*L+k:m.skewX||0,m.scaleX=i,m.scaleY=j,m.rotation=k,m.skewX=l,Fa&&(m.rotationX=m.rotationY=m.z=0,m.perspective=r,m.scaleZ=1),m.svg&&(m.x-=m.xOrigin-(m.xOrigin*P+m.yOrigin*R),m.y-=m.yOrigin-(m.xOrigin*Q+m.yOrigin*S))}Math.abs(m.skewX)>90&&Math.abs(m.skewX)<270&&(n?(m.scaleX*=-1,m.skewX+=m.rotation<=0?180:-180,m.rotation+=m.rotation<=0?180:-180):(m.scaleY*=-1,m.skewX+=m.skewX<=0?180:-180)),m.zOrigin=q;for(h in m)m[h]-o&&(m[h]=0)}return d&&(a._gsTransform=m,m.svg&&(Aa&&a.style[Ca]?b.delayedCall(.001,function(){Va(a.style,Ca)}):!Aa&&a.getAttribute(\"transform\")&&b.delayedCall(.001,function(){a.removeAttribute(\"transform\")}))),m},Sa=function(a){var b,c,d=this.data,e=-d.rotation*K,f=e+d.skewX*K,g=1e5,h=(Math.cos(e)*d.scaleX*g|0)/g,i=(Math.sin(e)*d.scaleX*g|0)/g,j=(Math.sin(f)*-d.scaleY*g|0)/g,k=(Math.cos(f)*d.scaleY*g|0)/g,l=this.t.style,m=this.t.currentStyle;if(m){c=i,i=-j,j=-c,b=m.filter,l.filter=\"\";var n,o,q=this.t.offsetWidth,r=this.t.offsetHeight,s=\"absolute\"!==m.position,t=\"progid:DXImageTransform.Microsoft.Matrix(M11=\"+h+\", M12=\"+i+\", M21=\"+j+\", M22=\"+k,u=d.x+q*d.xPercent/100,v=d.y+r*d.yPercent/100;if(null!=d.ox&&(n=(d.oxp?q*d.ox*.01:d.ox)-q/2,o=(d.oyp?r*d.oy*.01:d.oy)-r/2,u+=n-(n*h+o*i),v+=o-(n*j+o*k)),s?(n=q/2,o=r/2,t+=\", Dx=\"+(n-(n*h+o*i)+u)+\", Dy=\"+(o-(n*j+o*k)+v)+\")\"):t+=\", sizingMethod='auto expand')\",-1!==b.indexOf(\"DXImageTransform.Microsoft.Matrix(\")?l.filter=b.replace(H,t):l.filter=t+\" \"+b,(0===a||1===a)&&1===h&&0===i&&0===j&&1===k&&(s&&-1===t.indexOf(\"Dx=0, Dy=0\")||x.test(b)&&100!==parseFloat(RegExp.$1)||-1===b.indexOf(b.indexOf(\"Alpha\"))&&l.removeAttribute(\"filter\")),!s){var y,z,A,B=8>p?1:-1;for(n=d.ieOffsetX||0,o=d.ieOffsetY||0,d.ieOffsetX=Math.round((q-((0>h?-h:h)*q+(0>i?-i:i)*r))/2+u),d.ieOffsetY=Math.round((r-((0>k?-k:k)*r+(0>j?-j:j)*q))/2+v),wa=0;4>wa;wa++)z=fa[wa],y=m[z],c=-1!==y.indexOf(\"px\")?parseFloat(y):aa(this.t,z,parseFloat(y),y.replace(w,\"\"))||0,A=c!==d[z]?2>wa?-d.ieOffsetX:-d.ieOffsetY:2>wa?n-d.ieOffsetX:o-d.ieOffsetY,l[z]=(d[z]=Math.round(c-A*(0===wa||2===wa?1:B)))+\"px\"}}},Ta=S.set3DTransformRatio=S.setTransformRatio=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,o,p,q,r,s,t,u,v,w,x,y,z=this.data,A=this.t.style,B=z.rotation,C=z.rotationX,D=z.rotationY,E=z.scaleX,F=z.scaleY,G=z.scaleZ,H=z.x,I=z.y,J=z.z,L=z.svg,M=z.perspective,N=z.force3D,O=z.skewY,P=z.skewX;if(O&&(P+=O,B+=O),((1===a||0===a)&&\"auto\"===N&&(this.tween._totalTime===this.tween._totalDuration||!this.tween._totalTime)||!N)&&!J&&!M&&!D&&!C&&1===G||Aa&&L||!Fa)return void(B||P||L?(B*=K,x=P*K,y=1e5,c=Math.cos(B)*E,f=Math.sin(B)*E,d=Math.sin(B-x)*-F,g=Math.cos(B-x)*F,x&&\"simple\"===z.skewType&&(b=Math.tan(x-O*K),b=Math.sqrt(1+b*b),d*=b,g*=b,O&&(b=Math.tan(O*K),b=Math.sqrt(1+b*b),c*=b,f*=b)),L&&(H+=z.xOrigin-(z.xOrigin*c+z.yOrigin*d)+z.xOffset,I+=z.yOrigin-(z.xOrigin*f+z.yOrigin*g)+z.yOffset,Aa&&(z.xPercent||z.yPercent)&&(q=this.t.getBBox(),H+=.01*z.xPercent*q.width,I+=.01*z.yPercent*q.height),q=1e-6,q>H&&H>-q&&(H=0),q>I&&I>-q&&(I=0)),u=(c*y|0)/y+\",\"+(f*y|0)/y+\",\"+(d*y|0)/y+\",\"+(g*y|0)/y+\",\"+H+\",\"+I+\")\",L&&Aa?this.t.setAttribute(\"transform\",\"matrix(\"+u):A[Ca]=(z.xPercent||z.yPercent?\"translate(\"+z.xPercent+\"%,\"+z.yPercent+\"%) matrix(\":\"matrix(\")+u):A[Ca]=(z.xPercent||z.yPercent?\"translate(\"+z.xPercent+\"%,\"+z.yPercent+\"%) matrix(\":\"matrix(\")+E+\",0,0,\"+F+\",\"+H+\",\"+I+\")\");if(n&&(q=1e-4,q>E&&E>-q&&(E=G=2e-5),q>F&&F>-q&&(F=G=2e-5),!M||z.z||z.rotationX||z.rotationY||(M=0)),B||P)B*=K,r=c=Math.cos(B),s=f=Math.sin(B),P&&(B-=P*K,r=Math.cos(B),s=Math.sin(B),\"simple\"===z.skewType&&(b=Math.tan((P-O)*K),b=Math.sqrt(1+b*b),r*=b,s*=b,z.skewY&&(b=Math.tan(O*K),b=Math.sqrt(1+b*b),c*=b,f*=b))),d=-s,g=r;else{if(!(D||C||1!==G||M||L))return void(A[Ca]=(z.xPercent||z.yPercent?\"translate(\"+z.xPercent+\"%,\"+z.yPercent+\"%) translate3d(\":\"translate3d(\")+H+\"px,\"+I+\"px,\"+J+\"px)\"+(1!==E||1!==F?\" scale(\"+E+\",\"+F+\")\":\"\"));c=g=1,d=f=0}k=1,e=h=i=j=l=m=0,o=M?-1/M:0,p=z.zOrigin,q=1e-6,v=\",\",w=\"0\",B=D*K,B&&(r=Math.cos(B),s=Math.sin(B),i=-s,l=o*-s,e=c*s,h=f*s,k=r,o*=r,c*=r,f*=r),B=C*K,B&&(r=Math.cos(B),s=Math.sin(B),b=d*r+e*s,t=g*r+h*s,j=k*s,m=o*s,e=d*-s+e*r,h=g*-s+h*r,k*=r,o*=r,d=b,g=t),1!==G&&(e*=G,h*=G,k*=G,o*=G),1!==F&&(d*=F,g*=F,j*=F,m*=F),1!==E&&(c*=E,f*=E,i*=E,l*=E),(p||L)&&(p&&(H+=e*-p,I+=h*-p,J+=k*-p+p),L&&(H+=z.xOrigin-(z.xOrigin*c+z.yOrigin*d)+z.xOffset,I+=z.yOrigin-(z.xOrigin*f+z.yOrigin*g)+z.yOffset),q>H&&H>-q&&(H=w),q>I&&I>-q&&(I=w),q>J&&J>-q&&(J=0)),u=z.xPercent||z.yPercent?\"translate(\"+z.xPercent+\"%,\"+z.yPercent+\"%) matrix3d(\":\"matrix3d(\",u+=(q>c&&c>-q?w:c)+v+(q>f&&f>-q?w:f)+v+(q>i&&i>-q?w:i),u+=v+(q>l&&l>-q?w:l)+v+(q>d&&d>-q?w:d)+v+(q>g&&g>-q?w:g),C||D||1!==G?(u+=v+(q>j&&j>-q?w:j)+v+(q>m&&m>-q?w:m)+v+(q>e&&e>-q?w:e),u+=v+(q>h&&h>-q?w:h)+v+(q>k&&k>-q?w:k)+v+(q>o&&o>-q?w:o)+v):u+=\",0,0,0,0,1,0,\",u+=H+v+I+v+J+v+(M?1+-J/M:1)+\")\",A[Ca]=u;\n};j=Ga.prototype,j.x=j.y=j.z=j.skewX=j.skewY=j.rotation=j.rotationX=j.rotationY=j.zOrigin=j.xPercent=j.yPercent=j.xOffset=j.yOffset=0,j.scaleX=j.scaleY=j.scaleZ=1,ya(\"transform,scale,scaleX,scaleY,scaleZ,x,y,z,rotation,rotationX,rotationY,rotationZ,skewX,skewY,shortRotation,shortRotationX,shortRotationY,shortRotationZ,transformOrigin,svgOrigin,transformPerspective,directionalRotation,parseTransform,force3D,skewType,xPercent,yPercent,smoothOrigin\",{parser:function(a,b,c,d,f,h,i){if(d._lastParsedTransform===i)return f;d._lastParsedTransform=i;var j,k=i.scale&&\"function\"==typeof i.scale?i.scale:0;\"function\"==typeof i[c]&&(j=i[c],i[c]=b),k&&(i.scale=k(r,a));var l,m,n,o,p,s,t,u,v,w=a._gsTransform,x=a.style,y=1e-6,z=Ba.length,A=i,B={},C=\"transformOrigin\",D=Ra(a,e,!0,A.parseTransform),E=A.transform&&(\"function\"==typeof A.transform?A.transform(r,q):A.transform);if(D.skewType=A.skewType||D.skewType||g.defaultSkewType,d._transform=D,\"rotationZ\"in A&&(A.rotation=A.rotationZ),E&&\"string\"==typeof E&&Ca)m=Q.style,m[Ca]=E,m.display=\"block\",m.position=\"absolute\",-1!==E.indexOf(\"%\")&&(m.width=_(a,\"width\"),m.height=_(a,\"height\")),O.body.appendChild(Q),l=Ra(Q,null,!1),\"simple\"===D.skewType&&(l.scaleY*=Math.cos(l.skewX*K)),D.svg&&(s=D.xOrigin,t=D.yOrigin,l.x-=D.xOffset,l.y-=D.yOffset,(A.transformOrigin||A.svgOrigin)&&(E={},La(a,ha(A.transformOrigin),E,A.svgOrigin,A.smoothOrigin,!0),s=E.xOrigin,t=E.yOrigin,l.x-=E.xOffset-D.xOffset,l.y-=E.yOffset-D.yOffset),(s||t)&&(u=Qa(Q,!0),l.x-=s-(s*u[0]+t*u[2]),l.y-=t-(s*u[1]+t*u[3]))),O.body.removeChild(Q),l.perspective||(l.perspective=D.perspective),null!=A.xPercent&&(l.xPercent=ja(A.xPercent,D.xPercent)),null!=A.yPercent&&(l.yPercent=ja(A.yPercent,D.yPercent));else if(\"object\"==typeof A){if(l={scaleX:ja(null!=A.scaleX?A.scaleX:A.scale,D.scaleX),scaleY:ja(null!=A.scaleY?A.scaleY:A.scale,D.scaleY),scaleZ:ja(A.scaleZ,D.scaleZ),x:ja(A.x,D.x),y:ja(A.y,D.y),z:ja(A.z,D.z),xPercent:ja(A.xPercent,D.xPercent),yPercent:ja(A.yPercent,D.yPercent),perspective:ja(A.transformPerspective,D.perspective)},p=A.directionalRotation,null!=p)if(\"object\"==typeof p)for(m in p)A[m]=p[m];else A.rotation=p;\"string\"==typeof A.x&&-1!==A.x.indexOf(\"%\")&&(l.x=0,l.xPercent=ja(A.x,D.xPercent)),\"string\"==typeof A.y&&-1!==A.y.indexOf(\"%\")&&(l.y=0,l.yPercent=ja(A.y,D.yPercent)),l.rotation=ka(\"rotation\"in A?A.rotation:\"shortRotation\"in A?A.shortRotation+\"_short\":D.rotation,D.rotation,\"rotation\",B),Fa&&(l.rotationX=ka(\"rotationX\"in A?A.rotationX:\"shortRotationX\"in A?A.shortRotationX+\"_short\":D.rotationX||0,D.rotationX,\"rotationX\",B),l.rotationY=ka(\"rotationY\"in A?A.rotationY:\"shortRotationY\"in A?A.shortRotationY+\"_short\":D.rotationY||0,D.rotationY,\"rotationY\",B)),l.skewX=ka(A.skewX,D.skewX),l.skewY=ka(A.skewY,D.skewY)}for(Fa&&null!=A.force3D&&(D.force3D=A.force3D,o=!0),n=D.force3D||D.z||D.rotationX||D.rotationY||l.z||l.rotationX||l.rotationY||l.perspective,n||null==A.scale||(l.scaleZ=1);--z>-1;)v=Ba[z],E=l[v]-D[v],(E>y||-y>E||null!=A[v]||null!=M[v])&&(o=!0,f=new ta(D,v,D[v],E,f),v in B&&(f.e=B[v]),f.xs0=0,f.plugin=h,d._overwriteProps.push(f.n));return E=A.transformOrigin,D.svg&&(E||A.svgOrigin)&&(s=D.xOffset,t=D.yOffset,La(a,ha(E),l,A.svgOrigin,A.smoothOrigin),f=ua(D,\"xOrigin\",(w?D:l).xOrigin,l.xOrigin,f,C),f=ua(D,\"yOrigin\",(w?D:l).yOrigin,l.yOrigin,f,C),(s!==D.xOffset||t!==D.yOffset)&&(f=ua(D,\"xOffset\",w?s:D.xOffset,D.xOffset,f,C),f=ua(D,\"yOffset\",w?t:D.yOffset,D.yOffset,f,C)),E=\"0px 0px\"),(E||Fa&&n&&D.zOrigin)&&(Ca?(o=!0,v=Ea,E=(E||_(a,v,e,!1,\"50% 50%\"))+\"\",f=new ta(x,v,0,0,f,-1,C),f.b=x[v],f.plugin=h,Fa?(m=D.zOrigin,E=E.split(\" \"),D.zOrigin=(E.length>2&&(0===m||\"0px\"!==E[2])?parseFloat(E[2]):m)||0,f.xs0=f.e=E[0]+\" \"+(E[1]||\"50%\")+\" 0px\",f=new ta(D,\"zOrigin\",0,0,f,-1,f.n),f.b=m,f.xs0=f.e=D.zOrigin):f.xs0=f.e=E):ha(E+\"\",D)),o&&(d._transformType=D.svg&&Aa||!n&&3!==this._transformType?2:3),j&&(i[c]=j),k&&(i.scale=k),f},prefix:!0}),ya(\"boxShadow\",{defaultValue:\"0px 0px 0px 0px #999\",prefix:!0,color:!0,multi:!0,keyword:\"inset\"}),ya(\"borderRadius\",{defaultValue:\"0px\",parser:function(a,b,c,f,g,h){b=this.format(b);var i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y=[\"borderTopLeftRadius\",\"borderTopRightRadius\",\"borderBottomRightRadius\",\"borderBottomLeftRadius\"],z=a.style;for(q=parseFloat(a.offsetWidth),r=parseFloat(a.offsetHeight),i=b.split(\" \"),j=0;jp?1:0))||\"\"):(p=parseFloat(n),s=n.substr((p+\"\").length)),\"\"===s&&(s=d[c]||t),s!==t&&(v=aa(a,\"borderLeft\",o,t),w=aa(a,\"borderTop\",o,t),\"%\"===s?(m=v/q*100+\"%\",l=w/r*100+\"%\"):\"em\"===s?(x=aa(a,\"borderLeft\",1,\"em\"),m=v/x+\"em\",l=w/x+\"em\"):(m=v+\"px\",l=w+\"px\"),u&&(n=parseFloat(m)+p+s,k=parseFloat(l)+p+s)),g=va(z,y[j],m+\" \"+l,n+\" \"+k,!1,\"0px\",g);return g},prefix:!0,formatter:qa(\"0px 0px 0px 0px\",!1,!0)}),ya(\"borderBottomLeftRadius,borderBottomRightRadius,borderTopLeftRadius,borderTopRightRadius\",{defaultValue:\"0px\",parser:function(a,b,c,d,f,g){return va(a.style,c,this.format(_(a,c,e,!1,\"0px 0px\")),this.format(b),!1,\"0px\",f)},prefix:!0,formatter:qa(\"0px 0px\",!1,!0)}),ya(\"backgroundPosition\",{defaultValue:\"0 0\",parser:function(a,b,c,d,f,g){var h,i,j,k,l,m,n=\"background-position\",o=e||$(a,null),q=this.format((o?p?o.getPropertyValue(n+\"-x\")+\" \"+o.getPropertyValue(n+\"-y\"):o.getPropertyValue(n):a.currentStyle.backgroundPositionX+\" \"+a.currentStyle.backgroundPositionY)||\"0 0\"),r=this.format(b);if(-1!==q.indexOf(\"%\")!=(-1!==r.indexOf(\"%\"))&&r.split(\",\").length<2&&(m=_(a,\"backgroundImage\").replace(D,\"\"),m&&\"none\"!==m)){for(h=q.split(\" \"),i=r.split(\" \"),R.setAttribute(\"src\",m),j=2;--j>-1;)q=h[j],k=-1!==q.indexOf(\"%\"),k!==(-1!==i[j].indexOf(\"%\"))&&(l=0===j?a.offsetWidth-R.width:a.offsetHeight-R.height,h[j]=k?parseFloat(q)/100*l+\"px\":parseFloat(q)/l*100+\"%\");q=h.join(\" \")}return this.parseComplex(a.style,q,r,f,g)},formatter:ha}),ya(\"backgroundSize\",{defaultValue:\"0 0\",formatter:function(a){return a+=\"\",\"co\"===a.substr(0,2)?a:ha(-1===a.indexOf(\" \")?a+\" \"+a:a)}}),ya(\"perspective\",{defaultValue:\"0px\",prefix:!0}),ya(\"perspectiveOrigin\",{defaultValue:\"50% 50%\",prefix:!0}),ya(\"transformStyle\",{prefix:!0}),ya(\"backfaceVisibility\",{prefix:!0}),ya(\"userSelect\",{prefix:!0}),ya(\"margin\",{parser:ra(\"marginTop,marginRight,marginBottom,marginLeft\")}),ya(\"padding\",{parser:ra(\"paddingTop,paddingRight,paddingBottom,paddingLeft\")}),ya(\"clip\",{defaultValue:\"rect(0px,0px,0px,0px)\",parser:function(a,b,c,d,f,g){var h,i,j;return 9>p?(i=a.currentStyle,j=8>p?\" \":\",\",h=\"rect(\"+i.clipTop+j+i.clipRight+j+i.clipBottom+j+i.clipLeft+\")\",b=this.format(b).split(\",\").join(j)):(h=this.format(_(a,this.p,e,!1,this.dflt)),b=this.format(b)),this.parseComplex(a.style,h,b,f,g)}}),ya(\"textShadow\",{defaultValue:\"0px 0px 0px #999\",color:!0,multi:!0}),ya(\"autoRound,strictUnits\",{parser:function(a,b,c,d,e){return e}}),ya(\"border\",{defaultValue:\"0px solid #000\",parser:function(a,b,c,d,f,g){var h=_(a,\"borderTopWidth\",e,!1,\"0px\"),i=this.format(b).split(\" \"),j=i[0].replace(w,\"\");return\"px\"!==j&&(h=parseFloat(h)/aa(a,\"borderTopWidth\",1,j)+j),this.parseComplex(a.style,this.format(h+\" \"+_(a,\"borderTopStyle\",e,!1,\"solid\")+\" \"+_(a,\"borderTopColor\",e,!1,\"#000\")),i.join(\" \"),f,g)},color:!0,formatter:function(a){var b=a.split(\" \");return b[0]+\" \"+(b[1]||\"solid\")+\" \"+(a.match(pa)||[\"#000\"])[0]}}),ya(\"borderWidth\",{parser:ra(\"borderTopWidth,borderRightWidth,borderBottomWidth,borderLeftWidth\")}),ya(\"float,cssFloat,styleFloat\",{parser:function(a,b,c,d,e,f){var g=a.style,h=\"cssFloat\"in g?\"cssFloat\":\"styleFloat\";return new ta(g,h,0,0,e,-1,c,!1,0,g[h],b)}});var Ua=function(a){var b,c=this.t,d=c.filter||_(this.data,\"filter\")||\"\",e=this.s+this.c*a|0;100===e&&(-1===d.indexOf(\"atrix(\")&&-1===d.indexOf(\"radient(\")&&-1===d.indexOf(\"oader(\")?(c.removeAttribute(\"filter\"),b=!_(this.data,\"filter\")):(c.filter=d.replace(z,\"\"),b=!0)),b||(this.xn1&&(c.filter=d=d||\"alpha(opacity=\"+e+\")\"),-1===d.indexOf(\"pacity\")?0===e&&this.xn1||(c.filter=d+\" alpha(opacity=\"+e+\")\"):c.filter=d.replace(x,\"opacity=\"+e))};ya(\"opacity,alpha,autoAlpha\",{defaultValue:\"1\",parser:function(a,b,c,d,f,g){var h=parseFloat(_(a,\"opacity\",e,!1,\"1\")),i=a.style,j=\"autoAlpha\"===c;return\"string\"==typeof b&&\"=\"===b.charAt(1)&&(b=(\"-\"===b.charAt(0)?-1:1)*parseFloat(b.substr(2))+h),j&&1===h&&\"hidden\"===_(a,\"visibility\",e)&&0!==b&&(h=0),U?f=new ta(i,\"opacity\",h,b-h,f):(f=new ta(i,\"opacity\",100*h,100*(b-h),f),f.xn1=j?1:0,i.zoom=1,f.type=2,f.b=\"alpha(opacity=\"+f.s+\")\",f.e=\"alpha(opacity=\"+(f.s+f.c)+\")\",f.data=a,f.plugin=g,f.setRatio=Ua),j&&(f=new ta(i,\"visibility\",0,0,f,-1,null,!1,0,0!==h?\"inherit\":\"hidden\",0===b?\"hidden\":\"inherit\"),f.xs0=\"inherit\",d._overwriteProps.push(f.n),d._overwriteProps.push(c)),f}});var Va=function(a,b){b&&(a.removeProperty?((\"ms\"===b.substr(0,2)||\"webkit\"===b.substr(0,6))&&(b=\"-\"+b),a.removeProperty(b.replace(B,\"-$1\").toLowerCase())):a.removeAttribute(b))},Wa=function(a){if(this.t._gsClassPT=this,1===a||0===a){this.t.setAttribute(\"class\",0===a?this.b:this.e);for(var b=this.data,c=this.t.style;b;)b.v?c[b.p]=b.v:Va(c,b.p),b=b._next;1===a&&this.t._gsClassPT===this&&(this.t._gsClassPT=null)}else this.t.getAttribute(\"class\")!==this.e&&this.t.setAttribute(\"class\",this.e)};ya(\"className\",{parser:function(a,b,d,f,g,h,i){var j,k,l,m,n,o=a.getAttribute(\"class\")||\"\",p=a.style.cssText;if(g=f._classNamePT=new ta(a,d,0,0,g,2),g.setRatio=Wa,g.pr=-11,c=!0,g.b=o,k=ca(a,e),l=a._gsClassPT){for(m={},n=l.data;n;)m[n.p]=1,n=n._next;l.setRatio(1)}return a._gsClassPT=g,g.e=\"=\"!==b.charAt(1)?b:o.replace(new RegExp(\"(?:\\\\s|^)\"+b.substr(2)+\"(?![\\\\w-])\"),\"\")+(\"+\"===b.charAt(0)?\" \"+b.substr(2):\"\"),a.setAttribute(\"class\",g.e),j=da(a,k,ca(a),i,m),a.setAttribute(\"class\",o),g.data=j.firstMPT,a.style.cssText=p,g=g.xfirst=f.parse(a,j.difs,g,h)}});var Xa=function(a){if((1===a||0===a)&&this.data._totalTime===this.data._totalDuration&&\"isFromStart\"!==this.data.data){var b,c,d,e,f,g=this.t.style,h=i.transform.parse;if(\"all\"===this.e)g.cssText=\"\",e=!0;else for(b=this.e.split(\" \").join(\"\").split(\",\"),d=b.length;--d>-1;)c=b[d],i[c]&&(i[c].parse===h?e=!0:c=\"transformOrigin\"===c?Ea:i[c].p),Va(g,c);e&&(Va(g,Ca),f=this.t._gsTransform,f&&(f.svg&&(this.t.removeAttribute(\"data-svg-origin\"),this.t.removeAttribute(\"transform\")),delete this.t._gsTransform))}};for(ya(\"clearProps\",{parser:function(a,b,d,e,f){return f=new ta(a,d,0,0,f,2),f.setRatio=Xa,f.e=b,f.pr=-10,f.data=e._tween,c=!0,f}}),j=\"bezier,throwProps,physicsProps,physics2D\".split(\",\"),wa=j.length;wa--;)za(j[wa]);j=g.prototype,j._firstPT=j._lastParsedTransform=j._transform=null,j._onInitTween=function(a,b,h,j){if(!a.nodeType)return!1;this._target=q=a,this._tween=h,this._vars=b,r=j,k=b.autoRound,c=!1,d=b.suffixMap||g.suffixMap,e=$(a,\"\"),f=this._overwriteProps;var n,p,s,t,u,v,w,x,z,A=a.style;if(l&&\"\"===A.zIndex&&(n=_(a,\"zIndex\",e),(\"auto\"===n||\"\"===n)&&this._addLazySet(A,\"zIndex\",0)),\"string\"==typeof b&&(t=A.cssText,n=ca(a,e),A.cssText=t+\";\"+b,n=da(a,n,ca(a)).difs,!U&&y.test(b)&&(n.opacity=parseFloat(RegExp.$1)),b=n,A.cssText=t),b.className?this._firstPT=p=i.className.parse(a,b.className,\"className\",this,null,null,b):this._firstPT=p=this.parse(a,b,null),this._transformType){for(z=3===this._transformType,Ca?m&&(l=!0,\"\"===A.zIndex&&(w=_(a,\"zIndex\",e),(\"auto\"===w||\"\"===w)&&this._addLazySet(A,\"zIndex\",0)),o&&this._addLazySet(A,\"WebkitBackfaceVisibility\",this._vars.WebkitBackfaceVisibility||(z?\"visible\":\"hidden\"))):A.zoom=1,s=p;s&&s._next;)s=s._next;x=new ta(a,\"transform\",0,0,null,2),this._linkCSSP(x,null,s),x.setRatio=Ca?Ta:Sa,x.data=this._transform||Ra(a,e,!0),x.tween=h,x.pr=-1,f.pop()}if(c){for(;p;){for(v=p._next,s=t;s&&s.pr>p.pr;)s=s._next;(p._prev=s?s._prev:u)?p._prev._next=p:t=p,(p._next=s)?s._prev=p:u=p,p=v}this._firstPT=t}return!0},j.parse=function(a,b,c,f){var g,h,j,l,m,n,o,p,s,t,u=a.style;for(g in b){if(n=b[g],\"function\"==typeof n&&(n=n(r,q)),h=i[g])c=h.parse(a,n,g,this,c,f,b);else{if(\"--\"===g.substr(0,2)){this._tween._propLookup[g]=this._addTween.call(this._tween,a.style,\"setProperty\",$(a).getPropertyValue(g)+\"\",n+\"\",g,!1,g);continue}m=_(a,g,e)+\"\",s=\"string\"==typeof n,\"color\"===g||\"fill\"===g||\"stroke\"===g||-1!==g.indexOf(\"Color\")||s&&A.test(n)?(s||(n=na(n),n=(n.length>3?\"rgba(\":\"rgb(\")+n.join(\",\")+\")\"),c=va(u,g,m,n,!0,\"transparent\",c,0,f)):s&&J.test(n)?c=va(u,g,m,n,!0,null,c,0,f):(j=parseFloat(m),o=j||0===j?m.substr((j+\"\").length):\"\",(\"\"===m||\"auto\"===m)&&(\"width\"===g||\"height\"===g?(j=ga(a,g,e),o=\"px\"):\"left\"===g||\"top\"===g?(j=ba(a,g,e),o=\"px\"):(j=\"opacity\"!==g?0:1,o=\"\")),t=s&&\"=\"===n.charAt(1),t?(l=parseInt(n.charAt(0)+\"1\",10),n=n.substr(2),l*=parseFloat(n),p=n.replace(w,\"\")):(l=parseFloat(n),p=s?n.replace(w,\"\"):\"\"),\"\"===p&&(p=g in d?d[g]:o),n=l||0===l?(t?l+j:l)+p:b[g],o!==p&&(\"\"!==p||\"lineHeight\"===g)&&(l||0===l)&&j&&(j=aa(a,g,j,o),\"%\"===p?(j/=aa(a,g,100,\"%\")/100,b.strictUnits!==!0&&(m=j+\"%\")):\"em\"===p||\"rem\"===p||\"vw\"===p||\"vh\"===p?j/=aa(a,g,1,p):\"px\"!==p&&(l=aa(a,g,l,p),p=\"px\"),t&&(l||0===l)&&(n=l+j+p)),t&&(l+=j),!j&&0!==j||!l&&0!==l?void 0!==u[g]&&(n||n+\"\"!=\"NaN\"&&null!=n)?(c=new ta(u,g,l||j||0,0,c,-1,g,!1,0,m,n),c.xs0=\"none\"!==n||\"display\"!==g&&-1===g.indexOf(\"Style\")?n:m):W(\"invalid \"+g+\" tween value: \"+b[g]):(c=new ta(u,g,j,l-j,c,0,g,k!==!1&&(\"px\"===p||\"zIndex\"===g),0,m,n),c.xs0=p))}f&&c&&!c.plugin&&(c.plugin=f)}return c},j.setRatio=function(a){var b,c,d,e=this._firstPT,f=1e-6;if(1!==a||this._tween._time!==this._tween._duration&&0!==this._tween._time)if(a||this._tween._time!==this._tween._duration&&0!==this._tween._time||this._tween._rawPrevTime===-1e-6)for(;e;){if(b=e.c*a+e.s,e.r?b=e.r(b):f>b&&b>-f&&(b=0),e.type)if(1===e.type)if(d=e.l,2===d)e.t[e.p]=e.xs0+b+e.xs1+e.xn1+e.xs2;else if(3===d)e.t[e.p]=e.xs0+b+e.xs1+e.xn1+e.xs2+e.xn2+e.xs3;else if(4===d)e.t[e.p]=e.xs0+b+e.xs1+e.xn1+e.xs2+e.xn2+e.xs3+e.xn3+e.xs4;else if(5===d)e.t[e.p]=e.xs0+b+e.xs1+e.xn1+e.xs2+e.xn2+e.xs3+e.xn3+e.xs4+e.xn4+e.xs5;else{for(c=e.xs0+b+e.xs1,d=1;d-1;)Za(a[e],b,c);else for(d=a.childNodes,e=d.length;--e>-1;)f=d[e],g=f.type,f.style&&(b.push(ca(f)),c&&c.push(f)),1!==g&&9!==g&&11!==g||!f.childNodes.length||Za(f,b,c)};return g.cascadeTo=function(a,c,d){var e,f,g,h,i=b.to(a,c,d),j=[i],k=[],l=[],m=[],n=b._internals.reservedProps;for(a=i._targets||i.target,Za(a,k,m),i.render(c,!0,!0),Za(a,l),i.render(0,!0,!0),i._enabled(!0),e=m.length;--e>-1;)if(f=da(m[e],k[e],l[e]),f.firstMPT){f=f.difs;for(g in d)n[g]&&(f[g]=d[g]);h={};for(g in f)h[g]=k[e][g];j.push(b.fromTo(m[e],c,h,f))}return j},a.activate([g]),g},!0),function(){var a=_gsScope._gsDefine.plugin({propName:\"roundProps\",version:\"1.7.0\",priority:-1,API:2,init:function(a,b,c){return this._tween=c,!0}}),b=function(a){var b=1>a?Math.pow(10,(a+\"\").length-2):1;return function(c){return(Math.round(c/a)*a*b|0)/b}},c=function(a,b){for(;a;)a.f||a.blob||(a.m=b||Math.round),a=a._next},d=a.prototype;d._onInitAllProps=function(){var a,d,e,f,g=this._tween,h=g.vars.roundProps,i={},j=g._propLookup.roundProps;if(\"object\"!=typeof h||h.push)for(\"string\"==typeof h&&(h=h.split(\",\")),e=h.length;--e>-1;)i[h[e]]=Math.round;else for(f in h)i[f]=b(h[f]);for(f in i)for(a=g._firstPT;a;)d=a._next,a.pg?a.t._mod(i):a.n===f&&(2===a.f&&a.t?c(a.t._firstPT,i[f]):(this._add(a.t,f,a.s,a.c,i[f]),d&&(d._prev=a._prev),a._prev?a._prev._next=d:g._firstPT===a&&(g._firstPT=d),a._next=a._prev=null,g._propLookup[f]=j)),a=d;return!1},d._add=function(a,b,c,d,e){this._addTween(a,b,c,c+d,b,e||Math.round),this._overwriteProps.push(b)}}(),function(){_gsScope._gsDefine.plugin({propName:\"attr\",API:2,version:\"0.6.1\",init:function(a,b,c,d){var e,f;if(\"function\"!=typeof a.setAttribute)return!1;for(e in b)f=b[e],\"function\"==typeof f&&(f=f(d,a)),this._addTween(a,\"setAttribute\",a.getAttribute(e)+\"\",f+\"\",e,!1,e),this._overwriteProps.push(e);return!0}})}(),_gsScope._gsDefine.plugin({propName:\"directionalRotation\",version:\"0.3.1\",API:2,init:function(a,b,c,d){\"object\"!=typeof b&&(b={rotation:b}),this.finals={};var e,f,g,h,i,j,k=b.useRadians===!0?2*Math.PI:360,l=1e-6;for(e in b)\"useRadians\"!==e&&(h=b[e],\"function\"==typeof h&&(h=h(d,a)),j=(h+\"\").split(\"_\"),f=j[0],g=parseFloat(\"function\"!=typeof a[e]?a[e]:a[e.indexOf(\"set\")||\"function\"!=typeof a[\"get\"+e.substr(3)]?e:\"get\"+e.substr(3)]()),h=this.finals[e]=\"string\"==typeof f&&\"=\"===f.charAt(1)?g+parseInt(f.charAt(0)+\"1\",10)*Number(f.substr(2)):Number(f)||0,i=h-g,j.length&&(f=j.join(\"_\"),-1!==f.indexOf(\"short\")&&(i%=k,i!==i%(k/2)&&(i=0>i?i+k:i-k)),-1!==f.indexOf(\"_cw\")&&0>i?i=(i+9999999999*k)%k-(i/k|0)*k:-1!==f.indexOf(\"ccw\")&&i>0&&(i=(i-9999999999*k)%k-(i/k|0)*k)),(i>l||-l>i)&&(this._addTween(a,e,g,g+i,e),this._overwriteProps.push(e)));return!0},set:function(a){var b;if(1!==a)this._super.setRatio.call(this,a);else for(b=this._firstPT;b;)b.f?b.t[b.p](this.finals[b.p]):b.t[b.p]=this.finals[b.p],b=b._next}})._autoCSS=!0,_gsScope._gsDefine(\"easing.Back\",[\"easing.Ease\"],function(a){var b,c,d,e,f=_gsScope.GreenSockGlobals||_gsScope,g=f.com.greensock,h=2*Math.PI,i=Math.PI/2,j=g._class,k=function(b,c){var d=j(\"easing.\"+b,function(){},!0),e=d.prototype=new a;return e.constructor=d,e.getRatio=c,d},l=a.register||function(){},m=function(a,b,c,d,e){var f=j(\"easing.\"+a,{easeOut:new b,easeIn:new c,easeInOut:new d},!0);return l(f,a),f},n=function(a,b,c){this.t=a,this.v=b,c&&(this.next=c,c.prev=this,this.c=c.v-b,this.gap=c.t-a)},o=function(b,c){var d=j(\"easing.\"+b,function(a){this._p1=a||0===a?a:1.70158,this._p2=1.525*this._p1},!0),e=d.prototype=new a;return e.constructor=d,e.getRatio=c,e.config=function(a){return new d(a)},d},p=m(\"Back\",o(\"BackOut\",function(a){return(a-=1)*a*((this._p1+1)*a+this._p1)+1}),o(\"BackIn\",function(a){return a*a*((this._p1+1)*a-this._p1)}),o(\"BackInOut\",function(a){return(a*=2)<1?.5*a*a*((this._p2+1)*a-this._p2):.5*((a-=2)*a*((this._p2+1)*a+this._p2)+2)})),q=j(\"easing.SlowMo\",function(a,b,c){b=b||0===b?b:.7,null==a?a=.7:a>1&&(a=1),this._p=1!==a?b:0,this._p1=(1-a)/2,this._p2=a,this._p3=this._p1+this._p2,this._calcEnd=c===!0},!0),r=q.prototype=new a;return r.constructor=q,r.getRatio=function(a){var b=a+(.5-a)*this._p;return athis._p3?this._calcEnd?1===a?0:1-(a=(a-this._p3)/this._p1)*a:b+(a-b)*(a=(a-this._p3)/this._p1)*a*a*a:this._calcEnd?1:b},q.ease=new q(.7,.7),r.config=q.config=function(a,b,c){return new q(a,b,c)},b=j(\"easing.SteppedEase\",function(a,b){a=a||1,this._p1=1/a,this._p2=a+(b?0:1),this._p3=b?1:0},!0),r=b.prototype=new a,r.constructor=b,r.getRatio=function(a){return 0>a?a=0:a>=1&&(a=.999999999),((this._p2*a|0)+this._p3)*this._p1},r.config=b.config=function(a,c){return new b(a,c)},c=j(\"easing.ExpoScaleEase\",function(a,b,c){this._p1=Math.log(b/a),this._p2=b-a,this._p3=a,this._ease=c},!0),r=c.prototype=new a,r.constructor=c,r.getRatio=function(a){return this._ease&&(a=this._ease.getRatio(a)),(this._p3*Math.exp(this._p1*a)-this._p3)/this._p2},r.config=c.config=function(a,b,d){return new c(a,b,d)},d=j(\"easing.RoughEase\",function(b){b=b||{};for(var c,d,e,f,g,h,i=b.taper||\"none\",j=[],k=0,l=0|(b.points||20),m=l,o=b.randomize!==!1,p=b.clamp===!0,q=b.template instanceof a?b.template:null,r=\"number\"==typeof b.strength?.4*b.strength:.4;--m>-1;)c=o?Math.random():1/l*m,d=q?q.getRatio(c):c,\"none\"===i?e=r:\"out\"===i?(f=1-c,e=f*f*r):\"in\"===i?e=c*c*r:.5>c?(f=2*c,e=f*f*.5*r):(f=2*(1-c),e=f*f*.5*r),o?d+=Math.random()*e-.5*e:m%2?d+=.5*e:d-=.5*e,p&&(d>1?d=1:0>d&&(d=0)),j[k++]={x:c,y:d};for(j.sort(function(a,b){return a.x-b.x}),h=new n(1,1,null),m=l;--m>-1;)g=j[m],h=new n(g.x,g.y,h);this._prev=new n(0,0,0!==h.t?h:h.next)},!0),r=d.prototype=new a,r.constructor=d,r.getRatio=function(a){var b=this._prev;if(a>b.t){for(;b.next&&a>=b.t;)b=b.next;b=b.prev}else for(;b.prev&&a<=b.t;)b=b.prev;return this._prev=b,b.v+(a-b.t)/b.gap*b.c},r.config=function(a){return new d(a)},d.ease=new d,m(\"Bounce\",k(\"BounceOut\",function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375}),k(\"BounceIn\",function(a){return(a=1-a)<1/2.75?1-7.5625*a*a:2/2.75>a?1-(7.5625*(a-=1.5/2.75)*a+.75):2.5/2.75>a?1-(7.5625*(a-=2.25/2.75)*a+.9375):1-(7.5625*(a-=2.625/2.75)*a+.984375)}),k(\"BounceInOut\",function(a){var b=.5>a;return a=b?1-2*a:2*a-1,a=1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375,b?.5*(1-a):.5*a+.5})),m(\"Circ\",k(\"CircOut\",function(a){return Math.sqrt(1-(a-=1)*a)}),k(\"CircIn\",function(a){return-(Math.sqrt(1-a*a)-1)}),k(\"CircInOut\",function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)})),e=function(b,c,d){var e=j(\"easing.\"+b,function(a,b){this._p1=a>=1?a:1,this._p2=(b||d)/(1>a?a:1),this._p3=this._p2/h*(Math.asin(1/this._p1)||0),this._p2=h/this._p2},!0),f=e.prototype=new a;return f.constructor=e,f.getRatio=c,f.config=function(a,b){return new e(a,b)},e},m(\"Elastic\",e(\"ElasticOut\",function(a){return this._p1*Math.pow(2,-10*a)*Math.sin((a-this._p3)*this._p2)+1},.3),e(\"ElasticIn\",function(a){return-(this._p1*Math.pow(2,10*(a-=1))*Math.sin((a-this._p3)*this._p2))},.3),e(\"ElasticInOut\",function(a){return(a*=2)<1?-.5*(this._p1*Math.pow(2,10*(a-=1))*Math.sin((a-this._p3)*this._p2)):this._p1*Math.pow(2,-10*(a-=1))*Math.sin((a-this._p3)*this._p2)*.5+1},.45)),m(\"Expo\",k(\"ExpoOut\",function(a){return 1-Math.pow(2,-10*a)}),k(\"ExpoIn\",function(a){return Math.pow(2,10*(a-1))-.001}),k(\"ExpoInOut\",function(a){return(a*=2)<1?.5*Math.pow(2,10*(a-1)):.5*(2-Math.pow(2,-10*(a-1)))})),m(\"Sine\",k(\"SineOut\",function(a){return Math.sin(a*i)}),k(\"SineIn\",function(a){return-Math.cos(a*i)+1}),k(\"SineInOut\",function(a){return-.5*(Math.cos(Math.PI*a)-1)})),j(\"easing.EaseLookup\",{find:function(b){return a.map[b]}},!0),l(f.SlowMo,\"SlowMo\",\"ease,\"),l(d,\"RoughEase\",\"ease,\"),l(b,\"SteppedEase\",\"ease,\"),p},!0)}),_gsScope._gsDefine&&_gsScope._gsQueue.pop()(),function(a,b){\"use strict\";var c={},d=a.document,e=a.GreenSockGlobals=a.GreenSockGlobals||a,f=e[b];if(f)return\"undefined\"!=typeof module&&module.exports&&(module.exports=f),f;var g,h,i,j,k,l=function(a){var b,c=a.split(\".\"),d=e;for(b=0;b-1;)(k=r[f[p]]||new s(f[p],[])).gsClass?(i[p]=k.gsClass,q--):j&&k.sc.push(this);if(0===q&&g){if(m=(\"com.greensock.\"+d).split(\".\"),n=m.pop(),o=l(m.join(\".\"))[n]=this.gsClass=g.apply(g,i),h)if(e[n]=c[n]=o,\"undefined\"!=typeof module&&module.exports)if(d===b){module.exports=c[b]=o;for(p in c)o[p]=c[p]}else c[b]&&(c[b][n]=o);else\"function\"==typeof define&&define.amd&&define((a.GreenSockAMDPath?a.GreenSockAMDPath+\"/\":\"\")+d.split(\".\").pop(),[],function(){return o});for(p=0;p-1;)for(f=i[j],e=d?u(\"easing.\"+f,null,!0):m.easing[f]||{},g=k.length;--g>-1;)h=k[g],x[f+\".\"+h]=x[h+f]=e[h]=a.getRatio?a:a[h]||new a};for(i=w.prototype,i._calcEnd=!1,i.getRatio=function(a){if(this._func)return this._params[0]=a,this._func.apply(null,this._params);var b=this._type,c=this._power,d=1===b?1-a:2===b?a:.5>a?2*a:2*(1-a);return 1===c?d*=d:2===c?d*=d*d:3===c?d*=d*d*d:4===c&&(d*=d*d*d*d),1===b?1-d:2===b?d:.5>a?d/2:1-d/2},g=[\"Linear\",\"Quad\",\"Cubic\",\"Quart\",\"Quint,Strong\"],h=g.length;--h>-1;)i=g[h]+\",Power\"+h,y(new w(null,null,1,h),i,\"easeOut\",!0),y(new w(null,null,2,h),i,\"easeIn\"+(0===h?\",easeNone\":\"\")),y(new w(null,null,3,h),i,\"easeInOut\");x.linear=m.easing.Linear.easeIn,x.swing=m.easing.Quad.easeInOut;var z=u(\"events.EventDispatcher\",function(a){this._listeners={},this._eventTarget=a||this});i=z.prototype,i.addEventListener=function(a,b,c,d,e){e=e||0;var f,g,h=this._listeners[a],i=0;for(this!==j||k||j.wake(),null==h&&(this._listeners[a]=h=[]),g=h.length;--g>-1;)f=h[g],f.c===b&&f.s===c?h.splice(g,1):0===i&&f.pr-1;)if(d[c].c===b)return void d.splice(c,1)},i.dispatchEvent=function(a){var b,c,d,e=this._listeners[a];if(e)for(b=e.length,b>1&&(e=e.slice(0)),c=this._eventTarget;--b>-1;)d=e[b],d&&(d.up?d.c.call(d.s||c,{type:a,target:c}):d.c.call(d.s||c))};var A=a.requestAnimationFrame,B=a.cancelAnimationFrame,C=Date.now||function(){return(new Date).getTime()},D=C();for(g=[\"ms\",\"moz\",\"webkit\",\"o\"],h=g.length;--h>-1&&!A;)A=a[g[h]+\"RequestAnimationFrame\"],B=a[g[h]+\"CancelAnimationFrame\"]||a[g[h]+\"CancelRequestAnimationFrame\"];u(\"Ticker\",function(a,b){var c,e,f,g,h,i=this,l=C(),m=b!==!1&&A?\"auto\":!1,o=500,q=33,r=\"tick\",s=function(a){var b,d,j=C()-D;j>o&&(l+=j-q),D+=j,i.time=(D-l)/1e3,b=i.time-h,(!c||b>0||a===!0)&&(i.frame++,h+=b+(b>=g?.004:g-b),d=!0),a!==!0&&(f=e(s)),d&&i.dispatchEvent(r)};z.call(i),i.time=i.frame=0,i.tick=function(){s(!0)},i.lagSmoothing=function(a,b){return arguments.length?(o=a||1/n,void(q=Math.min(b,o,0))):1/n>o},i.sleep=function(){null!=f&&(m&&B?B(f):clearTimeout(f),e=p,f=null,i===j&&(k=!1))},i.wake=function(a){null!==f?i.sleep():a?l+=-D+(D=C()):i.frame>10&&(D=C()-o+5),e=0===c?p:m&&A?A:function(a){return setTimeout(a,1e3*(h-i.time)+1|0)},i===j&&(k=!0),s(2)},i.fps=function(a){return arguments.length?(c=a,g=1/(c||60),h=this.time+g,void i.wake()):c},i.useRAF=function(a){return arguments.length?(i.sleep(),m=a,void i.fps(c)):m},i.fps(a),setTimeout(function(){\"auto\"===m&&i.frame<5&&\"hidden\"!==(d||{}).visibilityState&&i.useRAF(!1)},1500)}),i=m.Ticker.prototype=new m.events.EventDispatcher,i.constructor=m.Ticker;var E=u(\"core.Animation\",function(a,b){if(this.vars=b=b||{},this._duration=this._totalDuration=a||0,this._delay=Number(b.delay)||0,this._timeScale=1,this._active=b.immediateRender===!0,this.data=b.data,this._reversed=b.reversed===!0,Y){k||j.wake();var c=this.vars.useFrames?X:Y;c.add(this,c._time),this.vars.paused&&this.paused(!0)}});j=E.ticker=new m.Ticker,i=E.prototype,i._dirty=i._gc=i._initted=i._paused=!1,i._totalTime=i._time=0,i._rawPrevTime=-1,i._next=i._last=i._onUpdate=i._timeline=i.timeline=null,i._paused=!1;var F=function(){k&&C()-D>2e3&&(\"hidden\"!==(d||{}).visibilityState||!j.lagSmoothing())&&j.wake();var a=setTimeout(F,2e3);a.unref&&a.unref()};F(),i.play=function(a,b){return null!=a&&this.seek(a,b),this.reversed(!1).paused(!1)},i.pause=function(a,b){return null!=a&&this.seek(a,b),this.paused(!0)},i.resume=function(a,b){return null!=a&&this.seek(a,b),this.paused(!1)},i.seek=function(a,b){return this.totalTime(Number(a),b!==!1)},i.restart=function(a,b){return this.reversed(!1).paused(!1).totalTime(a?-this._delay:0,b!==!1,!0)},i.reverse=function(a,b){return null!=a&&this.seek(a||this.totalDuration(),b),this.reversed(!0).paused(!1)},i.render=function(a,b,c){},i.invalidate=function(){return this._time=this._totalTime=0,this._initted=this._gc=!1,this._rawPrevTime=-1,(this._gc||!this.timeline)&&this._enabled(!0),this},i.isActive=function(){var a,b=this._timeline,c=this._startTime;return!b||!this._gc&&!this._paused&&b.isActive()&&(a=b.rawTime(!0))>=c&&a-1;)\"{self}\"===a[b]&&(c[b]=this);return c},i._callback=function(a){var b=this.vars,c=b[a],d=b[a+\"Params\"],e=b[a+\"Scope\"]||b.callbackScope||this,f=d?d.length:0;switch(f){case 0:c.call(e);break;case 1:c.call(e,d[0]);break;case 2:c.call(e,d[0],d[1]);break;default:c.apply(e,d)}},i.eventCallback=function(a,b,c,d){if(\"on\"===(a||\"\").substr(0,2)){var e=this.vars;if(1===arguments.length)return e[a];null==b?delete e[a]:(e[a]=b,e[a+\"Params\"]=q(c)&&-1!==c.join(\"\").indexOf(\"{self}\")?this._swapSelfInParams(c):c,e[a+\"Scope\"]=d),\"onUpdate\"===a&&(this._onUpdate=b)}return this},i.delay=function(a){return arguments.length?(this._timeline.smoothChildTiming&&this.startTime(this._startTime+a-this._delay),this._delay=a,this):this._delay},i.duration=function(a){return arguments.length?(this._duration=this._totalDuration=a,this._uncache(!0),this._timeline.smoothChildTiming&&this._time>0&&this._timethis._duration?this._duration:a,b)):this._time},i.totalTime=function(a,b,c){if(k||j.wake(),!arguments.length)return this._totalTime;if(this._timeline){if(0>a&&!c&&(a+=this.totalDuration()),this._timeline.smoothChildTiming){this._dirty&&this.totalDuration();var d=this._totalDuration,e=this._timeline;if(a>d&&!c&&(a=d),this._startTime=(this._paused?this._pauseTime:e._time)-(this._reversed?d-a:a)/this._timeScale,e._dirty||this._uncache(!1),e._timeline)for(;e._timeline;)e._timeline._time!==(e._startTime+e._totalTime)/e._timeScale&&e.totalTime(e._totalTime,!0),e=e._timeline}this._gc&&this._enabled(!0,!1),(this._totalTime!==a||0===this._duration)&&(K.length&&$(),this.render(a,b,!1),K.length&&$())}return this},i.progress=i.totalProgress=function(a,b){var c=this.duration();return arguments.length?this.totalTime(c*a,b):c?this._time/c:this.ratio;\n},i.startTime=function(a){return arguments.length?(a!==this._startTime&&(this._startTime=a,this.timeline&&this.timeline._sortChildren&&this.timeline.add(this,a-this._delay)),this):this._startTime},i.endTime=function(a){return this._startTime+(0!=a?this.totalDuration():this.duration())/this._timeScale},i.timeScale=function(a){if(!arguments.length)return this._timeScale;var b,c;for(a=a||n,this._timeline&&this._timeline.smoothChildTiming&&(b=this._pauseTime,c=b||0===b?b:this._timeline.totalTime(),this._startTime=c-(c-this._startTime)*this._timeScale/a),this._timeScale=a,c=this.timeline;c&&c.timeline;)c._dirty=!0,c.totalDuration(),c=c.timeline;return this},i.reversed=function(a){return arguments.length?(a!=this._reversed&&(this._reversed=a,this.totalTime(this._timeline&&!this._timeline.smoothChildTiming?this.totalDuration()-this._totalTime:this._totalTime,!0)),this):this._reversed},i.paused=function(a){if(!arguments.length)return this._paused;var b,c,d=this._timeline;return a!=this._paused&&d&&(k||a||j.wake(),b=d.rawTime(),c=b-this._pauseTime,!a&&d.smoothChildTiming&&(this._startTime+=c,this._uncache(!1)),this._pauseTime=a?b:null,this._paused=a,this._active=this.isActive(),!a&&0!==c&&this._initted&&this.duration()&&(b=d.smoothChildTiming?this._totalTime:(b-this._startTime)/this._timeScale,this.render(b,b===this._totalTime,!0))),this._gc&&!a&&this._enabled(!0,!1),this};var G=u(\"core.SimpleTimeline\",function(a){E.call(this,0,a),this.autoRemoveChildren=this.smoothChildTiming=!0});i=G.prototype=new E,i.constructor=G,i.kill()._gc=!1,i._first=i._last=i._recent=null,i._sortChildren=!1,i.add=i.insert=function(a,b,c,d){var e,f;if(a._startTime=Number(b||0)+a._delay,a._paused&&this!==a._timeline&&(a._pauseTime=this.rawTime()-(a._timeline.rawTime()-a._pauseTime)),a.timeline&&a.timeline._remove(a,!0),a.timeline=a._timeline=this,a._gc&&a._enabled(!0,!0),e=this._last,this._sortChildren)for(f=a._startTime;e&&e._startTime>f;)e=e._prev;return e?(a._next=e._next,e._next=a):(a._next=this._first,this._first=a),a._next?a._next._prev=a:this._last=a,a._prev=e,this._recent=a,this._timeline&&this._uncache(!0),this},i._remove=function(a,b){return a.timeline===this&&(b||a._enabled(!1,!0),a._prev?a._prev._next=a._next:this._first===a&&(this._first=a._next),a._next?a._next._prev=a._prev:this._last===a&&(this._last=a._prev),a._next=a._prev=a.timeline=null,a===this._recent&&(this._recent=this._last),this._timeline&&this._uncache(!0)),this},i.render=function(a,b,c){var d,e=this._first;for(this._totalTime=this._time=this._rawPrevTime=a;e;)d=e._next,(e._active||a>=e._startTime&&!e._paused&&!e._gc)&&(e._reversed?e.render((e._dirty?e.totalDuration():e._totalDuration)-(a-e._startTime)*e._timeScale,b,c):e.render((a-e._startTime)*e._timeScale,b,c)),e=d},i.rawTime=function(){return k||j.wake(),this._totalTime};var H=u(\"TweenLite\",function(b,c,d){if(E.call(this,c,d),this.render=H.prototype.render,null==b)throw\"Cannot tween a null target.\";this.target=b=\"string\"!=typeof b?b:H.selector(b)||b;var e,f,g,h=b.jquery||b.length&&b!==a&&b[0]&&(b[0]===a||b[0].nodeType&&b[0].style&&!b.nodeType),i=this.vars.overwrite;if(this._overwrite=i=null==i?W[H.defaultOverwrite]:\"number\"==typeof i?i>>0:W[i],(h||b instanceof Array||b.push&&q(b))&&\"number\"!=typeof b[0])for(this._targets=g=o(b),this._propLookup=[],this._siblings=[],e=0;e1&&ba(f,this,null,1,this._siblings[e])):(f=g[e--]=H.selector(f),\"string\"==typeof f&&g.splice(e+1,1)):g.splice(e--,1);else this._propLookup={},this._siblings=_(b,this,!1),1===i&&this._siblings.length>1&&ba(b,this,null,1,this._siblings);(this.vars.immediateRender||0===c&&0===this._delay&&this.vars.immediateRender!==!1)&&(this._time=-n,this.render(Math.min(0,-this._delay)))},!0),I=function(b){return b&&b.length&&b!==a&&b[0]&&(b[0]===a||b[0].nodeType&&b[0].style&&!b.nodeType)},J=function(a,b){var c,d={};for(c in a)V[c]||c in b&&\"transform\"!==c&&\"x\"!==c&&\"y\"!==c&&\"width\"!==c&&\"height\"!==c&&\"className\"!==c&&\"border\"!==c||!(!S[c]||S[c]&&S[c]._autoCSS)||(d[c]=a[c],delete a[c]);a.css=d};i=H.prototype=new E,i.constructor=H,i.kill()._gc=!1,i.ratio=0,i._firstPT=i._targets=i._overwrittenProps=i._startAt=null,i._notifyPluginsOfEnabled=i._lazy=!1,H.version=\"2.0.2\",H.defaultEase=i._ease=new w(null,null,1,1),H.defaultOverwrite=\"auto\",H.ticker=j,H.autoSleep=120,H.lagSmoothing=function(a,b){j.lagSmoothing(a,b)},H.selector=a.$||a.jQuery||function(b){var c=a.$||a.jQuery;return c?(H.selector=c,c(b)):(d||(d=a.document),d?d.querySelectorAll?d.querySelectorAll(b):d.getElementById(\"#\"===b.charAt(0)?b.substr(1):b):b)};var K=[],L={},M=/(?:(-|-=|\\+=)?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)[0-9]/gi,N=/[\\+-]=-?[\\.\\d]/,O=function(a){for(var b,c=this._firstPT,d=1e-6;c;)b=c.blob?1===a&&null!=this.end?this.end:a?this.join(\"\"):this.start:c.c*a+c.s,c.m?b=c.m.call(this._tween,b,this._target||c.t,this._tween):d>b&&b>-d&&!c.blob&&(b=0),c.f?c.fp?c.t[c.p](c.fp,b):c.t[c.p](b):c.t[c.p]=b,c=c._next},P=function(a,b,c,d){var e,f,g,h,i,j,k,l=[],m=0,n=\"\",o=0;for(l.start=a,l.end=b,a=l[0]=a+\"\",b=l[1]=b+\"\",c&&(c(l),a=l[0],b=l[1]),l.length=0,e=a.match(M)||[],f=b.match(M)||[],d&&(d._next=null,d.blob=1,l._firstPT=l._applyPT=d),i=f.length,h=0;i>h;h++)k=f[h],j=b.substr(m,b.indexOf(k,m)-m),n+=j||!h?j:\",\",m+=j.length,o?o=(o+1)%5:\"rgba(\"===j.substr(-5)&&(o=1),k===e[h]||e.length<=h?n+=k:(n&&(l.push(n),n=\"\"),g=parseFloat(e[h]),l.push(g),l._firstPT={_next:l._firstPT,t:l,p:l.length-1,s:g,c:(\"=\"===k.charAt(1)?parseInt(k.charAt(0)+\"1\",10)*parseFloat(k.substr(2)):parseFloat(k)-g)||0,f:0,m:o&&4>o?Math.round:0}),m+=k.length;return n+=b.substr(m),n&&l.push(n),l.setRatio=O,N.test(b)&&(l.end=null),l},Q=function(a,b,c,d,e,f,g,h,i){\"function\"==typeof d&&(d=d(i||0,a));var j,k=typeof a[b],l=\"function\"!==k?\"\":b.indexOf(\"set\")||\"function\"!=typeof a[\"get\"+b.substr(3)]?b:\"get\"+b.substr(3),m=\"get\"!==c?c:l?g?a[l](g):a[l]():a[b],n=\"string\"==typeof d&&\"=\"===d.charAt(1),o={t:a,p:b,s:m,f:\"function\"===k,pg:0,n:e||b,m:f?\"function\"==typeof f?f:Math.round:0,pr:0,c:n?parseInt(d.charAt(0)+\"1\",10)*parseFloat(d.substr(2)):parseFloat(d)-m||0};return(\"number\"!=typeof m||\"number\"!=typeof d&&!n)&&(g||isNaN(m)||!n&&isNaN(d)||\"boolean\"==typeof m||\"boolean\"==typeof d?(o.fp=g,j=P(m,n?parseFloat(o.s)+o.c+(o.s+\"\").replace(/[0-9\\-\\.]/g,\"\"):d,h||H.defaultStringFilter,o),o={t:j,p:\"setRatio\",s:0,c:1,f:2,pg:0,n:e||b,pr:0,m:0}):(o.s=parseFloat(m),n||(o.c=parseFloat(d)-o.s||0))),o.c?((o._next=this._firstPT)&&(o._next._prev=o),this._firstPT=o,o):void 0},R=H._internals={isArray:q,isSelector:I,lazyTweens:K,blobDif:P},S=H._plugins={},T=R.tweenLookup={},U=0,V=R.reservedProps={ease:1,delay:1,overwrite:1,onComplete:1,onCompleteParams:1,onCompleteScope:1,useFrames:1,runBackwards:1,startAt:1,onUpdate:1,onUpdateParams:1,onUpdateScope:1,onStart:1,onStartParams:1,onStartScope:1,onReverseComplete:1,onReverseCompleteParams:1,onReverseCompleteScope:1,onRepeat:1,onRepeatParams:1,onRepeatScope:1,easeParams:1,yoyo:1,immediateRender:1,repeat:1,repeatDelay:1,data:1,paused:1,reversed:1,autoCSS:1,lazy:1,onOverwrite:1,callbackScope:1,stringFilter:1,id:1,yoyoEase:1},W={none:0,all:1,auto:2,concurrent:3,allOnStart:4,preexisting:5,\"true\":1,\"false\":0},X=E._rootFramesTimeline=new G,Y=E._rootTimeline=new G,Z=30,$=R.lazyRender=function(){var a,b=K.length;for(L={};--b>-1;)a=K[b],a&&a._lazy!==!1&&(a.render(a._lazy[0],a._lazy[1],!0),a._lazy=!1);K.length=0};Y._startTime=j.time,X._startTime=j.frame,Y._active=X._active=!0,setTimeout($,1),E._updateRoot=H.render=function(){var a,b,c;if(K.length&&$(),Y.render((j.time-Y._startTime)*Y._timeScale,!1,!1),X.render((j.frame-X._startTime)*X._timeScale,!1,!1),K.length&&$(),j.frame>=Z){Z=j.frame+(parseInt(H.autoSleep,10)||120);for(c in T){for(b=T[c].tweens,a=b.length;--a>-1;)b[a]._gc&&b.splice(a,1);0===b.length&&delete T[c]}if(c=Y._first,(!c||c._paused)&&H.autoSleep&&!X._first&&1===j._listeners.tick.length){for(;c&&c._paused;)c=c._next;c||j.sleep()}}},j.addEventListener(\"tick\",E._updateRoot);var _=function(a,b,c){var d,e,f=a._gsTweenID;if(T[f||(a._gsTweenID=f=\"t\"+U++)]||(T[f]={target:a,tweens:[]}),b&&(d=T[f].tweens,d[e=d.length]=b,c))for(;--e>-1;)d[e]===b&&d.splice(e,1);return T[f].tweens},aa=function(a,b,c,d){var e,f,g=a.vars.onOverwrite;return g&&(e=g(a,b,c,d)),g=H.onOverwrite,g&&(f=g(a,b,c,d)),e!==!1&&f!==!1},ba=function(a,b,c,d,e){var f,g,h,i;if(1===d||d>=4){for(i=e.length,f=0;i>f;f++)if((h=e[f])!==b)h._gc||h._kill(null,a,b)&&(g=!0);else if(5===d)break;return g}var j,k=b._startTime+n,l=[],m=0,o=0===b._duration;for(f=e.length;--f>-1;)(h=e[f])===b||h._gc||h._paused||(h._timeline!==b._timeline?(j=j||ca(b,0,o),0===ca(h,j,o)&&(l[m++]=h)):h._startTime<=k&&h._startTime+h.totalDuration()/h._timeScale>k&&((o||!h._initted)&&k-h._startTime<=2e-10||(l[m++]=h)));for(f=m;--f>-1;)if(h=l[f],i=h._firstPT,2===d&&h._kill(c,a,b)&&(g=!0),2!==d||!h._firstPT&&h._initted&&i){if(2!==d&&!aa(h,b))continue;h._enabled(!1,!1)&&(g=!0)}return g},ca=function(a,b,c){for(var d=a._timeline,e=d._timeScale,f=a._startTime;d._timeline;){if(f+=d._startTime,e*=d._timeScale,d._paused)return-100;d=d._timeline}return f/=e,f>b?f-b:c&&f===b||!a._initted&&2*n>f-b?n:(f+=a.totalDuration()/a._timeScale/e)>b+n?0:f-b-n};i._init=function(){var a,b,c,d,e,f,g=this.vars,h=this._overwrittenProps,i=this._duration,j=!!g.immediateRender,k=g.ease;if(g.startAt){this._startAt&&(this._startAt.render(-1,!0),this._startAt.kill()),e={};for(d in g.startAt)e[d]=g.startAt[d];if(e.data=\"isStart\",e.overwrite=!1,e.immediateRender=!0,e.lazy=j&&g.lazy!==!1,e.startAt=e.delay=null,e.onUpdate=g.onUpdate,e.onUpdateParams=g.onUpdateParams,e.onUpdateScope=g.onUpdateScope||g.callbackScope||this,this._startAt=H.to(this.target||{},0,e),j)if(this._time>0)this._startAt=null;else if(0!==i)return}else if(g.runBackwards&&0!==i)if(this._startAt)this._startAt.render(-1,!0),this._startAt.kill(),this._startAt=null;else{0!==this._time&&(j=!1),c={};for(d in g)V[d]&&\"autoCSS\"!==d||(c[d]=g[d]);if(c.overwrite=0,c.data=\"isFromStart\",c.lazy=j&&g.lazy!==!1,c.immediateRender=j,this._startAt=H.to(this.target,0,c),j){if(0===this._time)return}else this._startAt._init(),this._startAt._enabled(!1),this.vars.immediateRender&&(this._startAt=null)}if(this._ease=k=k?k instanceof w?k:\"function\"==typeof k?new w(k,g.easeParams):x[k]||H.defaultEase:H.defaultEase,g.easeParams instanceof Array&&k.config&&(this._ease=k.config.apply(k,g.easeParams)),this._easeType=this._ease._type,this._easePower=this._ease._power,this._firstPT=null,this._targets)for(f=this._targets.length,a=0;f>a;a++)this._initProps(this._targets[a],this._propLookup[a]={},this._siblings[a],h?h[a]:null,a)&&(b=!0);else b=this._initProps(this.target,this._propLookup,this._siblings,h,0);if(b&&H._onPluginEvent(\"_onInitAllProps\",this),h&&(this._firstPT||\"function\"!=typeof this.target&&this._enabled(!1,!1)),g.runBackwards)for(c=this._firstPT;c;)c.s+=c.c,c.c=-c.c,c=c._next;this._onUpdate=g.onUpdate,this._initted=!0},i._initProps=function(b,c,d,e,f){var g,h,i,j,k,l;if(null==b)return!1;L[b._gsTweenID]&&$(),this.vars.css||b.style&&b!==a&&b.nodeType&&S.css&&this.vars.autoCSS!==!1&&J(this.vars,b);for(g in this.vars)if(l=this.vars[g],V[g])l&&(l instanceof Array||l.push&&q(l))&&-1!==l.join(\"\").indexOf(\"{self}\")&&(this.vars[g]=l=this._swapSelfInParams(l,this));else if(S[g]&&(j=new S[g])._onInitTween(b,this.vars[g],this,f)){for(this._firstPT=k={_next:this._firstPT,t:j,p:\"setRatio\",s:0,c:1,f:1,n:g,pg:1,pr:j._priority,m:0},h=j._overwriteProps.length;--h>-1;)c[j._overwriteProps[h]]=this._firstPT;(j._priority||j._onInitAllProps)&&(i=!0),(j._onDisable||j._onEnable)&&(this._notifyPluginsOfEnabled=!0),k._next&&(k._next._prev=k)}else c[g]=Q.call(this,b,g,\"get\",l,g,0,null,this.vars.stringFilter,f);return e&&this._kill(e,b)?this._initProps(b,c,d,e,f):this._overwrite>1&&this._firstPT&&d.length>1&&ba(b,this,c,this._overwrite,d)?(this._kill(c,b),this._initProps(b,c,d,e,f)):(this._firstPT&&(this.vars.lazy!==!1&&this._duration||this.vars.lazy&&!this._duration)&&(L[b._gsTweenID]=!0),i)},i.render=function(a,b,c){var d,e,f,g,h=this._time,i=this._duration,j=this._rawPrevTime;if(a>=i-1e-7&&a>=0)this._totalTime=this._time=i,this.ratio=this._ease._calcEnd?this._ease.getRatio(1):1,this._reversed||(d=!0,e=\"onComplete\",c=c||this._timeline.autoRemoveChildren),0===i&&(this._initted||!this.vars.lazy||c)&&(this._startTime===this._timeline._duration&&(a=0),(0>j||0>=a&&a>=-1e-7||j===n&&\"isPause\"!==this.data)&&j!==a&&(c=!0,j>n&&(e=\"onReverseComplete\")),this._rawPrevTime=g=!b||a||j===a?a:n);else if(1e-7>a)this._totalTime=this._time=0,this.ratio=this._ease._calcEnd?this._ease.getRatio(0):0,(0!==h||0===i&&j>0)&&(e=\"onReverseComplete\",d=this._reversed),0>a&&(this._active=!1,0===i&&(this._initted||!this.vars.lazy||c)&&(j>=0&&(j!==n||\"isPause\"!==this.data)&&(c=!0),this._rawPrevTime=g=!b||a||j===a?a:n)),(!this._initted||this._startAt&&this._startAt.progress())&&(c=!0);else if(this._totalTime=this._time=a,this._easeType){var k=a/i,l=this._easeType,m=this._easePower;(1===l||3===l&&k>=.5)&&(k=1-k),3===l&&(k*=2),1===m?k*=k:2===m?k*=k*k:3===m?k*=k*k*k:4===m&&(k*=k*k*k*k),1===l?this.ratio=1-k:2===l?this.ratio=k:.5>a/i?this.ratio=k/2:this.ratio=1-k/2}else this.ratio=this._ease.getRatio(a/i);if(this._time!==h||c){if(!this._initted){if(this._init(),!this._initted||this._gc)return;if(!c&&this._firstPT&&(this.vars.lazy!==!1&&this._duration||this.vars.lazy&&!this._duration))return this._time=this._totalTime=h,this._rawPrevTime=j,K.push(this),void(this._lazy=[a,b]);this._time&&!d?this.ratio=this._ease.getRatio(this._time/i):d&&this._ease._calcEnd&&(this.ratio=this._ease.getRatio(0===this._time?0:1))}for(this._lazy!==!1&&(this._lazy=!1),this._active||!this._paused&&this._time!==h&&a>=0&&(this._active=!0),0===h&&(this._startAt&&(a>=0?this._startAt.render(a,!0,c):e||(e=\"_dummyGS\")),this.vars.onStart&&(0!==this._time||0===i)&&(b||this._callback(\"onStart\"))),f=this._firstPT;f;)f.f?f.t[f.p](f.c*this.ratio+f.s):f.t[f.p]=f.c*this.ratio+f.s,f=f._next;this._onUpdate&&(0>a&&this._startAt&&a!==-1e-4&&this._startAt.render(a,!0,c),b||(this._time!==h||d||c)&&this._callback(\"onUpdate\")),e&&(!this._gc||c)&&(0>a&&this._startAt&&!this._onUpdate&&a!==-1e-4&&this._startAt.render(a,!0,c),d&&(this._timeline.autoRemoveChildren&&this._enabled(!1,!1),this._active=!1),!b&&this.vars[e]&&this._callback(e),0===i&&this._rawPrevTime===n&&g!==n&&(this._rawPrevTime=0))}},i._kill=function(a,b,c){if(\"all\"===a&&(a=null),null==a&&(null==b||b===this.target))return this._lazy=!1,this._enabled(!1,!1);b=\"string\"!=typeof b?b||this._targets||this.target:H.selector(b)||b;var d,e,f,g,h,i,j,k,l,m=c&&this._time&&c._startTime===this._startTime&&this._timeline===c._timeline,n=this._firstPT;if((q(b)||I(b))&&\"number\"!=typeof b[0])for(d=b.length;--d>-1;)this._kill(a,b[d],c)&&(i=!0);else{if(this._targets){for(d=this._targets.length;--d>-1;)if(b===this._targets[d]){h=this._propLookup[d]||{},this._overwrittenProps=this._overwrittenProps||[],e=this._overwrittenProps[d]=a?this._overwrittenProps[d]||{}:\"all\";break}}else{if(b!==this.target)return!1;h=this._propLookup,e=this._overwrittenProps=a?this._overwrittenProps||{}:\"all\"}if(h){if(j=a||h,k=a!==e&&\"all\"!==e&&a!==h&&(\"object\"!=typeof a||!a._tempKill),c&&(H.onOverwrite||this.vars.onOverwrite)){for(f in j)h[f]&&(l||(l=[]),l.push(f));if((l||!a)&&!aa(this,c,b,l))return!1}for(f in j)(g=h[f])&&(m&&(g.f?g.t[g.p](g.s):g.t[g.p]=g.s,i=!0),g.pg&&g.t._kill(j)&&(i=!0),g.pg&&0!==g.t._overwriteProps.length||(g._prev?g._prev._next=g._next:g===this._firstPT&&(this._firstPT=g._next),g._next&&(g._next._prev=g._prev),g._next=g._prev=null),delete h[f]),k&&(e[f]=1);!this._firstPT&&this._initted&&n&&this._enabled(!1,!1)}}return i},i.invalidate=function(){return this._notifyPluginsOfEnabled&&H._onPluginEvent(\"_onDisable\",this),this._firstPT=this._overwrittenProps=this._startAt=this._onUpdate=null,this._notifyPluginsOfEnabled=this._active=this._lazy=!1,this._propLookup=this._targets?{}:[],E.prototype.invalidate.call(this),this.vars.immediateRender&&(this._time=-n,this.render(Math.min(0,-this._delay))),this},i._enabled=function(a,b){if(k||j.wake(),a&&this._gc){var c,d=this._targets;if(d)for(c=d.length;--c>-1;)this._siblings[c]=_(d[c],this,!0);else this._siblings=_(this.target,this,!0)}return E.prototype._enabled.call(this,a,b),this._notifyPluginsOfEnabled&&this._firstPT?H._onPluginEvent(a?\"_onEnable\":\"_onDisable\",this):!1},H.to=function(a,b,c){return new H(a,b,c)},H.from=function(a,b,c){return c.runBackwards=!0,c.immediateRender=0!=c.immediateRender,new H(a,b,c)},H.fromTo=function(a,b,c,d){return d.startAt=c,d.immediateRender=0!=d.immediateRender&&0!=c.immediateRender,new H(a,b,d)},H.delayedCall=function(a,b,c,d,e){return new H(b,0,{delay:a,onComplete:b,onCompleteParams:c,callbackScope:d,onReverseComplete:b,onReverseCompleteParams:c,immediateRender:!1,lazy:!1,useFrames:e,overwrite:0})},H.set=function(a,b){return new H(a,0,b)},H.getTweensOf=function(a,b){if(null==a)return[];a=\"string\"!=typeof a?a:H.selector(a)||a;var c,d,e,f;if((q(a)||I(a))&&\"number\"!=typeof a[0]){for(c=a.length,d=[];--c>-1;)d=d.concat(H.getTweensOf(a[c],b));for(c=d.length;--c>-1;)for(f=d[c],e=c;--e>-1;)f===d[e]&&d.splice(c,1)}else if(a._gsTweenID)for(d=_(a).concat(),c=d.length;--c>-1;)(d[c]._gc||b&&!d[c].isActive())&&d.splice(c,1);return d||[]},H.killTweensOf=H.killDelayedCallsTo=function(a,b,c){\"object\"==typeof b&&(c=b,b=!1);for(var d=H.getTweensOf(a,b),e=d.length;--e>-1;)d[e]._kill(c,a)};var da=u(\"plugins.TweenPlugin\",function(a,b){this._overwriteProps=(a||\"\").split(\",\"),this._propName=this._overwriteProps[0],this._priority=b||0,this._super=da.prototype},!0);if(i=da.prototype,da.version=\"1.19.0\",da.API=2,i._firstPT=null,i._addTween=Q,i.setRatio=O,i._kill=function(a){var b,c=this._overwriteProps,d=this._firstPT;if(null!=a[this._propName])this._overwriteProps=[];else for(b=c.length;--b>-1;)null!=a[c[b]]&&c.splice(b,1);for(;d;)null!=a[d.n]&&(d._next&&(d._next._prev=d._prev),d._prev?(d._prev._next=d._next,d._prev=null):this._firstPT===d&&(this._firstPT=d._next)),d=d._next;return!1},i._mod=i._roundProps=function(a){for(var b,c=this._firstPT;c;)b=a[this._propName]||null!=c.n&&a[c.n.split(this._propName+\"_\").join(\"\")],b&&\"function\"==typeof b&&(2===c.f?c.t._applyPT.m=b:c.m=b),c=c._next},H._onPluginEvent=function(a,b){var c,d,e,f,g,h=b._firstPT;if(\"_onInitAllProps\"===a){for(;h;){for(g=h._next,d=e;d&&d.pr>h.pr;)d=d._next;(h._prev=d?d._prev:f)?h._prev._next=h:e=h,(h._next=d)?d._prev=h:f=h,h=g}h=b._firstPT=e}for(;h;)h.pg&&\"function\"==typeof h.t[a]&&h.t[a]()&&(c=!0),h=h._next;return c},da.activate=function(a){for(var b=a.length;--b>-1;)a[b].API===da.API&&(S[(new a[b])._propName]=a[b]);return!0},t.plugin=function(a){if(!(a&&a.propName&&a.init&&a.API))throw\"illegal plugin definition.\";var b,c=a.propName,d=a.priority||0,e=a.overwriteProps,f={init:\"_onInitTween\",set:\"setRatio\",kill:\"_kill\",round:\"_mod\",mod:\"_mod\",initAll:\"_onInitAllProps\"},g=u(\"plugins.\"+c.charAt(0).toUpperCase()+c.substr(1)+\"Plugin\",function(){da.call(this,c,d),this._overwriteProps=e||[]},a.global===!0),h=g.prototype=new da(c);h.constructor=g,g.API=a.API;for(b in f)\"function\"==typeof a[b]&&(h[f[b]]=a[b]);return g.version=a.version,da.activate([g]),g},g=a._gsQueue){for(h=0;h.inner{position:fixed;background:#fff}#cookie.hide{display:none}#cookie .btn{background:linear-gradient(225.93deg, #073a86 0%, #2d849a 101.67%);font-weight:500}#cookie .btn .inner{background:#fff}#cookie .btn .inner .t span.item:nth-of-type(1){color:#3098a6}#cookie .btn .inner .t span.item:nth-of-type(2){color:#2e8b9e}#cookie .btn .inner .t span.item:nth-of-type(3){color:#2d849a}#cookie .btn .inner .t span.item:nth-of-type(4){color:#2c7e96}#cookie .btn .inner .t span.item:nth-of-type(5){color:#2b7892}#cookie .btn .inner .t span.item:nth-of-type(7){color:#29708d}#cookie .btn .inner .t span.item:nth-of-type(9){color:#276384}#cookie .btn .inner .t span.item:nth-of-type(10){color:#266082}#cookie .btn .inner .t span.item:nth-of-type(11){color:#24567c}#cookie .btn .inner .t span.item:nth-of-type(12){color:#234f77}#cookie .btn .inner .t span.item:nth-of-type(13){color:#214772}header h2{position:absolute;z-index:1004;transition:opacity 300ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}header h2 .img2{position:absolute;top:0;left:0;opacity:0;pointer-events:none;transition:opacity 300ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}header h2.hide{opacity:0;pointer-events:none}header .header_nav{position:absolute;z-index:1002;transition:opacity 300ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}header .header_nav.hide{opacity:0;pointer-events:none}header .menu{position:fixed;top:0;display:none;z-index:1005;width:100vw;height:100vh}header .menu .bg{position:fixed;display:block;z-index:-1;background-size:cover;width:0vw;height:100vh;background-color:#171b21;transition:width 700ms;transition-timing-function:cubic-bezier(0.77, 0, 0.175, 1)}header .menu .bg.open{transition:width 500ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1);width:100vw}header .menu.show{display:block}header .menu .lang_nav{opacity:0;transition:opacity 400ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}header .menu .lang_nav.open{opacity:1}header .menu .main_nav li{will-change:transform;transform:translate3d(180px, 0, 0);transition:transform 500ms,opacity 300ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}header .menu .main_nav li.current span.main{color:#5cb4c0}header .menu .main_nav li.current span.main:before{opacity:0;transition:opacity 300ms}header .menu .main_nav li.open{transform:translate3d(0, 0, 0)}header .menu .main_nav li.open.current span.main:before{opacity:1}header .menu .main_nav li.open a:after{opacity:1}header .menu .main_nav li.close{transform:translate3d(-40px, 0, 0) !important;opacity:0}header .menu .main_nav li:nth-of-type(1){transition-delay:0.12s}header .menu .main_nav li:nth-of-type(1).current{pointer-events:none}header .menu .main_nav li:nth-of-type(1).current span.main:before{transition-delay:0.12s}header .menu .main_nav li:nth-of-type(1)>a span.main.open{-webkit-animation:common_blink .1s linear 0.12s;animation:common_blink .1s linear 0.12s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li:nth-of-type(1)>a span.main.open span.item{transform:rotate3d(1, 1, 1, 0)}header .menu .main_nav li:nth-of-type(1)>a span.main span.item:nth-of-type(1){transition-delay:0.1359s}header .menu .main_nav li:nth-of-type(1)>a span.main span.item:nth-of-type(2){transition-delay:0.1629s}header .menu .main_nav li:nth-of-type(1)>a span.main span.item:nth-of-type(3){transition-delay:0.1323s}header .menu .main_nav li:nth-of-type(1)>a span.main span.item:nth-of-type(4){transition-delay:0.1317s}header .menu .main_nav li:nth-of-type(1)>a span.main span.item:nth-of-type(5){transition-delay:0.20205s}header .menu .main_nav li:nth-of-type(1)>a span.main span.item:nth-of-type(6){transition-delay:0.2586s}header .menu .main_nav li:nth-of-type(1)>a span.main span.item:nth-of-type(7){transition-delay:0.2304s}header .menu .main_nav li:nth-of-type(1)>a span.main span.item:nth-of-type(8){transition-delay:0.19335s}header .menu .main_nav li:nth-of-type(1)>a span.main span.item:nth-of-type(9){transition-delay:0.24615s}header .menu .main_nav li:nth-of-type(1)>a span.main span.item:nth-of-type(10){transition-delay:0.2526s}header .menu .main_nav li:nth-of-type(1)>a span.main span.item:nth-of-type(11){transition-delay:0.1875s}header .menu .main_nav li:nth-of-type(1)>a span.main span.item:nth-of-type(12){transition-delay:0.20385s}header .menu .main_nav li:nth-of-type(1)>a span.main span.item:nth-of-type(13){transition-delay:0.1683s}header .menu .main_nav li:nth-of-type(1)>a span.main span.item:nth-of-type(14){transition-delay:0.15465s}header .menu .main_nav li:nth-of-type(1)>a span.main span.item:nth-of-type(15){transition-delay:0.23835s}header .menu .main_nav li:nth-of-type(1)>a span.main span.item:nth-of-type(16){transition-delay:0.1326s}header .menu .main_nav li:nth-of-type(1)>a span.main span.item:nth-of-type(17){transition-delay:0.12465s}header .menu .main_nav li:nth-of-type(1)>a span.main span.item:nth-of-type(18){transition-delay:0.15255s}header .menu .main_nav li:nth-of-type(1)>a span.main span.item:nth-of-type(19){transition-delay:0.1893s}header .menu .main_nav li:nth-of-type(1)>a span.main span.item:nth-of-type(20){transition-delay:0.1332s}header .menu .main_nav li:nth-of-type(1)>a span.main span.item:nth-of-type(21){transition-delay:0.13725s}header .menu .main_nav li:nth-of-type(1)>a span.main span.item:nth-of-type(22){transition-delay:0.2388s}header .menu .main_nav li:nth-of-type(1)>a:after{transition-delay:0.47s}header .menu .main_nav li:nth-of-type(2){transition-delay:0.24s}header .menu .main_nav li:nth-of-type(2).current{pointer-events:none}header .menu .main_nav li:nth-of-type(2).current span.main:before{transition-delay:0.24s}header .menu .main_nav li:nth-of-type(2)>a span.main.open{-webkit-animation:common_blink .1s linear 0.24s;animation:common_blink .1s linear 0.24s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li:nth-of-type(2)>a span.main.open span.item{transform:rotate3d(1, 1, 1, 0)}header .menu .main_nav li:nth-of-type(2)>a span.main span.item:nth-of-type(1){transition-delay:0.29535s}header .menu .main_nav li:nth-of-type(2)>a span.main span.item:nth-of-type(2){transition-delay:0.34635s}header .menu .main_nav li:nth-of-type(2)>a span.main span.item:nth-of-type(3){transition-delay:0.37065s}header .menu .main_nav li:nth-of-type(2)>a span.main span.item:nth-of-type(4){transition-delay:0.29805s}header .menu .main_nav li:nth-of-type(2)>a span.main span.item:nth-of-type(5){transition-delay:0.2886s}header .menu .main_nav li:nth-of-type(2)>a span.main span.item:nth-of-type(6){transition-delay:0.29145s}header .menu .main_nav li:nth-of-type(2)>a span.main span.item:nth-of-type(7){transition-delay:0.3567s}header .menu .main_nav li:nth-of-type(2)>a span.main span.item:nth-of-type(8){transition-delay:0.3669s}header .menu .main_nav li:nth-of-type(2)>a span.main span.item:nth-of-type(9){transition-delay:0.3615s}header .menu .main_nav li:nth-of-type(2)>a span.main span.item:nth-of-type(10){transition-delay:0.2841s}header .menu .main_nav li:nth-of-type(2)>a span.main span.item:nth-of-type(11){transition-delay:0.2958s}header .menu .main_nav li:nth-of-type(2)>a span.main span.item:nth-of-type(12){transition-delay:0.35025s}header .menu .main_nav li:nth-of-type(2)>a span.main span.item:nth-of-type(13){transition-delay:0.35985s}header .menu .main_nav li:nth-of-type(2)>a span.main span.item:nth-of-type(14){transition-delay:0.25455s}header .menu .main_nav li:nth-of-type(2)>a span.main span.item:nth-of-type(15){transition-delay:0.32835s}header .menu .main_nav li:nth-of-type(2)>a span.main span.item:nth-of-type(16){transition-delay:0.26985s}header .menu .main_nav li:nth-of-type(2)>a span.main span.item:nth-of-type(17){transition-delay:0.31935s}header .menu .main_nav li:nth-of-type(2)>a span.main span.item:nth-of-type(18){transition-delay:0.28425s}header .menu .main_nav li:nth-of-type(2)>a span.main span.item:nth-of-type(19){transition-delay:0.38415s}header .menu .main_nav li:nth-of-type(2)>a span.main span.item:nth-of-type(20){transition-delay:0.28275s}header .menu .main_nav li:nth-of-type(2)>a span.main span.item:nth-of-type(21){transition-delay:0.3759s}header .menu .main_nav li:nth-of-type(2)>a span.main span.item:nth-of-type(22){transition-delay:0.38685s}header .menu .main_nav li:nth-of-type(2)>a:after{transition-delay:0.59s}header .menu .main_nav li:nth-of-type(3){transition-delay:0.36s}header .menu .main_nav li:nth-of-type(3).current{pointer-events:none}header .menu .main_nav li:nth-of-type(3).current span.main:before{transition-delay:0.36s}header .menu .main_nav li:nth-of-type(3)>a span.main.open{-webkit-animation:common_blink .1s linear 0.36s;animation:common_blink .1s linear 0.36s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li:nth-of-type(3)>a span.main.open span.item{transform:rotate3d(1, 1, 1, 0)}header .menu .main_nav li:nth-of-type(3)>a span.main span.item:nth-of-type(1){transition-delay:0.4251s}header .menu .main_nav li:nth-of-type(3)>a span.main span.item:nth-of-type(2){transition-delay:0.3855s}header .menu .main_nav li:nth-of-type(3)>a span.main span.item:nth-of-type(3){transition-delay:0.3846s}header .menu .main_nav li:nth-of-type(3)>a span.main span.item:nth-of-type(4){transition-delay:0.4302s}header .menu .main_nav li:nth-of-type(3)>a span.main span.item:nth-of-type(5){transition-delay:0.48465s}header .menu .main_nav li:nth-of-type(3)>a span.main span.item:nth-of-type(6){transition-delay:0.4128s}header .menu .main_nav li:nth-of-type(3)>a span.main span.item:nth-of-type(7){transition-delay:0.4257s}header .menu .main_nav li:nth-of-type(3)>a span.main span.item:nth-of-type(8){transition-delay:0.5088s}header .menu .main_nav li:nth-of-type(3)>a span.main span.item:nth-of-type(9){transition-delay:0.36675s}header .menu .main_nav li:nth-of-type(3)>a span.main span.item:nth-of-type(10){transition-delay:0.3855s}header .menu .main_nav li:nth-of-type(3)>a span.main span.item:nth-of-type(11){transition-delay:0.3999s}header .menu .main_nav li:nth-of-type(3)>a span.main span.item:nth-of-type(12){transition-delay:0.44055s}header .menu .main_nav li:nth-of-type(3)>a span.main span.item:nth-of-type(13){transition-delay:0.4413s}header .menu .main_nav li:nth-of-type(3)>a span.main span.item:nth-of-type(14){transition-delay:0.4434s}header .menu .main_nav li:nth-of-type(3)>a span.main span.item:nth-of-type(15){transition-delay:0.4881s}header .menu .main_nav li:nth-of-type(3)>a span.main span.item:nth-of-type(16){transition-delay:0.4722s}header .menu .main_nav li:nth-of-type(3)>a span.main span.item:nth-of-type(17){transition-delay:0.4815s}header .menu .main_nav li:nth-of-type(3)>a span.main span.item:nth-of-type(18){transition-delay:0.49695s}header .menu .main_nav li:nth-of-type(3)>a span.main span.item:nth-of-type(19){transition-delay:0.37755s}header .menu .main_nav li:nth-of-type(3)>a span.main span.item:nth-of-type(20){transition-delay:0.43395s}header .menu .main_nav li:nth-of-type(3)>a span.main span.item:nth-of-type(21){transition-delay:0.41805s}header .menu .main_nav li:nth-of-type(3)>a span.main span.item:nth-of-type(22){transition-delay:0.378s}header .menu .main_nav li:nth-of-type(3)>a:after{transition-delay:0.71s}header .menu .main_nav li:nth-of-type(4){transition-delay:0.48s}header .menu .main_nav li:nth-of-type(4).current{pointer-events:none}header .menu .main_nav li:nth-of-type(4).current span.main:before{transition-delay:0.48s}header .menu .main_nav li:nth-of-type(4)>a span.main.open{-webkit-animation:common_blink .1s linear 0.48s;animation:common_blink .1s linear 0.48s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li:nth-of-type(4)>a span.main.open span.item{transform:rotate3d(1, 1, 1, 0)}header .menu .main_nav li:nth-of-type(4)>a span.main span.item:nth-of-type(1){transition-delay:0.51975s}header .menu .main_nav li:nth-of-type(4)>a span.main span.item:nth-of-type(2){transition-delay:0.6045s}header .menu .main_nav li:nth-of-type(4)>a span.main span.item:nth-of-type(3){transition-delay:0.53295s}header .menu .main_nav li:nth-of-type(4)>a span.main span.item:nth-of-type(4){transition-delay:0.4881s}header .menu .main_nav li:nth-of-type(4)>a span.main span.item:nth-of-type(5){transition-delay:0.5109s}header .menu .main_nav li:nth-of-type(4)>a span.main span.item:nth-of-type(6){transition-delay:0.5724s}header .menu .main_nav li:nth-of-type(4)>a span.main span.item:nth-of-type(7){transition-delay:0.6291s}header .menu .main_nav li:nth-of-type(4)>a span.main span.item:nth-of-type(8){transition-delay:0.5667s}header .menu .main_nav li:nth-of-type(4)>a span.main span.item:nth-of-type(9){transition-delay:0.4929s}header .menu .main_nav li:nth-of-type(4)>a span.main span.item:nth-of-type(10){transition-delay:0.57945s}header .menu .main_nav li:nth-of-type(4)>a span.main span.item:nth-of-type(11){transition-delay:0.5817s}header .menu .main_nav li:nth-of-type(4)>a span.main span.item:nth-of-type(12){transition-delay:0.54315s}header .menu .main_nav li:nth-of-type(4)>a span.main span.item:nth-of-type(13){transition-delay:0.48345s}header .menu .main_nav li:nth-of-type(4)>a span.main span.item:nth-of-type(14){transition-delay:0.5535s}header .menu .main_nav li:nth-of-type(4)>a span.main span.item:nth-of-type(15){transition-delay:0.59265s}header .menu .main_nav li:nth-of-type(4)>a span.main span.item:nth-of-type(16){transition-delay:0.5811s}header .menu .main_nav li:nth-of-type(4)>a span.main span.item:nth-of-type(17){transition-delay:0.49305s}header .menu .main_nav li:nth-of-type(4)>a span.main span.item:nth-of-type(18){transition-delay:0.5289s}header .menu .main_nav li:nth-of-type(4)>a span.main span.item:nth-of-type(19){transition-delay:0.5442s}header .menu .main_nav li:nth-of-type(4)>a span.main span.item:nth-of-type(20){transition-delay:0.537s}header .menu .main_nav li:nth-of-type(4)>a span.main span.item:nth-of-type(21){transition-delay:0.6141s}header .menu .main_nav li:nth-of-type(4)>a span.main span.item:nth-of-type(22){transition-delay:0.50595s}header .menu .main_nav li:nth-of-type(4)>a:after{transition-delay:0.83s}header .menu .main_nav li:nth-of-type(5){transition-delay:0.6s}header .menu .main_nav li:nth-of-type(5).current{pointer-events:none}header .menu .main_nav li:nth-of-type(5).current span.main:before{transition-delay:0.6s}header .menu .main_nav li:nth-of-type(5)>a span.main.open{-webkit-animation:common_blink .1s linear 0.6s;animation:common_blink .1s linear 0.6s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li:nth-of-type(5)>a span.main.open span.item{transform:rotate3d(1, 1, 1, 0)}header .menu .main_nav li:nth-of-type(5)>a span.main span.item:nth-of-type(1){transition-delay:0.72255s}header .menu .main_nav li:nth-of-type(5)>a span.main span.item:nth-of-type(2){transition-delay:0.67215s}header .menu .main_nav li:nth-of-type(5)>a span.main span.item:nth-of-type(3){transition-delay:0.6786s}header .menu .main_nav li:nth-of-type(5)>a span.main span.item:nth-of-type(4){transition-delay:0.66825s}header .menu .main_nav li:nth-of-type(5)>a span.main span.item:nth-of-type(5){transition-delay:0.6798s}header .menu .main_nav li:nth-of-type(5)>a span.main span.item:nth-of-type(6){transition-delay:0.67575s}header .menu .main_nav li:nth-of-type(5)>a span.main span.item:nth-of-type(7){transition-delay:0.7011s}header .menu .main_nav li:nth-of-type(5)>a span.main span.item:nth-of-type(8){transition-delay:0.66255s}header .menu .main_nav li:nth-of-type(5)>a span.main span.item:nth-of-type(9){transition-delay:0.71145s}header .menu .main_nav li:nth-of-type(5)>a span.main span.item:nth-of-type(10){transition-delay:0.71505s}header .menu .main_nav li:nth-of-type(5)>a span.main span.item:nth-of-type(11){transition-delay:0.6069s}header .menu .main_nav li:nth-of-type(5)>a span.main span.item:nth-of-type(12){transition-delay:0.73905s}header .menu .main_nav li:nth-of-type(5)>a span.main span.item:nth-of-type(13){transition-delay:0.7122s}header .menu .main_nav li:nth-of-type(5)>a span.main span.item:nth-of-type(14){transition-delay:0.6153s}header .menu .main_nav li:nth-of-type(5)>a span.main span.item:nth-of-type(15){transition-delay:0.7005s}header .menu .main_nav li:nth-of-type(5)>a span.main span.item:nth-of-type(16){transition-delay:0.66045s}header .menu .main_nav li:nth-of-type(5)>a span.main span.item:nth-of-type(17){transition-delay:0.7452s}header .menu .main_nav li:nth-of-type(5)>a span.main span.item:nth-of-type(18){transition-delay:0.69075s}header .menu .main_nav li:nth-of-type(5)>a span.main span.item:nth-of-type(19){transition-delay:0.73425s}header .menu .main_nav li:nth-of-type(5)>a span.main span.item:nth-of-type(20){transition-delay:0.64845s}header .menu .main_nav li:nth-of-type(5)>a span.main span.item:nth-of-type(21){transition-delay:0.66015s}header .menu .main_nav li:nth-of-type(5)>a span.main span.item:nth-of-type(22){transition-delay:0.6396s}header .menu .main_nav li:nth-of-type(5)>a:after{transition-delay:0.95s}header .menu .main_nav li:nth-of-type(6){transition-delay:0.72s}header .menu .main_nav li:nth-of-type(6).current{pointer-events:none}header .menu .main_nav li:nth-of-type(6).current span.main:before{transition-delay:0.72s}header .menu .main_nav li:nth-of-type(6)>a span.main.open{-webkit-animation:common_blink .1s linear 0.72s;animation:common_blink .1s linear 0.72s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li:nth-of-type(6)>a span.main.open span.item{transform:rotate3d(1, 1, 1, 0)}header .menu .main_nav li:nth-of-type(6)>a span.main span.item:nth-of-type(1){transition-delay:0.81735s}header .menu .main_nav li:nth-of-type(6)>a span.main span.item:nth-of-type(2){transition-delay:0.74805s}header .menu .main_nav li:nth-of-type(6)>a span.main span.item:nth-of-type(3){transition-delay:0.8592s}header .menu .main_nav li:nth-of-type(6)>a span.main span.item:nth-of-type(4){transition-delay:0.8445s}header .menu .main_nav li:nth-of-type(6)>a span.main span.item:nth-of-type(5){transition-delay:0.72435s}header .menu .main_nav li:nth-of-type(6)>a span.main span.item:nth-of-type(6){transition-delay:0.7674s}header .menu .main_nav li:nth-of-type(6)>a span.main span.item:nth-of-type(7){transition-delay:0.85365s}header .menu .main_nav li:nth-of-type(6)>a span.main span.item:nth-of-type(8){transition-delay:0.82305s}header .menu .main_nav li:nth-of-type(6)>a span.main span.item:nth-of-type(9){transition-delay:0.85305s}header .menu .main_nav li:nth-of-type(6)>a span.main span.item:nth-of-type(10){transition-delay:0.78585s}header .menu .main_nav li:nth-of-type(6)>a span.main span.item:nth-of-type(11){transition-delay:0.82065s}header .menu .main_nav li:nth-of-type(6)>a span.main span.item:nth-of-type(12){transition-delay:0.8418s}header .menu .main_nav li:nth-of-type(6)>a span.main span.item:nth-of-type(13){transition-delay:0.8661s}header .menu .main_nav li:nth-of-type(6)>a span.main span.item:nth-of-type(14){transition-delay:0.7326s}header .menu .main_nav li:nth-of-type(6)>a span.main span.item:nth-of-type(15){transition-delay:0.86445s}header .menu .main_nav li:nth-of-type(6)>a span.main span.item:nth-of-type(16){transition-delay:0.7692s}header .menu .main_nav li:nth-of-type(6)>a span.main span.item:nth-of-type(17){transition-delay:0.85905s}header .menu .main_nav li:nth-of-type(6)>a span.main span.item:nth-of-type(18){transition-delay:0.82125s}header .menu .main_nav li:nth-of-type(6)>a span.main span.item:nth-of-type(19){transition-delay:0.7548s}header .menu .main_nav li:nth-of-type(6)>a span.main span.item:nth-of-type(20){transition-delay:0.7266s}header .menu .main_nav li:nth-of-type(6)>a span.main span.item:nth-of-type(21){transition-delay:0.83715s}header .menu .main_nav li:nth-of-type(6)>a span.main span.item:nth-of-type(22){transition-delay:0.7914s}header .menu .main_nav li:nth-of-type(6)>a:after{transition-delay:1.07s}header .menu .main_nav li>a span.main{perspective:300px;transition:transform 500ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}header .menu .main_nav li>a span.main span.item{will-change:transform;transform:rotate3d(1, 0, 0, 180deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform 350ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}header .menu .main_nav li>a:after{opacity:0;transition:opacity 500ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}header .menu .main_nav li>span.sub{opacity:.5}header .menu .main_nav li>span.sub a{transition:opacity 400ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1);opacity:0}header .menu .main_nav li>span.sub a.open{opacity:1}header .menu .newsletter{opacity:0;transition:opacity 400ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}header .menu .newsletter.open{opacity:1}header .menu .sub_nav .social{display:flex}header .menu .sub_nav .social li{opacity:0;transition:opacity 400ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}header .menu .sub_nav .social li.open{opacity:1}header .menu .sub_nav .social a[target=_blank]:after{display:none}header .menu .sub_nav .others li{opacity:0;transition:opacity 400ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}header .menu .sub_nav .others li.open{opacity:1}header .menu .sub_nav .others li.open span.item{opacity:1}header .menu .sub_nav .others li.play span.item:nth-of-type(1){-webkit-animation:common_blink .13s linear 0.0582s;animation:common_blink .13s linear 0.0582s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(2){-webkit-animation:common_blink .13s linear 0.03435s;animation:common_blink .13s linear 0.03435s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(3){-webkit-animation:common_blink .13s linear 0.13575s;animation:common_blink .13s linear 0.13575s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(4){-webkit-animation:common_blink .13s linear 0.11505s;animation:common_blink .13s linear 0.11505s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(5){-webkit-animation:common_blink .13s linear 0.11025s;animation:common_blink .13s linear 0.11025s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(6){-webkit-animation:common_blink .13s linear 0.00165s;animation:common_blink .13s linear 0.00165s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(7){-webkit-animation:common_blink .13s linear 0.003s;animation:common_blink .13s linear 0.003s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(8){-webkit-animation:common_blink .13s linear 0.0057s;animation:common_blink .13s linear 0.0057s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(9){-webkit-animation:common_blink .13s linear 0.02655s;animation:common_blink .13s linear 0.02655s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(10){-webkit-animation:common_blink .13s linear 0.1338s;animation:common_blink .13s linear 0.1338s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(11){-webkit-animation:common_blink .13s linear 0.0432s;animation:common_blink .13s linear 0.0432s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(12){-webkit-animation:common_blink .13s linear 0.0831s;animation:common_blink .13s linear 0.0831s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(13){-webkit-animation:common_blink .13s linear 0.07755s;animation:common_blink .13s linear 0.07755s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(14){-webkit-animation:common_blink .13s linear 0.05415s;animation:common_blink .13s linear 0.05415s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(15){-webkit-animation:common_blink .13s linear 0.0405s;animation:common_blink .13s linear 0.0405s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(16){-webkit-animation:common_blink .13s linear 0.1032s;animation:common_blink .13s linear 0.1032s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(17){-webkit-animation:common_blink .13s linear 0.024s;animation:common_blink .13s linear 0.024s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(18){-webkit-animation:common_blink .13s linear 0.05295s;animation:common_blink .13s linear 0.05295s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(19){-webkit-animation:common_blink .13s linear 0.03945s;animation:common_blink .13s linear 0.03945s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(20){-webkit-animation:common_blink .13s linear 0.14355s;animation:common_blink .13s linear 0.14355s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(21){-webkit-animation:common_blink .13s linear 0.0606s;animation:common_blink .13s linear 0.0606s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(22){-webkit-animation:common_blink .13s linear 0.0051s;animation:common_blink .13s linear 0.0051s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(23){-webkit-animation:common_blink .13s linear 0.13875s;animation:common_blink .13s linear 0.13875s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(24){-webkit-animation:common_blink .13s linear 0.01245s;animation:common_blink .13s linear 0.01245s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(25){-webkit-animation:common_blink .13s linear 0.13425s;animation:common_blink .13s linear 0.13425s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(26){-webkit-animation:common_blink .13s linear 0.10905s;animation:common_blink .13s linear 0.10905s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(27){-webkit-animation:common_blink .13s linear 0.0111s;animation:common_blink .13s linear 0.0111s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(28){-webkit-animation:common_blink .13s linear 0.0783s;animation:common_blink .13s linear 0.0783s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(29){-webkit-animation:common_blink .13s linear 0.01965s;animation:common_blink .13s linear 0.01965s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li.play span.item:nth-of-type(30){-webkit-animation:common_blink .13s linear 0.12345s;animation:common_blink .13s linear 0.12345s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li span.item{opacity:0;transition:opacity 200ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}header .menu .cp{opacity:0;transition:opacity 400ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}header .menu .cp.open{opacity:.5}header .grill{position:fixed;cursor:pointer;z-index:1010;transition:opacity 300ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}header .grill.close:after{background:linear-gradient(277.02deg, rgba(33, 71, 114, 0.8) 0.33%, rgba(48, 152, 166, 0.8) 100%);box-shadow:inset 0px 1px 40px rgba(255,255,255,.25);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}header .grill.close span{background-color:#fff;height:1px;margin-bottom:0px}header .grill:after{content:\\\"\\\";border-radius:50%;display:block;position:absolute;background:linear-gradient(225.93deg, rgba(7, 58, 134, 0.8) 0%, rgba(45, 132, 154, 0.8) 101.67%);box-shadow:inset 0px 1px 40px rgba(255,255,255,.25);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);transition:opacity 300ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}header .grill .grill_child{position:absolute;z-index:1}header .grill span{display:block;width:12px;height:2px;border-radius:2px;background-color:#fff;margin-bottom:4px;position:relative;transition:background-color 300ms,margin-bottom 300ms,height 300ms,top 300ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}footer{position:relative}footer a[target=_blank]:after{display:none}footer .newsletter{background:#e4e9f5}footer .sub .social{display:flex}footer .sub .others{display:flex;font-weight:500}footer .sub .others a[target=_blank]:after{display:inline-block}@media screen and (min-width: 768px){.pc{display:block}.sp{display:none}.btn a{font-size:1.3333333333rem;letter-spacing:-0.01em}.btn a[target=_blank]:before{background-image:url(/assets/img/common/icon-link-blank.svg)}.btn a:before{width:40px;height:40px;margin-right:.7777777778rem;background-image:url(/assets/img/common/icon-link.svg)}.btn a span.item.space{width:.3333333333rem}.btn a:hover span.item:nth-of-type(1){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.125s;animation-delay:0.125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(2){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.05s;animation-delay:0.05s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(3){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1125s;animation-delay:0.1125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(4){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0875s;animation-delay:0.0875s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(5){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1125s;animation-delay:0.1125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(6){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0375s;animation-delay:0.0375s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(7){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0125s;animation-delay:0.0125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(8){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0375s;animation-delay:0.0375s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(9){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0875s;animation-delay:0.0875s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(10){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.05s;animation-delay:0.05s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(11){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1125s;animation-delay:0.1125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(12){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.075s;animation-delay:0.075s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(13){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0125s;animation-delay:0.0125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(14){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0375s;animation-delay:0.0375s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(15){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0125s;animation-delay:0.0125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(16){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.05s;animation-delay:0.05s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(17){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0375s;animation-delay:0.0375s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(18){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1125s;animation-delay:0.1125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(19){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.075s;animation-delay:0.075s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(20){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1s;animation-delay:0.1s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(21){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.125s;animation-delay:0.125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(22){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.125s;animation-delay:0.125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(23){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0625s;animation-delay:0.0625s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(24){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.075s;animation-delay:0.075s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(25){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0875s;animation-delay:0.0875s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(26){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.125s;animation-delay:0.125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(27){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.05s;animation-delay:0.05s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(28){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.125s;animation-delay:0.125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(29){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1125s;animation-delay:0.1125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(30){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.05s;animation-delay:0.05s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(31){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0875s;animation-delay:0.0875s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(32){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1s;animation-delay:0.1s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(33){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.125s;animation-delay:0.125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(34){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.125s;animation-delay:0.125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(35){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0125s;animation-delay:0.0125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(36){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0375s;animation-delay:0.0375s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(37){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1s;animation-delay:0.1s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(38){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.05s;animation-delay:0.05s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(39){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0625s;animation-delay:0.0625s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.btn a:hover span.item:nth-of-type(40){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1s;animation-delay:0.1s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.documentation_update:before{content:\\\"\\\";width:100%;border:1px solid #626c76;display:block}.documentation_update li:after{content:\\\"\\\";width:100%;border:1px solid #626c76;display:block}.documentation_update li a{padding-top:2.2222222222rem;padding-bottom:2.5555555556rem;display:block;position:relative}.documentation_update li a:after{content:\\\"\\\";position:absolute;background-image:url(/assets/img/common/arrow.svg);display:block;width:4.4444444444rem;height:4rem;right:0;margin-top:2.3333333333rem}.documentation_update li .bulk{display:flex;padding-bottom:10px;margin-top:43px}.documentation_update li .date{font-size:1.5555555556rem;color:#bdc1c6;letter-spacing:-0.01em}.documentation_update li .product_name{font-size:1.5555555556rem;font-weight:500;padding:.1111111111rem 1.3333333333rem;display:table;position:relative;padding-right:1.5555555556rem;letter-spacing:0em;line-height:2}.documentation_update li .product_name:before{content:\\\"\\\";position:absolute;width:.6666666667rem;height:.6666666667rem;left:0px;top:1.3333333333rem;display:block;border-radius:50%;background:#5cb4c0}.documentation_update li p.txt{font-size:2.6666666667rem !important;color:#fff !important;font-weight:500;width:63.3333333333rem !important;margin-top:0 !important;letter-spacing:.018em !important;line-height:1.2 !important}.documentation_update li p.txt_ja{font-size:2.2222222222rem !important;line-height:1.55 !important}body:before{content:\\\"\\\";position:fixed;top:0;left:0;z-index:-1;width:100vw;height:100vh;background-image:url(/assets/img/common/bg_pc.svg);background-size:cover;background-position:center}body.hide_cursor{cursor:none !important}#loading{background-image:url(/assets/img/common/bg_pc.svg)}#loading img{position:absolute;left:50vw;top:50vh;transform:translate3d(-50%, -50%, 0);width:35.5555555556rem}#loading .text{font-size:1.5555555556rem;font-weight:600;line-height:1;position:absolute;letter-spacing:-0.01em;left:8.3333333333rem;bottom:4.4444444444rem}#cookie>.inner{display:flex;align-items:center;bottom:4.4444444444rem;left:50vw;transform:translate3d(-54.6%, 0, 0);font-size:1.5555555556rem;width:88.8888888889rem;line-height:1.3;letter-spacing:-0.01em;border-radius:2.2222222222rem;padding:3.5555555556rem 4.4444444444rem;filter:drop-shadow(0px 1.5555555556rem 1.6666666667rem rgba(30, 101, 146, 0.2))}#cookie>.inner_ja{font-size:1.3333333333rem}#cookie .txt{width:72.2222222222rem;margin-right:3.3333333333rem}#cookie .btn{font-size:1.3333333333rem;font-weight:600;letter-spacing:-0.01em;border-radius:1.1111111111rem;padding:1px;text-align:center;cursor:pointer;height:1.3333333333rem;white-space:nowrap}#cookie .btn:hover span.item:nth-of-type(1){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0625s;animation-delay:0.0625s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(2){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.125s;animation-delay:0.125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(3){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0875s;animation-delay:0.0875s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(4){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.025s;animation-delay:0.025s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(5){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1s;animation-delay:0.1s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(6){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1s;animation-delay:0.1s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(7){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0375s;animation-delay:0.0375s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(8){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0125s;animation-delay:0.0125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(9){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.05s;animation-delay:0.05s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(10){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1125s;animation-delay:0.1125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(11){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.025s;animation-delay:0.025s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(12){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1125s;animation-delay:0.1125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(13){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0625s;animation-delay:0.0625s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(14){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1125s;animation-delay:0.1125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(15){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0375s;animation-delay:0.0375s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(16){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0625s;animation-delay:0.0625s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(17){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1s;animation-delay:0.1s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(18){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0625s;animation-delay:0.0625s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(19){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0875s;animation-delay:0.0875s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(20){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1125s;animation-delay:0.1125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(21){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0375s;animation-delay:0.0375s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(22){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1125s;animation-delay:0.1125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(23){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.075s;animation-delay:0.075s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(24){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.075s;animation-delay:0.075s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(25){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1s;animation-delay:0.1s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(26){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0375s;animation-delay:0.0375s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(27){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1s;animation-delay:0.1s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(28){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0625s;animation-delay:0.0625s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(29){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.125s;animation-delay:0.125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn:hover span.item:nth-of-type(30){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0125s;animation-delay:0.0125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}#cookie .btn .inner{border-radius:1rem;padding:.8888888889rem 2rem .6666666667rem 2rem}header h2{top:7.1111111111rem;left:4.4444444444rem}header h2 .img1{width:15rem}header h2 .img2{width:6.6666666667rem}header h2.hide{opacity:1;pointer-events:inherit}header h2.hide .img1{pointer-events:none;opacity:0}header h2.hide .img2{opacity:1;pointer-events:inherit;top:-1.1111111111rem;left:-1.1111111111rem}header .header_nav{width:100vw;top:6.7777777778rem;right:var(--header_nav_right)}header .header_nav ul{display:flex;justify-content:flex-end;font-weight:600;font-size:1.5555555556rem;letter-spacing:0em}header .header_nav ul li{margin-right:2.6666666667rem;opacity:0}header .header_nav ul li.show{opacity:1}header .header_nav ul li.show span.item{opacity:1}header .header_nav ul li.show a:after{opacity:1}header .header_nav ul li.play span.item:nth-of-type(1){-webkit-animation:common_blink .13s linear 0.10305s;animation:common_blink .13s linear 0.10305s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(2){-webkit-animation:common_blink .13s linear 0.1164s;animation:common_blink .13s linear 0.1164s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(3){-webkit-animation:common_blink .13s linear 0.05805s;animation:common_blink .13s linear 0.05805s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(4){-webkit-animation:common_blink .13s linear 0.0315s;animation:common_blink .13s linear 0.0315s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(5){-webkit-animation:common_blink .13s linear 0.1305s;animation:common_blink .13s linear 0.1305s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(6){-webkit-animation:common_blink .13s linear 0.1128s;animation:common_blink .13s linear 0.1128s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(7){-webkit-animation:common_blink .13s linear 0.0066s;animation:common_blink .13s linear 0.0066s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(8){-webkit-animation:common_blink .13s linear 0.0438s;animation:common_blink .13s linear 0.0438s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(9){-webkit-animation:common_blink .13s linear 0.05055s;animation:common_blink .13s linear 0.05055s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(10){-webkit-animation:common_blink .13s linear 0.0264s;animation:common_blink .13s linear 0.0264s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(11){-webkit-animation:common_blink .13s linear 0.02925s;animation:common_blink .13s linear 0.02925s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(12){-webkit-animation:common_blink .13s linear 0.1035s;animation:common_blink .13s linear 0.1035s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(13){-webkit-animation:common_blink .13s linear 0.04695s;animation:common_blink .13s linear 0.04695s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(14){-webkit-animation:common_blink .13s linear 0.0432s;animation:common_blink .13s linear 0.0432s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(15){-webkit-animation:common_blink .13s linear 0.07305s;animation:common_blink .13s linear 0.07305s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(16){-webkit-animation:common_blink .13s linear 0.05895s;animation:common_blink .13s linear 0.05895s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(17){-webkit-animation:common_blink .13s linear 0.0717s;animation:common_blink .13s linear 0.0717s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(18){-webkit-animation:common_blink .13s linear 0.0693s;animation:common_blink .13s linear 0.0693s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(19){-webkit-animation:common_blink .13s linear 0.07965s;animation:common_blink .13s linear 0.07965s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(20){-webkit-animation:common_blink .13s linear 0.00675s;animation:common_blink .13s linear 0.00675s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(21){-webkit-animation:common_blink .13s linear 0.09405s;animation:common_blink .13s linear 0.09405s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(22){-webkit-animation:common_blink .13s linear 0.07245s;animation:common_blink .13s linear 0.07245s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(23){-webkit-animation:common_blink .13s linear 0.12345s;animation:common_blink .13s linear 0.12345s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(24){-webkit-animation:common_blink .13s linear 0.05415s;animation:common_blink .13s linear 0.05415s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(25){-webkit-animation:common_blink .13s linear 0.02655s;animation:common_blink .13s linear 0.02655s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(26){-webkit-animation:common_blink .13s linear 0.01545s;animation:common_blink .13s linear 0.01545s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(27){-webkit-animation:common_blink .13s linear 0.0315s;animation:common_blink .13s linear 0.0315s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(28){-webkit-animation:common_blink .13s linear 0.0384s;animation:common_blink .13s linear 0.0384s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(29){-webkit-animation:common_blink .13s linear 0.0237s;animation:common_blink .13s linear 0.0237s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li.play span.item:nth-of-type(30){-webkit-animation:common_blink .13s linear 0.1116s;animation:common_blink .13s linear 0.1116s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(1){-webkit-animation:common_blink .13s linear 0.0597s;animation:common_blink .13s linear 0.0597s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(2){-webkit-animation:common_blink .13s linear 0.0951s;animation:common_blink .13s linear 0.0951s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(3){-webkit-animation:common_blink .13s linear 0.03045s;animation:common_blink .13s linear 0.03045s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(4){-webkit-animation:common_blink .13s linear 0.10665s;animation:common_blink .13s linear 0.10665s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(5){-webkit-animation:common_blink .13s linear 0.13185s;animation:common_blink .13s linear 0.13185s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(6){-webkit-animation:common_blink .13s linear 0.1197s;animation:common_blink .13s linear 0.1197s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(7){-webkit-animation:common_blink .13s linear 0.0867s;animation:common_blink .13s linear 0.0867s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(8){-webkit-animation:common_blink .13s linear 0.06105s;animation:common_blink .13s linear 0.06105s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(9){-webkit-animation:common_blink .13s linear 0.10935s;animation:common_blink .13s linear 0.10935s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(10){-webkit-animation:common_blink .13s linear 0.05535s;animation:common_blink .13s linear 0.05535s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(11){-webkit-animation:common_blink .13s linear 0.01215s;animation:common_blink .13s linear 0.01215s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(12){-webkit-animation:common_blink .13s linear 0.0663s;animation:common_blink .13s linear 0.0663s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(13){-webkit-animation:common_blink .13s linear 0.132s;animation:common_blink .13s linear 0.132s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(14){-webkit-animation:common_blink .13s linear 0.01845s;animation:common_blink .13s linear 0.01845s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(15){-webkit-animation:common_blink .13s linear 0.1224s;animation:common_blink .13s linear 0.1224s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(16){-webkit-animation:common_blink .13s linear 0.0126s;animation:common_blink .13s linear 0.0126s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(17){-webkit-animation:common_blink .13s linear 0.0114s;animation:common_blink .13s linear 0.0114s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(18){-webkit-animation:common_blink .13s linear 0.09705s;animation:common_blink .13s linear 0.09705s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(19){-webkit-animation:common_blink .13s linear 0.1281s;animation:common_blink .13s linear 0.1281s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(20){-webkit-animation:common_blink .13s linear 0.087s;animation:common_blink .13s linear 0.087s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(21){-webkit-animation:common_blink .13s linear 0.1353s;animation:common_blink .13s linear 0.1353s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(22){-webkit-animation:common_blink .13s linear 0.04455s;animation:common_blink .13s linear 0.04455s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(23){-webkit-animation:common_blink .13s linear 0.04095s;animation:common_blink .13s linear 0.04095s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(24){-webkit-animation:common_blink .13s linear 0.14445s;animation:common_blink .13s linear 0.14445s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(25){-webkit-animation:common_blink .13s linear 0.13935s;animation:common_blink .13s linear 0.13935s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(26){-webkit-animation:common_blink .13s linear 0.14505s;animation:common_blink .13s linear 0.14505s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(27){-webkit-animation:common_blink .13s linear 0.00615s;animation:common_blink .13s linear 0.00615s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(28){-webkit-animation:common_blink .13s linear 0.1155s;animation:common_blink .13s linear 0.1155s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(29){-webkit-animation:common_blink .13s linear 0.08175s;animation:common_blink .13s linear 0.08175s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li:hover span.item:nth-of-type(30){-webkit-animation:common_blink .13s linear 0.1215s;animation:common_blink .13s linear 0.1215s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .header_nav ul li span.item{opacity:0;transition:opacity 200ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}header .header_nav ul li a{transition:color 200ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}header .header_nav ul li a:after{opacity:0;transition:opacity 300ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1);transition-delay:.15s}header .header_nav ul li.current{pointer-events:none}header .header_nav ul li.current a{color:#3098a6;position:relative}header .header_nav ul li.current a:before{content:\\\"\\\";position:relative;display:inline-block;width:.6666666667rem;height:.6666666667rem;background-color:#5cb4c0;border-radius:50%;top:-.1111111111rem;margin-right:.6666666667rem}header .header_nav ul li:last-of-type{margin-right:0}header .menu{overflow:auto}header .menu .lang_nav{position:absolute;right:var(--header_lang_nav_right);top:6.8888888889rem}header .menu .lang_nav ul{display:flex;font-size:1.3333333333rem}header .menu .lang_nav ul li{letter-spacing:.06em;color:#fff}header .menu .lang_nav ul li span{cursor:pointer}header .menu .lang_nav ul li span.current{opacity:.5;pointer-events:none}header .menu .lang_nav ul li span:hover{-webkit-animation:common_blink .1s linear;animation:common_blink .1s linear;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .lang_nav ul li:first-of-type:after{content:\\\"\\\";margin-left:1.3333333333rem;margin-right:1.4444444444rem;width:1px;height:.6666666667rem;background-color:#fff;display:inline-block;pointer-events:none}header .menu.open:before{opacity:.16}header .menu .main_nav{position:relative;margin-top:13.3333333333rem;margin-left:8.8888888889rem}header .menu .main_nav li{font-weight:600;margin-bottom:3.3333333333rem;display:table}header .menu .main_nav li.current>a>span.main{position:relative}header .menu .main_nav li.current>a>span.main:before{content:\\\"\\\";position:absolute;display:inline-block;width:.8888888889rem;height:.8888888889rem;background-color:#5cb4c0;border-radius:50%;top:3.5555555556rem;left:-3.5555555556rem}header .menu .main_nav li.current.small>a>span.main:before{top:1.3333333333rem}header .menu .main_nav li>a{position:relative;display:table}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(1){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1125s;animation-delay:0.1125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(2){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.025s;animation-delay:0.025s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(3){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.125s;animation-delay:0.125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(4){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0125s;animation-delay:0.0125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(5){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.025s;animation-delay:0.025s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(6){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0625s;animation-delay:0.0625s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(7){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.05s;animation-delay:0.05s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(8){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1125s;animation-delay:0.1125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(9){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0875s;animation-delay:0.0875s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(10){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.05s;animation-delay:0.05s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(11){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0625s;animation-delay:0.0625s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(12){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1s;animation-delay:0.1s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(13){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0875s;animation-delay:0.0875s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(14){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1125s;animation-delay:0.1125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(15){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1s;animation-delay:0.1s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(16){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1s;animation-delay:0.1s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(17){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1125s;animation-delay:0.1125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(18){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0125s;animation-delay:0.0125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(19){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0875s;animation-delay:0.0875s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(20){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.025s;animation-delay:0.025s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(21){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1125s;animation-delay:0.1125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(22){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0125s;animation-delay:0.0125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(23){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.125s;animation-delay:0.125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(24){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.05s;animation-delay:0.05s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(25){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1125s;animation-delay:0.1125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(26){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.05s;animation-delay:0.05s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(27){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.025s;animation-delay:0.025s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(28){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0125s;animation-delay:0.0125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(29){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.075s;animation-delay:0.075s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a:hover span.main span.item:nth-of-type(30){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.125s;animation-delay:0.125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}header .menu .main_nav li>a>span.main{display:flex;font-size:6.6666666667rem;line-height:1.2;letter-spacing:-0.01em}header .menu .main_nav li>a>span.main span.space{width:1.1111111111rem}header .menu .main_nav li>a:after{position:absolute;right:-2.7777777778rem;width:2.2222222222rem;height:2.2222222222rem;top:2.5555555556rem}header .menu .main_nav li>a.small>span.main{font-size:2.6666666667rem}header .menu .main_nav li>a.small:after{right:-2.6666666667rem;top:.7222222222rem}header .menu .main_nav li span.sub{display:block;font-size:1.5555555556rem;line-height:1;margin-top:1.7777777778rem;letter-spacing:-0.01em}header .menu .main_nav li span.sub a:after{content:\\\", \\\"}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(1){-webkit-animation:common_blink .13s linear 0.0858s;animation:common_blink .13s linear 0.0858s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(2){-webkit-animation:common_blink .13s linear 0.0951s;animation:common_blink .13s linear 0.0951s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(3){-webkit-animation:common_blink .13s linear 0.0006s;animation:common_blink .13s linear 0.0006s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(4){-webkit-animation:common_blink .13s linear 0.08805s;animation:common_blink .13s linear 0.08805s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(5){-webkit-animation:common_blink .13s linear 0.12435s;animation:common_blink .13s linear 0.12435s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(6){-webkit-animation:common_blink .13s linear 0.00765s;animation:common_blink .13s linear 0.00765s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(7){-webkit-animation:common_blink .13s linear 0.05595s;animation:common_blink .13s linear 0.05595s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(8){-webkit-animation:common_blink .13s linear 0.10485s;animation:common_blink .13s linear 0.10485s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(9){-webkit-animation:common_blink .13s linear 0.12375s;animation:common_blink .13s linear 0.12375s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(10){-webkit-animation:common_blink .13s linear 0.08385s;animation:common_blink .13s linear 0.08385s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(11){-webkit-animation:common_blink .13s linear 0.11955s;animation:common_blink .13s linear 0.11955s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(12){-webkit-animation:common_blink .13s linear 0.14625s;animation:common_blink .13s linear 0.14625s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(13){-webkit-animation:common_blink .13s linear 0.0315s;animation:common_blink .13s linear 0.0315s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(14){-webkit-animation:common_blink .13s linear 0.0849s;animation:common_blink .13s linear 0.0849s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(15){-webkit-animation:common_blink .13s linear 0.0678s;animation:common_blink .13s linear 0.0678s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(16){-webkit-animation:common_blink .13s linear 0.06255s;animation:common_blink .13s linear 0.06255s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(17){-webkit-animation:common_blink .13s linear 0.1038s;animation:common_blink .13s linear 0.1038s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(18){-webkit-animation:common_blink .13s linear 0.0099s;animation:common_blink .13s linear 0.0099s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(19){-webkit-animation:common_blink .13s linear 0.0609s;animation:common_blink .13s linear 0.0609s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(20){-webkit-animation:common_blink .13s linear 0.1473s;animation:common_blink .13s linear 0.1473s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(21){-webkit-animation:common_blink .13s linear 0.1104s;animation:common_blink .13s linear 0.1104s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(22){-webkit-animation:common_blink .13s linear 0.04365s;animation:common_blink .13s linear 0.04365s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(23){-webkit-animation:common_blink .13s linear 0.0297s;animation:common_blink .13s linear 0.0297s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(24){-webkit-animation:common_blink .13s linear 0.06225s;animation:common_blink .13s linear 0.06225s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(25){-webkit-animation:common_blink .13s linear 0.14385s;animation:common_blink .13s linear 0.14385s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(26){-webkit-animation:common_blink .13s linear 0.03195s;animation:common_blink .13s linear 0.03195s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(27){-webkit-animation:common_blink .13s linear 0.05265s;animation:common_blink .13s linear 0.05265s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(28){-webkit-animation:common_blink .13s linear 0.0375s;animation:common_blink .13s linear 0.0375s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(29){-webkit-animation:common_blink .13s linear 0.13125s;animation:common_blink .13s linear 0.13125s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:hover span.item:nth-of-type(30){-webkit-animation:common_blink .13s linear 0.1107s;animation:common_blink .13s linear 0.1107s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .main_nav li span.sub a:last-of-type:after{display:none}header .menu .newsletter{position:absolute;right:8.8888888889rem;bottom:20vh;width:48.8888888889rem}header .menu .newsletter:after{content:\\\"\\\";position:absolute;display:block;width:100%;height:1px;background:#626c76;margin-top:1.4444444444rem}header .menu .newsletter .tit{font-size:1.3333333333rem;letter-spacing:-0.01em;color:#fff}header .menu .newsletter#mc_embed_signup form{padding:0;text-align:left;position:relative}header .menu .newsletter#mc_embed_signup input.email{position:relative;padding:0;margin-right:.3333333333rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;font-family:inherit;font-size:1.7777777778rem;letter-spacing:.04em;width:46.3333333333rem;color:#fff;border-radius:initial;box-sizing:initial;vertical-align:initial;height:auto;display:initial}header .menu .newsletter#mc_embed_signup input.email::-moz-placeholder{color:#fff;opacity:.5}header .menu .newsletter#mc_embed_signup input.email:-ms-input-placeholder{color:#fff;opacity:.5}header .menu .newsletter#mc_embed_signup input.email::placeholder{color:#fff;opacity:.5}header .menu .newsletter#mc_embed_signup input.button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;font-family:inherit;font-weight:500;opacity:1;cursor:pointer;padding:0;position:absolute;top:.5555555556rem;letter-spacing:.1em;background-image:url(/assets/img/common/arrow_right.svg);background-repeat:no-repeat;background-position-y:center;width:20px;height:20px;right:0;height:auto;line-height:normal}header .menu .sub_nav .social{position:absolute;bottom:13vh;right:7.1111111111rem}header .menu .sub_nav .social li{margin-right:2.2222222222rem}header .menu .sub_nav .social li:hover{-webkit-animation:common_blink .1s linear;animation:common_blink .1s linear;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others{position:absolute;font-size:1.3333333333rem;font-weight:450;margin-top:3.3333333333rem;letter-spacing:-0.03em;display:flex;bottom:6.8vh;right:22.3333333333rem}header .menu .sub_nav .others li{margin-left:2.3555555556rem}header .menu .sub_nav .others li:hover span.item:nth-of-type(1){-webkit-animation:common_blink .13s linear 0.07965s;animation:common_blink .13s linear 0.07965s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(2){-webkit-animation:common_blink .13s linear 0.0741s;animation:common_blink .13s linear 0.0741s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(3){-webkit-animation:common_blink .13s linear 0.00015s;animation:common_blink .13s linear 0.00015s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(4){-webkit-animation:common_blink .13s linear 0.14025s;animation:common_blink .13s linear 0.14025s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(5){-webkit-animation:common_blink .13s linear 0.0399s;animation:common_blink .13s linear 0.0399s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(6){-webkit-animation:common_blink .13s linear 0.1302s;animation:common_blink .13s linear 0.1302s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(7){-webkit-animation:common_blink .13s linear 0.06135s;animation:common_blink .13s linear 0.06135s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(8){-webkit-animation:common_blink .13s linear 0.13425s;animation:common_blink .13s linear 0.13425s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(9){-webkit-animation:common_blink .13s linear 0.13845s;animation:common_blink .13s linear 0.13845s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(10){-webkit-animation:common_blink .13s linear 0.0534s;animation:common_blink .13s linear 0.0534s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(11){-webkit-animation:common_blink .13s linear 0.1248s;animation:common_blink .13s linear 0.1248s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(12){-webkit-animation:common_blink .13s linear 0.14235s;animation:common_blink .13s linear 0.14235s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(13){-webkit-animation:common_blink .13s linear 0.1491s;animation:common_blink .13s linear 0.1491s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(14){-webkit-animation:common_blink .13s linear 0.12315s;animation:common_blink .13s linear 0.12315s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(15){-webkit-animation:common_blink .13s linear 0.0687s;animation:common_blink .13s linear 0.0687s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(16){-webkit-animation:common_blink .13s linear 0.13875s;animation:common_blink .13s linear 0.13875s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(17){-webkit-animation:common_blink .13s linear 0.03525s;animation:common_blink .13s linear 0.03525s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(18){-webkit-animation:common_blink .13s linear 0.0774s;animation:common_blink .13s linear 0.0774s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(19){-webkit-animation:common_blink .13s linear 0.0024s;animation:common_blink .13s linear 0.0024s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(20){-webkit-animation:common_blink .13s linear 0.0201s;animation:common_blink .13s linear 0.0201s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(21){-webkit-animation:common_blink .13s linear 0.08625s;animation:common_blink .13s linear 0.08625s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(22){-webkit-animation:common_blink .13s linear 0.0558s;animation:common_blink .13s linear 0.0558s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(23){-webkit-animation:common_blink .13s linear 0.02475s;animation:common_blink .13s linear 0.02475s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(24){-webkit-animation:common_blink .13s linear 0.0648s;animation:common_blink .13s linear 0.0648s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(25){-webkit-animation:common_blink .13s linear 0.0393s;animation:common_blink .13s linear 0.0393s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(26){-webkit-animation:common_blink .13s linear 0.14805s;animation:common_blink .13s linear 0.14805s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(27){-webkit-animation:common_blink .13s linear 0.05565s;animation:common_blink .13s linear 0.05565s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(28){-webkit-animation:common_blink .13s linear 0.06945s;animation:common_blink .13s linear 0.06945s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(29){-webkit-animation:common_blink .13s linear 0.0567s;animation:common_blink .13s linear 0.0567s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .sub_nav .others li:hover span.item:nth-of-type(30){-webkit-animation:common_blink .13s linear 0.07335s;animation:common_blink .13s linear 0.07335s;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .menu .cp{position:absolute;background:linear-gradient(270deg, #214772 0%, #3098a6 100%);-webkit-background-clip:text;-webkit-text-fill-color:rgba(0,0,0,0);background-clip:text;text-fill-color:rgba(0,0,0,0);font-weight:400;font-size:1.3333333333rem;letter-spacing:-0.01em;bottom:6.8vh;right:8.8888888889rem}header .grill{top:3.7777777778rem;right:var(--grill_right)}header .grill:hover .grill_child{-webkit-animation:common_blink .1s linear;animation:common_blink .1s linear;-webkit-animation-iteration-count:2;animation-iteration-count:2}header .grill.close:hover{opacity:.7}header .grill.close .grill_child{top:39px}header .grill:after{width:60px;height:60px;left:10px;top:10px}header .grill .grill_child{top:36px;left:34px}.next{display:block;position:relative;width:100vw;height:100vh}.next a.to_contact:hover .span_chunk span.item:nth-of-type(1){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0375s;animation-delay:0.0375s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(2){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.025s;animation-delay:0.025s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(3){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.125s;animation-delay:0.125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(4){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0125s;animation-delay:0.0125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(5){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0125s;animation-delay:0.0125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(6){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0125s;animation-delay:0.0125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(7){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.05s;animation-delay:0.05s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(8){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1s;animation-delay:0.1s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(9){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.075s;animation-delay:0.075s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(10){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.05s;animation-delay:0.05s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(11){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0125s;animation-delay:0.0125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(12){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.075s;animation-delay:0.075s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(13){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.125s;animation-delay:0.125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(14){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.05s;animation-delay:0.05s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(15){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.025s;animation-delay:0.025s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(16){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1s;animation-delay:0.1s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(17){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.05s;animation-delay:0.05s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(18){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0625s;animation-delay:0.0625s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(19){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.05s;animation-delay:0.05s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(20){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.075s;animation-delay:0.075s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(21){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0125s;animation-delay:0.0125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(22){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.075s;animation-delay:0.075s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(23){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.125s;animation-delay:0.125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(24){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.125s;animation-delay:0.125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(25){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0375s;animation-delay:0.0375s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(26){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.075s;animation-delay:0.075s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(27){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.075s;animation-delay:0.075s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(28){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1s;animation-delay:0.1s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(29){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0875s;animation-delay:0.0875s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_contact:hover .span_chunk span.item:nth-of-type(30){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0875s;animation-delay:0.0875s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next .tit{font-size:1.5555555556rem;font-weight:600;position:absolute;transform:translate3d(-50%, -50%, 0);left:50%;top:50%;color:#5cb4c0;margin-top:-5.2222222222rem}.next .message{font-size:9.7777777778rem;font-weight:500;line-height:1.2;text-align:center;position:absolute;left:50%;top:50vh;margin-top:1.1111111111rem;transform:translate3d(-50%, -50%, 0);display:flex;flex-direction:column;justify-content:center}.next .message span.span_chunk{display:block;font-weight:600;letter-spacing:-0.02em}.next .message span.grd span.item:nth-of-type(1){color:#3098a6}.next .message span.grd span.item:nth-of-type(2){color:#2d859a}.next .message span.grd span.item:nth-of-type(3){color:#2b7c94}.next .message span.grd span.item:nth-of-type(4){color:#2a779c}.next .message span.grd span.item:nth-of-type(5){color:#2a779c}.next .message span.grd span.item:nth-of-type(6){color:#296f8c}.next .message span.grd span.item:nth-of-type(7){color:#276586}.next .message span.grd span.item:nth-of-type(8){color:#265e81}.next .message span.grd span.item:nth-of-type(9){color:#265e81}.next .message span.grd span.item:nth-of-type(10){color:#235179}.next .message span.grd span.item:nth-of-type(11){color:#214772}.next .message span.grd span.item:nth-of-type(12){color:#214772}.next a.to_next:hover .span_chunk span.item:nth-of-type(1){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.025s;animation-delay:0.025s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(2){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.075s;animation-delay:0.075s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(3){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.025s;animation-delay:0.025s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(4){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1125s;animation-delay:0.1125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(5){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0375s;animation-delay:0.0375s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(6){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1125s;animation-delay:0.1125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(7){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1125s;animation-delay:0.1125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(8){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0375s;animation-delay:0.0375s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(9){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0875s;animation-delay:0.0875s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(10){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.125s;animation-delay:0.125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(11){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0625s;animation-delay:0.0625s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(12){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.075s;animation-delay:0.075s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(13){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.05s;animation-delay:0.05s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(14){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.125s;animation-delay:0.125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(15){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0875s;animation-delay:0.0875s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(16){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.075s;animation-delay:0.075s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(17){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0125s;animation-delay:0.0125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(18){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.025s;animation-delay:0.025s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(19){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0625s;animation-delay:0.0625s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(20){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.125s;animation-delay:0.125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(21){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0625s;animation-delay:0.0625s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(22){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0125s;animation-delay:0.0125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(23){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0125s;animation-delay:0.0125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(24){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0125s;animation-delay:0.0125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(25){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.025s;animation-delay:0.025s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(26){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0375s;animation-delay:0.0375s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(27){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1s;animation-delay:0.1s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(28){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1125s;animation-delay:0.1125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(29){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.075s;animation-delay:0.075s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next a.to_next:hover .span_chunk span.item:nth-of-type(30){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.025s;animation-delay:0.025s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.next .labels{position:absolute;text-align:right;right:4.4444444444rem;top:50%;transform:translate3d(0, -50%, 0);margin-top:-1.5555555556rem}.next .labels:after{content:\\\"\\\";background-image:url(/assets/img/common/arrow_right2.svg);display:block;position:absolute;width:12px;height:10px;right:0;margin-top:1.7777777778rem}.next .labels span{font-weight:600}.next .labels span.span_chunk{display:block;font-weight:600}.next .labels .label_common{color:#5cb4c0;letter-spacing:-0.01em;font-size:1.1111111111rem}.next .labels .label{display:block;font-size:1.5555555556rem;letter-spacing:-0.01em;line-height:1;margin-top:1.2222222222rem}footer{position:absolute;width:100vw;margin-top:-41px}footer .newsletter{border-radius:1.1111111111rem;display:inline-flex;position:relative;left:4.3333333333rem;top:-7px;padding:.7777777778rem 1.7777777778rem .7777777778rem 2.6666666667rem}footer .newsletter .newsletter_child{display:flex;align-items:center}footer .newsletter .tit{font-size:1.2222222222rem;font-weight:600;letter-spacing:-0.01em}footer .newsletter#mc_embed_signup form{padding:0;text-align:left;position:relative}footer .newsletter#mc_embed_signup input.email{position:relative;margin-left:1rem;margin-right:1rem;top:-.1111111111rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;font-family:inherit;font-size:1.3333333333rem;letter-spacing:-0.01em;width:20.4444444444rem;border-radius:initial;box-sizing:initial;vertical-align:initial;height:auto;display:initial;padding:1px 2px}footer .newsletter#mc_embed_signup input.email::-moz-placeholder{opacity:.5}footer .newsletter#mc_embed_signup input.email:-ms-input-placeholder{opacity:.5}footer .newsletter#mc_embed_signup input.email::placeholder{opacity:.5}footer .newsletter#mc_embed_signup input.button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;font-family:inherit;font-weight:500;font-size:1.3333333333rem;opacity:1;cursor:pointer;padding:0;position:relative;top:.4444444444rem;letter-spacing:.1em;background-image:url(/assets/img/common/arrow_right2.svg);background-repeat:no-repeat;background-position-y:center;width:12px;height:10px;height:auto;line-height:normal}footer .sub{position:absolute;top:0;width:100%}footer .sub .social{position:absolute;left:44.4444444444rem;top:-.3333333333rem}footer .sub .social li{margin-right:20px}footer .sub .social li:hover{-webkit-animation:common_blink .1s linear;animation:common_blink .1s linear;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others{position:absolute;font-size:1.2222222222rem;right:14.8888888889rem;letter-spacing:.01em}footer .sub .others li{margin-left:2.8888888889rem}footer .sub .others a:hover span.item:nth-of-type(1){-webkit-animation:common_blink .13s linear 0.04845s;animation:common_blink .13s linear 0.04845s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(2){-webkit-animation:common_blink .13s linear 0.05625s;animation:common_blink .13s linear 0.05625s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(3){-webkit-animation:common_blink .13s linear 0.0345s;animation:common_blink .13s linear 0.0345s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(4){-webkit-animation:common_blink .13s linear 0.02745s;animation:common_blink .13s linear 0.02745s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(5){-webkit-animation:common_blink .13s linear 0.09915s;animation:common_blink .13s linear 0.09915s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(6){-webkit-animation:common_blink .13s linear 0.06315s;animation:common_blink .13s linear 0.06315s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(7){-webkit-animation:common_blink .13s linear 0.0357s;animation:common_blink .13s linear 0.0357s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(8){-webkit-animation:common_blink .13s linear 0.06765s;animation:common_blink .13s linear 0.06765s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(9){-webkit-animation:common_blink .13s linear 0.06165s;animation:common_blink .13s linear 0.06165s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(10){-webkit-animation:common_blink .13s linear 0.1365s;animation:common_blink .13s linear 0.1365s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(11){-webkit-animation:common_blink .13s linear 0.0501s;animation:common_blink .13s linear 0.0501s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(12){-webkit-animation:common_blink .13s linear 0.08625s;animation:common_blink .13s linear 0.08625s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(13){-webkit-animation:common_blink .13s linear 0.078s;animation:common_blink .13s linear 0.078s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(14){-webkit-animation:common_blink .13s linear 0.13875s;animation:common_blink .13s linear 0.13875s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(15){-webkit-animation:common_blink .13s linear 0.1467s;animation:common_blink .13s linear 0.1467s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(16){-webkit-animation:common_blink .13s linear 0.04425s;animation:common_blink .13s linear 0.04425s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(17){-webkit-animation:common_blink .13s linear 0.06165s;animation:common_blink .13s linear 0.06165s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(18){-webkit-animation:common_blink .13s linear 0.0234s;animation:common_blink .13s linear 0.0234s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(19){-webkit-animation:common_blink .13s linear 0.06615s;animation:common_blink .13s linear 0.06615s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(20){-webkit-animation:common_blink .13s linear 0.14685s;animation:common_blink .13s linear 0.14685s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(21){-webkit-animation:common_blink .13s linear 0.00615s;animation:common_blink .13s linear 0.00615s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(22){-webkit-animation:common_blink .13s linear 0.08685s;animation:common_blink .13s linear 0.08685s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(23){-webkit-animation:common_blink .13s linear 0.01035s;animation:common_blink .13s linear 0.01035s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(24){-webkit-animation:common_blink .13s linear 0.1386s;animation:common_blink .13s linear 0.1386s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(25){-webkit-animation:common_blink .13s linear 0.0339s;animation:common_blink .13s linear 0.0339s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(26){-webkit-animation:common_blink .13s linear 0.048s;animation:common_blink .13s linear 0.048s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(27){-webkit-animation:common_blink .13s linear 0.0219s;animation:common_blink .13s linear 0.0219s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(28){-webkit-animation:common_blink .13s linear 0.05715s;animation:common_blink .13s linear 0.05715s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(29){-webkit-animation:common_blink .13s linear 0.0126s;animation:common_blink .13s linear 0.0126s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .sub .others a:hover span.item:nth-of-type(30){-webkit-animation:common_blink .13s linear 0.0858s;animation:common_blink .13s linear 0.0858s;-webkit-animation-iteration-count:2;animation-iteration-count:2}footer .cp{position:absolute;background:linear-gradient(270deg, #214772 0%, #3098a6 100%);-webkit-background-clip:text;-webkit-text-fill-color:rgba(0,0,0,0);background-clip:text;text-fill-color:rgba(0,0,0,0);right:4.5555555556rem;top:0;font-size:1.2222222222rem;font-weight:600;letter-spacing:.01em}.banner{display:block;background-repeat:no-repeat,repeat;background-position:top right,top left;background-size:contain,auto;background-image:url(/assets/img/common/bg_banner_l.png),url(/assets/img/common/bg_pc.svg);color:#171c21;height:38.3333333333rem;border-radius:1.7777777778rem;padding-left:7.7777777778rem}.banner h2{font-size:6rem;padding-top:7.7777777778rem;line-height:1}.banner p{font-size:1.7777777778rem;padding-top:2.2222222222rem;line-height:1.5}.banner p.ja{line-height:1.75}.banner .btn{position:relative;display:flex;align-items:center;font-weight:600;padding-top:3.3333333333rem;font-size:1.3333333333rem;letter-spacing:-0.01em;color:#171c21}main.top .section .banner .btn{margin-top:0;margin-left:0}.banner .btn:before{content:\\\"\\\";display:block;background-size:cover;top:0;left:0;margin-right:.7777777778rem;background-image:url(/assets/img/common/icon-link2.svg);background-size:99.9%;background-repeat:no-repeat;width:5.3333333333rem;height:5.3333333333rem}.banner .btn span.item.space{width:.3333333333rem}.banner:hover .btn span.item:nth-of-type(1){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.125s;animation-delay:0.125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(2){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1s;animation-delay:0.1s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(3){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0875s;animation-delay:0.0875s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(4){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0875s;animation-delay:0.0875s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(5){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0375s;animation-delay:0.0375s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(6){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0125s;animation-delay:0.0125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(7){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0125s;animation-delay:0.0125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(8){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.05s;animation-delay:0.05s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(9){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.025s;animation-delay:0.025s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(10){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0375s;animation-delay:0.0375s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(11){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0875s;animation-delay:0.0875s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(12){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1125s;animation-delay:0.1125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(13){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0125s;animation-delay:0.0125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(14){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1s;animation-delay:0.1s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(15){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.075s;animation-delay:0.075s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(16){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.075s;animation-delay:0.075s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(17){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.075s;animation-delay:0.075s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(18){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0375s;animation-delay:0.0375s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(19){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0875s;animation-delay:0.0875s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(20){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0625s;animation-delay:0.0625s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(21){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1125s;animation-delay:0.1125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(22){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1s;animation-delay:0.1s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(23){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.075s;animation-delay:0.075s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(24){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0125s;animation-delay:0.0125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(25){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.05s;animation-delay:0.05s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(26){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.125s;animation-delay:0.125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(27){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.125s;animation-delay:0.125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(28){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0375s;animation-delay:0.0375s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(29){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0875s;animation-delay:0.0875s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(30){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0625s;animation-delay:0.0625s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(31){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.05s;animation-delay:0.05s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(32){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0625s;animation-delay:0.0625s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(33){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0875s;animation-delay:0.0875s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(34){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0625s;animation-delay:0.0625s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(35){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0625s;animation-delay:0.0625s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(36){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1125s;animation-delay:0.1125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(37){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.025s;animation-delay:0.025s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(38){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.125s;animation-delay:0.125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(39){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.0125s;animation-delay:0.0125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner:hover .btn span.item:nth-of-type(40){-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-delay:0.1125s;animation-delay:0.1125s;-webkit-animation-iteration-count:3;animation-iteration-count:3}.banner.small{background-image:url(/assets/img/common/bg_banner_s.png),url(/assets/img/common/bg_pc.svg);height:34.5555555556rem;padding-left:5.5555555556rem}.banner.small h2{font-size:4rem;padding-top:5.5555555556rem}.banner.small p{font-size:1.5555555556rem;padding-top:2.2222222222rem;width:48.8888888889rem}}@media screen and (min-width: 768px)and (max-width: 1100px){footer .sub .social{left:50rem}footer .sub .others{right:21.1111111111rem}}@media screen and (max-width: 767px){.pc{display:none}.sp{display:block}.btn a{font-size:5.12rem}.btn a[target=_blank]:before{background-image:url(/assets/img/common/icon-link-blank-sp.svg)}.btn a:before{width:40px;height:40px;margin-right:4.2666666667rem;background-image:url(/assets/img/common/icon-link-sp.svg);top:5px;left:5px}.btn a span.item.space{width:1.28rem}a[target=_blank]:after{width:5.12rem;height:5.12rem;top:1.28rem;margin-left:.8533333333rem}.documentation_update:before{content:\\\"\\\";width:100%;border:1px solid #626c76;display:block}.documentation_update li:after{content:\\\"\\\";width:100%;border:1px solid #626c76;display:block;margin-top:12.3733333333rem}.documentation_update li .bulk{display:flex;margin-top:5.9733333333rem}.documentation_update li .date{font-size:4.2666666667rem;color:#bdc1c6;margin-left:12px;font-weight:600;letter-spacing:.02em}.documentation_update li .product_name{font-size:4.2666666667rem;font-weight:600;display:table;position:relative;padding-left:3.84rem;letter-spacing:.02em}.documentation_update li .product_name:before{content:\\\"\\\";position:absolute;width:2.1333333333rem;height:2.1333333333rem;left:0px;top:3.4133333333rem;display:block;border-radius:50%;background:#5cb4c0}.documentation_update li p.txt{color:#fff !important;font-weight:500;font-size:10.24rem !important;letter-spacing:.04em;line-height:1.2 !important}.documentation_update li p.txt_ja{font-size:8.5333333333rem !important;line-height:1.55 !important}body{min-height:100vh;height:-webkit-fill-available}body:before{content:\\\"\\\";position:fixed;top:0;left:0;z-index:-1;width:100vw;height:100vh;background-image:url(/assets/img/common/bg_sp.svg);background-size:cover;background-position:center}#loading{background-image:url(/assets/img/common/bg_sp.svg)}#loading img{position:absolute;left:50vw;top:50vh;transform:translate3d(-50%, -50%, 0);width:93.8666666667rem}#loading .text{font-size:5.12rem;font-weight:600;line-height:1;position:absolute;letter-spacing:-0.01em;left:8.5333333333rem;bottom:8.5333333333rem}#cookie>.inner{bottom:8.5333333333rem;font-size:5.12rem;left:50vw;transform:translate3d(-50%, 0, 0);line-height:1.35;letter-spacing:-0.01em;border-radius:4.2666666667rem;padding:12.8rem 8.5333333333rem 12.3733333333rem;width:125.8666666667rem;text-align:right;filter:drop-shadow(0px 5.9733333333rem 6.4rem rgba(30, 101, 146, 0.2))}#cookie>.inner_ja{font-size:4.2666666667rem}#cookie .txt{text-align:left}#cookie .btn{display:inline-block;margin-top:9.8133333333rem;font-size:4.2666666667rem;font-weight:600;letter-spacing:.02em;border-radius:4.2666666667rem;padding:1px;width:51.2rem;line-height:1.5;text-align:center;white-space:nowrap}#cookie .btn .inner{border-radius:3.84rem;padding:3.4133333333rem 3.4133333333rem}header h2{top:11.52rem;left:8.96rem}header h2 img{width:50.3466666667rem}header .header_nav{display:none}header .menu{overflow:auto}header .menu .lang_nav{margin-top:27px}header .menu .lang_nav ul{font-size:5.12rem;text-align:right;margin-right:79px}header .menu .lang_nav ul li{letter-spacing:.06em;display:inline-block;color:#fff}header .menu .lang_nav ul li span.current{opacity:.5;pointer-events:none}header .menu .lang_nav ul li:first-of-type:after{content:\\\"\\\";margin-left:5.12rem;margin-right:5.5466666667rem;width:1px;height:2.56rem;background-color:#fff;display:inline-block;pointer-events:none}header .menu .main_nav{margin-top:30.72rem;margin-left:8.5333333333rem}header .menu .main_nav li{font-weight:600;margin-bottom:15.7866666667rem;display:table}header .menu .main_nav li.small{margin-bottom:10.24rem}header .menu .main_nav li.current>a>span.main{position:relative}header .menu .main_nav li.current>a>span.main:before{content:\\\"\\\";position:absolute;display:inline-block;width:1.7066666667rem;height:1.7066666667rem;background-color:#5cb4c0;border-radius:50%;top:5.9733333333rem;left:-5.12rem}header .menu .main_nav li.current.small>a>span.main:before{top:2.9866666667rem}header .menu .main_nav li.open>span.sub{border-left:1px solid rgba(255,255,255,.16)}header .menu .main_nav li>a{position:relative;display:table}header .menu .main_nav li>a>span.main{display:flex;font-size:12.8rem;line-height:1}header .menu .main_nav li>a>span.main span.space{width:2.1333333333rem}header .menu .main_nav li>a:after{position:absolute;right:-5.12rem;width:5.12rem;height:5.12rem;top:3.4133333333rem}header .menu .main_nav li>a.small>span.main{font-size:6.8266666667rem}header .menu .main_nav li>a.small:after{right:-5.9733333333rem;top:1.7066666667rem}header .menu .main_nav li>span.sub{display:block;font-size:5.12rem;line-height:1.5;margin-top:6.4rem;margin-bottom:-2.1333333333rem;letter-spacing:.06em;border-left:1px dashed rgba(255,255,255,0);transition:border 200ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1);transition-delay:.3s}header .menu .main_nav li>span.sub a{display:block;margin-left:6.8266666667rem;margin-bottom:2.56rem;letter-spacing:.04em}header .menu .main_nav li>span.sub a:last-of-type{margin-bottom:0}header .menu .newsletter{margin-top:25.1733333333rem;margin-left:8.5333333333rem;width:142.9333333333rem}header .menu .newsletter:after{content:\\\"\\\";position:absolute;display:block;width:142.9333333333rem;height:1px;background:#626c76;margin-top:.4266666667rem}header .menu .newsletter .tit{font-size:4.2666666667rem;letter-spacing:-0.01em;color:#fff}header .menu .newsletter .newsletter_child{display:table;margin-top:4.2666666667rem;width:100%}header .menu .newsletter#mc_embed_signup form{padding:0;text-align:left;position:relative}header .menu .newsletter#mc_embed_signup #mc_embed_signup_scroll{display:flex}header .menu .newsletter#mc_embed_signup input.email{position:relative;padding:0;margin-right:1.28rem;top:-2.56rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;font-family:inherit;font-size:5.9733333333rem;letter-spacing:-0.01em;width:133.12rem;color:#fff;border-radius:initial;box-sizing:initial;vertical-align:initial;height:auto;display:initial}header .menu .newsletter#mc_embed_signup input.email::-moz-placeholder{color:#fff;opacity:.5}header .menu .newsletter#mc_embed_signup input.email:-ms-input-placeholder{color:#fff;opacity:.5}header .menu .newsletter#mc_embed_signup input.email::placeholder{color:#fff;opacity:.5}header .menu .newsletter#mc_embed_signup input.button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;font-family:inherit;font-weight:500;font-size:6.8266666667rem;opacity:1;cursor:pointer;padding:0;position:absolute;top:-2.1333333333rem;letter-spacing:.1em;background-image:url(/assets/img/common/arrow_right.svg);background-repeat:no-repeat;width:20px;height:20px;right:0;height:auto;line-height:normal}header .menu .newsletter#mc_embed_signup .clear{width:12px}header .menu .sub_nav{margin-top:17.92rem;margin-left:8.5333333333rem}header .menu .sub_nav .social li{margin-right:8.5333333333rem}header .menu .sub_nav .others{font-size:5.12rem;font-weight:500;margin-top:15.36rem;display:flex;flex-wrap:wrap;line-height:1;letter-spacing:.02em}header .menu .sub_nav .others li{flex-shrink:0;margin-bottom:11.9466666667rem;margin-right:13.6533333333rem}header .menu .cp{color:#fff;font-size:5.12rem;background:linear-gradient(270deg, #214772 0%, #3098a6 100%);-webkit-background-clip:text;-webkit-text-fill-color:rgba(0,0,0,0);background-clip:text;text-fill-color:rgba(0,0,0,0);font-weight:500;letter-spacing:.01em;margin-top:11.0933333333rem;margin-bottom:25.6rem;margin-left:8.5333333333rem}header .grill{top:5.9733333333rem;right:65px}header .grill.close .grill_child{top:24px}header .grill.close .grill_child span{height:1px;margin-bottom:0}header .grill:before{background-image:url(/assets/img/common/grill_circle_sp.svg);width:50px;height:50px}header .grill:after{width:40px;height:40px;left:5px;top:5px}header .grill .grill_child{top:22px;left:21px}header .grill .grill_child span{width:8px;margin-bottom:2px}.next{display:block;position:relative;width:100vw;height:60.4vh}.next .tit{font-size:4.2666666667rem;font-weight:600;position:absolute;transform:translate3d(-50%, -50%, 0);left:50%;top:50%;color:#5cb4c0;margin-top:-31.5733333333rem}.next .message{font-size:15.36rem;line-height:1.1;text-align:center;position:absolute;white-space:nowrap;left:50%;top:49%;transform:translate3d(-50%, -50%, 0);display:flex;flex-direction:column;justify-content:center}.next .message span.span_chunk{display:block;font-weight:600;letter-spacing:-0.01em}.next .message span.grd{background:linear-gradient(270deg, #214772 0%, #3098A6 100%);-webkit-background-clip:text;-webkit-text-fill-color:rgba(0,0,0,0);background-clip:text;text-fill-color:rgba(0,0,0,0)}.next .labels{position:absolute;text-align:right;right:8.5333333333rem;top:71%}.next .labels:after{content:\\\"\\\";background-image:url(/assets/img/common/arrow_right2.svg);display:block;position:absolute;width:12px;height:10px;right:0;margin-top:3.4133333333rem}.next .labels span{font-weight:600}.next .labels span.span_chunk{display:block;font-weight:600}.next .labels .label_common{color:#3098a6;letter-spacing:-0.01em;font-size:4.2666666667rem}.next .labels .label{display:block;font-size:5.9733333333rem;letter-spacing:-0.01em;line-height:1.2;margin-top:1.28rem}footer{margin-top:.8533333333rem;padding-bottom:7.68rem;width:100vw;overflow:hidden}footer:before{content:\\\"\\\";background:#1f2933;opacity:.16;width:90vw;height:1px;display:block;margin:0 auto}footer .newsletter{border-radius:5.12rem;margin:0 auto;width:90vw;margin-top:13.2266666667rem}footer .newsletter .newsletter_child{display:flex;align-items:center}footer .newsletter .tit{font-size:4.6933333333rem;font-weight:600;letter-spacing:.06em;margin-left:5.9733333333rem}footer .newsletter#mc_embed_signup form{padding:0;text-align:left;position:relative;margin-top:16px}footer .newsletter#mc_embed_signup #mc_embed_signup_scroll{display:flex}footer .newsletter#mc_embed_signup input.email{position:relative;margin-left:3.84rem;margin-right:4.2666666667rem;top:-2.56rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;font-family:inherit;font-size:5.12rem;letter-spacing:-0.01em;width:180.0533333333rem;border-radius:initial;box-sizing:initial;vertical-align:initial;height:auto;display:initial;padding:1px 2px}footer .newsletter#mc_embed_signup input.email::-moz-placeholder{opacity:.5}footer .newsletter#mc_embed_signup input.email:-ms-input-placeholder{opacity:.5}footer .newsletter#mc_embed_signup input.email::placeholder{opacity:.5}footer .newsletter#mc_embed_signup input.button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;font-family:inherit;font-weight:500;font-size:1.6rem;opacity:1;cursor:pointer;padding:0;position:relative;top:-2px;letter-spacing:.1em;background-image:url(/assets/img/common/arrow_right2.svg);background-repeat:no-repeat;width:12px;height:10px;line-height:normal}footer .sub .social{position:relative;left:8.96rem;margin-top:9.3866666667rem}footer .sub .social li{margin-right:8.5333333333rem}footer .sub .others{position:relative;font-size:4.2666666667rem;font-weight:400;left:8.96rem;margin-top:5.12rem;letter-spacing:-0.01em}footer .sub .others li{margin-right:5.12rem}footer .cp{position:absolute;background:linear-gradient(270deg, #214772 0%, #3098a6 100%);-webkit-background-clip:text;-webkit-text-fill-color:rgba(0,0,0,0);background-clip:text;text-fill-color:rgba(0,0,0,0);margin-top:-8.5333333333rem;right:7.68rem;font-size:4.2666666667rem;letter-spacing:.02em;font-weight:600}.banner{display:block;background-repeat:no-repeat,repeat;background-position:top right,top left;background-size:contain,auto;background-image:url(/assets/img/common/bg_banner_sp.png),url(/assets/img/common/bg_pc.svg);color:#171c21;border-radius:6.8266666667rem;padding-left:12.8rem;padding-right:12.8rem}.banner__content{display:flex;justify-content:space-between;align-items:flex-end;padding-bottom:12.8rem}.banner h2{font-size:15.36rem;padding-top:134.8266666667rem;width:85.3333333333rem;line-height:1.1}.banner p{font-size:5.12rem;padding-top:8.5333333333rem;width:81.0666666667rem;line-height:1.3}.banner p.ja{line-height:1.75}.banner .btn{position:relative;display:flex;align-items:center;font-weight:600;letter-spacing:-0.01em;color:#171c21}.banner .btn::before{content:\\\"\\\";display:block;background-size:cover;top:0;left:0;background-image:url(/assets/img/common/icon-link2.svg);background-size:99.9%;background-repeat:no-repeat;width:20.48rem;height:20.48rem}.banner .btn span{display:none}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/scss/_reset.scss\",\"webpack://./src/scss/common.scss\",\"webpack://./src/scss/_variable.scss\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"/**************\\nreset.css start\\n**************/\\n\\n/* http://meyerweb.com/eric/tools/css/reset/ */\\n/* v1.0 | 20080212 */\\n\\nhtml, body, div, span, applet, object, iframe,\\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\\na, abbr, acronym, address, big, cite, code,\\ndel, dfn, em, font, img, ins, kbd, q, s, samp,\\nsmall, strike, strong, sub, sup, tt, var,\\nb, u, i, center,\\ndl, dt, dd, ol, ul, li,\\nfieldset, form, label, legend,\\ntable, caption, tbody, tfoot, thead, tr, th, td {\\n margin: 0;\\n padding: 0;\\n border: 0;\\n outline: 0;\\n font-size: 100%;\\n vertical-align: baseline;\\n background: transparent;\\n}\\n\\nbody {\\n line-height: 1;\\n}\\n\\nol, ul {\\n list-style: none;\\n}\\n\\nblockquote, q {\\n quotes: none;\\n}\\n\\nblockquote:before, blockquote:after,\\nq:before, q:after {\\n content: '';\\n content: none;\\n}\\n\\n/* remember to define focus styles! */\\n:focus {\\n outline: 0;\\n}\\n\\n/* remember to highlight inserts somehow! */\\nins {\\n text-decoration: none;\\n}\\n\\ndel {\\n text-decoration: line-through;\\n}\\n\\n/* tables still need 'cellspacing=\\\"0\\\"' in the markup */\\ntable {\\n border-collapse: collapse;\\n border-spacing: 0;\\n}\\n\\n/**************\\nreset.css end\\n**************/\",\"@import 'reset';\\n@import 'variable';\\n@import 'mixin';\\n\\n/*\\n z-index\\n\\n header .header_nav 1002\\n header h2 1004\\n header .menu 1005\\n header grill 1010\\n #loading 2001\\n #transition 2001\\n*/\\n\\n:root {\\n --grill_right: 100px;\\n --header_nav_right: 119px;\\n --header_lang_nav_right: 120px;\\n}\\n\\n@for $i from 1 through 100 {\\n .mt#{$i} {\\n margin-top: $i + px;\\n }\\n}\\n\\n.font1 {\\n font-family: futura-pt, sans-serif;\\n}\\n\\n.font2 {\\n font-family: noto-sans-cjk-jp, sans-serif;\\n}\\n\\n.btn {\\n display: table;\\n\\n a,\\n a:visited {\\n color: #fff;\\n }\\n\\n &.dark {\\n a,\\n a:visited {\\n color: $BASE_COLOR1;\\n }\\n }\\n\\n a {\\n position: relative;\\n display: flex;\\n align-items: center;\\n font-weight: 600;\\n letter-spacing: -0.01em;\\n\\n &[target='_blank'] {\\n &:after {\\n content: none;\\n }\\n }\\n\\n /* &:before {\\n content: \\\"\\\";\\n display: inline-block;\\n background-size: cover;\\n }*/\\n\\n &:before {\\n //position: absolute;\\n content: '';\\n display: block;\\n background-size: cover;\\n top: 0;\\n left: 0;\\n }\\n }\\n}\\n\\na,\\na:visited {\\n text-decoration: none;\\n color: $BASE_COLOR2;\\n}\\n\\na.white,\\na.white:visited {\\n color: #fff;\\n\\n &[target='_blank'] {\\n &:after {\\n background-image: url(/assets/img/common/blank_white.svg);\\n }\\n }\\n}\\n\\na[target='_blank'] {\\n &:after {\\n content: '';\\n background-image: url(/assets/img/common/blank.svg);\\n background-size: cover;\\n width: size-variable-pc(14);\\n height: size-variable-pc(14);\\n display: inline-block;\\n position: relative;\\n top: size-variable-pc(3);\\n margin-left: size-variable-pc(-1);\\n }\\n}\\n\\nimg,\\nvideo,\\nsvg,\\ncanvas {\\n vertical-align: bottom;\\n}\\n\\n.documentation_update {\\n a {\\n color: #fff;\\n &:after {\\n display: none;\\n }\\n }\\n li {\\n .left {\\n .date {\\n text-transform: uppercase;\\n }\\n }\\n }\\n}\\n\\n@keyframes common_blink {\\n 0% {\\n opacity: 1;\\n //transform: rotateZ(.25deg);\\n }\\n\\n 50% {\\n opacity: 0.35;\\n //transform: rotateZ(-.25deg);\\n }\\n\\n 100% {\\n opacity: 1;\\n //transform: rotateZ(0deg);\\n }\\n}\\n\\n@keyframes common_blink_weak {\\n 0% {\\n opacity: 1;\\n }\\n\\n 50% {\\n opacity: 0.75;\\n }\\n\\n 100% {\\n opacity: 1;\\n }\\n}\\n\\n@keyframes loop_rotation {\\n 0% {\\n transform: rotateZ(0deg);\\n }\\n\\n 100% {\\n transform: rotateZ(-360deg);\\n }\\n}\\n\\nhtml {\\n font-size: 0.625vw;\\n overflow-x: hidden;\\n height: -webkit-fill-available; //iOS Safari対応\\n\\n // 1920px以上では可変サイズではなく固定にする\\n //@media screen and (min-width: 1920px) {\\n /*font-size: 62.5% * (1920 / 1600);*/\\n //font-size: 75%;\\n //}\\n\\n &.lock {\\n overflow: hidden;\\n }\\n}\\n\\nbody {\\n display: block;\\n width: 100%;\\n background-color: #f0f4ff;\\n color: $BASE_COLOR2;\\n font-family: futura-pt, sans-serif;\\n font-weight: 400;\\n line-height: 2;\\n -webkit-font-smoothing: antialiased;\\n letter-spacing: 0;\\n font-feature-settings: 'palt';\\n font-variant-ligatures: no-common-ligatures;\\n}\\n\\n#loading {\\n position: fixed;\\n z-index: 2001;\\n width: 100vw;\\n height: 100vh;\\n background-color: #f0f4ff;\\n background-size: cover;\\n background-position: center;\\n top: 0;\\n\\n &.show {\\n img {\\n opacity: 1;\\n animation-name: common_blink;\\n animation-duration: 0.1s;\\n animation-timing-function: linear;\\n animation-iteration-count: 2;\\n }\\n }\\n\\n &.hide {\\n background: none;\\n img {\\n transition: opacity 300ms;\\n transition-timing-function: $easeOutQuart;\\n opacity: 0;\\n }\\n }\\n\\n @keyframes blink_loading_text {\\n 0% {\\n opacity: 1;\\n }\\n\\n 50% {\\n opacity: 0;\\n }\\n\\n 100% {\\n opacity: 1;\\n }\\n }\\n\\n img {\\n opacity: 0;\\n }\\n\\n .text {\\n .item {\\n animation: blink_loading_text 1.2s infinite;\\n @for $i from 1 through 100 {\\n &:nth-of-type(#{$i}) {\\n animation-delay: $i * 0.035s;\\n }\\n }\\n }\\n }\\n}\\n\\n#transition {\\n position: fixed;\\n z-index: 2000;\\n top: 0;\\n left: 0;\\n display: none;\\n transition: transform 1200ms;\\n transition-timing-function: $easeOutQuart;\\n\\n &.show {\\n display: block;\\n }\\n\\n &.bigger {\\n transform: scale(1.1);\\n }\\n}\\n\\n#cookie {\\n position: fixed;\\n z-index: 1500;\\n\\n & > .inner {\\n position: fixed;\\n background: #fff;\\n }\\n\\n &.hide {\\n display: none;\\n }\\n\\n .btn {\\n background: linear-gradient(225.93deg, #073a86 0%, #2d849a 101.67%);\\n font-weight: 500;\\n\\n .inner {\\n background: #fff;\\n\\n .t {\\n span.item:nth-of-type(1) {\\n color: #3098a6;\\n }\\n\\n span.item:nth-of-type(2) {\\n color: #2e8b9e;\\n }\\n\\n span.item:nth-of-type(3) {\\n color: #2d849a;\\n }\\n\\n span.item:nth-of-type(4) {\\n color: #2c7e96;\\n }\\n\\n span.item:nth-of-type(5) {\\n color: #2b7892;\\n }\\n\\n span.item:nth-of-type(7) {\\n color: #29708d;\\n }\\n\\n span.item:nth-of-type(9) {\\n color: #276384;\\n }\\n\\n span.item:nth-of-type(10) {\\n color: #266082;\\n }\\n\\n span.item:nth-of-type(11) {\\n color: #24567c;\\n }\\n\\n span.item:nth-of-type(12) {\\n color: #234f77;\\n }\\n\\n span.item:nth-of-type(13) {\\n color: #214772;\\n }\\n }\\n }\\n }\\n}\\n\\nheader {\\n h2 {\\n position: absolute;\\n z-index: 1004;\\n transition: opacity 300ms;\\n transition-timing-function: $easeOutQuart;\\n\\n .img2 {\\n position: absolute;\\n top: 0;\\n left: 0;\\n opacity: 0;\\n pointer-events: none;\\n transition: opacity 300ms;\\n transition-timing-function: $easeOutQuart;\\n }\\n\\n &.hide {\\n opacity: 0;\\n pointer-events: none;\\n }\\n }\\n\\n .header_nav {\\n position: absolute;\\n z-index: 1002;\\n transition: opacity 300ms;\\n transition-timing-function: $easeOutQuart;\\n\\n &.hide {\\n opacity: 0;\\n pointer-events: none;\\n }\\n }\\n\\n .menu {\\n position: fixed;\\n top: 0;\\n display: none;\\n z-index: 1005;\\n width: 100vw;\\n height: 100vh;\\n\\n .bg {\\n position: fixed;\\n display: block;\\n z-index: -1;\\n background-size: cover;\\n width: 0vw;\\n height: 100vh;\\n background-color: #171b21;\\n transition: width 700ms;\\n transition-timing-function: $easeInOutQuart;\\n\\n &.open {\\n transition: width 500ms;\\n transition-timing-function: $easeOutQuart;\\n width: 100vw;\\n }\\n }\\n\\n &.show {\\n display: block;\\n }\\n\\n .lang_nav {\\n opacity: 0;\\n transition: opacity 400ms;\\n transition-timing-function: $easeOutQuart;\\n\\n &.open {\\n opacity: 1;\\n }\\n }\\n\\n .main_nav {\\n li {\\n will-change: transform;\\n transform: translate3d(180px, 0, 0);\\n transition: transform 500ms, opacity 300ms;\\n transition-timing-function: $easeOutQuart;\\n\\n &.current {\\n span.main {\\n color: $SUB_COLOR1;\\n &:before {\\n opacity: 0;\\n transition: opacity 300ms;\\n }\\n }\\n }\\n\\n &.open {\\n transform: translate3d(0, 0, 0);\\n\\n &.current {\\n span.main {\\n &:before {\\n opacity: 1;\\n }\\n }\\n }\\n\\n a:after {\\n opacity: 1;\\n }\\n }\\n\\n &.close {\\n transform: translate3d(-40px, 0, 0) !important;\\n opacity: 0;\\n }\\n\\n $delay: 0.12;\\n @for $i from 1 through 6 {\\n &:nth-of-type(#{$i}) {\\n transition-delay: $i * $delay + s;\\n &.current {\\n pointer-events: none;\\n span.main {\\n &:before {\\n transition-delay: $i * $delay + s;\\n }\\n }\\n }\\n\\n & > a {\\n span.main {\\n &.open {\\n animation: common_blink\\n 0.1s\\n linear\\n $i *\\n $delay +\\n s;\\n animation-iteration-count: 2;\\n span.item {\\n transform: rotate3d(1, 1, 1, 0);\\n }\\n }\\n\\n span.item {\\n @for $j from 1 through 22 {\\n &:nth-of-type(#{$j}) {\\n $rand: random(1000) * 0.00015;\\n transition-delay: $i *\\n $delay +\\n $rand +\\n s;\\n }\\n }\\n }\\n }\\n }\\n\\n & > a:after {\\n transition-delay: 0.35 + $i * $delay + s;\\n }\\n }\\n }\\n\\n & > a {\\n span.main {\\n perspective: 300px;\\n transition: transform 500ms;\\n transition-timing-function: $easeOutQuart;\\n span.item {\\n will-change: transform;\\n transform: rotate3d(1, 0, 0, 180deg);\\n backface-visibility: hidden;\\n transition: transform 350ms;\\n transition-timing-function: $easeOutQuart;\\n }\\n }\\n }\\n\\n & > a:after {\\n opacity: 0;\\n transition: opacity 500ms;\\n transition-timing-function: $easeOutQuart;\\n }\\n\\n & > span.sub {\\n opacity: 0.5;\\n a {\\n transition: opacity 400ms;\\n transition-timing-function: $easeOutQuart;\\n opacity: 0;\\n\\n &.open {\\n opacity: 1;\\n }\\n }\\n }\\n }\\n }\\n\\n .newsletter {\\n opacity: 0;\\n transition: opacity 400ms;\\n transition-timing-function: $easeOutQuart;\\n\\n &.open {\\n opacity: 1;\\n }\\n }\\n\\n .sub_nav {\\n .social {\\n display: flex;\\n\\n li {\\n opacity: 0;\\n transition: opacity 400ms;\\n transition-timing-function: $easeOutQuart;\\n\\n &.open {\\n opacity: 1;\\n }\\n }\\n\\n a[target='_blank'] {\\n &:after {\\n display: none;\\n }\\n }\\n }\\n\\n .others {\\n li {\\n opacity: 0;\\n transition: opacity 400ms;\\n transition-timing-function: $easeOutQuart;\\n\\n &.open {\\n opacity: 1;\\n\\n span.item {\\n opacity: 1;\\n }\\n }\\n\\n &.play {\\n span.item {\\n @for $i from 1 through 30 {\\n &:nth-of-type(#{$i}) {\\n $rand: random(1000) * 0.00015;\\n animation: common_blink\\n 0.13s\\n linear\\n $rand +\\n s;\\n animation-iteration-count: 2;\\n }\\n }\\n }\\n }\\n\\n span.item {\\n opacity: 0;\\n transition: opacity 200ms;\\n transition-timing-function: $easeOutQuart;\\n }\\n }\\n }\\n }\\n\\n .cp {\\n opacity: 0;\\n transition: opacity 400ms;\\n transition-timing-function: $easeOutQuart;\\n\\n &.open {\\n opacity: 0.5;\\n }\\n }\\n }\\n\\n .grill {\\n position: fixed;\\n cursor: pointer;\\n z-index: 1010;\\n transition: opacity 300ms;\\n transition-timing-function: $easeOutQuart;\\n\\n &.close {\\n &:after {\\n background: linear-gradient(\\n 277.02deg,\\n rgba(33, 71, 114, 0.8) 0.33%,\\n rgba(48, 152, 166, 0.8) 100%\\n );\\n box-shadow: inset 0px 1px 40px rgba(255, 255, 255, 0.25);\\n backdrop-filter: blur(4px);\\n }\\n\\n span {\\n background-color: #fff;\\n height: 1px;\\n margin-bottom: 0px;\\n }\\n }\\n\\n &:after {\\n content: '';\\n border-radius: 50%;\\n display: block;\\n position: absolute;\\n background: linear-gradient(\\n 225.93deg,\\n rgba(7, 58, 134, 0.8) 0%,\\n rgba(45, 132, 154, 0.8) 101.67%\\n );\\n box-shadow: inset 0px 1px 40px rgba(255, 255, 255, 0.25);\\n backdrop-filter: blur(4px);\\n transition: opacity 300ms;\\n transition-timing-function: $easeOutQuart;\\n }\\n\\n .grill_child {\\n position: absolute;\\n z-index: 1;\\n }\\n\\n span {\\n display: block;\\n width: 12px;\\n height: 2px;\\n border-radius: 2px;\\n background-color: #fff;\\n margin-bottom: 4px;\\n position: relative;\\n transition: background-color 300ms, margin-bottom 300ms,\\n height 300ms, top 300ms;\\n transition-timing-function: $easeOutQuart;\\n }\\n }\\n}\\n\\nfooter {\\n position: relative;\\n\\n a[target='_blank'] {\\n &:after {\\n display: none;\\n }\\n }\\n\\n .newsletter {\\n background: #e4e9f5;\\n }\\n\\n .sub {\\n .social {\\n display: flex;\\n }\\n\\n .others {\\n display: flex;\\n font-weight: 500;\\n a[target='_blank'] {\\n &:after {\\n display: inline-block;\\n }\\n }\\n }\\n }\\n}\\n\\n//For PC LAYOUT\\n@media screen and (min-width: $BP + px) {\\n .pc {\\n display: block;\\n }\\n .sp {\\n display: none;\\n }\\n\\n .btn {\\n a {\\n font-size: size-variable-pc(12);\\n letter-spacing: -0.01em;\\n\\n &[target='_blank'] {\\n &:before {\\n background-image: url(/assets/img/common/icon-link-blank.svg);\\n }\\n }\\n\\n &:before {\\n width: 40px;\\n height: 40px;\\n margin-right: size-variable-pc(7);\\n background-image: url(/assets/img/common/icon-link.svg);\\n }\\n\\n span.item.space {\\n width: size-variable-pc(3);\\n }\\n\\n &:hover {\\n span.item {\\n @for $i from 1 through 40 {\\n &:nth-of-type(#{$i}) {\\n animation-name: common_blink;\\n animation-duration: 0.1s;\\n animation-timing-function: linear;\\n animation-delay: random(10) * 0.0125 + s;\\n animation-iteration-count: 3;\\n }\\n }\\n }\\n }\\n }\\n }\\n\\n .documentation_update {\\n &:before {\\n content: '';\\n width: 100%;\\n border: 1px solid #626c76;\\n display: block;\\n }\\n\\n li {\\n &:after {\\n content: '';\\n width: 100%;\\n border: 1px solid #626c76;\\n display: block;\\n }\\n\\n a {\\n padding-top: size-variable-pc(20);\\n padding-bottom: size-variable-pc(23);\\n display: block;\\n position: relative;\\n &:after {\\n content: '';\\n position: absolute;\\n background-image: url(/assets/img/common/arrow.svg);\\n display: block;\\n width: size-variable-pc(40);\\n height: size-variable-pc(36);\\n right: 0;\\n margin-top: size-variable-pc(21);\\n }\\n }\\n\\n .bulk {\\n display: flex;\\n padding-bottom: 10px;\\n margin-top: 43px;\\n }\\n\\n .date {\\n font-size: size-variable-pc(14);\\n color: $SUB_COLOR2;\\n letter-spacing: -0.01em;\\n }\\n\\n .product_name {\\n font-size: size-variable-pc(14);\\n font-weight: 500;\\n padding: size-variable-pc(1) size-variable-pc(12);\\n display: table;\\n position: relative;\\n padding-right: size-variable-pc(14);\\n letter-spacing: 0em;\\n line-height: 2;\\n\\n &:before {\\n content: '';\\n position: absolute;\\n width: size-variable-pc(6);\\n height: size-variable-pc(6);\\n left: 0px;\\n top: size-variable-pc(12);\\n display: block;\\n border-radius: 50%;\\n background: $SUB_COLOR1;\\n }\\n }\\n\\n p.txt {\\n font-size: size-variable-pc(24) !important;\\n color: #fff !important;\\n font-weight: 500;\\n width: size-variable-pc(570) !important;\\n margin-top: 0 !important;\\n letter-spacing: 0.018em !important;\\n line-height: 1.2 !important;\\n }\\n\\n p.txt_ja {\\n font-size: size-variable-pc(20) !important;\\n line-height: 1.55 !important;\\n }\\n }\\n }\\n\\n body {\\n &:before {\\n content: '';\\n position: fixed;\\n top: 0;\\n left: 0;\\n z-index: -1;\\n width: 100vw;\\n height: 100vh;\\n background-image: url(/assets/img/common/bg_pc.svg);\\n background-size: cover;\\n background-position: center;\\n }\\n\\n &.hide_cursor {\\n cursor: none !important;\\n }\\n }\\n\\n #loading {\\n background-image: url(/assets/img/common/bg_pc.svg);\\n\\n img {\\n position: absolute;\\n left: 50vw;\\n top: 50vh;\\n transform: translate3d(-50%, -50%, 0);\\n width: size-variable-pc(320);\\n }\\n\\n .text {\\n font-size: size-variable-pc(14);\\n font-weight: 600;\\n line-height: 1;\\n position: absolute;\\n letter-spacing: -0.01em;\\n left: size-variable-pc(75);\\n bottom: size-variable-pc(40);\\n }\\n }\\n\\n #cookie {\\n & > .inner {\\n display: flex;\\n align-items: center;\\n bottom: size-variable-pc(40);\\n left: 50vw;\\n transform: translate3d(-54.6%, 0, 0);\\n font-size: size-variable-pc(14);\\n width: size-variable-pc(800);\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n border-radius: size-variable-pc(20);\\n padding: size-variable-pc(32) size-variable-pc(40);\\n filter: drop-shadow(\\n 0px size-variable-pc(14) size-variable-pc(15)\\n rgba(30, 101, 146, 0.2)\\n );\\n }\\n\\n & > .inner_ja {\\n font-size: size-variable-pc(12);\\n }\\n\\n .txt {\\n width: size-variable-pc(650);\\n margin-right: size-variable-pc(30);\\n }\\n .btn {\\n font-size: size-variable-pc(12);\\n font-weight: 600;\\n letter-spacing: -0.01em;\\n border-radius: size-variable-pc(10);\\n padding: 1px;\\n text-align: center;\\n cursor: pointer;\\n height: size-variable-pc(12);\\n //margin-top: size-variable-pc(11);\\n white-space: nowrap;\\n\\n &:hover {\\n span.item {\\n @for $i from 1 through 30 {\\n &:nth-of-type(#{$i}) {\\n animation-name: common_blink;\\n animation-duration: 0.1s;\\n animation-timing-function: linear;\\n animation-delay: random(10) * 0.0125 + s;\\n animation-iteration-count: 3;\\n }\\n }\\n }\\n }\\n\\n .inner {\\n border-radius: size-variable-pc(9);\\n padding: size-variable-pc(8) size-variable-pc(18)\\n size-variable-pc(6) size-variable-pc(18);\\n }\\n }\\n }\\n\\n header {\\n h2 {\\n top: size-variable-pc(64px);\\n left: size-variable-pc(40px);\\n\\n .img1 {\\n width: size-variable-pc(135);\\n }\\n\\n .img2 {\\n width: size-variable-pc(60);\\n }\\n\\n &.hide {\\n opacity: 1;\\n pointer-events: inherit;\\n\\n .img1 {\\n pointer-events: none;\\n opacity: 0;\\n }\\n\\n .img2 {\\n opacity: 1;\\n pointer-events: inherit;\\n top: size-variable-pc(-10);\\n left: size-variable-pc(-10);\\n }\\n }\\n }\\n\\n .header_nav {\\n width: 100vw;\\n top: size-variable-pc(61);\\n right: var(--header_nav_right);\\n ul {\\n display: flex;\\n justify-content: flex-end;\\n font-weight: 600;\\n font-size: size-variable-pc(14);\\n letter-spacing: 0em;\\n\\n li {\\n margin-right: size-variable-pc(24);\\n opacity: 0;\\n &.show {\\n opacity: 1;\\n span.item {\\n opacity: 1;\\n }\\n\\n a {\\n &:after {\\n opacity: 1;\\n }\\n }\\n }\\n\\n &.play {\\n span.item {\\n @for $i from 1 through 30 {\\n &:nth-of-type(#{$i}) {\\n $rand: random(1000) * 0.00015;\\n animation: common_blink\\n 0.13s\\n linear\\n $rand +\\n s;\\n animation-iteration-count: 2;\\n }\\n }\\n }\\n }\\n\\n &:hover {\\n span.item {\\n @for $i from 1 through 30 {\\n &:nth-of-type(#{$i}) {\\n $rand: random(1000) * 0.00015;\\n animation: common_blink\\n 0.13s\\n linear\\n $rand +\\n s;\\n animation-iteration-count: 2;\\n }\\n }\\n }\\n }\\n\\n span.item {\\n opacity: 0;\\n transition: opacity 200ms;\\n transition-timing-function: $easeOutQuart;\\n }\\n\\n a {\\n transition: color 200ms;\\n transition-timing-function: $easeOutQuart;\\n &:after {\\n opacity: 0;\\n transition: opacity 300ms;\\n transition-timing-function: $easeOutQuart;\\n transition-delay: 0.15s;\\n }\\n }\\n\\n &.current {\\n pointer-events: none;\\n a {\\n color: $KEY_COLOR1;\\n position: relative;\\n &:before {\\n content: '';\\n position: relative;\\n display: inline-block;\\n width: size-variable-pc(6);\\n height: size-variable-pc(6);\\n background-color: $SUB_COLOR1;\\n border-radius: 50%;\\n top: size-variable-pc(-1);\\n margin-right: size-variable-pc(6);\\n }\\n }\\n }\\n\\n &:last-of-type {\\n margin-right: 0;\\n }\\n }\\n }\\n }\\n\\n .menu {\\n overflow: auto;\\n .lang_nav {\\n position: absolute;\\n right: var(--header_lang_nav_right);\\n top: size-variable-pc(62);\\n ul {\\n display: flex;\\n font-size: size-variable-pc(12);\\n li {\\n letter-spacing: 0.06em;\\n color: #fff;\\n\\n span {\\n cursor: pointer;\\n }\\n\\n span.current {\\n opacity: 0.5;\\n pointer-events: none;\\n }\\n\\n span:hover {\\n animation: common_blink 0.1s linear;\\n animation-iteration-count: 2;\\n }\\n }\\n\\n li:first-of-type {\\n &:after {\\n content: '';\\n margin-left: size-variable-pc(12);\\n margin-right: size-variable-pc(13);\\n width: 1px;\\n height: size-variable-pc(6);\\n background-color: #fff;\\n display: inline-block;\\n pointer-events: none;\\n }\\n }\\n }\\n }\\n\\n &.open {\\n &:before {\\n opacity: 0.16;\\n }\\n }\\n\\n .main_nav {\\n position: relative;\\n margin-top: size-variable-pc(120);\\n margin-left: size-variable-pc(80);\\n\\n li {\\n font-weight: 600;\\n margin-bottom: size-variable-pc(30);\\n display: table;\\n\\n &.current {\\n & > a {\\n & > span.main {\\n position: relative;\\n &:before {\\n content: '';\\n position: absolute;\\n display: inline-block;\\n width: size-variable-pc(8);\\n height: size-variable-pc(8);\\n background-color: $SUB_COLOR1;\\n border-radius: 50%;\\n top: size-variable-pc(32);\\n left: size-variable-pc(-32);\\n }\\n }\\n }\\n &.small {\\n & > a {\\n & > span.main {\\n &:before {\\n top: size-variable-pc(12);\\n }\\n }\\n }\\n }\\n }\\n\\n & > a {\\n position: relative;\\n display: table;\\n\\n &:hover {\\n span.main {\\n span.item {\\n @for $i from 1 through 30 {\\n &:nth-of-type(#{$i}) {\\n animation-name: common_blink;\\n animation-duration: 0.1s;\\n animation-timing-function: linear;\\n animation-delay: random(10) *\\n 0.0125 +\\n s;\\n animation-iteration-count: 3;\\n }\\n }\\n }\\n }\\n }\\n\\n & > span.main {\\n display: flex;\\n font-size: size-variable-pc(60);\\n line-height: 1.2;\\n letter-spacing: -0.01em;\\n\\n span.space {\\n width: size-variable-pc(10);\\n }\\n }\\n\\n &:after {\\n position: absolute;\\n right: size-variable-pc(-25);\\n width: size-variable-pc(20);\\n height: size-variable-pc(20);\\n top: size-variable-pc(23);\\n }\\n\\n &.small {\\n & > span.main {\\n font-size: size-variable-pc(24);\\n }\\n &:after {\\n right: size-variable-pc(-24);\\n top: size-variable-pc(6.5);\\n }\\n }\\n }\\n\\n span.sub {\\n display: block;\\n font-size: size-variable-pc(14);\\n line-height: 1;\\n margin-top: size-variable-pc(16);\\n letter-spacing: -0.01em;\\n a {\\n &:after {\\n content: ', ';\\n }\\n\\n &:hover {\\n span.item {\\n @for $i from 1 through 30 {\\n &:nth-of-type(#{$i}) {\\n $rand: random(1000) * 0.00015;\\n animation: common_blink\\n 0.13s\\n linear\\n $rand +\\n s;\\n animation-iteration-count: 2;\\n }\\n }\\n }\\n }\\n }\\n a:last-of-type {\\n &:after {\\n display: none;\\n }\\n }\\n }\\n }\\n\\n // li.documentation {\\n // position: absolute;\\n // top: 0;\\n // right: size-variable-pc(215);\\n // }\\n }\\n\\n .right_chunk {\\n //position: absolute;\\n //right: size-variable-pc(40);\\n //top: size-variable-pc(222);\\n }\\n\\n .newsletter {\\n position: absolute;\\n // left: 63.9vw;\\n right: size-variable-pc(80);\\n bottom: 20vh;\\n width: size-variable-pc(440);\\n\\n &:after {\\n content: '';\\n position: absolute;\\n display: block;\\n width: 100%;\\n height: 1px;\\n background: #626c76;\\n margin-top: size-variable-pc(13);\\n }\\n\\n .tit {\\n font-size: size-variable-pc(12);\\n letter-spacing: -0.01em;\\n color: #fff;\\n }\\n\\n &#mc_embed_signup {\\n form {\\n padding: 0;\\n text-align: left;\\n position: relative;\\n }\\n\\n input.email {\\n position: relative;\\n padding: 0;\\n margin-right: size-variable-pc(3);\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n border: none;\\n background: none;\\n font-family: inherit;\\n font-size: size-variable-pc(16);\\n letter-spacing: 0.04em;\\n width: size-variable-pc(417);\\n color: #fff;\\n /*以下からMailchimpのためのスタイリング調整*/\\n border-radius: initial;\\n box-sizing: initial;\\n vertical-align: initial;\\n height: auto;\\n display: initial;\\n }\\n\\n input.email::placeholder {\\n color: #fff;\\n opacity: 0.5;\\n }\\n\\n input.button {\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n border: none;\\n background: none;\\n font-family: inherit;\\n font-weight: 500;\\n opacity: 1;\\n cursor: pointer;\\n padding: 0;\\n position: absolute;\\n top: size-variable-pc(5);\\n letter-spacing: 0.1em;\\n background-image: url(/assets/img/common/arrow_right.svg);\\n background-repeat: no-repeat;\\n background-position-y: center;\\n width: 20px;\\n height: 20px;\\n right: 0;\\n\\n &:hover {\\n }\\n\\n /*以下からMailchimpのためのスタイリング調整*/\\n height: auto;\\n line-height: normal;\\n }\\n }\\n }\\n\\n .sub_nav {\\n .social {\\n position: absolute;\\n bottom: 13vh;\\n right: size-variable-pc(64);\\n // margin-left: size-variable-pc(80);\\n li {\\n margin-right: size-variable-pc(20);\\n\\n &:hover {\\n animation: common_blink 0.1s linear;\\n animation-iteration-count: 2;\\n }\\n }\\n }\\n\\n .others {\\n position: absolute;\\n font-size: size-variable-pc(12);\\n font-weight: 450;\\n margin-top: size-variable-pc(30);\\n letter-spacing: -0.03em;\\n display: flex;\\n bottom: 6.8vh;\\n right: size-variable-pc(201);\\n\\n li {\\n margin-left: size-variable-pc(21.2);\\n &:hover {\\n span.item {\\n @for $i from 1 through 30 {\\n &:nth-of-type(#{$i}) {\\n $rand: random(1000) * 0.00015;\\n animation: common_blink\\n 0.13s\\n linear\\n $rand +\\n s;\\n animation-iteration-count: 2;\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n\\n .cp {\\n position: absolute;\\n background: linear-gradient(270deg, #214772 0%, #3098a6 100%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n background-clip: text;\\n text-fill-color: transparent;\\n font-weight: 400;\\n font-size: size-variable-pc(12);\\n letter-spacing: -0.01em;\\n bottom: 6.8vh;\\n right: size-variable-pc(80);\\n }\\n }\\n\\n .grill {\\n top: size-variable-pc(34);\\n right: var(--grill_right);\\n\\n &:hover {\\n .grill_child {\\n animation: common_blink 0.1s linear;\\n animation-iteration-count: 2;\\n }\\n }\\n\\n &.close {\\n &:hover {\\n opacity: 0.7;\\n }\\n\\n .grill_child {\\n top: 39px;\\n }\\n }\\n\\n &:after {\\n width: 60px;\\n height: 60px;\\n left: 10px;\\n top: 10px;\\n }\\n\\n .grill_child {\\n top: 36px;\\n left: 34px;\\n }\\n }\\n }\\n\\n .next {\\n display: block;\\n position: relative;\\n width: 100vw;\\n height: 100vh;\\n\\n a.to_contact {\\n &:hover {\\n .span_chunk {\\n span.item {\\n @for $i from 1 through 30 {\\n &:nth-of-type(#{$i}) {\\n animation-name: common_blink;\\n animation-duration: 0.1s;\\n animation-timing-function: linear;\\n animation-delay: random(10) * 0.0125 + s;\\n animation-iteration-count: 3;\\n }\\n }\\n }\\n }\\n }\\n }\\n\\n .tit {\\n font-size: size-variable-pc(14);\\n font-weight: 600;\\n position: absolute;\\n transform: translate3d(-50%, -50%, 0);\\n left: 50%;\\n top: 50%;\\n color: $SUB_COLOR1;\\n margin-top: size-variable-pc(-47);\\n }\\n\\n .message {\\n font-size: size-variable-pc(88px);\\n font-weight: 500;\\n line-height: 1.2;\\n text-align: center;\\n position: absolute;\\n left: 50%;\\n top: 50vh;\\n margin-top: size-variable-pc(10);\\n transform: translate3d(-50%, -50%, 0);\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n\\n span.span_chunk {\\n display: block;\\n font-weight: 600;\\n letter-spacing: -0.02em;\\n }\\n\\n span.grd {\\n span.item:nth-of-type(1) {\\n color: $KEY_COLOR1;\\n }\\n\\n span.item:nth-of-type(2) {\\n color: #2d859a;\\n }\\n\\n span.item:nth-of-type(3) {\\n color: #2b7c94;\\n }\\n\\n span.item:nth-of-type(4) {\\n color: #2a779c;\\n }\\n\\n span.item:nth-of-type(5) {\\n color: #2a779c;\\n }\\n\\n span.item:nth-of-type(6) {\\n color: #296f8c;\\n }\\n\\n span.item:nth-of-type(7) {\\n color: #276586;\\n }\\n\\n span.item:nth-of-type(8) {\\n color: #265e81;\\n }\\n\\n span.item:nth-of-type(9) {\\n color: #265e81;\\n }\\n\\n span.item:nth-of-type(10) {\\n color: #235179;\\n }\\n\\n span.item:nth-of-type(11) {\\n color: #214772;\\n }\\n\\n span.item:nth-of-type(12) {\\n color: #214772;\\n }\\n\\n /*\\n background: linear-gradient(270deg, #214772 0%, $KEY_COLOR1 100%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n background-clip: text;\\n text-fill-color: transparent;\\n */\\n }\\n }\\n\\n a.to_next {\\n &:hover {\\n .span_chunk {\\n span.item {\\n @for $i from 1 through 30 {\\n &:nth-of-type(#{$i}) {\\n animation-name: common_blink;\\n animation-duration: 0.1s;\\n animation-timing-function: linear;\\n animation-delay: random(10) * 0.0125 + s;\\n animation-iteration-count: 3;\\n }\\n }\\n }\\n }\\n }\\n }\\n\\n .labels {\\n position: absolute;\\n text-align: right;\\n right: size-variable-pc(40px);\\n top: 50%;\\n transform: translate3d(0, -50%, 0);\\n margin-top: size-variable-pc(-14);\\n\\n &:after {\\n content: '';\\n background-image: url(/assets/img/common/arrow_right2.svg);\\n display: block;\\n position: absolute;\\n width: 12px;\\n height: 10px;\\n right: 0;\\n margin-top: size-variable-pc(16);\\n }\\n\\n span {\\n font-weight: 600;\\n }\\n\\n span.span_chunk {\\n display: block;\\n font-weight: 600;\\n }\\n\\n .label_common {\\n color: $SUB_COLOR1;\\n letter-spacing: -0.01em;\\n font-size: size-variable-pc(10);\\n }\\n\\n .label {\\n display: block;\\n font-size: size-variable-pc(14);\\n letter-spacing: -0.01em;\\n line-height: 1;\\n margin-top: size-variable-pc(11);\\n }\\n }\\n }\\n\\n footer {\\n position: absolute;\\n width: 100vw;\\n margin-top: -41px;\\n\\n .newsletter {\\n border-radius: size-variable-pc(10px);\\n display: inline-flex;\\n position: relative;\\n left: size-variable-pc(39);\\n top: -7px;\\n padding: size-variable-pc(7) size-variable-pc(16)\\n size-variable-pc(7) size-variable-pc(24);\\n\\n .newsletter_child {\\n display: flex;\\n align-items: center;\\n }\\n .tit {\\n font-size: size-variable-pc(11);\\n font-weight: 600;\\n letter-spacing: -0.01em;\\n }\\n\\n &#mc_embed_signup {\\n form {\\n padding: 0;\\n text-align: left;\\n position: relative;\\n }\\n\\n input.email {\\n position: relative;\\n margin-left: size-variable-pc(9);\\n margin-right: size-variable-pc(9);\\n top: size-variable-pc(-1);\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n border: none;\\n background: none;\\n font-family: inherit;\\n font-size: size-variable-pc(12);\\n letter-spacing: -0.01em;\\n width: size-variable-pc(184);\\n\\n /*以下からMailchimpのためのスタイリング調整*/\\n border-radius: initial;\\n box-sizing: initial;\\n vertical-align: initial;\\n height: auto;\\n display: initial;\\n padding: 1px 2px;\\n }\\n\\n input.email::placeholder {\\n //color: #fff;\\n opacity: 0.5;\\n }\\n\\n input.button {\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n border: none;\\n background: none;\\n font-family: inherit;\\n font-weight: 500;\\n font-size: size-variable-pc(12);\\n opacity: 1;\\n cursor: pointer;\\n padding: 0;\\n position: relative;\\n top: size-variable-pc(4);\\n letter-spacing: 0.1em;\\n background-image: url(/assets/img/common/arrow_right2.svg);\\n background-repeat: no-repeat;\\n background-position-y: center;\\n width: 12px;\\n height: 10px;\\n\\n &:hover {\\n }\\n\\n /*以下からMailchimpのためのスタイリング調整*/\\n height: auto;\\n line-height: normal;\\n }\\n }\\n }\\n\\n .sub {\\n position: absolute;\\n top: 0;\\n width: 100%;\\n\\n .social {\\n position: absolute;\\n left: size-variable-pc(400);\\n top: size-variable-pc(-3);\\n li {\\n margin-right: 20px;\\n\\n &:hover {\\n animation: common_blink 0.1s linear;\\n animation-iteration-count: 2;\\n }\\n }\\n }\\n\\n .others {\\n position: absolute;\\n font-size: size-variable-pc(11);\\n right: size-variable-pc(134);\\n letter-spacing: 0.01em;\\n\\n li {\\n margin-left: size-variable-pc(26);\\n }\\n\\n a {\\n &:hover {\\n span.item {\\n @for $i from 1 through 30 {\\n &:nth-of-type(#{$i}) {\\n $rand: random(1000) * 0.00015;\\n animation: common_blink\\n 0.13s\\n linear\\n $rand +\\n s;\\n animation-iteration-count: 2;\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n\\n .cp {\\n position: absolute;\\n background: linear-gradient(270deg, #214772 0%, #3098a6 100%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n background-clip: text;\\n text-fill-color: transparent;\\n\\n right: size-variable-pc(41);\\n top: 0;\\n font-size: size-variable-pc(11);\\n font-weight: 600;\\n letter-spacing: 0.01em;\\n }\\n }\\n\\n // banner mixin\\n .banner {\\n display: block;\\n background-repeat: no-repeat, repeat;\\n background-position: top right, top left;\\n background-size: contain, auto;\\n background-image: url(/assets/img/common/bg_banner_l.png),\\n url(/assets/img/common/bg_pc.svg);\\n color: $BASE_COLOR1;\\n height: size-variable-pc(345);\\n border-radius: size-variable-pc(16);\\n padding-left: size-variable-pc(70);\\n\\n h2 {\\n font-size: size-variable-pc(54);\\n padding-top: size-variable-pc(70);\\n line-height: 1;\\n }\\n p {\\n font-size: size-variable-pc(16);\\n padding-top: size-variable-pc(20);\\n line-height: 1.5;\\n &.ja {\\n line-height: 1.75;\\n }\\n }\\n .btn {\\n main.top .section & {\\n margin-top: 0;\\n margin-left: 0;\\n }\\n position: relative;\\n display: flex;\\n align-items: center;\\n font-weight: 600;\\n\\n padding-top: size-variable-pc(30);\\n\\n font-size: size-variable-pc(12);\\n letter-spacing: -0.01em;\\n color: $BASE_COLOR1;\\n\\n &:before {\\n content: '';\\n display: block;\\n background-size: cover;\\n top: 0;\\n left: 0;\\n\\n margin-right: size-variable-pc(7);\\n\\n background-image: url(/assets/img/common/icon-link2.svg);\\n background-size: 99.9%;\\n background-repeat: no-repeat;\\n width: size-variable-pc(48);\\n height: size-variable-pc(48);\\n }\\n\\n span.item.space {\\n width: size-variable-pc(3);\\n }\\n }\\n\\n &:hover .btn {\\n span.item {\\n @for $i from 1 through 40 {\\n &:nth-of-type(#{$i}) {\\n animation-name: common_blink;\\n animation-duration: 0.1s;\\n animation-timing-function: linear;\\n animation-delay: random(10) * 0.0125 + s;\\n animation-iteration-count: 3;\\n }\\n }\\n }\\n }\\n\\n &.small {\\n background-image: url(/assets/img/common/bg_banner_s.png),\\n url(/assets/img/common/bg_pc.svg);\\n height: size-variable-pc(311);\\n padding-left: size-variable-pc(50);\\n\\n h2 {\\n font-size: size-variable-pc(36);\\n padding-top: size-variable-pc(50);\\n }\\n p {\\n font-size: size-variable-pc(14);\\n padding-top: size-variable-pc(20);\\n width: size-variable-pc(440);\\n\\n // .pc {\\n // display: none;\\n // }\\n }\\n }\\n }\\n}\\n\\n@media screen and (min-width: $BP + px) and (max-width: 1100px) {\\n footer {\\n .sub {\\n .social {\\n left: size-variable-pc(450);\\n }\\n\\n .others {\\n right: size-variable-pc(190);\\n }\\n }\\n }\\n}\\n\\n//For TABLET/SP LAYOUT\\n@media screen and (max-width: ($BP - 1) + px) {\\n .pc {\\n display: none;\\n }\\n .sp {\\n display: block;\\n }\\n\\n .btn {\\n a {\\n font-size: size-variable-sp(12);\\n\\n &[target='_blank'] {\\n &:before {\\n background-image: url(/assets/img/common/icon-link-blank-sp.svg);\\n }\\n }\\n\\n /*\\n &:before {\\n width: 50px;\\n height: 50px;\\n margin-right: size-variable-sp(11);\\n background-image: url(/assets/img/common/icon-link-line-sp.svg);\\n }\\n */\\n\\n &:before {\\n width: 40px;\\n height: 40px;\\n margin-right: size-variable-sp(10);\\n background-image: url(/assets/img/common/icon-link-sp.svg);\\n top: 5px;\\n left: 5px;\\n }\\n\\n span.item.space {\\n width: size-variable-sp(3);\\n }\\n }\\n }\\n\\n a[target='_blank'] {\\n &:after {\\n width: size-variable-sp(12);\\n height: size-variable-sp(12);\\n top: size-variable-sp(3);\\n margin-left: size-variable-sp(2);\\n }\\n }\\n\\n .documentation_update {\\n &:before {\\n content: '';\\n width: 100%;\\n border: 1px solid #626c76;\\n display: block;\\n }\\n\\n li {\\n &:after {\\n content: '';\\n width: 100%;\\n border: 1px solid #626c76;\\n display: block;\\n margin-top: size-variable-sp(29);\\n }\\n\\n .bulk {\\n display: flex;\\n margin-top: size-variable-sp(14);\\n }\\n\\n .date {\\n font-size: size-variable-sp(10);\\n color: $SUB_COLOR2;\\n margin-left: 12px;\\n font-weight: 600;\\n letter-spacing: 0.02em;\\n }\\n\\n .product_name {\\n font-size: size-variable-sp(10);\\n font-weight: 600;\\n display: table;\\n position: relative;\\n padding-left: size-variable-sp(9);\\n letter-spacing: 0.02em;\\n\\n &:before {\\n content: '';\\n position: absolute;\\n width: size-variable-sp(5);\\n height: size-variable-sp(5);\\n left: 0px;\\n top: size-variable-sp(8);\\n display: block;\\n border-radius: 50%;\\n background: $SUB_COLOR1;\\n }\\n }\\n\\n p.txt {\\n color: #fff !important;\\n font-weight: 500;\\n font-size: size-variable-sp(24) !important;\\n letter-spacing: 0.04em;\\n line-height: 1.2 !important;\\n }\\n\\n p.txt_ja {\\n font-size: size-variable-sp(20) !important;\\n line-height: 1.55 !important;\\n }\\n }\\n }\\n\\n body {\\n min-height: 100vh; //iOS Safari対応\\n height: -webkit-fill-available; //iOS Safari対応\\n &:before {\\n content: '';\\n position: fixed;\\n top: 0;\\n left: 0;\\n z-index: -1;\\n width: 100vw;\\n height: 100vh;\\n background-image: url(/assets/img/common/bg_sp.svg);\\n background-size: cover;\\n background-position: center;\\n }\\n }\\n\\n #loading {\\n background-image: url(/assets/img/common/bg_sp.svg);\\n\\n img {\\n position: absolute;\\n left: 50vw;\\n top: 50vh;\\n transform: translate3d(-50%, -50%, 0);\\n width: size-variable-sp(220);\\n }\\n\\n .text {\\n font-size: size-variable-sp(12);\\n font-weight: 600;\\n line-height: 1;\\n position: absolute;\\n letter-spacing: -0.01em;\\n left: size-variable-sp(20);\\n bottom: size-variable-sp(20);\\n }\\n }\\n\\n #cookie {\\n & > .inner {\\n bottom: size-variable-sp(20);\\n font-size: size-variable-sp(12);\\n left: 50vw;\\n transform: translate3d(-50%, 0, 0);\\n line-height: 1.35;\\n letter-spacing: -0.01em;\\n border-radius: size-variable-sp(10);\\n padding: size-variable-sp(30) size-variable-sp(20)\\n size-variable-sp(29);\\n width: size-variable-sp(295);\\n text-align: right;\\n filter: drop-shadow(\\n 0px size-variable-sp(14) size-variable-sp(15)\\n rgba(30, 101, 146, 0.2)\\n );\\n }\\n\\n & > .inner_ja {\\n font-size: size-variable-sp(10);\\n }\\n\\n .txt {\\n text-align: left;\\n }\\n\\n .btn {\\n //position: relative;\\n //right: 0;\\n display: inline-block;\\n margin-top: size-variable-sp(23);\\n font-size: size-variable-sp(10);\\n font-weight: 600;\\n letter-spacing: 0.02em;\\n border-radius: size-variable-sp(10);\\n padding: 1px;\\n width: size-variable-sp(120);\\n line-height: 1.5;\\n text-align: center;\\n white-space: nowrap;\\n\\n .inner {\\n border-radius: size-variable-sp(9);\\n padding: size-variable-sp(8) size-variable-sp(8);\\n }\\n }\\n }\\n\\n header {\\n h2 {\\n top: size-variable-sp(27px);\\n left: size-variable-sp(21px);\\n img {\\n width: size-variable-sp(118);\\n }\\n }\\n\\n .header_nav {\\n display: none;\\n }\\n\\n .menu {\\n overflow: auto;\\n\\n .lang_nav {\\n //margin-top: size-variable-sp(27);\\n margin-top: 27px;\\n ul {\\n font-size: size-variable-sp(12);\\n text-align: right;\\n margin-right: 79px;\\n li {\\n letter-spacing: 0.06em;\\n display: inline-block;\\n color: #fff;\\n\\n span.current {\\n opacity: 0.5;\\n pointer-events: none;\\n }\\n }\\n\\n li:first-of-type {\\n &:after {\\n content: '';\\n margin-left: size-variable-sp(12);\\n margin-right: size-variable-sp(13);\\n width: 1px;\\n height: size-variable-sp(6);\\n background-color: #fff;\\n display: inline-block;\\n pointer-events: none;\\n }\\n }\\n }\\n }\\n\\n .main_nav {\\n margin-top: size-variable-sp(72);\\n margin-left: size-variable-sp(20);\\n li {\\n font-weight: 600;\\n margin-bottom: size-variable-sp(37);\\n display: table;\\n\\n &.small {\\n margin-bottom: size-variable-sp(24);\\n }\\n\\n &.current {\\n & > a {\\n & > span.main {\\n position: relative;\\n &:before {\\n content: '';\\n position: absolute;\\n display: inline-block;\\n width: size-variable-sp(4);\\n height: size-variable-sp(4);\\n background-color: $SUB_COLOR1;\\n border-radius: 50%;\\n top: size-variable-sp(14);\\n left: size-variable-sp(-12);\\n }\\n }\\n }\\n\\n &.small {\\n & > a {\\n & > span.main {\\n &:before {\\n top: size-variable-sp(7);\\n }\\n }\\n }\\n }\\n }\\n\\n &.open {\\n & > span.sub {\\n border-left: 1px solid rgba(255, 255, 255, 0.16);\\n }\\n }\\n\\n & > a {\\n position: relative;\\n display: table;\\n\\n & > span.main {\\n display: flex;\\n font-size: size-variable-sp(30);\\n line-height: 1;\\n\\n span.space {\\n width: size-variable-sp(5);\\n }\\n }\\n\\n &:after {\\n position: absolute;\\n right: size-variable-sp(-12);\\n width: size-variable-sp(12);\\n height: size-variable-sp(12);\\n top: size-variable-sp(8);\\n }\\n\\n &.small {\\n & > span.main {\\n font-size: size-variable-sp(16);\\n }\\n &:after {\\n right: size-variable-sp(-14);\\n top: size-variable-sp(4);\\n }\\n }\\n }\\n\\n & > span.sub {\\n display: block;\\n font-size: size-variable-sp(12);\\n line-height: 1.5;\\n margin-top: size-variable-sp(15);\\n margin-bottom: size-variable-sp(-5);\\n letter-spacing: 0.06em;\\n border-left: 1px dashed rgba(255, 255, 255, 0);\\n transition: border 200ms;\\n transition-timing-function: $easeOutQuart;\\n transition-delay: 0.3s;\\n a {\\n display: block;\\n margin-left: size-variable-sp(16);\\n margin-bottom: size-variable-sp(6);\\n letter-spacing: 0.04em;\\n &:last-of-type {\\n margin-bottom: 0;\\n }\\n }\\n }\\n }\\n }\\n\\n .newsletter {\\n margin-top: size-variable-sp(59);\\n margin-left: size-variable-sp(20);\\n width: size-variable-sp(335);\\n\\n &:after {\\n content: '';\\n position: absolute;\\n display: block;\\n width: size-variable-sp(335);\\n height: 1px;\\n background: #626c76;\\n margin-top: size-variable-sp(1);\\n }\\n\\n .tit {\\n font-size: size-variable-sp(10);\\n letter-spacing: -0.01em;\\n color: #fff;\\n }\\n\\n .newsletter_child {\\n display: table;\\n margin-top: size-variable-sp(10);\\n width: 100%;\\n }\\n\\n &#mc_embed_signup {\\n form {\\n padding: 0;\\n text-align: left;\\n position: relative;\\n }\\n\\n #mc_embed_signup_scroll {\\n display: flex;\\n }\\n\\n input.email {\\n position: relative;\\n padding: 0;\\n margin-right: size-variable-sp(3);\\n top: size-variable-sp(-6);\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n border: none;\\n background: none;\\n font-family: inherit;\\n font-size: size-variable-sp(14);\\n letter-spacing: -0.01em;\\n\\n width: size-variable-sp(312);\\n color: #fff;\\n\\n /*以下からMailchimpのためのスタイリング調整*/\\n border-radius: initial;\\n box-sizing: initial;\\n vertical-align: initial;\\n height: auto;\\n display: initial;\\n //padding: 1px 2px;\\n }\\n\\n input.email::placeholder {\\n color: #fff;\\n opacity: 0.5;\\n }\\n\\n input.button {\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n border: none;\\n background: none;\\n font-family: inherit;\\n font-weight: 500;\\n font-size: size-variable-sp(16);\\n opacity: 1;\\n cursor: pointer;\\n padding: 0;\\n position: absolute;\\n top: size-variable-sp(-5);\\n letter-spacing: 0.1em;\\n background-image: url(/assets/img/common/arrow_right.svg);\\n background-repeat: no-repeat;\\n width: 20px;\\n height: 20px;\\n right: 0;\\n\\n &:hover {\\n }\\n\\n /*以下からMailchimpのためのスタイリング調整*/\\n height: auto;\\n line-height: normal;\\n }\\n\\n .clear {\\n width: 12px;\\n }\\n }\\n }\\n\\n .sub_nav {\\n margin-top: size-variable-sp(42);\\n margin-left: size-variable-sp(20);\\n\\n .social {\\n li {\\n margin-right: size-variable-sp(20);\\n }\\n }\\n\\n .others {\\n font-size: size-variable-sp(12);\\n font-weight: 500;\\n margin-top: size-variable-sp(36);\\n display: flex;\\n flex-wrap: wrap;\\n line-height: 1;\\n letter-spacing: 0.02em;\\n li {\\n flex-shrink: 0;\\n margin-bottom: size-variable-sp(28);\\n margin-right: size-variable-sp(32);\\n }\\n }\\n }\\n\\n .cp {\\n color: #fff;\\n font-size: size-variable-sp(12);\\n background: linear-gradient(270deg, #214772 0%, #3098a6 100%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n background-clip: text;\\n text-fill-color: transparent;\\n font-weight: 500;\\n letter-spacing: 0.01em;\\n margin-top: size-variable-sp(26);\\n margin-bottom: size-variable-sp(60);\\n margin-left: size-variable-sp(20);\\n }\\n }\\n\\n .grill {\\n top: size-variable-sp(14);\\n //right: size-variable-sp(79);\\n right: 65px;\\n\\n &.close {\\n .grill_child {\\n top: 24px;\\n\\n span {\\n height: 1px;\\n margin-bottom: 0;\\n }\\n }\\n }\\n\\n &:before {\\n background-image: url(/assets/img/common/grill_circle_sp.svg);\\n width: 50px;\\n height: 50px;\\n }\\n\\n &:after {\\n width: 40px;\\n height: 40px;\\n left: 5px;\\n top: 5px;\\n }\\n\\n .grill_child {\\n top: 22px;\\n left: 21px;\\n span {\\n width: 8px;\\n margin-bottom: 2px;\\n }\\n }\\n }\\n }\\n\\n .next {\\n display: block;\\n position: relative;\\n width: 100vw;\\n height: 60.4vh;\\n\\n .tit {\\n font-size: size-variable-sp(10);\\n font-weight: 600;\\n position: absolute;\\n transform: translate3d(-50%, -50%, 0);\\n left: 50%;\\n top: 50%;\\n color: $SUB_COLOR1;\\n margin-top: size-variable-sp(-74);\\n }\\n\\n .message {\\n font-size: size-variable-sp(36px);\\n line-height: 1.1;\\n text-align: center;\\n position: absolute;\\n white-space: nowrap;\\n left: 50%;\\n top: 49%;\\n transform: translate3d(-50%, -50%, 0);\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n\\n span.span_chunk {\\n display: block;\\n font-weight: 600;\\n letter-spacing: -0.01em;\\n }\\n\\n span.grd {\\n background: linear-gradient(\\n 270deg,\\n #214772 0%,\\n $KEY_COLOR1 100%\\n );\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n background-clip: text;\\n text-fill-color: transparent;\\n }\\n }\\n\\n .labels {\\n position: absolute;\\n text-align: right;\\n right: size-variable-sp(20px);\\n top: 71%;\\n\\n &:after {\\n content: '';\\n background-image: url(/assets/img/common/arrow_right2.svg);\\n display: block;\\n position: absolute;\\n width: 12px;\\n height: 10px;\\n right: 0;\\n margin-top: size-variable-sp(8);\\n }\\n\\n span {\\n font-weight: 600;\\n }\\n\\n span.span_chunk {\\n display: block;\\n font-weight: 600;\\n }\\n\\n .label_common {\\n color: $KEY_COLOR1;\\n letter-spacing: -0.01em;\\n font-size: size-variable-sp(10);\\n }\\n\\n .label {\\n display: block;\\n font-size: size-variable-sp(14);\\n letter-spacing: -0.01em;\\n line-height: 1.2;\\n margin-top: size-variable-sp(3);\\n }\\n }\\n }\\n\\n footer {\\n margin-top: size-variable-sp(2);\\n padding-bottom: size-variable-sp(18);\\n width: 100vw;\\n overflow: hidden;\\n\\n &:before {\\n content: '';\\n background: #1f2933;\\n opacity: 0.16;\\n width: 90vw;\\n height: 1px;\\n display: block;\\n margin: 0 auto;\\n }\\n\\n .newsletter {\\n border-radius: size-variable-sp(12px);\\n margin: 0 auto;\\n width: 90vw;\\n margin-top: size-variable-sp(31);\\n\\n .newsletter_child {\\n display: flex;\\n align-items: center;\\n }\\n\\n .tit {\\n font-size: size-variable-sp(11);\\n font-weight: 600;\\n letter-spacing: 0.06em;\\n margin-left: size-variable-sp(14);\\n }\\n\\n &#mc_embed_signup {\\n form {\\n padding: 0;\\n text-align: left;\\n position: relative;\\n margin-top: 16px;\\n }\\n\\n #mc_embed_signup_scroll {\\n display: flex;\\n }\\n\\n input.email {\\n position: relative;\\n margin-left: size-variable-sp(9);\\n margin-right: size-variable-sp(10);\\n top: size-variable-sp(-6);\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n border: none;\\n background: none;\\n font-family: inherit;\\n font-size: size-variable-sp(12);\\n letter-spacing: -0.01em;\\n width: size-variable-sp(422);\\n\\n /*以下からMailchimpのためのスタイリング調整*/\\n border-radius: initial;\\n box-sizing: initial;\\n vertical-align: initial;\\n height: auto;\\n display: initial;\\n padding: 1px 2px;\\n }\\n\\n input.email::placeholder {\\n //color: #fff;\\n opacity: 0.5;\\n }\\n\\n input.button {\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n border: none;\\n background: none;\\n font-family: inherit;\\n font-weight: 500;\\n font-size: 1.6rem;\\n opacity: 1;\\n cursor: pointer;\\n padding: 0;\\n position: relative;\\n top: -2px;\\n letter-spacing: 0.1em;\\n background-image: url(/assets/img/common/arrow_right2.svg);\\n background-repeat: no-repeat;\\n width: 12px;\\n height: 10px;\\n\\n /*以下からMailchimpのためのスタイリング調整*/\\n line-height: normal;\\n }\\n }\\n }\\n\\n .sub {\\n .social {\\n position: relative;\\n left: size-variable-sp(21);\\n margin-top: size-variable-sp(22);\\n li {\\n margin-right: size-variable-sp(20);\\n }\\n }\\n\\n .others {\\n position: relative;\\n font-size: size-variable-sp(10);\\n font-weight: 400;\\n left: size-variable-sp(21);\\n margin-top: size-variable-sp(12);\\n letter-spacing: -0.01em;\\n\\n li {\\n margin-right: size-variable-sp(12);\\n }\\n }\\n }\\n\\n .cp {\\n position: absolute;\\n background: linear-gradient(270deg, #214772 0%, #3098a6 100%);\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n background-clip: text;\\n text-fill-color: transparent;\\n margin-top: size-variable-sp(-20);\\n right: size-variable-sp(18);\\n font-size: size-variable-sp(10);\\n letter-spacing: 0.02em;\\n font-weight: 600;\\n }\\n }\\n\\n // banner mixin\\n .banner {\\n display: block;\\n background-repeat: no-repeat, repeat;\\n background-position: top right, top left;\\n background-size: contain, auto;\\n background-image: url(/assets/img/common/bg_banner_sp.png),\\n url(/assets/img/common/bg_pc.svg);\\n color: $BASE_COLOR1;\\n border-radius: size-variable-sp(16);\\n padding-left: size-variable-sp(30);\\n padding-right: size-variable-sp(30);\\n\\n &__content {\\n display: flex;\\n justify-content: space-between;\\n align-items: flex-end;\\n padding-bottom: size-variable-sp(30);\\n }\\n\\n h2 {\\n font-size: size-variable-sp(36);\\n padding-top: size-variable-sp(316);\\n width: size-variable-sp(200);\\n line-height: 1.1;\\n }\\n p {\\n font-size: size-variable-sp(12);\\n padding-top: size-variable-sp(20);\\n width: size-variable-sp(190);\\n line-height: 1.3;\\n\\n &.ja {\\n line-height: 1.75;\\n }\\n }\\n .btn {\\n position: relative;\\n display: flex;\\n align-items: center;\\n font-weight: 600;\\n letter-spacing: -0.01em;\\n color: $BASE_COLOR1;\\n &::before {\\n content: '';\\n display: block;\\n background-size: cover;\\n top: 0;\\n left: 0;\\n\\n background-image: url(/assets/img/common/icon-link2.svg);\\n background-size: 99.9%;\\n background-repeat: no-repeat;\\n width: size-variable-sp(48);\\n height: size-variable-sp(48);\\n }\\n span {\\n display: none;\\n }\\n }\\n }\\n}\\n\",\"$easeInSine: cubic-bezier(0.47, 0, 0.745, 0.715);\\n$easeOutSine: cubic-bezier(0.39, 0.575, 0.565, 1);\\n$easeInOutSine: cubic-bezier(0.445, 0.05, 0.55, 0.95);\\n$easeInQuad: cubic-bezier(0.55, 0.085, 0.68, 0.53);\\n$easeOutQuad: cubic-bezier(0.25, 0.46, 0.45, 0.94);\\n$easeInOutQuad: cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n\\n$easeInCubic: cubic-bezier(0.55, 0.055, 0.675, 0.19);\\n$easeOutCubic: cubic-bezier(0.215, 0.61, 0.355, 1);\\n$easeInOutCubic: cubic-bezier(0.645, 0.045, 0.355, 1);\\n$easeInQuart: cubic-bezier(0.895, 0.03, 0.685, 0.22);\\n$easeOutQuart: cubic-bezier(0.165, 0.84, 0.44, 1);\\n$easeInOutQuart: cubic-bezier(0.77, 0, 0.175, 1);\\n\\n$easeInQuint: cubic-bezier(0.755, 0.05, 0.855, 0.06);\\n$easeOutQuint: cubic-bezier(0.23, 1, 0.32, 1);\\n$easeInOutQuint: cubic-bezier(0.86, 0, 0.07, 1);\\n$easeInExpo: cubic-bezier(0.95, 0.05, 0.795, 0.035);\\n$easeOutExpo: cubic-bezier(0.19, 1, 0.22, 1);\\n$easeInOutExpo: cubic-bezier(1, 0, 0, 1);\\n\\n$easeInCirc: cubic-bezier(0.6, 0.04, 0.98, 0.335);\\n$easeOutCirc: cubic-bezier(0.075, 0.82, 0.165, 1);\\n$easeInOutCirc: cubic-bezier(0.785, 0.135, 0.15, 0.86);\\n$easeInBack: cubic-bezier(0.6, -0.28, 0.735, 0.045);\\n$easeOutBack: cubic-bezier(0.175, 0.885, 0.32, 1.275);\\n$easeInOutBack: cubic-bezier(0.68, -0.55, 0.265, 1.55);\\n\\n$pi: 3.1415926536;\\n$PC_BASE_W: 1440;\\n$SP_BASE_W: 375;\\n\\n$BP: 768;\\n\\n$BASE_COLOR1: #171C21;\\n$BASE_COLOR2: #213143;\\n$KEY_COLOR1: #3098A6;\\n$SUB_COLOR1: #5CB4C0;\\n$SUB_COLOR2: #BDC1C6;\\n$BG_COLOR: #FBFBFB;\\n$BG_COLOR_ALPHA0: #FBFBFB00;\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"main.contact .section1 h1{line-height:1}main.contact .section1 h1.show span.item{-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-iteration-count:4;animation-iteration-count:4;transform:rotate3d(1, 1, 1, 0)}main.contact .section1 h1 .sub_tit{color:#5cb4c0}main.contact .section1 h1 .sub_tit span{transition:opacity 300ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}main.contact .section1 h1 .sub_tit span:nth-of-type(1){transition-delay:0.11s}main.contact .section1 h1 .sub_tit span:nth-of-type(2){transition-delay:0.12s}main.contact .section1 h1 .sub_tit span:nth-of-type(3){transition-delay:0.13s}main.contact .section1 h1 .sub_tit span:nth-of-type(4){transition-delay:0.14s}main.contact .section1 h1 .sub_tit span:nth-of-type(5){transition-delay:0.15s}main.contact .section1 h1 .sub_tit span:nth-of-type(6){transition-delay:0.16s}main.contact .section1 h1 .sub_tit span:nth-of-type(7){transition-delay:0.17s}main.contact .section1 h1 .sub_tit span:nth-of-type(8){transition-delay:0.18s}main.contact .section1 h1 .sub_tit span:nth-of-type(9){transition-delay:0.19s}main.contact .section1 h1 .sub_tit span:nth-of-type(10){transition-delay:0.2s}main.contact .section1 h1 .sub_tit span:nth-of-type(11){transition-delay:0.21s}main.contact .section1 h1 .sub_tit span:nth-of-type(12){transition-delay:0.22s}main.contact .section1 h1 .sub_tit span:nth-of-type(13){transition-delay:0.23s}main.contact .section1 h1 .sub_tit span:nth-of-type(14){transition-delay:0.24s}main.contact .section1 h1 .sub_tit span:nth-of-type(15){transition-delay:0.25s}main.contact .section1 h1 .sub_tit span:nth-of-type(16){transition-delay:0.26s}main.contact .section1 h1 .sub_tit span:nth-of-type(17){transition-delay:0.27s}main.contact .section1 h1 .sub_tit span:nth-of-type(18){transition-delay:0.28s}main.contact .section1 h1 .sub_tit span:nth-of-type(19){transition-delay:0.29s}main.contact .section1 h1 .sub_tit span:nth-of-type(20){transition-delay:0.3s}main.contact .section1 h1 .sub_tit span:nth-of-type(21){transition-delay:0.31s}main.contact .section1 h1 .sub_tit span:nth-of-type(22){transition-delay:0.32s}main.contact .section1 h1 .sub_tit span:nth-of-type(23){transition-delay:0.33s}main.contact .section1 h1 .sub_tit span:nth-of-type(24){transition-delay:0.34s}main.contact .section1 h1 .sub_tit span:nth-of-type(25){transition-delay:0.35s}main.contact .section1 h1 .sub_tit span:nth-of-type(26){transition-delay:0.36s}main.contact .section1 h1 .sub_tit span:nth-of-type(27){transition-delay:0.37s}main.contact .section1 h1 .sub_tit span:nth-of-type(28){transition-delay:0.38s}main.contact .section1 h1 .sub_tit span:nth-of-type(29){transition-delay:0.39s}main.contact .section1 h1 .sub_tit span:nth-of-type(30){transition-delay:0.4s}main.contact .section1 h1 .sub_tit span:nth-of-type(31){transition-delay:0.41s}main.contact .section1 h1 .sub_tit span:nth-of-type(32){transition-delay:0.42s}main.contact .section1 h1 span.span_chunk{display:flex;perspective:300px}main.contact .section1 h1 span.item{white-space:nowrap;will-change:transform;transform:rotate3d(1, 0, 0, 180deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform 500ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}main.contact .section1 h1 span.item:nth-of-type(1){transition-delay:0.01s}main.contact .section1 h1 span.item:nth-of-type(2){transition-delay:0.17s}main.contact .section1 h1 span.item:nth-of-type(3){transition-delay:0.0975s}main.contact .section1 h1 span.item:nth-of-type(4){transition-delay:0.06s}main.contact .section1 h1 span.item:nth-of-type(5){transition-delay:0.1125s}main.contact .section1 h1 span.item:nth-of-type(6){transition-delay:0.25s}main.contact .section1 h1 span.item:nth-of-type(7){transition-delay:0.0925s}main.contact .section1 h1 span.item:nth-of-type(8){transition-delay:0.0975s}main.contact .section1 h1 span.item:nth-of-type(9){transition-delay:0.14s}main.contact .section1 h1 span.item:nth-of-type(10){transition-delay:0.1575s}main.contact .section1 h1 span.item:nth-of-type(11){transition-delay:0.06s}main.contact .section1 h1 span.item:nth-of-type(12){transition-delay:0.0625s}main.contact .section1 h1 span.item:nth-of-type(13){transition-delay:0.135s}main.contact .section1 h1 span.item:nth-of-type(14){transition-delay:0.0125s}main.contact .section1 h1 span.item:nth-of-type(15){transition-delay:0.0675s}main.contact .section1 h1 span.item:nth-of-type(16){transition-delay:0.1975s}main.contact .section1 h1 span.item:nth-of-type(17){transition-delay:0.16s}main.contact .section1 h1 span.item:nth-of-type(18){transition-delay:0.1375s}main.contact .section1 h1 span.item:nth-of-type(19){transition-delay:0.2375s}main.contact .section1 h1 span.item:nth-of-type(20){transition-delay:0.14s}main.contact .section1 h1 span.item:nth-of-type(21){transition-delay:0.01s}main.contact .section1 h1 span.item:nth-of-type(22){transition-delay:0.235s}main.contact .section1 h1 span.item:nth-of-type(23){transition-delay:0.2175s}main.contact .section1 h1 span.item:nth-of-type(24){transition-delay:0.015s}main.contact .section1 h1 span.item:nth-of-type(25){transition-delay:0.155s}main.contact .section1 h1 span.item:nth-of-type(26){transition-delay:0.06s}main.contact .section1 h1 span.item:nth-of-type(27){transition-delay:0.235s}main.contact .section1 h1 span.item:nth-of-type(28){transition-delay:0.16s}main.contact .section1 h1 span.item:nth-of-type(29){transition-delay:0.1325s}main.contact .section1 h1 span.item:nth-of-type(30){transition-delay:0.07s}main.contact .section1.confirm .head .message,main.contact .section1.confirm .head .required_message{display:none}main.contact .section1.confirm .contents_input{display:none}main.contact .section1.confirm .contents_confirm{display:block}main.contact .section1.confirm .contents_thanks{display:none}main.contact .section1.thanks .head{display:none}main.contact .section1.thanks .contents_input{display:none}main.contact .section1.thanks .contents_confirm{display:none}main.contact .section1.thanks .contents_thanks{display:block}main.contact .section1 .contents_input ul li.required .tit:after{content:\\\"*\\\";color:#e77171}main.contact .section1 .contents_input ul li .tit{color:#5cb4c0}main.contact .section1 .contents_input ul li input:-webkit-autofill,main.contact .section1 .contents_input ul li textarea:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px #f0f4ff inset;-webkit-text-fill-color:#BASE_COLOR2 !important}main.contact .section1 .contents_input ul li button,main.contact .section1 .contents_input ul li input,main.contact .section1 .contents_input ul li select,main.contact .section1 .contents_input ul li textarea{font-family:inherit}main.contact .section1 .contents_input ul li textarea{resize:none}main.contact .section1 .contents_confirm{display:none}main.contact .section1 .contents_thanks{display:none}main.contact .section1 .contents_thanks h2 .sub_tit{color:#5cb4c0}main.contact .section2.confirm{display:none}main.contact .section2.thanks{display:none !important}main.contact .section2 .contacts a,main.contact .section2 .contacts a:visited{text-decoration:underline}@media screen and (min-width: 768px){main.contact .section1{margin-bottom:6.2222222222rem}main.contact .section1 .section_child{display:flex}main.contact .section1 .head{position:relative;margin-top:31.5555555556rem;top:0;margin-left:13.3333333333rem}main.contact .section1 .head h1 .sub_tit{font-size:1.5555555556rem;letter-spacing:-0.01em;position:absolute;line-height:1;display:block}main.contact .section1 .head h1 .tit{font-size:11.1111111111rem;padding-top:5.2222222222rem;letter-spacing:-0.02em;line-height:1.2;display:block}main.contact .section1 .head h1 .tit span.item.space{width:2.1111111111rem}main.contact .section1 .head h1 .tit .sp{display:none !important}main.contact .section1 .head .message{font-size:2rem;margin-top:5rem;letter-spacing:-0.01em;line-height:1.3;width:35.5555555556rem}main.contact .section1 .head .required_message{font-size:1.5555555556rem;line-height:1.3;margin-top:1.6666666667rem;letter-spacing:-0.01em}main.contact .section1 .head .required_message .red{position:relative;top:.1111111111rem;color:#e77171;margin-right:.3333333333rem}main.contact .section1 .head .offices{margin-top:12rem;margin-bottom:42.7777777778rem}main.contact .section1 .head .offices li{margin-top:5.3333333333rem}main.contact .section1 .head .offices li .tit{font-size:1.5555555556rem;font-weight:550;letter-spacing:-0.01em}main.contact .section1 .head .offices li .txt{font-size:1.5555555556rem;margin-top:1.2222222222rem;line-height:1.3;letter-spacing:-0.01em;width:31.1111111111rem}main.contact .section1 .head .offices li .tel,main.contact .section1 .head .offices li .mail{font-size:1.5555555556rem;line-height:1.3;letter-spacing:-0.01em;width:31.1111111111rem}main.contact .section1 .head .offices li .tel .he,main.contact .section1 .head .offices li .mail .he{width:4.2222222222rem;display:inline-block}main.contact .section1 .head .offices li .tel{margin-top:1.1111111111rem}main.contact .section1 .contents{margin-left:5rem;width:71.1111111111rem;margin-top:55.1111111111rem;font-size:1.7777777778rem;line-height:1.5}main.contact .section1 .contents .bt{width:100%;background:linear-gradient(225.93deg, #073a86 0%, #2d849a 101.67%);border-radius:1.1111111111rem;color:#fff;text-align:center;font-size:1.3333333333rem;font-weight:600;padding:1.8888888889rem 0;letter-spacing:-0.01em;cursor:pointer;position:relative}main.contact .section1 .contents .bt:hover span.item:nth-of-type(1){-webkit-animation:common_blink .13s linear 0.1008s;animation:common_blink .13s linear 0.1008s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(2){-webkit-animation:common_blink .13s linear 0.04815s;animation:common_blink .13s linear 0.04815s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(3){-webkit-animation:common_blink .13s linear 0.1479s;animation:common_blink .13s linear 0.1479s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(4){-webkit-animation:common_blink .13s linear 0.0747s;animation:common_blink .13s linear 0.0747s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(5){-webkit-animation:common_blink .13s linear 0.0723s;animation:common_blink .13s linear 0.0723s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(6){-webkit-animation:common_blink .13s linear 0.1074s;animation:common_blink .13s linear 0.1074s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(7){-webkit-animation:common_blink .13s linear 0.0147s;animation:common_blink .13s linear 0.0147s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(8){-webkit-animation:common_blink .13s linear 0.0372s;animation:common_blink .13s linear 0.0372s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(9){-webkit-animation:common_blink .13s linear 0.0669s;animation:common_blink .13s linear 0.0669s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(10){-webkit-animation:common_blink .13s linear 0.01215s;animation:common_blink .13s linear 0.01215s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(11){-webkit-animation:common_blink .13s linear 0.05235s;animation:common_blink .13s linear 0.05235s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(12){-webkit-animation:common_blink .13s linear 0.135s;animation:common_blink .13s linear 0.135s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(13){-webkit-animation:common_blink .13s linear 0.08055s;animation:common_blink .13s linear 0.08055s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(14){-webkit-animation:common_blink .13s linear 0.1026s;animation:common_blink .13s linear 0.1026s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(15){-webkit-animation:common_blink .13s linear 0.00165s;animation:common_blink .13s linear 0.00165s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(16){-webkit-animation:common_blink .13s linear 0.03525s;animation:common_blink .13s linear 0.03525s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(17){-webkit-animation:common_blink .13s linear 0.10965s;animation:common_blink .13s linear 0.10965s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(18){-webkit-animation:common_blink .13s linear 0.0114s;animation:common_blink .13s linear 0.0114s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(19){-webkit-animation:common_blink .13s linear 0.10275s;animation:common_blink .13s linear 0.10275s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(20){-webkit-animation:common_blink .13s linear 0.12795s;animation:common_blink .13s linear 0.12795s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(21){-webkit-animation:common_blink .13s linear 0.06555s;animation:common_blink .13s linear 0.06555s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(22){-webkit-animation:common_blink .13s linear 0.0603s;animation:common_blink .13s linear 0.0603s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(23){-webkit-animation:common_blink .13s linear 0.02175s;animation:common_blink .13s linear 0.02175s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(24){-webkit-animation:common_blink .13s linear 0.06615s;animation:common_blink .13s linear 0.06615s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(25){-webkit-animation:common_blink .13s linear 0.13575s;animation:common_blink .13s linear 0.13575s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(26){-webkit-animation:common_blink .13s linear 0.07365s;animation:common_blink .13s linear 0.07365s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(27){-webkit-animation:common_blink .13s linear 0.1026s;animation:common_blink .13s linear 0.1026s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(28){-webkit-animation:common_blink .13s linear 0.1452s;animation:common_blink .13s linear 0.1452s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(29){-webkit-animation:common_blink .13s linear 0.0036s;animation:common_blink .13s linear 0.0036s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:hover span.item:nth-of-type(30){-webkit-animation:common_blink .13s linear 0.1236s;animation:common_blink .13s linear 0.1236s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents .bt:after{content:\\\"\\\";background-image:url(/assets/img/common/arrow_right.svg);position:absolute;background-size:cover;width:2.2222222222rem;height:2.2222222222rem;display:inline-block;right:1.3333333333rem;top:50%;transform:translate3d(0, -50%, 0)}main.contact .section1 .contents_input ul{width:71.1111111111rem}main.contact .section1 .contents_input ul li.item{margin-bottom:6.6666666667rem}main.contact .section1 .contents_input ul li.item:nth-of-type(1),main.contact .section1 .contents_input ul li.item:nth-of-type(3){margin-right:6%}main.contact .section1 .contents_input ul li.item:nth-of-type(1),main.contact .section1 .contents_input ul li.item:nth-of-type(2),main.contact .section1 .contents_input ul li.item:nth-of-type(3),main.contact .section1 .contents_input ul li.item:nth-of-type(4){width:47%;display:inline-block}main.contact .section1 .contents_input ul li.item .tit{font-size:2rem;letter-spacing:-0.01em;line-height:1.3;margin-left:2.2222222222rem;position:absolute;pointer-events:none;transform-origin:left top;transition:transform 350ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}main.contact .section1 .contents_input ul li.item .tit.small{transform:scale(0.7) translate3d(0, -3.7777777778rem, 0)}main.contact .section1 .contents_input ul li.item input,main.contact .section1 .contents_input ul li.item textarea{width:100%;border:none;background-color:rgba(0,0,0,0);font-size:2rem;line-height:1.3;padding-left:0;margin-left:2.2222222222rem;letter-spacing:-0.01em}main.contact .section1 .contents_input ul li.item textarea{margin-top:-.2222222222rem;height:5.1em}main.contact .section1 .contents_input ul li.item .message{font-size:1.3333333333rem;color:#cf0000;font-weight:500}main.contact .section1 .contents_input ul li.item .message:before{content:\\\"\\\";display:block;width:100%;height:1px;background-color:#bdc1c6;margin-top:1.2222222222rem}main.contact .section1 .contents_input ul li.item .message label{display:none;font-size:1.3333333333rem;line-height:1;letter-spacing:-0.01em;margin-top:.7777777778rem;margin-left:1.7777777778rem}main.contact .section1 .contents_input ul li.item.check_raw{margin-bottom:5.7777777778rem;font-size:1.5555555556rem;width:68.7%;display:inline-block}main.contact .section1 .contents_input ul li.item.check_raw .field{display:flex;margin-bottom:.6666666667rem}main.contact .section1 .contents_input ul li.item.check_raw .field:after{display:none}main.contact .section1 .contents_input ul li.item.check_raw .message:before{display:none}main.contact .section1 .contents_input ul li.item.check_raw input{position:relative;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:2.2222222222rem;height:2.2222222222rem;border:1px solid #bdc1c6;background-color:#f0f4ff;padding:0;margin-left:0rem;margin-right:.8888888889rem;cursor:pointer;border-radius:.4444444444rem;top:-.3333333333rem}main.contact .section1 .contents_input ul li.item.check_raw input:checked{border:none;background:linear-gradient(225.93deg, #073a86 0%, #2d849a 101.67%)}main.contact .section1 .contents_input ul li.item.check_raw input+label{position:relative;left:-2.3333333333rem;top:.4444444444rem}main.contact .section1 .contents_input ul li.item.check_raw input+label:before{content:\\\"\\\";display:block;pointer-events:none}main.contact .section1 .contents_input ul li.item.check_raw input:checked+label:after{content:\\\"\\\";display:block;position:absolute;top:0px;left:0px;width:.3333333333rem;height:1rem;transform:rotate(46deg);border-bottom:.2222222222rem solid #fff;border-right:.2222222222rem solid #fff}main.contact .section1 .contents_input ul li.item.check_raw .txt{letter-spacing:-0.01em}main.contact .section1 .contents_input ul li.item.check_raw .txt a{text-decoration:underline}main.contact .section1 .contents_input ul li.item.check_raw .txt a:hover{-webkit-animation:common_blink .075s linear;animation:common_blink .075s linear;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section1 .contents_input ul li.item.btn_raw{width:31.3%;display:inline-block;vertical-align:top}main.contact .section1 .contents_input ul li.item.error .message:before{background-color:#cf0000}main.contact .section1 .contents_input ul li.item.error .message label{display:block}main.contact .section1 .contents_confirm{margin-bottom:18rem}main.contact .section1 .contents_confirm ul li.item{display:flex;align-items:baseline;margin-bottom:3.7777777778rem;padding-bottom:3.3333333333rem;border-bottom:1px solid #bdc1c6}main.contact .section1 .contents_confirm ul li.item .tit{font-size:2rem;color:#3098a6;width:31.2%;font-weight:500;line-height:1.3;letter-spacing:-0.01em}main.contact .section1 .contents_confirm ul li.item .user_data{font-size:2rem;width:68.8%;font-weight:400;line-height:1.3;letter-spacing:-0.01em}main.contact .section1 .contents_confirm ul li.item.check_raw{margin-bottom:7.1111111111rem}main.contact .section1 .contents_confirm ul li.item.btn_raw{border:none;display:flex;margin-top:-.4444444444rem;justify-content:space-between}main.contact .section1 .contents_confirm .bt{width:200px}main.contact .section1 .contents_confirm .back_bt{background:#e4e9f5;color:#213143}main.contact .section1 .contents_confirm .back_bt:after{content:none}main.contact .section1 .contents_thanks{width:100vw;margin-left:13.3333333333rem;margin-top:31.6666666667rem;margin-bottom:21.3333333333rem}main.contact .section1 .contents_thanks h2 .sub_tit{font-size:1.5555555556rem;letter-spacing:-0.01em;position:absolute;line-height:1;display:block}main.contact .section1 .contents_thanks h2 .tit{font-size:11.1111111111rem;padding-top:6.6666666667rem;letter-spacing:-0.02em;line-height:.9;display:block}main.contact .section1 .contents_thanks h2 .tit span.item.space{width:1.6666666667rem}main.contact .section1 .contents_thanks h2 .tit .sp{display:none !important}main.contact .section1 .contents_thanks .message{position:relative;line-height:1.3;font-size:2rem;margin-top:6.8888888889rem;letter-spacing:-0.01em}main.contact .section1 .contents_thanks .btn{margin-top:3.3333333333rem}main.contact .section1 .contents_thanks .btn a:before{background-image:url(/assets/img/common/icon-link2.svg)}main.contact .section2{margin-left:41.7vw;margin-top:-17.7777777778rem;width:71.1111111111rem;margin-bottom:27.2222222222rem;border-top:1px solid #e1e4e5}main.contact .section2 .chunk{display:flex}main.contact .section2 .contacts{width:100%}main.contact .section2 .contacts li{margin-top:5rem;padding-bottom:4.4444444444rem;display:flex;border-bottom:1px solid #e1e4e5}main.contact .section2 .contacts li:last-of-type{margin-bottom:0}main.contact .section2 .contacts li .tit{font-size:1.5555555556rem;font-weight:600;line-height:1;letter-spacing:-0.01em;width:31.2%}main.contact .section2 .contacts li .address{font-size:1.5555555556rem;line-height:1.3;letter-spacing:-0.01em;position:relative;top:-.2222222222rem;width:51.2%}main.contact .section2 .contacts li .copy{font-size:1.5555555556rem;line-height:1.3;letter-spacing:-0.01em;background:linear-gradient(225.93deg, #073a86 0%, #2d849a 101.67%);-webkit-background-clip:text;-webkit-text-fill-color:rgba(0,0,0,0);background-clip:text;text-fill-color:rgba(0,0,0,0);text-align:right;width:17.6%;position:relative;top:-.2222222222rem;cursor:pointer}main.contact .section2 .contacts li a:hover{-webkit-animation:common_blink .1s linear;animation:common_blink .1s linear;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.contact .section2 .offices{display:none}main.contact_ja .section1 .head .message{font-size:1.5555555556rem;line-height:1.75}main.contact_ja .section1 .head .required_message{font-size:1.3333333333rem;line-height:1.75}main.contact_ja .section1 .head .offices .txt.font2{font-size:1.3333333333rem;line-height:1.55}main.contact_ja .section1 .contents_input ul li.item input,main.contact_ja .section1 .contents_input ul li.item textarea{font-size:1.7777777778rem;line-height:1.75}main.contact_ja .section1 .contents_input ul li.item.check_raw .txt{font-size:1.3333333333rem;line-height:1.75}main.contact_ja .section1 .contents_confirm ul li.item .tit.font2{font-size:1.5555555556rem}main.contact_ja .section1 .contents_confirm ul li.item .user_data{font-size:1.7777777778rem;line-height:1.75}}@media screen and (max-width: 767px){main.contact .section1{width:89.5vw;margin:0 auto 42.6666666667rem}main.contact .section1 .head{margin-top:48.64rem}main.contact .section1 .head h1 .sub_tit{font-size:5.12rem;display:block}main.contact .section1 .head h1 .tit{font-size:23.04rem;margin-top:9.8133333333rem;display:block}main.contact .section1 .head h1 span.item.space{width:2.56rem}main.contact .section1 .head .message{font-size:5.9733333333rem;line-height:1.3;font-weight:400;margin-top:25.6rem;letter-spacing:-0.01em}main.contact .section1 .head .required_message{font-size:5.12rem;line-height:1.3;margin-top:7.68rem;letter-spacing:-0.01em}main.contact .section1 .head .required_message .red{position:relative;top:.4266666667rem;color:#e77171;margin-right:1.28rem}main.contact .section1 .head .offices{display:none}main.contact .section1 .contents{font-size:5.9733333333rem;line-height:1.5;margin-top:33.28rem}main.contact .section1 .contents .bt{width:100%;background:linear-gradient(225.93deg, #073a86 0%, #2d849a 101.67%);border-radius:4.2666666667rem;color:#fff;text-align:center;font-size:5.12rem;font-weight:600;padding:7.2533333333rem 0;letter-spacing:-0.01em;position:relative}main.contact .section1 .contents .bt:after{content:\\\"\\\";background-image:url(/assets/img/common/arrow_right.svg);position:absolute;background-size:cover;width:8.5333333333rem;height:8.5333333333rem;display:inline-block;right:5.12rem;top:50%;transform:translate3d(0, -50%, 0)}main.contact .section1 .contents_input ul li.item{margin-bottom:20.0533333333rem}main.contact .section1 .contents_input ul li.item .tit{font-size:5.9733333333rem;letter-spacing:-0.01em;line-height:1.3;margin-left:4.6933333333rem;position:absolute;pointer-events:none;transform-origin:left top;transition:transform 350ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}main.contact .section1 .contents_input ul li.item .tit.small{transform:scale(0.7) translate3d(0, -8.5333333333rem, 0)}main.contact .section1 .contents_input ul li.item input,main.contact .section1 .contents_input ul li.item textarea{width:100%;border:none;background-color:rgba(0,0,0,0);font-size:5.9733333333rem;letter-spacing:-0.01em;line-height:1.3;padding-left:0;margin-left:4.6933333333rem}main.contact .section1 .contents_input ul li.item textarea{margin-top:-.4266666667rem;height:8.6em}main.contact .section1 .contents_input ul li.item .message{font-size:5.12rem;color:#cf0000;font-weight:500}main.contact .section1 .contents_input ul li.item .message:before{content:\\\"\\\";display:block;width:100%;height:1px;background-color:#bdc1c6;margin-top:6.8266666667rem}main.contact .section1 .contents_input ul li.item .message label{display:none;font-size:5.12rem;line-height:1;letter-spacing:-0.01em;margin-top:4.2666666667rem;margin-left:4.2666666667rem}main.contact .section1 .contents_input ul li.item.textarea_row{margin-bottom:13.2266666667rem}main.contact .section1 .contents_input ul li.item.check_raw{margin-bottom:9.3866666667rem;font-size:5.12rem}main.contact .section1 .contents_input ul li.item.check_raw .field{display:flex;margin-bottom:4.6933333333rem}main.contact .section1 .contents_input ul li.item.check_raw .message:before{display:none}main.contact .section1 .contents_input ul li.item.check_raw input{position:relative;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:7.68rem;height:7.68rem;border:1px solid #bdc1c6;background-color:#f0f4ff;padding:0;margin-left:0rem;margin-right:2.56rem;cursor:pointer;border-radius:1.7066666667rem;top:-1.28rem}main.contact .section1 .contents_input ul li.item.check_raw input:checked{border:none;background:linear-gradient(225.93deg, #073a86 0%, #2d849a 101.67%)}main.contact .section1 .contents_input ul li.item.check_raw input+label{position:relative;left:-7.2533333333rem;top:1.7066666667rem}main.contact .section1 .contents_input ul li.item.check_raw input+label:before{content:\\\"\\\";display:block;pointer-events:none}main.contact .section1 .contents_input ul li.item.check_raw input:checked+label:after{content:\\\"\\\";display:block;position:absolute;top:0px;left:0px;width:1.0666666667rem;height:2.56rem;transform:rotate(46deg);border-bottom:.64rem solid #fff;border-right:.64rem solid #fff}main.contact .section1 .contents_input ul li.item.check_raw .txt{letter-spacing:-0.01em}main.contact .section1 .contents_input ul li.item.check_raw .txt a{text-decoration:underline}main.contact .section1 .contents_input ul li.item.error .message:before{background-color:#cf0000}main.contact .section1 .contents_input ul li.item.error .message label{display:block}main.contact .section1 .contents_confirm{margin-bottom:-8.5333333333rem}main.contact .section1 .contents_confirm ul li.item{margin-bottom:10.88rem;padding-bottom:9.3866666667rem;border-bottom:1px solid #bdc1c6}main.contact .section1 .contents_confirm ul li.item .tit{font-size:5.9733333333rem;color:#3098a6;line-height:1.3;letter-spacing:-0.01em}main.contact .section1 .contents_confirm ul li.item .user_data{font-size:7.68rem;line-height:1.3;letter-spacing:-0.01em;margin-top:2.9866666667rem}main.contact .section1 .contents_confirm ul li.item.check_raw{margin-bottom:27.3066666667rem}main.contact .section1 .contents_confirm ul li.item.btn_raw{margin-top:-13.6533333333rem;text-align:center;display:flex;flex-direction:column-reverse;border:none}main.contact .section1 .contents_confirm ul li.item.btn_raw .back_bt{background:#e4e9f5;color:#213143;margin-top:4.2666666667rem}main.contact .section1 .contents_confirm ul li.item.btn_raw .back_bt:after{content:none}main.contact .section1 .contents_thanks{margin-top:48.64rem}main.contact .section1 .contents_thanks h2 .sub_tit{font-size:5.12rem;line-height:1;left:-0.01em;display:block}main.contact .section1 .contents_thanks h2 .tit{font-size:23.04rem;margin-top:9.8133333333rem;line-height:1;letter-spacing:-0.02em;display:block}main.contact .section1 .contents_thanks .message{font-size:5.9733333333rem;margin-top:25.6rem;line-height:1.3;letter-spacing:-0.01em}main.contact .section1 .contents_thanks .btn{margin-top:13.6533333333rem}main.contact .section1 .contents_thanks .btn a:before{background-image:url(/assets/img/common/icon-link2.svg)}main.contact .section2{margin-bottom:51.2rem}main.contact .section2.confirm{display:block}main.contact .section2.confirm .offices{display:none}main.contact .section2 .section_child{width:72vw;margin:0 auto}main.contact .section2 h2{font-size:15.36rem;letter-spacing:.03em}main.contact .section2 .chunk{margin-top:20.9066666667rem}main.contact .section2 .contacts{margin-top:26.88rem;border-top:1px solid #e1e4e5}main.contact .section2 .contacts li{padding-top:14.9333333333rem;padding-bottom:13.2266666667rem;border-bottom:1px solid #e1e4e5;position:relative}main.contact .section2 .contacts li .tit{font-size:5.12rem;font-weight:600;letter-spacing:-0.01em;line-height:1}main.contact .section2 .contacts li .address{font-size:5.12rem;letter-spacing:-0.01em;line-height:1.3;margin-top:5.9733333333rem}main.contact .section2 .contacts li .copy{position:absolute;font-size:5.12rem;line-height:1.3;letter-spacing:-0.01em;background:linear-gradient(225.93deg, #073a86 0%, #2d849a 101.67%);-webkit-background-clip:text;-webkit-text-fill-color:rgba(0,0,0,0);background-clip:text;text-fill-color:rgba(0,0,0,0);margin-top:-6.8266666667rem;right:.8533333333rem}main.contact .section2 .offices{margin-top:26.88rem}main.contact .section2 .offices li{margin-bottom:17.92rem}main.contact .section2 .offices li .tit{line-height:1;font-size:5.12rem;font-weight:600}main.contact .section2 .offices li .txt{font-size:5.12rem;line-height:1.3;letter-spacing:-0.01em;margin-top:5.9733333333rem}main.contact .section2 .offices li .tel,main.contact .section2 .offices li .mail{font-size:5.12rem;line-height:1.3;letter-spacing:-0.01em}main.contact .section2 .offices li .tel .he,main.contact .section2 .offices li .mail .he{width:13.6533333333rem;display:inline-block}main.contact .section2 .offices li .tel{margin-top:4.2666666667rem}main.contact_ja .section1 .head .message{font-size:5.12rem;line-height:1.75}main.contact_ja .section1 .head .required_message{font-size:4.2666666667rem;line-height:1.75}main.contact_ja .section1 .contents_input ul li.item input,main.contact_ja .section1 .contents_input ul li.item textarea{font-size:5.12rem;line-height:1.75}main.contact_ja .section1 .contents_input ul li.item.check_raw .txt{font-size:4.2666666667rem;line-height:1.75}main.contact_ja .section1 .contents_confirm ul li.item .tit.font2{font-size:5.12rem}main.contact_ja .section1 .contents_confirm ul li.item .user_data{font-size:5.9733333333rem;line-height:1.75}main.contact_ja .section2 .offices .txt.font2{font-size:4.2666666667rem;line-height:1.5}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/scss/contact.scss\",\"webpack://./src/scss/_variable.scss\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"@import 'variable';\\n@import 'mixin';\\n\\n/*\\nz-index\\n\\n*/\\n\\n//For COMMON LAYOUT\\nmain.contact {\\n .section1 {\\n h1 {\\n line-height: 1;\\n\\n &.show {\\n span.item {\\n animation-name: common_blink;\\n animation-duration: 0.1s;\\n animation-timing-function: linear;\\n animation-iteration-count: 4;\\n transform: rotate3d(1, 1, 1, 0);\\n }\\n }\\n\\n .sub_tit {\\n color: $SUB_COLOR1;\\n span {\\n //opacity: 0;\\n transition: opacity 300ms;\\n transition-timing-function: $easeOutQuart;\\n\\n @for $i from 1 through 32 {\\n &:nth-of-type(#{$i}) {\\n transition-delay: 0.1 + 0.01 * $i + s;\\n }\\n }\\n }\\n }\\n\\n span.span_chunk {\\n display: flex;\\n perspective: 300px;\\n }\\n\\n span.item {\\n white-space: nowrap;\\n will-change: transform;\\n transform: rotate3d(1, 0, 0, 180deg);\\n backface-visibility: hidden;\\n transition: transform 500ms;\\n transition-timing-function: $easeOutQuart;\\n\\n @for $i from 1 through 30 {\\n &:nth-of-type(#{$i}) {\\n $rand: random(100) * 0.0025;\\n transition-delay: $rand + s;\\n }\\n }\\n }\\n }\\n\\n &.confirm {\\n .head {\\n .message,\\n .required_message {\\n display: none;\\n }\\n }\\n\\n .contents_input {\\n display: none;\\n }\\n\\n .contents_confirm {\\n display: block;\\n }\\n\\n .contents_thanks {\\n display: none;\\n }\\n }\\n\\n &.thanks {\\n .head {\\n display: none;\\n }\\n\\n .contents_input {\\n display: none;\\n }\\n\\n .contents_confirm {\\n display: none;\\n }\\n\\n .contents_thanks {\\n display: block;\\n }\\n }\\n\\n .contents_input {\\n ul {\\n li {\\n &.required {\\n .tit {\\n &:after {\\n content: '*';\\n color: #e77171;\\n }\\n }\\n }\\n\\n .tit {\\n color: $SUB_COLOR1;\\n }\\n\\n //Chrome オートコンプリート時のスタイルを回避ここから\\n input:-webkit-autofill,\\n textarea:-webkit-autofill {\\n -webkit-box-shadow: 0 0 0 1000px #f0f4ff inset;\\n -webkit-text-fill-color: #BASE_COLOR2 !important;\\n }\\n //Chrome オートコンプリート時のスタイルを回避ここまで\\n\\n button,\\n input,\\n select,\\n textarea {\\n font-family: inherit;\\n }\\n\\n textarea {\\n resize: none;\\n }\\n }\\n }\\n }\\n\\n .contents_confirm {\\n display: none;\\n }\\n\\n .contents_thanks {\\n display: none;\\n h2 {\\n .sub_tit {\\n color: $SUB_COLOR1;\\n }\\n }\\n }\\n }\\n\\n .section2 {\\n &.confirm {\\n display: none;\\n }\\n\\n &.thanks {\\n display: none !important;\\n }\\n\\n .contacts {\\n a,\\n a:visited {\\n text-decoration: underline;\\n }\\n }\\n }\\n}\\n\\n//For PC LAYOUT\\n@media screen and (min-width: $BP + px) {\\n main.contact {\\n .section1 {\\n margin-bottom: size-variable-pc(56);\\n\\n .section_child {\\n display: flex;\\n }\\n\\n .head {\\n position: relative;\\n margin-top: size-variable-pc(284);\\n top: 0;\\n margin-left: size-variable-pc(120);\\n\\n h1 {\\n .sub_tit {\\n font-size: size-variable-pc(14);\\n letter-spacing: -0.01em;\\n position: absolute;\\n line-height: 1;\\n display: block;\\n }\\n\\n .tit {\\n font-size: size-variable-pc(100);\\n padding-top: size-variable-pc(47);\\n letter-spacing: -0.02em;\\n line-height: 1.2;\\n display: block;\\n span.item.space {\\n width: size-variable-pc(19);\\n }\\n\\n .sp {\\n display: none !important;\\n }\\n }\\n }\\n\\n .message {\\n font-size: size-variable-pc(18);\\n margin-top: size-variable-pc(45);\\n letter-spacing: -0.01em;\\n line-height: 1.3;\\n width: size-variable-pc(320);\\n }\\n\\n .required_message {\\n font-size: size-variable-pc(14);\\n line-height: 1.3;\\n margin-top: size-variable-pc(15);\\n letter-spacing: -0.01em;\\n .red {\\n position: relative;\\n top: size-variable-pc(1);\\n color: #e77171;\\n margin-right: size-variable-pc(3);\\n }\\n }\\n\\n .offices {\\n margin-top: size-variable-pc(108);\\n margin-bottom: size-variable-pc(385);\\n li {\\n margin-top: size-variable-pc(48);\\n\\n .tit {\\n font-size: size-variable-pc(14);\\n font-weight: 550;\\n letter-spacing: -0.01em;\\n }\\n\\n .txt {\\n font-size: size-variable-pc(14);\\n margin-top: size-variable-pc(11);\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n width: size-variable-pc(280);\\n }\\n\\n .tel,\\n .mail {\\n font-size: size-variable-pc(14);\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n width: size-variable-pc(280);\\n .he {\\n width: size-variable-pc(38);\\n display: inline-block;\\n }\\n }\\n\\n .tel {\\n margin-top: size-variable-pc(10);\\n }\\n\\n .mail {\\n }\\n }\\n }\\n }\\n\\n .contents {\\n margin-left: size-variable-pc(45);\\n width: size-variable-pc(640);\\n margin-top: size-variable-pc(496);\\n font-size: size-variable-pc(16);\\n line-height: 1.5;\\n\\n .bt {\\n width: 100%;\\n background: linear-gradient(\\n 225.93deg,\\n #073a86 0%,\\n #2d849a 101.67%\\n );\\n border-radius: size-variable-pc(10);\\n color: #fff;\\n text-align: center;\\n font-size: size-variable-pc(12);\\n font-weight: 600;\\n padding: size-variable-pc(17) 0;\\n letter-spacing: -0.01em;\\n cursor: pointer;\\n position: relative;\\n\\n &:hover {\\n span.item {\\n @for $i from 1 through 30 {\\n &:nth-of-type(#{$i}) {\\n $rand: random(1000) * 0.00015;\\n animation: common_blink\\n 0.13s\\n linear\\n $rand +\\n s;\\n animation-iteration-count: 2;\\n }\\n }\\n }\\n }\\n\\n &:after {\\n content: '';\\n background-image: url(/assets/img/common/arrow_right.svg);\\n position: absolute;\\n background-size: cover;\\n width: size-variable-pc(20);\\n height: size-variable-pc(20);\\n display: inline-block;\\n right: size-variable-pc(12);\\n top: 50%;\\n transform: translate3d(0, -50%, 0);\\n }\\n }\\n }\\n\\n .contents_input {\\n ul {\\n width: size-variable-pc(640);\\n\\n li.item {\\n margin-bottom: size-variable-pc(60);\\n\\n &:nth-of-type(1),\\n &:nth-of-type(3) {\\n margin-right: 6%;\\n }\\n\\n &:nth-of-type(1),\\n &:nth-of-type(2),\\n &:nth-of-type(3),\\n &:nth-of-type(4) {\\n width: 47%;\\n display: inline-block;\\n }\\n\\n .tit {\\n font-size: size-variable-pc(18);\\n letter-spacing: -0.01em;\\n line-height: 1.3;\\n margin-left: size-variable-pc(20);\\n position: absolute;\\n pointer-events: none;\\n transform-origin: left top;\\n transition: transform 350ms;\\n transition-timing-function: $easeOutQuart;\\n\\n &.small {\\n transform: scale(0.7)\\n translate3d(0, size-variable-pc(-34), 0);\\n }\\n }\\n\\n input,\\n textarea {\\n width: 100%;\\n border: none;\\n background-color: transparent;\\n font-size: size-variable-pc(18);\\n line-height: 1.3;\\n padding-left: 0;\\n margin-left: size-variable-pc(20);\\n letter-spacing: -0.01em;\\n }\\n\\n textarea {\\n margin-top: size-variable-pc(-2);\\n height: calc(1.5em * 3.4);\\n }\\n\\n .message {\\n font-size: size-variable-pc(12);\\n color: #cf0000;\\n font-weight: 500;\\n\\n &:before {\\n content: '';\\n display: block;\\n width: 100%;\\n height: 1px;\\n background-color: $SUB_COLOR2;\\n margin-top: size-variable-pc(11);\\n }\\n\\n label {\\n display: none;\\n font-size: size-variable-pc(12);\\n line-height: 1;\\n letter-spacing: -0.01em;\\n margin-top: size-variable-pc(7);\\n margin-left: size-variable-pc(16);\\n }\\n }\\n\\n &.check_raw {\\n margin-bottom: size-variable-pc(52);\\n font-size: size-variable-pc(14);\\n width: 68.7%;\\n display: inline-block;\\n .field {\\n display: flex;\\n margin-bottom: size-variable-pc(6);\\n &:after {\\n display: none;\\n }\\n }\\n\\n .message {\\n &:before {\\n display: none;\\n }\\n }\\n\\n input {\\n position: relative;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n width: size-variable-pc(20);\\n height: size-variable-pc(20);\\n border: 1px solid $SUB_COLOR2;\\n background-color: #f0f4ff;\\n padding: 0;\\n margin-left: size-variable-pc(0);\\n margin-right: size-variable-pc(8);\\n cursor: pointer;\\n border-radius: size-variable-pc(4);\\n top: size-variable-pc(-3);\\n &:checked {\\n border: none;\\n background: linear-gradient(\\n 225.93deg,\\n #073a86 0%,\\n #2d849a 101.67%\\n );\\n }\\n\\n & + label {\\n position: relative;\\n left: size-variable-pc(-21);\\n top: size-variable-pc(4);\\n }\\n\\n & + label:before {\\n content: '';\\n display: block;\\n pointer-events: none;\\n }\\n\\n &:checked + label {\\n }\\n\\n &:checked + label:after {\\n content: '';\\n display: block;\\n position: absolute;\\n top: 0px;\\n left: 0px;\\n width: size-variable-pc(3);\\n height: size-variable-pc(9);\\n transform: rotate(46deg);\\n border-bottom: size-variable-pc(2) solid\\n #fff;\\n border-right: size-variable-pc(2) solid #fff;\\n }\\n }\\n\\n .txt {\\n letter-spacing: -0.01em;\\n a {\\n text-decoration: underline;\\n &:hover {\\n animation: common_blink 0.075s linear;\\n animation-iteration-count: 2;\\n }\\n }\\n }\\n }\\n\\n &.btn_raw {\\n width: 31.3%;\\n display: inline-block;\\n vertical-align: top;\\n }\\n\\n &.error {\\n .message {\\n &:before {\\n background-color: #cf0000;\\n }\\n\\n label {\\n display: block;\\n }\\n }\\n }\\n }\\n }\\n }\\n\\n .contents_confirm {\\n margin-bottom: size-variable-pc(162);\\n ul {\\n li.item {\\n display: flex;\\n align-items: baseline;\\n margin-bottom: size-variable-pc(34);\\n padding-bottom: size-variable-pc(30);\\n border-bottom: 1px solid $SUB_COLOR2;\\n\\n .tit {\\n font-size: size-variable-pc(18);\\n color: $KEY_COLOR1;\\n width: 31.2%;\\n font-weight: 500;\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n }\\n\\n .user_data {\\n font-size: size-variable-pc(18);\\n width: 68.8%;\\n font-weight: 400;\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n }\\n\\n &.check_raw {\\n margin-bottom: size-variable-pc(64);\\n }\\n\\n &.btn_raw {\\n border: none;\\n display: flex;\\n margin-top: size-variable-pc(-4);\\n justify-content: space-between;\\n }\\n }\\n }\\n\\n .bt {\\n width: 200px;\\n }\\n\\n .back_bt {\\n background: #e4e9f5;\\n color: $BASE_COLOR2;\\n &:after {\\n content: none;\\n }\\n }\\n }\\n\\n .contents_thanks {\\n width: 100vw;\\n margin-left: size-variable-pc(120);\\n margin-top: size-variable-pc(285);\\n margin-bottom: size-variable-pc(192);\\n\\n h2 {\\n .sub_tit {\\n font-size: size-variable-pc(14);\\n letter-spacing: -0.01em;\\n position: absolute;\\n line-height: 1;\\n display: block;\\n }\\n\\n .tit {\\n font-size: size-variable-pc(100);\\n padding-top: size-variable-pc(60);\\n letter-spacing: -0.02em;\\n line-height: 0.9;\\n display: block;\\n span.item.space {\\n width: size-variable-pc(15);\\n }\\n\\n .sp {\\n display: none !important;\\n }\\n }\\n }\\n\\n .message {\\n position: relative;\\n line-height: 1.3;\\n font-size: size-variable-pc(18);\\n margin-top: size-variable-pc(62);\\n letter-spacing: -0.01em;\\n }\\n\\n .btn {\\n margin-top: size-variable-pc(30);\\n a {\\n &:before {\\n background-image: url(/assets/img/common/icon-link2.svg);\\n }\\n }\\n }\\n }\\n }\\n\\n .section2 {\\n margin-left: 41.7vw;\\n margin-top: size-variable-pc(-160);\\n width: size-variable-pc(640);\\n margin-bottom: size-variable-pc(245);\\n border-top: 1px solid #e1e4e5;\\n\\n .chunk {\\n display: flex;\\n }\\n\\n .contacts {\\n width: 100%;\\n\\n li {\\n margin-top: size-variable-pc(45);\\n padding-bottom: size-variable-pc(40);\\n display: flex;\\n border-bottom: 1px solid #e1e4e5;\\n\\n &:last-of-type {\\n margin-bottom: 0;\\n }\\n\\n .tit {\\n font-size: size-variable-pc(14);\\n font-weight: 600;\\n line-height: 1;\\n letter-spacing: -0.01em;\\n width: 31.2%;\\n }\\n\\n .address {\\n font-size: size-variable-pc(14);\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n position: relative;\\n top: size-variable-pc(-2);\\n width: 51.2%;\\n }\\n\\n .copy {\\n font-size: size-variable-pc(14);\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n background: linear-gradient(\\n 225.93deg,\\n #073a86 0%,\\n #2d849a 101.67%\\n );\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n background-clip: text;\\n text-fill-color: transparent;\\n text-align: right;\\n width: 17.6%;\\n position: relative;\\n top: size-variable-pc(-2);\\n cursor: pointer;\\n }\\n\\n a:hover {\\n animation: common_blink 0.1s linear;\\n animation-iteration-count: 2;\\n }\\n }\\n }\\n\\n .offices {\\n display: none;\\n }\\n }\\n }\\n\\n main.contact_ja {\\n .section1 {\\n .head {\\n .message {\\n font-size: size-variable-pc(14);\\n line-height: 1.75;\\n }\\n\\n .required_message {\\n font-size: size-variable-pc(12);\\n line-height: 1.75;\\n }\\n\\n .offices {\\n .txt.font2 {\\n font-size: size-variable-pc(12);\\n line-height: 1.55;\\n }\\n }\\n }\\n\\n .contents_input {\\n ul {\\n li.item {\\n input,\\n textarea {\\n font-size: size-variable-pc(16);\\n line-height: 1.75;\\n }\\n\\n &.check_raw {\\n .txt {\\n font-size: size-variable-pc(12);\\n line-height: 1.75;\\n }\\n }\\n }\\n }\\n }\\n\\n .contents_confirm {\\n ul {\\n li.item {\\n .tit.font2 {\\n font-size: size-variable-pc(14);\\n }\\n\\n .user_data {\\n font-size: size-variable-pc(16);\\n line-height: 1.75;\\n }\\n }\\n }\\n }\\n }\\n }\\n}\\n\\n//For TABLET/SP LAYOUT\\n@media screen and (max-width: ($BP - 1) + px) {\\n main.contact {\\n .section1 {\\n width: 89.5vw;\\n margin: 0 auto size-variable-sp(100);\\n\\n .head {\\n margin-top: size-variable-sp(114);\\n\\n h1 {\\n .sub_tit {\\n font-size: size-variable-sp(12);\\n display: block;\\n }\\n\\n .tit {\\n font-size: size-variable-sp(54);\\n margin-top: size-variable-sp(23);\\n display: block;\\n }\\n\\n span.item.space {\\n width: size-variable-sp(6);\\n }\\n }\\n\\n .message {\\n font-size: size-variable-sp(14);\\n line-height: 1.3;\\n font-weight: 400;\\n margin-top: size-variable-sp(60);\\n letter-spacing: -0.01em;\\n }\\n\\n .required_message {\\n font-size: size-variable-sp(12);\\n line-height: 1.3;\\n margin-top: size-variable-sp(18);\\n letter-spacing: -0.01em;\\n\\n .red {\\n position: relative;\\n top: size-variable-sp(1);\\n color: #e77171;\\n margin-right: size-variable-sp(3);\\n }\\n }\\n .offices {\\n display: none;\\n }\\n }\\n\\n .contents {\\n font-size: size-variable-sp(14);\\n line-height: 1.5;\\n margin-top: size-variable-sp(78);\\n\\n .bt {\\n width: 100%;\\n background: linear-gradient(\\n 225.93deg,\\n #073a86 0%,\\n #2d849a 101.67%\\n );\\n border-radius: size-variable-sp(10);\\n color: #fff;\\n text-align: center;\\n font-size: size-variable-sp(12);\\n font-weight: 600;\\n padding: size-variable-sp(17) 0;\\n letter-spacing: -0.01em;\\n position: relative;\\n\\n &:after {\\n content: '';\\n background-image: url(/assets/img/common/arrow_right.svg);\\n position: absolute;\\n background-size: cover;\\n width: size-variable-sp(20);\\n height: size-variable-sp(20);\\n display: inline-block;\\n right: size-variable-sp(12);\\n top: 50%;\\n transform: translate3d(0, -50%, 0);\\n }\\n }\\n }\\n\\n .contents_input {\\n ul {\\n li.item {\\n margin-bottom: size-variable-sp(47);\\n .tit {\\n font-size: size-variable-sp(14);\\n letter-spacing: -0.01em;\\n line-height: 1.3;\\n margin-left: size-variable-sp(11);\\n position: absolute;\\n pointer-events: none;\\n transform-origin: left top;\\n transition: transform 350ms;\\n transition-timing-function: $easeOutQuart;\\n\\n &.small {\\n transform: scale(0.7)\\n translate3d(0, size-variable-sp(-20), 0);\\n }\\n }\\n\\n input,\\n textarea {\\n width: 100%;\\n border: none;\\n background-color: transparent;\\n font-size: size-variable-sp(14);\\n letter-spacing: -0.01em;\\n line-height: 1.3;\\n padding-left: 0;\\n margin-left: size-variable-sp(11);\\n }\\n\\n textarea {\\n margin-top: size-variable-sp(-1);\\n height: 8.6em;\\n }\\n\\n .message {\\n font-size: size-variable-sp(12);\\n color: #cf0000;\\n font-weight: 500;\\n\\n &:before {\\n content: '';\\n display: block;\\n width: 100%;\\n height: 1px;\\n background-color: $SUB_COLOR2;\\n margin-top: size-variable-sp(16);\\n }\\n\\n label {\\n display: none;\\n font-size: size-variable-sp(12);\\n line-height: 1;\\n letter-spacing: -0.01em;\\n margin-top: size-variable-sp(10);\\n margin-left: size-variable-sp(10);\\n }\\n }\\n\\n &.textarea_row {\\n margin-bottom: size-variable-sp(31);\\n }\\n\\n &.check_raw {\\n margin-bottom: size-variable-sp(22);\\n font-size: size-variable-sp(12);\\n\\n .field {\\n display: flex;\\n margin-bottom: size-variable-sp(11);\\n }\\n\\n .message {\\n &:before {\\n display: none;\\n }\\n }\\n\\n input {\\n position: relative;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n width: size-variable-sp(18);\\n height: size-variable-sp(18);\\n border: 1px solid $SUB_COLOR2;\\n background-color: #f0f4ff;\\n padding: 0;\\n margin-left: size-variable-sp(0);\\n margin-right: size-variable-sp(6);\\n cursor: pointer;\\n border-radius: size-variable-sp(4);\\n top: size-variable-sp(-3);\\n &:checked {\\n border: none;\\n background: linear-gradient(\\n 225.93deg,\\n #073a86 0%,\\n #2d849a 101.67%\\n );\\n }\\n & + label {\\n position: relative;\\n left: size-variable-sp(-17);\\n top: size-variable-sp(4);\\n }\\n\\n & + label:before {\\n content: '';\\n display: block;\\n pointer-events: none;\\n }\\n\\n &:checked + label {\\n }\\n\\n &:checked + label:after {\\n content: '';\\n display: block;\\n position: absolute;\\n top: 0px;\\n left: 0px;\\n width: size-variable-sp(2.5);\\n height: size-variable-sp(6);\\n transform: rotate(46deg);\\n border-bottom: size-variable-sp(1.5) solid\\n #fff;\\n border-right: size-variable-sp(1.5) solid\\n #fff;\\n }\\n }\\n\\n .txt {\\n letter-spacing: -0.01em;\\n a {\\n text-decoration: underline;\\n }\\n }\\n }\\n\\n &.error {\\n .message {\\n &:before {\\n background-color: #cf0000;\\n }\\n\\n label {\\n display: block;\\n }\\n }\\n }\\n }\\n }\\n }\\n\\n .contents_confirm {\\n margin-bottom: size-variable-sp(-20);\\n ul {\\n li.item {\\n margin-bottom: size-variable-sp(25.5);\\n padding-bottom: size-variable-sp(22);\\n border-bottom: 1px solid $SUB_COLOR2;\\n\\n .tit {\\n font-size: size-variable-sp(14);\\n color: $KEY_COLOR1;\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n }\\n\\n .user_data {\\n font-size: size-variable-sp(18);\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n margin-top: size-variable-sp(7);\\n }\\n\\n &.check_raw {\\n margin-bottom: size-variable-sp(64);\\n }\\n\\n &.btn_raw {\\n margin-top: size-variable-sp(-32);\\n text-align: center;\\n display: flex;\\n flex-direction: column-reverse;\\n border: none;\\n\\n .back_bt {\\n background: #e4e9f5;\\n color: $BASE_COLOR2;\\n margin-top: size-variable-sp(10);\\n &:after {\\n content: none;\\n }\\n }\\n }\\n }\\n }\\n }\\n\\n .contents_thanks {\\n margin-top: size-variable-sp(114);\\n h2 {\\n .sub_tit {\\n font-size: size-variable-sp(12);\\n line-height: 1;\\n left: -0.01em;\\n display: block;\\n }\\n\\n .tit {\\n font-size: size-variable-sp(54);\\n margin-top: size-variable-sp(23);\\n line-height: 1;\\n letter-spacing: -0.02em;\\n display: block;\\n }\\n }\\n\\n .message {\\n font-size: size-variable-sp(14);\\n margin-top: size-variable-sp(60);\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n }\\n\\n .btn {\\n margin-top: size-variable-sp(32);\\n a {\\n &:before {\\n background-image: url(/assets/img/common/icon-link2.svg);\\n }\\n }\\n }\\n }\\n }\\n\\n .section2 {\\n margin-bottom: size-variable-sp(120);\\n\\n &.confirm {\\n display: block;\\n .offices {\\n display: none;\\n }\\n }\\n\\n .section_child {\\n width: 72vw;\\n margin: 0 auto;\\n }\\n\\n h2 {\\n font-size: size-variable-sp(36);\\n letter-spacing: 0.03em;\\n }\\n\\n .chunk {\\n margin-top: size-variable-sp(49);\\n }\\n\\n .contacts {\\n margin-top: size-variable-sp(63);\\n border-top: 1px solid #e1e4e5;\\n\\n li {\\n padding-top: size-variable-sp(35);\\n padding-bottom: size-variable-sp(31);\\n border-bottom: 1px solid #e1e4e5;\\n position: relative;\\n .tit {\\n font-size: size-variable-sp(12);\\n font-weight: 600;\\n letter-spacing: -0.01em;\\n line-height: 1;\\n }\\n\\n .address {\\n font-size: size-variable-sp(12);\\n letter-spacing: -0.01em;\\n line-height: 1.3;\\n margin-top: size-variable-sp(14);\\n }\\n\\n .copy {\\n position: absolute;\\n font-size: size-variable-sp(12);\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n background: linear-gradient(\\n 225.93deg,\\n #073a86 0%,\\n #2d849a 101.67%\\n );\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n background-clip: text;\\n text-fill-color: transparent;\\n margin-top: size-variable-sp(-16);\\n right: size-variable-sp(2);\\n }\\n }\\n }\\n\\n .offices {\\n margin-top: size-variable-sp(63);\\n li {\\n margin-bottom: size-variable-sp(42);\\n .tit {\\n line-height: 1;\\n font-size: size-variable-sp(12);\\n font-weight: 600;\\n }\\n\\n .txt {\\n font-size: size-variable-sp(12);\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n margin-top: size-variable-sp(14);\\n }\\n\\n .tel,\\n .mail {\\n font-size: size-variable-sp(12);\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n .he {\\n width: size-variable-sp(32);\\n display: inline-block;\\n }\\n }\\n\\n .tel {\\n margin-top: size-variable-sp(10);\\n }\\n\\n .mail {\\n }\\n }\\n }\\n }\\n }\\n\\n main.contact_ja {\\n .section1 {\\n .head {\\n .message {\\n font-size: size-variable-sp(12);\\n line-height: 1.75;\\n }\\n\\n .required_message {\\n font-size: size-variable-sp(10);\\n line-height: 1.75;\\n }\\n }\\n\\n .contents_input {\\n ul {\\n li.item {\\n input,\\n textarea {\\n font-size: size-variable-sp(12);\\n line-height: 1.75;\\n }\\n\\n &.check_raw {\\n .txt {\\n font-size: size-variable-sp(10);\\n line-height: 1.75;\\n }\\n }\\n }\\n }\\n }\\n\\n .contents_confirm {\\n ul {\\n li.item {\\n .tit.font2 {\\n font-size: size-variable-sp(12);\\n }\\n\\n .user_data {\\n font-size: size-variable-sp(14);\\n line-height: 1.75;\\n }\\n }\\n }\\n }\\n }\\n\\n .section2 {\\n .offices {\\n .txt.font2 {\\n font-size: size-variable-sp(10);\\n line-height: 1.5;\\n }\\n }\\n }\\n }\\n}\\n\",\"$easeInSine: cubic-bezier(0.47, 0, 0.745, 0.715);\\n$easeOutSine: cubic-bezier(0.39, 0.575, 0.565, 1);\\n$easeInOutSine: cubic-bezier(0.445, 0.05, 0.55, 0.95);\\n$easeInQuad: cubic-bezier(0.55, 0.085, 0.68, 0.53);\\n$easeOutQuad: cubic-bezier(0.25, 0.46, 0.45, 0.94);\\n$easeInOutQuad: cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n\\n$easeInCubic: cubic-bezier(0.55, 0.055, 0.675, 0.19);\\n$easeOutCubic: cubic-bezier(0.215, 0.61, 0.355, 1);\\n$easeInOutCubic: cubic-bezier(0.645, 0.045, 0.355, 1);\\n$easeInQuart: cubic-bezier(0.895, 0.03, 0.685, 0.22);\\n$easeOutQuart: cubic-bezier(0.165, 0.84, 0.44, 1);\\n$easeInOutQuart: cubic-bezier(0.77, 0, 0.175, 1);\\n\\n$easeInQuint: cubic-bezier(0.755, 0.05, 0.855, 0.06);\\n$easeOutQuint: cubic-bezier(0.23, 1, 0.32, 1);\\n$easeInOutQuint: cubic-bezier(0.86, 0, 0.07, 1);\\n$easeInExpo: cubic-bezier(0.95, 0.05, 0.795, 0.035);\\n$easeOutExpo: cubic-bezier(0.19, 1, 0.22, 1);\\n$easeInOutExpo: cubic-bezier(1, 0, 0, 1);\\n\\n$easeInCirc: cubic-bezier(0.6, 0.04, 0.98, 0.335);\\n$easeOutCirc: cubic-bezier(0.075, 0.82, 0.165, 1);\\n$easeInOutCirc: cubic-bezier(0.785, 0.135, 0.15, 0.86);\\n$easeInBack: cubic-bezier(0.6, -0.28, 0.735, 0.045);\\n$easeOutBack: cubic-bezier(0.175, 0.885, 0.32, 1.275);\\n$easeInOutBack: cubic-bezier(0.68, -0.55, 0.265, 1.55);\\n\\n$pi: 3.1415926536;\\n$PC_BASE_W: 1440;\\n$SP_BASE_W: 375;\\n\\n$BP: 768;\\n\\n$BASE_COLOR1: #171C21;\\n$BASE_COLOR2: #213143;\\n$KEY_COLOR1: #3098A6;\\n$SUB_COLOR1: #5CB4C0;\\n$SUB_COLOR2: #BDC1C6;\\n$BG_COLOR: #FBFBFB;\\n$BG_COLOR_ALPHA0: #FBFBFB00;\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"main.cookie_policy .section1 h1{line-height:1}main.cookie_policy .section1 h1.show span.item{-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-iteration-count:4;animation-iteration-count:4;transform:rotate3d(1, 1, 1, 0)}main.cookie_policy .section1 h1 .sub_tit{color:#5cb4c0}main.cookie_policy .section1 h1 .sub_tit span{transition:opacity 300ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(1){transition-delay:0.11s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(2){transition-delay:0.12s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(3){transition-delay:0.13s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(4){transition-delay:0.14s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(5){transition-delay:0.15s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(6){transition-delay:0.16s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(7){transition-delay:0.17s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(8){transition-delay:0.18s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(9){transition-delay:0.19s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(10){transition-delay:0.2s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(11){transition-delay:0.21s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(12){transition-delay:0.22s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(13){transition-delay:0.23s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(14){transition-delay:0.24s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(15){transition-delay:0.25s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(16){transition-delay:0.26s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(17){transition-delay:0.27s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(18){transition-delay:0.28s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(19){transition-delay:0.29s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(20){transition-delay:0.3s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(21){transition-delay:0.31s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(22){transition-delay:0.32s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(23){transition-delay:0.33s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(24){transition-delay:0.34s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(25){transition-delay:0.35s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(26){transition-delay:0.36s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(27){transition-delay:0.37s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(28){transition-delay:0.38s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(29){transition-delay:0.39s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(30){transition-delay:0.4s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(31){transition-delay:0.41s}main.cookie_policy .section1 h1 .sub_tit span:nth-of-type(32){transition-delay:0.42s}main.cookie_policy .section1 h1 span.span_chunk{display:flex;perspective:300px}main.cookie_policy .section1 h1 span.item{white-space:nowrap;will-change:transform;transform:rotate3d(1, 0, 0, 180deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform 500ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}main.cookie_policy .section1 h1 span.item:nth-of-type(1){transition-delay:0.0675s}main.cookie_policy .section1 h1 span.item:nth-of-type(2){transition-delay:0.075s}main.cookie_policy .section1 h1 span.item:nth-of-type(3){transition-delay:0.215s}main.cookie_policy .section1 h1 span.item:nth-of-type(4){transition-delay:0.11s}main.cookie_policy .section1 h1 span.item:nth-of-type(5){transition-delay:0.1375s}main.cookie_policy .section1 h1 span.item:nth-of-type(6){transition-delay:0.0225s}main.cookie_policy .section1 h1 span.item:nth-of-type(7){transition-delay:0.0975s}main.cookie_policy .section1 h1 span.item:nth-of-type(8){transition-delay:0.19s}main.cookie_policy .section1 h1 span.item:nth-of-type(9){transition-delay:0.125s}main.cookie_policy .section1 h1 span.item:nth-of-type(10){transition-delay:0.1025s}main.cookie_policy .section1 h1 span.item:nth-of-type(11){transition-delay:0.1675s}main.cookie_policy .section1 h1 span.item:nth-of-type(12){transition-delay:0.2025s}main.cookie_policy .section1 h1 span.item:nth-of-type(13){transition-delay:0.1625s}main.cookie_policy .section1 h1 span.item:nth-of-type(14){transition-delay:0.17s}main.cookie_policy .section1 h1 span.item:nth-of-type(15){transition-delay:0.1825s}main.cookie_policy .section1 h1 span.item:nth-of-type(16){transition-delay:0.1125s}main.cookie_policy .section1 h1 span.item:nth-of-type(17){transition-delay:0.1925s}main.cookie_policy .section1 h1 span.item:nth-of-type(18){transition-delay:0.0375s}main.cookie_policy .section1 h1 span.item:nth-of-type(19){transition-delay:0.0575s}main.cookie_policy .section1 h1 span.item:nth-of-type(20){transition-delay:0.2425s}main.cookie_policy .section1 h1 span.item:nth-of-type(21){transition-delay:0.0075s}main.cookie_policy .section1 h1 span.item:nth-of-type(22){transition-delay:0.14s}main.cookie_policy .section1 h1 span.item:nth-of-type(23){transition-delay:0.0875s}main.cookie_policy .section1 h1 span.item:nth-of-type(24){transition-delay:0.08s}main.cookie_policy .section1 h1 span.item:nth-of-type(25){transition-delay:0.2475s}main.cookie_policy .section1 h1 span.item:nth-of-type(26){transition-delay:0.16s}main.cookie_policy .section1 h1 span.item:nth-of-type(27){transition-delay:0.0675s}main.cookie_policy .section1 h1 span.item:nth-of-type(28){transition-delay:0.11s}main.cookie_policy .section1 h1 span.item:nth-of-type(29){transition-delay:0.18s}main.cookie_policy .section1 h1 span.item:nth-of-type(30){transition-delay:0.105s}@media screen and (min-width: 768px){main.cookie_policy .section1{margin-bottom:6.2222222222rem}main.cookie_policy .section1 .head{margin-top:27.7777777778rem;display:flex;flex-direction:column;align-items:center}main.cookie_policy .section1 .head h1{text-align:center}main.cookie_policy .section1 .head h1 .sub_tit{font-size:1.5555555556rem;letter-spacing:-0.01em;line-height:1;display:block}main.cookie_policy .section1 .head h1 .tit{font-size:11.1111111111rem;padding-top:5.2222222222rem;letter-spacing:-0.02em;line-height:1.2;display:flex}main.cookie_policy .section1 .head h1 .tit span.item.space{width:2.1111111111rem}main.cookie_policy .section1 .head h1 .tit .sp{display:none !important}main.cookie_policy .cookie_content{font-size:16px;width:77.6vw;margin:40px auto;padding-bottom:50px}}@media screen and (max-width: 767px){main.cookie_policy .section1{width:89.5vw;margin:0 auto 42.6666666667rem}main.cookie_policy .section1 .head{margin-top:48.64rem;display:flex;flex-direction:column;align-items:center}main.cookie_policy .section1 .head h1{text-align:center}main.cookie_policy .section1 .head h1 .sub_tit{font-size:5.12rem;display:block}main.cookie_policy .section1 .head h1 .tit{font-size:23.04rem;margin-top:9.8133333333rem;display:flex;flex-direction:column;align-items:center}main.cookie_policy .section1 .head h1 span.item.space{width:2.56rem}main.cookie_policy .cookie_content{font-size:16px;width:77.6vw;margin:40px auto 0px}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/scss/cookie_policy.scss\",\"webpack://./src/scss/_variable.scss\"],\"names\":[],\"mappings\":\"AAWQ,gCACI,aAAA,CAGI,+CACI,mCAAA,CAAA,2BAAA,CACA,8BAAA,CAAA,sBAAA,CACA,wCAAA,CAAA,gCAAA,CACA,mCAAA,CAAA,2BAAA,CACA,8BAAA,CAIR,yCACI,aCYH,CDXG,8CAEI,wBAAA,CACA,6DClBL,CDqBS,6DACI,sBAAA,CADJ,6DACI,sBAAA,CADJ,6DACI,sBAAA,CADJ,6DACI,sBAAA,CADJ,6DACI,sBAAA,CADJ,6DACI,sBAAA,CADJ,6DACI,sBAAA,CADJ,6DACI,sBAAA,CADJ,6DACI,sBAAA,CADJ,8DACI,qBAAA,CADJ,8DACI,sBAAA,CADJ,8DACI,sBAAA,CADJ,8DACI,sBAAA,CADJ,8DACI,sBAAA,CADJ,8DACI,sBAAA,CADJ,8DACI,sBAAA,CADJ,8DACI,sBAAA,CADJ,8DACI,sBAAA,CADJ,8DACI,sBAAA,CADJ,8DACI,qBAAA,CADJ,8DACI,sBAAA,CADJ,8DACI,sBAAA,CADJ,8DACI,sBAAA,CADJ,8DACI,sBAAA,CADJ,8DACI,sBAAA,CADJ,8DACI,sBAAA,CADJ,8DACI,sBAAA,CADJ,8DACI,sBAAA,CADJ,8DACI,sBAAA,CADJ,8DACI,qBAAA,CADJ,8DACI,sBAAA,CADJ,8DACI,sBAAA,CAMhB,gDACI,YAAA,CACA,iBAAA,CAGJ,0CACI,kBAAA,CACA,qBAAA,CACA,mCAAA,CACA,kCAAA,CAAA,0BAAA,CACA,0BAAA,CACA,6DCvCD,CD0CK,yDAEI,wBAAA,CAFJ,yDAEI,uBAAA,CAFJ,yDAEI,uBAAA,CAFJ,yDAEI,sBAAA,CAFJ,yDAEI,wBAAA,CAFJ,yDAEI,wBAAA,CAFJ,yDAEI,wBAAA,CAFJ,yDAEI,sBAAA,CAFJ,yDAEI,uBAAA,CAFJ,0DAEI,wBAAA,CAFJ,0DAEI,wBAAA,CAFJ,0DAEI,wBAAA,CAFJ,0DAEI,wBAAA,CAFJ,0DAEI,sBAAA,CAFJ,0DAEI,wBAAA,CAFJ,0DAEI,wBAAA,CAFJ,0DAEI,wBAAA,CAFJ,0DAEI,wBAAA,CAFJ,0DAEI,wBAAA,CAFJ,0DAEI,wBAAA,CAFJ,0DAEI,wBAAA,CAFJ,0DAEI,sBAAA,CAFJ,0DAEI,wBAAA,CAFJ,0DAEI,sBAAA,CAFJ,0DAEI,wBAAA,CAFJ,0DAEI,sBAAA,CAFJ,0DAEI,wBAAA,CAFJ,0DAEI,sBAAA,CAFJ,0DAEI,sBAAA,CAFJ,0DAEI,uBAAA,CASxB,qCAEQ,6BACI,6BAAA,CAKA,mCACI,2BAAA,CAGA,YAAA,CACA,qBAAA,CACA,kBAAA,CAEA,sCACI,iBAAA,CAEA,+CACI,yBAAA,CACA,sBAAA,CACA,aAAA,CACA,aAAA,CAGJ,2CACI,0BAAA,CACA,2BAAA,CACA,sBAAA,CACA,eAAA,CACA,YAAA,CACA,2DACI,qBAAA,CAGJ,+CACI,uBAAA,CAOpB,mCACI,cAAA,CACA,YAAA,CACA,gBAAA,CACA,mBAAA,CAAA,CAMZ,qCAEQ,6BACI,YAAA,CACA,8BAAA,CAEA,mCACI,mBAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CAEA,sCACI,iBAAA,CACA,+CACI,iBAAA,CACA,aAAA,CAGJ,2CACI,kBAAA,CACA,0BAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CAGJ,sDACI,aAAA,CAMhB,mCACI,cAAA,CACA,YAAA,CACA,oBAAA,CAAA\",\"sourcesContent\":[\"@import 'variable';\\n@import 'mixin';\\n\\n/*\\nz-index\\n\\n*/\\n\\n//For COMMON LAYOUT\\nmain.cookie_policy {\\n .section1 {\\n h1 {\\n line-height: 1;\\n\\n &.show {\\n span.item {\\n animation-name: common_blink;\\n animation-duration: 0.1s;\\n animation-timing-function: linear;\\n animation-iteration-count: 4;\\n transform: rotate3d(1, 1, 1, 0);\\n }\\n }\\n\\n .sub_tit {\\n color: $SUB_COLOR1;\\n span {\\n //opacity: 0;\\n transition: opacity 300ms;\\n transition-timing-function: $easeOutQuart;\\n\\n @for $i from 1 through 32 {\\n &:nth-of-type(#{$i}) {\\n transition-delay: 0.1 + 0.01 * $i + s;\\n }\\n }\\n }\\n }\\n\\n span.span_chunk {\\n display: flex;\\n perspective: 300px;\\n }\\n\\n span.item {\\n white-space: nowrap;\\n will-change: transform;\\n transform: rotate3d(1, 0, 0, 180deg);\\n backface-visibility: hidden;\\n transition: transform 500ms;\\n transition-timing-function: $easeOutQuart;\\n\\n @for $i from 1 through 30 {\\n &:nth-of-type(#{$i}) {\\n $rand: random(100) * 0.0025;\\n transition-delay: $rand + s;\\n }\\n }\\n }\\n }\\n }\\n}\\n\\n//For PC LAYOUT\\n@media screen and (min-width: $BP + px) {\\n main.cookie_policy {\\n .section1 {\\n margin-bottom: size-variable-pc(56);\\n\\n .section_child {\\n }\\n\\n .head {\\n margin-top: size-variable-pc(250);\\n // margin-left: size-variable-pc(120);\\n\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n\\n h1 {\\n text-align: center;\\n\\n .sub_tit {\\n font-size: size-variable-pc(14);\\n letter-spacing: -0.01em;\\n line-height: 1;\\n display: block;\\n }\\n\\n .tit {\\n font-size: size-variable-pc(100);\\n padding-top: size-variable-pc(47);\\n letter-spacing: -0.02em;\\n line-height: 1.2;\\n display: flex;\\n span.item.space {\\n width: size-variable-pc(19);\\n }\\n\\n .sp {\\n display: none !important;\\n }\\n }\\n }\\n }\\n }\\n\\n .cookie_content {\\n font-size: 16px;\\n width: 77.6vw;\\n margin: 40px auto;\\n padding-bottom: 50px;\\n }\\n }\\n}\\n\\n//For TABLET/SP LAYOUT\\n@media screen and (max-width: ($BP - 1) + px) {\\n main.cookie_policy {\\n .section1 {\\n width: 89.5vw;\\n margin: 0 auto size-variable-sp(100);\\n\\n .head {\\n margin-top: size-variable-sp(114);\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n\\n h1 {\\n text-align: center;\\n .sub_tit {\\n font-size: size-variable-sp(12);\\n display: block;\\n }\\n\\n .tit {\\n font-size: size-variable-sp(54);\\n margin-top: size-variable-sp(23);\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n }\\n\\n span.item.space {\\n width: size-variable-sp(6);\\n }\\n }\\n }\\n }\\n\\n .cookie_content {\\n font-size: 16px;\\n width: 77.6vw;\\n margin: 40px auto 0px;\\n }\\n }\\n}\\n\",\"$easeInSine: cubic-bezier(0.47, 0, 0.745, 0.715);\\n$easeOutSine: cubic-bezier(0.39, 0.575, 0.565, 1);\\n$easeInOutSine: cubic-bezier(0.445, 0.05, 0.55, 0.95);\\n$easeInQuad: cubic-bezier(0.55, 0.085, 0.68, 0.53);\\n$easeOutQuad: cubic-bezier(0.25, 0.46, 0.45, 0.94);\\n$easeInOutQuad: cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n\\n$easeInCubic: cubic-bezier(0.55, 0.055, 0.675, 0.19);\\n$easeOutCubic: cubic-bezier(0.215, 0.61, 0.355, 1);\\n$easeInOutCubic: cubic-bezier(0.645, 0.045, 0.355, 1);\\n$easeInQuart: cubic-bezier(0.895, 0.03, 0.685, 0.22);\\n$easeOutQuart: cubic-bezier(0.165, 0.84, 0.44, 1);\\n$easeInOutQuart: cubic-bezier(0.77, 0, 0.175, 1);\\n\\n$easeInQuint: cubic-bezier(0.755, 0.05, 0.855, 0.06);\\n$easeOutQuint: cubic-bezier(0.23, 1, 0.32, 1);\\n$easeInOutQuint: cubic-bezier(0.86, 0, 0.07, 1);\\n$easeInExpo: cubic-bezier(0.95, 0.05, 0.795, 0.035);\\n$easeOutExpo: cubic-bezier(0.19, 1, 0.22, 1);\\n$easeInOutExpo: cubic-bezier(1, 0, 0, 1);\\n\\n$easeInCirc: cubic-bezier(0.6, 0.04, 0.98, 0.335);\\n$easeOutCirc: cubic-bezier(0.075, 0.82, 0.165, 1);\\n$easeInOutCirc: cubic-bezier(0.785, 0.135, 0.15, 0.86);\\n$easeInBack: cubic-bezier(0.6, -0.28, 0.735, 0.045);\\n$easeOutBack: cubic-bezier(0.175, 0.885, 0.32, 1.275);\\n$easeInOutBack: cubic-bezier(0.68, -0.55, 0.265, 1.55);\\n\\n$pi: 3.1415926536;\\n$PC_BASE_W: 1440;\\n$SP_BASE_W: 375;\\n\\n$BP: 768;\\n\\n$BASE_COLOR1: #171C21;\\n$BASE_COLOR2: #213143;\\n$KEY_COLOR1: #3098A6;\\n$SUB_COLOR1: #5CB4C0;\\n$SUB_COLOR2: #BDC1C6;\\n$BG_COLOR: #FBFBFB;\\n$BG_COLOR_ALPHA0: #FBFBFB00;\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"main.product_brochure .section1 h1{line-height:1}main.product_brochure .section1 h1.show span.item{-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-iteration-count:4;animation-iteration-count:4;transform:rotate3d(1, 1, 1, 0)}main.product_brochure .section1 h1 .sub_tit{color:#5cb4c0}main.product_brochure .section1 h1 .sub_tit span{transition:opacity 300ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(1){transition-delay:0.11s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(2){transition-delay:0.12s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(3){transition-delay:0.13s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(4){transition-delay:0.14s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(5){transition-delay:0.15s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(6){transition-delay:0.16s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(7){transition-delay:0.17s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(8){transition-delay:0.18s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(9){transition-delay:0.19s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(10){transition-delay:0.2s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(11){transition-delay:0.21s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(12){transition-delay:0.22s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(13){transition-delay:0.23s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(14){transition-delay:0.24s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(15){transition-delay:0.25s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(16){transition-delay:0.26s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(17){transition-delay:0.27s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(18){transition-delay:0.28s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(19){transition-delay:0.29s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(20){transition-delay:0.3s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(21){transition-delay:0.31s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(22){transition-delay:0.32s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(23){transition-delay:0.33s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(24){transition-delay:0.34s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(25){transition-delay:0.35s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(26){transition-delay:0.36s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(27){transition-delay:0.37s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(28){transition-delay:0.38s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(29){transition-delay:0.39s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(30){transition-delay:0.4s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(31){transition-delay:0.41s}main.product_brochure .section1 h1 .sub_tit span:nth-of-type(32){transition-delay:0.42s}main.product_brochure .section1 h1 span.span_chunk{display:flex;perspective:300px}main.product_brochure .section1 h1 span.item{white-space:nowrap;will-change:transform;transform:rotate3d(1, 0, 0, 180deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform 500ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}main.product_brochure .section1 h1 span.item:nth-of-type(1){transition-delay:0.0475s}main.product_brochure .section1 h1 span.item:nth-of-type(2){transition-delay:0.23s}main.product_brochure .section1 h1 span.item:nth-of-type(3){transition-delay:0.095s}main.product_brochure .section1 h1 span.item:nth-of-type(4){transition-delay:0.1725s}main.product_brochure .section1 h1 span.item:nth-of-type(5){transition-delay:0.0925s}main.product_brochure .section1 h1 span.item:nth-of-type(6){transition-delay:0.085s}main.product_brochure .section1 h1 span.item:nth-of-type(7){transition-delay:0.1725s}main.product_brochure .section1 h1 span.item:nth-of-type(8){transition-delay:0.2375s}main.product_brochure .section1 h1 span.item:nth-of-type(9){transition-delay:0.1175s}main.product_brochure .section1 h1 span.item:nth-of-type(10){transition-delay:0.035s}main.product_brochure .section1 h1 span.item:nth-of-type(11){transition-delay:0.2325s}main.product_brochure .section1 h1 span.item:nth-of-type(12){transition-delay:0.0725s}main.product_brochure .section1 h1 span.item:nth-of-type(13){transition-delay:0.1225s}main.product_brochure .section1 h1 span.item:nth-of-type(14){transition-delay:0.0425s}main.product_brochure .section1 h1 span.item:nth-of-type(15){transition-delay:0.2025s}main.product_brochure .section1 h1 span.item:nth-of-type(16){transition-delay:0.2075s}main.product_brochure .section1 h1 span.item:nth-of-type(17){transition-delay:0.185s}main.product_brochure .section1 h1 span.item:nth-of-type(18){transition-delay:0.225s}main.product_brochure .section1 h1 span.item:nth-of-type(19){transition-delay:0.065s}main.product_brochure .section1 h1 span.item:nth-of-type(20){transition-delay:0.0075s}main.product_brochure .section1 h1 span.item:nth-of-type(21){transition-delay:0.125s}main.product_brochure .section1 h1 span.item:nth-of-type(22){transition-delay:0.245s}main.product_brochure .section1 h1 span.item:nth-of-type(23){transition-delay:0.1675s}main.product_brochure .section1 h1 span.item:nth-of-type(24){transition-delay:0.2375s}main.product_brochure .section1 h1 span.item:nth-of-type(25){transition-delay:0.1725s}main.product_brochure .section1 h1 span.item:nth-of-type(26){transition-delay:0.015s}main.product_brochure .section1 h1 span.item:nth-of-type(27){transition-delay:0.0925s}main.product_brochure .section1 h1 span.item:nth-of-type(28){transition-delay:0.2225s}main.product_brochure .section1 h1 span.item:nth-of-type(29){transition-delay:0.025s}main.product_brochure .section1 h1 span.item:nth-of-type(30){transition-delay:0.2025s}main.product_brochure .section1.confirm .head .message,main.product_brochure .section1.confirm .head .required_message{display:none}main.product_brochure .section1.confirm .contents_input{display:none}main.product_brochure .section1.confirm .contents_confirm{display:block}main.product_brochure .section1.confirm .contents_thanks{display:none}main.product_brochure .section1.thanks .head{display:none}main.product_brochure .section1.thanks .contents_input{display:none}main.product_brochure .section1.thanks .contents_confirm{display:none}main.product_brochure .section1.thanks .contents_thanks{display:block}main.product_brochure .section1 .contents_input ul li.required .tit:after{content:\\\"*\\\";color:#e77171}main.product_brochure .section1 .contents_input ul li .tit{color:#5cb4c0}main.product_brochure .section1 .contents_input ul li input:-webkit-autofill,main.product_brochure .section1 .contents_input ul li textarea:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px #f0f4ff inset;-webkit-text-fill-color:#BASE_COLOR2 !important}main.product_brochure .section1 .contents_input ul li button,main.product_brochure .section1 .contents_input ul li input,main.product_brochure .section1 .contents_input ul li select,main.product_brochure .section1 .contents_input ul li textarea{font-family:inherit}main.product_brochure .section1 .contents_input ul li textarea{resize:none}main.product_brochure .section1 .contents_confirm{display:none}main.product_brochure .section1 .contents_thanks{display:none}main.product_brochure .section1 .contents_thanks h2 .sub_tit{color:#5cb4c0}main.product_brochure .section2.confirm{display:none}main.product_brochure .section2.thanks{display:none !important}main.product_brochure .section2 .contacts a,main.product_brochure .section2 .contacts a:visited{text-decoration:underline}@media screen and (min-width: 768px){main.product_brochure .section1{margin-bottom:6.2222222222rem}main.product_brochure .section1 .head{margin-top:27.7777777778rem;display:flex;flex-direction:column;align-items:center}main.product_brochure .section1 .head h1{text-align:center}main.product_brochure .section1 .head h1 .sub_tit{font-size:1.5555555556rem;letter-spacing:-0.01em;line-height:1;display:block}main.product_brochure .section1 .head h1 .tit{font-size:11.1111111111rem;padding-top:5.2222222222rem;letter-spacing:-0.02em;line-height:1.2;display:flex}main.product_brochure .section1 .head h1 .tit span.item.space{width:2.1111111111rem}main.product_brochure .section1 .head h1 .tit .sp{display:none !important}main.product_brochure .section1 .head .message{font-size:2rem;margin-top:5rem;letter-spacing:-0.01em;line-height:1.3}main.product_brochure .section1 .head .required_message{font-size:1.5555555556rem;line-height:1.3;margin-top:1.6666666667rem;letter-spacing:-0.01em}main.product_brochure .section1 .head .required_message .red{position:relative;top:.1111111111rem;color:#e77171;margin-right:.3333333333rem}main.product_brochure .section1 .head .offices{margin-top:12rem;margin-bottom:42.7777777778rem}main.product_brochure .section1 .head .offices li{margin-top:5.3333333333rem}main.product_brochure .section1 .head .offices li .tit{font-size:1.5555555556rem;font-weight:550;letter-spacing:-0.01em}main.product_brochure .section1 .head .offices li .txt{font-size:1.5555555556rem;margin-top:1.2222222222rem;line-height:1.3;letter-spacing:-0.01em;width:31.1111111111rem}main.product_brochure .section1 .head .offices li .tel,main.product_brochure .section1 .head .offices li .mail{font-size:1.5555555556rem;line-height:1.3;letter-spacing:-0.01em;width:31.1111111111rem}main.product_brochure .section1 .head .offices li .tel .he,main.product_brochure .section1 .head .offices li .mail .he{width:4.2222222222rem;display:inline-block}main.product_brochure .section1 .head .offices li .tel{margin-top:1.1111111111rem}main.product_brochure .section1 .contents{width:71.1111111111rem;margin:11.1111111111rem auto 20rem;font-size:1.7777777778rem;line-height:1.5}main.product_brochure .section1 .contents .bt{width:100%;background:linear-gradient(225.93deg, #073a86 0%, #2d849a 101.67%);border-radius:1.1111111111rem;color:#fff;text-align:center;font-size:1.3333333333rem;font-weight:600;padding:1.8888888889rem 0;letter-spacing:-0.01em;cursor:pointer;position:relative}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(1){-webkit-animation:common_blink .13s linear 0.04875s;animation:common_blink .13s linear 0.04875s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(2){-webkit-animation:common_blink .13s linear 0.02475s;animation:common_blink .13s linear 0.02475s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(3){-webkit-animation:common_blink .13s linear 0.07575s;animation:common_blink .13s linear 0.07575s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(4){-webkit-animation:common_blink .13s linear 0.00465s;animation:common_blink .13s linear 0.00465s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(5){-webkit-animation:common_blink .13s linear 0.00945s;animation:common_blink .13s linear 0.00945s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(6){-webkit-animation:common_blink .13s linear 0.01665s;animation:common_blink .13s linear 0.01665s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(7){-webkit-animation:common_blink .13s linear 0.063s;animation:common_blink .13s linear 0.063s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(8){-webkit-animation:common_blink .13s linear 0.111s;animation:common_blink .13s linear 0.111s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(9){-webkit-animation:common_blink .13s linear 0.1338s;animation:common_blink .13s linear 0.1338s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(10){-webkit-animation:common_blink .13s linear 0.05385s;animation:common_blink .13s linear 0.05385s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(11){-webkit-animation:common_blink .13s linear 0.14625s;animation:common_blink .13s linear 0.14625s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(12){-webkit-animation:common_blink .13s linear 0.0522s;animation:common_blink .13s linear 0.0522s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(13){-webkit-animation:common_blink .13s linear 0.09765s;animation:common_blink .13s linear 0.09765s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(14){-webkit-animation:common_blink .13s linear 0.1113s;animation:common_blink .13s linear 0.1113s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(15){-webkit-animation:common_blink .13s linear 0.14955s;animation:common_blink .13s linear 0.14955s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(16){-webkit-animation:common_blink .13s linear 0.1194s;animation:common_blink .13s linear 0.1194s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(17){-webkit-animation:common_blink .13s linear 0.0198s;animation:common_blink .13s linear 0.0198s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(18){-webkit-animation:common_blink .13s linear 0.1116s;animation:common_blink .13s linear 0.1116s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(19){-webkit-animation:common_blink .13s linear 0.015s;animation:common_blink .13s linear 0.015s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(20){-webkit-animation:common_blink .13s linear 0.07095s;animation:common_blink .13s linear 0.07095s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(21){-webkit-animation:common_blink .13s linear 0.12s;animation:common_blink .13s linear 0.12s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(22){-webkit-animation:common_blink .13s linear 0.00075s;animation:common_blink .13s linear 0.00075s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(23){-webkit-animation:common_blink .13s linear 0.0804s;animation:common_blink .13s linear 0.0804s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(24){-webkit-animation:common_blink .13s linear 0.05925s;animation:common_blink .13s linear 0.05925s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(25){-webkit-animation:common_blink .13s linear 0.05145s;animation:common_blink .13s linear 0.05145s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(26){-webkit-animation:common_blink .13s linear 0.02985s;animation:common_blink .13s linear 0.02985s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(27){-webkit-animation:common_blink .13s linear 0.117s;animation:common_blink .13s linear 0.117s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(28){-webkit-animation:common_blink .13s linear 0.0774s;animation:common_blink .13s linear 0.0774s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(29){-webkit-animation:common_blink .13s linear 0.01125s;animation:common_blink .13s linear 0.01125s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:hover span.item:nth-of-type(30){-webkit-animation:common_blink .13s linear 0.1353s;animation:common_blink .13s linear 0.1353s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents .bt:after{content:\\\"\\\";background-image:url(/assets/img/common/arrow_right.svg);position:absolute;background-size:cover;width:2.2222222222rem;height:2.2222222222rem;display:inline-block;right:1.3333333333rem;top:50%;transform:translate3d(0, -50%, 0)}main.product_brochure .section1 .contents_input ul{width:71.1111111111rem}main.product_brochure .section1 .contents_input ul li.item{margin-bottom:6.6666666667rem}main.product_brochure .section1 .contents_input ul li.item:nth-of-type(1){margin-right:6%}main.product_brochure .section1 .contents_input ul li.item:nth-of-type(1),main.product_brochure .section1 .contents_input ul li.item:nth-of-type(2){width:47%;display:inline-block}main.product_brochure .section1 .contents_input ul li.item .tit{font-size:2rem;letter-spacing:-0.01em;line-height:1.3;margin-left:2.2222222222rem;position:absolute;pointer-events:none;transform-origin:left top;transition:transform 350ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}main.product_brochure .section1 .contents_input ul li.item .tit.small{transform:scale(0.7) translate3d(0, -3.7777777778rem, 0)}main.product_brochure .section1 .contents_input ul li.item input,main.product_brochure .section1 .contents_input ul li.item textarea{width:100%;border:none;background-color:rgba(0,0,0,0);font-size:2rem;line-height:1.3;padding-left:0;margin-left:2.2222222222rem;letter-spacing:-0.01em}main.product_brochure .section1 .contents_input ul li.item textarea{margin-top:-.2222222222rem;height:5.1em}main.product_brochure .section1 .contents_input ul li.item .message{font-size:1.3333333333rem;color:#cf0000;font-weight:500}main.product_brochure .section1 .contents_input ul li.item .message:before{content:\\\"\\\";display:block;width:100%;height:1px;background-color:#bdc1c6;margin-top:1.2222222222rem}main.product_brochure .section1 .contents_input ul li.item .message label{display:none;font-size:1.3333333333rem;line-height:1;letter-spacing:-0.01em;margin-top:.7777777778rem;margin-left:1.7777777778rem}main.product_brochure .section1 .contents_input ul li.item.check_raw{margin-bottom:5.7777777778rem;font-size:1.5555555556rem;width:68.7%;display:inline-block}main.product_brochure .section1 .contents_input ul li.item.check_raw .field{display:flex;margin-bottom:.6666666667rem}main.product_brochure .section1 .contents_input ul li.item.check_raw .field:after{display:none}main.product_brochure .section1 .contents_input ul li.item.check_raw .message:before{display:none}main.product_brochure .section1 .contents_input ul li.item.check_raw input{position:relative;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:2.2222222222rem;height:2.2222222222rem;border:1px solid #bdc1c6;background-color:#f0f4ff;padding:0;margin-left:0rem;margin-right:.8888888889rem;cursor:pointer;border-radius:.4444444444rem;top:-.3333333333rem}main.product_brochure .section1 .contents_input ul li.item.check_raw input:checked{border:none;background:linear-gradient(225.93deg, #073a86 0%, #2d849a 101.67%)}main.product_brochure .section1 .contents_input ul li.item.check_raw input+label{position:relative;left:-2.3333333333rem;top:.4444444444rem}main.product_brochure .section1 .contents_input ul li.item.check_raw input+label:before{content:\\\"\\\";display:block;pointer-events:none}main.product_brochure .section1 .contents_input ul li.item.check_raw input:checked+label:after{content:\\\"\\\";display:block;position:absolute;top:0px;left:0px;width:.3333333333rem;height:1rem;transform:rotate(46deg);border-bottom:.2222222222rem solid #fff;border-right:.2222222222rem solid #fff}main.product_brochure .section1 .contents_input ul li.item.check_raw .txt{letter-spacing:-0.01em}main.product_brochure .section1 .contents_input ul li.item.check_raw .txt a{text-decoration:underline}main.product_brochure .section1 .contents_input ul li.item.check_raw .txt a:hover{-webkit-animation:common_blink .075s linear;animation:common_blink .075s linear;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section1 .contents_input ul li.item.btn_raw{width:31.3%;display:inline-block;vertical-align:top}main.product_brochure .section1 .contents_input ul li.item.error .message:before{background-color:#cf0000}main.product_brochure .section1 .contents_input ul li.item.error .message label{display:block}main.product_brochure .section1 .contents_confirm{margin-bottom:18rem}main.product_brochure .section1 .contents_confirm ul li.item{display:flex;align-items:baseline;margin-bottom:3.7777777778rem;padding-bottom:3.3333333333rem;border-bottom:1px solid #bdc1c6}main.product_brochure .section1 .contents_confirm ul li.item .tit{font-size:2rem;color:#3098a6;width:31.2%;font-weight:500;line-height:1.3;letter-spacing:-0.01em}main.product_brochure .section1 .contents_confirm ul li.item .user_data{font-size:2rem;width:68.8%;font-weight:400;line-height:1.3;letter-spacing:-0.01em}main.product_brochure .section1 .contents_confirm ul li.item.check_raw{margin-bottom:7.1111111111rem}main.product_brochure .section1 .contents_confirm ul li.item.btn_raw{border:none;display:flex;margin-top:-.4444444444rem;justify-content:space-between}main.product_brochure .section1 .contents_confirm .bt{width:200px}main.product_brochure .section1 .contents_confirm .back_bt{background:#e4e9f5;color:#213143}main.product_brochure .section1 .contents_confirm .back_bt:after{content:none}main.product_brochure .section1 .contents_thanks{width:100vw;margin-left:13.3333333333rem;margin-top:31.6666666667rem;margin-bottom:21.3333333333rem}main.product_brochure .section1 .contents_thanks h2 .sub_tit{font-size:1.5555555556rem;letter-spacing:-0.01em;position:absolute;line-height:1;display:block}main.product_brochure .section1 .contents_thanks h2 .tit{font-size:11.1111111111rem;padding-top:6.6666666667rem;letter-spacing:-0.02em;line-height:.9;display:block}main.product_brochure .section1 .contents_thanks h2 .tit span.item.space{width:1.6666666667rem}main.product_brochure .section1 .contents_thanks h2 .tit .sp{display:none !important}main.product_brochure .section1 .contents_thanks .message{position:relative;line-height:1.3;font-size:2rem;margin-top:6.8888888889rem;letter-spacing:-0.01em}main.product_brochure .section1 .contents_thanks .btn{margin-top:3.3333333333rem}main.product_brochure .section1 .contents_thanks .btn a:before{background-image:url(/assets/img/common/icon-link2.svg)}main.product_brochure .section2{margin-left:41.7vw;margin-top:-23.6666666667rem;width:71.1111111111rem;margin-bottom:27.2222222222rem;border-top:1px solid #e1e4e5}main.product_brochure .section2 .chunk{display:flex}main.product_brochure .section2 .contacts{width:100%}main.product_brochure .section2 .contacts li{margin-top:5rem;padding-bottom:4.4444444444rem;display:flex;border-bottom:1px solid #e1e4e5}main.product_brochure .section2 .contacts li:last-of-type{margin-bottom:0}main.product_brochure .section2 .contacts li .tit{font-size:1.5555555556rem;font-weight:600;line-height:1;letter-spacing:-0.01em;width:31.2%}main.product_brochure .section2 .contacts li .address{font-size:1.5555555556rem;line-height:1.3;letter-spacing:-0.01em;position:relative;top:-.2222222222rem;width:51.2%}main.product_brochure .section2 .contacts li .copy{font-size:1.5555555556rem;line-height:1.3;letter-spacing:-0.01em;background:linear-gradient(225.93deg, #073a86 0%, #2d849a 101.67%);-webkit-background-clip:text;-webkit-text-fill-color:rgba(0,0,0,0);background-clip:text;text-fill-color:rgba(0,0,0,0);text-align:right;width:17.6%;position:relative;top:-.2222222222rem;cursor:pointer}main.product_brochure .section2 .contacts li a:hover{-webkit-animation:common_blink .1s linear;animation:common_blink .1s linear;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.product_brochure .section2 .offices{display:none}main.product_brochure_ja .section1 .head .message{font-size:1.5555555556rem;line-height:1.75}main.product_brochure_ja .section1 .head .required_message{font-size:1.3333333333rem;line-height:1.75}main.product_brochure_ja .section1 .head .offices .txt.font2{font-size:1.3333333333rem;line-height:1.55}main.product_brochure_ja .section1 .contents_input ul li.item input,main.product_brochure_ja .section1 .contents_input ul li.item textarea{font-size:1.7777777778rem;line-height:1.75}main.product_brochure_ja .section1 .contents_input ul li.item.check_raw .txt{font-size:1.3333333333rem;line-height:1.75}main.product_brochure_ja .section1 .contents_confirm ul li.item .tit.font2{font-size:1.5555555556rem}main.product_brochure_ja .section1 .contents_confirm ul li.item .user_data{font-size:1.7777777778rem;line-height:1.75}}@media screen and (max-width: 767px){main.product_brochure .section1{width:89.5vw;margin:0 auto 42.6666666667rem}main.product_brochure .section1 .head{margin-top:48.64rem;display:flex;flex-direction:column;align-items:center}main.product_brochure .section1 .head h1{text-align:center}main.product_brochure .section1 .head h1 .sub_tit{font-size:5.12rem;display:block}main.product_brochure .section1 .head h1 .tit{font-size:23.04rem;margin-top:9.8133333333rem;display:flex;flex-direction:column;align-items:center}main.product_brochure .section1 .head h1 span.item.space{width:2.56rem}main.product_brochure .section1 .head .message{font-size:5.9733333333rem;line-height:1.3;font-weight:400;margin-top:25.6rem;letter-spacing:-0.01em}main.product_brochure .section1 .head .required_message{font-size:5.12rem;line-height:1.3;margin-top:7.68rem;letter-spacing:-0.01em}main.product_brochure .section1 .head .required_message .red{position:relative;top:.4266666667rem;color:#e77171;margin-right:1.28rem}main.product_brochure .section1 .head .offices{display:none}main.product_brochure .section1 .contents{font-size:5.9733333333rem;line-height:1.5;margin-top:33.28rem}main.product_brochure .section1 .contents .bt{width:100%;background:linear-gradient(225.93deg, #073a86 0%, #2d849a 101.67%);border-radius:4.2666666667rem;color:#fff;text-align:center;font-size:5.12rem;font-weight:600;padding:7.2533333333rem 0;letter-spacing:-0.01em;position:relative}main.product_brochure .section1 .contents .bt:after{content:\\\"\\\";background-image:url(/assets/img/common/arrow_right.svg);position:absolute;background-size:cover;width:8.5333333333rem;height:8.5333333333rem;display:inline-block;right:5.12rem;top:50%;transform:translate3d(0, -50%, 0)}main.product_brochure .section1 .contents_input ul li.item{margin-bottom:20.0533333333rem}main.product_brochure .section1 .contents_input ul li.item .tit{font-size:5.9733333333rem;letter-spacing:-0.01em;line-height:1.3;margin-left:4.6933333333rem;position:absolute;pointer-events:none;transform-origin:left top;transition:transform 350ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}main.product_brochure .section1 .contents_input ul li.item .tit.small{transform:scale(0.7) translate3d(0, -8.5333333333rem, 0)}main.product_brochure .section1 .contents_input ul li.item input,main.product_brochure .section1 .contents_input ul li.item textarea{width:100%;border:none;background-color:rgba(0,0,0,0);font-size:5.9733333333rem;letter-spacing:-0.01em;line-height:1.3;padding-left:0;margin-left:4.6933333333rem}main.product_brochure .section1 .contents_input ul li.item textarea{margin-top:-.4266666667rem;height:8.6em}main.product_brochure .section1 .contents_input ul li.item .message{font-size:5.12rem;color:#cf0000;font-weight:500}main.product_brochure .section1 .contents_input ul li.item .message:before{content:\\\"\\\";display:block;width:100%;height:1px;background-color:#bdc1c6;margin-top:6.8266666667rem}main.product_brochure .section1 .contents_input ul li.item .message label{display:none;font-size:5.12rem;line-height:1;letter-spacing:-0.01em;margin-top:4.2666666667rem;margin-left:4.2666666667rem}main.product_brochure .section1 .contents_input ul li.item.textarea_row{margin-bottom:13.2266666667rem}main.product_brochure .section1 .contents_input ul li.item.check_raw{margin-bottom:9.3866666667rem;font-size:5.12rem}main.product_brochure .section1 .contents_input ul li.item.check_raw .field{display:flex;margin-bottom:4.6933333333rem}main.product_brochure .section1 .contents_input ul li.item.check_raw .message:before{display:none}main.product_brochure .section1 .contents_input ul li.item.check_raw input{position:relative;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:7.68rem;height:7.68rem;border:1px solid #bdc1c6;background-color:#f0f4ff;padding:0;margin-left:0rem;margin-right:2.56rem;cursor:pointer;border-radius:1.7066666667rem;top:-1.28rem}main.product_brochure .section1 .contents_input ul li.item.check_raw input:checked{border:none;background:linear-gradient(225.93deg, #073a86 0%, #2d849a 101.67%)}main.product_brochure .section1 .contents_input ul li.item.check_raw input+label{position:relative;left:-7.2533333333rem;top:1.7066666667rem}main.product_brochure .section1 .contents_input ul li.item.check_raw input+label:before{content:\\\"\\\";display:block;pointer-events:none}main.product_brochure .section1 .contents_input ul li.item.check_raw input:checked+label:after{content:\\\"\\\";display:block;position:absolute;top:0px;left:0px;width:1.0666666667rem;height:2.56rem;transform:rotate(46deg);border-bottom:.64rem solid #fff;border-right:.64rem solid #fff}main.product_brochure .section1 .contents_input ul li.item.check_raw .txt{letter-spacing:-0.01em}main.product_brochure .section1 .contents_input ul li.item.check_raw .txt a{text-decoration:underline}main.product_brochure .section1 .contents_input ul li.item.error .message:before{background-color:#cf0000}main.product_brochure .section1 .contents_input ul li.item.error .message label{display:block}main.product_brochure .section1 .contents_confirm{margin-bottom:-8.5333333333rem}main.product_brochure .section1 .contents_confirm ul li.item{margin-bottom:10.88rem;padding-bottom:9.3866666667rem;border-bottom:1px solid #bdc1c6}main.product_brochure .section1 .contents_confirm ul li.item .tit{font-size:5.9733333333rem;color:#3098a6;line-height:1.3;letter-spacing:-0.01em}main.product_brochure .section1 .contents_confirm ul li.item .user_data{font-size:7.68rem;line-height:1.3;letter-spacing:-0.01em;margin-top:2.9866666667rem}main.product_brochure .section1 .contents_confirm ul li.item.check_raw{margin-bottom:27.3066666667rem}main.product_brochure .section1 .contents_confirm ul li.item.btn_raw{margin-top:-13.6533333333rem;text-align:center;display:flex;flex-direction:column-reverse;border:none}main.product_brochure .section1 .contents_confirm ul li.item.btn_raw .back_bt{background:#e4e9f5;color:#213143;margin-top:4.2666666667rem}main.product_brochure .section1 .contents_confirm ul li.item.btn_raw .back_bt:after{content:none}main.product_brochure .section1 .contents_thanks{margin-top:48.64rem}main.product_brochure .section1 .contents_thanks h2 .sub_tit{font-size:5.12rem;line-height:1;left:-0.01em;display:block}main.product_brochure .section1 .contents_thanks h2 .tit{font-size:23.04rem;margin-top:9.8133333333rem;line-height:1;letter-spacing:-0.02em;display:block}main.product_brochure .section1 .contents_thanks .message{font-size:5.9733333333rem;margin-top:25.6rem;line-height:1.3;letter-spacing:-0.01em}main.product_brochure .section1 .contents_thanks .btn{margin-top:13.6533333333rem}main.product_brochure .section1 .contents_thanks .btn a:before{background-image:url(/assets/img/common/icon-link2.svg)}main.product_brochure .section2{margin-bottom:51.2rem}main.product_brochure .section2.confirm{display:block}main.product_brochure .section2.confirm .offices{display:none}main.product_brochure .section2 .section_child{width:72vw;margin:0 auto}main.product_brochure .section2 h2{font-size:15.36rem;letter-spacing:.03em}main.product_brochure .section2 .chunk{margin-top:20.9066666667rem}main.product_brochure .section2 .contacts{margin-top:26.88rem;border-top:1px solid #e1e4e5}main.product_brochure .section2 .contacts li{padding-top:14.9333333333rem;padding-bottom:13.2266666667rem;border-bottom:1px solid #e1e4e5;position:relative}main.product_brochure .section2 .contacts li .tit{font-size:5.12rem;font-weight:600;letter-spacing:-0.01em;line-height:1}main.product_brochure .section2 .contacts li .address{font-size:5.12rem;letter-spacing:-0.01em;line-height:1.3;margin-top:5.9733333333rem}main.product_brochure .section2 .contacts li .copy{position:absolute;font-size:5.12rem;line-height:1.3;letter-spacing:-0.01em;background:linear-gradient(225.93deg, #073a86 0%, #2d849a 101.67%);-webkit-background-clip:text;-webkit-text-fill-color:rgba(0,0,0,0);background-clip:text;text-fill-color:rgba(0,0,0,0);margin-top:-6.8266666667rem;right:.8533333333rem}main.product_brochure .section2 .offices{margin-top:26.88rem}main.product_brochure .section2 .offices li{margin-bottom:17.92rem}main.product_brochure .section2 .offices li .tit{line-height:1;font-size:5.12rem;font-weight:600}main.product_brochure .section2 .offices li .txt{font-size:5.12rem;line-height:1.3;letter-spacing:-0.01em;margin-top:5.9733333333rem}main.product_brochure .section2 .offices li .tel,main.product_brochure .section2 .offices li .mail{font-size:5.12rem;line-height:1.3;letter-spacing:-0.01em}main.product_brochure .section2 .offices li .tel .he,main.product_brochure .section2 .offices li .mail .he{width:13.6533333333rem;display:inline-block}main.product_brochure .section2 .offices li .tel{margin-top:4.2666666667rem}main.product_brochure_ja .section1 .head .message{font-size:5.12rem;line-height:1.75}main.product_brochure_ja .section1 .head .required_message{font-size:4.2666666667rem;line-height:1.75}main.product_brochure_ja .section1 .contents_input ul li.item input,main.product_brochure_ja .section1 .contents_input ul li.item textarea{font-size:5.12rem;line-height:1.75}main.product_brochure_ja .section1 .contents_input ul li.item.check_raw .txt{font-size:4.2666666667rem;line-height:1.75}main.product_brochure_ja .section1 .contents_confirm ul li.item .tit.font2{font-size:5.12rem}main.product_brochure_ja .section1 .contents_confirm ul li.item .user_data{font-size:5.9733333333rem;line-height:1.75}main.product_brochure_ja .section2 .offices .txt.font2{font-size:4.2666666667rem;line-height:1.5}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/scss/product_brochure.scss\",\"webpack://./src/scss/_variable.scss\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"@import 'variable';\\n@import 'mixin';\\n\\n/*\\nz-index\\n\\n*/\\n\\n//For COMMON LAYOUT\\nmain.product_brochure {\\n .section1 {\\n h1 {\\n line-height: 1;\\n\\n &.show {\\n span.item {\\n animation-name: common_blink;\\n animation-duration: 0.1s;\\n animation-timing-function: linear;\\n animation-iteration-count: 4;\\n transform: rotate3d(1, 1, 1, 0);\\n }\\n }\\n\\n .sub_tit {\\n color: $SUB_COLOR1;\\n span {\\n //opacity: 0;\\n transition: opacity 300ms;\\n transition-timing-function: $easeOutQuart;\\n\\n @for $i from 1 through 32 {\\n &:nth-of-type(#{$i}) {\\n transition-delay: 0.1 + 0.01 * $i + s;\\n }\\n }\\n }\\n }\\n\\n span.span_chunk {\\n display: flex;\\n perspective: 300px;\\n }\\n\\n span.item {\\n white-space: nowrap;\\n will-change: transform;\\n transform: rotate3d(1, 0, 0, 180deg);\\n backface-visibility: hidden;\\n transition: transform 500ms;\\n transition-timing-function: $easeOutQuart;\\n\\n @for $i from 1 through 30 {\\n &:nth-of-type(#{$i}) {\\n $rand: random(100) * 0.0025;\\n transition-delay: $rand + s;\\n }\\n }\\n }\\n }\\n\\n &.confirm {\\n .head {\\n .message,\\n .required_message {\\n display: none;\\n }\\n }\\n\\n .contents_input {\\n display: none;\\n }\\n\\n .contents_confirm {\\n display: block;\\n }\\n\\n .contents_thanks {\\n display: none;\\n }\\n }\\n\\n &.thanks {\\n .head {\\n display: none;\\n }\\n\\n .contents_input {\\n display: none;\\n }\\n\\n .contents_confirm {\\n display: none;\\n }\\n\\n .contents_thanks {\\n display: block;\\n }\\n }\\n\\n .contents_input {\\n ul {\\n li {\\n &.required {\\n .tit {\\n &:after {\\n content: '*';\\n color: #e77171;\\n }\\n }\\n }\\n\\n .tit {\\n color: $SUB_COLOR1;\\n }\\n\\n //Chrome オートコンプリート時のスタイルを回避ここから\\n input:-webkit-autofill,\\n textarea:-webkit-autofill {\\n -webkit-box-shadow: 0 0 0 1000px #f0f4ff inset;\\n -webkit-text-fill-color: #BASE_COLOR2 !important;\\n }\\n //Chrome オートコンプリート時のスタイルを回避ここまで\\n\\n button,\\n input,\\n select,\\n textarea {\\n font-family: inherit;\\n }\\n\\n textarea {\\n resize: none;\\n }\\n }\\n }\\n }\\n\\n .contents_confirm {\\n display: none;\\n }\\n\\n .contents_thanks {\\n display: none;\\n h2 {\\n .sub_tit {\\n color: $SUB_COLOR1;\\n }\\n }\\n }\\n }\\n\\n .section2 {\\n &.confirm {\\n display: none;\\n }\\n\\n &.thanks {\\n display: none !important;\\n }\\n\\n .contacts {\\n a,\\n a:visited {\\n text-decoration: underline;\\n }\\n }\\n }\\n}\\n\\n//For PC LAYOUT\\n@media screen and (min-width: $BP + px) {\\n main.product_brochure {\\n .section1 {\\n margin-bottom: size-variable-pc(56);\\n\\n .section_child {\\n }\\n\\n .head {\\n margin-top: size-variable-pc(250);\\n // margin-left: size-variable-pc(120);\\n\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n\\n h1 {\\n text-align: center;\\n\\n .sub_tit {\\n font-size: size-variable-pc(14);\\n letter-spacing: -0.01em;\\n line-height: 1;\\n display: block;\\n }\\n\\n .tit {\\n font-size: size-variable-pc(100);\\n padding-top: size-variable-pc(47);\\n letter-spacing: -0.02em;\\n line-height: 1.2;\\n display: flex;\\n span.item.space {\\n width: size-variable-pc(19);\\n }\\n\\n .sp {\\n display: none !important;\\n }\\n }\\n }\\n\\n .message {\\n font-size: size-variable-pc(18);\\n margin-top: size-variable-pc(45);\\n letter-spacing: -0.01em;\\n line-height: 1.3;\\n // width: size-variable-pc(320);\\n }\\n\\n .required_message {\\n font-size: size-variable-pc(14);\\n line-height: 1.3;\\n margin-top: size-variable-pc(15);\\n letter-spacing: -0.01em;\\n .red {\\n position: relative;\\n top: size-variable-pc(1);\\n color: #e77171;\\n margin-right: size-variable-pc(3);\\n }\\n }\\n\\n .offices {\\n margin-top: size-variable-pc(108);\\n margin-bottom: size-variable-pc(385);\\n li {\\n margin-top: size-variable-pc(48);\\n\\n .tit {\\n font-size: size-variable-pc(14);\\n font-weight: 550;\\n letter-spacing: -0.01em;\\n }\\n\\n .txt {\\n font-size: size-variable-pc(14);\\n margin-top: size-variable-pc(11);\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n width: size-variable-pc(280);\\n }\\n\\n .tel,\\n .mail {\\n font-size: size-variable-pc(14);\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n width: size-variable-pc(280);\\n .he {\\n width: size-variable-pc(38);\\n display: inline-block;\\n }\\n }\\n\\n .tel {\\n margin-top: size-variable-pc(10);\\n }\\n\\n .mail {\\n }\\n }\\n }\\n }\\n\\n .contents {\\n width: size-variable-pc(640);\\n margin: size-variable-pc(100) auto size-variable-pc(180);\\n font-size: size-variable-pc(16);\\n line-height: 1.5;\\n\\n .bt {\\n width: 100%;\\n background: linear-gradient(\\n 225.93deg,\\n #073a86 0%,\\n #2d849a 101.67%\\n );\\n border-radius: size-variable-pc(10);\\n color: #fff;\\n text-align: center;\\n font-size: size-variable-pc(12);\\n font-weight: 600;\\n padding: size-variable-pc(17) 0;\\n letter-spacing: -0.01em;\\n cursor: pointer;\\n position: relative;\\n\\n &:hover {\\n span.item {\\n @for $i from 1 through 30 {\\n &:nth-of-type(#{$i}) {\\n $rand: random(1000) * 0.00015;\\n animation: common_blink\\n 0.13s\\n linear\\n $rand +\\n s;\\n animation-iteration-count: 2;\\n }\\n }\\n }\\n }\\n\\n &:after {\\n content: '';\\n background-image: url(/assets/img/common/arrow_right.svg);\\n position: absolute;\\n background-size: cover;\\n width: size-variable-pc(20);\\n height: size-variable-pc(20);\\n display: inline-block;\\n right: size-variable-pc(12);\\n top: 50%;\\n transform: translate3d(0, -50%, 0);\\n }\\n }\\n }\\n\\n .contents_input {\\n ul {\\n width: size-variable-pc(640);\\n\\n li.item {\\n margin-bottom: size-variable-pc(60);\\n\\n &:nth-of-type(1) {\\n margin-right: 6%;\\n }\\n\\n &:nth-of-type(1),\\n &:nth-of-type(2) {\\n width: 47%;\\n display: inline-block;\\n }\\n\\n .tit {\\n font-size: size-variable-pc(18);\\n letter-spacing: -0.01em;\\n line-height: 1.3;\\n margin-left: size-variable-pc(20);\\n position: absolute;\\n pointer-events: none;\\n transform-origin: left top;\\n transition: transform 350ms;\\n transition-timing-function: $easeOutQuart;\\n\\n &.small {\\n transform: scale(0.7)\\n translate3d(0, size-variable-pc(-34), 0);\\n }\\n }\\n\\n input,\\n textarea {\\n width: 100%;\\n border: none;\\n background-color: transparent;\\n font-size: size-variable-pc(18);\\n line-height: 1.3;\\n padding-left: 0;\\n margin-left: size-variable-pc(20);\\n letter-spacing: -0.01em;\\n }\\n\\n textarea {\\n margin-top: size-variable-pc(-2);\\n height: calc(1.5em * 3.4);\\n }\\n\\n .message {\\n font-size: size-variable-pc(12);\\n color: #cf0000;\\n font-weight: 500;\\n\\n &:before {\\n content: '';\\n display: block;\\n width: 100%;\\n height: 1px;\\n background-color: $SUB_COLOR2;\\n margin-top: size-variable-pc(11);\\n }\\n\\n label {\\n display: none;\\n font-size: size-variable-pc(12);\\n line-height: 1;\\n letter-spacing: -0.01em;\\n margin-top: size-variable-pc(7);\\n margin-left: size-variable-pc(16);\\n }\\n }\\n\\n &.check_raw {\\n margin-bottom: size-variable-pc(52);\\n font-size: size-variable-pc(14);\\n width: 68.7%;\\n display: inline-block;\\n .field {\\n display: flex;\\n margin-bottom: size-variable-pc(6);\\n &:after {\\n display: none;\\n }\\n }\\n\\n .message {\\n &:before {\\n display: none;\\n }\\n }\\n\\n input {\\n position: relative;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n width: size-variable-pc(20);\\n height: size-variable-pc(20);\\n border: 1px solid $SUB_COLOR2;\\n background-color: #f0f4ff;\\n padding: 0;\\n margin-left: size-variable-pc(0);\\n margin-right: size-variable-pc(8);\\n cursor: pointer;\\n border-radius: size-variable-pc(4);\\n top: size-variable-pc(-3);\\n &:checked {\\n border: none;\\n background: linear-gradient(\\n 225.93deg,\\n #073a86 0%,\\n #2d849a 101.67%\\n );\\n }\\n\\n & + label {\\n position: relative;\\n left: size-variable-pc(-21);\\n top: size-variable-pc(4);\\n }\\n\\n & + label:before {\\n content: '';\\n display: block;\\n pointer-events: none;\\n }\\n\\n &:checked + label {\\n }\\n\\n &:checked + label:after {\\n content: '';\\n display: block;\\n position: absolute;\\n top: 0px;\\n left: 0px;\\n width: size-variable-pc(3);\\n height: size-variable-pc(9);\\n transform: rotate(46deg);\\n border-bottom: size-variable-pc(2) solid\\n #fff;\\n border-right: size-variable-pc(2) solid #fff;\\n }\\n }\\n\\n .txt {\\n letter-spacing: -0.01em;\\n a {\\n text-decoration: underline;\\n &:hover {\\n animation: common_blink 0.075s linear;\\n animation-iteration-count: 2;\\n }\\n }\\n }\\n }\\n\\n &.btn_raw {\\n width: 31.3%;\\n display: inline-block;\\n vertical-align: top;\\n }\\n\\n &.error {\\n .message {\\n &:before {\\n background-color: #cf0000;\\n }\\n\\n label {\\n display: block;\\n }\\n }\\n }\\n }\\n }\\n }\\n\\n .contents_confirm {\\n margin-bottom: size-variable-pc(162);\\n ul {\\n li.item {\\n display: flex;\\n align-items: baseline;\\n margin-bottom: size-variable-pc(34);\\n padding-bottom: size-variable-pc(30);\\n border-bottom: 1px solid $SUB_COLOR2;\\n\\n .tit {\\n font-size: size-variable-pc(18);\\n color: $KEY_COLOR1;\\n width: 31.2%;\\n font-weight: 500;\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n }\\n\\n .user_data {\\n font-size: size-variable-pc(18);\\n width: 68.8%;\\n font-weight: 400;\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n }\\n\\n &.check_raw {\\n margin-bottom: size-variable-pc(64);\\n }\\n\\n &.btn_raw {\\n border: none;\\n display: flex;\\n margin-top: size-variable-pc(-4);\\n justify-content: space-between;\\n }\\n }\\n }\\n\\n .bt {\\n width: 200px;\\n }\\n\\n .back_bt {\\n background: #e4e9f5;\\n color: $BASE_COLOR2;\\n &:after {\\n content: none;\\n }\\n }\\n }\\n\\n .contents_thanks {\\n width: 100vw;\\n margin-left: size-variable-pc(120);\\n margin-top: size-variable-pc(285);\\n margin-bottom: size-variable-pc(192);\\n\\n h2 {\\n .sub_tit {\\n font-size: size-variable-pc(14);\\n letter-spacing: -0.01em;\\n position: absolute;\\n line-height: 1;\\n display: block;\\n }\\n\\n .tit {\\n font-size: size-variable-pc(100);\\n padding-top: size-variable-pc(60);\\n letter-spacing: -0.02em;\\n line-height: 0.9;\\n display: block;\\n span.item.space {\\n width: size-variable-pc(15);\\n }\\n\\n .sp {\\n display: none !important;\\n }\\n }\\n }\\n\\n .message {\\n position: relative;\\n line-height: 1.3;\\n font-size: size-variable-pc(18);\\n margin-top: size-variable-pc(62);\\n letter-spacing: -0.01em;\\n }\\n\\n .btn {\\n margin-top: size-variable-pc(30);\\n a {\\n &:before {\\n background-image: url(/assets/img/common/icon-link2.svg);\\n }\\n }\\n }\\n }\\n }\\n\\n .section2 {\\n margin-left: 41.7vw;\\n margin-top: size-variable-pc(-213);\\n width: size-variable-pc(640);\\n margin-bottom: size-variable-pc(245);\\n border-top: 1px solid #e1e4e5;\\n\\n .chunk {\\n display: flex;\\n }\\n\\n .contacts {\\n width: 100%;\\n\\n li {\\n margin-top: size-variable-pc(45);\\n padding-bottom: size-variable-pc(40);\\n display: flex;\\n border-bottom: 1px solid #e1e4e5;\\n\\n &:last-of-type {\\n margin-bottom: 0;\\n }\\n\\n .tit {\\n font-size: size-variable-pc(14);\\n font-weight: 600;\\n line-height: 1;\\n letter-spacing: -0.01em;\\n width: 31.2%;\\n }\\n\\n .address {\\n font-size: size-variable-pc(14);\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n position: relative;\\n top: size-variable-pc(-2);\\n width: 51.2%;\\n }\\n\\n .copy {\\n font-size: size-variable-pc(14);\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n background: linear-gradient(\\n 225.93deg,\\n #073a86 0%,\\n #2d849a 101.67%\\n );\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n background-clip: text;\\n text-fill-color: transparent;\\n text-align: right;\\n width: 17.6%;\\n position: relative;\\n top: size-variable-pc(-2);\\n cursor: pointer;\\n }\\n\\n a:hover {\\n animation: common_blink 0.1s linear;\\n animation-iteration-count: 2;\\n }\\n }\\n }\\n\\n .offices {\\n display: none;\\n }\\n }\\n }\\n\\n main.product_brochure_ja {\\n .section1 {\\n .head {\\n .message {\\n font-size: size-variable-pc(14);\\n line-height: 1.75;\\n }\\n\\n .required_message {\\n font-size: size-variable-pc(12);\\n line-height: 1.75;\\n }\\n\\n .offices {\\n .txt.font2 {\\n font-size: size-variable-pc(12);\\n line-height: 1.55;\\n }\\n }\\n }\\n\\n .contents_input {\\n ul {\\n li.item {\\n input,\\n textarea {\\n font-size: size-variable-pc(16);\\n line-height: 1.75;\\n }\\n\\n &.check_raw {\\n .txt {\\n font-size: size-variable-pc(12);\\n line-height: 1.75;\\n }\\n }\\n }\\n }\\n }\\n\\n .contents_confirm {\\n ul {\\n li.item {\\n .tit.font2 {\\n font-size: size-variable-pc(14);\\n }\\n\\n .user_data {\\n font-size: size-variable-pc(16);\\n line-height: 1.75;\\n }\\n }\\n }\\n }\\n }\\n }\\n}\\n\\n//For TABLET/SP LAYOUT\\n@media screen and (max-width: ($BP - 1) + px) {\\n main.product_brochure {\\n .section1 {\\n width: 89.5vw;\\n margin: 0 auto size-variable-sp(100);\\n\\n .head {\\n margin-top: size-variable-sp(114);\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n\\n h1 {\\n text-align: center;\\n .sub_tit {\\n font-size: size-variable-sp(12);\\n display: block;\\n }\\n\\n .tit {\\n font-size: size-variable-sp(54);\\n margin-top: size-variable-sp(23);\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n }\\n\\n span.item.space {\\n width: size-variable-sp(6);\\n }\\n }\\n\\n .message {\\n font-size: size-variable-sp(14);\\n line-height: 1.3;\\n font-weight: 400;\\n margin-top: size-variable-sp(60);\\n letter-spacing: -0.01em;\\n }\\n\\n .required_message {\\n font-size: size-variable-sp(12);\\n line-height: 1.3;\\n margin-top: size-variable-sp(18);\\n letter-spacing: -0.01em;\\n\\n .red {\\n position: relative;\\n top: size-variable-sp(1);\\n color: #e77171;\\n margin-right: size-variable-sp(3);\\n }\\n }\\n .offices {\\n display: none;\\n }\\n }\\n\\n .contents {\\n font-size: size-variable-sp(14);\\n line-height: 1.5;\\n margin-top: size-variable-sp(78);\\n\\n .bt {\\n width: 100%;\\n background: linear-gradient(\\n 225.93deg,\\n #073a86 0%,\\n #2d849a 101.67%\\n );\\n border-radius: size-variable-sp(10);\\n color: #fff;\\n text-align: center;\\n font-size: size-variable-sp(12);\\n font-weight: 600;\\n padding: size-variable-sp(17) 0;\\n letter-spacing: -0.01em;\\n position: relative;\\n\\n &:after {\\n content: '';\\n background-image: url(/assets/img/common/arrow_right.svg);\\n position: absolute;\\n background-size: cover;\\n width: size-variable-sp(20);\\n height: size-variable-sp(20);\\n display: inline-block;\\n right: size-variable-sp(12);\\n top: 50%;\\n transform: translate3d(0, -50%, 0);\\n }\\n }\\n }\\n\\n .contents_input {\\n ul {\\n li.item {\\n margin-bottom: size-variable-sp(47);\\n .tit {\\n font-size: size-variable-sp(14);\\n letter-spacing: -0.01em;\\n line-height: 1.3;\\n margin-left: size-variable-sp(11);\\n position: absolute;\\n pointer-events: none;\\n transform-origin: left top;\\n transition: transform 350ms;\\n transition-timing-function: $easeOutQuart;\\n\\n &.small {\\n transform: scale(0.7)\\n translate3d(0, size-variable-sp(-20), 0);\\n }\\n }\\n\\n input,\\n textarea {\\n width: 100%;\\n border: none;\\n background-color: transparent;\\n font-size: size-variable-sp(14);\\n letter-spacing: -0.01em;\\n line-height: 1.3;\\n padding-left: 0;\\n margin-left: size-variable-sp(11);\\n }\\n\\n textarea {\\n margin-top: size-variable-sp(-1);\\n height: 8.6em;\\n }\\n\\n .message {\\n font-size: size-variable-sp(12);\\n color: #cf0000;\\n font-weight: 500;\\n\\n &:before {\\n content: '';\\n display: block;\\n width: 100%;\\n height: 1px;\\n background-color: $SUB_COLOR2;\\n margin-top: size-variable-sp(16);\\n }\\n\\n label {\\n display: none;\\n font-size: size-variable-sp(12);\\n line-height: 1;\\n letter-spacing: -0.01em;\\n margin-top: size-variable-sp(10);\\n margin-left: size-variable-sp(10);\\n }\\n }\\n\\n &.textarea_row {\\n margin-bottom: size-variable-sp(31);\\n }\\n\\n &.check_raw {\\n margin-bottom: size-variable-sp(22);\\n font-size: size-variable-sp(12);\\n\\n .field {\\n display: flex;\\n margin-bottom: size-variable-sp(11);\\n }\\n\\n .message {\\n &:before {\\n display: none;\\n }\\n }\\n\\n input {\\n position: relative;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n width: size-variable-sp(18);\\n height: size-variable-sp(18);\\n border: 1px solid $SUB_COLOR2;\\n background-color: #f0f4ff;\\n padding: 0;\\n margin-left: size-variable-sp(0);\\n margin-right: size-variable-sp(6);\\n cursor: pointer;\\n border-radius: size-variable-sp(4);\\n top: size-variable-sp(-3);\\n &:checked {\\n border: none;\\n background: linear-gradient(\\n 225.93deg,\\n #073a86 0%,\\n #2d849a 101.67%\\n );\\n }\\n & + label {\\n position: relative;\\n left: size-variable-sp(-17);\\n top: size-variable-sp(4);\\n }\\n\\n & + label:before {\\n content: '';\\n display: block;\\n pointer-events: none;\\n }\\n\\n &:checked + label {\\n }\\n\\n &:checked + label:after {\\n content: '';\\n display: block;\\n position: absolute;\\n top: 0px;\\n left: 0px;\\n width: size-variable-sp(2.5);\\n height: size-variable-sp(6);\\n transform: rotate(46deg);\\n border-bottom: size-variable-sp(1.5) solid\\n #fff;\\n border-right: size-variable-sp(1.5) solid\\n #fff;\\n }\\n }\\n\\n .txt {\\n letter-spacing: -0.01em;\\n a {\\n text-decoration: underline;\\n }\\n }\\n }\\n\\n &.error {\\n .message {\\n &:before {\\n background-color: #cf0000;\\n }\\n\\n label {\\n display: block;\\n }\\n }\\n }\\n }\\n }\\n }\\n\\n .contents_confirm {\\n margin-bottom: size-variable-sp(-20);\\n ul {\\n li.item {\\n margin-bottom: size-variable-sp(25.5);\\n padding-bottom: size-variable-sp(22);\\n border-bottom: 1px solid $SUB_COLOR2;\\n\\n .tit {\\n font-size: size-variable-sp(14);\\n color: $KEY_COLOR1;\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n }\\n\\n .user_data {\\n font-size: size-variable-sp(18);\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n margin-top: size-variable-sp(7);\\n }\\n\\n &.check_raw {\\n margin-bottom: size-variable-sp(64);\\n }\\n\\n &.btn_raw {\\n margin-top: size-variable-sp(-32);\\n text-align: center;\\n display: flex;\\n flex-direction: column-reverse;\\n border: none;\\n\\n .back_bt {\\n background: #e4e9f5;\\n color: $BASE_COLOR2;\\n margin-top: size-variable-sp(10);\\n &:after {\\n content: none;\\n }\\n }\\n }\\n }\\n }\\n }\\n\\n .contents_thanks {\\n margin-top: size-variable-sp(114);\\n h2 {\\n .sub_tit {\\n font-size: size-variable-sp(12);\\n line-height: 1;\\n left: -0.01em;\\n display: block;\\n }\\n\\n .tit {\\n font-size: size-variable-sp(54);\\n margin-top: size-variable-sp(23);\\n line-height: 1;\\n letter-spacing: -0.02em;\\n display: block;\\n }\\n }\\n\\n .message {\\n font-size: size-variable-sp(14);\\n margin-top: size-variable-sp(60);\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n }\\n\\n .btn {\\n margin-top: size-variable-sp(32);\\n a {\\n &:before {\\n background-image: url(/assets/img/common/icon-link2.svg);\\n }\\n }\\n }\\n }\\n }\\n\\n .section2 {\\n margin-bottom: size-variable-sp(120);\\n\\n &.confirm {\\n display: block;\\n .offices {\\n display: none;\\n }\\n }\\n\\n .section_child {\\n width: 72vw;\\n margin: 0 auto;\\n }\\n\\n h2 {\\n font-size: size-variable-sp(36);\\n letter-spacing: 0.03em;\\n }\\n\\n .chunk {\\n margin-top: size-variable-sp(49);\\n }\\n\\n .contacts {\\n margin-top: size-variable-sp(63);\\n border-top: 1px solid #e1e4e5;\\n\\n li {\\n padding-top: size-variable-sp(35);\\n padding-bottom: size-variable-sp(31);\\n border-bottom: 1px solid #e1e4e5;\\n position: relative;\\n .tit {\\n font-size: size-variable-sp(12);\\n font-weight: 600;\\n letter-spacing: -0.01em;\\n line-height: 1;\\n }\\n\\n .address {\\n font-size: size-variable-sp(12);\\n letter-spacing: -0.01em;\\n line-height: 1.3;\\n margin-top: size-variable-sp(14);\\n }\\n\\n .copy {\\n position: absolute;\\n font-size: size-variable-sp(12);\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n background: linear-gradient(\\n 225.93deg,\\n #073a86 0%,\\n #2d849a 101.67%\\n );\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n background-clip: text;\\n text-fill-color: transparent;\\n margin-top: size-variable-sp(-16);\\n right: size-variable-sp(2);\\n }\\n }\\n }\\n\\n .offices {\\n margin-top: size-variable-sp(63);\\n li {\\n margin-bottom: size-variable-sp(42);\\n .tit {\\n line-height: 1;\\n font-size: size-variable-sp(12);\\n font-weight: 600;\\n }\\n\\n .txt {\\n font-size: size-variable-sp(12);\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n margin-top: size-variable-sp(14);\\n }\\n\\n .tel,\\n .mail {\\n font-size: size-variable-sp(12);\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n .he {\\n width: size-variable-sp(32);\\n display: inline-block;\\n }\\n }\\n\\n .tel {\\n margin-top: size-variable-sp(10);\\n }\\n\\n .mail {\\n }\\n }\\n }\\n }\\n }\\n\\n main.product_brochure_ja {\\n .section1 {\\n .head {\\n .message {\\n font-size: size-variable-sp(12);\\n line-height: 1.75;\\n }\\n\\n .required_message {\\n font-size: size-variable-sp(10);\\n line-height: 1.75;\\n }\\n }\\n\\n .contents_input {\\n ul {\\n li.item {\\n input,\\n textarea {\\n font-size: size-variable-sp(12);\\n line-height: 1.75;\\n }\\n\\n &.check_raw {\\n .txt {\\n font-size: size-variable-sp(10);\\n line-height: 1.75;\\n }\\n }\\n }\\n }\\n }\\n\\n .contents_confirm {\\n ul {\\n li.item {\\n .tit.font2 {\\n font-size: size-variable-sp(12);\\n }\\n\\n .user_data {\\n font-size: size-variable-sp(14);\\n line-height: 1.75;\\n }\\n }\\n }\\n }\\n }\\n\\n .section2 {\\n .offices {\\n .txt.font2 {\\n font-size: size-variable-sp(10);\\n line-height: 1.5;\\n }\\n }\\n }\\n }\\n}\\n\",\"$easeInSine: cubic-bezier(0.47, 0, 0.745, 0.715);\\n$easeOutSine: cubic-bezier(0.39, 0.575, 0.565, 1);\\n$easeInOutSine: cubic-bezier(0.445, 0.05, 0.55, 0.95);\\n$easeInQuad: cubic-bezier(0.55, 0.085, 0.68, 0.53);\\n$easeOutQuad: cubic-bezier(0.25, 0.46, 0.45, 0.94);\\n$easeInOutQuad: cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n\\n$easeInCubic: cubic-bezier(0.55, 0.055, 0.675, 0.19);\\n$easeOutCubic: cubic-bezier(0.215, 0.61, 0.355, 1);\\n$easeInOutCubic: cubic-bezier(0.645, 0.045, 0.355, 1);\\n$easeInQuart: cubic-bezier(0.895, 0.03, 0.685, 0.22);\\n$easeOutQuart: cubic-bezier(0.165, 0.84, 0.44, 1);\\n$easeInOutQuart: cubic-bezier(0.77, 0, 0.175, 1);\\n\\n$easeInQuint: cubic-bezier(0.755, 0.05, 0.855, 0.06);\\n$easeOutQuint: cubic-bezier(0.23, 1, 0.32, 1);\\n$easeInOutQuint: cubic-bezier(0.86, 0, 0.07, 1);\\n$easeInExpo: cubic-bezier(0.95, 0.05, 0.795, 0.035);\\n$easeOutExpo: cubic-bezier(0.19, 1, 0.22, 1);\\n$easeInOutExpo: cubic-bezier(1, 0, 0, 1);\\n\\n$easeInCirc: cubic-bezier(0.6, 0.04, 0.98, 0.335);\\n$easeOutCirc: cubic-bezier(0.075, 0.82, 0.165, 1);\\n$easeInOutCirc: cubic-bezier(0.785, 0.135, 0.15, 0.86);\\n$easeInBack: cubic-bezier(0.6, -0.28, 0.735, 0.045);\\n$easeOutBack: cubic-bezier(0.175, 0.885, 0.32, 1.275);\\n$easeInOutBack: cubic-bezier(0.68, -0.55, 0.265, 1.55);\\n\\n$pi: 3.1415926536;\\n$PC_BASE_W: 1440;\\n$SP_BASE_W: 375;\\n\\n$BP: 768;\\n\\n$BASE_COLOR1: #171C21;\\n$BASE_COLOR2: #213143;\\n$KEY_COLOR1: #3098A6;\\n$SUB_COLOR1: #5CB4C0;\\n$SUB_COLOR2: #BDC1C6;\\n$BG_COLOR: #FBFBFB;\\n$BG_COLOR_ALPHA0: #FBFBFB00;\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"@media screen and (min-width: 768px){main.reference_design .sections_for_local_nav{margin-top:0rem}main.reference_design .hero{height:87vh}main.reference_design .hero h1{line-height:1;transform:translate3d(-50%, -9.5555555556rem, 0)}main.reference_design .movie{background-color:#171c21;margin:0 auto;width:142.2222222222rem;height:11.8888888889rem;border-radius:2.2222222222rem 2.2222222222rem 0 0}main.reference_design .sections{margin-top:0;padding-top:19.2222222222rem;border-radius:0 0 2.2222222222rem 2.2222222222rem}main.reference_design .sections .section{width:77.6vw;margin:0 auto}main.reference_design .sections .section h2 .tit{font-size:9.7777777778rem;margin-top:2.1111111111rem;letter-spacing:-0.03em}main.reference_design .sections .section h2 .tit .span_chunk{display:inline-flex}main.reference_design .sections .section h2 .tit_ja{display:block;font-size:1.7777777778rem;font-weight:400;margin-top:2rem;letter-spacing:.04em}main.reference_design .sections section:last-of-type{padding-bottom:0}main.reference_design .sections .section1 .section_child{padding-bottom:3.4444444444rem}main.reference_design .sections .section1 .cont{margin-top:9rem;white-space:nowrap;padding-bottom:7.5555555556rem}main.reference_design .sections .section1 .cont .left{width:74.2222222222rem;position:-webkit-sticky;position:sticky;top:50px;margin-left:-2.1111111111rem;display:inline-block;vertical-align:top}main.reference_design .sections .section1 .cont .left img,main.reference_design .sections .section1 .cont .left picture{width:100%;position:absolute;top:0;left:0;opacity:0;transition:opacity 350ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}main.reference_design .sections .section1 .cont .left img:first-of-type,main.reference_design .sections .section1 .cont .left picture:first-of-type{position:relative;opacity:1}main.reference_design .sections .section1 .cont .left img.show,main.reference_design .sections .section1 .cont .left picture.show{opacity:1}main.reference_design .sections .section1 .cont .right{display:inline-block;margin-left:12.3333333333rem;width:40rem;vertical-align:top;white-space:initial}main.reference_design .sections .section1 .cont .right>.txt{font-size:2rem;line-height:1.3;color:#bdc1c6;margin-bottom:11.1111111111rem;margin-top:-.3333333333rem;margin-left:-.5555555556rem;letter-spacing:-0.01em}main.reference_design .sections .section1 .cont .right .chunk{margin-bottom:17.6666666667rem;opacity:.5;transition:opacity 300ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}main.reference_design .sections .section1 .cont .right .chunk.clearify{opacity:1}main.reference_design .sections .section1 .cont .right .chunk.last_chunk{margin-bottom:6.1111111111rem}main.reference_design .sections .section1 .cont .right .chunk h3{font-size:2.6666666667rem;font-weight:600;letter-spacing:-0.01em;margin-bottom:4.5555555556rem;line-height:1.2}main.reference_design .sections .section1 .cont .right .chunk .txt{font-size:2rem;font-weight:400;line-height:1.3;letter-spacing:-0.01em;color:#bdc1c6;margin-left:.8888888889rem}main.reference_design .sections .section1 .cont .right .chunk .insert_img{width:40rem;border-radius:2.2222222222rem;margin-top:3.8888888889rem;overflow:hidden}main.reference_design .sections .section1 .cont .right .chunk .insert_img img{width:100%}main.reference_design .sections .section2,main.reference_design .sections .section3{margin-top:23.8888888889rem;width:83vw}main.reference_design .sections .section2 .section_child,main.reference_design .sections .section3 .section_child{padding-bottom:17.7777777778rem}main.reference_design .sections .section2 .section_child>p.txt,main.reference_design .sections .section3 .section_child>p.txt{font-size:2rem;color:#bdc1c6;line-height:1.3;width:68.3333333333rem;margin-left:66.4444444444rem;margin-top:6.2222222222rem;letter-spacing:-0.01em;margin-bottom:13.1111111111rem}main.reference_design .sections .section2 h2,main.reference_design .sections .section3 h2{margin-left:4.1111111111rem}main.reference_design .sections .section2 h2 .sub_tit,main.reference_design .sections .section3 h2 .sub_tit{margin-top:5.1111111111rem}main.reference_design .sections .section2 .sticky_pc_images,main.reference_design .sections .section3 .sticky_pc_images{position:-webkit-sticky;position:sticky;top:50px;margin-left:41.5vw;width:75.5555555556rem;height:75.5555555556rem;border-radius:2.2222222222rem;overflow:hidden}main.reference_design .sections .section2 .sticky_pc_images picture img,main.reference_design .sections .section3 .sticky_pc_images picture img{width:100%;display:block;position:absolute;top:0;transform:scale(0);transition:transform 700ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}main.reference_design .sections .section2 .sticky_pc_images picture:first-of-type img,main.reference_design .sections .section3 .sticky_pc_images picture:first-of-type img{transform:scale(1)}main.reference_design .sections .section2 .carousel_wrap,main.reference_design .sections .section3 .carousel_wrap{margin-top:-75.5555555556rem}main.reference_design .sections .section2 .cont .chunk,main.reference_design .sections .section3 .cont .chunk{display:flex;align-items:center;margin-bottom:4.4444444444rem}main.reference_design .sections .section2 .cont .chunk .left,main.reference_design .sections .section3 .cont .chunk .left{width:39%}main.reference_design .sections .section2 .cont .chunk .left h3,main.reference_design .sections .section3 .cont .chunk .left h3{font-size:4rem;line-height:1.2}main.reference_design .sections .section2 .cont .chunk .left .txt,main.reference_design .sections .section3 .cont .chunk .left .txt{position:relative;font-size:2rem;line-height:1.3;color:#bdc1c6;width:48.8888888889rem;letter-spacing:-0.01em;margin-top:3.8888888889rem;top:.4444444444rem;left:-.3333333333rem}main.reference_design .sections .section2 .cont .chunk .left .btn,main.reference_design .sections .section3 .cont .chunk .left .btn{position:relative;top:3.6666666667rem}main.reference_design .sections .section2 .cont .chunk .right,main.reference_design .sections .section3 .cont .chunk .right{width:50%}main.reference_design .sections .section2 .cont .chunk .right .img,main.reference_design .sections .section3 .cont .chunk .right .img{visibility:hidden;width:75.5555555556rem;border-radius:2.2222222222rem;overflow:hidden}main.reference_design .sections .section2 .cont .chunk .right .img img,main.reference_design .sections .section3 .cont .chunk .right .img img{width:100%}main.reference_design .sections .section_banner{margin-top:23.8888888889rem;width:83vw}main.reference_design .sections .section_banner .section_child{padding-bottom:17.7777777778rem}main.reference_design_ja .sections .section1 .cont .right>.txt{font-size:1.5555555556rem;line-height:1.75}main.reference_design_ja .sections .section1 .cont .right .chunk .txt{font-size:1.5555555556rem;line-height:1.75}main.reference_design_ja .sections .section2 .section_child>p.txt,main.reference_design_ja .sections .section3 .section_child>p.txt{font-size:1.5555555556rem;line-height:1.75}main.reference_design_ja .sections .section2 .section_child .cont .chunk .left .txt,main.reference_design_ja .sections .section3 .section_child .cont .chunk .left .txt{font-size:1.5555555556rem;line-height:1.75}}@media screen and (max-width: 767px){main.reference_design .hero{height:100vh}main.reference_design .hero .sub_tit{padding-top:49.0666666667rem}main.reference_design .hero .scroll{margin-top:-17.92rem}main.reference_design .movie{background-color:#171c21;margin:-25.6rem auto -1px;width:142.9333333333rem;height:25.6rem;border-radius:4.2666666667rem 4.2666666667rem 0 0}main.reference_design .sections .section h2 .sub_tit .span_chunk{display:inline}main.reference_design .sections .section h2 .tit_ja{display:block;font-size:5.12rem;font-weight:400;margin-top:4.6933333333rem;letter-spacing:.04em}main.reference_design .sections .section1{margin:0 auto;padding-top:25.6rem}main.reference_design .sections .section1 .cont .left img{width:100%;display:none}main.reference_design .sections .section1 .cont .right{margin-top:29.44rem}main.reference_design .sections .section1 .cont .right .insert_img{width:89vw;margin:37px auto 0;border-radius:8.5333333333rem;overflow:hidden}main.reference_design .sections .section1 .cont .right .insert_img img{width:100%}main.reference_design .sections .section1 .cont .right picture.sp{margin-bottom:21.3333333333rem}main.reference_design .sections .section1 .cont .right picture.sp img{width:100%}main.reference_design .sections .section1 .cont .right>.txt{color:#bdc1c6;font-size:5.9733333333rem;line-height:1.3;margin-bottom:25.6rem;margin-top:25.6rem;letter-spacing:-0.01em}main.reference_design .sections .section1 .cont .right .chunk{margin-bottom:42.6666666667rem}main.reference_design .sections .section1 .cont .right .chunk.last_chunk{margin-bottom:0}main.reference_design .sections .section1 .cont .right .chunk h3{font-size:10.24rem;line-height:1.2}main.reference_design .sections .section1 .cont .right .chunk .txt{color:#bdc1c6;font-size:5.9733333333rem;line-height:1.3;margin-top:9.8133333333rem}main.reference_design .sections .section1 .cont .right .btn{margin-top:17.0666666667rem}main.reference_design .sections .section2,main.reference_design .sections .section3{padding-top:38.8266666667rem;width:100vw;overflow:hidden}main.reference_design .sections .section2 .section_child h2 .tit .span_chunk,main.reference_design .sections .section3 .section_child h2 .tit .span_chunk{flex-wrap:wrap}main.reference_design .sections .section2 .section_child>p.txt,main.reference_design .sections .section3 .section_child>p.txt{font-size:5.9733333333rem;color:#bdc1c6;line-height:1.3;margin:13.6533333333rem auto 0;width:90%}main.reference_design .sections .section2 .section_child .cont,main.reference_design .sections .section3 .section_child .cont{display:inline-flex;align-items:baseline;margin-top:23.04rem;margin-left:9.3866666667rem}main.reference_design .sections .section2 .section_child .cont .chunk,main.reference_design .sections .section3 .section_child .cont .chunk{width:82vw;display:flex;flex-direction:column-reverse;margin-right:5.12rem}main.reference_design .sections .section2 .section_child .cont .chunk .left,main.reference_design .sections .section3 .section_child .cont .chunk .left{margin-top:11.9466666667rem}main.reference_design .sections .section2 .section_child .cont .chunk .left h3,main.reference_design .sections .section3 .section_child .cont .chunk .left h3{font-size:10.24rem}main.reference_design .sections .section2 .section_child .cont .chunk .left .txt,main.reference_design .sections .section3 .section_child .cont .chunk .left .txt{color:#bdc1c6;font-size:5.9733333333rem;line-height:1.3;margin-top:5.9733333333rem;letter-spacing:-0.01em;width:95%}main.reference_design .sections .section2 .section_child .cont .chunk .left .btn,main.reference_design .sections .section3 .section_child .cont .chunk .left .btn{margin-top:12.8rem}main.reference_design .sections .section2 .section_child .cont .chunk .right .img,main.reference_design .sections .section3 .section_child .cont .chunk .right .img{border-radius:8.5333333333rem;width:128.8533333333rem;overflow:hidden}main.reference_design .sections .section2 .section_child .cont .chunk .right .img img,main.reference_design .sections .section3 .section_child .cont .chunk .right .img img{width:100%}main.reference_design .sections .section3{padding-bottom:34.1333333333rem}main.reference_design .sections .section_banner{padding-top:0}main.reference_design_ja .sections .section1 .cont .right>.txt{font-size:5.12rem;line-height:1.75}main.reference_design_ja .sections .section1 .cont .right .chunk .txt{font-size:5.12rem;line-height:1.75}main.reference_design_ja .sections .section2 .section_child>p.txt,main.reference_design_ja .sections .section3 .section_child>p.txt{font-size:5.12rem;line-height:1.75}main.reference_design_ja .sections .section2 .section_child .cont .chunk .left .txt,main.reference_design_ja .sections .section3 .section_child .cont .chunk .left .txt{font-size:5.12rem;line-height:1.75}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/scss/reference_design.scss\",\"webpack://./src/scss/_variable.scss\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"@import 'variable';\\n@import 'mixin';\\n\\n/*\\nz-index\\n\\n*/\\n\\n//For COMMON LAYOUT\\nmain.reference_design {\\n .hero {\\n }\\n}\\n\\n//For PC LAYOUT\\n@media screen and (min-width: $BP + px) {\\n main.reference_design {\\n .sections_for_local_nav {\\n margin-top: size-variable-pc(0);\\n }\\n\\n .hero {\\n height: 87vh;\\n h1 {\\n line-height: 1;\\n transform: translate3d(-50%, size-variable-pc(-86), 0);\\n }\\n }\\n\\n .movie {\\n background-color: $BASE_COLOR1;\\n margin: 0 auto;\\n width: size-variable-pc(1280);\\n height: size-variable-pc(107);\\n border-radius: size-variable-pc(20) size-variable-pc(20) 0 0;\\n }\\n\\n .sections {\\n margin-top: 0;\\n padding-top: size-variable-pc(173);\\n border-radius: 0 0 size-variable-pc(20) size-variable-pc(20);\\n .section {\\n width: 77.6vw;\\n margin: 0 auto;\\n\\n h2 {\\n .tit {\\n font-size: size-variable-pc(88);\\n margin-top: size-variable-pc(19);\\n letter-spacing: -0.03em;\\n .span_chunk {\\n display: inline-flex;\\n }\\n }\\n\\n .tit_ja {\\n display: block;\\n font-size: size-variable-pc(16);\\n font-weight: 400;\\n margin-top: size-variable-pc(18);\\n letter-spacing: 0.04em;\\n }\\n }\\n }\\n\\n section:last-of-type {\\n padding-bottom: 0;\\n }\\n\\n .section1 {\\n .section_child {\\n padding-bottom: size-variable-pc(31);\\n }\\n\\n .cont {\\n margin-top: size-variable-pc(81);\\n white-space: nowrap;\\n padding-bottom: size-variable-pc(68);\\n .left {\\n width: size-variable-pc(668);\\n position: -webkit-sticky;\\n position: sticky;\\n top: 50px;\\n margin-left: size-variable-pc(-19);\\n display: inline-block;\\n vertical-align: top;\\n\\n img,\\n picture {\\n width: 100%;\\n position: absolute;\\n top: 0;\\n left: 0;\\n opacity: 0;\\n transition: opacity 350ms;\\n transition-timing-function: $easeOutQuart;\\n\\n &:first-of-type {\\n position: relative;\\n opacity: 1;\\n }\\n\\n &.show {\\n opacity: 1;\\n }\\n }\\n }\\n\\n .right {\\n display: inline-block;\\n margin-left: size-variable-pc(111);\\n width: size-variable-pc(360);\\n vertical-align: top;\\n white-space: initial;\\n\\n & > .txt {\\n font-size: size-variable-pc(18);\\n line-height: 1.3;\\n color: $SUB_COLOR2;\\n margin-bottom: size-variable-pc(100);\\n margin-top: size-variable-pc(-3);\\n margin-left: size-variable-pc(-5);\\n letter-spacing: -0.01em;\\n }\\n\\n .chunk {\\n margin-bottom: size-variable-pc(159);\\n opacity: 0.5;\\n transition: opacity 300ms;\\n transition-timing-function: $easeOutQuart;\\n\\n &.clearify {\\n opacity: 1;\\n }\\n\\n &.last_chunk {\\n margin-bottom: size-variable-pc(55);\\n }\\n\\n h3 {\\n font-size: size-variable-pc(24);\\n font-weight: 600;\\n letter-spacing: -0.01em;\\n margin-bottom: size-variable-pc(41);\\n line-height: 1.2;\\n }\\n\\n .txt {\\n font-size: size-variable-pc(18);\\n font-weight: 400;\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n color: $SUB_COLOR2;\\n margin-left: size-variable-pc(8);\\n }\\n\\n .insert_img {\\n width: size-variable-pc(360);\\n border-radius: size-variable-pc(20);\\n margin-top: size-variable-pc(35);\\n overflow: hidden;\\n img {\\n width: 100%;\\n }\\n }\\n }\\n }\\n }\\n }\\n\\n .section2,\\n .section3 {\\n margin-top: size-variable-pc(215);\\n width: 83vw;\\n\\n .section_child {\\n padding-bottom: size-variable-pc(160);\\n & > p.txt {\\n font-size: size-variable-pc(18);\\n color: $SUB_COLOR2;\\n line-height: 1.3;\\n width: size-variable-pc(615);\\n margin-left: size-variable-pc(598);\\n margin-top: size-variable-pc(56);\\n letter-spacing: -0.01em;\\n margin-bottom: size-variable-pc(118);\\n }\\n }\\n\\n h2 {\\n margin-left: size-variable-pc(37);\\n .sub_tit {\\n margin-top: size-variable-pc(46);\\n }\\n\\n .tit {\\n span.chunk1 {\\n //margin-left: size-variable-pc(217);\\n }\\n }\\n }\\n\\n .sticky_pc_images {\\n position: -webkit-sticky;\\n position: sticky;\\n top: 50px;\\n margin-left: 41.5vw;\\n width: size-variable-pc(680);\\n height: size-variable-pc(680);\\n\\n border-radius: size-variable-pc(20);\\n overflow: hidden;\\n picture {\\n img {\\n width: 100%;\\n display: block;\\n position: absolute;\\n top: 0;\\n transform: scale(0);\\n transition: transform 700ms;\\n transition-timing-function: $easeOutQuart;\\n }\\n\\n &:first-of-type {\\n img {\\n transform: scale(1);\\n }\\n }\\n }\\n }\\n\\n .carousel_wrap {\\n margin-top: size-variable-pc(-680);\\n }\\n\\n .cont {\\n .chunk {\\n display: flex;\\n align-items: center;\\n margin-bottom: size-variable-pc(40);\\n .left {\\n width: 39%;\\n h3 {\\n font-size: size-variable-pc(36);\\n line-height: 1.2;\\n }\\n\\n .txt {\\n position: relative;\\n font-size: size-variable-pc(18);\\n line-height: 1.3;\\n color: $SUB_COLOR2;\\n width: size-variable-pc(440);\\n letter-spacing: -0.01em;\\n margin-top: size-variable-pc(35);\\n top: size-variable-pc(4);\\n left: size-variable-pc(-3);\\n }\\n\\n .btn {\\n position: relative;\\n top: size-variable-pc(33);\\n }\\n }\\n\\n .right {\\n width: 50%;\\n .img {\\n visibility: hidden;\\n width: size-variable-pc(680);\\n border-radius: size-variable-pc(20);\\n overflow: hidden;\\n img {\\n width: 100%;\\n }\\n }\\n }\\n }\\n }\\n }\\n\\n .section_banner {\\n margin-top: size-variable-pc(215);\\n width: 83vw;\\n\\n .section_child {\\n padding-bottom: size-variable-pc(160);\\n }\\n }\\n }\\n }\\n\\n main.reference_design_ja {\\n .sections {\\n .section1 {\\n .cont {\\n .right {\\n & > .txt {\\n font-size: size-variable-pc(14);\\n line-height: 1.75;\\n }\\n\\n .chunk {\\n .txt {\\n font-size: size-variable-pc(14);\\n line-height: 1.75;\\n }\\n }\\n }\\n }\\n }\\n\\n .section2,\\n .section3 {\\n .section_child {\\n & > p.txt {\\n font-size: size-variable-pc(14);\\n line-height: 1.75;\\n }\\n\\n .cont {\\n .chunk {\\n .left {\\n .txt {\\n font-size: size-variable-pc(14);\\n line-height: 1.75;\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n}\\n\\n//For TABLET/SP LAYOUT\\n@media screen and (max-width: ($BP - 1) + px) {\\n main.reference_design {\\n .hero {\\n height: 100vh;\\n .sub_tit {\\n padding-top: size-variable-sp(115);\\n }\\n\\n .scroll {\\n margin-top: size-variable-sp(-42);\\n }\\n }\\n\\n .movie {\\n background-color: $BASE_COLOR1;\\n margin: size-variable-sp(-60) auto -1px;\\n width: size-variable-sp(335);\\n height: size-variable-sp(60);\\n border-radius: size-variable-sp(10) size-variable-sp(10) 0 0;\\n }\\n\\n .sections {\\n .section {\\n h2 {\\n .sub_tit {\\n .span_chunk {\\n display: inline;\\n }\\n }\\n .tit_ja {\\n display: block;\\n font-size: size-variable-sp(12);\\n font-weight: 400;\\n margin-top: size-variable-sp(11);\\n letter-spacing: 0.04em;\\n }\\n }\\n }\\n\\n .section1 {\\n margin: 0 auto;\\n padding-top: size-variable-sp(60);\\n\\n .cont {\\n .left {\\n img {\\n width: 100%;\\n display: none;\\n }\\n }\\n\\n .right {\\n margin-top: size-variable-sp(69);\\n .insert_img {\\n width: 89vw;\\n margin: 37px auto 0;\\n border-radius: size-variable-sp(20);\\n overflow: hidden;\\n img {\\n width: 100%;\\n }\\n }\\n\\n picture.sp {\\n margin-bottom: size-variable-sp(50);\\n img {\\n width: 100%;\\n }\\n }\\n\\n & > .txt {\\n color: $SUB_COLOR2;\\n font-size: size-variable-sp(14);\\n line-height: 1.3;\\n margin-bottom: size-variable-sp(60);\\n margin-top: size-variable-sp(60);\\n letter-spacing: -0.01em;\\n }\\n\\n .chunk {\\n margin-bottom: size-variable-sp(100);\\n\\n &.last_chunk {\\n margin-bottom: 0;\\n }\\n\\n h3 {\\n font-size: size-variable-sp(24);\\n line-height: 1.2;\\n }\\n\\n .txt {\\n color: $SUB_COLOR2;\\n font-size: size-variable-sp(14);\\n line-height: 1.3;\\n margin-top: size-variable-sp(23);\\n }\\n }\\n\\n .btn {\\n margin-top: size-variable-sp(40);\\n }\\n }\\n }\\n }\\n\\n .section2,\\n .section3 {\\n padding-top: size-variable-sp(91);\\n width: 100vw;\\n overflow: hidden;\\n\\n .section_child {\\n h2 {\\n .tit {\\n .span_chunk {\\n flex-wrap: wrap;\\n }\\n }\\n }\\n\\n & > p.txt {\\n font-size: size-variable-sp(14);\\n color: $SUB_COLOR2;\\n line-height: 1.3;\\n margin: size-variable-sp(32) auto 0;\\n width: 90%;\\n }\\n\\n .cont {\\n //display: -webkit-inline-box;\\n display: inline-flex;\\n align-items: baseline;\\n margin-top: size-variable-sp(54);\\n margin-left: size-variable-sp(22);\\n .chunk {\\n width: 82vw;\\n display: flex;\\n flex-direction: column-reverse;\\n margin-right: size-variable-sp(12);\\n .left {\\n margin-top: size-variable-sp(28);\\n\\n h3 {\\n font-size: size-variable-sp(24);\\n }\\n\\n .txt {\\n color: $SUB_COLOR2;\\n font-size: size-variable-sp(14);\\n line-height: 1.3;\\n margin-top: size-variable-sp(14);\\n letter-spacing: -0.01em;\\n width: 95%;\\n }\\n\\n .btn {\\n margin-top: size-variable-sp(30);\\n }\\n }\\n\\n .right {\\n .img {\\n border-radius: size-variable-sp(20);\\n width: size-variable-sp(302);\\n overflow: hidden;\\n\\n img {\\n width: 100%;\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n\\n .section3 {\\n padding-bottom: size-variable-sp(80);\\n }\\n\\n .section_banner {\\n padding-top: 0;\\n }\\n }\\n }\\n\\n main.reference_design_ja {\\n .sections {\\n .section1 {\\n .cont {\\n .right {\\n & > .txt {\\n font-size: size-variable-sp(12);\\n line-height: 1.75;\\n }\\n\\n .chunk {\\n .txt {\\n font-size: size-variable-sp(12);\\n line-height: 1.75;\\n }\\n }\\n }\\n }\\n }\\n\\n .section2,\\n .section3 {\\n .section_child {\\n & > p.txt {\\n font-size: size-variable-sp(12);\\n line-height: 1.75;\\n }\\n\\n .cont {\\n .chunk {\\n .left {\\n .txt {\\n font-size: size-variable-sp(12);\\n line-height: 1.75;\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n}\\n\",\"$easeInSine: cubic-bezier(0.47, 0, 0.745, 0.715);\\n$easeOutSine: cubic-bezier(0.39, 0.575, 0.565, 1);\\n$easeInOutSine: cubic-bezier(0.445, 0.05, 0.55, 0.95);\\n$easeInQuad: cubic-bezier(0.55, 0.085, 0.68, 0.53);\\n$easeOutQuad: cubic-bezier(0.25, 0.46, 0.45, 0.94);\\n$easeInOutQuad: cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n\\n$easeInCubic: cubic-bezier(0.55, 0.055, 0.675, 0.19);\\n$easeOutCubic: cubic-bezier(0.215, 0.61, 0.355, 1);\\n$easeInOutCubic: cubic-bezier(0.645, 0.045, 0.355, 1);\\n$easeInQuart: cubic-bezier(0.895, 0.03, 0.685, 0.22);\\n$easeOutQuart: cubic-bezier(0.165, 0.84, 0.44, 1);\\n$easeInOutQuart: cubic-bezier(0.77, 0, 0.175, 1);\\n\\n$easeInQuint: cubic-bezier(0.755, 0.05, 0.855, 0.06);\\n$easeOutQuint: cubic-bezier(0.23, 1, 0.32, 1);\\n$easeInOutQuint: cubic-bezier(0.86, 0, 0.07, 1);\\n$easeInExpo: cubic-bezier(0.95, 0.05, 0.795, 0.035);\\n$easeOutExpo: cubic-bezier(0.19, 1, 0.22, 1);\\n$easeInOutExpo: cubic-bezier(1, 0, 0, 1);\\n\\n$easeInCirc: cubic-bezier(0.6, 0.04, 0.98, 0.335);\\n$easeOutCirc: cubic-bezier(0.075, 0.82, 0.165, 1);\\n$easeInOutCirc: cubic-bezier(0.785, 0.135, 0.15, 0.86);\\n$easeInBack: cubic-bezier(0.6, -0.28, 0.735, 0.045);\\n$easeOutBack: cubic-bezier(0.175, 0.885, 0.32, 1.275);\\n$easeInOutBack: cubic-bezier(0.68, -0.55, 0.265, 1.55);\\n\\n$pi: 3.1415926536;\\n$PC_BASE_W: 1440;\\n$SP_BASE_W: 375;\\n\\n$BP: 768;\\n\\n$BASE_COLOR1: #171C21;\\n$BASE_COLOR2: #213143;\\n$KEY_COLOR1: #3098A6;\\n$SUB_COLOR1: #5CB4C0;\\n$SUB_COLOR2: #BDC1C6;\\n$BG_COLOR: #FBFBFB;\\n$BG_COLOR_ALPHA0: #FBFBFB00;\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"main.services .movie{position:relative}main.services .movie .movie_child{transition:border-radius 400ms,width 400ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}main.services .movie .section_child{position:absolute}main.services .movie .section_child h2 .sub_tit{color:#5cb4c0;display:block}main.services .movie .section_child h2 .sub_tit span{transition:opacity 300ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}main.services .movie .section_child h2 .sub_tit span:nth-of-type(1){transition-delay:0.11s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(2){transition-delay:0.12s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(3){transition-delay:0.13s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(4){transition-delay:0.14s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(5){transition-delay:0.15s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(6){transition-delay:0.16s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(7){transition-delay:0.17s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(8){transition-delay:0.18s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(9){transition-delay:0.19s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(10){transition-delay:0.2s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(11){transition-delay:0.21s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(12){transition-delay:0.22s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(13){transition-delay:0.23s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(14){transition-delay:0.24s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(15){transition-delay:0.25s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(16){transition-delay:0.26s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(17){transition-delay:0.27s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(18){transition-delay:0.28s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(19){transition-delay:0.29s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(20){transition-delay:0.3s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(21){transition-delay:0.31s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(22){transition-delay:0.32s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(23){transition-delay:0.33s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(24){transition-delay:0.34s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(25){transition-delay:0.35s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(26){transition-delay:0.36s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(27){transition-delay:0.37s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(28){transition-delay:0.38s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(29){transition-delay:0.39s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(30){transition-delay:0.4s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(31){transition-delay:0.41s}main.services .movie .section_child h2 .sub_tit span:nth-of-type(32){transition-delay:0.42s}main.services .movie .section_child h2 .tit{color:#fff;display:block}main.services .movie .section_child h2 .tit .span_chunk{display:flex;perspective:1000px}main.services .movie .section_child h2 .tit span{white-space:nowrap;will-change:transform;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform 500ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}main.services .movie .section_child h2 .tit span:nth-of-type(1){transition-delay:0.2s}main.services .movie .section_child h2 .tit span:nth-of-type(2){transition-delay:0.1s}main.services .movie .section_child h2 .tit span:nth-of-type(3){transition-delay:0.25s}main.services .movie .section_child h2 .tit span:nth-of-type(4){transition-delay:0.05s}main.services .movie .section_child h2 .tit span:nth-of-type(5){transition-delay:0.075s}main.services .movie .section_child h2 .tit span:nth-of-type(6){transition-delay:0.1s}main.services .movie .section_child h2 .tit span:nth-of-type(7){transition-delay:0.15s}main.services .movie .section_child h2 .tit span:nth-of-type(8){transition-delay:0.025s}main.services .movie .section_child h2 .tit span:nth-of-type(9){transition-delay:0.075s}main.services .movie .section_child h2 .tit span:nth-of-type(10){transition-delay:0.1s}main.services .movie .section_child h2 .tit span:nth-of-type(11){transition-delay:0.05s}main.services .movie .section_child h2 .tit span:nth-of-type(12){transition-delay:0.05s}main.services .movie .section_child h2 .tit span:nth-of-type(13){transition-delay:0.15s}main.services .movie .section_child h2 .tit span:nth-of-type(14){transition-delay:0.025s}main.services .movie .section_child h2 .tit span:nth-of-type(15){transition-delay:0.1s}main.services .movie .section_child h2 .tit span:nth-of-type(16){transition-delay:0.075s}main.services .movie .section_child h2 .tit span:nth-of-type(17){transition-delay:0.2s}main.services .movie .section_child h2 .tit span:nth-of-type(18){transition-delay:0.05s}main.services .movie .section_child h2 .tit span:nth-of-type(19){transition-delay:0.225s}main.services .movie .section_child h2 .tit span:nth-of-type(20){transition-delay:0.25s}main.services .movie .section_child h2 .tit span:nth-of-type(21){transition-delay:0.15s}main.services .movie .section_child h2 .tit span:nth-of-type(22){transition-delay:0.075s}main.services .movie .section_child h2 .tit span:nth-of-type(23){transition-delay:0.075s}main.services .movie .section_child h2 .tit span:nth-of-type(24){transition-delay:0.15s}main.services .movie .section_child h2 .tit span:nth-of-type(25){transition-delay:0.05s}main.services .movie .section_child h2 .tit span:nth-of-type(26){transition-delay:0.15s}main.services .movie .section_child h2 .tit span:nth-of-type(27){transition-delay:0.125s}main.services .movie .section_child h2 .tit span:nth-of-type(28){transition-delay:0.1s}main.services .movie .section_child h2 .tit span:nth-of-type(29){transition-delay:0.025s}main.services .movie .section_child h2 .tit span:nth-of-type(30){transition-delay:0.05s}@media screen and (min-width: 768px){main.services .hero{height:65vh}main.services .movie{margin:8.8888888889rem auto 0;width:100vw;height:68.5vw;min-height:100vh}main.services .movie .movie_child{position:-webkit-sticky;position:sticky;width:89vw;height:100vh;border-radius:2.2222222222rem;overflow:hidden;top:0;margin:0 auto}main.services .movie .movie_child img,main.services .movie .movie_child video{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}main.services .movie .section_child{top:36.5555555556rem}main.services .movie .section_child h2{margin-left:13.3333333333rem}main.services .movie .section_child h2 .sub_tit{position:relative;font-size:1.5555555556rem;line-height:1;letter-spacing:-0.01em}main.services .movie .section_child h2 .tit{font-size:5.3333333333rem;line-height:1.2;letter-spacing:-0.02em;margin-top:2.2222222222rem}main.services .movie .section_child h2 .tit span.space{width:1.5555555556rem}main.services .movie .section_child .pic{display:block;border-radius:1.1111111111rem;width:13.3333333333rem;overflow:hidden;margin-left:13.3333333333rem;margin-top:9.8888888889rem}main.services .movie .section_child .pic img{width:100%}main.services .movie .section_child p.txt{margin-top:2.6666666667rem;font-size:2rem;line-height:1.3;letter-spacing:-0.01em;width:34.4444444444rem;color:#bdc1c6;margin-left:13.3333333333rem}main.services .movie .section_child .btn{margin-left:13.3333333333rem;margin-top:3.3333333333rem}main.services .sections{margin-top:-27.3333333333rem}main.services .sections .child_section{flex-direction:row-reverse;justify-content:left}main.services .sections .child_section .chunk{width:32.2222222222rem;margin-top:33.6666666667rem;margin-left:84.5555555556rem}main.services .sections .section.section1{margin-top:48.8888888889rem}main.services .sections .section.section1 .child_section{margin-top:-22.8888888889rem}main.services .sections .section.section1 .child_section .chunk{margin-top:44.4444444444rem}main.services .sections .section h2{position:absolute;z-index:1}main.services .sections .section .banner h2{position:initial}main.services .sections .section .child_section{display:flex;margin-bottom:11.1111111111rem;position:relative}main.services .sections .section .child_section .chunk{position:relative}main.services .sections .section .child_section h3{font-size:2.2222222222rem;line-height:1.2;letter-spacing:0em;width:27.7777777778rem}main.services .sections .section .child_section p.txt{margin-top:1.6666666667rem;font-size:2rem;line-height:1.3;letter-spacing:-0.01em;width:26.6666666667rem;color:#bdc1c6}main.services .sections .section .child_section .btn{margin-top:3.3333333333rem}main.services .sections .section .child_section .imgs .img{border-radius:2.2222222222rem;overflow:hidden;position:absolute}main.services .sections .section .child_section .imgs .img1{width:48.8888888889rem;height:65rem;margin-left:31.1111111111rem;margin-top:-3.7777777778rem}main.services .sections .section .child_section .imgs .img2{width:26.6666666667rem;height:20rem;margin-top:41.2222222222rem;margin-left:0rem}main.services .sections .section .child_section .imgs img,main.services .sections .section .child_section .imgs video{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;flex-shrink:0}main.services_ja .movie .section_child p.txt{font-size:1.5555555556rem;line-height:1.75}main.services_ja .sections .section h2 .tit_ja{display:block;font-size:1.3333333333rem;font-weight:400;line-height:1.55;margin-top:2.1111111111rem;letter-spacing:.04em}main.services_ja .sections .section .child_section h3{font-size:2.2222222222rem;line-height:1.55}main.services_ja .sections .section .child_section p.txt{font-size:1.5555555556rem;line-height:1.75}}@media screen and (max-width: 767px){main.services .hero{height:32.6vh}main.services .hero .sub_tit{margin-top:48.2133333333rem}main.services .movie{margin:0 auto;width:100vw;height:149.4vh}main.services .movie .movie_child{position:-webkit-sticky;position:sticky;width:89vw;height:100vh;border-radius:4.2666666667rem;overflow:hidden;top:0;margin:0 auto}main.services .movie .movie_child img,main.services .movie .movie_child video{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}main.services .movie .section_child{top:159.5733333333rem}main.services .movie .section_child h2{margin-left:8.5333333333rem}main.services .movie .section_child h2 .sub_tit{position:relative;font-size:4.2666666667rem;line-height:1;letter-spacing:-0.01em}main.services .movie .section_child h2 .tit{font-size:15.36rem;line-height:1.1;letter-spacing:-0.02em;margin-top:9.8133333333rem}main.services .movie .section_child h2 .tit span.space{width:5.9733333333rem}main.services .movie .section_child .pic{display:block;border-radius:4.2666666667rem;width:34.1333333333rem;overflow:hidden;margin-left:8.5333333333rem;margin-top:61.8666666667rem}main.services .movie .section_child .pic img{width:100%}main.services .movie .section_child p.txt{margin-top:10.24rem;font-size:5.9733333333rem;line-height:1.3;letter-spacing:-0.01em;width:89.6rem;color:#bdc1c6;margin-left:8.5333333333rem}main.services .movie .section_child .btn{display:none}main.services .sections .section1{margin-top:-85.3333333333rem;padding-top:122.4533333333rem}main.services .sections .section.patern1 .child_section .imgs .img1{margin-left:34.1333333333rem}main.services .sections .section.patern1 .child_section .imgs .img2{margin-top:-64rem;margin-left:91.7333333333rem}main.services .sections .section.patern2 .child_section .imgs .img1{margin-left:34.1333333333rem}main.services .sections .section.patern2 .child_section .imgs .img2{margin-top:-64rem;margin-left:17.0666666667rem}main.services .sections .section h2 .sub_tit .span_chunk{display:inline}main.services .sections .section .child_section{display:flex;flex-direction:column}main.services .sections .section .child_section p.txt{margin-top:6.4rem}main.services .sections .section .child_section .btn{margin-top:13.6533333333rem}main.services .sections .section .child_section .imgs{order:-1;margin-top:20.48rem}main.services .sections .section .child_section .imgs .img{border-radius:4.2666666667rem;overflow:hidden}main.services .sections .section .child_section .imgs .img1{width:74.6666666667rem;height:104.1066666667rem}main.services .sections .section .child_section .imgs .img2{width:34.1333333333rem;height:47.36rem;position:relative}main.services .sections .section .child_section .imgs img,main.services .sections .section .child_section .imgs video{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;flex-shrink:0}main.services .sections .section .child_section .chunk{margin-top:38.4rem}main.services_ja .movie{height:159vh}main.services_ja .movie .section_child p.txt{font-size:5.12rem;line-height:1.75}main.services_ja .sections .section h2 .tit_ja{display:block;font-size:5.12rem;font-weight:400;line-height:1.55;margin-top:3.84rem;letter-spacing:.04em}main.services_ja .sections .section .child_section h3{font-size:8.5333333333rem;line-height:1.55}main.services_ja .sections .section .child_section p.txt{font-size:5.12rem;line-height:1.75}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/scss/services.scss\",\"webpack://./src/scss/_variable.scss\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"@import 'variable';\\n@import 'mixin';\\n\\n/*\\nz-index\\n\\n*/\\n\\n//For COMMON LAYOUT\\nmain.services {\\n .hero {\\n }\\n\\n .movie {\\n position: relative;\\n\\n .movie_child {\\n transition: border-radius 400ms, width 400ms;\\n transition-timing-function: $easeOutQuart;\\n }\\n\\n .section_child {\\n position: absolute;\\n h2 {\\n .sub_tit {\\n color: $SUB_COLOR1;\\n display: block;\\n span {\\n //opacity: 0;\\n transition: opacity 300ms;\\n transition-timing-function: $easeOutQuart;\\n\\n @for $i from 1 through 32 {\\n &:nth-of-type(#{$i}) {\\n transition-delay: 0.1 + 0.01 * $i + s;\\n }\\n }\\n }\\n }\\n\\n .tit {\\n color: #fff;\\n display: block;\\n .span_chunk {\\n display: flex;\\n perspective: 1000px;\\n }\\n\\n span {\\n white-space: nowrap;\\n will-change: transform;\\n //transform: rotate3d(1, 0, 0, 180deg);\\n backface-visibility: hidden;\\n transition: transform 500ms;\\n transition-timing-function: $easeOutQuart;\\n\\n @for $i from 1 through 30 {\\n &:nth-of-type(#{$i}) {\\n $rand: random(10) * 0.025;\\n transition-delay: $rand + s;\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n}\\n\\n//For PC LAYOUT\\n@media screen and (min-width: $BP + px) {\\n main.services {\\n .hero {\\n height: 65vh;\\n }\\n\\n .movie {\\n margin: size-variable-pc(80) auto 0;\\n width: 100vw;\\n height: 68.5vw;\\n min-height: 100vh;\\n\\n .movie_child {\\n position: sticky;\\n width: 89vw;\\n height: 100vh;\\n border-radius: size-variable-pc(20);\\n overflow: hidden;\\n top: 0;\\n margin: 0 auto;\\n\\n img,\\n video {\\n width: 100%;\\n height: 100%;\\n object-fit: cover;\\n }\\n }\\n\\n .section_child {\\n top: size-variable-pc(329);\\n h2 {\\n margin-left: size-variable-pc(120);\\n .sub_tit {\\n position: relative;\\n font-size: size-variable-pc(14);\\n line-height: 1;\\n letter-spacing: -0.01em;\\n }\\n\\n .tit {\\n font-size: size-variable-pc(48);\\n line-height: 1.2;\\n letter-spacing: -0.02em;\\n margin-top: size-variable-pc(20);\\n\\n span.space {\\n width: size-variable-pc(14);\\n }\\n }\\n }\\n\\n .pic {\\n display: block;\\n border-radius: size-variable-pc(10);\\n width: size-variable-pc(120);\\n overflow: hidden;\\n margin-left: size-variable-pc(120);\\n margin-top: size-variable-pc(89);\\n img {\\n width: 100%;\\n }\\n }\\n\\n p.txt {\\n margin-top: size-variable-pc(24);\\n font-size: size-variable-pc(18);\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n width: size-variable-pc(310);\\n color: $SUB_COLOR2;\\n margin-left: size-variable-pc(120);\\n }\\n\\n .btn {\\n margin-left: size-variable-pc(120);\\n margin-top: size-variable-pc(30);\\n }\\n }\\n }\\n\\n .sections {\\n margin-top: size-variable-pc(-246);\\n\\n .child_section {\\n flex-direction: row-reverse;\\n justify-content: left;\\n\\n .chunk {\\n width: size-variable-pc(290);\\n margin-top: size-variable-pc(303);\\n margin-left: size-variable-pc(761);\\n }\\n }\\n\\n .section {\\n &.section1 {\\n margin-top: size-variable-pc(440);\\n .child_section {\\n margin-top: size-variable-pc(-206);\\n\\n .chunk {\\n margin-top: size-variable-pc(400);\\n }\\n }\\n }\\n\\n h2 {\\n position: absolute;\\n z-index: 1;\\n .tit {\\n .span_chunk {\\n //display: inline-flex;\\n }\\n }\\n }\\n\\n .banner h2 {\\n position: initial;\\n }\\n\\n .child_section {\\n display: flex;\\n margin-bottom: size-variable-pc(100);\\n position: relative;\\n\\n .chunk {\\n position: relative;\\n }\\n\\n h3 {\\n font-size: size-variable-pc(20);\\n line-height: 1.2;\\n letter-spacing: 0em;\\n width: size-variable-pc(250);\\n }\\n\\n p.txt {\\n margin-top: size-variable-pc(15);\\n font-size: size-variable-pc(18);\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n width: size-variable-pc(240);\\n color: $SUB_COLOR2;\\n }\\n\\n .btn {\\n margin-top: size-variable-pc(30);\\n }\\n\\n .imgs {\\n .img {\\n border-radius: size-variable-pc(20px);\\n overflow: hidden;\\n position: absolute;\\n }\\n\\n .img1 {\\n width: size-variable-pc(440px);\\n height: size-variable-pc(585px);\\n margin-left: size-variable-pc(280);\\n margin-top: size-variable-pc(-34);\\n }\\n\\n .img2 {\\n width: size-variable-pc(240px);\\n height: size-variable-pc(180px);\\n margin-top: size-variable-pc(371);\\n margin-left: size-variable-pc(0);\\n }\\n\\n img,\\n video {\\n width: 100%;\\n height: 100%;\\n object-fit: cover;\\n flex-shrink: 0;\\n }\\n }\\n }\\n }\\n }\\n }\\n\\n main.services_ja {\\n .movie {\\n .section_child {\\n p.txt {\\n font-size: size-variable-pc(14);\\n line-height: 1.75;\\n }\\n }\\n }\\n\\n .sections {\\n .section {\\n h2 {\\n .tit_ja {\\n display: block;\\n font-size: size-variable-pc(12);\\n font-weight: 400;\\n line-height: 1.55;\\n margin-top: size-variable-pc(19);\\n letter-spacing: 0.04em;\\n }\\n }\\n\\n .child_section {\\n h3 {\\n font-size: size-variable-pc(20);\\n line-height: 1.55;\\n }\\n\\n p.txt {\\n font-size: size-variable-pc(14);\\n line-height: 1.75;\\n }\\n }\\n }\\n }\\n }\\n}\\n\\n//For TABLET/SP LAYOUT\\n@media screen and (max-width: ($BP - 1) + px) {\\n main.services {\\n .hero {\\n height: 32.6vh;\\n .sub_tit {\\n margin-top: size-variable-sp(113);\\n }\\n }\\n\\n .movie {\\n margin: 0 auto;\\n width: 100vw;\\n height: 149.4vh;\\n\\n .movie_child {\\n position: sticky;\\n width: 89vw;\\n height: 100vh;\\n border-radius: size-variable-sp(10);\\n overflow: hidden;\\n top: 0;\\n margin: 0 auto;\\n img,\\n video {\\n width: 100%;\\n height: 100%;\\n object-fit: cover;\\n }\\n }\\n\\n .section_child {\\n top: size-variable-sp(374);\\n h2 {\\n margin-left: size-variable-sp(20);\\n .sub_tit {\\n position: relative;\\n font-size: size-variable-sp(10);\\n line-height: 1;\\n letter-spacing: -0.01em;\\n }\\n\\n .tit {\\n font-size: size-variable-sp(36);\\n line-height: 1.1;\\n letter-spacing: -0.02em;\\n margin-top: size-variable-sp(23);\\n\\n span.space {\\n width: size-variable-sp(14);\\n }\\n }\\n }\\n\\n .pic {\\n display: block;\\n border-radius: size-variable-sp(10);\\n width: size-variable-sp(80);\\n overflow: hidden;\\n margin-left: size-variable-sp(20);\\n margin-top: size-variable-sp(145);\\n img {\\n width: 100%;\\n }\\n }\\n\\n p.txt {\\n margin-top: size-variable-sp(24);\\n font-size: size-variable-sp(14);\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n width: size-variable-sp(210);\\n color: $SUB_COLOR2;\\n margin-left: size-variable-sp(20);\\n }\\n\\n .btn {\\n display: none;\\n }\\n }\\n }\\n\\n .sections {\\n .section1 {\\n margin-top: size-variable-sp(-200);\\n padding-top: size-variable-sp(287);\\n }\\n\\n .section.patern1 {\\n .child_section {\\n .imgs {\\n .img1 {\\n margin-left: size-variable-sp(80);\\n }\\n\\n .img2 {\\n margin-top: size-variable-sp(-150);\\n margin-left: size-variable-sp(215);\\n }\\n }\\n }\\n }\\n\\n .section.patern2 {\\n .child_section {\\n .imgs {\\n .img1 {\\n margin-left: size-variable-sp(80);\\n }\\n\\n .img2 {\\n margin-top: size-variable-sp(-150);\\n margin-left: size-variable-sp(40);\\n }\\n }\\n }\\n }\\n\\n .section {\\n h2 {\\n .sub_tit {\\n .span_chunk {\\n display: inline;\\n }\\n }\\n }\\n\\n .child_section {\\n display: flex;\\n flex-direction: column;\\n\\n p.txt {\\n margin-top: size-variable-sp(15);\\n }\\n\\n .btn {\\n margin-top: size-variable-sp(32);\\n }\\n\\n .imgs {\\n order: -1;\\n margin-top: size-variable-sp(48);\\n\\n .img {\\n border-radius: size-variable-sp(10);\\n overflow: hidden;\\n }\\n\\n .img1 {\\n width: size-variable-sp(175);\\n height: size-variable-sp(244);\\n }\\n\\n .img2 {\\n width: size-variable-sp(80);\\n height: size-variable-sp(111);\\n position: relative;\\n }\\n\\n img,\\n video {\\n width: 100%;\\n height: 100%;\\n object-fit: cover;\\n flex-shrink: 0;\\n }\\n }\\n\\n .chunk {\\n margin-top: size-variable-sp(90);\\n }\\n }\\n }\\n }\\n }\\n\\n main.services_ja {\\n .movie {\\n height: 159vh;\\n\\n .section_child {\\n p.txt {\\n font-size: size-variable-sp(12);\\n line-height: 1.75;\\n }\\n }\\n }\\n\\n .sections {\\n .section {\\n h2 {\\n .tit_ja {\\n display: block;\\n font-size: size-variable-sp(12);\\n font-weight: 400;\\n line-height: 1.55;\\n margin-top: size-variable-sp(9);\\n letter-spacing: 0.04em;\\n }\\n }\\n\\n .child_section {\\n h3 {\\n font-size: size-variable-sp(20);\\n line-height: 1.55;\\n }\\n\\n p.txt {\\n font-size: size-variable-sp(12);\\n line-height: 1.75;\\n }\\n }\\n }\\n }\\n }\\n}\\n\",\"$easeInSine: cubic-bezier(0.47, 0, 0.745, 0.715);\\n$easeOutSine: cubic-bezier(0.39, 0.575, 0.565, 1);\\n$easeInOutSine: cubic-bezier(0.445, 0.05, 0.55, 0.95);\\n$easeInQuad: cubic-bezier(0.55, 0.085, 0.68, 0.53);\\n$easeOutQuad: cubic-bezier(0.25, 0.46, 0.45, 0.94);\\n$easeInOutQuad: cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n\\n$easeInCubic: cubic-bezier(0.55, 0.055, 0.675, 0.19);\\n$easeOutCubic: cubic-bezier(0.215, 0.61, 0.355, 1);\\n$easeInOutCubic: cubic-bezier(0.645, 0.045, 0.355, 1);\\n$easeInQuart: cubic-bezier(0.895, 0.03, 0.685, 0.22);\\n$easeOutQuart: cubic-bezier(0.165, 0.84, 0.44, 1);\\n$easeInOutQuart: cubic-bezier(0.77, 0, 0.175, 1);\\n\\n$easeInQuint: cubic-bezier(0.755, 0.05, 0.855, 0.06);\\n$easeOutQuint: cubic-bezier(0.23, 1, 0.32, 1);\\n$easeInOutQuint: cubic-bezier(0.86, 0, 0.07, 1);\\n$easeInExpo: cubic-bezier(0.95, 0.05, 0.795, 0.035);\\n$easeOutExpo: cubic-bezier(0.19, 1, 0.22, 1);\\n$easeInOutExpo: cubic-bezier(1, 0, 0, 1);\\n\\n$easeInCirc: cubic-bezier(0.6, 0.04, 0.98, 0.335);\\n$easeOutCirc: cubic-bezier(0.075, 0.82, 0.165, 1);\\n$easeInOutCirc: cubic-bezier(0.785, 0.135, 0.15, 0.86);\\n$easeInBack: cubic-bezier(0.6, -0.28, 0.735, 0.045);\\n$easeOutBack: cubic-bezier(0.175, 0.885, 0.32, 1.275);\\n$easeInOutBack: cubic-bezier(0.68, -0.55, 0.265, 1.55);\\n\\n$pi: 3.1415926536;\\n$PC_BASE_W: 1440;\\n$SP_BASE_W: 375;\\n\\n$BP: 768;\\n\\n$BASE_COLOR1: #171C21;\\n$BASE_COLOR2: #213143;\\n$KEY_COLOR1: #3098A6;\\n$SUB_COLOR1: #5CB4C0;\\n$SUB_COLOR2: #BDC1C6;\\n$BG_COLOR: #FBFBFB;\\n$BG_COLOR_ALPHA0: #FBFBFB00;\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"main.subpage .hero{width:100vw;height:100vh}main.subpage .hero h1{line-height:1;position:relative}main.subpage .hero h1.show span.item{-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-iteration-count:4;animation-iteration-count:4;transform:rotate3d(1, 1, 1, 0)}main.subpage .hero h1 span.span_chunk{display:flex;perspective:300px}main.subpage .hero h1 span.item{white-space:nowrap;will-change:transform;transform:rotate3d(1, 0, 0, 180deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform 500ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}main.subpage .hero h1 span.item:nth-of-type(1){transition-delay:0.2325s}main.subpage .hero h1 span.item:nth-of-type(2){transition-delay:0.0475s}main.subpage .hero h1 span.item:nth-of-type(3){transition-delay:0.03s}main.subpage .hero h1 span.item:nth-of-type(4){transition-delay:0.02s}main.subpage .hero h1 span.item:nth-of-type(5){transition-delay:0.1525s}main.subpage .hero h1 span.item:nth-of-type(6){transition-delay:0.11s}main.subpage .hero h1 span.item:nth-of-type(7){transition-delay:0.16s}main.subpage .hero h1 span.item:nth-of-type(8){transition-delay:0.2325s}main.subpage .hero h1 span.item:nth-of-type(9){transition-delay:0.2275s}main.subpage .hero h1 span.item:nth-of-type(10){transition-delay:0.07s}main.subpage .hero h1 span.item:nth-of-type(11){transition-delay:0.175s}main.subpage .hero h1 span.item:nth-of-type(12){transition-delay:0.235s}main.subpage .hero h1 span.item:nth-of-type(13){transition-delay:0.055s}main.subpage .hero h1 span.item:nth-of-type(14){transition-delay:0.06s}main.subpage .hero h1 span.item:nth-of-type(15){transition-delay:0.1525s}main.subpage .hero h1 span.item:nth-of-type(16){transition-delay:0.19s}main.subpage .hero h1 span.item:nth-of-type(17){transition-delay:0.15s}main.subpage .hero h1 span.item:nth-of-type(18){transition-delay:0.1025s}main.subpage .hero h1 span.item:nth-of-type(19){transition-delay:0.1025s}main.subpage .hero h1 span.item:nth-of-type(20){transition-delay:0.035s}main.subpage .hero h1 span.item:nth-of-type(21){transition-delay:0.15s}main.subpage .hero h1 span.item:nth-of-type(22){transition-delay:0.1425s}main.subpage .hero h1 span.item:nth-of-type(23){transition-delay:0.195s}main.subpage .hero h1 span.item:nth-of-type(24){transition-delay:0.0675s}main.subpage .hero h1 span.item:nth-of-type(25){transition-delay:0.115s}main.subpage .hero h1 span.item:nth-of-type(26){transition-delay:0.2075s}main.subpage .hero h1 span.item:nth-of-type(27){transition-delay:0.0775s}main.subpage .hero h1 span.item:nth-of-type(28){transition-delay:0.2275s}main.subpage .hero h1 span.item:nth-of-type(29){transition-delay:0.24s}main.subpage .hero h1 span.item:nth-of-type(30){transition-delay:0.1s}main.subpage .hero .sub_tit{color:#5cb4c0;font-weight:600}main.subpage .hero .scroll{position:absolute;top:100%;font-weight:500;letter-spacing:.02em;z-index:1;color:#fff}main.subpage .hero .scroll:before{content:\\\"\\\";display:inline-block;background-image:url(/assets/img/common/arrow_down_white.svg);background-size:cover;position:relative}main.subpage .hero .scroll .numerator{color:#3098a6}main.subpage .sections_for_local_nav{position:absolute;color:#fff}main.subpage .sections_for_local_nav .local_nav>ul{font-weight:500}main.subpage .sections_for_local_nav .local_nav>ul>li .tit{opacity:.4}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li.current{color:#5cb4c0}main.subpage .sections{background-color:#171c21;color:#fff}main.subpage .sections .section.show h2 .tit span{-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-iteration-count:4;animation-iteration-count:4;transform:rotate3d(1, 1, 1, 0)}main.subpage .sections .section.show h2 .sub_tit span{opacity:1}main.subpage .sections .section h2{transform:translateZ(0)}main.subpage .sections .section h2 span.span_chunk{display:block}main.subpage .sections .section h2 .sub_tit{color:#5cb4c0;display:block}main.subpage .sections .section h2 .sub_tit span{opacity:0;transition:opacity 300ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}main.subpage .sections .section h2 .sub_tit span:nth-of-type(1){transition-delay:0.11s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(2){transition-delay:0.12s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(3){transition-delay:0.13s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(4){transition-delay:0.14s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(5){transition-delay:0.15s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(6){transition-delay:0.16s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(7){transition-delay:0.17s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(8){transition-delay:0.18s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(9){transition-delay:0.19s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(10){transition-delay:0.2s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(11){transition-delay:0.21s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(12){transition-delay:0.22s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(13){transition-delay:0.23s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(14){transition-delay:0.24s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(15){transition-delay:0.25s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(16){transition-delay:0.26s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(17){transition-delay:0.27s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(18){transition-delay:0.28s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(19){transition-delay:0.29s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(20){transition-delay:0.3s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(21){transition-delay:0.31s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(22){transition-delay:0.32s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(23){transition-delay:0.33s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(24){transition-delay:0.34s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(25){transition-delay:0.35s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(26){transition-delay:0.36s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(27){transition-delay:0.37s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(28){transition-delay:0.38s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(29){transition-delay:0.39s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(30){transition-delay:0.4s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(31){transition-delay:0.41s}main.subpage .sections .section h2 .sub_tit span:nth-of-type(32){transition-delay:0.42s}main.subpage .sections .section h2 .tit .span_chunk{display:flex;perspective:1000px}main.subpage .sections .section h2 .tit span{white-space:nowrap;will-change:transform;transform:rotate3d(1, 0, 0, 180deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform 500ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}main.subpage .sections .section h2 .tit span:nth-of-type(1){transition-delay:0.12635s}main.subpage .sections .section h2 .tit span:nth-of-type(2){transition-delay:0.3304s}main.subpage .sections .section h2 .tit span:nth-of-type(3){transition-delay:0.23275s}main.subpage .sections .section h2 .tit span:nth-of-type(4){transition-delay:0.1393s}main.subpage .sections .section h2 .tit span:nth-of-type(5){transition-delay:0.22015s}main.subpage .sections .section h2 .tit span:nth-of-type(6){transition-delay:0.105s}main.subpage .sections .section h2 .tit span:nth-of-type(7){transition-delay:0.07105s}main.subpage .sections .section h2 .tit span:nth-of-type(8){transition-delay:0.0189s}main.subpage .sections .section h2 .tit span:nth-of-type(9){transition-delay:0.028s}main.subpage .sections .section h2 .tit span:nth-of-type(10){transition-delay:0.07035s}main.subpage .sections .section h2 .tit span:nth-of-type(11){transition-delay:0.24815s}main.subpage .sections .section h2 .tit span:nth-of-type(12){transition-delay:0.1428s}main.subpage .sections .section h2 .tit span:nth-of-type(13){transition-delay:0.31115s}main.subpage .sections .section h2 .tit span:nth-of-type(14){transition-delay:0.18025s}main.subpage .sections .section h2 .tit span:nth-of-type(15){transition-delay:0.3339s}main.subpage .sections .section h2 .tit span:nth-of-type(16){transition-delay:0.3332s}main.subpage .sections .section h2 .tit span:nth-of-type(17){transition-delay:0.02205s}main.subpage .sections .section h2 .tit span:nth-of-type(18){transition-delay:0.32235s}main.subpage .sections .section h2 .tit span:nth-of-type(19){transition-delay:0.1778s}main.subpage .sections .section h2 .tit span:nth-of-type(20){transition-delay:0.0462s}main.subpage .sections .section h2 .tit span:nth-of-type(21){transition-delay:0.25305s}main.subpage .sections .section h2 .tit span:nth-of-type(22){transition-delay:0.1729s}main.subpage .sections .section h2 .tit span:nth-of-type(23){transition-delay:0.11725s}main.subpage .sections .section h2 .tit span:nth-of-type(24){transition-delay:0.24675s}main.subpage .sections .section h2 .tit span:nth-of-type(25){transition-delay:0.1841s}main.subpage .sections .section h2 .tit span:nth-of-type(26){transition-delay:0.33075s}main.subpage .sections .section h2 .tit span:nth-of-type(27){transition-delay:0.07525s}main.subpage .sections .section h2 .tit span:nth-of-type(28){transition-delay:0.22015s}main.subpage .sections .section h2 .tit span:nth-of-type(29){transition-delay:0.3472s}main.subpage .sections .section h2 .tit span:nth-of-type(30){transition-delay:0.00385s}main.subpage .sections .section .child_section h3.show span{opacity:1}main.subpage .sections .section .child_section h3.show span:nth-of-type(1){-webkit-animation:common_blink .13s linear 0.0684s;animation:common_blink .13s linear 0.0684s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(2){-webkit-animation:common_blink .13s linear 0.07455s;animation:common_blink .13s linear 0.07455s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(3){-webkit-animation:common_blink .13s linear 0.066s;animation:common_blink .13s linear 0.066s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(4){-webkit-animation:common_blink .13s linear 0.03705s;animation:common_blink .13s linear 0.03705s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(5){-webkit-animation:common_blink .13s linear 0.03765s;animation:common_blink .13s linear 0.03765s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(6){-webkit-animation:common_blink .13s linear 0.0849s;animation:common_blink .13s linear 0.0849s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(7){-webkit-animation:common_blink .13s linear 0.07365s;animation:common_blink .13s linear 0.07365s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(8){-webkit-animation:common_blink .13s linear 0.0021s;animation:common_blink .13s linear 0.0021s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(9){-webkit-animation:common_blink .13s linear 0.0939s;animation:common_blink .13s linear 0.0939s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(10){-webkit-animation:common_blink .13s linear 0.05295s;animation:common_blink .13s linear 0.05295s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(11){-webkit-animation:common_blink .13s linear 0.01185s;animation:common_blink .13s linear 0.01185s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(12){-webkit-animation:common_blink .13s linear 0.123s;animation:common_blink .13s linear 0.123s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(13){-webkit-animation:common_blink .13s linear 0.0405s;animation:common_blink .13s linear 0.0405s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(14){-webkit-animation:common_blink .13s linear 0.0882s;animation:common_blink .13s linear 0.0882s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(15){-webkit-animation:common_blink .13s linear 0.1212s;animation:common_blink .13s linear 0.1212s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(16){-webkit-animation:common_blink .13s linear 0.11865s;animation:common_blink .13s linear 0.11865s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(17){-webkit-animation:common_blink .13s linear 0.0414s;animation:common_blink .13s linear 0.0414s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(18){-webkit-animation:common_blink .13s linear 0.0507s;animation:common_blink .13s linear 0.0507s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(19){-webkit-animation:common_blink .13s linear 0.05625s;animation:common_blink .13s linear 0.05625s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(20){-webkit-animation:common_blink .13s linear 0.08835s;animation:common_blink .13s linear 0.08835s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(21){-webkit-animation:common_blink .13s linear 0.02865s;animation:common_blink .13s linear 0.02865s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(22){-webkit-animation:common_blink .13s linear 0.0858s;animation:common_blink .13s linear 0.0858s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(23){-webkit-animation:common_blink .13s linear 0.0036s;animation:common_blink .13s linear 0.0036s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(24){-webkit-animation:common_blink .13s linear 0.1137s;animation:common_blink .13s linear 0.1137s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(25){-webkit-animation:common_blink .13s linear 0.01965s;animation:common_blink .13s linear 0.01965s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(26){-webkit-animation:common_blink .13s linear 0.09885s;animation:common_blink .13s linear 0.09885s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(27){-webkit-animation:common_blink .13s linear 0.1344s;animation:common_blink .13s linear 0.1344s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(28){-webkit-animation:common_blink .13s linear 0.11685s;animation:common_blink .13s linear 0.11685s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(29){-webkit-animation:common_blink .13s linear 0.09225s;animation:common_blink .13s linear 0.09225s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(30){-webkit-animation:common_blink .13s linear 0.1194s;animation:common_blink .13s linear 0.1194s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(31){-webkit-animation:common_blink .13s linear 0.0258s;animation:common_blink .13s linear 0.0258s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(32){-webkit-animation:common_blink .13s linear 0.0393s;animation:common_blink .13s linear 0.0393s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(33){-webkit-animation:common_blink .13s linear 0.0351s;animation:common_blink .13s linear 0.0351s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(34){-webkit-animation:common_blink .13s linear 0.0639s;animation:common_blink .13s linear 0.0639s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(35){-webkit-animation:common_blink .13s linear 0.0279s;animation:common_blink .13s linear 0.0279s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(36){-webkit-animation:common_blink .13s linear 0.1146s;animation:common_blink .13s linear 0.1146s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(37){-webkit-animation:common_blink .13s linear 0.108s;animation:common_blink .13s linear 0.108s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(38){-webkit-animation:common_blink .13s linear 0.084s;animation:common_blink .13s linear 0.084s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(39){-webkit-animation:common_blink .13s linear 0.13245s;animation:common_blink .13s linear 0.13245s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(40){-webkit-animation:common_blink .13s linear 0.1053s;animation:common_blink .13s linear 0.1053s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(41){-webkit-animation:common_blink .13s linear 0.0216s;animation:common_blink .13s linear 0.0216s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(42){-webkit-animation:common_blink .13s linear 0.0978s;animation:common_blink .13s linear 0.0978s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(43){-webkit-animation:common_blink .13s linear 0.1041s;animation:common_blink .13s linear 0.1041s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(44){-webkit-animation:common_blink .13s linear 0.0114s;animation:common_blink .13s linear 0.0114s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(45){-webkit-animation:common_blink .13s linear 0.12735s;animation:common_blink .13s linear 0.12735s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(46){-webkit-animation:common_blink .13s linear 0.01905s;animation:common_blink .13s linear 0.01905s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(47){-webkit-animation:common_blink .13s linear 0.06795s;animation:common_blink .13s linear 0.06795s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(48){-webkit-animation:common_blink .13s linear 0.126s;animation:common_blink .13s linear 0.126s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(49){-webkit-animation:common_blink .13s linear 0.1428s;animation:common_blink .13s linear 0.1428s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(50){-webkit-animation:common_blink .13s linear 0.10365s;animation:common_blink .13s linear 0.10365s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(51){-webkit-animation:common_blink .13s linear 0.01635s;animation:common_blink .13s linear 0.01635s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(52){-webkit-animation:common_blink .13s linear 0.1296s;animation:common_blink .13s linear 0.1296s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(53){-webkit-animation:common_blink .13s linear 0.0972s;animation:common_blink .13s linear 0.0972s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(54){-webkit-animation:common_blink .13s linear 0.10035s;animation:common_blink .13s linear 0.10035s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(55){-webkit-animation:common_blink .13s linear 0.0714s;animation:common_blink .13s linear 0.0714s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(56){-webkit-animation:common_blink .13s linear 0.02865s;animation:common_blink .13s linear 0.02865s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(57){-webkit-animation:common_blink .13s linear 0.0789s;animation:common_blink .13s linear 0.0789s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(58){-webkit-animation:common_blink .13s linear 0.1194s;animation:common_blink .13s linear 0.1194s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(59){-webkit-animation:common_blink .13s linear 0.0843s;animation:common_blink .13s linear 0.0843s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(60){-webkit-animation:common_blink .13s linear 0.12585s;animation:common_blink .13s linear 0.12585s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(61){-webkit-animation:common_blink .13s linear 0.1365s;animation:common_blink .13s linear 0.1365s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(62){-webkit-animation:common_blink .13s linear 0.05055s;animation:common_blink .13s linear 0.05055s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(63){-webkit-animation:common_blink .13s linear 0.0927s;animation:common_blink .13s linear 0.0927s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(64){-webkit-animation:common_blink .13s linear 0.13455s;animation:common_blink .13s linear 0.13455s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(65){-webkit-animation:common_blink .13s linear 0.11715s;animation:common_blink .13s linear 0.11715s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(66){-webkit-animation:common_blink .13s linear 0.0402s;animation:common_blink .13s linear 0.0402s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(67){-webkit-animation:common_blink .13s linear 0.0138s;animation:common_blink .13s linear 0.0138s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(68){-webkit-animation:common_blink .13s linear 0.05475s;animation:common_blink .13s linear 0.05475s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(69){-webkit-animation:common_blink .13s linear 0.1389s;animation:common_blink .13s linear 0.1389s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(70){-webkit-animation:common_blink .13s linear 0.09615s;animation:common_blink .13s linear 0.09615s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(71){-webkit-animation:common_blink .13s linear 0.1473s;animation:common_blink .13s linear 0.1473s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(72){-webkit-animation:common_blink .13s linear 0.0999s;animation:common_blink .13s linear 0.0999s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(73){-webkit-animation:common_blink .13s linear 0.0654s;animation:common_blink .13s linear 0.0654s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(74){-webkit-animation:common_blink .13s linear 0.03165s;animation:common_blink .13s linear 0.03165s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(75){-webkit-animation:common_blink .13s linear 0.11505s;animation:common_blink .13s linear 0.11505s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(76){-webkit-animation:common_blink .13s linear 0.08775s;animation:common_blink .13s linear 0.08775s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(77){-webkit-animation:common_blink .13s linear 0.03195s;animation:common_blink .13s linear 0.03195s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(78){-webkit-animation:common_blink .13s linear 0.1167s;animation:common_blink .13s linear 0.1167s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(79){-webkit-animation:common_blink .13s linear 0.0468s;animation:common_blink .13s linear 0.0468s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3.show span:nth-of-type(80){-webkit-animation:common_blink .13s linear 0.02625s;animation:common_blink .13s linear 0.02625s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section h3 span{opacity:0;transition:opacity 200ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}@media screen and (min-width: 768px){main.subpage .hero h1{left:50vw;top:50vh;transform:translate3d(-50%, -9.5555555556rem, 0);text-align:center;font-size:11.1111111111rem;letter-spacing:-0.02em}main.subpage .hero h1 span.span_chunk{justify-content:center}main.subpage .hero h1 span.space{width:2.2222222222rem}main.subpage .hero .sub_tit{position:absolute;left:50vw;top:50vh;font-size:1.5555555556rem;line-height:1.5;letter-spacing:-0.01em;transform:translate3d(-50%, -16.7777777778rem, 0)}main.subpage .hero .scroll{left:50vw;transform:translate3d(-50%, 0, 0);margin-top:-7rem;font-size:1.5555555556rem;font-weight:600;letter-spacing:-0.01em}main.subpage .hero .scroll:before{width:1.2222222222rem;height:1.2222222222rem;margin-right:.4444444444rem;top:.1111111111rem}main.subpage .hero .scroll .numerator{margin-left:3rem}main.subpage .hero .scroll .numerator:after{content:\\\"|\\\";margin-left:.4444444444rem;margin-right:.4444444444rem}main.subpage .sections_for_local_nav{margin-top:0rem}main.subpage .sections_for_local_nav .local_nav{position:-webkit-sticky;position:sticky;top:0;display:table}main.subpage .sections_for_local_nav .local_nav .bar{position:absolute;top:80px;left:31.1111111111rem;width:1px;height:calc(100vh - 160px);background:#fff;display:block;opacity:.16}main.subpage .sections_for_local_nav .local_nav>ul{position:relative;top:50vh;transform:translate3d(0, -50%, 0);margin-left:8.8888888889rem}main.subpage .sections_for_local_nav .local_nav>ul>li .tit{font-size:1.1111111111rem;line-height:1.5;letter-spacing:.06em}main.subpage .sections_for_local_nav .local_nav>ul>li>ul{font-size:1.3333333333rem;margin-top:1.3333333333rem;margin-bottom:3.5555555556rem;line-height:1.5}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li{position:relative;margin-top:.8888888889rem;letter-spacing:.06em;cursor:pointer}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(1){-webkit-animation:common_blink .13s linear 0.03s;animation:common_blink .13s linear 0.03s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(2){-webkit-animation:common_blink .13s linear 0.12165s;animation:common_blink .13s linear 0.12165s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(3){-webkit-animation:common_blink .13s linear 0.12315s;animation:common_blink .13s linear 0.12315s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(4){-webkit-animation:common_blink .13s linear 0.1173s;animation:common_blink .13s linear 0.1173s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(5){-webkit-animation:common_blink .13s linear 0.0087s;animation:common_blink .13s linear 0.0087s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(6){-webkit-animation:common_blink .13s linear 0.0285s;animation:common_blink .13s linear 0.0285s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(7){-webkit-animation:common_blink .13s linear 0.05235s;animation:common_blink .13s linear 0.05235s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(8){-webkit-animation:common_blink .13s linear 0.11805s;animation:common_blink .13s linear 0.11805s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(9){-webkit-animation:common_blink .13s linear 0.0807s;animation:common_blink .13s linear 0.0807s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(10){-webkit-animation:common_blink .13s linear 0.09015s;animation:common_blink .13s linear 0.09015s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(11){-webkit-animation:common_blink .13s linear 0.14895s;animation:common_blink .13s linear 0.14895s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(12){-webkit-animation:common_blink .13s linear 0.00105s;animation:common_blink .13s linear 0.00105s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(13){-webkit-animation:common_blink .13s linear 0.01005s;animation:common_blink .13s linear 0.01005s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(14){-webkit-animation:common_blink .13s linear 0.03015s;animation:common_blink .13s linear 0.03015s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(15){-webkit-animation:common_blink .13s linear 0.0735s;animation:common_blink .13s linear 0.0735s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(16){-webkit-animation:common_blink .13s linear 0.069s;animation:common_blink .13s linear 0.069s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(17){-webkit-animation:common_blink .13s linear 0.08145s;animation:common_blink .13s linear 0.08145s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(18){-webkit-animation:common_blink .13s linear 0.0714s;animation:common_blink .13s linear 0.0714s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(19){-webkit-animation:common_blink .13s linear 0.0837s;animation:common_blink .13s linear 0.0837s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(20){-webkit-animation:common_blink .13s linear 0.01965s;animation:common_blink .13s linear 0.01965s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(21){-webkit-animation:common_blink .13s linear 0.0393s;animation:common_blink .13s linear 0.0393s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(22){-webkit-animation:common_blink .13s linear 0.07005s;animation:common_blink .13s linear 0.07005s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(23){-webkit-animation:common_blink .13s linear 0.02805s;animation:common_blink .13s linear 0.02805s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(24){-webkit-animation:common_blink .13s linear 0.00585s;animation:common_blink .13s linear 0.00585s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(25){-webkit-animation:common_blink .13s linear 0.07875s;animation:common_blink .13s linear 0.07875s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(26){-webkit-animation:common_blink .13s linear 0.1407s;animation:common_blink .13s linear 0.1407s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(27){-webkit-animation:common_blink .13s linear 0.08265s;animation:common_blink .13s linear 0.08265s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(28){-webkit-animation:common_blink .13s linear 0.00495s;animation:common_blink .13s linear 0.00495s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(29){-webkit-animation:common_blink .13s linear 0.01665s;animation:common_blink .13s linear 0.01665s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li:hover span.item:nth-of-type(30){-webkit-animation:common_blink .13s linear 0.06975s;animation:common_blink .13s linear 0.06975s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections_for_local_nav .local_nav>ul>li>ul>li.current:before{content:\\\"\\\";position:absolute;background-color:#5cb4c0;width:4px;height:4px;display:block;border-radius:50%;top:.7777777778rem;left:-1.5555555556rem}main.subpage .sections{border-radius:2.2222222222rem;margin-top:8.8888888889rem;padding-top:22.8888888889rem}main.subpage .sections .section{margin-left:40rem;width:69.5vw;margin-top:21.6666666667rem}main.subpage .sections .section .section_child{padding-bottom:8.7777777778rem}main.subpage .sections .section h2 .sub_tit{position:relative;display:block;font-size:1.5555555556rem;line-height:1;letter-spacing:-0.01em;transform:translate3d(0, -100%, 0)}main.subpage .sections .section h2 .tit{display:block;font-size:7.1111111111rem;line-height:1.1;letter-spacing:-0.02em;margin-top:1.6666666667rem}main.subpage .sections .section h2 .tit span.space{width:1.5555555556rem}main.subpage .sections .section:after{content:\\\"\\\";width:100%;height:1px;background-color:#626c76;display:block}main.subpage .sections .section:last-of-type{padding-bottom:4.8888888889rem}main.subpage .sections .section:last-of-type:after{content:none}main.subpage .sections .section .child_section .items{position:relative;width:48.8888888889rem;margin-top:2.2222222222rem;margin-left:13.3333333333rem;overflow:hidden;display:inline-flex}main.subpage .sections .section .child_section .items:after{position:absolute;right:0;content:\\\"\\\";width:1px;height:100%;background-color:#3c4044}main.subpage .sections .section .child_section .items .item{width:100%;padding-bottom:8.8888888889rem;flex-shrink:0}main.subpage .sections .section .child_section .items .item .title{width:40rem;margin-top:3.5555555556rem;font-size:1.7777777778rem;font-weight:600;line-height:1.5;letter-spacing:.04em}main.subpage .sections .section .child_section .items .item .text{width:40rem;font-size:1.5555555556rem;line-height:1.5;letter-spacing:.04em;margin-top:1.3333333333rem}main.subpage .sections .section .child_section .documentation_update{margin-top:13.1111111111rem}main.subpage .sections .section .child_section .documentation_update li a:hover{-webkit-animation:common_blink .075s linear;animation:common_blink .075s linear;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes{font-size:1.5555555556rem;letter-spacing:.04em;margin-top:1.8888888889rem}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(1){-webkit-animation:common_blink .13s linear 0.1392s;animation:common_blink .13s linear 0.1392s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(2){-webkit-animation:common_blink .13s linear 0.07725s;animation:common_blink .13s linear 0.07725s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(3){-webkit-animation:common_blink .13s linear 0.0561s;animation:common_blink .13s linear 0.0561s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(4){-webkit-animation:common_blink .13s linear 0.1056s;animation:common_blink .13s linear 0.1056s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(5){-webkit-animation:common_blink .13s linear 0.1074s;animation:common_blink .13s linear 0.1074s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(6){-webkit-animation:common_blink .13s linear 0.14445s;animation:common_blink .13s linear 0.14445s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(7){-webkit-animation:common_blink .13s linear 0.0153s;animation:common_blink .13s linear 0.0153s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(8){-webkit-animation:common_blink .13s linear 0.02385s;animation:common_blink .13s linear 0.02385s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(9){-webkit-animation:common_blink .13s linear 0.1248s;animation:common_blink .13s linear 0.1248s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(10){-webkit-animation:common_blink .13s linear 0.03945s;animation:common_blink .13s linear 0.03945s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(11){-webkit-animation:common_blink .13s linear 0.1266s;animation:common_blink .13s linear 0.1266s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(12){-webkit-animation:common_blink .13s linear 0.0135s;animation:common_blink .13s linear 0.0135s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(13){-webkit-animation:common_blink .13s linear 0.0258s;animation:common_blink .13s linear 0.0258s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(14){-webkit-animation:common_blink .13s linear 0.09405s;animation:common_blink .13s linear 0.09405s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(15){-webkit-animation:common_blink .13s linear 0.12465s;animation:common_blink .13s linear 0.12465s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(16){-webkit-animation:common_blink .13s linear 0.06795s;animation:common_blink .13s linear 0.06795s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(17){-webkit-animation:common_blink .13s linear 0.1266s;animation:common_blink .13s linear 0.1266s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(18){-webkit-animation:common_blink .13s linear 0.13485s;animation:common_blink .13s linear 0.13485s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(19){-webkit-animation:common_blink .13s linear 0.0486s;animation:common_blink .13s linear 0.0486s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(20){-webkit-animation:common_blink .13s linear 0.00135s;animation:common_blink .13s linear 0.00135s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(21){-webkit-animation:common_blink .13s linear 0.01395s;animation:common_blink .13s linear 0.01395s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(22){-webkit-animation:common_blink .13s linear 0.07155s;animation:common_blink .13s linear 0.07155s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(23){-webkit-animation:common_blink .13s linear 0.06195s;animation:common_blink .13s linear 0.06195s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(24){-webkit-animation:common_blink .13s linear 0.0354s;animation:common_blink .13s linear 0.0354s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(25){-webkit-animation:common_blink .13s linear 0.0255s;animation:common_blink .13s linear 0.0255s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(26){-webkit-animation:common_blink .13s linear 0.12375s;animation:common_blink .13s linear 0.12375s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(27){-webkit-animation:common_blink .13s linear 0.0606s;animation:common_blink .13s linear 0.0606s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(28){-webkit-animation:common_blink .13s linear 0.06765s;animation:common_blink .13s linear 0.06765s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(29){-webkit-animation:common_blink .13s linear 0.05355s;animation:common_blink .13s linear 0.05355s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.subpage .sections .section .child_section .release_notes a:hover span.item:nth-of-type(30){-webkit-animation:common_blink .13s linear 0.06315s;animation:common_blink .13s linear 0.06315s;-webkit-animation-iteration-count:2;animation-iteration-count:2}}@media screen and (max-width: 767px){main.subpage .hero h1{font-size:23.04rem;margin-left:8.5333333333rem;margin-top:8.5333333333rem;letter-spacing:-0.02em}main.subpage .hero h1 span.space{width:4.6933333333rem}main.subpage .hero .sub_tit{font-size:5.12rem;margin-left:8.5333333333rem;line-height:1}main.subpage .hero .scroll{left:50vw;transform:translate3d(-50%, 0, 0);margin-top:-25.1733333333rem;font-size:5.12rem}main.subpage .hero .scroll:before{width:4.6933333333rem;height:4.6933333333rem;margin-right:2.9866666667rem;top:.8533333333rem}main.subpage .hero .scroll .numerator{margin-left:11.52rem}main.subpage .hero .scroll .numerator:after{content:\\\"|\\\";margin-left:1.7066666667rem;margin-right:1.7066666667rem}main.subpage .sections_for_local_nav .local_nav{display:none}main.subpage .sections{border-radius:4.2666666667rem}main.subpage .sections .section{padding-top:34.1333333333rem}main.subpage .sections .section .section_child{width:89.5vw;margin:0 auto}main.subpage .sections .section h2 .sub_tit{font-size:4.2666666667rem;line-height:1.5;letter-spacing:.02em}main.subpage .sections .section h2 .sub_tit span.space{width:3px;display:inline-block}main.subpage .sections .section h2 .tit{font-size:15.36rem;line-height:1.1;letter-spacing:-0.01em;margin-top:8.5333333333rem;display:block}main.subpage .sections .section h2 .tit span.space{width:3.4133333333rem}main.subpage .sections .section:after{content:\\\"\\\";width:100%;height:1px;background-color:#626c76;display:block;margin-top:42.24rem}main.subpage .sections .section:last-of-type{padding-bottom:69.12rem}main.subpage .sections .section:last-of-type:after{content:none}main.subpage .sections .section .child_section h3{font-size:10.24rem;line-height:1.2;letter-spacing:-0.01em}main.subpage .sections .section .child_section p.txt{margin-top:9.8133333333rem;font-size:5.9733333333rem;line-height:1.3;letter-spacing:-0.01em;color:#bdc1c6}main.subpage .sections .section .child_section .pic img{border-radius:10.24rem;width:100%}main.subpage .sections .section .child_section .items{width:102.4rem;margin-top:19.2rem;margin-left:34.56rem;overflow:hidden;display:inline-flex}main.subpage .sections .section .child_section .items .item{width:102.4rem;flex-shrink:0}main.subpage .sections .section .child_section .items .item .title{font-size:6.8266666667rem;font-weight:600;line-height:1.5;letter-spacing:.04em}main.subpage .sections .section .child_section .items .item .text{font-size:5.9733333333rem;line-height:1.5;letter-spacing:.04em;margin-top:5.12rem}main.subpage .sections .section .child_section .documentation_update{margin-top:42.6666666667rem}main.subpage .sections .section .child_section .documentation_update .txt{margin-top:6.8266666667rem}main.subpage .sections .section .child_section .release_notes{font-size:5.12rem;letter-spacing:.04em;margin-top:8.1066666667rem}main.subpage .sections .section .child_section .release_notes a:after{margin-left:2.1333333333rem}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/scss/subpage.scss\",\"webpack://./src/scss/_variable.scss\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"@import \\\"variable\\\";\\n@import \\\"mixin\\\";\\n\\n\\n/*\\nz-index\\n\\n*/\\n\\n//For COMMON LAYOUT\\nmain.subpage {\\n .hero{\\n width: 100vw;\\n height: 100vh;\\n h1{\\n\\n line-height: 1;\\n position: relative;\\n &.show{\\n span.item{\\n animation-name: common_blink;\\n animation-duration: .1s;\\n animation-timing-function: linear;\\n animation-iteration-count: 4;\\n transform: rotate3d(1, 1, 1, 0);\\n }\\n }\\n\\n span.span_chunk{\\n display: flex;\\n perspective: 300px;\\n }\\n\\n span.item{\\n white-space: nowrap;\\n will-change: transform;\\n transform: rotate3d(1, 0, 0, 180deg);\\n backface-visibility: hidden;\\n transition: transform 500ms;\\n transition-timing-function: $easeOutQuart;\\n\\n @for $i from 1 through 30 {\\n &:nth-of-type(#{$i}) {\\n $rand: random(100) * .0025;\\n transition-delay: $rand + s;\\n }\\n }\\n }\\n }\\n\\n .sub_tit{\\n color: $SUB_COLOR1;\\n font-weight: 600;\\n }\\n\\n .scroll {\\n position: absolute;\\n top: 100%;\\n font-weight: 500;\\n letter-spacing: 0.02em;\\n z-index: 1;\\n color: #fff;\\n &:before {\\n content: \\\"\\\";\\n display: inline-block;\\n background-image: url(/assets/img/common/arrow_down_white.svg);\\n background-size: cover;\\n position: relative;\\n }\\n\\n .numerator {\\n color: $KEY_COLOR1;\\n }\\n }\\n }\\n\\n .sections_for_local_nav{\\n position: absolute;\\n color: #fff;\\n\\n .local_nav{\\n & > ul{\\n font-weight: 500;\\n & > li{\\n .tit{\\n opacity: .4;\\n }\\n & > ul{\\n & > li{\\n &.current{\\n color: $SUB_COLOR1;\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n\\n .sections{\\n background-color: $BASE_COLOR1;\\n color: #fff;\\n\\n .section{\\n\\n &.show{\\n h2 {\\n .tit {\\n span {\\n animation-name: common_blink;\\n animation-duration: .1s;\\n animation-timing-function: linear;\\n animation-iteration-count: 4;\\n transform: rotate3d(1, 1, 1, 0);\\n }\\n }\\n\\n .sub_tit {\\n span{\\n opacity: 1;\\n }\\n }\\n }\\n }\\n\\n h2{\\n transform: translateZ(0);\\n span.span_chunk {\\n display: block;\\n }\\n\\n .sub_tit{\\n color: $SUB_COLOR1;\\n display: block;\\n span{\\n opacity: 0;\\n transition: opacity 300ms;\\n transition-timing-function: $easeOutQuart;\\n\\n @for $i from 1 through 32 {\\n &:nth-of-type(#{$i}) {\\n transition-delay: .1 + .01 * $i + s;\\n }\\n }\\n }\\n }\\n\\n .tit{\\n .span_chunk {\\n display: flex;\\n perspective: 1000px;\\n }\\n\\n span{\\n white-space: nowrap;\\n will-change: transform;\\n transform: rotate3d(1, 0, 0, 180deg);\\n backface-visibility: hidden;\\n transition: transform 500ms;\\n transition-timing-function: $easeOutQuart;\\n\\n @for $i from 1 through 30 {\\n &:nth-of-type(#{$i}) {\\n $rand: random(1000) * .00035;\\n transition-delay: $rand + s;\\n }\\n }\\n }\\n }\\n }\\n\\n .child_section{\\n h3{\\n\\n &.show{\\n span {\\n opacity: 1;\\n @for $i from 1 through 80 {\\n &:nth-of-type(#{$i}) {\\n $rand: random(1000) * .00015;\\n animation: common_blink .13s linear $rand + s;\\n animation-iteration-count: 2;\\n }\\n }\\n }\\n }\\n\\n span{\\n opacity: 0;\\n transition: opacity 200ms;\\n transition-timing-function: $easeOutQuart;\\n }\\n }\\n }\\n }\\n }\\n}\\n\\n//For PC LAYOUT\\n@media screen and (min-width: $BP + px) {\\n main.subpage {\\n .hero{\\n h1{\\n left: 50vw;\\n top: 50vh;\\n transform: translate3d(-50%, size-variable-pc(-86), 0);\\n text-align: center;\\n font-size: size-variable-pc(100);\\n letter-spacing: -0.02em;\\n span.span_chunk{\\n justify-content: center;\\n }\\n span.space{\\n width: size-variable-pc(20);\\n }\\n }\\n\\n .sub_tit{\\n position: absolute;\\n left: 50vw;\\n top: 50vh;\\n font-size: size-variable-pc(14);\\n\\n line-height: 1.5;\\n letter-spacing: -0.01em;\\n transform: translate3d(-50%, size-variable-pc(-151), 0);\\n }\\n\\n .scroll {\\n left: 50vw;\\n transform: translate3d(-50%, 0, 0);\\n margin-top: size-variable-pc(-63);\\n font-size: size-variable-pc(14);\\n font-weight: 600;\\n letter-spacing: -0.01em;\\n\\n &:before {\\n width: size-variable-pc(11);\\n height: size-variable-pc(11);\\n margin-right: size-variable-pc(4);\\n top: size-variable-pc(1);\\n }\\n\\n .numerator {\\n margin-left: size-variable-pc(27px);\\n\\n &:after {\\n content: \\\"|\\\";\\n margin-left: size-variable-pc(4px);\\n margin-right: size-variable-pc(4px);\\n }\\n }\\n\\n .denominator {\\n\\n }\\n }\\n }\\n\\n .sections_for_local_nav{\\n margin-top: size-variable-pc(0);\\n .local_nav{\\n position: sticky;\\n top: 0;\\n display: table;\\n .bar{\\n position: absolute;\\n top: 80px;\\n left: size-variable-pc(280);\\n width: 1px;\\n height: calc(100vh - 160px);\\n background: #fff;\\n display: block;\\n opacity: .16;\\n }\\n\\n & > ul{\\n position: relative;\\n //top: size-variable-pc(387);\\n top: 50vh;\\n transform: translate3d(0, -50%, 0);\\n margin-left: size-variable-pc(80);\\n & > li{\\n\\n .tit{\\n font-size: size-variable-pc(10);\\n line-height: 1.5;\\n letter-spacing: 0.06em;\\n }\\n\\n & > ul{\\n font-size: size-variable-pc(12);\\n margin-top: size-variable-pc(12);\\n margin-bottom: size-variable-pc(32);\\n line-height: 1.5;\\n & > li{\\n position: relative;\\n margin-top: size-variable-pc(8);\\n letter-spacing: 0.06em;\\n cursor: pointer;\\n\\n &:hover{\\n span.item{\\n @for $i from 1 through 30 {\\n &:nth-of-type(#{$i}) {\\n $rand: random(1000) * .00015;\\n animation: common_blink .13s linear $rand + s;\\n animation-iteration-count: 2;\\n }\\n }\\n }\\n }\\n\\n &.current{\\n &:before{\\n content:\\\"\\\";\\n position: absolute;\\n background-color: $SUB_COLOR1;\\n width: 4px;\\n height: 4px;\\n display: block;\\n border-radius: 50%;\\n top: size-variable-pc(7);\\n left: size-variable-pc(-14);\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n\\n .sections{\\n border-radius: size-variable-pc(20);\\n margin-top: size-variable-pc(80);\\n padding-top: size-variable-pc(206);\\n\\n .section{\\n margin-left: size-variable-pc(360);\\n width: 69.5vw;\\n margin-top: size-variable-pc(195);\\n\\n .section_child{\\n padding-bottom: size-variable-pc(79);\\n }\\n\\n h2{\\n .sub_tit{\\n position: relative;\\n display: block;\\n font-size: size-variable-pc(14);\\n line-height: 1;\\n letter-spacing: -0.01em;\\n //margin-top: size-variable-pc(69);\\n transform: translate3d(0, -100%, 0);\\n }\\n\\n .tit{\\n display: block;\\n font-size: size-variable-pc(64);\\n line-height: 1.1;\\n letter-spacing: -0.02em;\\n margin-top: size-variable-pc(15);\\n\\n span.space{\\n width: size-variable-pc(14);\\n }\\n\\n span.chunk1{\\n //margin-left: size-variable-pc(154);\\n }\\n }\\n }\\n\\n &:after{\\n content:\\\"\\\";\\n width: 100%;\\n height: 1px;\\n background-color: #626C76;\\n display: block;\\n }\\n\\n &:last-of-type{\\n padding-bottom: size-variable-pc(44);\\n &:after{\\n content: none;\\n }\\n }\\n\\n .child_section{\\n .items{\\n position: relative;\\n width: size-variable-pc(440);\\n margin-top: size-variable-pc(20);\\n margin-left: size-variable-pc(120);\\n //height: size-variable-pc(200);\\n overflow: hidden;\\n display: inline-flex;\\n &:after{\\n position: absolute;\\n right: 0;\\n content:\\\"\\\";\\n width: 1px;\\n height: 100%;\\n background-color: #3C4044;\\n }\\n .item{\\n width: 100%;\\n padding-bottom: size-variable-pc(80);\\n flex-shrink: 0;\\n .title{\\n width: size-variable-pc(360);\\n margin-top: size-variable-pc(32);\\n font-size: size-variable-pc(16);\\n font-weight: 600;\\n line-height: 1.5;\\n letter-spacing: 0.04em;\\n }\\n\\n .text{\\n width: size-variable-pc(360);\\n font-size: size-variable-pc(14);\\n line-height: 1.5;\\n letter-spacing: 0.04em;\\n margin-top: size-variable-pc(12);\\n }\\n }\\n }\\n\\n .documentation_update{\\n margin-top: size-variable-pc(118);\\n li{\\n a{\\n &:hover{\\n animation: common_blink .075s linear;\\n animation-iteration-count: 2;\\n }\\n }\\n }\\n }\\n\\n .release_notes{\\n font-size: size-variable-pc(14);\\n letter-spacing: .04em;\\n margin-top: size-variable-pc(17);\\n a{\\n &:hover{\\n span.item{\\n @for $i from 1 through 30 {\\n &:nth-of-type(#{$i}) {\\n $rand: random(1000) * .00015;\\n animation: common_blink .13s linear $rand + s;\\n animation-iteration-count: 2;\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n}\\n\\n//For TABLET/SP LAYOUT\\n@media screen and (max-width: ($BP - 1) + px) {\\n main.subpage {\\n .hero{\\n h1{\\n font-size: size-variable-sp(54);\\n margin-left: size-variable-sp(20);\\n margin-top: size-variable-sp(20);\\n letter-spacing: -.02em;\\n span.space{\\n width: size-variable-sp(11);\\n }\\n }\\n\\n .sub_tit{\\n font-size: size-variable-sp(12);\\n margin-left: size-variable-sp(20);\\n line-height: 1;\\n }\\n\\n .scroll {\\n left: 50vw;\\n transform: translate3d(-50%, 0, 0);\\n margin-top: size-variable-sp(-59);\\n font-size: size-variable-sp(12);\\n\\n &:before {\\n width: size-variable-sp(11);\\n height: size-variable-sp(11);\\n margin-right: size-variable-sp(7);\\n top: size-variable-sp(2);\\n }\\n\\n .numerator {\\n margin-left: size-variable-sp(27px);\\n\\n &:after {\\n content: \\\"|\\\";\\n margin-left: size-variable-sp(4px);\\n margin-right: size-variable-sp(4px);\\n }\\n }\\n\\n .denominator {\\n\\n }\\n }\\n }\\n\\n .sections_for_local_nav{\\n .local_nav{\\n display: none;\\n }\\n }\\n\\n .sections{\\n border-radius: size-variable-sp(10);\\n\\n .section{\\n padding-top: size-variable-sp(80);\\n\\n .section_child{\\n width: 89.5vw;\\n margin: 0 auto;\\n }\\n\\n h2{\\n .sub_tit{\\n font-size: size-variable-sp(10);\\n line-height: 1.5;\\n letter-spacing: 0.02em;\\n span.space{\\n width: 3px;\\n display: inline-block;\\n }\\n }\\n\\n .tit{\\n font-size: size-variable-sp(36);\\n line-height: 1.1;\\n letter-spacing: -0.01em;\\n margin-top: size-variable-sp(20);\\n display: block;\\n\\n span.space {\\n width: size-variable-sp(8);\\n }\\n }\\n }\\n\\n &:after{\\n content:\\\"\\\";\\n width: 100%;\\n height: 1px;\\n background-color: #626C76;\\n display: block;\\n margin-top: size-variable-sp(99);\\n }\\n\\n &:last-of-type{\\n padding-bottom: size-variable-sp(162);\\n &:after{\\n content: none;\\n }\\n }\\n\\n .child_section {\\n\\n h3 {\\n font-size: size-variable-sp(24);\\n line-height: 1.2;\\n letter-spacing: -0.01em;\\n }\\n\\n p.txt{\\n margin-top: size-variable-sp(23);\\n font-size: size-variable-sp(14);\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n color: $SUB_COLOR2;\\n }\\n\\n\\n\\n .pic{\\n img {\\n border-radius: size-variable-sp(24px);\\n width: 100%;\\n }\\n }\\n\\n .items{\\n width: size-variable-sp(240);\\n margin-top: size-variable-sp(45);\\n margin-left: size-variable-sp(81);\\n overflow: hidden;\\n display: inline-flex;\\n .item{\\n width: size-variable-sp(240);\\n flex-shrink: 0;\\n\\n .title{\\n font-size: size-variable-sp(16);\\n font-weight: 600;\\n line-height: 1.5;\\n letter-spacing: 0.04em;\\n }\\n\\n .text{\\n font-size: size-variable-sp(14);\\n line-height: 1.5;\\n letter-spacing: 0.04em;\\n margin-top: size-variable-sp(12);\\n }\\n }\\n }\\n\\n .documentation_update{\\n margin-top: size-variable-sp(100);\\n .txt{\\n margin-top: size-variable-sp(16);\\n }\\n }\\n\\n .release_notes{\\n font-size: size-variable-sp(12);\\n letter-spacing: .04em;\\n margin-top: size-variable-sp(19);\\n a{\\n &:after{\\n margin-left: size-variable-sp(5);\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n}\\n\",\"$easeInSine: cubic-bezier(0.47, 0, 0.745, 0.715);\\n$easeOutSine: cubic-bezier(0.39, 0.575, 0.565, 1);\\n$easeInOutSine: cubic-bezier(0.445, 0.05, 0.55, 0.95);\\n$easeInQuad: cubic-bezier(0.55, 0.085, 0.68, 0.53);\\n$easeOutQuad: cubic-bezier(0.25, 0.46, 0.45, 0.94);\\n$easeInOutQuad: cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n\\n$easeInCubic: cubic-bezier(0.55, 0.055, 0.675, 0.19);\\n$easeOutCubic: cubic-bezier(0.215, 0.61, 0.355, 1);\\n$easeInOutCubic: cubic-bezier(0.645, 0.045, 0.355, 1);\\n$easeInQuart: cubic-bezier(0.895, 0.03, 0.685, 0.22);\\n$easeOutQuart: cubic-bezier(0.165, 0.84, 0.44, 1);\\n$easeInOutQuart: cubic-bezier(0.77, 0, 0.175, 1);\\n\\n$easeInQuint: cubic-bezier(0.755, 0.05, 0.855, 0.06);\\n$easeOutQuint: cubic-bezier(0.23, 1, 0.32, 1);\\n$easeInOutQuint: cubic-bezier(0.86, 0, 0.07, 1);\\n$easeInExpo: cubic-bezier(0.95, 0.05, 0.795, 0.035);\\n$easeOutExpo: cubic-bezier(0.19, 1, 0.22, 1);\\n$easeInOutExpo: cubic-bezier(1, 0, 0, 1);\\n\\n$easeInCirc: cubic-bezier(0.6, 0.04, 0.98, 0.335);\\n$easeOutCirc: cubic-bezier(0.075, 0.82, 0.165, 1);\\n$easeInOutCirc: cubic-bezier(0.785, 0.135, 0.15, 0.86);\\n$easeInBack: cubic-bezier(0.6, -0.28, 0.735, 0.045);\\n$easeOutBack: cubic-bezier(0.175, 0.885, 0.32, 1.275);\\n$easeInOutBack: cubic-bezier(0.68, -0.55, 0.265, 1.55);\\n\\n$pi: 3.1415926536;\\n$PC_BASE_W: 1440;\\n$SP_BASE_W: 375;\\n\\n$BP: 768;\\n\\n$BASE_COLOR1: #171C21;\\n$BASE_COLOR2: #213143;\\n$KEY_COLOR1: #3098A6;\\n$SUB_COLOR1: #5CB4C0;\\n$SUB_COLOR2: #BDC1C6;\\n$BG_COLOR: #FBFBFB;\\n$BG_COLOR_ALPHA0: #FBFBFB00;\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"main.top .hero .maskContainer{position:absolute;top:0;filter:url(#colormatrix);width:100%;height:100%}@-webkit-keyframes loop_scale{0%{transform:scale(0)}50%{transform:scale(1)}100%{transform:scale(0)}}@keyframes loop_scale{0%{transform:scale(0)}50%{transform:scale(1)}100%{transform:scale(0)}}main.top .hero .maskContainer .mask{filter:url(#blur);position:absolute;display:block;width:128px;height:128px;border-radius:10px;background-color:#b5d2e0;-webkit-animation:loop_scale 10s infinite;animation:loop_scale 10s infinite;will-change:transform}main.top .hero .scroll{position:absolute;top:100%;font-weight:500;letter-spacing:.02em;z-index:1;opacity:0}main.top .hero .scroll.show{opacity:1;-webkit-animation:common_blink .1s linear;animation:common_blink .1s linear;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .scroll:before{content:\\\"\\\";display:inline-block;background-image:url(/assets/img/common/arrow_down.svg);background-size:cover;position:relative}main.top .hero .skip{position:absolute;top:100%;letter-spacing:.02em;cursor:pointer;font-weight:500;z-index:1;opacity:0;pointer-events:none}main.top .hero .skip.show{opacity:1;-webkit-animation:common_blink .1s linear;animation:common_blink .1s linear;-webkit-animation-iteration-count:2;animation-iteration-count:2;pointer-events:inherit}main.top .hero .create_account{transition:opacity 300ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1);opacity:0}main.top .hero .create_account.show{opacity:1;-webkit-animation:common_blink .1s linear;animation:common_blink .1s linear;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account.hide{opacity:0;pointer-events:none}main.top .hero .contents{position:absolute;top:0}main.top .hero .contents .common_contents{position:absolute;visibility:hidden;pointer-events:none}main.top .hero .contents .common_contents.show{visibility:visible}main.top .hero .contents .common_contents.show h1 span.item{-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-iteration-count:4;animation-iteration-count:4;transform:rotate3d(1, 1, 1, 0)}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(1){transition-delay:0.9125s;-webkit-animation-delay:0.9125s;animation-delay:0.9125s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(2){transition-delay:0.8875s;-webkit-animation-delay:0.8875s;animation-delay:0.8875s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(3){transition-delay:0.9125s;-webkit-animation-delay:0.9125s;animation-delay:0.9125s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(4){transition-delay:0.8875s;-webkit-animation-delay:0.8875s;animation-delay:0.8875s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(5){transition-delay:0.925s;-webkit-animation-delay:0.925s;animation-delay:0.925s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(6){transition-delay:0.85s;-webkit-animation-delay:0.85s;animation-delay:0.85s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(7){transition-delay:0.8625s;-webkit-animation-delay:0.8625s;animation-delay:0.8625s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(8){transition-delay:0.9s;-webkit-animation-delay:0.9s;animation-delay:0.9s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(9){transition-delay:0.8875s;-webkit-animation-delay:0.8875s;animation-delay:0.8875s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(10){transition-delay:0.8125s;-webkit-animation-delay:0.8125s;animation-delay:0.8125s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(11){transition-delay:0.9s;-webkit-animation-delay:0.9s;animation-delay:0.9s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(12){transition-delay:0.875s;-webkit-animation-delay:0.875s;animation-delay:0.875s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(13){transition-delay:0.8625s;-webkit-animation-delay:0.8625s;animation-delay:0.8625s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(14){transition-delay:0.9125s;-webkit-animation-delay:0.9125s;animation-delay:0.9125s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(15){transition-delay:0.85s;-webkit-animation-delay:0.85s;animation-delay:0.85s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(16){transition-delay:0.8125s;-webkit-animation-delay:0.8125s;animation-delay:0.8125s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(17){transition-delay:0.9s;-webkit-animation-delay:0.9s;animation-delay:0.9s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(18){transition-delay:0.8375s;-webkit-animation-delay:0.8375s;animation-delay:0.8375s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(19){transition-delay:0.85s;-webkit-animation-delay:0.85s;animation-delay:0.85s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(20){transition-delay:0.85s;-webkit-animation-delay:0.85s;animation-delay:0.85s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(21){transition-delay:0.825s;-webkit-animation-delay:0.825s;animation-delay:0.825s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(22){transition-delay:0.8125s;-webkit-animation-delay:0.8125s;animation-delay:0.8125s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(23){transition-delay:0.8125s;-webkit-animation-delay:0.8125s;animation-delay:0.8125s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(24){transition-delay:0.85s;-webkit-animation-delay:0.85s;animation-delay:0.85s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(25){transition-delay:0.8125s;-webkit-animation-delay:0.8125s;animation-delay:0.8125s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(26){transition-delay:0.8125s;-webkit-animation-delay:0.8125s;animation-delay:0.8125s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(27){transition-delay:0.85s;-webkit-animation-delay:0.85s;animation-delay:0.85s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(28){transition-delay:0.825s;-webkit-animation-delay:0.825s;animation-delay:0.825s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(29){transition-delay:0.85s;-webkit-animation-delay:0.85s;animation-delay:0.85s}main.top .hero .contents .common_contents.show h1 span.item:nth-of-type(30){transition-delay:0.825s;-webkit-animation-delay:0.825s;animation-delay:0.825s}main.top .hero .contents .common_contents.show h2 span.item{-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-iteration-count:4;animation-iteration-count:4;transform:rotate3d(1, 1, 1, 0)}main.top .hero .contents .common_contents.show h2 span.item:nth-child(1){transition-delay:0.825s;-webkit-animation-delay:0.825s;animation-delay:0.825s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(2){transition-delay:0.7875s;-webkit-animation-delay:0.7875s;animation-delay:0.7875s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(3){transition-delay:0.8125s;-webkit-animation-delay:0.8125s;animation-delay:0.8125s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(4){transition-delay:0.775s;-webkit-animation-delay:0.775s;animation-delay:0.775s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(5){transition-delay:0.7125s;-webkit-animation-delay:0.7125s;animation-delay:0.7125s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(6){transition-delay:0.7625s;-webkit-animation-delay:0.7625s;animation-delay:0.7625s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(7){transition-delay:0.825s;-webkit-animation-delay:0.825s;animation-delay:0.825s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(8){transition-delay:0.7375s;-webkit-animation-delay:0.7375s;animation-delay:0.7375s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(9){transition-delay:0.8125s;-webkit-animation-delay:0.8125s;animation-delay:0.8125s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(10){transition-delay:0.8s;-webkit-animation-delay:0.8s;animation-delay:0.8s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(11){transition-delay:0.75s;-webkit-animation-delay:0.75s;animation-delay:0.75s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(12){transition-delay:0.775s;-webkit-animation-delay:0.775s;animation-delay:0.775s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(13){transition-delay:0.725s;-webkit-animation-delay:0.725s;animation-delay:0.725s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(14){transition-delay:0.7625s;-webkit-animation-delay:0.7625s;animation-delay:0.7625s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(15){transition-delay:0.8125s;-webkit-animation-delay:0.8125s;animation-delay:0.8125s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(16){transition-delay:0.7875s;-webkit-animation-delay:0.7875s;animation-delay:0.7875s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(17){transition-delay:0.7625s;-webkit-animation-delay:0.7625s;animation-delay:0.7625s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(18){transition-delay:0.7625s;-webkit-animation-delay:0.7625s;animation-delay:0.7625s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(19){transition-delay:0.825s;-webkit-animation-delay:0.825s;animation-delay:0.825s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(20){transition-delay:0.7375s;-webkit-animation-delay:0.7375s;animation-delay:0.7375s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(21){transition-delay:0.8125s;-webkit-animation-delay:0.8125s;animation-delay:0.8125s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(22){transition-delay:0.7125s;-webkit-animation-delay:0.7125s;animation-delay:0.7125s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(23){transition-delay:0.8s;-webkit-animation-delay:0.8s;animation-delay:0.8s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(24){transition-delay:0.7625s;-webkit-animation-delay:0.7625s;animation-delay:0.7625s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(25){transition-delay:0.725s;-webkit-animation-delay:0.725s;animation-delay:0.725s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(26){transition-delay:0.8125s;-webkit-animation-delay:0.8125s;animation-delay:0.8125s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(27){transition-delay:0.8125s;-webkit-animation-delay:0.8125s;animation-delay:0.8125s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(28){transition-delay:0.7375s;-webkit-animation-delay:0.7375s;animation-delay:0.7375s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(29){transition-delay:0.7125s;-webkit-animation-delay:0.7125s;animation-delay:0.7125s}main.top .hero .contents .common_contents.show h2 span.item:nth-child(30){transition-delay:0.7125s;-webkit-animation-delay:0.7125s;animation-delay:0.7125s}main.top .hero .contents .common_contents.show h3 span.item{-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-iteration-count:4;animation-iteration-count:4;transform:rotate3d(1, 1, 1, 0)}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(1){transition-delay:0.7625s;-webkit-animation-delay:0.7625s;animation-delay:0.7625s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(2){transition-delay:0.7375s;-webkit-animation-delay:0.7375s;animation-delay:0.7375s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(3){transition-delay:0.725s;-webkit-animation-delay:0.725s;animation-delay:0.725s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(4){transition-delay:0.8s;-webkit-animation-delay:0.8s;animation-delay:0.8s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(5){transition-delay:0.8125s;-webkit-animation-delay:0.8125s;animation-delay:0.8125s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(6){transition-delay:0.725s;-webkit-animation-delay:0.725s;animation-delay:0.725s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(7){transition-delay:0.8125s;-webkit-animation-delay:0.8125s;animation-delay:0.8125s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(8){transition-delay:0.7875s;-webkit-animation-delay:0.7875s;animation-delay:0.7875s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(9){transition-delay:0.7875s;-webkit-animation-delay:0.7875s;animation-delay:0.7875s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(10){transition-delay:0.825s;-webkit-animation-delay:0.825s;animation-delay:0.825s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(11){transition-delay:0.825s;-webkit-animation-delay:0.825s;animation-delay:0.825s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(12){transition-delay:0.8s;-webkit-animation-delay:0.8s;animation-delay:0.8s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(13){transition-delay:0.825s;-webkit-animation-delay:0.825s;animation-delay:0.825s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(14){transition-delay:0.775s;-webkit-animation-delay:0.775s;animation-delay:0.775s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(15){transition-delay:0.75s;-webkit-animation-delay:0.75s;animation-delay:0.75s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(16){transition-delay:0.7125s;-webkit-animation-delay:0.7125s;animation-delay:0.7125s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(17){transition-delay:0.7875s;-webkit-animation-delay:0.7875s;animation-delay:0.7875s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(18){transition-delay:0.825s;-webkit-animation-delay:0.825s;animation-delay:0.825s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(19){transition-delay:0.7125s;-webkit-animation-delay:0.7125s;animation-delay:0.7125s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(20){transition-delay:0.7625s;-webkit-animation-delay:0.7625s;animation-delay:0.7625s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(21){transition-delay:0.8125s;-webkit-animation-delay:0.8125s;animation-delay:0.8125s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(22){transition-delay:0.825s;-webkit-animation-delay:0.825s;animation-delay:0.825s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(23){transition-delay:0.8s;-webkit-animation-delay:0.8s;animation-delay:0.8s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(24){transition-delay:0.825s;-webkit-animation-delay:0.825s;animation-delay:0.825s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(25){transition-delay:0.775s;-webkit-animation-delay:0.775s;animation-delay:0.775s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(26){transition-delay:0.725s;-webkit-animation-delay:0.725s;animation-delay:0.725s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(27){transition-delay:0.725s;-webkit-animation-delay:0.725s;animation-delay:0.725s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(28){transition-delay:0.7875s;-webkit-animation-delay:0.7875s;animation-delay:0.7875s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(29){transition-delay:0.7375s;-webkit-animation-delay:0.7375s;animation-delay:0.7375s}main.top .hero .contents .common_contents.show h3 span.item:nth-of-type(30){transition-delay:0.725s;-webkit-animation-delay:0.725s;animation-delay:0.725s}main.top .hero .contents .common_contents.show .txts{opacity:1;transition:opacity 400ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1);transition-delay:1s}main.top .hero .contents .common_contents.show p.txt span{opacity:1;transition:opacity 300ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(1){transition-delay:1.105s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(2){transition-delay:1.11s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(3){transition-delay:1.115s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(4){transition-delay:1.12s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(5){transition-delay:1.125s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(6){transition-delay:1.13s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(7){transition-delay:1.135s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(8){transition-delay:1.14s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(9){transition-delay:1.145s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(10){transition-delay:1.15s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(11){transition-delay:1.155s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(12){transition-delay:1.16s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(13){transition-delay:1.165s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(14){transition-delay:1.17s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(15){transition-delay:1.175s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(16){transition-delay:1.18s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(17){transition-delay:1.185s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(18){transition-delay:1.19s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(19){transition-delay:1.195s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(20){transition-delay:1.2s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(21){transition-delay:1.205s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(22){transition-delay:1.21s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(23){transition-delay:1.215s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(24){transition-delay:1.22s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(25){transition-delay:1.225s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(26){transition-delay:1.23s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(27){transition-delay:1.235s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(28){transition-delay:1.24s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(29){transition-delay:1.245s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(30){transition-delay:1.25s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(31){transition-delay:1.255s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(32){transition-delay:1.26s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(33){transition-delay:1.265s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(34){transition-delay:1.27s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(35){transition-delay:1.275s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(36){transition-delay:1.28s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(37){transition-delay:1.285s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(38){transition-delay:1.29s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(39){transition-delay:1.295s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(40){transition-delay:1.3s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(41){transition-delay:1.305s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(42){transition-delay:1.31s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(43){transition-delay:1.315s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(44){transition-delay:1.32s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(45){transition-delay:1.325s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(46){transition-delay:1.33s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(47){transition-delay:1.335s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(48){transition-delay:1.34s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(49){transition-delay:1.345s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(50){transition-delay:1.35s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(51){transition-delay:1.355s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(52){transition-delay:1.36s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(53){transition-delay:1.365s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(54){transition-delay:1.37s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(55){transition-delay:1.375s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(56){transition-delay:1.38s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(57){transition-delay:1.385s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(58){transition-delay:1.39s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(59){transition-delay:1.395s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(60){transition-delay:1.4s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(61){transition-delay:1.405s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(62){transition-delay:1.41s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(63){transition-delay:1.415s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(64){transition-delay:1.42s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(65){transition-delay:1.425s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(66){transition-delay:1.43s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(67){transition-delay:1.435s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(68){transition-delay:1.44s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(69){transition-delay:1.445s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(70){transition-delay:1.45s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(71){transition-delay:1.455s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(72){transition-delay:1.46s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(73){transition-delay:1.465s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(74){transition-delay:1.47s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(75){transition-delay:1.475s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(76){transition-delay:1.48s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(77){transition-delay:1.485s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(78){transition-delay:1.49s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(79){transition-delay:1.495s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(80){transition-delay:1.5s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(81){transition-delay:1.505s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(82){transition-delay:1.51s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(83){transition-delay:1.515s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(84){transition-delay:1.52s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(85){transition-delay:1.525s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(86){transition-delay:1.53s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(87){transition-delay:1.535s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(88){transition-delay:1.54s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(89){transition-delay:1.545s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(90){transition-delay:1.55s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(91){transition-delay:1.555s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(92){transition-delay:1.56s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(93){transition-delay:1.565s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(94){transition-delay:1.57s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(95){transition-delay:1.575s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(96){transition-delay:1.58s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(97){transition-delay:1.585s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(98){transition-delay:1.59s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(99){transition-delay:1.595s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(100){transition-delay:1.6s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(101){transition-delay:1.605s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(102){transition-delay:1.61s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(103){transition-delay:1.615s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(104){transition-delay:1.62s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(105){transition-delay:1.625s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(106){transition-delay:1.63s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(107){transition-delay:1.635s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(108){transition-delay:1.64s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(109){transition-delay:1.645s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(110){transition-delay:1.65s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(111){transition-delay:1.655s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(112){transition-delay:1.66s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(113){transition-delay:1.665s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(114){transition-delay:1.67s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(115){transition-delay:1.675s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(116){transition-delay:1.68s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(117){transition-delay:1.685s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(118){transition-delay:1.69s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(119){transition-delay:1.695s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(120){transition-delay:1.7s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(121){transition-delay:1.705s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(122){transition-delay:1.71s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(123){transition-delay:1.715s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(124){transition-delay:1.72s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(125){transition-delay:1.725s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(126){transition-delay:1.73s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(127){transition-delay:1.735s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(128){transition-delay:1.74s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(129){transition-delay:1.745s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(130){transition-delay:1.75s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(131){transition-delay:1.755s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(132){transition-delay:1.76s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(133){transition-delay:1.765s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(134){transition-delay:1.77s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(135){transition-delay:1.775s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(136){transition-delay:1.78s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(137){transition-delay:1.785s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(138){transition-delay:1.79s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(139){transition-delay:1.795s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(140){transition-delay:1.8s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(141){transition-delay:1.805s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(142){transition-delay:1.81s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(143){transition-delay:1.815s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(144){transition-delay:1.82s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(145){transition-delay:1.825s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(146){transition-delay:1.83s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(147){transition-delay:1.835s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(148){transition-delay:1.84s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(149){transition-delay:1.845s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(150){transition-delay:1.85s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(151){transition-delay:1.855s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(152){transition-delay:1.86s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(153){transition-delay:1.865s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(154){transition-delay:1.87s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(155){transition-delay:1.875s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(156){transition-delay:1.88s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(157){transition-delay:1.885s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(158){transition-delay:1.89s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(159){transition-delay:1.895s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(160){transition-delay:1.9s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(161){transition-delay:1.905s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(162){transition-delay:1.91s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(163){transition-delay:1.915s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(164){transition-delay:1.92s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(165){transition-delay:1.925s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(166){transition-delay:1.93s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(167){transition-delay:1.935s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(168){transition-delay:1.94s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(169){transition-delay:1.945s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(170){transition-delay:1.95s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(171){transition-delay:1.955s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(172){transition-delay:1.96s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(173){transition-delay:1.965s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(174){transition-delay:1.97s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(175){transition-delay:1.975s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(176){transition-delay:1.98s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(177){transition-delay:1.985s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(178){transition-delay:1.99s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(179){transition-delay:1.995s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(180){transition-delay:2s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(181){transition-delay:2.005s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(182){transition-delay:2.01s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(183){transition-delay:2.015s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(184){transition-delay:2.02s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(185){transition-delay:2.025s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(186){transition-delay:2.03s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(187){transition-delay:2.035s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(188){transition-delay:2.04s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(189){transition-delay:2.045s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(190){transition-delay:2.05s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(191){transition-delay:2.055s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(192){transition-delay:2.06s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(193){transition-delay:2.065s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(194){transition-delay:2.07s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(195){transition-delay:2.075s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(196){transition-delay:2.08s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(197){transition-delay:2.085s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(198){transition-delay:2.09s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(199){transition-delay:2.095s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(200){transition-delay:2.1s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(201){transition-delay:2.105s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(202){transition-delay:2.11s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(203){transition-delay:2.115s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(204){transition-delay:2.12s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(205){transition-delay:2.125s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(206){transition-delay:2.13s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(207){transition-delay:2.135s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(208){transition-delay:2.14s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(209){transition-delay:2.145s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(210){transition-delay:2.15s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(211){transition-delay:2.155s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(212){transition-delay:2.16s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(213){transition-delay:2.165s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(214){transition-delay:2.17s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(215){transition-delay:2.175s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(216){transition-delay:2.18s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(217){transition-delay:2.185s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(218){transition-delay:2.19s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(219){transition-delay:2.195s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(220){transition-delay:2.2s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(221){transition-delay:2.205s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(222){transition-delay:2.21s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(223){transition-delay:2.215s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(224){transition-delay:2.22s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(225){transition-delay:2.225s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(226){transition-delay:2.23s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(227){transition-delay:2.235s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(228){transition-delay:2.24s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(229){transition-delay:2.245s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(230){transition-delay:2.25s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(231){transition-delay:2.255s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(232){transition-delay:2.26s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(233){transition-delay:2.265s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(234){transition-delay:2.27s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(235){transition-delay:2.275s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(236){transition-delay:2.28s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(237){transition-delay:2.285s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(238){transition-delay:2.29s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(239){transition-delay:2.295s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(240){transition-delay:2.3s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(241){transition-delay:2.305s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(242){transition-delay:2.31s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(243){transition-delay:2.315s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(244){transition-delay:2.32s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(245){transition-delay:2.325s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(246){transition-delay:2.33s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(247){transition-delay:2.335s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(248){transition-delay:2.34s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(249){transition-delay:2.345s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(250){transition-delay:2.35s}main.top .hero .contents .common_contents.show p.txt span:nth-of-type(251){transition-delay:2.355s}main.top .hero .contents .common_contents.show div.txt span{opacity:1}main.top .hero .contents .common_contents.show ul{opacity:1;transition-delay:1.1s;-webkit-animation:common_blink .1s linear 1.1s;animation:common_blink .1s linear 1.1s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .contents .common_contents.show .pic,main.top .hero .contents .common_contents.show .video{opacity:1;transition:opacity 1000ms;transition-delay:1.5s}main.top .hero .contents .common_contents.show .pic img,main.top .hero .contents .common_contents.show .video img{transition:transform 1000ms;transition-delay:1.5s;transform:scale(1)}main.top .hero .contents .common_contents.show .btn{-webkit-animation:common_blink .1s linear 1.7s;animation:common_blink .1s linear 1.7s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .contents .common_contents.show .btn a{opacity:1}main.top .hero .contents .common_contents.white h3,main.top .hero .contents .common_contents.white .txt{color:#fff}main.top .hero .contents .common_contents h3 span.span_chunk{display:flex;perspective:300px}main.top .hero .contents .common_contents h3 span.item{white-space:nowrap;will-change:transform;transform:rotate3d(1, 0, 0, 180deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform 500ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}main.top .hero .contents .common_contents .txts{opacity:0}main.top .hero .contents .common_contents p.txt{overflow:hidden;pointer-events:none;color:#213143}main.top .hero .contents .common_contents p.txt span{opacity:0}main.top .hero .contents .common_contents ul{opacity:0}main.top .hero .contents .common_contents .btn{pointer-events:auto;overflow:hidden}main.top .hero .contents .common_contents .btn a{opacity:0;transition:opacity 1ms;transition-delay:1.7s}main.top .hero .contents .contents1 h1 .pc>span,main.top .hero .contents .contents1 h1 .sp>span{perspective:300px}main.top .hero .contents .contents1 h1 span.item{will-change:transform;transform:rotate3d(1, 0, 0, 180deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform 600ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}main.top .hero .contents .contents1 .txt span{opacity:0;transition:opacity 300ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}main.top .hero .contents .contents1 .txt span:nth-of-type(1){transition-delay:1.51s}main.top .hero .contents .contents1 .txt span:nth-of-type(2){transition-delay:1.52s}main.top .hero .contents .contents1 .txt span:nth-of-type(3){transition-delay:1.53s}main.top .hero .contents .contents1 .txt span:nth-of-type(4){transition-delay:1.54s}main.top .hero .contents .contents1 .txt span:nth-of-type(5){transition-delay:1.55s}main.top .hero .contents .contents1 .txt span:nth-of-type(6){transition-delay:1.56s}main.top .hero .contents .contents1 .txt span:nth-of-type(7){transition-delay:1.57s}main.top .hero .contents .contents1 .txt span:nth-of-type(8){transition-delay:1.58s}main.top .hero .contents .contents1 .txt span:nth-of-type(9){transition-delay:1.59s}main.top .hero .contents .contents1 .txt span:nth-of-type(10){transition-delay:1.6s}main.top .hero .contents .contents1 .txt span:nth-of-type(11){transition-delay:1.61s}main.top .hero .contents .contents1 .txt span:nth-of-type(12){transition-delay:1.62s}main.top .hero .contents .contents1 .txt span:nth-of-type(13){transition-delay:1.63s}main.top .hero .contents .contents1 .txt span:nth-of-type(14){transition-delay:1.64s}main.top .hero .contents .contents1 .txt span:nth-of-type(15){transition-delay:1.65s}main.top .hero .contents .contents1 .txt span:nth-of-type(16){transition-delay:1.66s}main.top .hero .contents .contents1 .txt span:nth-of-type(17){transition-delay:1.67s}main.top .hero .contents .contents1 .txt span:nth-of-type(18){transition-delay:1.68s}main.top .hero .contents .contents1 .txt span:nth-of-type(19){transition-delay:1.69s}main.top .hero .contents .contents1 .txt span:nth-of-type(20){transition-delay:1.7s}main.top .hero .contents .contents1 .txt span:nth-of-type(21){transition-delay:1.71s}main.top .hero .contents .contents1 .txt span:nth-of-type(22){transition-delay:1.72s}main.top .hero .contents .contents1 .txt span:nth-of-type(23){transition-delay:1.73s}main.top .hero .contents .contents1 .txt span:nth-of-type(24){transition-delay:1.74s}main.top .hero .contents .contents1 .txt span:nth-of-type(25){transition-delay:1.75s}main.top .hero .contents .contents1 .txt span:nth-of-type(26){transition-delay:1.76s}main.top .hero .contents .contents1 .txt span:nth-of-type(27){transition-delay:1.77s}main.top .hero .contents .contents1 .txt span:nth-of-type(28){transition-delay:1.78s}main.top .hero .contents .contents1 .txt span:nth-of-type(29){transition-delay:1.79s}main.top .hero .contents .contents1 .txt span:nth-of-type(30){transition-delay:1.8s}main.top .hero .contents .contents1 .txt span:nth-of-type(31){transition-delay:1.81s}main.top .hero .contents .contents1 .txt span:nth-of-type(32){transition-delay:1.82s}main.top .hero .contents .contents2 h2 span.span_chunk{display:flex;perspective:300px}main.top .hero .contents .contents2 h2 span.item{white-space:nowrap;will-change:transform;transform:rotate3d(1, 0, 0, 180deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform 500ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}main.top .hero .contents .contents2 h2 span.grd span:nth-of-type(1){color:#397e91}main.top .hero .contents .contents2 h2 span.grd span:nth-of-type(2){color:#36778c}main.top .hero .contents .contents2 h2 span.grd span:nth-of-type(3){color:#337088}main.top .hero .contents .contents2 h2 span.grd span:nth-of-type(4){color:#326c84}main.top .hero .contents .contents2 h2 span.grd span:nth-of-type(5){color:#326c84}main.top .hero .contents .contents2 h2 span.grd span:nth-of-type(6){color:#2e637e}main.top .hero .contents .contents2 h2 span.grd span:nth-of-type(7){color:#2e617c}main.top .hero .contents .contents2 h2 span.grd span:nth-of-type(8){color:#2b5976}main.top .hero .contents .contents2 h2 span.grd span:nth-of-type(9){color:#295473}main.top .hero .contents .contents2 h2 span.grd span:nth-of-type(10){color:#285071}main.top .hero .contents .contents2 h2 span.grd span:nth-of-type(11){color:#25496c}main.top .hero .contents .contents2 h2 span.grd span:nth-of-type(12){color:#234066}main.top .hero .contents .contents8{transition-property:visibility;transition-duration:500ms}main.top .hero .contents .contents8 .video{opacity:0;transition-property:opacity;transition-duration:500ms;transition-timing-function:cubic-bezier(0.25, 0.46, 0.45, 0.94)}main.top .hero .contents .contents8 h3,main.top .hero .contents .contents8 .txt,main.top .hero .contents .contents8 .btn{visibility:hidden}main.top .hero .contents .contents8.show h3,main.top .hero .contents .contents8.show .txt,main.top .hero .contents .contents8.show .btn{visibility:visible}main.top .hero .contents .contents9{transition-property:visibility;transition-duration:500ms}main.top .hero .contents .contents9 .video{opacity:0;transition-property:opacity;transition-duration:500ms;transition-timing-function:cubic-bezier(0.25, 0.46, 0.45, 0.94)}main.top .hero .contents .contents9 h3,main.top .hero .contents .contents9 .txt,main.top .hero .contents .contents9 .btn{visibility:hidden}main.top .hero .contents .contents9.show h3,main.top .hero .contents .contents9.show .txt,main.top .hero .contents .contents9.show .btn{visibility:visible}main.top .section{background-color:#171c21;color:#fff}main.top .section.show h2 .tit span.item{-webkit-animation-name:common_blink;animation-name:common_blink;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-iteration-count:4;animation-iteration-count:4;transform:rotate3d(1, 1, 1, 0)}main.top .section.show h2 .sub_tit span{opacity:1}main.top .section.show picture{opacity:1;transition:opacity 1000ms;transition-delay:.4s}main.top .section.show picture img{transition:transform 1000ms;transition-delay:.4s;transform:scale(1)}main.top .section h2 .tit .span_chunk{display:flex;perspective:1000px}main.top .section h2 .tit span.item{white-space:nowrap;will-change:transform;transform:rotate3d(1, 0, 0, 180deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform 500ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}main.top .section h2 .tit span.item:nth-of-type(1){transition-delay:0.075s}main.top .section h2 .tit span.item:nth-of-type(2){transition-delay:0.175s}main.top .section h2 .tit span.item:nth-of-type(3){transition-delay:0.175s}main.top .section h2 .tit span.item:nth-of-type(4){transition-delay:0.15s}main.top .section h2 .tit span.item:nth-of-type(5){transition-delay:0.025s}main.top .section h2 .tit span.item:nth-of-type(6){transition-delay:0.2s}main.top .section h2 .tit span.item:nth-of-type(7){transition-delay:0.225s}main.top .section h2 .tit span.item:nth-of-type(8){transition-delay:0.05s}main.top .section h2 .tit span.item:nth-of-type(9){transition-delay:0.225s}main.top .section h2 .tit span.item:nth-of-type(10){transition-delay:0.075s}main.top .section h2 .tit span.item:nth-of-type(11){transition-delay:0.225s}main.top .section h2 .tit span.item:nth-of-type(12){transition-delay:0.175s}main.top .section h2 .tit span.item:nth-of-type(13){transition-delay:0.2s}main.top .section h2 .tit span.item:nth-of-type(14){transition-delay:0.125s}main.top .section h2 .tit span.item:nth-of-type(15){transition-delay:0.175s}main.top .section h2 .tit span.item:nth-of-type(16){transition-delay:0.1s}main.top .section h2 .tit span.item:nth-of-type(17){transition-delay:0.2s}main.top .section h2 .tit span.item:nth-of-type(18){transition-delay:0.2s}main.top .section h2 .tit span.item:nth-of-type(19){transition-delay:0.075s}main.top .section h2 .tit span.item:nth-of-type(20){transition-delay:0.025s}main.top .section h2 .tit span.item:nth-of-type(21){transition-delay:0.05s}main.top .section h2 .tit span.item:nth-of-type(22){transition-delay:0.25s}main.top .section h2 .tit span.item:nth-of-type(23){transition-delay:0.225s}main.top .section h2 .tit span.item:nth-of-type(24){transition-delay:0.2s}main.top .section h2 .tit span.item:nth-of-type(25){transition-delay:0.075s}main.top .section h2 .tit span.item:nth-of-type(26){transition-delay:0.025s}main.top .section h2 .tit span.item:nth-of-type(27){transition-delay:0.1s}main.top .section h2 .tit span.item:nth-of-type(28){transition-delay:0.025s}main.top .section h2 .tit span.item:nth-of-type(29){transition-delay:0.2s}main.top .section h2 .tit span.item:nth-of-type(30){transition-delay:0.225s}main.top .section h2 .sub_tit{color:#5cb4c0}main.top .section h2 .sub_tit span{opacity:0;transition:opacity 300ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}main.top .section h2 .sub_tit span:nth-of-type(1){transition-delay:0.11s}main.top .section h2 .sub_tit span:nth-of-type(2){transition-delay:0.12s}main.top .section h2 .sub_tit span:nth-of-type(3){transition-delay:0.13s}main.top .section h2 .sub_tit span:nth-of-type(4){transition-delay:0.14s}main.top .section h2 .sub_tit span:nth-of-type(5){transition-delay:0.15s}main.top .section h2 .sub_tit span:nth-of-type(6){transition-delay:0.16s}main.top .section h2 .sub_tit span:nth-of-type(7){transition-delay:0.17s}main.top .section h2 .sub_tit span:nth-of-type(8){transition-delay:0.18s}main.top .section h2 .sub_tit span:nth-of-type(9){transition-delay:0.19s}main.top .section h2 .sub_tit span:nth-of-type(10){transition-delay:0.2s}main.top .section h2 .sub_tit span:nth-of-type(11){transition-delay:0.21s}main.top .section h2 .sub_tit span:nth-of-type(12){transition-delay:0.22s}main.top .section h2 .sub_tit span:nth-of-type(13){transition-delay:0.23s}main.top .section h2 .sub_tit span:nth-of-type(14){transition-delay:0.24s}main.top .section h2 .sub_tit span:nth-of-type(15){transition-delay:0.25s}main.top .section h2 .sub_tit span:nth-of-type(16){transition-delay:0.26s}main.top .section h2 .sub_tit span:nth-of-type(17){transition-delay:0.27s}main.top .section h2 .sub_tit span:nth-of-type(18){transition-delay:0.28s}main.top .section h2 .sub_tit span:nth-of-type(19){transition-delay:0.29s}main.top .section h2 .sub_tit span:nth-of-type(20){transition-delay:0.3s}main.top .section h2 .sub_tit span:nth-of-type(21){transition-delay:0.31s}main.top .section h2 .sub_tit span:nth-of-type(22){transition-delay:0.32s}main.top .section h2 .sub_tit span:nth-of-type(23){transition-delay:0.33s}main.top .section h2 .sub_tit span:nth-of-type(24){transition-delay:0.34s}main.top .section h2 .sub_tit span:nth-of-type(25){transition-delay:0.35s}main.top .section h2 .sub_tit span:nth-of-type(26){transition-delay:0.36s}main.top .section h2 .sub_tit span:nth-of-type(27){transition-delay:0.37s}main.top .section h2 .sub_tit span:nth-of-type(28){transition-delay:0.38s}main.top .section h2 .sub_tit span:nth-of-type(29){transition-delay:0.39s}main.top .section h2 .sub_tit span:nth-of-type(30){transition-delay:0.4s}main.top .section h2 .sub_tit span:nth-of-type(31){transition-delay:0.41s}main.top .section h2 .sub_tit span:nth-of-type(32){transition-delay:0.42s}main.top .section picture{opacity:0;transition-timing-function:cubic-bezier(0.25, 0.46, 0.45, 0.94)}main.top .section picture img{transition-timing-function:cubic-bezier(0.25, 0.46, 0.45, 0.94);transform:scale(1.3)}main.top .section p.txt,main.top .section ul{color:#bdc1c6;font-size:2rem}main.top .section4{margin-top:-1px}main.top .section5{overflow:hidden;margin-top:-1px}main.top .section5 .ui{position:relative}main.top .section5 .ui .base{height:2px;display:block}main.top .section5 .ui .knob{position:relative;top:-42.5px}main.top .section5 .ui .knob:before{content:\\\"\\\";position:absolute;top:0;display:block}main.top .section5 .ui .knob:after{content:\\\"\\\";position:absolute;top:0;display:block}@media screen and (min-width: 768px){main.top .hero .scroll{margin-left:8.3333333333rem;margin-top:-6.7777777778rem;font-size:1.5555555556rem;letter-spacing:.02em}main.top .hero .scroll:before{width:1.1111111111rem;height:1.3333333333rem;margin-right:.5555555556rem;top:.2222222222rem}main.top .hero .skip{font-size:1.3333333333rem;font-weight:600;margin-top:-6.4444444444rem;right:8.8888888889rem;letter-spacing:-0.01em}main.top .hero .skip:hover span.item:nth-of-type(1){-webkit-animation:common_blink .13s linear 0.135s;animation:common_blink .13s linear 0.135s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(2){-webkit-animation:common_blink .13s linear 0.0246s;animation:common_blink .13s linear 0.0246s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(3){-webkit-animation:common_blink .13s linear 0.0174s;animation:common_blink .13s linear 0.0174s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(4){-webkit-animation:common_blink .13s linear 0.09585s;animation:common_blink .13s linear 0.09585s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(5){-webkit-animation:common_blink .13s linear 0.1494s;animation:common_blink .13s linear 0.1494s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(6){-webkit-animation:common_blink .13s linear 0.03795s;animation:common_blink .13s linear 0.03795s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(7){-webkit-animation:common_blink .13s linear 0.0807s;animation:common_blink .13s linear 0.0807s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(8){-webkit-animation:common_blink .13s linear 0.14595s;animation:common_blink .13s linear 0.14595s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(9){-webkit-animation:common_blink .13s linear 0.1284s;animation:common_blink .13s linear 0.1284s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(10){-webkit-animation:common_blink .13s linear 0.1011s;animation:common_blink .13s linear 0.1011s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(11){-webkit-animation:common_blink .13s linear 0.13245s;animation:common_blink .13s linear 0.13245s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(12){-webkit-animation:common_blink .13s linear 0.0495s;animation:common_blink .13s linear 0.0495s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(13){-webkit-animation:common_blink .13s linear 0.0714s;animation:common_blink .13s linear 0.0714s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(14){-webkit-animation:common_blink .13s linear 0.00645s;animation:common_blink .13s linear 0.00645s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(15){-webkit-animation:common_blink .13s linear 0.04455s;animation:common_blink .13s linear 0.04455s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(16){-webkit-animation:common_blink .13s linear 0.1302s;animation:common_blink .13s linear 0.1302s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(17){-webkit-animation:common_blink .13s linear 0.07125s;animation:common_blink .13s linear 0.07125s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(18){-webkit-animation:common_blink .13s linear 0.10605s;animation:common_blink .13s linear 0.10605s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(19){-webkit-animation:common_blink .13s linear 0.10455s;animation:common_blink .13s linear 0.10455s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(20){-webkit-animation:common_blink .13s linear 0.07725s;animation:common_blink .13s linear 0.07725s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(21){-webkit-animation:common_blink .13s linear 0.14985s;animation:common_blink .13s linear 0.14985s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(22){-webkit-animation:common_blink .13s linear 0.0042s;animation:common_blink .13s linear 0.0042s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(23){-webkit-animation:common_blink .13s linear 0.11565s;animation:common_blink .13s linear 0.11565s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(24){-webkit-animation:common_blink .13s linear 0.08475s;animation:common_blink .13s linear 0.08475s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(25){-webkit-animation:common_blink .13s linear 0.1392s;animation:common_blink .13s linear 0.1392s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(26){-webkit-animation:common_blink .13s linear 0.1083s;animation:common_blink .13s linear 0.1083s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(27){-webkit-animation:common_blink .13s linear 0.0291s;animation:common_blink .13s linear 0.0291s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(28){-webkit-animation:common_blink .13s linear 0.12735s;animation:common_blink .13s linear 0.12735s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(29){-webkit-animation:common_blink .13s linear 0.1143s;animation:common_blink .13s linear 0.1143s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:hover span.item:nth-of-type(30){-webkit-animation:common_blink .13s linear 0.12675s;animation:common_blink .13s linear 0.12675s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .skip:after{content:\\\"\\\";display:block;width:100%;height:1px;background-color:#213143;margin-top:-.5555555556rem}main.top .hero .create_account{position:absolute;right:4.4444444444rem;bottom:8.6666666667rem}main.top .hero .create_account a{background:linear-gradient(225.93deg, #073a86 0%, #2d849a 101.67%);box-shadow:0px 2px 4px rgba(31,41,51,.16);border-radius:2.2222222222rem;padding:4.4444444444rem 5.4444444444rem 4.4444444444rem 5.5555555556rem;font-weight:600;font-size:1.5555555556rem;line-height:1;letter-spacing:0em}main.top .hero .create_account a:hover span.item:nth-of-type(1){-webkit-animation:common_blink .13s linear 0.09s;animation:common_blink .13s linear 0.09s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(2){-webkit-animation:common_blink .13s linear 0.0351s;animation:common_blink .13s linear 0.0351s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(3){-webkit-animation:common_blink .13s linear 0.12s;animation:common_blink .13s linear 0.12s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(4){-webkit-animation:common_blink .13s linear 0.06195s;animation:common_blink .13s linear 0.06195s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(5){-webkit-animation:common_blink .13s linear 0.1131s;animation:common_blink .13s linear 0.1131s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(6){-webkit-animation:common_blink .13s linear 0.03495s;animation:common_blink .13s linear 0.03495s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(7){-webkit-animation:common_blink .13s linear 0.14985s;animation:common_blink .13s linear 0.14985s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(8){-webkit-animation:common_blink .13s linear 0.04335s;animation:common_blink .13s linear 0.04335s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(9){-webkit-animation:common_blink .13s linear 0.08205s;animation:common_blink .13s linear 0.08205s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(10){-webkit-animation:common_blink .13s linear 0.0906s;animation:common_blink .13s linear 0.0906s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(11){-webkit-animation:common_blink .13s linear 0.0768s;animation:common_blink .13s linear 0.0768s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(12){-webkit-animation:common_blink .13s linear 0.01635s;animation:common_blink .13s linear 0.01635s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(13){-webkit-animation:common_blink .13s linear 0.00975s;animation:common_blink .13s linear 0.00975s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(14){-webkit-animation:common_blink .13s linear 0.06555s;animation:common_blink .13s linear 0.06555s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(15){-webkit-animation:common_blink .13s linear 0.0204s;animation:common_blink .13s linear 0.0204s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(16){-webkit-animation:common_blink .13s linear 0.1497s;animation:common_blink .13s linear 0.1497s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(17){-webkit-animation:common_blink .13s linear 0.00645s;animation:common_blink .13s linear 0.00645s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(18){-webkit-animation:common_blink .13s linear 0.08445s;animation:common_blink .13s linear 0.08445s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(19){-webkit-animation:common_blink .13s linear 0.1476s;animation:common_blink .13s linear 0.1476s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(20){-webkit-animation:common_blink .13s linear 0.126s;animation:common_blink .13s linear 0.126s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(21){-webkit-animation:common_blink .13s linear 0.1245s;animation:common_blink .13s linear 0.1245s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(22){-webkit-animation:common_blink .13s linear 0.14055s;animation:common_blink .13s linear 0.14055s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(23){-webkit-animation:common_blink .13s linear 0.08115s;animation:common_blink .13s linear 0.08115s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(24){-webkit-animation:common_blink .13s linear 0.07785s;animation:common_blink .13s linear 0.07785s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(25){-webkit-animation:common_blink .13s linear 0.13305s;animation:common_blink .13s linear 0.13305s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(26){-webkit-animation:common_blink .13s linear 0.00465s;animation:common_blink .13s linear 0.00465s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(27){-webkit-animation:common_blink .13s linear 0.1215s;animation:common_blink .13s linear 0.1215s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(28){-webkit-animation:common_blink .13s linear 0.1062s;animation:common_blink .13s linear 0.1062s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(29){-webkit-animation:common_blink .13s linear 0.0552s;animation:common_blink .13s linear 0.0552s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:hover span.item:nth-of-type(30){-webkit-animation:common_blink .13s linear 0.0186s;animation:common_blink .13s linear 0.0186s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .hero .create_account a:before{content:\\\"\\\";background-image:url(/assets/img/top/icon-account.svg);background-size:contain;background-repeat:no-repeat;width:2.4444444444rem;height:2.4444444444rem;display:inline-block;margin-right:.7777777778rem;position:relative;top:.7777777778rem}main.top .hero .create_account a:after{margin-left:.5555555556rem;width:1.6666666667rem;height:1.6666666667rem}main.top .hero .contents .common_contents h3{font-size:9.7777777778rem;line-height:1.2;position:relative;letter-spacing:-0.02em}main.top .hero .contents .common_contents h3 .span_chunk2{font-size:2.2222222222rem;letter-spacing:-0.01em}main.top .hero .contents .common_contents h3 .span_chunk2 span.item.space{width:2rem}main.top .hero .contents .common_contents h3 .sp{display:none !important}main.top .hero .contents .common_contents h3 span.item.space{width:2rem}main.top .hero .contents .common_contents .txts{display:flex}main.top .hero .contents .common_contents .txt{position:relative;font-size:2rem;line-height:1.28;letter-spacing:-0.01em}main.top .hero .contents .common_contents .btn a[target=_blank]:before{background-image:url(/assets/img/common/icon-link2-blank.svg)}main.top .hero .contents .common_contents .btn a:before{background-image:url(/assets/img/common/icon-link2.svg);margin-right:1.1111111111rem}main.top .hero .contents .common_contents ul{position:absolute;pointer-events:auto;top:100vh;left:100vw;margin-left:-57.7777777778rem;margin-top:-50.2222222222rem;background-image:linear-gradient(0deg, rgba(33, 49, 67, 0) 0%, rgba(33, 49, 67, 0) 15%, rgb(33, 49, 67) 30%, rgb(33, 49, 67) 80%, rgba(33, 49, 67, 0) 95%, rgba(33, 49, 67, 0) 100%);background-repeat:no-repeat;background-clip:text;-webkit-background-clip:text;color:rgba(0,0,0,0);width:97.7777777778rem;height:50rem}main.top .hero .contents .common_contents ul li{width:35.5555555556rem}main.top .hero .contents .common_contents ul li:first-of-type{transition:margin-top 650ms;transition-timing-function:cubic-bezier(0.77, 0, 0.175, 1)}main.top .hero .contents .common_contents ul li .tit{display:-webkit-box;font-size:1.7777777778rem;font-weight:500;letter-spacing:-0.01em}main.top .hero .contents .common_contents ul li .tit .num{font-weight:600;line-height:1}main.top .hero .contents .common_contents ul li .tit h4{margin-left:2.5555555556rem;line-height:1}main.top .hero .contents .common_contents ul li .bod{font-size:2rem;line-height:1.3;letter-spacing:-0.01em;margin-top:2.3333333333rem}main.top .hero .contents .contents1 h1{position:absolute;left:50vw;top:50vh;line-height:1}main.top .hero .contents .contents1 h1>span span{display:flex}main.top .hero .contents .contents1 h1 span.span_chunk{position:absolute;font-size:17.7777777778rem;letter-spacing:-0.02em}main.top .hero .contents .contents1 h1 span.span_chunk .space{width:3.7777777778rem}main.top .hero .contents .contents1 h1 span.span_chunk2{font-size:2.2222222222rem;letter-spacing:-0.02em}main.top .hero .contents .contents1 h1 span.span_chunk2 .space{width:.3333333333rem}main.top .hero .contents .contents1 h1 span.chunk1{margin-left:-1.8888888889rem;margin-top:-25.7777777778rem;position:relative}main.top .hero .contents .contents1 h1 span.chunk2{margin-top:-1.7777777778rem;margin-left:14.5555555556rem;position:relative}main.top .hero .contents .contents1 h1 span.chunk3{margin-top:.6666666667rem;margin-left:48.8888888889rem;letter-spacing:.0051em}main.top .hero .contents .contents1 .txt{font-size:2rem;line-height:1.2;font-weight:600;position:absolute;left:50vw;top:50vh;margin-top:-10.4444444444rem;margin-left:17rem;white-space:nowrap;letter-spacing:.04em}main.top .hero .contents .contents2 h2{font-size:9.7777777778rem;line-height:1.2;position:absolute;top:100vh;margin-left:76.1111111111rem;margin-top:-65.7777777778rem}main.top .hero .contents .contents2 h2 .span_chunk{letter-spacing:-0.02em}main.top .hero .contents .contents2 h2 .span_chunk2{font-size:2.2222222222rem;font-weight:600}main.top .hero .contents .contents2 h2 .span_chunk2 span.item:first-child{margin-left:3.7777777778rem}main.top .hero .contents .contents2 h2 span.item.space{width:1.5555555556rem}main.top .hero .contents .contents2 h2 .chunk1{position:absolute;margin-left:-15.7777777778rem;margin-top:7rem}main.top .hero .contents .contents2 h2 .chunk3{margin-left:-12rem;margin-top:-1rem}main.top .hero .contents .contents2 .txt{position:absolute;top:100vh;margin-left:115.5555555556rem;margin-top:-41.2222222222rem;width:31.1111111111rem}main.top .hero .contents .contents3 h3{left:26.6666666667rem;top:30.4444444444rem}main.top .hero .contents .contents3 h3 .chunk2{position:absolute;margin-top:-1.1111111111rem;margin-left:7.4444444444rem}main.top .hero .contents .contents3 h3 .chunk3{margin-left:5.2222222222rem}main.top .hero .contents .contents3 .txt{position:absolute;margin-left:100vw;top:100vh;left:-57.7777777778rem;margin-top:-26.4444444444rem;width:31.1111111111rem}main.top .hero .contents .contents3 .btn{position:absolute;margin-left:100vw;top:100vh;left:-57.7777777778rem;margin-top:-17.7777777778rem;width:37.7777777778rem}main.top .hero .contents .contents4 h3{position:absolute;top:100vh;margin-left:26.6666666667rem;margin-top:-40.2222222222rem}main.top .hero .contents .contents4 h3 .chunk2{position:absolute;margin-top:5.3333333333rem}main.top .hero .contents .contents4 h3 .chunk3{margin-left:4.4444444444rem}main.top .hero .contents .contents4 .txt{position:absolute;top:100vh;margin-left:26.6666666667rem;margin-top:-26.4444444444rem;width:44.4444444444rem}main.top .hero .contents .contents4 .btn{position:absolute;top:100vh;margin-left:26.6666666667rem;margin-top:-17.7777777778rem;white-space:nowrap}main.top .hero .contents .contents5 h3{position:absolute;top:100vh;margin-left:88.8888888889rem;margin-top:-65.7777777778rem}main.top .hero .contents .contents5 h3 .chunk2{position:absolute;margin-top:-1rem}main.top .hero .contents .contents5 h3 .chunk3{margin-left:5.1111111111rem}main.top .hero .contents .contents5 .txt{position:absolute;top:100vh;left:100vw;margin-left:-44.4444444444rem;margin-top:-41.1111111111rem;width:31.1111111111rem}main.top .hero .contents .contents5 .btn{position:absolute;top:100vh;left:100vw;margin-left:-57.7777777778rem;margin-top:-17.7777777778rem;white-space:nowrap}main.top .hero .contents .contents6{width:100vw;height:100vh;overflow:hidden}main.top .hero .contents .contents6 h3{position:absolute;top:100vh;margin-left:26.6666666667rem;margin-top:-65.7777777778rem}main.top .hero .contents .contents6 h3 .chunk2{position:absolute;margin-top:-6.8888888889rem;margin-left:53.4444444444rem}main.top .hero .contents .contents6 h3 .chunk3{position:absolute;margin-top:-4.2222222222rem;margin-left:46.3333333333rem}main.top .hero .contents .contents6 h3 .chunk4{position:absolute;margin-top:5.3333333333rem}main.top .hero .contents .contents6 h3 .chunk5{margin-left:8.2222222222rem}main.top .hero .contents .contents6 ul.show2 li:first-of-type{margin-top:-.2222222222rem}main.top .hero .contents .contents6 ul.show3 li:first-of-type{margin-top:-13.7777777778rem}main.top .hero .contents .contents6 ul.show4 li:first-of-type{margin-top:-27.3333333333rem}main.top .hero .contents .contents6 ul.show5 li:first-of-type{margin-top:-40.8888888889rem}main.top .hero .contents .contents6 ul.show6 li:first-of-type{margin-top:-54.4444444444rem}main.top .hero .contents .contents6 ul li{margin-bottom:4.2222222222rem}main.top .hero .contents .contents6 ul li:first-of-type{margin-top:13.3333333333rem}main.top .hero .contents .contents6 .txt{position:absolute;top:100vh;margin-left:26.6666666667rem;margin-top:-52rem;width:46.6666666667rem}main.top .hero .contents .contents6 .btn{position:absolute;top:100vh;margin-left:26.6666666667rem;margin-top:-40.4444444444rem;white-space:nowrap}main.top .hero .contents .contents7{width:100vw;height:100vh;overflow:hidden}main.top .hero .contents .contents7 h3{position:absolute;top:100vh;left:26.5555555556rem;margin-top:-42.3333333333rem}main.top .hero .contents .contents7 h3 .chunk2{margin-top:-1rem}main.top .hero .contents .contents7 .txt{position:absolute;margin-left:100vw;top:100vh;left:-57.7777777778rem;margin-top:-40.4444444444rem;width:41.1111111111rem}main.top .hero .contents .contents7 ul.show2 li:first-of-type{margin-top:2.2222222222rem}main.top .hero .contents .contents7 ul.show3 li:first-of-type{margin-top:-8.8888888889rem}main.top .hero .contents .contents7 ul li{margin-bottom:4.3333333333rem}main.top .hero .contents .contents7 ul li:first-of-type{margin-top:13.3333333333rem}main.top .hero .contents .contents7 .btn{position:absolute;top:100vh;margin-left:26.6666666667rem;margin-top:-17.8888888889rem;width:37.7777777778rem}main.top .hero .contents .contents8{width:100vw;height:100vh;overflow:hidden}main.top .hero .contents .contents8 .video{position:absolute;top:100vh;margin-top:-70.4444444444rem;left:17.7777777778rem;width:97.7777777778rem;height:53.3333333333rem;-webkit-clip-path:url(#svgPath);clip-path:url(#svgPath)}main.top .hero .contents .contents8 .video video{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}main.top .hero .contents .contents8 svg{position:absolute}main.top .hero .contents .contents8 svg path{transform:scale(0.0011363636, 0.0020833333)}main.top .hero .contents .contents8 h3{margin-left:100vw;top:100vh;left:-57.7777777778rem;margin-top:-44rem}main.top .hero .contents .contents8 .txt{position:absolute;margin-left:100vw;top:100vh;left:-40rem;margin-top:-30.2222222222rem;width:28.8888888889rem}main.top .hero .contents .contents8 .btn{position:absolute;margin-left:100vw;top:100vh;left:-40rem;margin-top:-21.5555555556rem;width:28.8888888889rem}main.top .hero .contents .contents8 .chunk{position:absolute;margin-left:100vw;top:100vh;left:-86rem;margin-top:-56.3333333333rem}main.top .hero .contents .contents8 .chunk img{width:22rem;border-radius:1.7777777778rem}main.top .hero .contents .contents9{width:100vw;height:100vh;overflow:hidden}main.top .hero .contents .contents9 .video{position:absolute;top:50vh;margin-top:-35.5555555556rem;right:17.7777777778rem;width:71.1111111111rem;height:71.1111111111rem;-webkit-clip-path:url(#svgPath2);clip-path:url(#svgPath2)}main.top .hero .contents .contents9 .video video{height:100%;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}main.top .hero .contents .contents9 svg{position:absolute}main.top .hero .contents .contents9 svg path{transform:scale(0.0015625, 0.0015625)}main.top .hero .contents .contents9 h3{top:100vh;left:22.2222222222rem;margin-top:-57.7777777778rem}main.top .hero .contents .contents9 .txt{position:absolute;top:100vh;left:22.2222222222rem;margin-top:-41.1111111111rem;width:28.8888888889rem}main.top .hero .contents .contents9 .btn{position:absolute;top:100vh;left:22.2222222222rem;margin-top:-26.6666666667rem;width:28.8888888889rem}main.top .hero .contents .contents9 .chunk{position:absolute;margin-left:100vw;top:100vh;left:-86rem;margin-top:-56.3333333333rem}main.top .hero .contents .contents9 .chunk img{width:22rem;border-radius:1.7777777778rem}main.top .local_nav{position:fixed;z-index:1;top:0;opacity:0;pointer-events:none;transition:opacity 400ms,color 400ms;transition-timing-function:cubic-bezier(0.165, 0.84, 0.44, 1)}main.top .local_nav.show{opacity:1;pointer-events:inherit}main.top .local_nav.white{color:#fff}main.top .local_nav.white .left_bt svg path,main.top .local_nav.white .right_bt svg path{fill:#fff}main.top .local_nav.white .current .denominator:before{color:#fff}main.top .local_nav .bar{position:absolute;width:1px;height:100vh;left:13.3333333333rem;background:#f1f4fa}main.top .local_nav .left_bt{position:absolute;left:6rem;top:50vh;margin-top:-10rem;cursor:pointer}main.top .local_nav .left_bt:hover{-webkit-animation:common_blink .13s linear;animation:common_blink .13s linear;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .left_bt svg{width:1.1111111111rem}main.top .local_nav .labels{font-weight:500;font-size:1.5555555556rem;line-height:1;letter-spacing:.06em;position:absolute;top:50vh;left:6.5555555556rem;margin-top:-.6666666667rem}main.top .local_nav .labels .label{position:absolute;visibility:hidden;transform:translate3d(-50%, 0, 0) rotate(90deg);white-space:nowrap;top:0}main.top .local_nav .labels .label.show{visibility:visible}main.top .local_nav .labels .label.show span.item:nth-of-type(1){-webkit-animation:common_blink .13s linear 0.1047s;animation:common_blink .13s linear 0.1047s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(2){-webkit-animation:common_blink .13s linear 0.1137s;animation:common_blink .13s linear 0.1137s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(3){-webkit-animation:common_blink .13s linear 0.0495s;animation:common_blink .13s linear 0.0495s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(4){-webkit-animation:common_blink .13s linear 0.10365s;animation:common_blink .13s linear 0.10365s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(5){-webkit-animation:common_blink .13s linear 0.1089s;animation:common_blink .13s linear 0.1089s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(6){-webkit-animation:common_blink .13s linear 0.0624s;animation:common_blink .13s linear 0.0624s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(7){-webkit-animation:common_blink .13s linear 0.09405s;animation:common_blink .13s linear 0.09405s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(8){-webkit-animation:common_blink .13s linear 0.04815s;animation:common_blink .13s linear 0.04815s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(9){-webkit-animation:common_blink .13s linear 0.04905s;animation:common_blink .13s linear 0.04905s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(10){-webkit-animation:common_blink .13s linear 0.08625s;animation:common_blink .13s linear 0.08625s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(11){-webkit-animation:common_blink .13s linear 0.07905s;animation:common_blink .13s linear 0.07905s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(12){-webkit-animation:common_blink .13s linear 0.11685s;animation:common_blink .13s linear 0.11685s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(13){-webkit-animation:common_blink .13s linear 0.1335s;animation:common_blink .13s linear 0.1335s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(14){-webkit-animation:common_blink .13s linear 0.07095s;animation:common_blink .13s linear 0.07095s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(15){-webkit-animation:common_blink .13s linear 0.11295s;animation:common_blink .13s linear 0.11295s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(16){-webkit-animation:common_blink .13s linear 0.0162s;animation:common_blink .13s linear 0.0162s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(17){-webkit-animation:common_blink .13s linear 0.02475s;animation:common_blink .13s linear 0.02475s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(18){-webkit-animation:common_blink .13s linear 0.1335s;animation:common_blink .13s linear 0.1335s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(19){-webkit-animation:common_blink .13s linear 0.0039s;animation:common_blink .13s linear 0.0039s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(20){-webkit-animation:common_blink .13s linear 0.0438s;animation:common_blink .13s linear 0.0438s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(21){-webkit-animation:common_blink .13s linear 0.03615s;animation:common_blink .13s linear 0.03615s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(22){-webkit-animation:common_blink .13s linear 0.06285s;animation:common_blink .13s linear 0.06285s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(23){-webkit-animation:common_blink .13s linear 0.09645s;animation:common_blink .13s linear 0.09645s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(24){-webkit-animation:common_blink .13s linear 0.0144s;animation:common_blink .13s linear 0.0144s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(25){-webkit-animation:common_blink .13s linear 0.02565s;animation:common_blink .13s linear 0.02565s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(26){-webkit-animation:common_blink .13s linear 0.0138s;animation:common_blink .13s linear 0.0138s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(27){-webkit-animation:common_blink .13s linear 0.0108s;animation:common_blink .13s linear 0.0108s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(28){-webkit-animation:common_blink .13s linear 0.0264s;animation:common_blink .13s linear 0.0264s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(29){-webkit-animation:common_blink .13s linear 0.02505s;animation:common_blink .13s linear 0.02505s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .labels .label.show span.item:nth-of-type(30){-webkit-animation:common_blink .13s linear 0.11145s;animation:common_blink .13s linear 0.11145s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .right_bt{position:absolute;left:6rem;top:50vh;margin-top:6.2222222222rem;cursor:pointer}main.top .local_nav .right_bt:hover{-webkit-animation:common_blink .13s linear;animation:common_blink .13s linear;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .right_bt svg{width:1.1111111111rem}main.top .local_nav .current{position:absolute;top:100vh;margin-top:-52px;left:.3333333333rem;font-size:1.3333333333rem;line-height:1;letter-spacing:-0.01em}main.top .local_nav .current .numerator{margin-left:3rem;color:#3098a6}main.top .local_nav .current .numerator.blink{-webkit-animation:common_blink .1s linear,.1s;animation:common_blink .1s linear,.1s;-webkit-animation-iteration-count:3;animation-iteration-count:3}main.top .local_nav .current .denominator:before{content:\\\"/\\\";margin-left:1.5555555556rem;margin-right:1.6666666667rem;color:#213143;position:relative;top:-1px}main.top .section{position:relative}main.top .section:last-of-type{border-radius:0 0 8.8888888889rem 8.8888888889rem;padding-bottom:26.6666666667rem}main.top .section .section_child{width:80.5vw;margin-left:22.2222222222rem;position:relative}main.top .section .section_child:before{content:\\\"\\\";width:100%;height:1px;background-color:#626c76;display:block}main.top .section h2{position:relative}main.top .section h2 .sub_tit{font-size:1.5555555556rem;letter-spacing:-0.01em;position:relative;line-height:1;top:0;display:block}main.top .section h2 .tit{font-size:9.7777777778rem;margin-top:3.6666666667rem;letter-spacing:-0.025em;line-height:1.1;display:block;top:0}main.top .section h2 .tit span.item.space{width:1.6666666667rem}main.top .section h2 .tit .sp{display:none !important}main.top .section .chunk{position:relative;margin-top:7rem}main.top .section h3{font-size:4.4444444444rem;line-height:1.1;letter-spacing:-0.01em;width:64.4444444444rem;margin-top:-13.3333333333rem;margin-left:4.4444444444rem;position:absolute;color:#213143}main.top .section p.txt,main.top .section ul.txt{font-size:1.7777777778rem;line-height:1.3;letter-spacing:-0.01em;width:31.1111111111rem;color:#bdc1c6}main.top .section .imgs{display:flex;flex-direction:row-reverse;justify-content:left}main.top .section .pic2{border-radius:2.2222222222rem;overflow:hidden;height:41.4444444444rem}main.top .section .pic2 img{width:31.1111111111rem}main.top .section .pic3{border-radius:2.2222222222rem;overflow:hidden;margin-right:4.4444444444rem}main.top .section .pic3 img{width:88.8888888889rem}main.top .section .btn{margin-top:-8.2222222222rem;margin-left:93.3333333333rem}main.top .section1{padding-top:22.2222222222rem;padding-bottom:7.1111111111rem}main.top .section1 .section_child:before{display:none}main.top .section1 p.txt{margin-top:-22.3333333333rem;margin-left:93.3333333333rem;position:absolute}main.top .section2{padding-top:18.8888888889rem;padding-bottom:5rem}main.top .section2 .section_child:before{display:none}main.top .section2 p.txt{margin-top:-22.3333333333rem;margin-left:93.3333333333rem;position:absolute}main.top .section2 .btn{position:relative;top:-4.5555555556rem}main.top .section3{padding-top:28.5555555556rem}main.top .section3 .section_child:before{display:none}main.top .section3 .pic1{position:absolute;top:33.5555555556rem;margin-left:22.6666666667rem}main.top .section3 .cont{margin-top:6.6666666667rem;display:flex}main.top .section3 .cont .left{width:34.5%;padding-top:1.8888888889rem}main.top .section3 .cont .left>p.txt{color:#fff;font-size:2.6666666667rem;font-weight:500;margin-top:0;width:33.3333333333rem;line-height:1.25;letter-spacing:.01em}main.top .section3 .cont .left .btn{margin-top:3.3333333333rem;margin-left:.3333333333rem}main.top .section3 .cont .right{width:65.5%}main.top .section3 .documentation_update{margin-top:2rem}main.top .section3 .documentation_update li a:hover{-webkit-animation:common_blink .075s linear;animation:common_blink .075s linear;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes{font-size:1.5555555556rem;letter-spacing:-0.01em;margin-top:2.7777777778rem}main.top .section3 .release_notes a:hover span.item:nth-of-type(1){-webkit-animation:common_blink .13s linear 0.12975s;animation:common_blink .13s linear 0.12975s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(2){-webkit-animation:common_blink .13s linear 0.0615s;animation:common_blink .13s linear 0.0615s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(3){-webkit-animation:common_blink .13s linear 0.13395s;animation:common_blink .13s linear 0.13395s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(4){-webkit-animation:common_blink .13s linear 0.1452s;animation:common_blink .13s linear 0.1452s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(5){-webkit-animation:common_blink .13s linear 0.1422s;animation:common_blink .13s linear 0.1422s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(6){-webkit-animation:common_blink .13s linear 0.12735s;animation:common_blink .13s linear 0.12735s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(7){-webkit-animation:common_blink .13s linear 0.1248s;animation:common_blink .13s linear 0.1248s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(8){-webkit-animation:common_blink .13s linear 0.03375s;animation:common_blink .13s linear 0.03375s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(9){-webkit-animation:common_blink .13s linear 0.09675s;animation:common_blink .13s linear 0.09675s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(10){-webkit-animation:common_blink .13s linear 0.0402s;animation:common_blink .13s linear 0.0402s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(11){-webkit-animation:common_blink .13s linear 0.03435s;animation:common_blink .13s linear 0.03435s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(12){-webkit-animation:common_blink .13s linear 0.03435s;animation:common_blink .13s linear 0.03435s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(13){-webkit-animation:common_blink .13s linear 0.1065s;animation:common_blink .13s linear 0.1065s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(14){-webkit-animation:common_blink .13s linear 0.09645s;animation:common_blink .13s linear 0.09645s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(15){-webkit-animation:common_blink .13s linear 0.03375s;animation:common_blink .13s linear 0.03375s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(16){-webkit-animation:common_blink .13s linear 0.12435s;animation:common_blink .13s linear 0.12435s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(17){-webkit-animation:common_blink .13s linear 0.1098s;animation:common_blink .13s linear 0.1098s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(18){-webkit-animation:common_blink .13s linear 0.1308s;animation:common_blink .13s linear 0.1308s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(19){-webkit-animation:common_blink .13s linear 0.0651s;animation:common_blink .13s linear 0.0651s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(20){-webkit-animation:common_blink .13s linear 0.114s;animation:common_blink .13s linear 0.114s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(21){-webkit-animation:common_blink .13s linear 0.0894s;animation:common_blink .13s linear 0.0894s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(22){-webkit-animation:common_blink .13s linear 0.0141s;animation:common_blink .13s linear 0.0141s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(23){-webkit-animation:common_blink .13s linear 0.05865s;animation:common_blink .13s linear 0.05865s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(24){-webkit-animation:common_blink .13s linear 0.09945s;animation:common_blink .13s linear 0.09945s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(25){-webkit-animation:common_blink .13s linear 0.0588s;animation:common_blink .13s linear 0.0588s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(26){-webkit-animation:common_blink .13s linear 0.14145s;animation:common_blink .13s linear 0.14145s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(27){-webkit-animation:common_blink .13s linear 0.11145s;animation:common_blink .13s linear 0.11145s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(28){-webkit-animation:common_blink .13s linear 0.08595s;animation:common_blink .13s linear 0.08595s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(29){-webkit-animation:common_blink .13s linear 0.0246s;animation:common_blink .13s linear 0.0246s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:hover span.item:nth-of-type(30){-webkit-animation:common_blink .13s linear 0.0483s;animation:common_blink .13s linear 0.0483s;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section3 .release_notes a:after{width:1.3333333333rem;height:1.3333333333rem;margin-left:.5555555556rem}main.top .section4{padding-top:21.7777777778rem}main.top .section4 h2{margin-top:29.4444444444rem}main.top .section4 .items{display:flex;flex-wrap:wrap;margin-top:8.8888888889rem}main.top .section4 .items .item{margin-right:1.1111111111rem;margin-bottom:1.1111111111rem;border-radius:2.2222222222rem;overflow:hidden}main.top .section4 .items .item:nth-of-type(4n){margin-right:0}main.top .section4 .items .item a{width:31.3333333333rem;height:46.6666666667rem;position:relative;display:block;background-color:rgba(255,255,255,.04)}main.top .section4 .items .item a:hover{-webkit-animation:common_blink .075s linear;animation:common_blink .075s linear;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section4 .items .item a:after{position:absolute;right:1.2222222222rem;top:100%;margin-top:-5rem;width:1.3333333333rem;height:1.3333333333rem}main.top .section4 .items .item a .img{width:84%;margin:0 auto;padding-top:4rem}main.top .section4 .items .item a .img img{width:26.1111111111rem;height:11.5555555556rem}main.top .section4 .items .item a .txt{line-height:1.3;font-size:1.5555555556rem;letter-spacing:-0.03em;color:#fff;opacity:.5;width:75%;position:absolute;bottom:7.3333333333rem;left:8.5%}main.top .section5{padding-top:25.6666666667rem}main.top .section5 h2{margin-top:22.3333333333rem}main.top .section5 .items{display:inline-flex;margin-top:7.7777777778rem;overflow:hidden}main.top .section5 .items .item{margin-right:4.4444444444rem;margin-right:2.7777777778vw;width:40rem}main.top .section5 .items .item a:after{display:none}main.top .section5 .items .item a:hover{-webkit-animation:common_blink_weak .075s linear;animation:common_blink_weak .075s linear;-webkit-animation-iteration-count:2;animation-iteration-count:2}main.top .section5 .items .item img{border-radius:2.2222222222rem;width:40rem;height:30rem;-o-object-fit:cover;object-fit:cover}main.top .section5 .items .item .name{font-weight:600;font-size:2.6666666667rem;margin-left:3.6666666667rem;margin-top:1.7777777778rem;letter-spacing:-0.01em}main.top .section5 .items .item .name:after{content:\\\"\\\";background-image:url(/assets/img/common/blank_white.svg);background-repeat:no-repeat;width:1.3333333333rem;height:1.3333333333rem;display:inline-block;position:relative;top:-.1111111111rem;margin-left:.7777777778rem}main.top .section5 .items .item .txt{font-size:1.5555555556rem;color:#fff;margin-left:3.6666666667rem;margin-top:.5555555556rem;width:32.6666666667rem}main.top .section5 .ui{padding-bottom:5.2222222222rem;display:table;margin:12.4444444444rem auto 0}main.top .section5 .ui .base{border-top:1px dashed #fff;width:360px}main.top .section5 .ui .knob{cursor:pointer}main.top .section5 .ui .knob:before{background-image:url(/assets/img/common/scroll-knob-circle.svg);left:-22px;width:85px;height:85px}main.top .section5 .ui .knob:after{background-image:url(/assets/img/common/scroll-knob.svg);left:-22px;width:86px;height:86px}main.top .section6{padding-top:25.6666666667rem}main.top .section6 .section_child{width:80.5vw;margin-left:22.2222222222rem;position:relative}main.top .section6 .section_child:before{content:\\\"\\\";width:100%;padding-top:22.2222222222rem;border-top:1px solid #626c76;background-color:initial;display:block}main.top_ja .hero .contents .common_contents .txt{font-size:1.5555555556rem;line-height:1.75}main.top_ja .hero .contents .common_contents ul li .bod{font-size:1.5555555556rem;line-height:1.75}main.top_ja .hero .contents .contents4 h3{margin-top:-43.4444444444rem}main.top_ja .hero .contents .contents4 .txt{margin-top:-29.7777777778rem}main.top_ja .hero .contents .contents6 ul.show2 li:first-of-type{margin-top:2.2222222222rem}main.top_ja .hero .contents .contents6 ul.show3 li:first-of-type{margin-top:-11.5555555556rem}main.top_ja .hero .contents .contents6 ul.show4 li:first-of-type{margin-top:-25.3333333333rem}main.top_ja .hero .contents .contents6 ul.show5 li:first-of-type{margin-top:-36.4444444444rem}main.top_ja .hero .contents .contents6 ul.show6 li:first-of-type{margin-top:-47.5555555556rem}main.top_ja .hero .contents .contents7 ul.show2 li:first-of-type{margin-top:2.2222222222rem}main.top_ja .hero .contents .contents7 ul.show3 li:first-of-type{margin-top:-11.6666666667rem}main.top_ja .hero .contents .contents7 ul li{margin-bottom:4.3333333333rem}main.top_ja .hero .contents .contents7 ul li:first-of-type{margin-top:13.3333333333rem}main.top_ja .section p.txt{font-size:1.5555555556rem;line-height:1.75}main.top_ja .section1 p.txt,main.top_ja .section2 p.txt{letter-spacing:-0.04em}main.top_ja .section2 .btn{top:-3.4444444444rem}main.top_ja .section4 .items .item a .txt{font-size:1.2222222222rem;line-height:1.5}main.top_ja .section5 .items .item a .txt{font-size:1.2222222222rem;line-height:1.5}}@media screen and (max-width: 767px){main.top .hero .scroll{margin-left:8.5333333333rem;margin-top:-17.92rem;font-size:5.12rem}main.top .hero .scroll:before{width:4.2666666667rem;height:5.12rem;margin-right:2.9866666667rem;top:.8533333333rem}main.top .hero .skip{margin-top:-17.4933333333rem;margin-right:12.8rem;font-size:5.12rem;font-weight:500;letter-spacing:.01em;left:8.5333333333rem}main.top .hero .skip:after{content:\\\"\\\";display:block;width:100%;height:1px;background-color:#213143;margin-top:-1.7066666667rem}main.top .hero .create_account{position:absolute;bottom:26.0266666667rem;width:100%}main.top .hero .create_account a{background:linear-gradient(225.93deg, #073a86 0%, #2d849a 101.67%);box-shadow:0px 2px 4px rgba(31,41,51,.16);border-radius:4.2666666667rem;padding:4.6933333333rem 9.3866666667rem 6.4rem 11.0933333333rem;font-weight:600;font-size:4.2666666667rem;line-height:1;letter-spacing:.02em;display:flex;align-items:center;right:8.5333333333rem;position:absolute}main.top .hero .create_account a:before{content:\\\"\\\";background-image:url(/assets/img/top/icon-account.svg);background-size:contain;background-repeat:no-repeat;width:6.8266666667rem;height:6.8266666667rem;margin-right:2.1333333333rem;position:relative;top:1.28rem;left:.4266666667rem;display:table-cell}main.top .hero .create_account a span{position:relative;top:1.28rem}main.top .hero .create_account a span.space{width:1.28rem}main.top .hero .create_account a:after{left:-.4266666667rem;top:.8533333333rem;width:5.5466666667rem;height:5.5466666667rem}main.top .hero .contents .common_contents h3{font-size:20.48rem;line-height:1;position:relative;letter-spacing:-0.01em}main.top .hero .contents .common_contents h3 .span_chunk2{font-size:5.12rem}main.top .hero .contents .common_contents h3 .pc{display:none !important}main.top .hero .contents .common_contents h3 span.item.space{width:4.6933333333rem}main.top .hero .contents .common_contents .txt{font-size:5.9733333333rem;font-weight:400;line-height:1.3;letter-spacing:-0.01em}main.top .hero .contents .common_contents .btn a[target=_blank]:before{background-image:url(/assets/img/common/icon-link2-blank-sp.svg)}main.top .hero .contents .common_contents ul{position:absolute;pointer-events:auto;top:100vh;left:8.96rem;margin-top:-136.1066666667rem;background-image:linear-gradient(0deg, rgba(33, 49, 67, 0) 0%, rgba(33, 49, 67, 0) 15%, rgb(33, 49, 67) 30%, rgb(33, 49, 67) 80%, rgba(33, 49, 67, 0) 95%, rgba(33, 49, 67, 0) 100%);background-repeat:no-repeat;background-clip:text;-webkit-background-clip:text;color:rgba(0,0,0,0);height:128rem}main.top .hero .contents .common_contents ul li{width:115.2rem}main.top .hero .contents .common_contents ul li:first-of-type{transition:margin-top 650ms;transition-timing-function:cubic-bezier(0.77, 0, 0.175, 1)}main.top .hero .contents .common_contents ul li .tit{display:flex;font-size:5.9733333333rem;font-weight:500;letter-spacing:-0.01em}main.top .hero .contents .common_contents ul li .tit .num{font-weight:600;letter-spacing:.02em;line-height:1.3}main.top .hero .contents .common_contents ul li .tit h4{margin-left:5.9733333333rem;line-height:1.3}main.top .hero .contents .common_contents ul li .bod{font-size:5.9733333333rem;line-height:1.3;letter-spacing:-0.01em;margin-top:5.12rem}main.top .hero .contents .contents1{left:16.64rem}main.top .hero .contents .contents1 h1{position:relative;margin-top:42.24rem;line-height:.9}main.top .hero .contents .contents1 h1>span span{display:flex}main.top .hero .contents .contents1 h1 span.span_chunk{font-size:30.72rem;letter-spacing:-0.02em;justify-content:flex-end}main.top .hero .contents .contents1 h1 span.span_chunk .space{width:5.9733333333rem}main.top .hero .contents .contents1 h1 span.span_chunk2{font-size:10.24rem;line-height:1}main.top .hero .contents .contents1 h1 span.span_chunk2 .space{width:2.56rem}main.top .hero .contents .contents1 h1 span.chunk1{margin-top:0rem}main.top .hero .contents .contents1 h1 span.chunk3{margin-top:5.12rem}main.top .hero .contents .contents1 h1 span.chunk4{margin-top:.8533333333rem}main.top .hero .contents .contents1 h1 span.chunk5{margin-top:1.28rem}main.top .hero .contents .contents1 .txt{font-size:5.12rem;line-height:1.2;font-weight:900;letter-spacing:.05em;margin-top:9.8133333333rem}main.top .hero .contents .contents2 h2{font-size:20.48rem;line-height:1.1;position:relative;margin-left:8.5333333333rem;margin-top:46.9333333333rem}main.top .hero .contents .contents2 h2 .span_chunk{letter-spacing:-0.01em}main.top .hero .contents .contents2 h2 .span_chunk2{font-size:5.12rem;letter-spacing:.01em}main.top .hero .contents .contents2 h2 span.item.space{width:4.2666666667rem}main.top .hero .contents .contents2 h2 span.chunk1{position:absolute;margin-top:14.08rem}main.top .hero .contents .contents2 h2 span.chunk2{margin-left:25.6rem}main.top .hero .contents .contents2 h2 span.chunk3{line-height:.9;margin-left:39.68rem}main.top .hero .contents .contents2 h2 span.chunk4{margin-left:12.3733333333rem}main.top .hero .contents .contents2 .txt{margin-left:66.1333333333rem;margin-top:5.12rem;width:83.2rem}main.top .hero .contents .contents3 h3{margin-left:8.5333333333rem;top:100vh;margin-top:-94.72rem}main.top .hero .contents .contents3 h3 .chunk1{margin-left:37.5466666667rem}main.top .hero .contents .contents3 h3 .chunk2{position:absolute}main.top .hero .contents .contents3 h3 .chunk3{margin-left:20.9066666667rem}main.top .hero .contents .contents3 .txt{position:absolute;margin-left:8.5333333333rem;top:100vh;margin-top:-46.9333333333rem;width:81.0666666667rem}main.top .hero .contents .contents3 .btn{display:none}main.top .hero .contents .contents4 h3{margin-left:8.5333333333rem;top:100vh;margin-top:-81.92rem}main.top .hero .contents .contents4 h3 .chunk2{position:absolute;margin-top:8.96rem}main.top .hero .contents .contents4 h3 .chunk3{margin-left:20.9066666667rem}main.top .hero .contents .contents4 .txt{position:absolute;margin-left:8.5333333333rem;top:100vh;margin-top:-54.6133333333rem;width:89.6rem}main.top .hero .contents .contents4 .btn{display:none}main.top .hero .contents .contents5 h3{margin-left:8.5333333333rem;top:100vh;margin-top:-216.32rem}main.top .hero .contents .contents5 h3 .chunk2{position:absolute;margin-top:0rem}main.top .hero .contents .contents5 h3 .chunk3{margin-left:20.9066666667rem}main.top .hero .contents .contents5 .txt{position:absolute;margin-left:8.5333333333rem;top:100vh;margin-top:-168.5333333333rem;width:85.3333333333rem}main.top .hero .contents .contents5 .btn{display:none}main.top .hero .contents .contents6{width:100vw;height:100vh;overflow:hidden}main.top .hero .contents .contents6 h3{margin-left:8.5333333333rem;top:100vh;margin-top:42.6666666667rem}main.top .hero .contents .contents6 h3 .chunk2{position:absolute;margin-left:104.5333333333rem;margin-top:-13.2266666667rem}main.top .hero .contents .contents6 h3 .chunk3{position:absolute;margin-left:88.7466666667rem;margin-top:-8.1066666667rem}main.top .hero .contents .contents6 h3 .chunk4{position:absolute;margin-top:8.96rem}main.top .hero .contents .contents6 h3 .chunk5{margin-left:20.48rem}main.top .hero .contents .contents6 ul.show2 li:first-of-type{margin-top:9.3866666667rem}main.top .hero .contents .contents6 ul.show3 li:first-of-type{margin-top:-32.4266666667rem}main.top .hero .contents .contents6 ul.show4 li:first-of-type{margin-top:-74.24rem}main.top .hero .contents .contents6 ul.show5 li:first-of-type{margin-top:-107.9466666667rem}main.top .hero .contents .contents6 ul.show6 li:first-of-type{margin-top:-141.2266666667rem}main.top .hero .contents .contents6 ul li{margin-bottom:13.2266666667rem}main.top .hero .contents .contents6 ul li:first-of-type{margin-top:51.2rem}main.top .hero .contents .contents6 .txt{position:absolute;margin-left:8.5333333333rem;margin-top:70.8266666667rem;width:85.3333333333rem}main.top .hero .contents .contents6 .btn{display:none}main.top .hero .contents .contents7{width:100vw;height:100vh;overflow:hidden}main.top .hero .contents .contents7 h3{margin-left:8.5333333333rem;top:100vh;margin-top:42.6666666667rem}main.top .hero .contents .contents7 h3 .chunk2{margin-left:51.2rem}main.top .hero .contents .contents7 .txt{position:absolute;margin-left:12.8rem;top:100vh;margin-top:-105.3866666667rem;width:106.6666666667rem}main.top .hero .contents .contents7 ul.show2 li:first-of-type{margin-top:17.4933333333rem}main.top .hero .contents .contents7 ul.show3 li:first-of-type{margin-top:-16.2133333333rem}main.top .hero .contents .contents7 ul li{margin-bottom:13.2266666667rem}main.top .hero .contents .contents7 ul li:first-of-type{margin-top:51.2rem}main.top .hero .contents .contents7 .btn{display:none}main.top .hero .contents .contents8{width:100vw}main.top .hero .contents .contents8 .video{margin:36.2666666667rem auto 0;width:143.36rem;height:98.56rem;-webkit-clip-path:url(#svgPath);clip-path:url(#svgPath)}main.top .hero .contents .contents8 .video video{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}main.top .hero .contents .contents8 svg path{transform:scale(0.0011363636, 0.0020833333)}main.top .hero .contents .contents8 h3{position:absolute;margin-left:8.5333333333rem;top:100vh;margin-top:-104.96rem}main.top .hero .contents .contents8 .txt{position:absolute;margin-left:8.5333333333rem;top:100vh;margin-top:-77.2266666667rem;width:89.6rem}main.top .hero .contents .contents8 .btn{position:absolute;margin-left:8.5333333333rem;top:100vh;margin-top:-48.64rem;width:119.4666666667rem}main.top .hero .contents .contents8 .chunk{position:absolute;margin-top:100vh;top:-93.0133333333rem;margin-left:12.8rem}main.top .hero .contents .contents8 .chunk img{width:133.12rem;border-radius:6.8266666667rem}main.top .hero .contents .contents9{width:100vw}main.top .hero .contents .contents9 .video{margin:36.2666666667rem auto 0;width:119.4666666667rem;height:119.4666666667rem;-webkit-clip-path:url(#svgPath2);clip-path:url(#svgPath2)}main.top .hero .contents .contents9 .video video{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}main.top .hero .contents .contents9 svg path{transform:scale(0.0015625, 0.0015625)}main.top .hero .contents .contents9 h3{position:absolute;margin-left:8.5333333333rem;top:100vh;margin-top:-114.3466666667rem}main.top .hero .contents .contents9 .txt{position:absolute;margin-left:8.5333333333rem;top:100vh;margin-top:-85.3333333333rem;width:140.8rem}main.top .hero .contents .contents9 .btn{position:absolute;margin-left:8.5333333333rem;top:100vh;margin-top:-48.64rem;width:119.4666666667rem}main.top .hero .contents .contents9 .chunk{position:absolute;margin-top:100vh;top:-93.0133333333rem;margin-left:12.8rem}main.top .hero .contents .contents9 .chunk img{width:133.12rem;border-radius:6.8266666667rem}main.top .local_nav{display:none}main.top .section{position:relative}main.top .section:last-of-type{border-radius:0 0 4.2666666667rem 4.2666666667rem;padding-bottom:29.8666666667rem}main.top .section:before{content:\\\"\\\";width:100%;height:1px;background-color:#fff;opacity:.15;display:block}main.top .section .section_child{width:89.5vw;margin:0 auto}main.top .section h2{line-height:1.1}main.top .section h2 .sub_tit{font-size:4.2666666667rem;letter-spacing:.02em}main.top .section h2 .tit{display:block;font-size:15.36rem;letter-spacing:-0.01em;margin-top:10.24rem}main.top .section h2 .tit span.item.space{width:3.84rem}main.top .section h2 .tit .pc{display:none !important}main.top .section .chunk{position:relative;margin-top:12.8rem}main.top .section h3{font-size:10.24rem;line-height:1.2;letter-spacing:-0.01em}main.top .section p.txt,main.top .section ul.txt{font-size:5.9733333333rem;line-height:1.3;letter-spacing:-0.01em;margin-top:9.3866666667rem}main.top .section .imgs{display:flex;flex-direction:column}main.top .section .pic2{overflow:hidden;border-radius:4.2666666667rem;margin-left:-2.5%;width:105%}main.top .section .pic2 img{width:100%}main.top .section .pic3{overflow:hidden;border-radius:4.2666666667rem;position:relative;margin-top:5.5466666667rem;margin-left:-2.5%;width:105%}main.top .section .pic3 img{width:100%}main.top .section1{padding-top:43.52rem}main.top .section1:before{display:none}main.top .section1 h3{position:absolute;color:#213143;margin-top:-85.3333333333rem;margin-left:8.96rem}main.top .section1 p.txt{color:#213143;position:absolute;margin-top:-56.32rem;margin-left:8.96rem;width:93.8666666667rem}main.top .section1 .btn{margin-top:-28.5866666667rem;position:absolute;margin-left:117.3333333333rem}main.top .section1 .btn a:before{background-image:url(/assets/img/common/icon-link2.svg)}main.top .section1 .btn span{display:none}main.top .section2{padding-top:44.8rem}main.top .section2:before{display:none}main.top .section2 h3{position:absolute;color:#213143;margin-top:-70.4rem;margin-left:8.96rem}main.top .section2 p.txt{color:#213143;position:absolute;margin-top:-40.5333333333rem;margin-left:8.96rem;width:85.3333333333rem}main.top .section2 .btn{margin-top:-28.5866666667rem;position:absolute;margin-left:117.3333333333rem}main.top .section2 .btn a:before{background-image:url(/assets/img/common/icon-link2.svg)}main.top .section2 .btn span{display:none}main.top .section2 .btn{margin-top:-28.5866666667rem;position:absolute;margin-left:117.3333333333rem}main.top .section2 .btn a:before{background-image:url(/assets/img/common/icon-link2.svg)}main.top .section2 .btn span{display:none}main.top .section3{padding-top:44.3733333333rem}main.top .section3:before{display:none}main.top .section3 h2{width:88vw}main.top .section3 .btn{margin-top:13.2266666667rem}main.top .section3 .cont .left>p.txt{color:#fff;font-size:8.5333333333rem;font-weight:500;width:115.2rem;line-height:1.2;letter-spacing:.02em;margin-left:1.7066666667rem}main.top .section3 p.txt{margin-top:20.48rem}main.top .section3 .documentation_update{margin-top:20.0533333333rem}main.top .section3 .documentation_update li p.txt{margin-top:13.6533333333rem;font-weight:600}main.top .section3 .release_notes{font-size:5.12rem;letter-spacing:.04em;margin-top:13.2266666667rem}main.top .section3 .release_notes a:after{margin-left:2.1333333333rem}main.top .section4{padding-top:41.3866666667rem}main.top .section4 h2{margin-top:34.9866666667rem}main.top .section4 .items{display:flex;flex-wrap:wrap;margin-top:20.48rem}main.top .section4 .items .item{margin-bottom:4.2666666667rem;overflow:hidden;width:48%;border-radius:4.2666666667rem}main.top .section4 .items .item:nth-of-type(2n + 1){margin-right:4.2666666667rem}main.top .section4 .items .item a{width:100%;height:103.2533333333rem;position:relative;display:block;background-color:rgba(255,255,255,.04)}main.top .section4 .items .item a:after{position:absolute;right:3.4133333333rem;top:100%;margin-top:-16.64rem}main.top .section4 .items .item .img{width:86%;margin:0 auto;padding-top:9.8133333333rem}main.top .section4 .items .item .img img{width:100%;height:auto}main.top .section4 .items .item .txt{line-height:1.3;font-size:5.12rem;color:#fff;opacity:.5;width:82%;position:absolute;bottom:21.76rem;left:9%}main.top .section5{padding-top:37.5466666667rem}main.top .section5 h2{margin-top:34.9866666667rem}main.top .section5 .items{display:inline-flex;margin-top:8.1066666667rem;overflow:hidden}main.top .section5 .items .item{margin-right:5.3333333333vw}main.top .section5 .items .item a:after{display:none}main.top .section5 .items .item img{border-radius:4.2666666667rem;width:100.6933333333rem;height:64rem;-o-object-fit:cover;object-fit:cover}main.top .section5 .items .item .name{font-weight:600;font-size:10.24rem;line-height:1.2;margin-left:9.8133333333rem;margin-top:7.68rem;letter-spacing:.02em}main.top .section5 .items .item .name:after{content:\\\"\\\";background-image:url(/assets/img/common/blank_white.svg);background-size:cover;width:5.12rem;height:5.12rem;display:inline-block;position:relative;top:.8533333333rem;margin-left:2.56rem}main.top .section5 .items .item .txt{font-size:5.12rem;line-height:1.3;color:#fff;opacity:.5;margin-left:9.8133333333rem;margin-top:3.4133333333rem}main.top .section5 .ui{padding-bottom:11.52rem;display:table;margin:38.4rem auto 0}main.top .section5 .ui .base{border-top:1px dashed #fff;width:315px}main.top .section5 .ui .knob{top:-25px}main.top .section5 .ui .knob:before{background-image:url(/assets/img/common/scroll-knob-circle-sp.svg);left:-5px;width:49px;height:49px}main.top .section5 .ui .knob:after{background-image:url(/assets/img/common/scroll-knob-sp.svg);left:-5px;width:50px;height:50px}main.top .section6{padding-top:41.3866666667rem}main.top .section6 .section_child{position:relative;padding-bottom:17.0666666667rem}main.top .section6 .section_child:before{content:\\\"\\\";width:100%;padding-top:34.1333333333rem;display:block}main.top_ja .hero .contents .common_contents .txt{font-size:5.12rem;line-height:1.75}main.top_ja .hero .contents .common_contents ul li .bod{font-size:5.12rem;line-height:1.75}main.top_ja .hero .contents .contents3 h3{margin-top:-106.24rem}main.top_ja .hero .contents .contents3 .txt{margin-top:-58.4533333333rem}main.top_ja .hero .contents .contents4 h3{margin-top:-103.68rem}main.top_ja .hero .contents .contents4 .txt{margin-top:-76.3733333333rem}main.top_ja .section p.txt{font-size:5.12rem;line-height:1.75}main.top_ja .section2 h3{margin-top:-75.52rem}main.top_ja .section2 p.txt{margin-top:-45.6533333333rem}main.top_ja .section4 .items .item a .txt{font-size:4.2666666667rem;line-height:1.3}main.top_ja .section5 .items .item a .txt{font-size:4.2666666667rem;line-height:1.3}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/scss/top.scss\",\"webpack://./src/scss/_variable.scss\"],\"names\":[],\"mappings\":\"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ADJ,yEACI,uBAAA,CADJ,yEACI,sBAAA,CADJ,yEACI,uBAAA,CADJ,yEACI,sBAAA,CADJ,yEACI,uBAAA,CADJ,yEACI,sBAAA,CADJ,yEACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,qBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,qBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,qBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,qBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,0EACI,sBAAA,CADJ,0EACI,uBAAA,CADJ,2EACI,qBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,qBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,qBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,qBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,mBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,qBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBAAA,CADJ,2EACI,uBAAA,CADJ,2EACI,sBA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\",\"sourcesContent\":[\"@import 'variable';\\n@import 'mixin';\\n\\n/*\\nz-index\\n\\n*/\\n\\n//For COMMON LAYOUT\\nmain.top {\\n .hero {\\n .maskContainer {\\n position: absolute;\\n top: 0;\\n filter: url(#colormatrix);\\n width: 100%;\\n height: 100%;\\n\\n @keyframes loop_scale {\\n 0% {\\n transform: scale(0);\\n }\\n\\n 50% {\\n transform: scale(1);\\n }\\n\\n 100% {\\n transform: scale(0);\\n }\\n }\\n\\n .mask {\\n filter: url(#blur);\\n //transform: scale(.88);\\n position: absolute;\\n //bottom: 0;\\n //left: 0;\\n display: block;\\n width: 128px;\\n height: 128px;\\n border-radius: 10px;\\n background-color: #b5d2e0;\\n animation: loop_scale 10s infinite;\\n will-change: transform;\\n }\\n }\\n\\n .scroll {\\n position: absolute;\\n top: 100%;\\n font-weight: 500;\\n letter-spacing: 0.02em;\\n z-index: 1;\\n opacity: 0;\\n\\n &.show {\\n opacity: 1;\\n animation: common_blink 0.1s linear;\\n animation-iteration-count: 2;\\n }\\n\\n &:before {\\n content: '';\\n display: inline-block;\\n background-image: url(/assets/img/common/arrow_down.svg);\\n background-size: cover;\\n position: relative;\\n }\\n }\\n\\n .skip {\\n position: absolute;\\n top: 100%;\\n letter-spacing: 0.02em;\\n cursor: pointer;\\n font-weight: 500;\\n z-index: 1;\\n opacity: 0;\\n pointer-events: none;\\n\\n &.show {\\n opacity: 1;\\n animation: common_blink 0.1s linear;\\n animation-iteration-count: 2;\\n pointer-events: inherit;\\n }\\n }\\n\\n .create_account {\\n transition: opacity 300ms;\\n transition-timing-function: $easeOutQuart;\\n\\n opacity: 0;\\n &.show {\\n opacity: 1;\\n animation: common_blink 0.1s linear;\\n animation-iteration-count: 2;\\n }\\n\\n &.hide {\\n opacity: 0;\\n pointer-events: none;\\n }\\n }\\n\\n .contents {\\n position: absolute;\\n top: 0;\\n\\n .common_contents {\\n position: absolute;\\n visibility: hidden;\\n pointer-events: none;\\n\\n &.show {\\n visibility: visible;\\n\\n h1 {\\n span.item {\\n animation-name: common_blink;\\n animation-duration: 0.1s;\\n animation-timing-function: linear;\\n animation-iteration-count: 4;\\n transform: rotate3d(1, 1, 1, 0);\\n\\n @for $i from 1 through 30 {\\n &:nth-of-type(#{$i}) {\\n $rand: random(10) * 0.0125;\\n transition-delay: 0.8 + $rand + s;\\n animation-delay: 0.8 + $rand + s;\\n }\\n }\\n }\\n }\\n\\n h2 {\\n span.item {\\n animation-name: common_blink;\\n animation-duration: 0.1s;\\n animation-timing-function: linear;\\n animation-iteration-count: 4;\\n transform: rotate3d(1, 1, 1, 0);\\n\\n @for $i from 1 through 30 {\\n &:nth-child(#{$i}) {\\n //transition-delay: 1 + .03 * $i + s;\\n $rand: random(10) * 0.0125;\\n transition-delay: 0.7 + $rand + s;\\n animation-delay: 0.7 + $rand + s;\\n }\\n }\\n }\\n }\\n\\n h3 {\\n span.item {\\n animation-name: common_blink;\\n animation-duration: 0.1s;\\n animation-timing-function: linear;\\n animation-iteration-count: 4;\\n transform: rotate3d(1, 1, 1, 0);\\n\\n @for $i from 1 through 30 {\\n &:nth-of-type(#{$i}) {\\n $rand: random(10) * 0.0125;\\n transition-delay: 0.7 + $rand + s;\\n animation-delay: 0.7 + $rand + s;\\n }\\n }\\n }\\n }\\n\\n .txts {\\n opacity: 1;\\n transition: opacity 400ms;\\n transition-timing-function: $easeOutQuart;\\n transition-delay: 1s;\\n //animation-name: common_blink;\\n //animation-duration: .1s;\\n //animation-timing-function: linear;\\n //animation-iteration-count: 2;\\n //animation-delay: 1s;\\n }\\n\\n p.txt {\\n span {\\n opacity: 1;\\n transition: opacity 300ms;\\n transition-timing-function: $easeOutQuart;\\n\\n @for $i from 1 through 251 {\\n &:nth-of-type(#{$i}) {\\n transition-delay: 1.1 + 0.005 * $i + s;\\n }\\n }\\n }\\n }\\n\\n div.txt {\\n span {\\n opacity: 1;\\n }\\n }\\n\\n ul {\\n opacity: 1;\\n transition-delay: 1.1s;\\n\\n animation: common_blink 0.1s linear 1.1s;\\n animation-iteration-count: 2;\\n }\\n\\n .pic,\\n .video {\\n opacity: 1;\\n transition: opacity 1000ms;\\n transition-delay: 1.5s;\\n img {\\n transition: transform 1000ms;\\n transition-delay: 1.5s;\\n transform: scale(1);\\n }\\n }\\n\\n .btn {\\n animation: common_blink 0.1s linear 1.7s;\\n animation-iteration-count: 2;\\n a {\\n opacity: 1;\\n }\\n }\\n }\\n\\n &.white {\\n h3,\\n .txt {\\n color: #fff;\\n }\\n }\\n\\n h3 {\\n span.span_chunk {\\n display: flex;\\n perspective: 300px;\\n }\\n span.item {\\n white-space: nowrap;\\n will-change: transform;\\n transform: rotate3d(1, 0, 0, 180deg);\\n backface-visibility: hidden;\\n transition: transform 500ms;\\n transition-timing-function: $easeOutQuart;\\n }\\n }\\n\\n .txts {\\n opacity: 0;\\n }\\n\\n p.txt {\\n overflow: hidden;\\n pointer-events: none;\\n color: $BASE_COLOR2;\\n span {\\n opacity: 0;\\n }\\n }\\n\\n ul {\\n opacity: 0;\\n }\\n\\n .btn {\\n pointer-events: auto;\\n overflow: hidden;\\n\\n a {\\n opacity: 0;\\n transition: opacity 1ms;\\n transition-delay: 1.7s;\\n }\\n }\\n }\\n\\n .contents1 {\\n h1 {\\n .pc,\\n .sp {\\n & > span {\\n perspective: 300px;\\n }\\n }\\n\\n span.item {\\n will-change: transform;\\n transform: rotate3d(1, 0, 0, 180deg);\\n backface-visibility: hidden;\\n transition: transform 600ms;\\n transition-timing-function: $easeOutQuart;\\n }\\n }\\n\\n .txt {\\n span {\\n opacity: 0;\\n transition: opacity 300ms;\\n transition-timing-function: $easeOutQuart;\\n\\n @for $i from 1 through 32 {\\n &:nth-of-type(#{$i}) {\\n transition-delay: 1.5 + 0.01 * $i + s;\\n }\\n }\\n }\\n }\\n }\\n\\n .contents2 {\\n h2 {\\n span.span_chunk {\\n display: flex;\\n perspective: 300px;\\n }\\n\\n span.item {\\n white-space: nowrap;\\n will-change: transform;\\n transform: rotate3d(1, 0, 0, 180deg);\\n backface-visibility: hidden;\\n transition: transform 500ms;\\n transition-timing-function: $easeOutQuart;\\n }\\n\\n span.grd {\\n //background: linear-gradient(270deg, #214772 0%, #3098A6 100%);\\n //-webkit-background-clip: text;\\n //-webkit-text-fill-color: transparent;\\n //background-clip: text;\\n //text-fill-color: transparent;\\n\\n span:nth-of-type(1) {\\n color: #397e91;\\n }\\n\\n span:nth-of-type(2) {\\n color: #36778c;\\n }\\n\\n span:nth-of-type(3) {\\n color: #337088;\\n }\\n\\n span:nth-of-type(4) {\\n color: #326c84;\\n }\\n\\n span:nth-of-type(5) {\\n color: #326c84;\\n }\\n\\n span:nth-of-type(6) {\\n color: #2e637e;\\n }\\n\\n span:nth-of-type(7) {\\n color: #2e617c;\\n }\\n\\n span:nth-of-type(8) {\\n color: #2b5976;\\n }\\n\\n span:nth-of-type(9) {\\n color: #295473;\\n }\\n\\n span:nth-of-type(10) {\\n color: #285071;\\n }\\n\\n span:nth-of-type(11) {\\n color: #25496c;\\n }\\n\\n span:nth-of-type(12) {\\n color: #234066;\\n }\\n }\\n }\\n }\\n\\n .contents8 {\\n transition-property: visibility;\\n transition-duration: 500ms;\\n\\n // &.show {\\n // .chunk {\\n // img {\\n // transform: translate3d(0, 0, 0);\\n // transition: transform 800ms;\\n // transition-timing-function: $easeOutQuart;\\n // transition-delay: 1.9s;\\n // }\\n // }\\n // }\\n\\n .video {\\n opacity: 0;\\n transition-property: opacity;\\n transition-duration: 500ms;\\n transition-timing-function: $easeOutQuad;\\n }\\n\\n h3,\\n .txt,\\n .btn {\\n visibility: hidden;\\n }\\n\\n &.show {\\n h3,\\n .txt,\\n .btn {\\n visibility: visible;\\n }\\n }\\n\\n // .chunk {\\n // overflow: hidden;\\n // img {\\n // transform: translate3d(0, 120%, 0);\\n // }\\n // }\\n }\\n\\n .contents9 {\\n transition-property: visibility;\\n transition-duration: 500ms;\\n\\n // &.show {\\n // .chunk {\\n // img {\\n // transform: translate3d(0, 0, 0);\\n // transition: transform 800ms;\\n // transition-timing-function: $easeOutQuart;\\n // transition-delay: 1.9s;\\n // }\\n // }\\n // }\\n\\n .video {\\n opacity: 0;\\n transition-property: opacity;\\n transition-duration: 500ms;\\n transition-timing-function: $easeOutQuad;\\n }\\n\\n h3,\\n .txt,\\n .btn {\\n visibility: hidden;\\n }\\n\\n &.show {\\n h3,\\n .txt,\\n .btn {\\n visibility: visible;\\n }\\n }\\n\\n // .chunk {\\n // overflow: hidden;\\n // img {\\n // transform: translate3d(0, 120%, 0);\\n // }\\n // }\\n }\\n }\\n }\\n\\n .section {\\n background-color: $BASE_COLOR1;\\n color: #fff;\\n\\n &.show {\\n h2 {\\n .tit {\\n span.item {\\n animation-name: common_blink;\\n animation-duration: 0.1s;\\n animation-timing-function: linear;\\n animation-iteration-count: 4;\\n transform: rotate3d(1, 1, 1, 0);\\n }\\n }\\n\\n .sub_tit {\\n span {\\n opacity: 1;\\n }\\n }\\n }\\n\\n picture {\\n opacity: 1;\\n transition: opacity 1000ms;\\n transition-delay: 0.4s;\\n img {\\n transition: transform 1000ms;\\n transition-delay: 0.4s;\\n transform: scale(1);\\n }\\n }\\n }\\n\\n h2 {\\n .tit {\\n .span_chunk {\\n display: flex;\\n perspective: 1000px;\\n }\\n\\n span.item {\\n white-space: nowrap;\\n will-change: transform;\\n transform: rotate3d(1, 0, 0, 180deg);\\n backface-visibility: hidden;\\n transition: transform 500ms;\\n transition-timing-function: $easeOutQuart;\\n\\n @for $i from 1 through 30 {\\n &:nth-of-type(#{$i}) {\\n $rand: random(10) * 0.025;\\n transition-delay: $rand + s;\\n //transition-delay: .03 * $i + s;\\n }\\n }\\n }\\n }\\n\\n .sub_tit {\\n color: $SUB_COLOR1;\\n span {\\n opacity: 0;\\n transition: opacity 300ms;\\n transition-timing-function: $easeOutQuart;\\n\\n @for $i from 1 through 32 {\\n &:nth-of-type(#{$i}) {\\n transition-delay: 0.1 + 0.01 * $i + s;\\n }\\n }\\n }\\n }\\n }\\n\\n picture {\\n opacity: 0;\\n\\n transition-timing-function: $easeOutQuad;\\n img {\\n transition-timing-function: $easeOutQuad;\\n transform: scale(1.3);\\n }\\n }\\n\\n p.txt,\\n ul {\\n color: $SUB_COLOR2;\\n font-size: size-variable-pc(18);\\n }\\n }\\n\\n .section4 {\\n margin-top: -1px;\\n }\\n\\n .section5 {\\n overflow: hidden;\\n margin-top: -1px;\\n .ui {\\n position: relative;\\n\\n .base {\\n height: 2px;\\n display: block;\\n }\\n\\n .knob {\\n position: relative;\\n top: -42.5px;\\n\\n &:before {\\n content: '';\\n position: absolute;\\n top: 0;\\n display: block;\\n }\\n\\n &:after {\\n content: '';\\n position: absolute;\\n top: 0;\\n display: block;\\n }\\n }\\n }\\n }\\n}\\n\\n//For PC LAYOUT\\n@media screen and (min-width: $BP + px) {\\n main.top {\\n .hero {\\n .scroll {\\n margin-left: size-variable-pc(75);\\n margin-top: size-variable-pc(-61);\\n font-size: size-variable-pc(14);\\n letter-spacing: 0.02em;\\n\\n &:before {\\n width: size-variable-pc(10);\\n height: size-variable-pc(12);\\n margin-right: size-variable-pc(5);\\n top: size-variable-pc(2);\\n }\\n }\\n\\n .skip {\\n font-size: size-variable-pc(12);\\n font-weight: 600;\\n margin-top: size-variable-pc(-58);\\n right: size-variable-pc(80);\\n letter-spacing: -0.01em;\\n\\n &:hover {\\n span.item {\\n @for $i from 1 through 30 {\\n &:nth-of-type(#{$i}) {\\n $rand: random(1000) * 0.00015;\\n animation: common_blink 0.13s linear $rand + s;\\n animation-iteration-count: 2;\\n }\\n }\\n }\\n }\\n\\n &:after {\\n content: '';\\n display: block;\\n width: 100%;\\n height: 1px;\\n background-color: $BASE_COLOR2;\\n margin-top: size-variable-pc(-5);\\n }\\n }\\n\\n .create_account {\\n position: absolute;\\n right: size-variable-pc(40);\\n bottom: size-variable-pc(78);\\n\\n a {\\n background: linear-gradient(\\n 225.93deg,\\n #073a86 0%,\\n #2d849a 101.67%\\n );\\n box-shadow: 0px 2px 4px rgba(31, 41, 51, 0.16);\\n border-radius: size-variable-pc(20);\\n padding: size-variable-pc(40) size-variable-pc(49)\\n size-variable-pc(40) size-variable-pc(50);\\n font-weight: 600;\\n font-size: size-variable-pc(14);\\n line-height: 1;\\n letter-spacing: 0em;\\n\\n &:hover {\\n span.item {\\n @for $i from 1 through 30 {\\n &:nth-of-type(#{$i}) {\\n $rand: random(1000) * 0.00015;\\n animation: common_blink\\n 0.13s\\n linear\\n $rand +\\n s;\\n animation-iteration-count: 2;\\n }\\n }\\n }\\n }\\n\\n &:before {\\n content: '';\\n background-image: url(/assets/img/top/icon-account.svg);\\n background-size: contain;\\n background-repeat: no-repeat;\\n width: size-variable-pc(22);\\n height: size-variable-pc(22);\\n display: inline-block;\\n margin-right: size-variable-pc(7);\\n position: relative;\\n top: size-variable-pc(7);\\n }\\n\\n &:after {\\n margin-left: size-variable-pc(5);\\n width: size-variable-pc(15);\\n height: size-variable-pc(15);\\n }\\n }\\n }\\n\\n .contents {\\n .common_contents {\\n h3 {\\n font-size: size-variable-pc(88);\\n line-height: 1.2;\\n position: relative;\\n letter-spacing: -0.02em;\\n\\n .span_chunk2 {\\n font-size: size-variable-pc(20);\\n letter-spacing: -0.01em;\\n\\n span.item.space {\\n width: size-variable-pc(18);\\n }\\n }\\n\\n .sp {\\n display: none !important;\\n }\\n\\n span.item.space {\\n width: size-variable-pc(18);\\n }\\n }\\n\\n .txts {\\n display: flex;\\n }\\n\\n .txt {\\n position: relative;\\n font-size: size-variable-pc(18);\\n line-height: 1.28;\\n letter-spacing: -0.01em;\\n }\\n\\n .btn {\\n a {\\n &[target='_blank'] {\\n &:before {\\n background-image: url(/assets/img/common/icon-link2-blank.svg);\\n }\\n }\\n\\n &:before {\\n background-image: url(/assets/img/common/icon-link2.svg);\\n margin-right: size-variable-pc(10);\\n }\\n }\\n }\\n\\n ul {\\n position: absolute;\\n pointer-events: auto;\\n top: 100vh;\\n left: 100vw;\\n margin-left: size-variable-pc(-520);\\n margin-top: size-variable-pc(-452);\\n background-image: linear-gradient(\\n 0deg,\\n rgba(33, 49, 67, 0) 0%,\\n rgba(33, 49, 67, 0) 15%,\\n rgba(33, 49, 67, 1) 30%,\\n rgba(33, 49, 67, 1) 80%,\\n rgba(33, 49, 67, 0) 95%,\\n rgba(33, 49, 67, 0) 100%\\n );\\n background-repeat: no-repeat;\\n background-clip: text;\\n -webkit-background-clip: text;\\n color: transparent;\\n width: size-variable-pc(880);\\n height: size-variable-pc(450);\\n\\n li {\\n width: size-variable-pc(320);\\n\\n &:first-of-type {\\n transition: margin-top 650ms;\\n transition-timing-function: $easeInOutQuart;\\n }\\n\\n .tit {\\n //display: flex;\\n display: -webkit-box; //Safariだと-webkit-boxにしないとダメだった\\n font-size: size-variable-pc(16);\\n font-weight: 500;\\n letter-spacing: -0.01em;\\n .num {\\n font-weight: 600;\\n line-height: 1;\\n }\\n\\n h4 {\\n margin-left: size-variable-pc(23);\\n line-height: 1;\\n }\\n }\\n\\n .bod {\\n font-size: size-variable-pc(18);\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n margin-top: size-variable-pc(21);\\n }\\n }\\n }\\n }\\n\\n .contents1 {\\n h1 {\\n position: absolute;\\n left: 50vw;\\n top: 50vh;\\n //transform: translate3d(-50%, -50%, 0);\\n line-height: 1;\\n\\n & > span {\\n span {\\n display: flex;\\n }\\n }\\n\\n span.span_chunk {\\n position: absolute;\\n font-size: size-variable-pc(160);\\n letter-spacing: -0.02em;\\n .space {\\n width: size-variable-pc(34);\\n }\\n }\\n\\n span.span_chunk2 {\\n font-size: size-variable-pc(20);\\n letter-spacing: -0.02em;\\n .space {\\n width: size-variable-pc(3);\\n }\\n }\\n\\n span.chunk1 {\\n margin-left: size-variable-pc(-17);\\n margin-top: size-variable-pc(-232);\\n position: relative;\\n }\\n\\n span.chunk2 {\\n margin-top: size-variable-pc(-16);\\n margin-left: size-variable-pc(131);\\n position: relative;\\n }\\n\\n span.chunk3 {\\n margin-top: size-variable-pc(6);\\n margin-left: size-variable-pc(440);\\n letter-spacing: 0.0051em;\\n }\\n }\\n\\n .txt {\\n font-size: size-variable-pc(18);\\n line-height: 1.2;\\n font-weight: 600;\\n position: absolute;\\n left: 50vw;\\n top: 50vh;\\n margin-top: size-variable-pc(-94px);\\n margin-left: size-variable-pc(153px);\\n white-space: nowrap;\\n letter-spacing: 0.04em;\\n }\\n }\\n\\n .contents2 {\\n h2 {\\n font-size: size-variable-pc(88);\\n line-height: 1.2;\\n position: absolute;\\n top: 100vh;\\n margin-left: size-variable-pc(685);\\n margin-top: size-variable-pc(-592);\\n .span_chunk {\\n letter-spacing: -0.02em;\\n }\\n\\n .span_chunk2 {\\n font-size: size-variable-pc(20);\\n font-weight: 600;\\n span.item:first-child {\\n margin-left: size-variable-pc(34);\\n }\\n }\\n\\n span.item.space {\\n width: size-variable-pc(14);\\n }\\n\\n .chunk1 {\\n position: absolute;\\n margin-left: size-variable-pc(-142);\\n margin-top: size-variable-pc(63);\\n }\\n\\n .chunk3 {\\n margin-left: size-variable-pc(-108);\\n margin-top: size-variable-pc(-9);\\n }\\n }\\n\\n .txt {\\n position: absolute;\\n top: 100vh;\\n margin-left: size-variable-pc(1040);\\n margin-top: size-variable-pc(-371);\\n width: size-variable-pc(280);\\n }\\n }\\n\\n .contents3 {\\n h3 {\\n left: size-variable-pc(240);\\n top: size-variable-pc(274);\\n\\n .chunk2 {\\n position: absolute;\\n margin-top: size-variable-pc(-10);\\n margin-left: size-variable-pc(67);\\n }\\n\\n .chunk3 {\\n margin-left: size-variable-pc(47);\\n }\\n }\\n\\n .txt {\\n position: absolute;\\n margin-left: 100vw;\\n top: 100vh;\\n left: size-variable-pc(-520);\\n margin-top: size-variable-pc(-238);\\n width: size-variable-pc(280);\\n }\\n\\n .btn {\\n position: absolute;\\n margin-left: 100vw;\\n top: 100vh;\\n left: size-variable-pc(-520);\\n margin-top: size-variable-pc(-160);\\n width: size-variable-pc(340);\\n }\\n }\\n\\n .contents4 {\\n h3 {\\n position: absolute;\\n top: 100vh;\\n margin-left: size-variable-pc(240);\\n margin-top: size-variable-pc(-362);\\n\\n .chunk2 {\\n position: absolute;\\n margin-top: size-variable-pc(48);\\n }\\n\\n .chunk3 {\\n margin-left: size-variable-pc(40);\\n }\\n }\\n\\n .txt {\\n position: absolute;\\n top: 100vh;\\n margin-left: size-variable-pc(240);\\n margin-top: size-variable-pc(-238);\\n width: size-variable-pc(400);\\n }\\n\\n .btn {\\n position: absolute;\\n top: 100vh;\\n margin-left: size-variable-pc(240);\\n margin-top: size-variable-pc(-160);\\n white-space: nowrap;\\n }\\n }\\n\\n .contents5 {\\n h3 {\\n position: absolute;\\n top: 100vh;\\n margin-left: size-variable-pc(800);\\n margin-top: size-variable-pc(-592);\\n\\n .chunk2 {\\n position: absolute;\\n margin-top: size-variable-pc(-9);\\n }\\n\\n .chunk3 {\\n margin-left: size-variable-pc(46);\\n }\\n }\\n\\n .txt {\\n position: absolute;\\n top: 100vh;\\n left: 100vw;\\n margin-left: size-variable-pc(-400);\\n margin-top: size-variable-pc(-370);\\n width: size-variable-pc(280);\\n }\\n\\n .btn {\\n position: absolute;\\n top: 100vh;\\n left: 100vw;\\n margin-left: size-variable-pc(-520);\\n margin-top: size-variable-pc(-160);\\n white-space: nowrap;\\n }\\n }\\n\\n .contents6 {\\n width: 100vw;\\n height: 100vh;\\n overflow: hidden;\\n h3 {\\n position: absolute;\\n top: 100vh;\\n margin-left: size-variable-pc(240);\\n margin-top: size-variable-pc(-592);\\n\\n .chunk2 {\\n position: absolute;\\n margin-top: size-variable-pc(-62);\\n margin-left: size-variable-pc(481);\\n }\\n\\n .chunk3 {\\n position: absolute;\\n margin-top: size-variable-pc(-38);\\n margin-left: size-variable-pc(417);\\n }\\n\\n .chunk4 {\\n position: absolute;\\n margin-top: size-variable-pc(48);\\n }\\n\\n .chunk5 {\\n margin-left: size-variable-pc(74);\\n }\\n }\\n\\n ul {\\n $cont6_li_def_margin_top: 120;\\n $cont6_li_1_height: 84;\\n $cont6_li_2_height: 84;\\n $cont6_li_3_height: 84;\\n $cont6_li_4_height: 84;\\n $cont6_li_5_height: 84;\\n $cont6_li_margin_bottom: 38;\\n\\n &.show2 {\\n li {\\n &:first-of-type {\\n margin-top: size-variable-pc(\\n $cont6_li_def_margin_top -\\n $cont6_li_1_height -\\n $cont6_li_margin_bottom\\n );\\n }\\n }\\n }\\n\\n &.show3 {\\n li {\\n &:first-of-type {\\n margin-top: size-variable-pc(\\n $cont6_li_def_margin_top -\\n $cont6_li_1_height -\\n $cont6_li_2_height -\\n $cont6_li_margin_bottom * 2\\n );\\n }\\n }\\n }\\n\\n &.show4 {\\n li {\\n &:first-of-type {\\n margin-top: size-variable-pc(\\n $cont6_li_def_margin_top -\\n $cont6_li_1_height -\\n $cont6_li_2_height -\\n $cont6_li_3_height -\\n $cont6_li_margin_bottom * 3\\n );\\n }\\n }\\n }\\n\\n &.show5 {\\n li {\\n &:first-of-type {\\n margin-top: size-variable-pc(\\n $cont6_li_def_margin_top -\\n $cont6_li_1_height -\\n $cont6_li_2_height -\\n $cont6_li_3_height -\\n $cont6_li_4_height -\\n $cont6_li_margin_bottom * 4\\n );\\n }\\n }\\n }\\n\\n &.show6 {\\n li {\\n &:first-of-type {\\n margin-top: size-variable-pc(\\n $cont6_li_def_margin_top -\\n $cont6_li_1_height -\\n $cont6_li_2_height -\\n $cont6_li_3_height -\\n $cont6_li_4_height -\\n $cont6_li_5_height -\\n $cont6_li_margin_bottom * 5\\n );\\n }\\n }\\n }\\n\\n li {\\n margin-bottom: size-variable-pc(\\n $cont6_li_margin_bottom\\n );\\n &:first-of-type {\\n margin-top: size-variable-pc(\\n $cont6_li_def_margin_top\\n );\\n }\\n }\\n }\\n\\n .txt {\\n position: absolute;\\n top: 100vh;\\n margin-left: size-variable-pc(240);\\n margin-top: size-variable-pc(-468);\\n width: size-variable-pc(420);\\n }\\n\\n .btn {\\n position: absolute;\\n top: 100vh;\\n margin-left: size-variable-pc(240);\\n margin-top: size-variable-pc(-364);\\n white-space: nowrap;\\n }\\n }\\n\\n .contents7 {\\n width: 100vw;\\n height: 100vh;\\n overflow: hidden;\\n h3 {\\n position: absolute;\\n top: 100vh;\\n left: size-variable-pc(239);\\n margin-top: size-variable-pc(-381);\\n\\n .chunk2 {\\n //margin-left: size-variable-pc(47);\\n margin-top: size-variable-pc(-9);\\n }\\n }\\n\\n .txt {\\n position: absolute;\\n margin-left: 100vw;\\n top: 100vh;\\n left: size-variable-pc(-520);\\n margin-top: size-variable-pc(-364);\\n width: size-variable-pc(370);\\n }\\n\\n ul {\\n $cont7_li_def_margin_top: 120;\\n $cont7_li_1_height: 61;\\n $cont7_li_2_height: 61;\\n $cont7_li_3_height: 61;\\n $cont7_li_margin_bottom: 39;\\n\\n &.show2 {\\n li {\\n &:first-of-type {\\n margin-top: size-variable-pc(\\n $cont7_li_def_margin_top -\\n $cont7_li_1_height -\\n $cont7_li_margin_bottom\\n );\\n }\\n }\\n }\\n\\n &.show3 {\\n li {\\n &:first-of-type {\\n margin-top: size-variable-pc(\\n $cont7_li_def_margin_top -\\n $cont7_li_1_height -\\n $cont7_li_2_height -\\n $cont7_li_margin_bottom * 2\\n );\\n }\\n }\\n }\\n\\n li {\\n margin-bottom: size-variable-pc(\\n $cont7_li_margin_bottom\\n );\\n &:first-of-type {\\n margin-top: size-variable-pc(\\n $cont7_li_def_margin_top\\n );\\n }\\n }\\n }\\n\\n .btn {\\n position: absolute;\\n top: 100vh;\\n margin-left: size-variable-pc(240);\\n margin-top: size-variable-pc(-161);\\n width: size-variable-pc(340);\\n }\\n }\\n\\n .contents8 {\\n width: 100vw;\\n height: 100vh;\\n overflow: hidden;\\n\\n .video {\\n position: absolute;\\n top: 100vh;\\n margin-top: size-variable-pc(-634);\\n left: size-variable-pc(160);\\n width: size-variable-pc(880);\\n height: size-variable-pc(480);\\n -webkit-clip-path: url(#svgPath);\\n clip-path: url(#svgPath);\\n\\n video {\\n width: 100%;\\n height: 100%;\\n object-fit: cover;\\n }\\n }\\n\\n svg {\\n position: absolute;\\n //top: 100vh;\\n //margin-top: size-variable-pc(-634);\\n //left: size-variable-pc(160);\\n //width: size-variable-pc(880);\\n //height: size-variable-pc(480);\\n\\n $scale_x: 1 / 880;\\n $scale_y: 1 / 480;\\n\\n path {\\n transform: scale($scale_x, $scale_y);\\n }\\n }\\n\\n h3 {\\n margin-left: 100vw;\\n top: 100vh;\\n left: size-variable-pc(-520);\\n margin-top: size-variable-pc(-396);\\n }\\n\\n .txt {\\n position: absolute;\\n margin-left: 100vw;\\n top: 100vh;\\n left: size-variable-pc(-360);\\n margin-top: size-variable-pc(-272);\\n width: size-variable-pc(260);\\n }\\n\\n .btn {\\n position: absolute;\\n margin-left: 100vw;\\n top: 100vh;\\n left: size-variable-pc(-360);\\n margin-top: size-variable-pc(-194);\\n width: size-variable-pc(260);\\n }\\n\\n .chunk {\\n position: absolute;\\n margin-left: 100vw;\\n top: 100vh;\\n left: size-variable-pc(-774);\\n margin-top: size-variable-pc(-507);\\n img {\\n width: size-variable-pc(198);\\n border-radius: size-variable-pc(16);\\n }\\n }\\n }\\n\\n .contents9 {\\n width: 100vw;\\n height: 100vh;\\n overflow: hidden;\\n\\n .video {\\n position: absolute;\\n top: 50vh;\\n margin-top: size-variable-pc(-320);\\n right: size-variable-pc(160);\\n width: size-variable-pc(640);\\n height: size-variable-pc(640);\\n -webkit-clip-path: url(#svgPath2);\\n clip-path: url(#svgPath2);\\n\\n video {\\n // width: 100%;\\n height: 100%;\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n }\\n }\\n\\n svg {\\n position: absolute;\\n //top: 100vh;\\n //margin-top: size-variable-pc(-634);\\n //left: size-variable-pc(160);\\n //width: size-variable-pc(880);\\n //height: size-variable-pc(480);\\n\\n $scale_x: 1 / 640;\\n $scale_y: 1 / 640;\\n\\n path {\\n transform: scale($scale_x, $scale_y);\\n }\\n }\\n\\n h3 {\\n // margin-left: 100vw;\\n top: 100vh;\\n left: size-variable-pc(200);\\n margin-top: size-variable-pc(-520);\\n }\\n\\n .txt {\\n position: absolute;\\n top: 100vh;\\n left: size-variable-pc(200);\\n margin-top: size-variable-pc(-370);\\n width: size-variable-pc(260);\\n }\\n\\n .btn {\\n position: absolute;\\n top: 100vh;\\n left: size-variable-pc(200);\\n margin-top: size-variable-pc(-240);\\n width: size-variable-pc(260);\\n }\\n\\n .chunk {\\n position: absolute;\\n margin-left: 100vw;\\n top: 100vh;\\n left: size-variable-pc(-774);\\n margin-top: size-variable-pc(-507);\\n img {\\n width: size-variable-pc(198);\\n border-radius: size-variable-pc(16);\\n }\\n }\\n }\\n }\\n }\\n\\n .local_nav {\\n position: fixed;\\n z-index: 1;\\n top: 0;\\n opacity: 0;\\n pointer-events: none;\\n transition: opacity 400ms, color 400ms;\\n transition-timing-function: $easeOutQuart;\\n\\n &.show {\\n opacity: 1;\\n pointer-events: inherit;\\n }\\n\\n &.white {\\n color: #fff;\\n .left_bt,\\n .right_bt {\\n svg {\\n path {\\n fill: #fff;\\n }\\n }\\n }\\n\\n .current {\\n .numerator {\\n }\\n\\n .denominator {\\n &:before {\\n color: #fff;\\n }\\n }\\n }\\n }\\n\\n .bar {\\n position: absolute;\\n width: 1px;\\n height: 100vh;\\n left: size-variable-pc(120);\\n background: #f1f4fa;\\n }\\n\\n .left_bt {\\n position: absolute;\\n left: size-variable-pc(54);\\n top: 50vh;\\n margin-top: size-variable-pc(-90);\\n cursor: pointer;\\n\\n &:hover {\\n animation: common_blink 0.13s linear;\\n animation-iteration-count: 3;\\n }\\n\\n svg {\\n width: size-variable-pc(10);\\n }\\n }\\n\\n .labels {\\n font-weight: 500;\\n font-size: size-variable-pc(14);\\n line-height: 1;\\n letter-spacing: 0.06em;\\n position: absolute;\\n top: 50vh;\\n left: size-variable-pc(59);\\n margin-top: size-variable-pc(-6);\\n\\n .label {\\n position: absolute;\\n visibility: hidden;\\n transform: translate3d(-50%, 0, 0) rotate(90deg);\\n white-space: nowrap;\\n top: 0;\\n\\n &.show {\\n visibility: visible;\\n span.item {\\n @for $i from 1 through 30 {\\n &:nth-of-type(#{$i}) {\\n $rand: random(1000) * 0.00015;\\n animation: common_blink\\n 0.13s\\n linear\\n $rand +\\n s;\\n animation-iteration-count: 3;\\n }\\n }\\n }\\n }\\n }\\n }\\n\\n .right_bt {\\n position: absolute;\\n left: size-variable-pc(54);\\n top: 50vh;\\n margin-top: size-variable-pc(56);\\n cursor: pointer;\\n\\n &:hover {\\n animation: common_blink 0.13s linear;\\n animation-iteration-count: 3;\\n }\\n\\n svg {\\n width: size-variable-pc(10);\\n }\\n }\\n\\n .current {\\n position: absolute;\\n top: 100vh;\\n margin-top: -52px;\\n left: size-variable-pc(3);\\n font-size: size-variable-pc(12);\\n line-height: 1;\\n letter-spacing: -0.01em;\\n .numerator {\\n margin-left: size-variable-pc(27px);\\n color: $KEY_COLOR1;\\n\\n &.blink {\\n animation: common_blink 0.1s linear, 0.1s;\\n animation-iteration-count: 3;\\n }\\n }\\n\\n .denominator {\\n &:before {\\n content: '/';\\n margin-left: size-variable-pc(14px);\\n margin-right: size-variable-pc(15px);\\n color: $BASE_COLOR2;\\n position: relative;\\n top: -1px;\\n }\\n }\\n }\\n }\\n\\n .section {\\n position: relative;\\n\\n &:last-of-type {\\n border-radius: 0 0 size-variable-pc(80) size-variable-pc(80);\\n padding-bottom: size-variable-pc(240);\\n }\\n\\n .section_child {\\n width: 80.5vw;\\n margin-left: size-variable-pc(200);\\n position: relative;\\n &:before {\\n content: '';\\n width: 100%;\\n height: 1px;\\n background-color: #626c76;\\n display: block;\\n }\\n }\\n\\n h2 {\\n position: relative;\\n\\n .sub_tit {\\n font-size: size-variable-pc(14);\\n letter-spacing: -0.01em;\\n position: relative;\\n line-height: 1;\\n top: 0;\\n display: block;\\n }\\n\\n .tit {\\n font-size: size-variable-pc(88);\\n margin-top: size-variable-pc(33);\\n letter-spacing: -0.025em;\\n line-height: 1.1;\\n display: block;\\n top: 0;\\n\\n span.item.space {\\n width: size-variable-pc(15);\\n }\\n\\n .sp {\\n display: none !important;\\n }\\n }\\n }\\n\\n .chunk {\\n position: relative;\\n margin-top: size-variable-pc(63);\\n }\\n\\n h3 {\\n font-size: size-variable-pc(40);\\n line-height: 1.1;\\n letter-spacing: -0.01em;\\n width: size-variable-pc(580);\\n margin-top: size-variable-pc(-120);\\n margin-left: size-variable-pc(40);\\n position: absolute;\\n color: $BASE_COLOR2;\\n }\\n\\n p.txt,\\n ul.txt {\\n font-size: size-variable-pc(16);\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n width: size-variable-pc(280);\\n color: $SUB_COLOR2;\\n }\\n\\n .imgs {\\n display: flex;\\n flex-direction: row-reverse;\\n justify-content: left;\\n }\\n\\n .pic2 {\\n border-radius: size-variable-pc(20);\\n overflow: hidden;\\n height: size-variable-pc(373);\\n img {\\n width: size-variable-pc(280);\\n }\\n }\\n\\n .pic3 {\\n border-radius: size-variable-pc(20);\\n overflow: hidden;\\n margin-right: size-variable-pc(40);\\n\\n img {\\n width: size-variable-pc(800);\\n }\\n }\\n\\n .btn {\\n margin-top: size-variable-pc(-74);\\n margin-left: size-variable-pc(840);\\n }\\n }\\n\\n .section1 {\\n padding-top: size-variable-pc(200);\\n padding-bottom: size-variable-pc(64);\\n\\n .section_child {\\n &:before {\\n display: none;\\n }\\n }\\n\\n p.txt {\\n margin-top: size-variable-pc(-201);\\n margin-left: size-variable-pc(840);\\n position: absolute;\\n }\\n }\\n\\n .section2 {\\n padding-top: size-variable-pc(170);\\n padding-bottom: size-variable-pc(45);\\n\\n .section_child {\\n &:before {\\n display: none;\\n }\\n }\\n\\n p.txt {\\n margin-top: size-variable-pc(-201);\\n margin-left: size-variable-pc(840);\\n position: absolute;\\n }\\n\\n .btn {\\n position: relative;\\n top: size-variable-pc(-41);\\n }\\n }\\n\\n .section3 {\\n padding-top: size-variable-pc(257);\\n\\n .section_child {\\n &:before {\\n display: none;\\n }\\n }\\n\\n .pic1 {\\n position: absolute;\\n top: size-variable-pc(302);\\n margin-left: size-variable-pc(204);\\n }\\n\\n .cont {\\n margin-top: size-variable-pc(60);\\n display: flex;\\n\\n .left {\\n width: 34.5%;\\n padding-top: size-variable-pc(17);\\n & > p.txt {\\n color: #fff;\\n font-size: size-variable-pc(24);\\n font-weight: 500;\\n margin-top: 0;\\n width: size-variable-pc(300);\\n line-height: 1.25;\\n letter-spacing: 0.01em;\\n }\\n\\n .btn {\\n margin-top: size-variable-pc(30);\\n margin-left: size-variable-pc(3);\\n }\\n }\\n\\n .right {\\n width: 65.5%;\\n }\\n }\\n\\n .documentation_update {\\n margin-top: size-variable-pc(18);\\n li {\\n a {\\n &:hover {\\n animation: common_blink 0.075s linear;\\n animation-iteration-count: 2;\\n }\\n }\\n }\\n }\\n\\n .release_notes {\\n font-size: size-variable-pc(14);\\n letter-spacing: -0.01em;\\n margin-top: size-variable-pc(25);\\n a {\\n &:hover {\\n span.item {\\n @for $i from 1 through 30 {\\n &:nth-of-type(#{$i}) {\\n $rand: random(1000) * 0.00015;\\n animation: common_blink\\n 0.13s\\n linear\\n $rand +\\n s;\\n animation-iteration-count: 2;\\n }\\n }\\n }\\n }\\n\\n &:after {\\n width: size-variable-pc(12);\\n height: size-variable-pc(12);\\n margin-left: size-variable-pc(5);\\n }\\n }\\n }\\n }\\n\\n .section4 {\\n padding-top: size-variable-pc(196px);\\n\\n h2 {\\n margin-top: size-variable-pc(265);\\n }\\n\\n .items {\\n display: flex;\\n flex-wrap: wrap;\\n\\n margin-top: size-variable-pc(80);\\n\\n .item {\\n margin-right: size-variable-pc(10);\\n margin-bottom: size-variable-pc(10);\\n border-radius: size-variable-pc(20);\\n overflow: hidden;\\n &:nth-of-type(4n) {\\n margin-right: 0;\\n }\\n\\n a {\\n width: size-variable-pc(282);\\n height: size-variable-pc(420);\\n position: relative;\\n display: block;\\n background-color: rgba(255, 255, 255, 0.04);\\n\\n &:hover {\\n animation: common_blink 0.075s linear;\\n animation-iteration-count: 2;\\n }\\n\\n &:after {\\n position: absolute;\\n right: size-variable-pc(11);\\n top: 100%;\\n margin-top: size-variable-pc(-45);\\n width: size-variable-pc(12);\\n height: size-variable-pc(12);\\n }\\n\\n .img {\\n width: 84%;\\n margin: 0 auto;\\n padding-top: size-variable-pc(36);\\n img {\\n width: size-variable-pc(235);\\n height: size-variable-pc(104);\\n }\\n }\\n\\n .txt {\\n line-height: 1.3;\\n font-size: size-variable-pc(14);\\n letter-spacing: -0.03em;\\n color: #fff;\\n opacity: 0.5;\\n width: 75%;\\n position: absolute;\\n bottom: size-variable-pc(66);\\n left: 8.5%;\\n }\\n }\\n }\\n }\\n }\\n\\n .section5 {\\n padding-top: size-variable-pc(231);\\n\\n h2 {\\n margin-top: size-variable-pc(201);\\n }\\n\\n .items {\\n display: inline-flex;\\n margin-top: size-variable-pc(70);\\n overflow: hidden;\\n\\n .item {\\n margin-right: size-variable-pc(40);\\n margin-right: px_to_vw($PC_BASE_W, 40);\\n width: size-variable-pc(360);\\n a {\\n &:after {\\n display: none;\\n }\\n\\n &:hover {\\n animation: common_blink_weak 0.075s linear;\\n animation-iteration-count: 2;\\n }\\n }\\n\\n img {\\n border-radius: size-variable-pc(20px);\\n width: size-variable-pc(360);\\n height: size-variable-pc(270);\\n object-fit: cover;\\n }\\n\\n .name {\\n font-weight: 600;\\n font-size: size-variable-pc(24);\\n margin-left: size-variable-pc(33);\\n margin-top: size-variable-pc(16);\\n letter-spacing: -0.01em;\\n &:after {\\n content: '';\\n background-image: url(/assets/img/common/blank_white.svg);\\n background-repeat: no-repeat;\\n width: size-variable-pc(12);\\n height: size-variable-pc(12);\\n display: inline-block;\\n position: relative;\\n top: size-variable-pc(-1);\\n margin-left: size-variable-pc(7);\\n }\\n }\\n\\n .txt {\\n font-size: size-variable-pc(14);\\n color: #fff;\\n margin-left: size-variable-pc(33);\\n margin-top: size-variable-pc(5);\\n width: size-variable-pc(294);\\n }\\n }\\n }\\n\\n .ui {\\n padding-bottom: size-variable-pc(47);\\n display: table;\\n margin: size-variable-pc(112) auto 0;\\n\\n .base {\\n //background-image: url(/assets/img/common/scroll-base.svg);\\n border-top: 1px dashed #fff;\\n width: 360px;\\n }\\n\\n .knob {\\n cursor: pointer;\\n &:before {\\n background-image: url(/assets/img/common/scroll-knob-circle.svg);\\n left: -22px;\\n width: 85px;\\n height: 85px;\\n }\\n\\n &:after {\\n background-image: url(/assets/img/common/scroll-knob.svg);\\n left: -22px;\\n width: 86px;\\n height: 86px;\\n }\\n }\\n }\\n }\\n\\n .section6 {\\n padding-top: size-variable-pc(231);\\n\\n .section_child {\\n width: 80.5vw;\\n margin-left: size-variable-pc(200);\\n position: relative;\\n &:before {\\n content: '';\\n width: 100%;\\n padding-top: size-variable-pc(200);\\n border-top: 1px solid #626c76;\\n background-color: initial;\\n display: block;\\n }\\n }\\n }\\n }\\n\\n main.top_ja {\\n .hero {\\n .contents {\\n .common_contents {\\n .txt {\\n font-size: size-variable-pc(14);\\n line-height: 1.75;\\n }\\n ul {\\n li {\\n .bod {\\n font-size: size-variable-pc(14);\\n line-height: 1.75;\\n }\\n }\\n }\\n }\\n\\n .contents4 {\\n h3 {\\n margin-top: size-variable-pc(-391);\\n }\\n\\n .txt {\\n margin-top: size-variable-pc(-268);\\n }\\n }\\n\\n .contents6 {\\n ul {\\n $cont6_li_def_margin_top: 120;\\n $cont6_li_1_height: 62;\\n $cont6_li_2_height: 86;\\n $cont6_li_3_height: 86;\\n $cont6_li_4_height: 62;\\n $cont6_li_5_height: 62;\\n $cont6_li_margin_bottom: 38;\\n\\n &.show2 {\\n li {\\n &:first-of-type {\\n margin-top: size-variable-pc(\\n $cont6_li_def_margin_top -\\n $cont6_li_1_height -\\n $cont6_li_margin_bottom\\n );\\n }\\n }\\n }\\n\\n &.show3 {\\n li {\\n &:first-of-type {\\n margin-top: size-variable-pc(\\n $cont6_li_def_margin_top -\\n $cont6_li_1_height -\\n $cont6_li_2_height -\\n $cont6_li_margin_bottom * 2\\n );\\n }\\n }\\n }\\n\\n &.show4 {\\n li {\\n &:first-of-type {\\n margin-top: size-variable-pc(\\n $cont6_li_def_margin_top -\\n $cont6_li_1_height -\\n $cont6_li_2_height -\\n $cont6_li_3_height -\\n $cont6_li_margin_bottom * 3\\n );\\n }\\n }\\n }\\n\\n &.show5 {\\n li {\\n &:first-of-type {\\n margin-top: size-variable-pc(\\n $cont6_li_def_margin_top -\\n $cont6_li_1_height -\\n $cont6_li_2_height -\\n $cont6_li_3_height -\\n $cont6_li_4_height -\\n $cont6_li_margin_bottom * 4\\n );\\n }\\n }\\n }\\n\\n &.show6 {\\n li {\\n &:first-of-type {\\n margin-top: size-variable-pc(\\n $cont6_li_def_margin_top -\\n $cont6_li_1_height -\\n $cont6_li_2_height -\\n $cont6_li_3_height -\\n $cont6_li_4_height -\\n $cont6_li_5_height -\\n $cont6_li_margin_bottom * 5\\n );\\n }\\n }\\n }\\n }\\n }\\n\\n .contents7 {\\n ul {\\n $cont7_li_def_margin_top: 120;\\n $cont7_li_1_height: 61;\\n $cont7_li_2_height: 86;\\n $cont7_li_3_height: 86;\\n $cont7_li_margin_bottom: 39;\\n\\n &.show2 {\\n li {\\n &:first-of-type {\\n margin-top: size-variable-pc(\\n $cont7_li_def_margin_top -\\n $cont7_li_1_height -\\n $cont7_li_margin_bottom\\n );\\n }\\n }\\n }\\n\\n &.show3 {\\n li {\\n &:first-of-type {\\n margin-top: size-variable-pc(\\n $cont7_li_def_margin_top -\\n $cont7_li_1_height -\\n $cont7_li_2_height -\\n $cont7_li_margin_bottom * 2\\n );\\n }\\n }\\n }\\n\\n li {\\n margin-bottom: size-variable-pc(\\n $cont7_li_margin_bottom\\n );\\n &:first-of-type {\\n margin-top: size-variable-pc(\\n $cont7_li_def_margin_top\\n );\\n }\\n }\\n }\\n }\\n }\\n }\\n\\n .section {\\n p.txt {\\n font-size: size-variable-pc(14);\\n line-height: 1.75;\\n }\\n }\\n\\n .section1,\\n .section2 {\\n p.txt {\\n letter-spacing: -0.04em;\\n }\\n }\\n\\n .section2 {\\n .btn {\\n top: size-variable-pc(-31);\\n }\\n }\\n\\n .section4 {\\n .items {\\n .item {\\n a {\\n .txt {\\n font-size: size-variable-pc(11);\\n line-height: 1.5;\\n }\\n }\\n }\\n }\\n }\\n\\n .section5 {\\n .items {\\n .item {\\n a {\\n .txt {\\n font-size: size-variable-pc(11);\\n line-height: 1.5;\\n }\\n }\\n }\\n }\\n }\\n }\\n}\\n\\n//For TABLET/SP LAYOUT\\n@media screen and (max-width: ($BP - 1) + px) {\\n main.top {\\n .hero {\\n .scroll {\\n margin-left: size-variable-sp(20px);\\n margin-top: size-variable-sp(-42);\\n font-size: size-variable-sp(12);\\n\\n &:before {\\n width: size-variable-sp(10);\\n height: size-variable-sp(12);\\n margin-right: size-variable-sp(7);\\n top: size-variable-sp(2);\\n }\\n }\\n\\n .skip {\\n margin-top: size-variable-sp(-41);\\n margin-right: size-variable-sp(30px);\\n font-size: size-variable-sp(12);\\n font-weight: 500;\\n letter-spacing: 0.01em;\\n left: size-variable-sp(20);\\n\\n &:after {\\n content: '';\\n display: block;\\n width: 100%;\\n height: 1px;\\n background-color: $BASE_COLOR2;\\n margin-top: size-variable-sp(-4);\\n }\\n }\\n\\n .create_account {\\n position: absolute;\\n bottom: size-variable-sp(61);\\n width: 100%;\\n\\n a {\\n background: linear-gradient(\\n 225.93deg,\\n #073a86 0%,\\n #2d849a 101.67%\\n );\\n box-shadow: 0px 2px 4px rgba(31, 41, 51, 0.16);\\n border-radius: size-variable-sp(10);\\n padding: size-variable-sp(11) size-variable-sp(22)\\n size-variable-sp(15) size-variable-sp(26);\\n font-weight: 600;\\n font-size: size-variable-sp(10);\\n line-height: 1;\\n letter-spacing: 0.02em;\\n display: flex;\\n align-items: center;\\n right: size-variable-sp(20);\\n position: absolute;\\n &:before {\\n content: '';\\n background-image: url(/assets/img/top/icon-account.svg);\\n background-size: contain;\\n background-repeat: no-repeat;\\n width: size-variable-sp(16);\\n height: size-variable-sp(16);\\n margin-right: size-variable-sp(5);\\n position: relative;\\n top: size-variable-sp(3);\\n left: size-variable-sp(1);\\n display: table-cell;\\n }\\n\\n span {\\n position: relative;\\n top: size-variable-sp(3);\\n &.space {\\n width: size-variable-sp(3);\\n }\\n }\\n\\n &:after {\\n left: size-variable-sp(-1);\\n top: size-variable-sp(2);\\n width: size-variable-sp(13);\\n height: size-variable-sp(13);\\n }\\n }\\n }\\n\\n .contents {\\n .common_contents {\\n h3 {\\n font-size: size-variable-sp(48);\\n line-height: 1;\\n position: relative;\\n letter-spacing: -0.01em;\\n\\n .span_chunk2 {\\n font-size: size-variable-sp(12);\\n }\\n\\n .pc {\\n display: none !important;\\n }\\n\\n span.item.space {\\n width: size-variable-sp(11);\\n }\\n }\\n\\n .txt {\\n font-size: size-variable-sp(14);\\n font-weight: 400;\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n }\\n\\n .btn {\\n a {\\n &[target='_blank'] {\\n &:before {\\n background-image: url(/assets/img/common/icon-link2-blank-sp.svg);\\n }\\n }\\n }\\n }\\n\\n ul {\\n position: absolute;\\n pointer-events: auto;\\n top: 100vh;\\n left: size-variable-sp(21);\\n margin-top: size-variable-sp(-319);\\n background-image: linear-gradient(\\n 0deg,\\n rgba(33, 49, 67, 0) 0%,\\n rgba(33, 49, 67, 0) 15%,\\n rgba(33, 49, 67, 1) 30%,\\n rgba(33, 49, 67, 1) 80%,\\n rgba(33, 49, 67, 0) 95%,\\n rgba(33, 49, 67, 0) 100%\\n );\\n\\n background-repeat: no-repeat;\\n background-clip: text;\\n -webkit-background-clip: text;\\n color: transparent;\\n height: size-variable-sp(300);\\n\\n li {\\n width: size-variable-sp(270);\\n\\n &:first-of-type {\\n transition: margin-top 650ms;\\n transition-timing-function: $easeInOutQuart;\\n }\\n\\n .tit {\\n display: flex;\\n font-size: size-variable-sp(14);\\n font-weight: 500;\\n letter-spacing: -0.01em;\\n .num {\\n font-weight: 600;\\n letter-spacing: 0.02em;\\n line-height: 1.3;\\n }\\n\\n h4 {\\n margin-left: size-variable-sp(14);\\n line-height: 1.3;\\n }\\n }\\n\\n .bod {\\n font-size: size-variable-sp(14);\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n margin-top: size-variable-sp(12);\\n }\\n }\\n }\\n }\\n\\n .contents1 {\\n left: size-variable-sp(39);\\n\\n h1 {\\n position: relative;\\n margin-top: size-variable-sp(99);\\n line-height: 0.9;\\n\\n & > span {\\n span {\\n display: flex;\\n }\\n }\\n\\n span.span_chunk {\\n font-size: size-variable-sp(72);\\n letter-spacing: -0.02em;\\n justify-content: flex-end;\\n .space {\\n width: size-variable-sp(14);\\n }\\n }\\n\\n span.span_chunk2 {\\n font-size: size-variable-sp(24);\\n line-height: 1;\\n .space {\\n width: size-variable-sp(6);\\n }\\n }\\n\\n span.chunk1 {\\n margin-top: size-variable-sp(0);\\n }\\n\\n span.chunk3 {\\n margin-top: size-variable-sp(12);\\n }\\n\\n span.chunk4 {\\n margin-top: size-variable-sp(2);\\n }\\n\\n span.chunk5 {\\n margin-top: size-variable-sp(3);\\n }\\n }\\n\\n .txt {\\n font-size: size-variable-sp(12);\\n line-height: 1.2;\\n font-weight: 900;\\n letter-spacing: 0.05em;\\n margin-top: size-variable-sp(23);\\n }\\n }\\n\\n .contents2 {\\n h2 {\\n font-size: size-variable-sp(48);\\n line-height: 1.1;\\n position: relative;\\n margin-left: size-variable-sp(20);\\n margin-top: size-variable-sp(110);\\n\\n .span_chunk {\\n letter-spacing: -0.01em;\\n }\\n\\n .span_chunk2 {\\n font-size: size-variable-sp(12);\\n letter-spacing: 0.01em;\\n }\\n\\n span.item.space {\\n width: size-variable-sp(10);\\n }\\n\\n span.chunk1 {\\n position: absolute;\\n margin-top: size-variable-sp(33);\\n }\\n\\n span.chunk2 {\\n margin-left: size-variable-sp(60);\\n }\\n\\n span.chunk3 {\\n line-height: 0.9;\\n margin-left: size-variable-sp(93);\\n }\\n\\n span.chunk4 {\\n margin-left: size-variable-sp(29);\\n }\\n }\\n\\n .txt {\\n margin-left: size-variable-sp(155);\\n margin-top: size-variable-sp(12);\\n width: size-variable-sp(195);\\n }\\n }\\n\\n .contents3 {\\n h3 {\\n margin-left: size-variable-sp(20);\\n top: 100vh;\\n margin-top: size-variable-sp(-222);\\n\\n .chunk1 {\\n margin-left: size-variable-sp(88);\\n }\\n\\n .chunk2 {\\n position: absolute;\\n //margin-top: size-variable-sp(21);\\n }\\n\\n .chunk3 {\\n margin-left: size-variable-sp(49);\\n }\\n }\\n\\n .txt {\\n position: absolute;\\n margin-left: size-variable-sp(20);\\n top: 100vh;\\n margin-top: size-variable-sp(-110);\\n width: size-variable-sp(190);\\n }\\n\\n .btn {\\n display: none;\\n }\\n }\\n\\n .contents4 {\\n h3 {\\n margin-left: size-variable-sp(20);\\n top: 100vh;\\n margin-top: size-variable-sp(-192);\\n\\n .chunk2 {\\n position: absolute;\\n margin-top: size-variable-sp(21);\\n }\\n\\n .chunk3 {\\n margin-left: size-variable-sp(49);\\n }\\n }\\n\\n .txt {\\n position: absolute;\\n margin-left: size-variable-sp(20);\\n top: 100vh;\\n margin-top: size-variable-sp(-128);\\n width: size-variable-sp(210);\\n }\\n\\n .btn {\\n display: none;\\n }\\n }\\n\\n .contents5 {\\n h3 {\\n margin-left: size-variable-sp(20);\\n top: 100vh;\\n margin-top: size-variable-sp(-507);\\n .chunk2 {\\n position: absolute;\\n margin-top: size-variable-sp(0);\\n }\\n\\n .chunk3 {\\n margin-left: size-variable-sp(49);\\n }\\n }\\n\\n .txt {\\n position: absolute;\\n margin-left: size-variable-sp(20);\\n top: 100vh;\\n margin-top: size-variable-sp(-395);\\n width: size-variable-sp(200);\\n }\\n\\n .btn {\\n display: none;\\n }\\n }\\n\\n .contents6 {\\n width: 100vw;\\n height: 100vh;\\n overflow: hidden;\\n h3 {\\n margin-left: size-variable-sp(20);\\n top: 100vh;\\n margin-top: size-variable-sp(100);\\n\\n .chunk2 {\\n position: absolute;\\n margin-left: size-variable-sp(245);\\n margin-top: size-variable-sp(-31);\\n }\\n\\n .chunk3 {\\n position: absolute;\\n margin-left: size-variable-sp(208);\\n margin-top: size-variable-sp(-19);\\n }\\n\\n .chunk4 {\\n position: absolute;\\n margin-top: size-variable-sp(21);\\n }\\n\\n .chunk5 {\\n margin-left: size-variable-sp(48);\\n }\\n }\\n\\n ul {\\n $cont6_li_def_margin_top: 120;\\n $cont6_li_1_height: 67;\\n $cont6_li_2_height: 67;\\n $cont6_li_3_height: 67;\\n $cont6_li_4_height: 48;\\n $cont6_li_5_height: 47;\\n $cont6_li_margin_bottom: 31;\\n\\n &.show2 {\\n li {\\n &:first-of-type {\\n margin-top: size-variable-sp(\\n $cont6_li_def_margin_top -\\n $cont6_li_1_height -\\n $cont6_li_margin_bottom\\n );\\n }\\n }\\n }\\n\\n &.show3 {\\n li {\\n &:first-of-type {\\n margin-top: size-variable-sp(\\n $cont6_li_def_margin_top -\\n $cont6_li_1_height -\\n $cont6_li_2_height -\\n $cont6_li_margin_bottom * 2\\n );\\n }\\n }\\n }\\n\\n &.show4 {\\n li {\\n &:first-of-type {\\n margin-top: size-variable-sp(\\n $cont6_li_def_margin_top -\\n $cont6_li_1_height -\\n $cont6_li_2_height -\\n $cont6_li_3_height -\\n $cont6_li_margin_bottom * 3\\n );\\n }\\n }\\n }\\n\\n &.show5 {\\n li {\\n &:first-of-type {\\n margin-top: size-variable-sp(\\n $cont6_li_def_margin_top -\\n $cont6_li_1_height -\\n $cont6_li_2_height -\\n $cont6_li_3_height -\\n $cont6_li_4_height -\\n $cont6_li_margin_bottom * 4\\n );\\n }\\n }\\n }\\n\\n &.show6 {\\n li {\\n &:first-of-type {\\n margin-top: size-variable-sp(\\n $cont6_li_def_margin_top -\\n $cont6_li_1_height -\\n $cont6_li_2_height -\\n $cont6_li_3_height -\\n $cont6_li_4_height -\\n $cont6_li_5_height -\\n $cont6_li_margin_bottom * 5\\n );\\n }\\n }\\n }\\n\\n li {\\n margin-bottom: size-variable-sp(\\n $cont6_li_margin_bottom\\n );\\n &:first-of-type {\\n margin-top: size-variable-sp(\\n $cont6_li_def_margin_top\\n );\\n }\\n }\\n }\\n\\n .txt {\\n position: absolute;\\n margin-left: size-variable-sp(20);\\n //top: 100vh;\\n //margin-top: size-variable-sp(-463);\\n margin-top: size-variable-sp(166);\\n width: size-variable-sp(200);\\n }\\n\\n .btn {\\n display: none;\\n }\\n }\\n\\n .contents7 {\\n width: 100vw;\\n height: 100vh;\\n overflow: hidden;\\n h3 {\\n margin-left: size-variable-sp(20);\\n top: 100vh;\\n margin-top: size-variable-sp(100);\\n\\n .chunk2 {\\n margin-left: size-variable-sp(120);\\n }\\n }\\n\\n .txt {\\n position: absolute;\\n margin-left: size-variable-sp(30);\\n top: 100vh;\\n margin-top: size-variable-sp(-247);\\n width: size-variable-sp(250);\\n }\\n\\n ul {\\n $cont7_li_def_margin_top: 120;\\n $cont7_li_1_height: 48;\\n $cont7_li_2_height: 48;\\n $cont7_li_3_height: 48;\\n $cont7_li_margin_bottom: 31;\\n\\n &.show2 {\\n li {\\n &:first-of-type {\\n margin-top: size-variable-sp(\\n $cont7_li_def_margin_top -\\n $cont7_li_1_height -\\n $cont7_li_margin_bottom\\n );\\n }\\n }\\n }\\n\\n &.show3 {\\n li {\\n &:first-of-type {\\n margin-top: size-variable-sp(\\n $cont7_li_def_margin_top -\\n $cont7_li_1_height -\\n $cont7_li_2_height -\\n $cont7_li_margin_bottom * 2\\n );\\n }\\n }\\n }\\n\\n li {\\n margin-bottom: size-variable-sp(\\n $cont7_li_margin_bottom\\n );\\n &:first-of-type {\\n margin-top: size-variable-sp(\\n $cont7_li_def_margin_top\\n );\\n }\\n }\\n }\\n\\n .btn {\\n display: none;\\n }\\n }\\n\\n .contents8 {\\n width: 100vw;\\n .video {\\n margin: size-variable-sp(85) auto 0;\\n width: size-variable-sp(336);\\n height: size-variable-sp(231);\\n -webkit-clip-path: url(#svgPath);\\n clip-path: url(#svgPath);\\n video {\\n width: 100%;\\n height: 100%;\\n object-fit: cover;\\n }\\n }\\n\\n svg {\\n //position: absolute;\\n //margin: size-variable-sp(85) auto 0;\\n //width: size-variable-sp(336);\\n //height: size-variable-sp(231);\\n\\n $scale_x_sp: 1 / 880;\\n $scale_y_sp: 1 / 480;\\n\\n path {\\n transform: scale($scale_x_sp, $scale_y_sp);\\n }\\n }\\n\\n h3 {\\n position: absolute;\\n margin-left: size-variable-sp(20);\\n top: 100vh;\\n margin-top: size-variable-sp(-246);\\n }\\n\\n .txt {\\n position: absolute;\\n margin-left: size-variable-sp(20);\\n top: 100vh;\\n margin-top: size-variable-sp(-181);\\n width: size-variable-sp(210);\\n }\\n\\n .btn {\\n position: absolute;\\n margin-left: size-variable-sp(20);\\n top: 100vh;\\n margin-top: size-variable-sp(-114);\\n width: size-variable-sp(280);\\n }\\n\\n .chunk {\\n position: absolute;\\n margin-top: 100vh;\\n top: size-variable-sp(-218);\\n margin-left: size-variable-sp(30);\\n\\n img {\\n width: size-variable-sp(312);\\n border-radius: size-variable-sp(16);\\n }\\n }\\n }\\n\\n .contents9 {\\n width: 100vw;\\n .video {\\n margin: size-variable-sp(85) auto 0;\\n width: size-variable-sp(280);\\n height: size-variable-sp(280);\\n -webkit-clip-path: url(#svgPath2);\\n clip-path: url(#svgPath2);\\n video {\\n width: 100%;\\n height: 100%;\\n object-fit: cover;\\n }\\n }\\n\\n svg {\\n //position: absolute;\\n //margin: size-variable-sp(85) auto 0;\\n //width: size-variable-sp(336);\\n //height: size-variable-sp(231);\\n\\n $scale_x_sp: 1 / 640;\\n $scale_y_sp: 1 / 640;\\n\\n path {\\n transform: scale($scale_x_sp, $scale_y_sp);\\n }\\n }\\n\\n h3 {\\n position: absolute;\\n margin-left: size-variable-sp(20);\\n top: 100vh;\\n margin-top: size-variable-sp(-268);\\n }\\n\\n .txt {\\n position: absolute;\\n margin-left: size-variable-sp(20);\\n top: 100vh;\\n margin-top: size-variable-sp(-200);\\n width: size-variable-sp(330);\\n }\\n\\n .btn {\\n position: absolute;\\n margin-left: size-variable-sp(20);\\n top: 100vh;\\n margin-top: size-variable-sp(-114);\\n width: size-variable-sp(280);\\n }\\n\\n .chunk {\\n position: absolute;\\n margin-top: 100vh;\\n top: size-variable-sp(-218);\\n margin-left: size-variable-sp(30);\\n\\n img {\\n width: size-variable-sp(312);\\n border-radius: size-variable-sp(16);\\n }\\n }\\n }\\n }\\n }\\n\\n .local_nav {\\n display: none;\\n }\\n\\n .section {\\n position: relative;\\n\\n &:last-of-type {\\n border-radius: 0 0 size-variable-sp(10) size-variable-sp(10);\\n padding-bottom: size-variable-sp(70);\\n }\\n\\n &:before {\\n content: '';\\n width: 100%;\\n height: 1px;\\n background-color: #fff;\\n opacity: 0.15;\\n display: block;\\n }\\n\\n .section_child {\\n width: 89.5vw;\\n margin: 0 auto;\\n }\\n\\n h2 {\\n line-height: 1.1;\\n\\n .sub_tit {\\n font-size: size-variable-sp(10);\\n letter-spacing: 0.02em;\\n }\\n\\n .tit {\\n display: block;\\n font-size: size-variable-sp(36);\\n letter-spacing: -0.01em;\\n margin-top: size-variable-sp(24);\\n span.item.space {\\n width: size-variable-sp(9);\\n }\\n\\n .pc {\\n display: none !important;\\n }\\n }\\n }\\n\\n .chunk {\\n position: relative;\\n margin-top: size-variable-sp(30);\\n }\\n\\n h3 {\\n font-size: size-variable-sp(24);\\n line-height: 1.2;\\n letter-spacing: -0.01em;\\n }\\n\\n p.txt,\\n ul.txt {\\n font-size: size-variable-sp(14);\\n line-height: 1.3;\\n letter-spacing: -0.01em;\\n margin-top: size-variable-sp(22);\\n }\\n\\n .imgs {\\n display: flex;\\n flex-direction: column;\\n }\\n\\n .pic2 {\\n overflow: hidden;\\n border-radius: size-variable-sp(10);\\n margin-left: -2.5%;\\n width: 105%;\\n img {\\n width: 100%;\\n }\\n }\\n\\n .pic3 {\\n overflow: hidden;\\n border-radius: size-variable-sp(10);\\n position: relative;\\n margin-top: size-variable-sp(13);\\n margin-left: -2.5%;\\n width: 105%;\\n img {\\n width: 100%;\\n }\\n }\\n }\\n\\n .section1 {\\n padding-top: size-variable-sp(102);\\n\\n &:before {\\n display: none;\\n }\\n\\n h3 {\\n position: absolute;\\n color: $BASE_COLOR2;\\n margin-top: size-variable-sp(-200);\\n margin-left: size-variable-sp(21);\\n }\\n\\n p.txt {\\n color: $BASE_COLOR2;\\n position: absolute;\\n margin-top: size-variable-sp(-132);\\n margin-left: size-variable-sp(21);\\n width: size-variable-sp(220);\\n }\\n\\n .btn {\\n margin-top: size-variable-sp(-67);\\n position: absolute;\\n margin-left: size-variable-sp(275);\\n a:before {\\n background-image: url(/assets/img/common/icon-link2.svg);\\n }\\n\\n span {\\n display: none;\\n }\\n }\\n }\\n\\n .section2 {\\n padding-top: size-variable-sp(105);\\n\\n &:before {\\n display: none;\\n }\\n\\n h3 {\\n position: absolute;\\n color: $BASE_COLOR2;\\n margin-top: size-variable-sp(-165);\\n margin-left: size-variable-sp(21);\\n }\\n\\n p.txt {\\n color: $BASE_COLOR2;\\n position: absolute;\\n margin-top: size-variable-sp(-95);\\n margin-left: size-variable-sp(21);\\n width: size-variable-sp(200);\\n }\\n\\n .btn {\\n margin-top: size-variable-sp(-67);\\n position: absolute;\\n margin-left: size-variable-sp(275);\\n a:before {\\n background-image: url(/assets/img/common/icon-link2.svg);\\n }\\n\\n span {\\n display: none;\\n }\\n }\\n\\n .btn {\\n margin-top: size-variable-sp(-67);\\n position: absolute;\\n margin-left: size-variable-sp(275);\\n a:before {\\n background-image: url(/assets/img/common/icon-link2.svg);\\n }\\n\\n span {\\n display: none;\\n }\\n }\\n }\\n\\n .section3 {\\n padding-top: size-variable-sp(104);\\n\\n &:before {\\n display: none;\\n }\\n\\n h2 {\\n width: 88vw;\\n }\\n\\n .btn {\\n margin-top: size-variable-sp(31);\\n }\\n .cont {\\n .left {\\n & > p.txt {\\n color: #fff;\\n font-size: size-variable-sp(20);\\n font-weight: 500;\\n width: size-variable-sp(270);\\n line-height: 1.2;\\n letter-spacing: 0.02em;\\n margin-left: size-variable-sp(4);\\n }\\n }\\n }\\n\\n p.txt {\\n margin-top: size-variable-sp(48);\\n }\\n\\n .documentation_update {\\n margin-top: size-variable-sp(47);\\n li {\\n p.txt {\\n margin-top: size-variable-sp(32);\\n font-weight: 600;\\n }\\n }\\n }\\n\\n .release_notes {\\n font-size: size-variable-sp(12);\\n letter-spacing: 0.04em;\\n margin-top: size-variable-sp(31);\\n a {\\n &:after {\\n margin-left: size-variable-sp(5);\\n }\\n }\\n }\\n }\\n\\n .section4 {\\n padding-top: size-variable-sp(97);\\n\\n h2 {\\n margin-top: size-variable-sp(82);\\n .tit {\\n }\\n }\\n\\n .items {\\n display: flex;\\n flex-wrap: wrap;\\n margin-top: size-variable-sp(48);\\n\\n .item {\\n margin-bottom: size-variable-sp(10);\\n overflow: hidden;\\n width: 48%;\\n border-radius: size-variable-sp(10);\\n &:nth-of-type(2n + 1) {\\n margin-right: size-variable-sp(10);\\n }\\n a {\\n width: 100%;\\n height: size-variable-sp(242);\\n position: relative;\\n display: block;\\n background-color: rgba(255, 255, 255, 0.04);\\n\\n &:after {\\n position: absolute;\\n right: size-variable-sp(8);\\n top: 100%;\\n margin-top: size-variable-sp(-39);\\n }\\n }\\n\\n .img {\\n width: 86%;\\n margin: 0 auto;\\n padding-top: size-variable-sp(23);\\n img {\\n width: 100%;\\n height: auto;\\n }\\n }\\n\\n .txt {\\n line-height: 1.3;\\n font-size: size-variable-sp(12);\\n color: #fff;\\n opacity: 0.5;\\n width: 82%;\\n position: absolute;\\n bottom: size-variable-sp(51);\\n left: 9%;\\n }\\n }\\n }\\n }\\n\\n .section5 {\\n padding-top: size-variable-sp(88);\\n\\n h2 {\\n margin-top: size-variable-sp(82);\\n }\\n\\n .items {\\n display: inline-flex;\\n margin-top: size-variable-sp(19);\\n overflow: hidden;\\n\\n .item {\\n margin-right: px_to_vw($SP_BASE_W, 20);\\n\\n a {\\n &:after {\\n display: none;\\n }\\n }\\n\\n img {\\n border-radius: size-variable-sp(10);\\n width: size-variable-sp(236);\\n height: size-variable-sp(150);\\n object-fit: cover;\\n }\\n\\n .name {\\n font-weight: 600;\\n font-size: size-variable-sp(24);\\n line-height: 1.2;\\n margin-left: size-variable-sp(23);\\n margin-top: size-variable-sp(18);\\n letter-spacing: 0.02em;\\n &:after {\\n content: '';\\n background-image: url(/assets/img/common/blank_white.svg);\\n background-size: cover;\\n width: size-variable-sp(12);\\n height: size-variable-sp(12);\\n display: inline-block;\\n position: relative;\\n top: size-variable-sp(2);\\n margin-left: size-variable-sp(6);\\n }\\n }\\n\\n .txt {\\n font-size: size-variable-sp(12);\\n line-height: 1.3;\\n color: #fff;\\n opacity: 0.5;\\n margin-left: size-variable-sp(23);\\n margin-top: size-variable-sp(8);\\n }\\n }\\n }\\n\\n .ui {\\n padding-bottom: size-variable-sp(27);\\n display: table;\\n margin: size-variable-sp(90) auto 0;\\n\\n .base {\\n //background-image: url(/assets/img/common/scroll-base-sp.svg);\\n border-top: 1px dashed #fff;\\n width: 315px;\\n }\\n\\n .knob {\\n top: -25px;\\n &:before {\\n background-image: url(/assets/img/common/scroll-knob-circle-sp.svg);\\n left: -5px;\\n width: 49px;\\n height: 49px;\\n }\\n\\n &:after {\\n background-image: url(/assets/img/common/scroll-knob-sp.svg);\\n left: -5px;\\n width: 50px;\\n height: 50px;\\n }\\n }\\n }\\n }\\n\\n .section6 {\\n padding-top: size-variable-sp(97);\\n\\n .section_child {\\n position: relative;\\n padding-bottom: size-variable-sp(40);\\n &:before {\\n content: '';\\n width: 100%;\\n padding-top: size-variable-sp(80);\\n display: block;\\n }\\n }\\n }\\n }\\n\\n main.top_ja {\\n .hero {\\n .contents {\\n .common_contents {\\n .txt {\\n font-size: size-variable-sp(12);\\n line-height: 1.75;\\n }\\n\\n ul {\\n li {\\n .bod {\\n font-size: size-variable-sp(12);\\n line-height: 1.75;\\n }\\n }\\n }\\n }\\n\\n .contents3 {\\n h3 {\\n margin-top: size-variable-sp(-249);\\n }\\n\\n .txt {\\n margin-top: size-variable-sp(-137);\\n }\\n }\\n\\n .contents4 {\\n h3 {\\n margin-top: size-variable-sp(-243);\\n }\\n\\n .txt {\\n margin-top: size-variable-sp(-179);\\n }\\n }\\n }\\n }\\n\\n .section {\\n p.txt {\\n font-size: size-variable-sp(12);\\n line-height: 1.75;\\n }\\n }\\n\\n .section2 {\\n h3 {\\n margin-top: size-variable-sp(-177);\\n }\\n\\n p.txt {\\n margin-top: size-variable-sp(-107);\\n }\\n }\\n\\n .section4 {\\n .items {\\n .item {\\n a {\\n .txt {\\n font-size: size-variable-sp(10);\\n line-height: 1.3;\\n }\\n }\\n }\\n }\\n }\\n\\n .section5 {\\n .items {\\n .item {\\n a {\\n .txt {\\n font-size: size-variable-sp(10);\\n line-height: 1.3;\\n }\\n }\\n }\\n }\\n }\\n }\\n}\\n\",\"$easeInSine: cubic-bezier(0.47, 0, 0.745, 0.715);\\n$easeOutSine: cubic-bezier(0.39, 0.575, 0.565, 1);\\n$easeInOutSine: cubic-bezier(0.445, 0.05, 0.55, 0.95);\\n$easeInQuad: cubic-bezier(0.55, 0.085, 0.68, 0.53);\\n$easeOutQuad: cubic-bezier(0.25, 0.46, 0.45, 0.94);\\n$easeInOutQuad: cubic-bezier(0.455, 0.03, 0.515, 0.955);\\n\\n$easeInCubic: cubic-bezier(0.55, 0.055, 0.675, 0.19);\\n$easeOutCubic: cubic-bezier(0.215, 0.61, 0.355, 1);\\n$easeInOutCubic: cubic-bezier(0.645, 0.045, 0.355, 1);\\n$easeInQuart: cubic-bezier(0.895, 0.03, 0.685, 0.22);\\n$easeOutQuart: cubic-bezier(0.165, 0.84, 0.44, 1);\\n$easeInOutQuart: cubic-bezier(0.77, 0, 0.175, 1);\\n\\n$easeInQuint: cubic-bezier(0.755, 0.05, 0.855, 0.06);\\n$easeOutQuint: cubic-bezier(0.23, 1, 0.32, 1);\\n$easeInOutQuint: cubic-bezier(0.86, 0, 0.07, 1);\\n$easeInExpo: cubic-bezier(0.95, 0.05, 0.795, 0.035);\\n$easeOutExpo: cubic-bezier(0.19, 1, 0.22, 1);\\n$easeInOutExpo: cubic-bezier(1, 0, 0, 1);\\n\\n$easeInCirc: cubic-bezier(0.6, 0.04, 0.98, 0.335);\\n$easeOutCirc: cubic-bezier(0.075, 0.82, 0.165, 1);\\n$easeInOutCirc: cubic-bezier(0.785, 0.135, 0.15, 0.86);\\n$easeInBack: cubic-bezier(0.6, -0.28, 0.735, 0.045);\\n$easeOutBack: cubic-bezier(0.175, 0.885, 0.32, 1.275);\\n$easeInOutBack: cubic-bezier(0.68, -0.55, 0.265, 1.55);\\n\\n$pi: 3.1415926536;\\n$PC_BASE_W: 1440;\\n$SP_BASE_W: 375;\\n\\n$BP: 768;\\n\\n$BASE_COLOR1: #171C21;\\n$BASE_COLOR2: #213143;\\n$KEY_COLOR1: #3098A6;\\n$SUB_COLOR1: #5CB4C0;\\n$SUB_COLOR2: #BDC1C6;\\n$BG_COLOR: #FBFBFB;\\n$BG_COLOR_ALPHA0: #FBFBFB00;\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\nvar stylesInDOM = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n\n return updater;\n}\n\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n\n stylesInDOM.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n/* istanbul ignore next */\n\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n}\n/* istanbul ignore next */\n\n\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n}\n\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\n\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\n\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n\n var needLayer = typeof obj.layer !== \"undefined\";\n\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n\n css += obj.css;\n\n if (needLayer) {\n css += \"}\";\n }\n\n if (obj.media) {\n css += \"}\";\n }\n\n if (obj.supports) {\n css += \"}\";\n }\n\n var sourceMap = obj.sourceMap;\n\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n options.styleTagTransform(css, styleElement, options.options);\n}\n\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n\n styleElement.parentNode.removeChild(styleElement);\n}\n/* istanbul ignore next */\n\n\nfunction domAPI(options) {\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\n\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n\n styleElement.appendChild(document.createTextNode(css));\n }\n}\n\nmodule.exports = styleTagTransform;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.nc = undefined;","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[0].use[3]!./common.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[0].use[3]!./common.scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[0].use[3]!./top.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[0].use[3]!./top.scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[0].use[3]!./subpage.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[0].use[3]!./subpage.scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[0].use[3]!./services.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[0].use[3]!./services.scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[0].use[3]!./reference_design.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[0].use[3]!./reference_design.scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[0].use[3]!./contact.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[0].use[3]!./contact.scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[0].use[3]!./product_brochure.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[0].use[3]!./product_brochure.scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[0].use[3]!./cookie_policy.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[0].use[3]!./cookie_policy.scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n//-----------------\n//UserAgent\n//------------------\nexport var ua = {};\n\nvar userAgent = window.navigator.userAgent.toLowerCase();\nvar appVersion = window.navigator.appVersion.toLowerCase();\n\nua.isTablet = (function(){\n var u = userAgent;\n\n return (u.indexOf(\"windows\") != -1 && u.indexOf(\"touch\") != -1)\n || u.indexOf(\"ipad\") != -1\n || (u.indexOf(\"android\") != -1 && u.indexOf(\"mobile\") == -1)\n || (u.indexOf(\"firefox\") != -1 && u.indexOf(\"tablet\") != -1)\n || u.indexOf(\"kindle\") != -1\n || u.indexOf(\"silk\") != -1\n || u.indexOf(\"playbook\") != -1;\n})();\n\nua.isMobile = (function(){\n var u = userAgent;\n\n return (u.indexOf(\"windows\") != -1 && u.indexOf(\"phone\") != -1)\n || u.indexOf(\"iphone\") != -1\n || u.indexOf(\"ipod\") != -1\n || (u.indexOf(\"android\") != -1 && u.indexOf(\"mobile\") != -1)\n || (u.indexOf(\"firefox\") != -1 && u.indexOf(\"mobile\") != -1)\n || u.indexOf(\"blackberry\") != -1;\n})();\n\nua.isSmartPhone = (function(){\n var media = [\"iphone\",\"ipod\",\"ipad\",\"android\",\"dream\",\"cupcake\",\"blackberry9500\",\"blackberry9530\",\"blackberry9520\",\"blackberry9550\",\"blackberry9800\",\"webos\",\"incognito\",\"webmate\"];\n var pattern = new RegExp(media.join(\"|\"),\"i\");\n return pattern.test(userAgent);\n})();\n\nua.isAndroid = (function(){\n var pattern = new RegExp(\"android\",\"i\");\n return pattern.test(userAgent);\n})();\n\n\nua.isiPad = (function(){\n return userAgent.indexOf('ipad') > -1 || userAgent.indexOf('macintosh') > -1 && 'ontouchend' in document;\n})();\n\nua.isiPhone = (function(){\n var pattern = new RegExp(\"iphone\",\"i\");\n return pattern.test(userAgent);\n})();\n\nua.isiOS = (function(){\n return (ua.isiPad || ua.isiPhone);\n})();\n\nua.isWin = (function(){\n if (navigator.platform.indexOf(\"Win\") > -1) return true;\n else return false;\n})();\n\nua.isIE = (function(){\n var pattern = new RegExp(\"msie\",\"i\");\n var pattern2 = new RegExp(\"trident\",\"i\");\n return pattern.test(userAgent) || pattern2.test(userAgent);\n})();\n\nua.isIE11 = (function(){\n var pattern = new RegExp(\"rv:11.0\",\"i\");\n return pattern.test(userAgent);\n})();\n\nua.isEdge = (function(){\n if (userAgent.indexOf(\"edge\") >= 0) return true;\n else return false;\n})();\n\nua.isSafari = (function(){\n if(userAgent.indexOf(\"chrome\") != -1) return false;\n if(userAgent.indexOf(\"lunascape\") != -1) return false;\n var pattern = new RegExp(\"safari\",\"i\");\n return pattern.test(userAgent);\n})();\n\n\nua.isiOSChrome = (function(){\n var pattern = new RegExp(\"crios\",\"i\");\n return pattern.test(userAgent);\n})();\n\n\nua.isChrome = (function(){\n var pattern = new RegExp(\"chrome\",\"i\");\n return pattern.test(userAgent);\n})();\n\nua.isFirefox = (function(){\n var pattern = new RegExp(\"firefox\",\"i\");\n return pattern.test(userAgent);\n})();\n\nua.isOpera = (function(){\n var pattern = new RegExp(\"opera\",\"i\");\n return pattern.test(userAgent);\n})();\n\nua.isIEVersion = (function(){\n if (appVersion.indexOf(\"trident\") != -1) return 'ie11';\n else if (appVersion.indexOf(\"msie 10.\") != -1) return 'ie10';\n else if (appVersion.indexOf(\"msie 9.\") != -1)return 'ie9';\n else if (appVersion.indexOf(\"msie 8.\") != -1) return 'ie8';\n else if (appVersion.indexOf(\"msie 7.\") != -1) return 'ie7';\n else if (appVersion.indexOf(\"msie 6.\") != -1) return 'ie6';\n else return 'ie';\n})();\n\n","import {ua} from './libs/daijima/ua';\n\n/*\n環境変数からの取得\nCONTENTFUL_API_BRANCH\nCONTENTFUL_API_SPACES\nCONTENTFUL_API_ACCESS_TOKEN\nCONTACT_API_PATH\nDOCS_JA_API_PATH\nDOCS_EN_API_PATH\n*/\n\nexport default class {\n constructor(target, targetPackageName) {\n this.init(target, targetPackageName);\n return this.obj;\n }\n\n getTargetPackage(){\n return this.obj;\n }\n\n init(target, targetPackageName){\n let obj = target[targetPackageName] = target[targetPackageName] || {};\n this.obj = obj;\n obj.BP = 768;\n obj.ua = ua;\n obj.hasTouch = (\"ontouchstart\" in window);\n obj.pageYOffset = 0;\n obj.pastPageYOffset = 0;\n obj.scrollWrapper = document.querySelector('.scroll-wrapper');\n\n obj.CONTACT_API_PATH = process.env.CONTACT_API_PATH;\n\n obj.CONTENTFUL_API_SPACES = process.env.CONTENTFUL_API_SPACES;\n obj.CONTENTFUL_API_ACCESS_TOKEN = process.env.CONTENTFUL_API_ACCESS_TOKEN;\n obj.CONTENTFUL_API_BRANCH = process.env.CONTENTFUL_API_BRANCH;\n obj.CONTENTFUL_API_PATH_LIST = [\n \"https://cdn.contentful.com/spaces/\" + obj.CONTENTFUL_API_SPACES + \"/environments/\" + obj.CONTENTFUL_API_BRANCH + \"/entries?content_type=professional&limit=8&access_token=\" + obj.CONTENTFUL_API_ACCESS_TOKEN, //WE ARE THE PROFESSIONAL\n \"https://cdn.contentful.com/spaces/\" + obj.CONTENTFUL_API_SPACES + \"/environments/\" + obj.CONTENTFUL_API_BRANCH + \"/entries?content_type=officalPartners&limit=8&access_token=\" + obj.CONTENTFUL_API_ACCESS_TOKEN, //OUR OFFICIAL PARTNERS\n \"https://cdn.contentful.com/spaces/\" + obj.CONTENTFUL_API_SPACES + \"/environments/\" + obj.CONTENTFUL_API_BRANCH + \"/entries?content_type=service&order=fields.displayOrder&access_token=\" + obj.CONTENTFUL_API_ACCESS_TOKEN, //SERVICES\n \"https://cdn.contentful.com/spaces/\" + obj.CONTENTFUL_API_SPACES + \"/environments/\" + obj.CONTENTFUL_API_BRANCH + \"/entries?content_type=referenceDesign&access_token=\" + obj.CONTENTFUL_API_ACCESS_TOKEN, //REFERENCE DESIGN\n \"https://cdn.contentful.com/spaces/\" + obj.CONTENTFUL_API_SPACES + \"/environments/\" + obj.CONTENTFUL_API_BRANCH + \"/entries?content_type=contactInfo&order=fields.displayOrder&access_token=\" + obj.CONTENTFUL_API_ACCESS_TOKEN, //Contact\n ];\n\n // obj.DOCS_EN_API_PATH = \"/json_dev/recent.en.json\"; //for dev\n obj.DOCS_JA_API_PATH = process.env.DOCS_JA_API_PATH; //ja\n obj.DOCS_EN_API_PATH = process.env.DOCS_EN_API_PATH; //en\n\n obj.getContentfulAPICareerPath = (id) => {\n return`https://cdn.contentful.com/spaces/` + obj.CONTENTFUL_API_SPACES + `/environments/` + obj.CONTENTFUL_API_BRANCH + `/entries?content_type=careerPositionEntry&fields.category.sys.contentType.sys.id=careerPositionCategory&fields.category.sys.id=${id}&access_token=` + obj.CONTENTFUL_API_ACCESS_TOKEN;\n };\n\n obj.getContentfulAPIPathWithSysID = (id) => {\n return `https://cdn.contentful.com/spaces/` + obj.CONTENTFUL_API_SPACES + `/environments/` + obj.CONTENTFUL_API_BRANCH + `/entries?sys.id=${id}&access_token=` + obj.CONTENTFUL_API_ACCESS_TOKEN;\n };\n\n obj.getContentfulAPIImgAccessPath = (id) => {\n return `https://cdn.contentful.com/spaces/` + obj.CONTENTFUL_API_SPACES + `/environments/` + obj.CONTENTFUL_API_BRANCH + `/assets/${id}?access_token=` + obj.CONTENTFUL_API_ACCESS_TOKEN;\n };\n\n obj.apiJSONList;\n obj.LANG = document.documentElement.lang; //ja or en\n\n obj.setLocalStorage = (value) => {\n // trace(value);\n // document.cookie = 'lang=' + value;\n localStorage.setItem('lang', value);\n }\n\n obj.getName = (value) => {\n let name;\n if(obj.LANG === \"en\") {\n name = value.nameEn;\n }else if(obj.LANG === \"ja\") {\n name = value.nameJa;\n }else {\n name = value.nameCn;\n }\n return name;\n };\n\n obj.getLocation = (value) => {\n let location;\n if(obj.LANG === \"en\") {\n location = value.locationEn;\n }else if(obj.LANG === \"ja\") {\n location = value.locationJa;\n }else {\n location = value.locationCn;\n }\n return location;\n };\n\n obj.getPosition = (value) => {\n let position;\n if(obj.LANG === \"en\") {\n position = value.postionEn;\n }else if(obj.LANG === \"ja\") {\n position = value.postionJa;\n }else {\n position = value.postionCn;\n }\n return position;\n };\n\n obj.getTitle = (value) => {\n let title;\n if(obj.LANG === \"en\") {\n title = value.titleEn;\n }else if(obj.LANG === \"ja\") {\n title = value.titleJa;\n }else {\n title = value.titleCn;\n }\n return title;\n };\n\n obj.getBody = (value) => {\n let body;\n if(obj.LANG === \"en\") {\n body = value.bodyEn;\n }else if(obj.LANG === \"ja\") {\n body = value.bodyJa;\n }else {\n body = value.bodyCn;\n }\n return body;\n };\n\n obj.getDescription = (value) => {\n let description;\n if(obj.LANG === \"en\") {\n description = value.descriptionEn;\n }else {\n description = value.descriptionJa;\n }\n\n return description;\n };\n\n obj.getData = (value, name) => {\n let data;\n if(obj.LANG === \"en\") {\n data = value[name + \"En\"];\n }else {\n data = value[name + \"Ja\"];\n }\n\n return data;\n };\n\n\n obj.changeLang = (value) =>{\n let href;\n if(obj.LANG === \"en\") href = location.pathname + location.search;\n else href = location.href.split(\"/ja\")[1];\n\n if(value === \"jp\") href = \"/ja\" + href;\n location.href = href;\n };\n\n obj.getFormatDate = (date) => {\n let dateArray = String(new Date(date)).split(\" \");\n return dateArray[1] + \" \" + dateArray[2] + \", \" + dateArray[3];\n };\n\n obj.setDocuments = (container) => {\n let items = obj.apiJSONList[5].release_notes;\n let src = \"\";\n\n if(items === undefined) return;\n let len = (items.length >= 3) ? 3 : items.length;\n\n for( let i = 0; i < len; i++ ){\n let item = items[i];\n let html = obj.getDocumentsHTML(item);\n src += html;\n }\n\n container.innerHTML = src;\n };\n\n obj.getDocumentsHTML = (value) =>{\n const slug = value.slug.split('/').splice(obj.LANG === 'ja' ? 2 : 1).join('/');\n let url = 'https://docs.pilot.auto/' + slug;\n let date = obj.getFormatDate(value.published_at);\n let product_name = value.title;\n let description = value.description;\n let addTxtClass = '';\n if(obj.LANG === 'ja') addTxtClass = ' font2 txt_ja';\n\n return `\n
  • \n \n
    \n

    ${description}

    \n
    \n
    ${product_name}
    \n
    ${date}
    \n
    \n
    \n
    \n
  • \n `;\n };\n\n obj.setSpansDelay = (str) => {\n trace(str);\n let spans = document.querySelectorAll(str);\n for( let i = 0, len = spans.length; i < len; i++ ){\n let span = spans[i];\n span.style.transitionDelay = Math.random() * 100 * .0035 + 's';\n }\n };\n\n // 3桁カンマ区切りとする\n obj.addComma = (num) => {\n var s = String(num).split('.');\n var ret = String(s[0]).replace( /(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, '$1,');\n if (s.length > 1) {\n ret += '.' + s[1];\n }\n return ret;\n };\n\n obj.hex2RGB = ( h ) => {\n let r = Math.floor(h / 65536);\n let g = Math.floor( ( h % 65536) / 256);\n let b = h % 256;\n\n return {r:r, g:g, b:b};\n };\n\n obj.hex2NormalRGB = ( h ) => {\n let r = Math.floor(h / 65536);\n let g = Math.floor( ( h % 65536) / 256);\n let b = h % 256;\n\n return {r:r/255, g:g/255, b:b/255};\n };\n\n obj.d2r = function(d){\n return d * Math.PI / 180;\n };\n\n obj.r2d = function(r){\n return r * 180 / Math.PI;\n };\n\n obj.random = function(min, max){\n return Math.random() * (max - min) + min;\n };\n\n obj.getPCVW = (v)=>{\n return v / 1440 * 100;\n };\n\n obj.getSPVW = (v)=>{\n return v / 375 * 100;\n };\n\n obj.checkBottom = () => {\n return (obj.pageYOffset + 1) >= (document.body.clientHeight - obj.common.sh);\n };\n\n obj.lockHTML = ()=>{\n let html = document.documentElement;\n html.classList.add(\"hidden\");\n };\n\n obj.unlockHTML = ()=>{\n let html = document.documentElement;\n html.classList.remove(\"hidden\");\n };\n\n obj.anchorScroll = function(targetY, dr, ease, cb){\n if(!dr) dr = 1;\n if(!ease) ease = Quart.easeInOut;\n let obj = {y:window.pageYOffset};\n TweenMax.killTweensOf(obj);\n\n TweenMax.to(obj, dr, {y:targetY, ease:ease, onUpdate:function(){\n window.scrollTo(0, obj.y);\n }, onComplete:function(){\n if(cb) cb();\n }});\n };\n\n obj.commonParallax = function(item, targetY, defY, addCode, moveY){\n let top = item.getBoundingClientRect().top;\n if(defY === undefined) defY = 200;\n\n let speed = (item.dataset.speed != \"undefined\") ? item.dataset.speed : \"5\";\n let difY = (top - targetY) / speed + defY; //スタート地点はデフォルトでは200px下げる\n if(addCode == undefined) addCode = '';\n\n if(moveY){\n if(difY < defY - moveY) difY = defY - moveY;\n }\n\n if(top < targetY) {\n item.style.transform = 'translate3d(0,' + difY + 'px, 0)' + addCode;\n // item.style.top = difY + 'px';\n }\n };\n\n obj.addZero = function(str){\n if(str.length == 1) str = \"0\"+str;\n return str;\n };\n }\n}\n","import TemplateContents from './TemplateContents';\n\nexport default class extends TemplateContents {\n constructor(param) {\n super(param);\n }\n\n init() {\n super.init();\n\n // this.pack.common.addScrollTarget(this);\n // this.pack.common.addEnterframeTarget(this);\n }\n\n reset() {\n super.reset();\n\n this.setVars();\n // this.pack.common.addScrollTarget(this);\n // this.pack.common.addEnterframeTarget(this);\n }\n\n destruct() {\n super.destruct();\n\n // this.pack.common.removeScrollTarget(this);\n // this.pack.common.removeEnterframeTarget(this);\n }\n\n setVars() {\n super.setVars();\n\n this.isMenuOpen = false;\n\n this.baseGrillRight = 100;\n this.baseHeaderNavRight = 119;\n this.baseHeaderLangNavRight = 120;\n }\n\n setDom() {\n super.setDom();\n\n this.grill = document.querySelector('header .grill');\n this.menu = document.querySelector('header .menu');\n this.menuBG = document.querySelector('header .menu .bg');\n\n this.h2 = document.querySelector('header h2');\n this.headerNav = document.querySelector('header .header_nav');\n this.headerNavList = document.querySelectorAll(\n 'header .header_nav ul li'\n );\n\n this.menuMainNav = document.querySelectorAll(\n 'header .menu .main_nav li'\n );\n this.menuMainNavTxt = document.querySelectorAll(\n 'header .menu .main_nav .main'\n );\n\n this.menuMainNavSubContainer = document.querySelectorAll(\n 'header .menu .main_nav li span.sub'\n );\n this.menuMainNavSubTxt = [];\n\n this.menuLangNav = document.querySelector('header .menu .lang_nav');\n this.menuLangNavs = document.querySelectorAll(\n 'header .menu .lang_nav ul li span'\n );\n if (this.pack.LANG === 'ja') {\n this.menuLangNavs[0].classList.add('current');\n } else {\n this.menuLangNavs[1].classList.add('current');\n }\n\n this.menuNewsletter = document.querySelector(\n 'header .menu .newsletter'\n );\n\n this.menuSubNavSocials = document.querySelectorAll(\n 'header .menu .sub_nav .social li'\n );\n this.menuSubNavOthers = document.querySelectorAll(\n 'header .menu .sub_nav .others li'\n );\n this.menuCopyright = document.querySelector('header .menu .cp');\n }\n\n initEvents() {\n super.initEvents();\n\n //アンカーリンクの設定\n for (let i = 0, len = this.menuMainNavSubTxt.length; i < len; i++) {\n let items = this.menuMainNavSubTxt[i];\n for (let j = 0; j < items.length; j++) {\n let item = items[j];\n item.addEventListener('click', (event) => {\n let url =\n location.protocol +\n '//' +\n location.host +\n location.pathname;\n let extract_hash = event.currentTarget.href.replace(\n /#.*$/,\n ''\n );\n\n if (extract_hash === url) {\n this.closeMenu();\n }\n });\n }\n }\n\n this.grill.addEventListener('click', this.clickGrillHandler.bind(this));\n this.grill.addEventListener('mouseover', (event) => {\n this.grill.classList.add('hover');\n });\n\n this.grill.addEventListener('mouseout', (event) => {\n this.grill.classList.remove('hover');\n });\n\n this.menuLangNavs[0].addEventListener('click', () => {\n this.pack.setLocalStorage('jp');\n this.pack.changeLang('jp');\n });\n\n this.menuLangNavs[1].addEventListener('click', () => {\n this.pack.setLocalStorage('en');\n this.pack.changeLang('en');\n });\n }\n\n setEvents() {}\n\n getAnchorSrc(id, pathname, str) {\n let spanSrc = '';\n let anchorName = 'section' + (id + 1);\n\n for (let i = 0, len = str.length; i < len; i++) {\n let value = str.substr(i, 1);\n\n if (value === ' ') spanSrc += '';\n else spanSrc += '';\n spanSrc += value;\n spanSrc += '';\n }\n\n return `\n \n ${spanSrc}\n \n `;\n }\n\n setAnchors() {\n this.setServicesAnchors();\n\n for (let i = 0, len = this.menuMainNav.length; i < len; i++) {\n this.menuMainNavSubTxt.push(\n this.menuMainNav[i].querySelectorAll('.sub a')\n );\n }\n }\n\n setServicesAnchors() {\n let items = this.pack.apiJSONList[2].items;\n let src = '';\n for (let i = 0, len = items.length; i < len; i++) {\n let item = items[i];\n let name = this.pack.getData(item.fields, 'areaTitle');\n name = name.replace(/
    /g, ''); //全ての
    を''に置き換える\n src += this.getAnchorSrc(i, 'services', name);\n }\n this.menuMainNavSubContainer[0].innerHTML = src;\n }\n\n clickGrillHandler() {\n if (this.menu.classList.contains('show')) {\n this.closeMenu();\n } else {\n this.openMenu();\n }\n }\n\n closeMenu() {\n this.isMenuOpen = false;\n document.documentElement.classList.remove('lock');\n document.documentElement.style.setProperty(\n '--grill_right',\n this.baseGrillRight + 'px'\n );\n document.documentElement.style.setProperty(\n '--header_nav_right',\n this.baseHeaderNavRight + 'px'\n );\n this.grill.classList.remove('close');\n this.menuBG.classList.remove('open');\n this.menu.classList.remove('open');\n\n for (let i = 0, len = this.menuMainNav.length; i < len; i++) {\n let item = this.menuMainNav[i];\n item.style.transitionDelay = '0s';\n item.classList.add('close');\n }\n\n for (let i = 0, len = this.menuMainNavSubTxt.length; i < len; i++) {\n let items = this.menuMainNavSubTxt[i];\n for (let j = 0; j < items.length; j++) {\n let item = items[j];\n item.style.transitionDelay = '0s';\n item.classList.remove('open');\n }\n }\n\n this.menuLangNav.style.transitionDelay = '0s';\n this.menuLangNav.classList.remove('open');\n\n this.menuNewsletter.style.transitionDelay = '0s';\n this.menuNewsletter.classList.remove('open');\n\n for (let i = 0, len = this.menuSubNavSocials.length; i < len; i++) {\n let item = this.menuSubNavSocials[i];\n item.style.transitionDelay = '0s';\n item.classList.remove('open');\n }\n\n for (let i = 0, len = this.menuSubNavOthers.length; i < len; i++) {\n let item = this.menuSubNavOthers[i];\n item.style.transitionDelay = '0s';\n item.classList.remove('open');\n }\n\n this.menuCopyright.style.transitionDelay = '0s';\n this.menuCopyright.classList.remove('open');\n\n TweenMax.delayedCall(0.7, () => {\n this.menu.classList.remove('show');\n for (let i = 0, len = this.menuMainNav.length; i < len; i++) {\n let item = this.menuMainNav[i];\n item.style.transitionDelay = '0s';\n item.classList.remove('close');\n item.classList.remove('open');\n }\n\n for (let i = 0, len = this.menuMainNavTxt.length; i < len; i++) {\n let item = this.menuMainNavTxt[i];\n item.style.transitionDelay = '0s';\n item.classList.remove('open');\n }\n });\n }\n\n openMenu() {\n this.isMenuOpen = true;\n let scrollWidth = window.innerWidth - document.body.clientWidth;\n document.documentElement.classList.add('lock');\n this.menu.classList.add('show');\n let grillRight = this.baseGrillRight + scrollWidth + 'px';\n let headerNavRight = this.baseHeaderNavRight + scrollWidth + 'px';\n let headerLangNavRight =\n this.baseHeaderLangNavRight + scrollWidth + 'px';\n\n document.documentElement.style.setProperty('--grill_right', grillRight);\n document.documentElement.style.setProperty(\n '--header_nav_right',\n headerNavRight\n );\n document.documentElement.style.setProperty(\n '--header_lang_nav_right',\n headerLangNavRight\n );\n TweenMax.delayedCall(0.1, () => {\n this.grill.classList.add('close');\n this.menuBG.classList.add('open');\n this.menu.classList.add('open');\n\n let delay = 0.12;\n\n for (let i = 0, len = this.menuMainNav.length; i < len; i++) {\n let item = this.menuMainNav[i];\n item.style.transitionDelay = (i + 1) * delay + 's';\n item.classList.add('open');\n }\n\n for (let i = 0, len = this.menuMainNavTxt.length; i < len; i++) {\n let item = this.menuMainNavTxt[i];\n // item.style.transitionDelay = .15 + i * delay + \"s\";\n item.style.transitionDelay = 0.15 + i * delay + 's';\n item.classList.add('open');\n }\n\n for (let i = 0, len = this.menuMainNavSubTxt.length; i < len; i++) {\n let items = this.menuMainNavSubTxt[i];\n for (let j = 0; j < items.length; j++) {\n let item = items[j];\n item.style.transitionDelay =\n 0.35 + i * delay + j * delay + 's';\n // item.style.transitionDelay = .2 + i * delay + j * delay + \"s\";\n item.classList.add('open');\n }\n }\n\n this.menuLangNav.style.transitionDelay = '400ms';\n this.menuLangNav.classList.add('open');\n\n this.menuNewsletter.style.transitionDelay = '700ms';\n this.menuNewsletter.classList.add('open');\n\n for (let i = 0, len = this.menuSubNavSocials.length; i < len; i++) {\n let item = this.menuSubNavSocials[i];\n item.style.transitionDelay = 0.75 + i * 0.02 + 's';\n item.classList.add('open');\n }\n\n for (let i = 0, len = this.menuSubNavOthers.length; i < len; i++) {\n let item = this.menuSubNavOthers[i];\n item.style.transitionDelay = 0.85 + i * 0.05 + 's';\n item.classList.add('open');\n }\n\n this.menuCopyright.style.transitionDelay = '1100ms';\n this.menuCopyright.classList.add('open');\n });\n }\n\n setCurrent() {\n let namespace = this.pack.current;\n let currentID, currentID2;\n\n for (let i = 0, len = this.menuMainNav.length; i < len; i++) {\n let item = this.menuMainNav[i];\n item.classList.remove('current');\n }\n\n for (let i = 0, len = this.headerNavList.length; i < len; i++) {\n let item = this.headerNavList[i];\n item.classList.remove('current');\n }\n\n if (namespace === 'top') currentID = currentID2 = -1;\n else if (namespace === 'services') currentID = currentID2 = 0;\n else if (namespace === 'reference_design') currentID = currentID2 = 1;\n else if (namespace === 'contact') {\n currentID = 4;\n currentID2 = 4;\n } else if (namespace === 'product_brochure') {\n currentID = 3;\n currentID2 = 3;\n } else currentID = currentID2 = -1;\n\n this.menuMainNav[currentID + 1].classList.add('current');\n\n if (currentID2 === -1) return;\n this.headerNavList[currentID2].classList.add('current');\n }\n\n hideHeader() {\n this.h2.classList.add('hide');\n this.headerNav.classList.add('hide');\n }\n\n showHeader() {\n this.h2.classList.remove('hide');\n this.headerNav.classList.remove('hide');\n }\n\n showHeaderNav() {\n for (let i = 0, len = this.headerNavList.length; i < len; i++) {\n let item = this.headerNavList[i];\n TweenMax.delayedCall(i * 0.12, () => {\n item.classList.add('show');\n item.classList.add('play');\n });\n }\n\n TweenMax.delayedCall(1, () => {\n for (let i = 0, len = this.headerNavList.length; i < len; i++) {\n let item = this.headerNavList[i];\n item.classList.remove('play');\n }\n });\n }\n\n start() {}\n\n closeMenuExternal() {\n if (this.menu.classList.contains('show')) {\n this.closeMenu();\n }\n }\n\n scrollHandler() {}\n\n enterframe() {}\n\n enterframeThinOut() {}\n\n executeResize() {\n super.executeResize();\n }\n}\n","import TemplateContents from './TemplateContents';\n\nexport default class extends TemplateContents{\n constructor(param){\n super(param);\n }\n\n init() {\n super.init();\n\n // this.pack.common.addScrollTarget(this);\n // this.pack.common.addEnterframeTarget(this);\n }\n\n reset(){\n super.reset();\n\n this.setVars();\n // this.pack.common.addScrollTarget(this);\n // this.pack.common.addEnterframeTarget(this);\n }\n\n destruct(){\n super.destruct();\n\n // this.pack.common.removeScrollTarget(this);\n // this.pack.common.removeEnterframeTarget(this);\n }\n\n setVars(){\n super.setVars();\n }\n\n setDom(){\n super.setDom();\n }\n\n initEvents(){\n super.initEvents();\n }\n\n start(){\n\n }\n\n scrollHandler(){\n\n }\n\n\n enterframe(){\n\n }\n\n enterframeThinOut(){\n\n }\n\n executeResize() {\n super.executeResize();\n }\n}","/**\n * @license\n * Copyright 2010-2022 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\nconst REVISION = '140';\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 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 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 UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBFormat = 1022;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\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 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 BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\n\n// Color space string identifiers, matching CSS Color Module Level 4 and WebGPU names where available.\nconst NoColorSpace = '';\nconst SRGBColorSpace = 'srgb';\nconst LinearSRGBColorSpace = 'srgb-linear';\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\nconst GLSL1 = '100';\nconst GLSL3 = '300 es';\n\nconst _SRGBAFormat = 1035; // fallback for WebGL 1\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nclass EventDispatcher {\n\n\taddEventListener( 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( 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( 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( 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\tevent.target = null;\n\n\t\t}\n\n\t}\n\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\nlet _seed = 1234567;\n\n\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\n\n// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\nfunction generateUUID() {\n\n\tconst d0 = Math.random() * 0xffffffff | 0;\n\tconst d1 = Math.random() * 0xffffffff | 0;\n\tconst d2 = Math.random() * 0xffffffff | 0;\n\tconst d3 = Math.random() * 0xffffffff | 0;\n\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// .toLowerCase() here flattens concatenated strings to save heap memory space.\n\treturn uuid.toLowerCase();\n\n}\n\nfunction clamp( value, min, max ) {\n\n\treturn Math.max( min, Math.min( max, value ) );\n\n}\n\n// compute euclidean modulo of m % n\n// https://en.wikipedia.org/wiki/Modulo_operation\nfunction euclideanModulo( n, m ) {\n\n\treturn ( ( n % m ) + m ) % m;\n\n}\n\n// Linear mapping from range to range \nfunction mapLinear( x, a1, a2, b1, b2 ) {\n\n\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n}\n\n// https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/\nfunction inverseLerp( x, y, value ) {\n\n\tif ( x !== y ) {\n\n\t\treturn ( value - x ) / ( y - x );\n\n\t} else {\n\n\t\treturn 0;\n\n\t}\n\n}\n\n// https://en.wikipedia.org/wiki/Linear_interpolation\nfunction lerp( x, y, t ) {\n\n\treturn ( 1 - t ) * x + t * y;\n\n}\n\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nfunction damp( x, y, lambda, dt ) {\n\n\treturn lerp( x, y, 1 - Math.exp( - lambda * dt ) );\n\n}\n\n// https://www.desmos.com/calculator/vcsjnyz7x4\nfunction pingpong( x, length = 1 ) {\n\n\treturn length - Math.abs( euclideanModulo( x, length * 2 ) - length );\n\n}\n\n// http://en.wikipedia.org/wiki/Smoothstep\nfunction smoothstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * ( 3 - 2 * x );\n\n}\n\nfunction smootherstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n}\n\n// Random integer from interval\nfunction randInt( low, high ) {\n\n\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n}\n\n// Random float from interval\nfunction randFloat( low, high ) {\n\n\treturn low + Math.random() * ( high - low );\n\n}\n\n// Random float from <-range/2, range/2> interval\nfunction randFloatSpread( range ) {\n\n\treturn range * ( 0.5 - Math.random() );\n\n}\n\n// Deterministic pseudo-random float in the interval [ 0, 1 ]\nfunction seededRandom( s ) {\n\n\tif ( s !== undefined ) _seed = s;\n\n\t// Mulberry32 generator\n\n\tlet t = _seed += 0x6D2B79F5;\n\n\tt = Math.imul( t ^ t >>> 15, t | 1 );\n\n\tt ^= t + Math.imul( t ^ t >>> 7, t | 61 );\n\n\treturn ( ( t ^ t >>> 14 ) >>> 0 ) / 4294967296;\n\n}\n\nfunction degToRad( degrees ) {\n\n\treturn degrees * DEG2RAD;\n\n}\n\nfunction radToDeg( radians ) {\n\n\treturn radians * RAD2DEG;\n\n}\n\nfunction isPowerOfTwo( value ) {\n\n\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n}\n\nfunction ceilPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction floorPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction setQuaternionFromProperEuler( q, a, b, c, order ) {\n\n\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t// rotations are applied to the axes in the order specified by 'order'\n\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t// angles are in radians\n\n\tconst cos = Math.cos;\n\tconst sin = Math.sin;\n\n\tconst c2 = cos( b / 2 );\n\tconst s2 = sin( b / 2 );\n\n\tconst c13 = cos( ( a + c ) / 2 );\n\tconst s13 = sin( ( a + c ) / 2 );\n\n\tconst c1_3 = cos( ( a - c ) / 2 );\n\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\tconst c3_1 = cos( ( c - a ) / 2 );\n\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\tswitch ( order ) {\n\n\t\tcase 'XYX':\n\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YZY':\n\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZXZ':\n\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'XZX':\n\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YXY':\n\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZYZ':\n\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t}\n\n}\n\nfunction denormalize$1( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn value / 65535.0;\n\n\t\tcase Uint8Array:\n\n\t\t\treturn value / 255.0;\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.max( value / 32767.0, - 1.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.max( value / 127.0, - 1.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nfunction normalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn Math.round( value * 65535.0 );\n\n\t\tcase Uint8Array:\n\n\t\t\treturn Math.round( value * 255.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.round( value * 32767.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.round( value * 127.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nvar MathUtils = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tDEG2RAD: DEG2RAD,\n\tRAD2DEG: RAD2DEG,\n\tgenerateUUID: generateUUID,\n\tclamp: clamp,\n\teuclideanModulo: euclideanModulo,\n\tmapLinear: mapLinear,\n\tinverseLerp: inverseLerp,\n\tlerp: lerp,\n\tdamp: damp,\n\tpingpong: pingpong,\n\tsmoothstep: smoothstep,\n\tsmootherstep: smootherstep,\n\trandInt: randInt,\n\trandFloat: randFloat,\n\trandFloatSpread: randFloatSpread,\n\tseededRandom: seededRandom,\n\tdegToRad: degToRad,\n\tradToDeg: radToDeg,\n\tisPowerOfTwo: isPowerOfTwo,\n\tceilPowerOfTwo: ceilPowerOfTwo,\n\tfloorPowerOfTwo: floorPowerOfTwo,\n\tsetQuaternionFromProperEuler: setQuaternionFromProperEuler,\n\tnormalize: normalize,\n\tdenormalize: denormalize$1\n});\n\nclass Vector2 {\n\n\tconstructor( x = 0, y = 0 ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.x;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.y;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t}\n\n\tset( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( 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( 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() {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t}\n\n\tcopy( 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( 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( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( 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( 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( 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( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( 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( 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( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tdivide( 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( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tapplyMatrix3( 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( 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( 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( 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( 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( 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() {\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() {\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() {\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() {\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() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tangle() {\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( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( 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( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( 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( 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( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t}\n\n\tfromArray( array, 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( array = [], 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( 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( 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() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\n\t}\n\n}\n\nVector2.prototype.isVector2 = true;\n\nclass Matrix3 {\n\n\tconstructor() {\n\n\t\tthis.elements = [\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\tif ( arguments.length > 0 ) {\n\n\t\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t\t}\n\n\t}\n\n\tset( 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() {\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\tcopy( 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( 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( 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( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( 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( 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() {\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\tinvert() {\n\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ],\n\t\t\tn12 = te[ 3 ], n22 = te[ 4 ], n32 = te[ 5 ],\n\t\t\tn13 = te[ 6 ], n23 = te[ 7 ], n33 = te[ 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() {\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( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).invert().transpose();\n\n\t}\n\n\ttransposeIntoArray( 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( 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\treturn this;\n\n\t}\n\n\tscale( 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( 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( 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( 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( array, 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( array = [], 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\tclone() {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t}\n\n}\n\nMatrix3.prototype.isMatrix3 = true;\n\nfunction arrayNeedsUint32( array ) {\n\n\t// assumes larger values usually on last\n\n\tfor ( let i = array.length - 1; i >= 0; -- i ) {\n\n\t\tif ( array[ i ] > 65535 ) return true;\n\n\t}\n\n\treturn false;\n\n}\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\tUint8ClampedArray: Uint8ClampedArray,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\nfunction getTypedArray( type, buffer ) {\n\n\treturn new TYPED_ARRAYS[ type ]( buffer );\n\n}\n\nfunction createElementNS( name ) {\n\n\treturn document.createElementNS( 'http://www.w3.org/1999/xhtml', name );\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\n// JavaScript RGB-to-RGB transforms, defined as\n// FN[InputColorSpace][OutputColorSpace] callback functions.\nconst FN = {\n\t[ SRGBColorSpace ]: { [ LinearSRGBColorSpace ]: SRGBToLinear },\n\t[ LinearSRGBColorSpace ]: { [ SRGBColorSpace ]: LinearToSRGB },\n};\n\nconst ColorManagement = {\n\n\tlegacyMode: true,\n\n\tget workingColorSpace() {\n\n\t\treturn LinearSRGBColorSpace;\n\n\t},\n\n\tset workingColorSpace( colorSpace ) {\n\n\t\tconsole.warn( 'THREE.ColorManagement: .workingColorSpace is readonly.' );\n\n\t},\n\n\tconvert: function ( color, sourceColorSpace, targetColorSpace ) {\n\n\t\tif ( this.legacyMode || sourceColorSpace === targetColorSpace || ! sourceColorSpace || ! targetColorSpace ) {\n\n\t\t\treturn color;\n\n\t\t}\n\n\t\tif ( FN[ sourceColorSpace ] && FN[ sourceColorSpace ][ targetColorSpace ] !== undefined ) {\n\n\t\t\tconst fn = FN[ sourceColorSpace ][ targetColorSpace ];\n\n\t\t\tcolor.r = fn( color.r );\n\t\t\tcolor.g = fn( color.g );\n\t\t\tcolor.b = fn( color.b );\n\n\t\t\treturn color;\n\n\t\t}\n\n\t\tthrow new Error( 'Unsupported color space conversion.' );\n\n\t},\n\n\tfromWorkingColorSpace: function ( color, targetColorSpace ) {\n\n\t\treturn this.convert( color, this.workingColorSpace, targetColorSpace );\n\n\t},\n\n\ttoWorkingColorSpace: function ( color, sourceColorSpace ) {\n\n\t\treturn this.convert( color, sourceColorSpace, this.workingColorSpace );\n\n\t},\n\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 _rgb = { r: 0, g: 0, b: 0 };\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\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 toComponents( source, target ) {\n\n\ttarget.r = source.r;\n\ttarget.g = source.g;\n\ttarget.b = source.b;\n\n\treturn target;\n\n}\n\nclass Color {\n\n\tconstructor( r, g, b ) {\n\n\t\tif ( g === undefined && b === undefined ) {\n\n\t\t\t// r is THREE.Color, hex or string\n\t\t\treturn this.set( r );\n\n\t\t}\n\n\t\treturn this.setRGB( r, g, b );\n\n\t}\n\n\tset( 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( 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( hex, colorSpace = SRGBColorSpace ) {\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\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetRGB( r, g, b, colorSpace = LinearSRGBColorSpace ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetHSL( h, s, l, colorSpace = LinearSRGBColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = euclideanModulo( h, 1 );\n\t\ts = clamp( s, 0, 1 );\n\t\tl = 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\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetStyle( style, colorSpace = SRGBColorSpace ) {\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?)\\(([^\\)]*)\\)/.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 = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\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\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\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\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\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 = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\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[ 4 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l, colorSpace );\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-f\\d]+)$/.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\tColorManagement.toWorkingColorSpace( this, colorSpace );\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\tColorManagement.toWorkingColorSpace( this, colorSpace );\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, colorSpace );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetColorName( style, colorSpace = SRGBColorSpace ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style.toLowerCase() ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex, colorSpace );\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() {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t}\n\n\tcopy( 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\tcopySRGBToLinear( 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( 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() {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToSRGB() {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t}\n\n\tgetHex( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( toComponents( this, _rgb ), colorSpace );\n\n\t\treturn clamp( _rgb.r * 255, 0, 255 ) << 16 ^ clamp( _rgb.g * 255, 0, 255 ) << 8 ^ clamp( _rgb.b * 255, 0, 255 ) << 0;\n\n\t}\n\n\tgetHexString( colorSpace = SRGBColorSpace ) {\n\n\t\treturn ( '000000' + this.getHex( colorSpace ).toString( 16 ) ).slice( - 6 );\n\n\t}\n\n\tgetHSL( target, colorSpace = LinearSRGBColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tColorManagement.fromWorkingColorSpace( toComponents( this, _rgb ), colorSpace );\n\n\t\tconst r = _rgb.r, g = _rgb.g, b = _rgb.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\tgetRGB( target, colorSpace = LinearSRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( toComponents( this, _rgb ), colorSpace );\n\n\t\ttarget.r = _rgb.r;\n\t\ttarget.g = _rgb.g;\n\t\ttarget.b = _rgb.b;\n\n\t\treturn target;\n\n\t}\n\n\tgetStyle( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( toComponents( this, _rgb ), colorSpace );\n\n\t\tif ( colorSpace !== SRGBColorSpace ) {\n\n\t\t\t// Requires CSS Color Module Level 4 (https://www.w3.org/TR/css-color-4/).\n\t\t\treturn `color(${ colorSpace } ${ _rgb.r } ${ _rgb.g } ${ _rgb.b })`;\n\n\t\t}\n\n\t\treturn `rgb(${( _rgb.r * 255 ) | 0},${( _rgb.g * 255 ) | 0},${( _rgb.b * 255 ) | 0})`;\n\n\t}\n\n\toffsetHSL( 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( 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( 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( 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( 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( 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( 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( 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\tlerpColors( color1, color2, alpha ) {\n\n\t\tthis.r = color1.r + ( color2.r - color1.r ) * alpha;\n\t\tthis.g = color1.g + ( color2.g - color1.g ) * alpha;\n\t\tthis.b = color1.b + ( color2.b - color1.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpHSL( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = 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( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t}\n\n\tfromArray( array, 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( array = [], 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( 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() {\n\n\t\treturn this.getHex();\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.r;\n\t\tyield this.g;\n\t\tyield this.b;\n\n\t}\n\n}\n\nColor.NAMES = _colorKeywords;\n\nColor.prototype.isColor = true;\nColor.prototype.r = 1;\nColor.prototype.g = 1;\nColor.prototype.b = 1;\n\nlet _canvas;\n\nclass ImageUtils {\n\n\tstatic getDataURL( 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 = createElementNS( '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\tconsole.warn( 'THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons', image );\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\tstatic sRGBToLinear( image ) {\n\n\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\tconst canvas = createElementNS( 'canvas' );\n\n\t\t\tcanvas.width = image.width;\n\t\t\tcanvas.height = image.height;\n\n\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\tconst imageData = context.getImageData( 0, 0, image.width, image.height );\n\t\t\tconst data = imageData.data;\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] / 255 ) * 255;\n\n\t\t\t}\n\n\t\t\tcontext.putImageData( imageData, 0, 0 );\n\n\t\t\treturn canvas;\n\n\t\t} else if ( image.data ) {\n\n\t\t\tconst data = image.data.slice( 0 );\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tif ( data instanceof Uint8Array || data instanceof Uint8ClampedArray ) {\n\n\t\t\t\t\tdata[ i ] = Math.floor( SRGBToLinear( data[ i ] / 255 ) * 255 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// assuming float\n\n\t\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdata: data,\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.' );\n\t\t\treturn image;\n\n\t\t}\n\n\t}\n\n}\n\nclass Source {\n\n\tconstructor( data = null ) {\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.data = data;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.images[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.images[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\t\t\tuuid: this.uuid,\n\t\t\turl: ''\n\t\t};\n\n\t\tconst data = this.data;\n\n\t\tif ( data !== null ) {\n\n\t\t\tlet url;\n\n\t\t\tif ( Array.isArray( data ) ) {\n\n\t\t\t\t// cube texture\n\n\t\t\t\turl = [];\n\n\t\t\t\tfor ( let i = 0, l = data.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( data[ i ].isDataTexture ) {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ].image ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ] ) );\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// texture\n\n\t\t\t\turl = serializeImage( data );\n\n\t\t\t}\n\n\t\t\toutput.url = url;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.images[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n}\n\nfunction serializeImage( image ) {\n\n\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t// default images\n\n\t\treturn ImageUtils.getDataURL( image );\n\n\t} else {\n\n\t\tif ( image.data ) {\n\n\t\t\t// images of DataTexture\n\n\t\t\treturn {\n\t\t\t\tdata: Array.prototype.slice.call( image.data ),\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height,\n\t\t\t\ttype: image.data.constructor.name\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Texture: Unable to serialize Texture.' );\n\t\t\treturn {};\n\n\t\t}\n\n\t}\n\n}\n\nSource.prototype.isSource = true;\n\nlet textureId = 0;\n\nclass Texture extends EventDispatcher {\n\n\tconstructor( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = 1, encoding = LinearEncoding ) {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\n\t\tthis.source = new Source( image );\n\t\tthis.mipmaps = [];\n\n\t\tthis.mapping = mapping;\n\n\t\tthis.wrapS = wrapS;\n\t\tthis.wrapT = wrapT;\n\n\t\tthis.magFilter = magFilter;\n\t\tthis.minFilter = minFilter;\n\n\t\tthis.anisotropy = anisotropy;\n\n\t\tthis.format = format;\n\t\tthis.internalFormat = null;\n\t\tthis.type = type;\n\n\t\tthis.offset = new Vector2( 0, 0 );\n\t\tthis.repeat = new Vector2( 1, 1 );\n\t\tthis.center = new Vector2( 0, 0 );\n\t\tthis.rotation = 0;\n\n\t\tthis.matrixAutoUpdate = true;\n\t\tthis.matrix = new Matrix3();\n\n\t\tthis.generateMipmaps = true;\n\t\tthis.premultiplyAlpha = false;\n\t\tthis.flipY = true;\n\t\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\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t\t//\n\t\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\t\tthis.encoding = encoding;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\t\tthis.onUpdate = null;\n\n\t\tthis.isRenderTargetTexture = false; // indicates whether a texture belongs to a render target or not\n\t\tthis.needsPMREMUpdate = false; // indicates whether this texture should be processed by PMREMGenerator or not (only relevant for render target textures)\n\n\t}\n\n\tget image() {\n\n\t\treturn this.source.data;\n\n\t}\n\n\tset image( value ) {\n\n\t\tthis.source.data = value;\n\n\t}\n\n\tupdateMatrix() {\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() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.source = source.source;\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\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tthis.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( 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\timage: this.source.toJSON( meta ).uuid,\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 ( JSON.stringify( this.userData ) !== '{}' ) output.userData = this.userData;\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() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\ttransformUv( 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\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) {\n\n\t\t\tthis.version ++;\n\t\t\tthis.source.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n}\n\nTexture.DEFAULT_IMAGE = null;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nTexture.prototype.isTexture = true;\n\nclass Vector4 {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.z;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.z = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.w;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.w = value;\n\n\t}\n\n\tset( 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( 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( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( 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( 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() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t}\n\n\tcopy( 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( 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( 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( 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( 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( 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( 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( 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\tmultiply( 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;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( 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( 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( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tsetAxisAngleFromQuaternion( 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( 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( 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( 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( 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( 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( 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() {\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() {\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() {\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() {\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() {\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( 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() {\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() {\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() {\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() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( 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( 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( 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( array, 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( array = [], 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( 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() {\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\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\t\tyield this.w;\n\n\t}\n\n}\n\nVector4.prototype.isVector4 = true;\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*/\nclass WebGLRenderTarget extends EventDispatcher {\n\n\tconstructor( width, height, options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.depth = 1;\n\n\t\tthis.scissor = new Vector4( 0, 0, width, height );\n\t\tthis.scissorTest = false;\n\n\t\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\t\tconst image = { width: width, height: height, depth: 1 };\n\n\t\tthis.texture = new Texture( image, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.flipY = false;\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.internalFormat = options.internalFormat !== undefined ? options.internalFormat : null;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\t\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : false;\n\n\t\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n\t\tthis.samples = options.samples !== undefined ? options.samples : 0;\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\t\t\tthis.texture.image.depth = depth;\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() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\t// ensure image object is not shared, see #20328\n\n\t\tconst image = Object.assign( {}, source.texture.image );\n\t\tthis.texture.source = new Source( image );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nWebGLRenderTarget.prototype.isWebGLRenderTarget = true;\n\nclass DataArrayTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\tsuper( null );\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nDataArrayTexture.prototype.isDataArrayTexture = true;\n\nclass WebGLArrayRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width, height, depth ) {\n\n\t\tsuper( width, height );\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new DataArrayTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nWebGLArrayRenderTarget.prototype.isWebGLArrayRenderTarget = true;\n\nclass Data3DTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\t// We're going to add .setXXX() methods for setting properties later.\n\t\t// Users can still set in DataTexture3D directly.\n\t\t//\n\t\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\n\t\t// \ttexture.anisotropy = 16;\n\t\t//\n\t\t// See #14839\n\n\t\tsuper( null );\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nData3DTexture.prototype.isData3DTexture = true;\n\nclass WebGL3DRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width, height, depth ) {\n\n\t\tsuper( width, height );\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new Data3DTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nWebGL3DRenderTarget.prototype.isWebGL3DRenderTarget = true;\n\nclass WebGLMultipleRenderTargets extends WebGLRenderTarget {\n\n\tconstructor( width, height, count, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tconst texture = this.texture;\n\n\t\tthis.texture = [];\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.texture[ i ] = texture.clone();\n\t\t\tthis.texture[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tfor ( let i = 0, il = this.texture.length; i < il; i ++ ) {\n\n\t\t\t\tthis.texture[ i ].image.width = width;\n\t\t\t\tthis.texture[ i ].image.height = height;\n\t\t\t\tthis.texture[ i ].image.depth = depth;\n\n\t\t\t}\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\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.dispose();\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.viewport.set( 0, 0, this.width, this.height );\n\t\tthis.scissor.set( 0, 0, this.width, this.height );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.texture.length = 0;\n\n\t\tfor ( let i = 0, il = source.texture.length; i < il; i ++ ) {\n\n\t\t\tthis.texture[ i ] = source.texture[ i ].clone();\n\t\t\tthis.texture[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nWebGLMultipleRenderTargets.prototype.isWebGLMultipleRenderTargets = true;\n\nclass Quaternion {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t}\n\n\tstatic slerp( qa, qb, qm, t ) {\n\n\t\tconsole.warn( 'THREE.Quaternion: Static .slerp() has been deprecated. Use qm.slerpQuaternions( qa, qb, t ) instead.' );\n\t\treturn qm.slerpQuaternions( qa, qb, t );\n\n\t}\n\n\tstatic slerpFlat( 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 ( t === 0 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x0;\n\t\t\tdst[ dstOffset + 1 ] = y0;\n\t\t\tdst[ dstOffset + 2 ] = z0;\n\t\t\tdst[ dstOffset + 3 ] = w0;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( t === 1 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x1;\n\t\t\tdst[ dstOffset + 1 ] = y1;\n\t\t\tdst[ dstOffset + 2 ] = z1;\n\t\t\tdst[ dstOffset + 3 ] = w1;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t;\n\t\t\tconst cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\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\tstatic multiplyQuaternionsFlat( 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\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget w() {\n\n\t\treturn this._w;\n\n\t}\n\n\tset w( value ) {\n\n\t\tthis._w = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( 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() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t}\n\n\tcopy( 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( 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( 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( 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( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < Number.EPSILON ) {\n\n\t\t\t// vFrom and vTo point in opposite directions\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( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t}\n\n\trotateTowards( 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\tidentity() {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t}\n\n\tinvert() {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t}\n\n\tconjugate() {\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( 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() {\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() {\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() {\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( 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( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t}\n\n\tmultiplyQuaternions( 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( 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\tslerpQuaternions( qa, qb, t ) {\n\n\t\treturn this.copy( qa ).slerp( qb, t );\n\n\t}\n\n\trandom() {\n\n\t\t// Derived from http://planning.cs.uiuc.edu/node198.html\n\t\t// Note, this source uses w, x, y, z ordering,\n\t\t// so we swap the order below.\n\n\t\tconst u1 = Math.random();\n\t\tconst sqrt1u1 = Math.sqrt( 1 - u1 );\n\t\tconst sqrtu1 = Math.sqrt( u1 );\n\n\t\tconst u2 = 2 * Math.PI * Math.random();\n\n\t\tconst u3 = 2 * Math.PI * Math.random();\n\n\t\treturn this.set(\n\t\t\tsqrt1u1 * Math.cos( u2 ),\n\t\t\tsqrtu1 * Math.sin( u3 ),\n\t\t\tsqrtu1 * Math.cos( u3 ),\n\t\t\tsqrt1u1 * Math.sin( u2 ),\n\t\t);\n\n\t}\n\n\tequals( 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( array, 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( array = [], 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( 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( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._w;\n\n\t}\n\n}\n\nQuaternion.prototype.isQuaternion = true;\n\nclass Vector3 {\n\n\tconstructor( x = 0, y = 0, z = 0 ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t}\n\n\tset( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\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( 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( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( 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( 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() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t}\n\n\tcopy( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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$4.setFromEuler( euler ) );\n\n\t}\n\n\tapplyAxisAngle( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromAxisAngle( axis, angle ) );\n\n\t}\n\n\tapplyMatrix3( 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( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t}\n\n\tapplyMatrix4( 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( 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( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t}\n\n\tunproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t}\n\n\ttransformDirection( 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( 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( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tmin( 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( 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( 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( 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( 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() {\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() {\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() {\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() {\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() {\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( 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() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( 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( 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( 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( 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( 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( planeNormal ) {\n\n\t\t_vector$c.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector$c );\n\n\t}\n\n\treflect( 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$c.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t}\n\n\tangleTo( 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( clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( 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( 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( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t}\n\n\tsetFromSphericalCoords( 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( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t}\n\n\tsetFromCylindricalCoords( 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( 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( 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( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t}\n\n\tsetFromMatrix3Column( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t}\n\n\tsetFromEuler( e ) {\n\n\t\tthis.x = e._x;\n\t\tthis.y = e._y;\n\t\tthis.z = e._z;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t}\n\n\tfromArray( array, 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( array = [], 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( 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() {\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\trandomDirection() {\n\n\t\t// Derived from https://mathworld.wolfram.com/SpherePointPicking.html\n\n\t\tconst u = ( Math.random() - 0.5 ) * 2;\n\t\tconst t = Math.random() * Math.PI * 2;\n\t\tconst f = Math.sqrt( 1 - u ** 2 );\n\n\t\tthis.x = f * Math.cos( t );\n\t\tthis.y = f * Math.sin( t );\n\t\tthis.z = u;\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\n\t}\n\n}\n\nVector3.prototype.isVector3 = true;\n\nconst _vector$c = /*@__PURE__*/ new Vector3();\nconst _quaternion$4 = /*@__PURE__*/ new Quaternion();\n\nclass Box3 {\n\n\tconstructor( min = new Vector3( + Infinity, + Infinity, + Infinity ), max = new Vector3( - Infinity, - Infinity, - Infinity ) ) {\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( 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( 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( 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( 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( center, size ) {\n\n\t\tconst halfSize = _vector$b.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( object, precise = false ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object, precise );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( 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() {\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() {\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( target ) {\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( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( 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( 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( 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( object, precise = false ) {\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 ( precise && geometry.attributes != undefined && geometry.attributes.position !== undefined ) {\n\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tfor ( let i = 0, l = position.count; i < l; i ++ ) {\n\n\t\t\t\t\t_vector$b.fromBufferAttribute( position, i ).applyMatrix4( object.matrixWorld );\n\t\t\t\t\tthis.expandByPoint( _vector$b );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t\t}\n\n\t\t\t\t_box$3.copy( geometry.boundingBox );\n\t\t\t\t_box$3.applyMatrix4( object.matrixWorld );\n\n\t\t\t\tthis.union( _box$3 );\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\tthis.expandByObject( children[ i ], precise );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( 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( 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( 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\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( 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( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$b );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$b.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tintersectsPlane( 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( 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$2.subVectors( triangle.a, _center );\n\t\t_v1$7.subVectors( triangle.b, _center );\n\t\t_v2$3.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$7, _v0$2 );\n\t\t_f1.subVectors( _v2$3, _v1$7 );\n\t\t_f2.subVectors( _v0$2, _v2$3 );\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$2, _v1$7, _v2$3, _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$2, _v1$7, _v2$3, _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$2, _v1$7, _v2$3, _extents );\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\tconst clampedPoint = _vector$b.copy( point ).clamp( this.min, this.max );\n\n\t\treturn clampedPoint.sub( point ).length();\n\n\t}\n\n\tgetBoundingSphere( target ) {\n\n\t\tthis.getCenter( target.center );\n\n\t\ttarget.radius = this.getSize( _vector$b ).length() * 0.5;\n\n\t\treturn target;\n\n\t}\n\n\tintersect( 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( 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( 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( 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( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nBox3.prototype.isBox3 = true;\n\nconst _points = [\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3()\n];\n\nconst _vector$b = /*@__PURE__*/ new Vector3();\n\nconst _box$3 = /*@__PURE__*/ new Box3();\n\n// triangle centered vertices\n\nconst _v0$2 = /*@__PURE__*/ new Vector3();\nconst _v1$7 = /*@__PURE__*/ new Vector3();\nconst _v2$3 = /*@__PURE__*/ new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = /*@__PURE__*/ new Vector3();\nconst _f1 = /*@__PURE__*/ new Vector3();\nconst _f2 = /*@__PURE__*/ new Vector3();\n\nconst _center = /*@__PURE__*/ new Vector3();\nconst _extents = /*@__PURE__*/ new Vector3();\nconst _triangleNormal = /*@__PURE__*/ new Vector3();\nconst _testAxis = /*@__PURE__*/ new Vector3();\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 separating 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 separating 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 separating 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$2 = /*@__PURE__*/ new Box3();\nconst _v1$6 = /*@__PURE__*/ new Vector3();\nconst _toFarthestPoint = /*@__PURE__*/ new Vector3();\nconst _toPoint = /*@__PURE__*/ new Vector3();\n\nclass Sphere {\n\n\tconstructor( center = new Vector3(), radius = - 1 ) {\n\n\t\tthis.center = center;\n\t\tthis.radius = radius;\n\n\t}\n\n\tset( 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( 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$2.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\tcopy( 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() {\n\n\t\treturn ( this.radius < 0 );\n\n\t}\n\n\tmakeEmpty() {\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( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t}\n\n\tintersectsSphere( 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( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\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( target ) {\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( 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( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\t// from https://github.com/juj/MathGeoLib/blob/2940b99b99cfe575dd45103ef20f4019dee15b54/src/Geometry/Sphere.cpp#L649-L671\n\n\t\t_toPoint.subVectors( point, this.center );\n\n\t\tconst lengthSq = _toPoint.lengthSq();\n\n\t\tif ( lengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\tconst length = Math.sqrt( lengthSq );\n\t\t\tconst missingRadiusHalf = ( length - this.radius ) * 0.5;\n\n\t\t\t// Nudge this sphere towards the target point. Add half the missing distance to radius,\n\t\t\t// and the other half to position. This gives a tighter enclosure, instead of if\n\t\t\t// the whole missing distance were just added to radius.\n\n\t\t\tthis.center.add( _toPoint.multiplyScalar( missingRadiusHalf / length ) );\n\t\t\tthis.radius += missingRadiusHalf;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tunion( sphere ) {\n\n\t\t// from https://github.com/juj/MathGeoLib/blob/2940b99b99cfe575dd45103ef20f4019dee15b54/src/Geometry/Sphere.cpp#L759-L769\n\n\t\t// To enclose another sphere into this sphere, we only need to enclose two points:\n\t\t// 1) Enclose the farthest point on the other sphere into this sphere.\n\t\t// 2) Enclose the opposite point of the farthest point into this sphere.\n\n\t\t if ( this.center.equals( sphere.center ) === true ) {\n\n\t\t\t _toFarthestPoint.set( 0, 0, 1 ).multiplyScalar( sphere.radius );\n\n\n\t\t} else {\n\n\t\t\t_toFarthestPoint.subVectors( sphere.center, this.center ).normalize().multiplyScalar( sphere.radius );\n\n\t\t}\n\n\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).add( _toFarthestPoint ) );\n\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).sub( _toFarthestPoint ) );\n\n\t\treturn this;\n\n\t}\n\n\tequals( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$a = /*@__PURE__*/ new Vector3();\nconst _segCenter = /*@__PURE__*/ new Vector3();\nconst _segDir = /*@__PURE__*/ new Vector3();\nconst _diff = /*@__PURE__*/ new Vector3();\n\nconst _edge1 = /*@__PURE__*/ new Vector3();\nconst _edge2 = /*@__PURE__*/ new Vector3();\nconst _normal$1 = /*@__PURE__*/ new Vector3();\n\nclass Ray {\n\n\tconstructor( origin = new Vector3(), direction = new Vector3( 0, 0, - 1 ) ) {\n\n\t\tthis.origin = origin;\n\t\tthis.direction = direction;\n\n\t}\n\n\tset( 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\tcopy( 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( t, target ) {\n\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t}\n\n\tlookAt( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\trecast( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$a ) );\n\n\t\treturn this;\n\n\t}\n\n\tclosestPointToPoint( point, target ) {\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( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t}\n\n\tdistanceSqToPoint( point ) {\n\n\t\tconst directionDistance = _vector$a.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$a.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\treturn _vector$a.distanceToSquared( point );\n\n\t}\n\n\tdistanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/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( sphere, target ) {\n\n\t\t_vector$a.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$a.dot( this.direction );\n\t\tconst d2 = _vector$a.dot( _vector$a ) - 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( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tdistanceToPlane( 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( 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( 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( 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( box ) {\n\n\t\treturn this.intersectBox( box, _vector$a ) !== null;\n\n\t}\n\n\tintersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal$1.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$1 );\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$1 );\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( 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( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass Matrix4 {\n\n\tconstructor() {\n\n\t\tthis.elements = [\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\tif ( arguments.length > 0 ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t\t}\n\n\t}\n\n\tset( 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() {\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() {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t}\n\n\tcopy( 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( 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\tsetFromMatrix3( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ], 0,\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ], 0,\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ], 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( 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( 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( 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$5.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1$5.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1$5.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( 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( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t}\n\n\tlookAt( 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( 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( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( 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( 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() {\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() {\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( 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\tinvert() {\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\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ], n41 = te[ 3 ],\n\t\t\tn12 = te[ 4 ], n22 = te[ 5 ], n32 = te[ 6 ], n42 = te[ 7 ],\n\t\t\tn13 = te[ 8 ], n23 = te[ 9 ], n33 = te[ 10 ], n43 = te[ 11 ],\n\t\t\tn14 = te[ 12 ], n24 = te[ 13 ], n34 = te[ 14 ], n44 = te[ 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( 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() {\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( 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( 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( 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( 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( 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\treturn this;\n\n\t}\n\n\tmakeScale( 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( xy, xz, yx, yz, zx, zy ) {\n\n\t\tthis.set(\n\n\t\t\t1, yx, zx, 0,\n\t\t\txy, 1, zy, 0,\n\t\t\txz, yz, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcompose( 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( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1$5.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tconst sy = _v1$5.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tconst sz = _v1$5.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$2.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$2.elements[ 0 ] *= invSX;\n\t\t_m1$2.elements[ 1 ] *= invSX;\n\t\t_m1$2.elements[ 2 ] *= invSX;\n\n\t\t_m1$2.elements[ 4 ] *= invSY;\n\t\t_m1$2.elements[ 5 ] *= invSY;\n\t\t_m1$2.elements[ 6 ] *= invSY;\n\n\t\t_m1$2.elements[ 8 ] *= invSZ;\n\t\t_m1$2.elements[ 9 ] *= invSZ;\n\t\t_m1$2.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1$2 );\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( 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( 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( 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( array, 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( array = [], 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\nMatrix4.prototype.isMatrix4 = true;\n\nconst _v1$5 = /*@__PURE__*/ new Vector3();\nconst _m1$2 = /*@__PURE__*/ new Matrix4();\nconst _zero = /*@__PURE__*/ new Vector3( 0, 0, 0 );\nconst _one = /*@__PURE__*/ new Vector3( 1, 1, 1 );\nconst _x = /*@__PURE__*/ new Vector3();\nconst _y = /*@__PURE__*/ new Vector3();\nconst _z = /*@__PURE__*/ new Vector3();\n\nconst _matrix$1 = /*@__PURE__*/ new Matrix4();\nconst _quaternion$3 = /*@__PURE__*/ new Quaternion();\n\nclass Euler {\n\n\tconstructor( x = 0, y = 0, z = 0, order = Euler.DefaultOrder ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget order() {\n\n\t\treturn this._order;\n\n\t}\n\n\tset order( value ) {\n\n\t\tthis._order = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, order = this._order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t}\n\n\tcopy( 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( m, order = this._order, update = true ) {\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\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 === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromQuaternion( q, order, update ) {\n\n\t\t_matrix$1.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix$1, order, update );\n\n\t}\n\n\tsetFromVector3( v, order = this._order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order );\n\n\t}\n\n\treorder( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$3.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$3, newOrder );\n\n\t}\n\n\tequals( 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( 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( array = [], 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\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._order;\n\n\t}\n\n}\n\nEuler.prototype.isEuler = true;\n\nEuler.DefaultOrder = 'XYZ';\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nclass Layers {\n\n\tconstructor() {\n\n\t\tthis.mask = 1 | 0;\n\n\t}\n\n\tset( channel ) {\n\n\t\tthis.mask = ( 1 << channel | 0 ) >>> 0;\n\n\t}\n\n\tenable( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t}\n\n\tenableAll() {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t}\n\n\ttoggle( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t}\n\n\tdisable( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t}\n\n\tdisableAll() {\n\n\t\tthis.mask = 0;\n\n\t}\n\n\ttest( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n\tisEnabled( channel ) {\n\n\t\treturn ( this.mask & ( 1 << channel | 0 ) ) !== 0;\n\n\t}\n\n}\n\nlet _object3DId = 0;\n\nconst _v1$4 = /*@__PURE__*/ new Vector3();\nconst _q1 = /*@__PURE__*/ new Quaternion();\nconst _m1$1 = /*@__PURE__*/ new Matrix4();\nconst _target = /*@__PURE__*/ new Vector3();\n\nconst _position$3 = /*@__PURE__*/ new Vector3();\nconst _scale$2 = /*@__PURE__*/ new Vector3();\nconst _quaternion$2 = /*@__PURE__*/ new Quaternion();\n\nconst _xAxis = /*@__PURE__*/ new Vector3( 1, 0, 0 );\nconst _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nconst _zAxis = /*@__PURE__*/ new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\nclass Object3D extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Object3D';\n\n\t\tthis.parent = null;\n\t\tthis.children = [];\n\n\t\tthis.up = Object3D.DefaultUp.clone();\n\n\t\tconst position = new Vector3();\n\t\tconst rotation = new Euler();\n\t\tconst quaternion = new Quaternion();\n\t\tconst scale = new Vector3( 1, 1, 1 );\n\n\t\tfunction onRotationChange() {\n\n\t\t\tquaternion.setFromEuler( rotation, false );\n\n\t\t}\n\n\t\tfunction onQuaternionChange() {\n\n\t\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t\t}\n\n\t\trotation._onChange( onRotationChange );\n\t\tquaternion._onChange( onQuaternionChange );\n\n\t\tObject.defineProperties( this, {\n\t\t\tposition: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: position\n\t\t\t},\n\t\t\trotation: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: rotation\n\t\t\t},\n\t\t\tquaternion: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: quaternion\n\t\t\t},\n\t\t\tscale: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: scale\n\t\t\t},\n\t\t\tmodelViewMatrix: {\n\t\t\t\tvalue: new Matrix4()\n\t\t\t},\n\t\t\tnormalMatrix: {\n\t\t\t\tvalue: new Matrix3()\n\t\t\t}\n\t\t} );\n\n\t\tthis.matrix = new Matrix4();\n\t\tthis.matrixWorld = new Matrix4();\n\n\t\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\tthis.layers = new Layers();\n\t\tthis.visible = true;\n\n\t\tthis.castShadow = false;\n\t\tthis.receiveShadow = false;\n\n\t\tthis.frustumCulled = true;\n\t\tthis.renderOrder = 0;\n\n\t\tthis.animations = [];\n\n\t\tthis.userData = {};\n\n\t}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tonAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tapplyMatrix4( 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( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t}\n\n\tsetRotationFromAxisAngle( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t}\n\n\tsetRotationFromEuler( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t}\n\n\tsetRotationFromMatrix( 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( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t}\n\n\trotateOnAxis( 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( 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( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t}\n\n\trotateY( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t}\n\n\ttranslateOnAxis( 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$4.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$4.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslateX( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t}\n\n\ttranslateY( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t}\n\n\ttranslateZ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t}\n\n\tlocalToWorld( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t}\n\n\tworldToLocal( vector ) {\n\n\t\treturn vector.applyMatrix4( _m1$1.copy( this.matrixWorld ).invert() );\n\n\t}\n\n\tlookAt( 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$3.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position$3, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position$3, 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.invert() );\n\n\t\t}\n\n\t}\n\n\tadd( 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( 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\tremoveFromParent() {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tparent.remove( this );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclear() {\n\n\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\tconst object = this.children[ i ];\n\n\t\t\tobject.parent = null;\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\tthis.children.length = 0;\n\n\t\treturn this;\n\n\n\t}\n\n\tattach( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\t// Note: This method does not support scene graphs having non-uniformly-scaled nodes(s)\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.copy( this.matrixWorld ).invert();\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\tthis.add( object );\n\n\t\tobject.updateWorldMatrix( false, true );\n\n\t\treturn this;\n\n\t}\n\n\tgetObjectById( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t}\n\n\tgetObjectByName( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t}\n\n\tgetObjectByProperty( 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( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t}\n\n\tgetWorldQuaternion( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, target, _scale$2 );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldScale( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$2, target );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\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( /* raycaster, intersects */ ) {}\n\n\ttraverse( 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( 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( 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() {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\tupdateMatrixWorld( 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( 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( 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\tskeletons: {},\n\t\t\t\tanimations: {},\n\t\t\t\tnodes: {}\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\t\t\tif ( this.instanceColor !== null ) object.instanceColor = this.instanceColor.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.isScene ) {\n\n\t\t\tif ( this.background ) {\n\n\t\t\t\tif ( this.background.isColor ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON();\n\n\t\t\t\t} else if ( this.background.isTexture ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON( meta ).uuid;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.environment && this.environment.isTexture ) {\n\n\t\t\t\tobject.environment = this.environment.toJSON( meta ).uuid;\n\n\t\t\t}\n\n\t\t} else if ( 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.isSkinnedMesh ) {\n\n\t\t\tobject.bindMode = this.bindMode;\n\t\t\tobject.bindMatrix = this.bindMatrix.toArray();\n\n\t\t\tif ( this.skeleton !== undefined ) {\n\n\t\t\t\tserialize( meta.skeletons, this.skeleton );\n\n\t\t\t\tobject.skeleton = this.skeleton.uuid;\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\t//\n\n\t\tif ( this.animations.length > 0 ) {\n\n\t\t\tobject.animations = [];\n\n\t\t\tfor ( let i = 0; i < this.animations.length; i ++ ) {\n\n\t\t\t\tconst animation = this.animations[ i ];\n\n\t\t\t\tobject.animations.push( serialize( meta.animations, animation ) );\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\t\t\tconst skeletons = extractFromCache( meta.skeletons );\n\t\t\tconst animations = extractFromCache( meta.animations );\n\t\t\tconst nodes = extractFromCache( meta.nodes );\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\t\t\tif ( skeletons.length > 0 ) output.skeletons = skeletons;\n\t\t\tif ( animations.length > 0 ) output.animations = animations;\n\t\t\tif ( nodes.length > 0 ) output.nodes = nodes;\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( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t}\n\n\tcopy( source, 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.rotation.order = source.rotation.order;\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\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nObject3D.prototype.isObject3D = true;\n\nconst _v0$1 = /*@__PURE__*/ new Vector3();\nconst _v1$3 = /*@__PURE__*/ new Vector3();\nconst _v2$2 = /*@__PURE__*/ new Vector3();\nconst _v3$1 = /*@__PURE__*/ new Vector3();\n\nconst _vab = /*@__PURE__*/ new Vector3();\nconst _vac = /*@__PURE__*/ new Vector3();\nconst _vbc = /*@__PURE__*/ new Vector3();\nconst _vap = /*@__PURE__*/ new Vector3();\nconst _vbp = /*@__PURE__*/ new Vector3();\nconst _vcp = /*@__PURE__*/ new Vector3();\n\nclass Triangle {\n\n\tconstructor( a = new Vector3(), b = new Vector3(), c = new Vector3() ) {\n\n\t\tthis.a = a;\n\t\tthis.b = b;\n\t\tthis.c = c;\n\n\t}\n\n\tstatic getNormal( a, b, c, target ) {\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\tstatic getBarycoord( 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$2.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$2 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$2 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\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\tstatic containsPoint( point, a, b, c ) {\n\n\t\tthis.getBarycoord( point, a, b, c, _v3$1 );\n\n\t\treturn ( _v3$1.x >= 0 ) && ( _v3$1.y >= 0 ) && ( ( _v3$1.x + _v3$1.y ) <= 1 );\n\n\t}\n\n\tstatic getUV( point, p1, p2, p3, uv1, uv2, uv3, target ) {\n\n\t\tthis.getBarycoord( point, p1, p2, p3, _v3$1 );\n\n\t\ttarget.set( 0, 0 );\n\t\ttarget.addScaledVector( uv1, _v3$1.x );\n\t\ttarget.addScaledVector( uv2, _v3$1.y );\n\t\ttarget.addScaledVector( uv3, _v3$1.z );\n\n\t\treturn target;\n\n\t}\n\n\tstatic isFrontFacing( 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\tset( 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( 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\tsetFromAttributeAndIndices( attribute, i0, i1, i2 ) {\n\n\t\tthis.a.fromBufferAttribute( attribute, i0 );\n\t\tthis.b.fromBufferAttribute( attribute, i1 );\n\t\tthis.c.fromBufferAttribute( attribute, i2 );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( 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() {\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( target ) {\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t}\n\n\tgetNormal( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t}\n\n\tgetPlane( target ) {\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t}\n\n\tgetBarycoord( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t}\n\n\tgetUV( 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( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t}\n\n\tisFrontFacing( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t}\n\n\tclosestPointToPoint( p, target ) {\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( 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\nlet materialId = 0;\n\nclass Material extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'id', { value: materialId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Material';\n\n\t\tthis.blending = NormalBlending;\n\t\tthis.side = FrontSide;\n\t\tthis.vertexColors = false;\n\n\t\tthis.opacity = 1;\n\t\tthis.transparent = false;\n\n\t\tthis.blendSrc = SrcAlphaFactor;\n\t\tthis.blendDst = OneMinusSrcAlphaFactor;\n\t\tthis.blendEquation = AddEquation;\n\t\tthis.blendSrcAlpha = null;\n\t\tthis.blendDstAlpha = null;\n\t\tthis.blendEquationAlpha = null;\n\n\t\tthis.depthFunc = LessEqualDepth;\n\t\tthis.depthTest = true;\n\t\tthis.depthWrite = true;\n\n\t\tthis.stencilWriteMask = 0xff;\n\t\tthis.stencilFunc = AlwaysStencilFunc;\n\t\tthis.stencilRef = 0;\n\t\tthis.stencilFuncMask = 0xff;\n\t\tthis.stencilFail = KeepStencilOp;\n\t\tthis.stencilZFail = KeepStencilOp;\n\t\tthis.stencilZPass = KeepStencilOp;\n\t\tthis.stencilWrite = false;\n\n\t\tthis.clippingPlanes = null;\n\t\tthis.clipIntersection = false;\n\t\tthis.clipShadows = false;\n\n\t\tthis.shadowSide = null;\n\n\t\tthis.colorWrite = true;\n\n\t\tthis.precision = null; // override the renderer's default precision for this material\n\n\t\tthis.polygonOffset = false;\n\t\tthis.polygonOffsetFactor = 0;\n\t\tthis.polygonOffsetUnits = 0;\n\n\t\tthis.dithering = false;\n\n\t\tthis.alphaToCoverage = false;\n\t\tthis.premultipliedAlpha = false;\n\n\t\tthis.visible = true;\n\n\t\tthis.toneMapped = true;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\n\t\tthis._alphaTest = 0;\n\n\t}\n\n\tget alphaTest() {\n\n\t\treturn this._alphaTest;\n\n\t}\n\n\tset alphaTest( value ) {\n\n\t\tif ( this._alphaTest > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._alphaTest = value;\n\n\t}\n\n\tonBuild( /* shaderobject, renderer */ ) {}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, object, group */ ) {}\n\n\tonBeforeCompile( /* shaderobject, renderer */ ) {}\n\n\tcustomProgramCacheKey() {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t}\n\n\tsetValues( 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 compatibility 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( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRootObject ) {\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 !== undefined ) data.sheen = this.sheen;\n\t\tif ( this.sheenColor && this.sheenColor.isColor ) data.sheenColor = this.sheenColor.getHex();\n\t\tif ( this.sheenRoughness !== undefined ) data.sheenRoughness = this.sheenRoughness;\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.specularIntensity !== undefined ) data.specularIntensity = this.specularIntensity;\n\t\tif ( this.specularColor && this.specularColor.isColor ) data.specularColor = this.specularColor.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\n\t\tif ( this.lightMap && this.lightMap.isTexture ) {\n\n\t\t\tdata.lightMap = this.lightMap.toJSON( meta ).uuid;\n\t\t\tdata.lightMapIntensity = this.lightMapIntensity;\n\n\t\t}\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\t\tif ( this.specularIntensityMap && this.specularIntensityMap.isTexture ) data.specularIntensityMap = this.specularIntensityMap.toJSON( meta ).uuid;\n\t\tif ( this.specularColorMap && this.specularColorMap.isTexture ) data.specularColorMap = this.specularColorMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\n\t\t}\n\n\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\t\tif ( this.reflectivity !== undefined ) data.reflectivity = this.reflectivity;\n\t\tif ( this.refractionRatio !== undefined ) data.refractionRatio = this.refractionRatio;\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.transmission !== undefined ) data.transmission = this.transmission;\n\t\tif ( this.transmissionMap && this.transmissionMap.isTexture ) data.transmissionMap = this.transmissionMap.toJSON( meta ).uuid;\n\t\tif ( this.thickness !== undefined ) data.thickness = this.thickness;\n\t\tif ( this.thicknessMap && this.thicknessMap.isTexture ) data.thicknessMap = this.thicknessMap.toJSON( meta ).uuid;\n\t\tif ( this.attenuationDistance !== undefined ) data.attenuationDistance = this.attenuationDistance;\n\t\tif ( this.attenuationColor !== undefined ) data.attenuationColor = this.attenuationColor.getHex();\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.shadowSide !== null ) data.shadowSide = this.shadowSide;\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.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\t\tdata.colorWrite = this.colorWrite;\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 !== undefined && 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 !== undefined && 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.alphaToCoverage === true ) data.alphaToCoverage = this.alphaToCoverage;\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.flatShading === true ) data.flatShading = this.flatShading;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( this.fog === false ) data.fog = 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 ( isRootObject ) {\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() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\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.alphaToCoverage = source.alphaToCoverage;\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() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n}\n\nMaterial.prototype.isMaterial = true;\n\nMaterial.fromType = function ( /*type*/ ) {\n\n\t// TODO: Behavior added in Materials.js\n\n\treturn null;\n\n};\n\nclass MeshBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // emissive\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\nconst _vector$9 = /*@__PURE__*/ new Vector3();\nconst _vector2$1 = /*@__PURE__*/ new Vector2();\n\nclass BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.name = '';\n\n\t\tthis.array = array;\n\t\tthis.itemSize = itemSize;\n\t\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\t\tthis.normalized = normalized === true;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.updateRange = { offset: 0, count: - 1 };\n\n\t\tthis.version = 0;\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( 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( 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( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t}\n\n\tcopyColorsArray( 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( 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( 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( 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( 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$9.fromBufferAttribute( this, i );\n\t\t\t\t_vector$9.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( 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( 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( 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( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\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\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( this.usage !== StaticDrawUsage ) data.usage = this.usage;\n\t\tif ( this.updateRange.offset !== 0 || this.updateRange.count !== - 1 ) data.updateRange = this.updateRange;\n\n\t\treturn data;\n\n\t}\n\n}\n\nBufferAttribute.prototype.isBufferAttribute = true;\n\n//\n\nclass Int8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8ClampedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8ClampedArray( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nFloat16BufferAttribute.prototype.isFloat16BufferAttribute = true;\n\nclass Float32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float64BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float64Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nlet _id$1 = 0;\n\nconst _m1 = /*@__PURE__*/ new Matrix4();\nconst _obj = /*@__PURE__*/ new Object3D();\nconst _offset = /*@__PURE__*/ new Vector3();\nconst _box$1 = /*@__PURE__*/ new Box3();\nconst _boxMorphTargets = /*@__PURE__*/ new Box3();\nconst _vector$8 = /*@__PURE__*/ new Vector3();\n\nclass BufferGeometry extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'id', { value: _id$1 ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'BufferGeometry';\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\n\t\tthis.morphAttributes = {};\n\t\tthis.morphTargetsRelative = false;\n\n\t\tthis.groups = [];\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tthis.drawRange = { start: 0, count: Infinity };\n\n\t\tthis.userData = {};\n\n\t}\n\n\tgetIndex() {\n\n\t\treturn this.index;\n\n\t}\n\n\tsetIndex( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayNeedsUint32( index ) ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetAttribute( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t}\n\n\tsetAttribute( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t}\n\n\tdeleteAttribute( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t}\n\n\thasAttribute( name ) {\n\n\t\treturn this.attributes[ name ] !== undefined;\n\n\t}\n\n\taddGroup( start, count, materialIndex = 0 ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex\n\n\t\t} );\n\n\t}\n\n\tclearGroups() {\n\n\t\tthis.groups = [];\n\n\t}\n\n\tsetDrawRange( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t}\n\n\tapplyMatrix4( 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\tapplyQuaternion( q ) {\n\n\t\t_m1.makeRotationFromQuaternion( q );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateY( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tscale( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tlookAt( 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() {\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\tsetFromPoints( 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\tcomputeBoundingBox() {\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 && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingBox.set(\n\t\t\t\tnew Vector3( - Infinity, - Infinity, - Infinity ),\n\t\t\t\tnew Vector3( + Infinity, + Infinity, + Infinity )\n\t\t\t);\n\n\t\t\treturn;\n\n\t\t}\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$1.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.min, _box$1.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.max, _box$1.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$1.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$1.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() {\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 && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingSphere.set( new Vector3(), Infinity );\n\n\t\t\treturn;\n\n\t\t}\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$1.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$8.addVectors( _box$1.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$1.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$1.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$1.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$1.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$1.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$1.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$8.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\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$8.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$8.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\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\tcomputeTangents() {\n\n\t\tconst index = this.index;\n\t\tconst attributes = this.attributes;\n\n\t\t// based on http://www.terathon.com/code/tangent.html\n\t\t// (per vertex tangents)\n\n\t\tif ( index === null ||\n\t\t\t attributes.position === undefined ||\n\t\t\t attributes.normal === undefined ||\n\t\t\t attributes.uv === undefined ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst indices = index.array;\n\t\tconst positions = attributes.position.array;\n\t\tconst normals = attributes.normal.array;\n\t\tconst uvs = attributes.uv.array;\n\n\t\tconst nVertices = positions.length / 3;\n\n\t\tif ( this.hasAttribute( 'tangent' ) === false ) {\n\n\t\t\tthis.setAttribute( 'tangent', new BufferAttribute( new Float32Array( 4 * nVertices ), 4 ) );\n\n\t\t}\n\n\t\tconst tangents = this.getAttribute( 'tangent' ).array;\n\n\t\tconst tan1 = [], tan2 = [];\n\n\t\tfor ( let i = 0; i < nVertices; i ++ ) {\n\n\t\t\ttan1[ i ] = new Vector3();\n\t\t\ttan2[ i ] = new Vector3();\n\n\t\t}\n\n\t\tconst vA = new Vector3(),\n\t\t\tvB = new Vector3(),\n\t\t\tvC = new Vector3(),\n\n\t\t\tuvA = new Vector2(),\n\t\t\tuvB = new Vector2(),\n\t\t\tuvC = new Vector2(),\n\n\t\t\tsdir = new Vector3(),\n\t\t\ttdir = new Vector3();\n\n\t\tfunction handleTriangle( a, b, c ) {\n\n\t\t\tvA.fromArray( positions, a * 3 );\n\t\t\tvB.fromArray( positions, b * 3 );\n\t\t\tvC.fromArray( positions, c * 3 );\n\n\t\t\tuvA.fromArray( uvs, a * 2 );\n\t\t\tuvB.fromArray( uvs, b * 2 );\n\t\t\tuvC.fromArray( uvs, c * 2 );\n\n\t\t\tvB.sub( vA );\n\t\t\tvC.sub( vA );\n\n\t\t\tuvB.sub( uvA );\n\t\t\tuvC.sub( uvA );\n\n\t\t\tconst r = 1.0 / ( uvB.x * uvC.y - uvC.x * uvB.y );\n\n\t\t\t// silently ignore degenerate uv triangles having coincident or colinear vertices\n\n\t\t\tif ( ! isFinite( r ) ) return;\n\n\t\t\tsdir.copy( vB ).multiplyScalar( uvC.y ).addScaledVector( vC, - uvB.y ).multiplyScalar( r );\n\t\t\ttdir.copy( vC ).multiplyScalar( uvB.x ).addScaledVector( vB, - uvC.x ).multiplyScalar( r );\n\n\t\t\ttan1[ a ].add( sdir );\n\t\t\ttan1[ b ].add( sdir );\n\t\t\ttan1[ c ].add( sdir );\n\n\t\t\ttan2[ a ].add( tdir );\n\t\t\ttan2[ b ].add( tdir );\n\t\t\ttan2[ c ].add( tdir );\n\n\t\t}\n\n\t\tlet groups = this.groups;\n\n\t\tif ( groups.length === 0 ) {\n\n\t\t\tgroups = [ {\n\t\t\t\tstart: 0,\n\t\t\t\tcount: indices.length\n\t\t\t} ];\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleTriangle(\n\t\t\t\t\tindices[ j + 0 ],\n\t\t\t\t\tindices[ j + 1 ],\n\t\t\t\t\tindices[ j + 2 ]\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst tmp = new Vector3(), tmp2 = new Vector3();\n\t\tconst n = new Vector3(), n2 = new Vector3();\n\n\t\tfunction handleVertex( v ) {\n\n\t\t\tn.fromArray( normals, v * 3 );\n\t\t\tn2.copy( n );\n\n\t\t\tconst t = tan1[ v ];\n\n\t\t\t// Gram-Schmidt orthogonalize\n\n\t\t\ttmp.copy( t );\n\t\t\ttmp.sub( n.multiplyScalar( n.dot( t ) ) ).normalize();\n\n\t\t\t// Calculate handedness\n\n\t\t\ttmp2.crossVectors( n2, t );\n\t\t\tconst test = tmp2.dot( tan2[ v ] );\n\t\t\tconst w = ( test < 0.0 ) ? - 1.0 : 1.0;\n\n\t\t\ttangents[ v * 4 ] = tmp.x;\n\t\t\ttangents[ v * 4 + 1 ] = tmp.y;\n\t\t\ttangents[ v * 4 + 2 ] = tmp.z;\n\t\t\ttangents[ v * 4 + 3 ] = w;\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleVertex( indices[ j + 0 ] );\n\t\t\t\thandleVertex( indices[ j + 1 ] );\n\t\t\t\thandleVertex( indices[ j + 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeVertexNormals() {\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( 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() {\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$8.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$8.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$8.x, _vector$8.y, _vector$8.z );\n\n\t\t}\n\n\t}\n\n\ttoNonIndexed() {\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\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\tindex = indices[ i ] * attribute.data.stride + attribute.offset;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\t}\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(): BufferGeometry 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() {\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\t// for simplicity the code assumes attributes are not shared across geometries, see #15811\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\tdata.data.attributes[ key ] = attribute.toJSON( data.data );\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\tarray.push( attribute.toJSON( data.data ) );\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() {\n\n\t\t return new this.constructor().copy( this );\n\n\t}\n\n\tcopy( 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\t// geometry generator parameters\n\n\t\tif ( source.parameters !== undefined ) this.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nBufferGeometry.prototype.isBufferGeometry = true;\n\nconst _inverseMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _ray$2 = /*@__PURE__*/ new Ray();\nconst _sphere$3 = /*@__PURE__*/ new Sphere();\n\nconst _vA$1 = /*@__PURE__*/ new Vector3();\nconst _vB$1 = /*@__PURE__*/ new Vector3();\nconst _vC$1 = /*@__PURE__*/ new Vector3();\n\nconst _tempA = /*@__PURE__*/ new Vector3();\nconst _tempB = /*@__PURE__*/ new Vector3();\nconst _tempC = /*@__PURE__*/ new Vector3();\n\nconst _morphA = /*@__PURE__*/ new Vector3();\nconst _morphB = /*@__PURE__*/ new Vector3();\nconst _morphC = /*@__PURE__*/ new Vector3();\n\nconst _uvA$1 = /*@__PURE__*/ new Vector2();\nconst _uvB$1 = /*@__PURE__*/ new Vector2();\nconst _uvC$1 = /*@__PURE__*/ new Vector2();\n\nconst _intersectionPoint = /*@__PURE__*/ new Vector3();\nconst _intersectionPointWorld = /*@__PURE__*/ new Vector3();\n\nclass Mesh extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new MeshBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Mesh';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( 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() {\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( 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$3.copy( geometry.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$2.copy( matrixWorld ).invert();\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\t// Check boundingBox before continuing\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray$2.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( index.count, 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$2, 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$2, 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( position.count, 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$2, 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$2, 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\tconsole.error( 'THREE.Mesh.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t}\n\n}\n\nMesh.prototype.isMesh = true;\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$1.fromBufferAttribute( position, a );\n\t_vB$1.fromBufferAttribute( position, b );\n\t_vC$1.fromBufferAttribute( position, c );\n\n\tconst morphInfluences = object.morphTargetInfluences;\n\n\tif ( 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$1 ), influence );\n\t\t\t\t_morphB.addScaledVector( _tempB.sub( _vB$1 ), influence );\n\t\t\t\t_morphC.addScaledVector( _tempC.sub( _vC$1 ), influence );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_vA$1.add( _morphA );\n\t\t_vB$1.add( _morphB );\n\t\t_vC$1.add( _morphC );\n\n\t}\n\n\tif ( object.isSkinnedMesh ) {\n\n\t\tobject.boneTransform( a, _vA$1 );\n\t\tobject.boneTransform( b, _vB$1 );\n\t\tobject.boneTransform( c, _vC$1 );\n\n\t}\n\n\tconst intersection = checkIntersection( object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv2 ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv2, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv2, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv2, c );\n\n\t\t\tintersection.uv2 = Triangle.getUV( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tconst face = {\n\t\t\ta: a,\n\t\t\tb: b,\n\t\t\tc: c,\n\t\t\tnormal: new Vector3(),\n\t\t\tmaterialIndex: 0\n\t\t};\n\n\t\tTriangle.getNormal( _vA$1, _vB$1, _vC$1, face.normal );\n\n\t\tintersection.face = face;\n\n\t}\n\n\treturn intersection;\n\n}\n\nclass BoxGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {\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\tconst scope = this;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\t\tdepthSegments = Math.floor( depthSegments );\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\tstatic fromJSON( data ) {\n\n\t\treturn new BoxGeometry( data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments );\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 || property.isQuaternion ) ) {\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\nclass ShaderMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ShaderMaterial';\n\n\t\tthis.defines = {};\n\t\tthis.uniforms = {};\n\n\t\tthis.vertexShader = default_vertex;\n\t\tthis.fragmentShader = default_fragment;\n\n\t\tthis.linewidth = 1;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.fog = false; // set to use scene fog\n\t\tthis.lights = false; // set to use scene lights\n\t\tthis.clipping = false; // set to use user-defined clipping planes\n\n\t\tthis.extensions = {\n\t\t\tderivatives: false, // set to use derivatives\n\t\t\tfragDepth: false, // set to use fragment depth values\n\t\t\tdrawBuffers: false, // set to use draw buffers\n\t\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t\t};\n\n\t\t// When rendered geometry doesn't include these attributes but the material does,\n\t\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\t\tthis.defaultAttributeValues = {\n\t\t\t'color': [ 1, 1, 1 ],\n\t\t\t'uv': [ 0, 0 ],\n\t\t\t'uv2': [ 0, 0 ]\n\t\t};\n\n\t\tthis.index0AttributeName = undefined;\n\t\tthis.uniformsNeedUpdate = false;\n\n\t\tthis.glslVersion = null;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t\tthis.setValues( parameters );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.fragmentShader = source.fragmentShader;\n\t\tthis.vertexShader = source.vertexShader;\n\n\t\tthis.uniforms = cloneUniforms( source.uniforms );\n\n\t\tthis.defines = Object.assign( {}, source.defines );\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.fog = source.fog;\n\t\tthis.lights = source.lights;\n\t\tthis.clipping = source.clipping;\n\n\t\tthis.extensions = Object.assign( {}, source.extensions );\n\n\t\tthis.glslVersion = source.glslVersion;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.glslVersion = this.glslVersion;\n\t\tdata.uniforms = {};\n\n\t\tfor ( const name in this.uniforms ) {\n\n\t\t\tconst uniform = this.uniforms[ name ];\n\t\t\tconst value = uniform.value;\n\n\t\t\tif ( value && value.isTexture ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 't',\n\t\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isColor ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'c',\n\t\t\t\t\tvalue: value.getHex()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v2',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\n\t\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\t\tdata.vertexShader = this.vertexShader;\n\t\tdata.fragmentShader = this.fragmentShader;\n\n\t\tconst extensions = {};\n\n\t\tfor ( const key in this.extensions ) {\n\n\t\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t\t}\n\n\t\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\t\treturn data;\n\n\t}\n\n}\n\nShaderMaterial.prototype.isShaderMaterial = true;\n\nclass Camera extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'Camera';\n\n\t\tthis.matrixWorldInverse = new Matrix4();\n\n\t\tthis.projectionMatrix = new Matrix4();\n\t\tthis.projectionMatrixInverse = new Matrix4();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( 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( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\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( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tsuper.updateWorldMatrix( updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nCamera.prototype.isCamera = true;\n\nclass PerspectiveCamera extends Camera {\n\n\tconstructor( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PerspectiveCamera';\n\n\t\tthis.fov = fov;\n\t\tthis.zoom = 1;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.focus = 10;\n\n\t\tthis.aspect = aspect;\n\t\tthis.view = null;\n\n\t\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\t\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( 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( focalLength ) {\n\n\t\t/** see {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = 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() {\n\n\t\tconst vExtentSlope = Math.tan( DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t}\n\n\tgetEffectiveFOV() {\n\n\t\treturn RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t}\n\n\tgetFilmWidth() {\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() {\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( 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() {\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() {\n\n\t\tconst near = this.near;\n\t\tlet top = near * Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom;\n\t\tlet height = 2 * top;\n\t\tlet width = this.aspect * height;\n\t\tlet left = - 0.5 * width;\n\t\tconst view = 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.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( 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\nPerspectiveCamera.prototype.isPerspectiveCamera = true;\n\nconst fov = 90, aspect = 1;\n\nclass CubeCamera extends Object3D {\n\n\tconstructor( near, far, renderTarget ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubeCamera';\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget !== true ) {\n\n\t\t\tconsole.error( 'THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.renderTarget = renderTarget;\n\n\t\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPX.layers = this.layers;\n\t\tcameraPX.up.set( 0, - 1, 0 );\n\t\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\t\tthis.add( cameraPX );\n\n\t\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNX.layers = this.layers;\n\t\tcameraNX.up.set( 0, - 1, 0 );\n\t\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\t\tthis.add( cameraNX );\n\n\t\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPY.layers = this.layers;\n\t\tcameraPY.up.set( 0, 0, 1 );\n\t\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\t\tthis.add( cameraPY );\n\n\t\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNY.layers = this.layers;\n\t\tcameraNY.up.set( 0, 0, - 1 );\n\t\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\t\tthis.add( cameraNY );\n\n\t\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPZ.layers = this.layers;\n\t\tcameraPZ.up.set( 0, - 1, 0 );\n\t\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\t\tthis.add( cameraPZ );\n\n\t\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNZ.layers = this.layers;\n\t\tcameraNZ.up.set( 0, - 1, 0 );\n\t\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\t\tthis.add( cameraNZ );\n\n\t}\n\n\tupdate( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst renderTarget = this.renderTarget;\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = this.children;\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst currentToneMapping = renderer.toneMapping;\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\n\t\trenderer.toneMapping = NoToneMapping;\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.toneMapping = currentToneMapping;\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t\trenderTarget.texture.needsPMREMUpdate = true;\n\n\t}\n\n}\n\nclass CubeTexture extends Texture {\n\n\tconstructor( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\t\timages = images !== undefined ? images : [];\n\t\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\n\t\tsuper( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.flipY = false;\n\n\t}\n\n\tget images() {\n\n\t\treturn this.image;\n\n\t}\n\n\tset images( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n}\n\nCubeTexture.prototype.isCubeTexture = true;\n\nclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( size, options = {} ) {\n\n\t\tsuper( size, size, options );\n\n\t\tconst image = { width: size, height: size, depth: 1 };\n\t\tconst images = [ image, image, image, image, image, image ];\n\n\t\tthis.texture = new CubeTexture( images, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\t\t// By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)\n\t\t// in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words,\n\t\t// in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly.\n\n\t\t// three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped\n\t\t// and the flag isRenderTargetTexture controls this conversion. The flip is not required when using WebGLCubeRenderTarget.texture\n\t\t// as a cube texture (this is detected when isRenderTargetTexture is set to true for cube textures).\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t}\n\n\tfromEquirectangularTexture( renderer, texture ) {\n\n\t\tthis.texture.type = texture.type;\n\t\tthis.texture.encoding = texture.encoding;\n\n\t\tthis.texture.generateMipmaps = texture.generateMipmaps;\n\t\tthis.texture.minFilter = texture.minFilter;\n\t\tthis.texture.magFilter = texture.magFilter;\n\n\t\tconst shader = {\n\n\t\t\tuniforms: {\n\t\t\t\ttEquirect: { value: null },\n\t\t\t},\n\n\t\t\tvertexShader: /* glsl */`\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t`,\n\n\t\t\tfragmentShader: /* glsl */`\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`\n\t\t};\n\n\t\tconst geometry = new BoxGeometry( 5, 5, 5 );\n\n\t\tconst material = new ShaderMaterial( {\n\n\t\t\tname: 'CubemapFromEquirect',\n\n\t\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tside: BackSide,\n\t\t\tblending: NoBlending\n\n\t\t} );\n\n\t\tmaterial.uniforms.tEquirect.value = texture;\n\n\t\tconst mesh = new Mesh( geometry, material );\n\n\t\tconst currentMinFilter = texture.minFilter;\n\n\t\t// Avoid blurred poles\n\t\tif ( texture.minFilter === LinearMipmapLinearFilter ) texture.minFilter = LinearFilter;\n\n\t\tconst camera = new CubeCamera( 1, 10, this );\n\t\tcamera.update( renderer, mesh );\n\n\t\ttexture.minFilter = currentMinFilter;\n\n\t\tmesh.geometry.dispose();\n\t\tmesh.material.dispose();\n\n\t\treturn this;\n\n\t}\n\n\tclear( 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( this, 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\nWebGLCubeRenderTarget.prototype.isWebGLCubeRenderTarget = true;\n\nconst _vector1 = /*@__PURE__*/ new Vector3();\nconst _vector2 = /*@__PURE__*/ new Vector3();\nconst _normalMatrix = /*@__PURE__*/ new Matrix3();\n\nclass Plane {\n\n\tconstructor( normal = new Vector3( 1, 0, 0 ), constant = 0 ) {\n\n\t\t// normal is assumed to be normalized\n\n\t\tthis.normal = normal;\n\t\tthis.constant = constant;\n\n\t}\n\n\tset( 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( 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( 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( 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\tcopy( 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() {\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() {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t}\n\n\tdistanceToSphere( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t}\n\n\tprojectPoint( point, target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\n\n\t}\n\n\tintersectLine( line, target ) {\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 null;\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 null;\n\n\t\t}\n\n\t\treturn target.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t}\n\n\tintersectsLine( 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( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t}\n\n\tcoplanarPoint( target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t}\n\n\tapplyMatrix4( 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( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tequals( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nPlane.prototype.isPlane = true;\n\nconst _sphere$2 = /*@__PURE__*/ new Sphere();\nconst _vector$7 = /*@__PURE__*/ new Vector3();\n\nclass Frustum {\n\n\tconstructor( p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane() ) {\n\n\t\tthis.planes = [ p0, p1, p2, p3, p4, p5 ];\n\n\t}\n\n\tset( 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\tcopy( 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( 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( object ) {\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$2.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$2 );\n\n\t}\n\n\tintersectsSprite( sprite ) {\n\n\t\t_sphere$2.center.set( 0, 0, 0 );\n\t\t_sphere$2.radius = 0.7071067811865476;\n\t\t_sphere$2.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$2 );\n\n\t}\n\n\tintersectsSphere( 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( 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$7.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$7.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$7.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$7 ) < 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( 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\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\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\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;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = 5126;\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\tif ( attribute.isFloat16BufferAttribute ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\ttype = 5131;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\ttype = 5123;\n\n\t\t\t}\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} else if ( array instanceof Uint8ClampedArray ) {\n\n\t\t\ttype = 5121;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.WebGLAttributes: Unsupported buffer data format: ' + array );\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.isGLBufferAttribute ) {\n\n\t\t\tconst cached = buffers.get( attribute );\n\n\t\t\tif ( ! cached || cached.version < attribute.version ) {\n\n\t\t\t\tbuffers.set( attribute, {\n\t\t\t\t\tbuffer: attribute.buffer,\n\t\t\t\t\ttype: attribute.type,\n\t\t\t\t\tbytesPerElement: attribute.elementSize,\n\t\t\t\t\tversion: attribute.version\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\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\nclass PlaneGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) {\n\n\t\tsuper();\n\t\tthis.type = 'PlaneGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments\n\t\t};\n\n\t\tconst width_half = width / 2;\n\t\tconst height_half = height / 2;\n\n\t\tconst gridX = Math.floor( widthSegments );\n\t\tconst gridY = Math.floor( heightSegments );\n\n\t\tconst gridX1 = gridX + 1;\n\t\tconst gridY1 = gridY + 1;\n\n\t\tconst segment_width = width / gridX;\n\t\tconst segment_height = height / gridY;\n\n\t\t//\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tconst y = iy * segment_height - height_half;\n\n\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tconst a = ix + gridX1 * iy;\n\t\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\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\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}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PlaneGeometry( data.width, data.height, data.widthSegments, data.heightSegments );\n\n\t}\n\n}\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 USE_ALPHATEST\\n\\tif ( diffuseColor.a < alphaTest ) discard;\\n#endif\";\n\nvar alphatest_pars_fragment = \"#ifdef USE_ALPHATEST\\n\\tuniform float alphaTest;\\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.roughness );\\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 = \"vec3 BRDF_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nfloat V_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_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float roughness ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\tfloat D = D_GGX( alpha, dotNH );\\n\\treturn F * ( V * 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}\\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_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie( float roughness, float dotNH ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tfloat invAlpha = 1.0 / alpha;\\n\\tfloat cos2h = dotNH * dotNH;\\n\\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\\n\\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\\n}\\nfloat V_Neubelt( float dotNV, float dotNL ) {\\n\\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\\n}\\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat D = D_Charlie( sheenRoughness, dotNH );\\n\\tfloat V = V_Neubelt( dotNV, dotNL );\\n\\treturn sheenColor * ( D * V );\\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, float faceDirection ) {\\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 ) * faceDirection;\\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 = \"#if defined( USE_COLOR_ALPHA )\\n\\tdiffuseColor *= vColor;\\n#elif defined( USE_COLOR )\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvColor = vec4( 1.0 );\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvColor = vec3( 1.0 );\\n#endif\\n#ifdef USE_COLOR\\n\\tvColor *= color;\\n#endif\\n#ifdef USE_INSTANCING_COLOR\\n\\tvColor.xyz *= instanceColor.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 max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\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 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 USE_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}\\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\\treturn 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\\t#define cubeUV_minMipLevel 4.0\\n\\t#define cubeUV_minTileSize 16.0\\n\\tfloat getFace( vec3 direction ) {\\n\\t\\tvec3 absDirection = abs( direction );\\n\\t\\tfloat face = - 1.0;\\n\\t\\tif ( absDirection.x > absDirection.z ) {\\n\\t\\t\\tif ( absDirection.x > absDirection.y )\\n\\t\\t\\t\\tface = direction.x > 0.0 ? 0.0 : 3.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t} else {\\n\\t\\t\\tif ( absDirection.z > absDirection.y )\\n\\t\\t\\t\\tface = direction.z > 0.0 ? 2.0 : 5.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t}\\n\\t\\treturn face;\\n\\t}\\n\\tvec2 getUV( vec3 direction, float face ) {\\n\\t\\tvec2 uv;\\n\\t\\tif ( face == 0.0 ) {\\n\\t\\t\\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 1.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\\n\\t\\t} else if ( face == 2.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\\n\\t\\t} else if ( face == 3.0 ) {\\n\\t\\t\\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 4.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\\n\\t\\t} else {\\n\\t\\t\\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\\n\\t\\t}\\n\\t\\treturn 0.5 * ( uv + 1.0 );\\n\\t}\\n\\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\\n\\t\\tfloat face = getFace( direction );\\n\\t\\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\\n\\t\\tmipInt = max( mipInt, cubeUV_minMipLevel );\\n\\t\\tfloat faceSize = exp2( mipInt );\\n\\t\\tvec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\\n\\t\\tif ( face > 2.0 ) {\\n\\t\\t\\tuv.y += faceSize;\\n\\t\\t\\tface -= 3.0;\\n\\t\\t}\\n\\t\\tuv.x += face * faceSize;\\n\\t\\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\\n\\t\\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\\n\\t\\tuv.x *= CUBEUV_TEXEL_WIDTH;\\n\\t\\tuv.y *= CUBEUV_TEXEL_HEIGHT;\\n\\t\\t#ifdef texture2DGradEXT\\n\\t\\t\\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\\n\\t\\t#else\\n\\t\\t\\treturn texture2D( envMap, uv ).rgb;\\n\\t\\t#endif\\n\\t}\\n\\t#define r0 1.0\\n\\t#define v0 0.339\\n\\t#define m0 - 2.0\\n\\t#define r1 0.8\\n\\t#define v1 0.276\\n\\t#define m1 - 1.0\\n\\t#define r4 0.4\\n\\t#define v4 0.046\\n\\t#define m4 2.0\\n\\t#define r5 0.305\\n\\t#define v5 0.016\\n\\t#define m5 3.0\\n\\t#define r6 0.21\\n\\t#define v6 0.0038\\n\\t#define m6 4.0\\n\\tfloat roughnessToMip( float roughness ) {\\n\\t\\tfloat mip = 0.0;\\n\\t\\tif ( roughness >= r1 ) {\\n\\t\\t\\tmip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0;\\n\\t\\t} else if ( roughness >= r4 ) {\\n\\t\\t\\tmip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1;\\n\\t\\t} else if ( roughness >= r5 ) {\\n\\t\\t\\tmip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4;\\n\\t\\t} else if ( roughness >= r6 ) {\\n\\t\\t\\tmip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5;\\n\\t\\t} else {\\n\\t\\t\\tmip = - 2.0 * log2( 1.16 * roughness );\\t\\t}\\n\\t\\treturn mip;\\n\\t}\\n\\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\\n\\t\\tfloat mip = clamp( roughnessToMip( roughness ), m0, CUBEUV_MAX_MIP );\\n\\t\\tfloat mipF = fract( mip );\\n\\t\\tfloat mipInt = floor( mip );\\n\\t\\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\\n\\t\\tif ( mipF == 0.0 ) {\\n\\t\\t\\treturn vec4( color0, 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\\n\\t\\t\\treturn vec4( mix( color0, color1, mipF ), 1.0 );\\n\\t\\t}\\n\\t}\\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\\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 = \"vec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\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}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\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#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\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\\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\\tvFogDepth = - mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float vFogDepth;\\n#endif\";\n\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\\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 vFogDepth;\\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 vec3( texture2D( gradientMap, coord ).r );\\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\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\treflectedLight.indirectDiffuse += lightMapIrradiance;\\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.normal );\\n#ifdef DOUBLE_SIDED\\n\\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\\n\\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );\\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\\tgetPointLightInfo( pointLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = 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\\tgetSpotLightInfo( spotLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = 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\\tgetDirectionalLightInfo( directionalLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = 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.normal );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );\\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 vec3 normal ) {\\n\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\treturn irradiance;\\n}\\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\\t#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\\t\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\t\\tif ( cutoffDistance > 0.0 ) {\\n\\t\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t\\t}\\n\\t\\treturn distanceFalloff;\\n\\t#else\\n\\t\\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\t\\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t\\t}\\n\\t\\treturn 1.0;\\n\\t#endif\\n}\\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\\n\\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\\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 getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tlight.color = directionalLight.color;\\n\\t\\tlight.direction = directionalLight.direction;\\n\\t\\tlight.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 getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tvec3 lVector = pointLight.position - geometry.position;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tlight.color = pointLight.color;\\n\\t\\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tlight.visible = ( light.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 getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tvec3 lVector = spotLight.position - geometry.position;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat angleCos = dot( light.direction, spotLight.direction );\\n\\t\\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\tif ( spotAttenuation > 0.0 ) {\\n\\t\\t\\tfloat lightDistance = length( lVector );\\n\\t\\t\\tlight.color = spotLight.color * spotAttenuation;\\n\\t\\t\\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t\\t} else {\\n\\t\\t\\tlight.color = vec3( 0.0 );\\n\\t\\t\\tlight.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 vec3 normal ) {\\n\\t\\tfloat dotNL = dot( normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\nvar envmap_physical_pars_fragment = \"#if defined( USE_ENVMAP )\\n\\tvec3 getIBLIrradiance( const in vec3 normal ) {\\n\\t\\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\\t\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\\n\\t\\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 reflectVec = reflect( - viewDir, normal );\\n\\t\\t\\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\\t\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\nstruct ToonMaterial {\\n\\tvec3 diffuseColor;\\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\\treflectedLight.directDiffuse += irradiance * BRDF_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_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;\\nstruct BlinnPhongMaterial {\\n\\tvec3 diffuseColor;\\n\\tvec3 specularColor;\\n\\tfloat specularShininess;\\n\\tfloat specularStrength;\\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\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, 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_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.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\\nmaterial.roughness = min( material.roughness, 1.0 );\\n#ifdef IOR\\n\\t#ifdef SPECULAR\\n\\t\\tfloat specularIntensityFactor = specularIntensity;\\n\\t\\tvec3 specularColorFactor = specularColor;\\n\\t\\t#ifdef USE_SPECULARINTENSITYMAP\\n\\t\\t\\tspecularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;\\n\\t\\t#endif\\n\\t\\t#ifdef USE_SPECULARCOLORMAP\\n\\t\\t\\tspecularColorFactor *= texture2D( specularColorMap, vUv ).rgb;\\n\\t\\t#endif\\n\\t\\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\\n\\t#else\\n\\t\\tfloat specularIntensityFactor = 1.0;\\n\\t\\tvec3 specularColorFactor = vec3( 1.0 );\\n\\t\\tmaterial.specularF90 = 1.0;\\n\\t#endif\\n\\tmaterial.specularColor = mix( min( pow2( ( ior - 1.0 ) / ( ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\\n\\tmaterial.specularF90 = 1.0;\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tmaterial.clearcoat = clearcoat;\\n\\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\\tmaterial.clearcoatF0 = vec3( 0.04 );\\n\\tmaterial.clearcoatF90 = 1.0;\\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 = sheenColor;\\n\\t#ifdef USE_SHEENCOLORMAP\\n\\t\\tmaterial.sheenColor *= texture2D( sheenColorMap, vUv ).rgb;\\n\\t#endif\\n\\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\\n\\t#ifdef USE_SHEENROUGHNESSMAP\\n\\t\\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a;\\n\\t#endif\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat roughness;\\n\\tvec3 specularColor;\\n\\tfloat specularF90;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat clearcoat;\\n\\t\\tfloat clearcoatRoughness;\\n\\t\\tvec3 clearcoatF0;\\n\\t\\tfloat clearcoatF90;\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tvec3 sheenColor;\\n\\t\\tfloat sheenRoughness;\\n\\t#endif\\n};\\nvec3 clearcoatSpecular = vec3( 0.0 );\\nvec3 sheenSpecular = vec3( 0.0 );\\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat r2 = roughness * roughness;\\n\\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\\n\\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\\n\\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\\n\\treturn saturate( DG * RECIPROCAL_PI );\\n}\\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\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\\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\\n\\treturn fab;\\n}\\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\treturn specularColor * fab.x + specularF90 * fab.y;\\n}\\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\tvec3 FssEss = specularColor * fab.x + specularF90 * fab.y;\\n\\tfloat Ess = fab.x + fab.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}\\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.roughness;\\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#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = dotNLcc * directLight.color;\\n\\t\\tclearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );\\n\\t#endif\\n\\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );\\n\\treflectedLight.directDiffuse += irradiance * BRDF_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_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 USE_CLEARCOAT\\n\\t\\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness );\\n\\t#endif\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\\n\\treflectedLight.indirectSpecular += 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 USE_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\\tgetPointLightInfo( 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\\tgetSpotLightInfo( 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\\tgetDirectionalLightInfo( 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.normal );\\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.normal );\\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 = lightMapTexel.rgb * lightMapIntensity;\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tiblIrradiance += getIBLIrradiance( geometry.normal );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\\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 sampledDiffuseColor = texture2D( map, vUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\\n\\t#endif\\n\\tdiffuseColor *= sampledDiffuseColor;\\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\\tdiffuseColor *= texture2D( map, uv );\\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 morphcolor_vertex = \"#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\\n\\tvColor *= morphTargetBaseInfluence;\\n\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t#if defined( USE_COLOR_ALPHA )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\\n\\t\\t#elif defined( USE_COLOR )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\\t\\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\\t\\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\\t\\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n\\t#endif\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\tuniform float morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\\t\\tuniform sampler2DArray morphTargetsTexture;\\n\\t\\tuniform ivec2 morphTargetsTextureSize;\\n\\t\\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\\n\\t\\t\\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\\n\\t\\t\\tint y = texelIndex / morphTargetsTextureSize.x;\\n\\t\\t\\tint x = texelIndex - y * morphTargetsTextureSize.x;\\n\\t\\t\\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\\n\\t\\t\\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\\n\\t\\t}\\n\\t#else\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\tuniform float morphTargetInfluences[ 8 ];\\n\\t\\t#else\\n\\t\\t\\tuniform float morphTargetInfluences[ 4 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\\t\\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\\t\\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\\t\\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\\t\\t\\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\\t\\t\\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\\t\\t\\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar normal_fragment_begin = \"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\\n#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 * faceDirection;\\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 * faceDirection;\\n\\t\\t\\tbitangent = bitangent * faceDirection;\\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 * faceDirection;\\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, faceDirection );\\n\\t#endif\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\\n#endif\";\n\nvar normal_pars_fragment = \"#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\nvar normal_pars_vertex = \"#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\nvar normal_vertex = \"#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\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, float faceDirection ) {\\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\\tvec3 N = surf_norm;\\n\\t\\tvec3 q1perp = cross( q1, N );\\n\\t\\tvec3 q0perp = cross( N, q0 );\\n\\t\\tvec3 T = q1perp * st0.x + q0perp * st1.x;\\n\\t\\tvec3 B = q1perp * st0.y + q0perp * st1.y;\\n\\t\\tfloat det = max( dot( T, T ), dot( B, B ) );\\n\\t\\tfloat scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\\n\\t\\treturn normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\\n\\t}\\n#endif\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef USE_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, faceDirection );\\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 output_fragment = \"#ifdef OPAQUE\\ndiffuseColor.a = 1.0;\\n#endif\\n#ifdef USE_TRANSMISSION\\ndiffuseColor.a *= transmissionAlpha + 0.1;\\n#endif\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\";\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\\tuniform highp sampler2D boneTexture;\\n\\tuniform int boneTextureSize;\\n\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\tfloat j = i * 4.0;\\n\\t\\tfloat x = mod( j, float( boneTextureSize ) );\\n\\t\\tfloat y = floor( j / float( boneTextureSize ) );\\n\\t\\tfloat dx = 1.0 / float( boneTextureSize );\\n\\t\\tfloat dy = 1.0 / float( boneTextureSize );\\n\\t\\ty = dy * ( y + 0.5 );\\n\\t\\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\n\\t\\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\n\\t\\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\n\\t\\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\n\\t\\tmat4 bone = mat4( v1, v2, v3, v4 );\\n\\t\\treturn bone;\\n\\t}\\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 transmission_fragment = \"#ifdef USE_TRANSMISSION\\n\\tfloat transmissionAlpha = 1.0;\\n\\tfloat transmissionFactor = transmission;\\n\\tfloat thicknessFactor = thickness;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\ttransmissionFactor *= texture2D( transmissionMap, vUv ).r;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tthicknessFactor *= texture2D( thicknessMap, vUv ).g;\\n\\t#endif\\n\\tvec3 pos = vWorldPosition;\\n\\tvec3 v = normalize( cameraPosition - pos );\\n\\tvec3 n = inverseTransformDirection( normal, viewMatrix );\\n\\tvec4 transmission = getIBLVolumeRefraction(\\n\\t\\tn, v, roughnessFactor, material.diffuseColor, material.specularColor, material.specularF90,\\n\\t\\tpos, modelMatrix, viewMatrix, projectionMatrix, ior, thicknessFactor,\\n\\t\\tattenuationColor, attenuationDistance );\\n\\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, transmissionFactor );\\n\\ttransmissionAlpha = mix( transmissionAlpha, transmission.a, transmissionFactor );\\n#endif\";\n\nvar transmission_pars_fragment = \"#ifdef USE_TRANSMISSION\\n\\tuniform float transmission;\\n\\tuniform float thickness;\\n\\tuniform float attenuationDistance;\\n\\tuniform vec3 attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tuniform sampler2D transmissionMap;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tuniform sampler2D thicknessMap;\\n\\t#endif\\n\\tuniform vec2 transmissionSamplerSize;\\n\\tuniform sampler2D transmissionSamplerMap;\\n\\tuniform mat4 modelMatrix;\\n\\tuniform mat4 projectionMatrix;\\n\\tvarying vec3 vWorldPosition;\\n\\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\\n\\t\\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\\n\\t\\tvec3 modelScale;\\n\\t\\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\\n\\t\\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\\n\\t\\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\\n\\t\\treturn normalize( refractionVector ) * thickness * modelScale;\\n\\t}\\n\\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\\n\\t\\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\\n\\t}\\n\\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\\n\\t\\tfloat framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\\n\\t\\t#ifdef texture2DLodEXT\\n\\t\\t\\treturn texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\\t\\t#else\\n\\t\\t\\treturn texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tif ( attenuationDistance == 0.0 ) {\\n\\t\\t\\treturn radiance;\\n\\t\\t} else {\\n\\t\\t\\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\\n\\t\\t\\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\\t\\t\\treturn transmittance * radiance;\\n\\t\\t}\\n\\t}\\n\\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\\n\\t\\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\\n\\t\\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\\n\\t\\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\\n\\t\\tvec3 refractedRayExit = position + transmissionRay;\\n\\t\\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\\t\\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\\t\\trefractionCoords += 1.0;\\n\\t\\trefractionCoords /= 2.0;\\n\\t\\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\\n\\t\\tvec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );\\n\\t\\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\\n\\t\\treturn vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );\\n\\t}\\n#endif\";\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 ) || defined ( USE_TRANSMISSION )\\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\nconst vertex$g = \"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\nconst fragment$g = \"uniform sampler2D t2D;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tgl_FragColor = texture2D( t2D, vUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\tgl_FragColor = vec4( mix( pow( gl_FragColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), gl_FragColor.rgb * 0.0773993808, vec3( lessThanEqual( gl_FragColor.rgb, vec3( 0.04045 ) ) ) ), gl_FragColor.w );\\n\\t#endif\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$f = \"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\nconst fragment$f = \"#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\nconst vertex$e = \"#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\nconst fragment$e = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include \\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\nconst vertex$d = \"#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\nconst fragment$d = \"#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 \\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\nconst vertex$c = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$c = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV = equirectUv( direction );\\n\\tgl_FragColor = texture2D( tEquirect, sampleUV );\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$b = \"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\\t#include \\n}\";\n\nconst fragment$b = \"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\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$a = \"#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#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\\n\\t\\t#include \\n\\t\\t#include \\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\\t#include \\n\\t#include \\n}\";\n\nconst fragment$a = \"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 \\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\\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\\t\\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\\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\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$9 = \"#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\\t#include \\n}\";\n\nconst fragment$9 = \"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 \\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_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_Lambert( diffuseColor.rgb ) * getShadowMask();\\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$8 = \"#define MATCAP\\nvarying vec3 vViewPosition;\\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\\tvViewPosition = - mvPosition.xyz;\\n}\";\n\nconst fragment$8 = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\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\\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#else\\n\\t\\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$7 = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\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#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$7 = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\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\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n\\t#ifdef OPAQUE\\n\\t\\tgl_FragColor.a = 1.0;\\n\\t#endif\\n}\";\n\nconst vertex$6 = \"#define PHONG\\nvarying vec3 vViewPosition;\\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\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$6 = \"#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 \\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\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$5 = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifdef USE_TRANSMISSION\\n\\tvarying vec3 vWorldPosition;\\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\\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\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n#ifdef USE_TRANSMISSION\\n\\tvWorldPosition = worldPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$5 = \"#define STANDARD\\n#ifdef PHYSICAL\\n\\t#define IOR\\n\\t#define SPECULAR\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef IOR\\n\\tuniform float ior;\\n#endif\\n#ifdef SPECULAR\\n\\tuniform float specularIntensity;\\n\\tuniform vec3 specularColor;\\n\\t#ifdef USE_SPECULARINTENSITYMAP\\n\\t\\tuniform sampler2D specularIntensityMap;\\n\\t#endif\\n\\t#ifdef USE_SPECULARCOLORMAP\\n\\t\\tuniform sampler2D specularColorMap;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\n\\tuniform vec3 sheenColor;\\n\\tuniform float sheenRoughness;\\n\\t#ifdef USE_SHEENCOLORMAP\\n\\t\\tuniform sampler2D sheenColorMap;\\n\\t#endif\\n\\t#ifdef USE_SHEENROUGHNESSMAP\\n\\t\\tuniform sampler2D sheenRoughnessMap;\\n\\t#endif\\n#endif\\nvarying vec3 vViewPosition;\\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 \\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 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\\n\\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\\n\\t#include \\n\\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\\n\\t#ifdef USE_SHEEN\\n\\t\\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\\n\\t\\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\\n\\t\\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\\n\\t\\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$4 = \"#define TOON\\nvarying vec3 vViewPosition;\\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\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$4 = \"#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 \\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\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$3 = \"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\\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\nconst fragment$3 = \"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\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$2 = \"#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}\";\n\nconst fragment$2 = \"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\nconst vertex$1 = \"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 fragment$1 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\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\\t#include \\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\talphatest_pars_fragment: alphatest_pars_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\tmorphcolor_vertex: morphcolor_vertex,\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\tnormal_pars_fragment: normal_pars_fragment,\n\tnormal_pars_vertex: normal_pars_vertex,\n\tnormal_vertex: normal_vertex,\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\toutput_fragment: output_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\ttransmission_fragment: transmission_fragment,\n\ttransmission_pars_fragment: transmission_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_vert: vertex$g,\n\tbackground_frag: fragment$g,\n\tcube_vert: vertex$f,\n\tcube_frag: fragment$f,\n\tdepth_vert: vertex$e,\n\tdepth_frag: fragment$e,\n\tdistanceRGBA_vert: vertex$d,\n\tdistanceRGBA_frag: fragment$d,\n\tequirect_vert: vertex$c,\n\tequirect_frag: fragment$c,\n\tlinedashed_vert: vertex$b,\n\tlinedashed_frag: fragment$b,\n\tmeshbasic_vert: vertex$a,\n\tmeshbasic_frag: fragment$a,\n\tmeshlambert_vert: vertex$9,\n\tmeshlambert_frag: fragment$9,\n\tmeshmatcap_vert: vertex$8,\n\tmeshmatcap_frag: fragment$8,\n\tmeshnormal_vert: vertex$7,\n\tmeshnormal_frag: fragment$7,\n\tmeshphong_vert: vertex$6,\n\tmeshphong_frag: fragment$6,\n\tmeshphysical_vert: vertex$5,\n\tmeshphysical_frag: fragment$5,\n\tmeshtoon_vert: vertex$4,\n\tmeshtoon_frag: fragment$4,\n\tpoints_vert: vertex$3,\n\tpoints_frag: fragment$3,\n\tshadow_vert: vertex$2,\n\tshadow_frag: fragment$2,\n\tsprite_vert: vertex$1,\n\tsprite_frag: fragment$1\n};\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nconst UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: new Color( 0xffffff ) },\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\t\talphaTest: { value: 0 }\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 }, // basic, lambert, phong\n\t\tior: { value: 1.5 }, // physical\n\t\trefractionRatio: { value: 0.98 } // basic, lambert, phong\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\tltc_1: { value: null },\n\t\tltc_2: { value: null }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: new Color( 0xffffff ) },\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\talphaTest: { value: 0 },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: new Color( 0xffffff ) },\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\talphaTest: { value: 0 },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t}\n\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.meshnormal_vert,\n\t\tfragmentShader: ShaderChunk.meshnormal_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: 0 },\n\t\t\tsheenColor: { value: new Color( 0x000000 ) },\n\t\t\tsheenColorMap: { value: null },\n\t\t\tsheenRoughness: { value: 1 },\n\t\t\tsheenRoughnessMap: { value: null },\n\t\t\ttransmission: { value: 0 },\n\t\t\ttransmissionMap: { value: null },\n\t\t\ttransmissionSamplerSize: { value: new Vector2() },\n\t\t\ttransmissionSamplerMap: { value: null },\n\t\t\tthickness: { value: 0 },\n\t\t\tthicknessMap: { value: null },\n\t\t\tattenuationDistance: { value: 0 },\n\t\t\tattenuationColor: { value: new Color( 0x000000 ) },\n\t\t\tspecularIntensity: { value: 1 },\n\t\t\tspecularIntensityMap: { value: null },\n\t\t\tspecularColor: { value: new Color( 1, 1, 1 ) },\n\t\t\tspecularColorMap: { value: null },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\nfunction WebGLBackground( renderer, cubemaps, state, objects, alpha, premultipliedAlpha ) {\n\n\tconst clearColor = new Color( 0x000000 );\n\tlet clearAlpha = alpha === true ? 0 : 1;\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 ) {\n\n\t\tlet forceClear = false;\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\tif ( background && background.isTexture ) {\n\n\t\t\tbackground = cubemaps.get( background );\n\n\t\t}\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.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxGeometry( 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\tboxMesh.material.uniforms.envMap.value = background;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = ( background.isCubeTexture && background.isRenderTargetTexture === false ) ? - 1 : 1;\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\tboxMesh.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\t\t\tboxMesh.layers.enableAll();\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 PlaneGeometry( 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\t\t\tplaneMesh.layers.enableAll();\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 = 1 ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha;\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\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\tlet forceUpdate = false;\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( object, geometry, program, index );\n\n\t\t\tif ( updateBuffers ) saveCache( object, geometry, program, index );\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 ( index !== null ) {\n\n\t\t\tattributes.update( index, 34963 );\n\n\t\t}\n\n\t\tif ( updateBuffers || forceUpdate ) {\n\n\t\t\tforceUpdate = false;\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\t\t\tindex: null\n\n\t\t};\n\n\t}\n\n\tfunction needsUpdate( object, geometry, program, index ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tlet attributesNum = 0;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tconst cachedAttribute = cachedAttributes[ name ];\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( cachedAttribute === undefined ) return true;\n\n\t\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\n\n\t\t\t\tif ( geometryAttribute && cachedAttribute.data !== geometryAttribute.data ) return true;\n\n\t\t\t\tattributesNum ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( currentState.attributesNum !== attributesNum ) return true;\n\n\t\tif ( currentState.index !== index ) return true;\n\n\t\treturn false;\n\n\t}\n\n\tfunction saveCache( object, geometry, program, index ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\t\tlet attributesNum = 0;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet attribute = attributes[ name ];\n\n\t\t\t\tif ( attribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) attribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) attribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tconst data = {};\n\t\t\t\tdata.attribute = attribute;\n\n\t\t\t\tif ( attribute && attribute.data ) {\n\n\t\t\t\t\tdata.data = attribute.data;\n\n\t\t\t\t}\n\n\t\t\t\tcache[ name ] = data;\n\n\t\t\t\tattributesNum ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tcurrentState.attributes = cache;\n\t\tcurrentState.attributesNum = attributesNum;\n\n\t\tcurrentState.index = index;\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, 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.location >= 0 ) {\n\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\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.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, data.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && 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\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tstride * bytesPerElement,\n\t\t\t\t\t\t\t\t( offset + ( size / programAttribute.locationSize ) * i ) * bytesPerElement\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\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\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && 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\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tsize * bytesPerElement,\n\t\t\t\t\t\t\t\t( size / programAttribute.locationSize ) * i * bytesPerElement\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 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.location, 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.location, 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.location, 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.location, 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\t\tforceUpdate = true;\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-compatibility\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\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, 1 );\n\n\t}\n\n\tfunction renderInstances( 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\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tlet maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\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\tconst isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext ) ||\n\t\t( typeof WebGL2ComputeRenderingContext !== 'undefined' && gl instanceof WebGL2ComputeRenderingContext );\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 drawBuffers = isWebGL2 || extensions.has( 'WEBGL_draw_buffers' );\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.has( '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\tdrawBuffers: drawBuffers,\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\nfunction WebGLClipping( properties ) {\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 ( material, camera, useCache ) {\n\n\t\tconst planes = material.clippingPlanes,\n\t\t\tclipIntersection = material.clipIntersection,\n\t\t\tclipShadows = material.clipShadows;\n\n\t\tconst materialProperties = properties.get( material );\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 = materialProperties.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, useCache );\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\tmaterialProperties.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\tconst nPlanes = planes !== null ? planes.length : 0;\n\t\tlet dstArray = 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\nfunction WebGLCubeMaps( renderer ) {\n\n\tlet cubemaps = new WeakMap();\n\n\tfunction mapTextureMapping( texture, mapping ) {\n\n\t\tif ( mapping === EquirectangularReflectionMapping ) {\n\n\t\t\ttexture.mapping = CubeReflectionMapping;\n\n\t\t} else if ( mapping === EquirectangularRefractionMapping ) {\n\n\t\t\ttexture.mapping = CubeRefractionMapping;\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture && texture.isRenderTargetTexture === false ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tif ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping ) {\n\n\t\t\t\tif ( cubemaps.has( texture ) ) {\n\n\t\t\t\t\tconst cubemap = cubemaps.get( texture ).texture;\n\t\t\t\t\treturn mapTextureMapping( cubemap, texture.mapping );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\tif ( image && image.height > 0 ) {\n\n\t\t\t\t\t\tconst renderTarget = new WebGLCubeRenderTarget( image.height / 2 );\n\t\t\t\t\t\trenderTarget.fromEquirectangularTexture( renderer, texture );\n\t\t\t\t\t\tcubemaps.set( texture, renderTarget );\n\n\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\treturn mapTextureMapping( renderTarget.texture, texture.mapping );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\treturn 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\treturn texture;\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\tconst cubemap = cubemaps.get( texture );\n\n\t\tif ( cubemap !== undefined ) {\n\n\t\t\tcubemaps.delete( texture );\n\t\t\tcubemap.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubemaps = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nclass OrthographicCamera extends Camera {\n\n\tconstructor( left = - 1, right = 1, top = 1, bottom = - 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'OrthographicCamera';\n\n\t\tthis.zoom = 1;\n\t\tthis.view = null;\n\n\t\tthis.left = left;\n\t\tthis.right = right;\n\t\tthis.top = top;\n\t\tthis.bottom = bottom;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( 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( 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() {\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() {\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.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( 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\nOrthographicCamera.prototype.isOrthographicCamera = true;\n\nconst LOD_MIN = 4;\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\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 _flatCamera = /*@__PURE__*/ new OrthographicCamera();\nconst _clearColor = /*@__PURE__*/ new Color();\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\t/*@__PURE__*/ new Vector3( 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, INV_PHI ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, - INV_PHI ),\n\t/*@__PURE__*/ new Vector3( INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( - INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( PHI, INV_PHI, 0 ),\n\t/*@__PURE__*/ new Vector3( - PHI, INV_PHI, 0 ) ];\n\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 * Paper: Fast, Accurate Image-Based Lighting\n * https://drive.google.com/file/d/15y8r_UpKlU9SvV4ILb0C3qCPecS8pvLz/view\n*/\n\nclass PMREMGenerator {\n\n\tconstructor( renderer ) {\n\n\t\tthis._renderer = renderer;\n\t\tthis._pingPongRenderTarget = null;\n\n\t\tthis._lodMax = 0;\n\t\tthis._cubeSize = 0;\n\t\tthis._lodPlanes = [];\n\t\tthis._sizeLods = [];\n\t\tthis._sigmas = [];\n\n\t\tthis._blurMaterial = null;\n\t\tthis._cubemapMaterial = null;\n\t\tthis._equirectMaterial = null;\n\n\t\tthis._compileMaterial( this._blurMaterial );\n\n\t}\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( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\n\t\tthis._setSize( 256 );\n\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\t\tcubeUVRenderTarget.depthBuffer = true;\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\n\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 * or HDR. 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( equirectangular, renderTarget = null ) {\n\n\t\treturn this._fromTexture( equirectangular, renderTarget );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * or HDR. 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( cubemap, renderTarget = null ) {\n\n\t\treturn this._fromTexture( cubemap, renderTarget );\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() {\n\n\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\t\t\tthis._compileMaterial( this._cubemapMaterial );\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() {\n\n\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\t\t\tthis._compileMaterial( this._equirectMaterial );\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() {\n\n\t\tthis._dispose();\n\n\t\tif ( this._cubemapMaterial !== null ) this._cubemapMaterial.dispose();\n\t\tif ( this._equirectMaterial !== null ) this._equirectMaterial.dispose();\n\n\t}\n\n\t// private interface\n\n\t_setSize( cubeSize ) {\n\n\t\tthis._lodMax = Math.floor( Math.log2( cubeSize ) );\n\t\tthis._cubeSize = Math.pow( 2, this._lodMax );\n\n\t}\n\n\t_dispose() {\n\n\t\tif ( this._blurMaterial !== null ) this._blurMaterial.dispose();\n\n\t\tif ( this._pingPongRenderTarget !== null ) this._pingPongRenderTarget.dispose();\n\n\t\tfor ( let i = 0; i < this._lodPlanes.length; i ++ ) {\n\n\t\t\tthis._lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t}\n\n\t_cleanup( outputTarget ) {\n\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( texture, renderTarget ) {\n\n\t\tif ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping ) {\n\n\t\t\tthis._setSize( texture.image.length === 0 ? 16 : ( texture.image[ 0 ].width || texture.image[ 0 ].image.width ) );\n\n\t\t} else { // Equirectangular\n\n\t\t\tthis._setSize( texture.image.width / 4 );\n\n\t\t}\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\n\t\tconst cubeUVRenderTarget = renderTarget || this._allocateTargets();\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() {\n\n\t\tconst width = 3 * Math.max( this._cubeSize, 16 * 7 );\n\t\tconst height = 4 * this._cubeSize;\n\n\t\tconst params = {\n\t\t\tmagFilter: LinearFilter,\n\t\t\tminFilter: LinearFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\ttype: HalfFloatType,\n\t\t\tformat: RGBAFormat,\n\t\t\tencoding: LinearEncoding,\n\t\t\tdepthBuffer: false\n\t\t};\n\n\t\tconst cubeUVRenderTarget = _createRenderTarget( width, height, params );\n\n\t\tif ( this._pingPongRenderTarget === null || this._pingPongRenderTarget.width !== width ) {\n\n\t\t\tif ( this._pingPongRenderTarget !== null ) {\n\n\t\t\t\tthis._dispose();\n\n\t\t\t}\n\n\t\t\tthis._pingPongRenderTarget = _createRenderTarget( width, height, params );\n\n\t\t\tconst { _lodMax } = this;\n\t\t\t( { sizeLods: this._sizeLods, lodPlanes: this._lodPlanes, sigmas: this._sigmas } = _createPlanes( _lodMax ) );\n\n\t\t\tthis._blurMaterial = _getBlurShader( _lodMax, width, height );\n\n\t\t}\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_compileMaterial( material ) {\n\n\t\tconst tmpMesh = new Mesh( this._lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t}\n\n\t_sceneToCubeUV( 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 originalAutoClear = renderer.autoClear;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\trenderer.getClearColor( _clearColor );\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.autoClear = false;\n\n\t\tconst backgroundMaterial = new MeshBasicMaterial( {\n\t\t\tname: 'PMREM.Background',\n\t\t\tside: BackSide,\n\t\t\tdepthWrite: false,\n\t\t\tdepthTest: false,\n\t\t} );\n\n\t\tconst backgroundBox = new Mesh( new BoxGeometry(), backgroundMaterial );\n\n\t\tlet useSolidColor = false;\n\t\tconst background = scene.background;\n\n\t\tif ( background ) {\n\n\t\t\tif ( background.isColor ) {\n\n\t\t\t\tbackgroundMaterial.color.copy( background );\n\t\t\t\tscene.background = null;\n\t\t\t\tuseSolidColor = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tbackgroundMaterial.color.copy( _clearColor );\n\t\t\tuseSolidColor = true;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst col = i % 3;\n\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\tconst size = this._cubeSize;\n\n\t\t\t_setViewport( cubeUVRenderTarget, col * size, i > 2 ? size : 0, size, size );\n\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\n\t\t\tif ( useSolidColor ) {\n\n\t\t\t\trenderer.render( backgroundBox, cubeCamera );\n\n\t\t\t}\n\n\t\t\trenderer.render( scene, cubeCamera );\n\n\t\t}\n\n\t\tbackgroundBox.geometry.dispose();\n\t\tbackgroundBox.material.dispose();\n\n\t\trenderer.toneMapping = toneMapping;\n\t\trenderer.autoClear = originalAutoClear;\n\t\tscene.background = background;\n\n\t}\n\n\t_textureToCubeUV( texture, cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\n\t\tconst isCubeTexture = ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping );\n\n\t\tif ( isCubeTexture ) {\n\n\t\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\n\t\t\t}\n\n\t\t\tthis._cubemapMaterial.uniforms.flipEnvMap.value = ( texture.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t} else {\n\n\t\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst material = isCubeTexture ? this._cubemapMaterial : this._equirectMaterial;\n\t\tconst mesh = new Mesh( this._lodPlanes[ 0 ], material );\n\n\t\tconst uniforms = material.uniforms;\n\n\t\tuniforms[ 'envMap' ].value = texture;\n\n\t\tconst size = this._cubeSize;\n\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * size, 2 * size );\n\n\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\trenderer.render( mesh, _flatCamera );\n\n\t}\n\n\t_applyPMREM( 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 < this._lodPlanes.length; i ++ ) {\n\n\t\t\tconst sigma = Math.sqrt( this._sigmas[ i ] * this._sigmas[ i ] - this._sigmas[ i - 1 ] * this._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( 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( 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( this._lodPlanes[ lodOut ], blurMaterial );\n\t\tconst blurUniforms = blurMaterial.uniforms;\n\n\t\tconst pixels = this._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\tconst { _lodMax } = this;\n\t\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\t\tblurUniforms[ 'mipInt' ].value = _lodMax - lodIn;\n\n\t\tconst outputSize = this._sizeLods[ lodOut ];\n\t\tconst x = 3 * outputSize * ( lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0 );\n\t\tconst y = 4 * ( this._cubeSize - outputSize );\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\n\n\nfunction _createPlanes( lodMax ) {\n\n\tconst lodPlanes = [];\n\tconst sizeLods = [];\n\tconst sigmas = [];\n\n\tlet lod = lodMax;\n\n\tconst totalLods = lodMax - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n\n\tfor ( let i = 0; i < totalLods; i ++ ) {\n\n\t\tconst sizeLod = Math.pow( 2, lod );\n\t\tsizeLods.push( sizeLod );\n\t\tlet sigma = 1.0 / sizeLod;\n\n\t\tif ( i > lodMax - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - lodMax + LOD_MIN - 1 ];\n\n\t\t} else if ( i === 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\n\t\tsigmas.push( sigma );\n\n\t\tconst texelSize = 1.0 / ( sizeLod - 2 );\n\t\tconst min = - texelSize;\n\t\tconst max = 1 + texelSize;\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\tlodPlanes.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( width, height, params ) {\n\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( width, height, 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( lodMax, width, height ) {\n\n\tconst weights = new Float32Array( MAX_SAMPLES );\n\tconst poleAxis = new Vector3( 0, 1, 0 );\n\tconst shaderMaterial = new ShaderMaterial( {\n\n\t\tname: 'SphericalGaussianBlur',\n\n\t\tdefines: {\n\t\t\t'n': MAX_SAMPLES,\n\t\t\t'CUBEUV_TEXEL_WIDTH': 1.0 / width,\n\t\t\t'CUBEUV_TEXEL_HEIGHT': 1.0 / height,\n\t\t\t'CUBEUV_MAX_MIP': `${lodMax}.0`,\n\t\t},\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},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\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 _getEquirectMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'EquirectangularToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCubemapMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'CubemapToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'flipEnvMap': { value: - 1 }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn /* glsl */`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`;\n\n}\n\nfunction WebGLCubeUVMaps( renderer ) {\n\n\tlet cubeUVmaps = new WeakMap();\n\n\tlet pmremGenerator = null;\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tconst isEquirectMap = ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping );\n\t\t\tconst isCubeMap = ( mapping === CubeReflectionMapping || mapping === CubeRefractionMapping );\n\n\t\t\t// equirect/cube map to cubeUV conversion\n\n\t\t\tif ( isEquirectMap || isCubeMap ) {\n\n\t\t\t\tif ( texture.isRenderTargetTexture && texture.needsPMREMUpdate === true ) {\n\n\t\t\t\t\ttexture.needsPMREMUpdate = false;\n\n\t\t\t\t\tlet renderTarget = cubeUVmaps.get( texture );\n\n\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\trenderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture, renderTarget ) : pmremGenerator.fromCubemap( texture, renderTarget );\n\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cubeUVmaps.has( texture ) ) {\n\n\t\t\t\t\t\treturn cubeUVmaps.get( texture ).texture;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\t\tif ( ( isEquirectMap && image && image.height > 0 ) || ( isCubeMap && image && isCubeTextureComplete( image ) ) ) {\n\n\t\t\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\t\t\tconst renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture ) : pmremGenerator.fromCubemap( texture );\n\t\t\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\t\treturn null;\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\treturn texture;\n\n\t}\n\n\tfunction isCubeTextureComplete( image ) {\n\n\t\tlet count = 0;\n\t\tconst length = 6;\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tif ( image[ i ] !== undefined ) count ++;\n\n\t\t}\n\n\t\treturn count === length;\n\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\tconst cubemapUV = cubeUVmaps.get( texture );\n\n\t\tif ( cubemapUV !== undefined ) {\n\n\t\t\tcubeUVmaps.delete( texture );\n\t\t\tcubemapUV.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubeUVmaps = new WeakMap();\n\n\t\tif ( pmremGenerator !== null ) {\n\n\t\t\tpmremGenerator.dispose();\n\t\t\tpmremGenerator = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLExtensions( gl ) {\n\n\tconst extensions = {};\n\n\tfunction getExtension( name ) {\n\n\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\treturn extensions[ name ];\n\n\t\t}\n\n\t\tlet extension;\n\n\t\tswitch ( name ) {\n\n\t\t\tcase 'WEBGL_depth_texture':\n\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\tbreak;\n\n\t\t\tcase 'EXT_texture_filter_anisotropic':\n\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\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\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\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\textension = gl.getExtension( name );\n\n\t\t}\n\n\t\textensions[ name ] = extension;\n\n\t\treturn extension;\n\n\t}\n\n\treturn {\n\n\t\thas: function ( name ) {\n\n\t\t\treturn getExtension( name ) !== null;\n\n\t\t},\n\n\t\tinit: function ( capabilities ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tgetExtension( 'EXT_color_buffer_float' );\n\n\t\t\t} else {\n\n\t\t\t\tgetExtension( 'WEBGL_depth_texture' );\n\t\t\t\tgetExtension( 'OES_texture_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float_linear' );\n\t\t\t\tgetExtension( 'OES_standard_derivatives' );\n\t\t\t\tgetExtension( 'OES_element_index_uint' );\n\t\t\t\tgetExtension( 'OES_vertex_array_object' );\n\t\t\t\tgetExtension( 'ANGLE_instanced_arrays' );\n\n\t\t\t}\n\n\t\t\tgetExtension( 'OES_texture_float_linear' );\n\t\t\tgetExtension( 'EXT_color_buffer_half_float' );\n\t\t\tgetExtension( 'WEBGL_multisampled_render_to_texture' );\n\n\t\t},\n\n\t\tget: function ( name ) {\n\n\t\t\tconst extension = getExtension( name );\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\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\n\n\tconst geometries = {};\n\tconst wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tconst geometry = event.target;\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\tattributes.remove( geometry.index );\n\n\t\t}\n\n\t\tfor ( const name in geometry.attributes ) {\n\n\t\t\tattributes.remove( geometry.attributes[ name ] );\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tdelete geometries[ geometry.id ];\n\n\t\tconst attribute = wireframeAttributes.get( geometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( geometry );\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\tif ( geometries[ geometry.id ] === true ) return geometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries[ geometry.id ] = true;\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn geometry;\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 ( arrayNeedsUint32( indices ) ? 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\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, 1 );\n\n\t}\n\n\tfunction renderInstances( 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\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\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\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 denormalize( morph, attribute ) {\n\n\tlet denominator = 1;\n\tconst array = attribute.isInterleavedBufferAttribute ? attribute.data.array : attribute.array;\n\n\tif ( array instanceof Int8Array ) denominator = 127;\n\telse if ( array instanceof Int16Array ) denominator = 32767;\n\telse if ( array instanceof Int32Array ) denominator = 2147483647;\n\telse console.error( 'THREE.WebGLMorphtargets: Unsupported morph attribute data type: ', array );\n\n\tmorph.divideScalar( denominator );\n\n}\n\nfunction WebGLMorphtargets( gl, capabilities, textures ) {\n\n\tconst influencesList = {};\n\tconst morphInfluences = new Float32Array( 8 );\n\tconst morphTextures = new WeakMap();\n\tconst morph = new Vector4();\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\tif ( capabilities.isWebGL2 === true ) {\n\n\t\t\t// instead of using attributes, the WebGL 2 code path encodes morph targets\n\t\t\t// into an array of data textures. Each layer represents a single morph target.\n\n\t\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\t\tlet entry = morphTextures.get( geometry );\n\n\t\t\tif ( entry === undefined || entry.count !== morphTargetsCount ) {\n\n\t\t\t\tif ( entry !== undefined ) entry.texture.dispose();\n\n\t\t\t\tconst hasMorphPosition = geometry.morphAttributes.position !== undefined;\n\t\t\t\tconst hasMorphNormals = geometry.morphAttributes.normal !== undefined;\n\t\t\t\tconst hasMorphColors = geometry.morphAttributes.color !== undefined;\n\n\t\t\t\tconst morphTargets = geometry.morphAttributes.position || [];\n\t\t\t\tconst morphNormals = geometry.morphAttributes.normal || [];\n\t\t\t\tconst morphColors = geometry.morphAttributes.color || [];\n\n\t\t\t\tlet vertexDataCount = 0;\n\n\t\t\t\tif ( hasMorphPosition === true ) vertexDataCount = 1;\n\t\t\t\tif ( hasMorphNormals === true ) vertexDataCount = 2;\n\t\t\t\tif ( hasMorphColors === true ) vertexDataCount = 3;\n\n\t\t\t\tlet width = geometry.attributes.position.count * vertexDataCount;\n\t\t\t\tlet height = 1;\n\n\t\t\t\tif ( width > capabilities.maxTextureSize ) {\n\n\t\t\t\t\theight = Math.ceil( width / capabilities.maxTextureSize );\n\t\t\t\t\twidth = capabilities.maxTextureSize;\n\n\t\t\t\t}\n\n\t\t\t\tconst buffer = new Float32Array( width * height * 4 * morphTargetsCount );\n\n\t\t\t\tconst texture = new DataArrayTexture( buffer, width, height, morphTargetsCount );\n\t\t\t\ttexture.type = FloatType;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t// fill buffer\n\n\t\t\t\tconst vertexDataStride = vertexDataCount * 4;\n\n\t\t\t\tfor ( let i = 0; i < morphTargetsCount; i ++ ) {\n\n\t\t\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\t\t\tconst morphNormal = morphNormals[ i ];\n\t\t\t\t\tconst morphColor = morphColors[ i ];\n\n\t\t\t\t\tconst offset = width * height * 4 * i;\n\n\t\t\t\t\tfor ( let j = 0; j < morphTarget.count; j ++ ) {\n\n\t\t\t\t\t\tconst stride = j * vertexDataStride;\n\n\t\t\t\t\t\tif ( hasMorphPosition === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphTarget, j );\n\n\t\t\t\t\t\t\tif ( morphTarget.normalized === true ) denormalize( morph, morphTarget );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 0 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 1 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 2 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 3 ] = 0;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasMorphNormals === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphNormal, j );\n\n\t\t\t\t\t\t\tif ( morphNormal.normalized === true ) denormalize( morph, morphNormal );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 4 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 5 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 6 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 7 ] = 0;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasMorphColors === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphColor, j );\n\n\t\t\t\t\t\t\tif ( morphColor.normalized === true ) denormalize( morph, morphColor );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 8 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 9 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 10 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 11 ] = ( morphColor.itemSize === 4 ) ? morph.w : 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\tentry = {\n\t\t\t\t\tcount: morphTargetsCount,\n\t\t\t\t\ttexture: texture,\n\t\t\t\t\tsize: new Vector2( width, height )\n\t\t\t\t};\n\n\t\t\t\tmorphTextures.set( geometry, entry );\n\n\t\t\t\tfunction disposeTexture() {\n\n\t\t\t\t\ttexture.dispose();\n\n\t\t\t\t\tmorphTextures.delete( geometry );\n\n\t\t\t\t\tgeometry.removeEventListener( 'dispose', disposeTexture );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.addEventListener( 'dispose', disposeTexture );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\t\tmorphInfluencesSum += objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', objectInfluences );\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTexture', entry.texture, textures );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTextureSize', entry.size );\n\n\n\t\t} else {\n\n\t\t\t// When object doesn't have morph target influences defined, we treat it as a 0-length array\n\t\t\t// This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences\n\n\t\t\tconst length = objectInfluences === undefined ? 0 : objectInfluences.length;\n\n\t\t\tlet influences = influencesList[ geometry.id ];\n\n\t\t\tif ( influences === undefined || influences.length !== length ) {\n\n\t\t\t\t// initialise list\n\n\t\t\t\tinfluences = [];\n\n\t\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t\t}\n\n\t\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t\t}\n\n\t\t\t// Collect influences\n\n\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\tconst influence = influences[ i ];\n\n\t\t\t\tinfluence[ 0 ] = i;\n\t\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tinfluences.sort( absNumericalSort );\n\n\t\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\t\tif ( i < length && influences[ i ][ 1 ] ) {\n\n\t\t\t\t\tworkInfluences[ i ][ 0 ] = influences[ i ][ 0 ];\n\t\t\t\t\tworkInfluences[ i ][ 1 ] = influences[ i ][ 1 ];\n\n\t\t\t\t} else {\n\n\t\t\t\t\tworkInfluences[ i ][ 0 ] = Number.MAX_SAFE_INTEGER;\n\t\t\t\t\tworkInfluences[ i ][ 1 ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tworkInfluences.sort( numericalSort );\n\n\t\t\tconst morphTargets = geometry.morphAttributes.position;\n\t\t\tconst morphNormals = geometry.morphAttributes.normal;\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\t\tconst influence = workInfluences[ i ];\n\t\t\t\tconst index = influence[ 0 ];\n\t\t\t\tconst value = influence[ 1 ];\n\n\t\t\t\tif ( index !== Number.MAX_SAFE_INTEGER && value ) {\n\n\t\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== morphTargets[ index ] ) {\n\n\t\t\t\t\t\tgeometry.setAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== morphNormals[ index ] ) {\n\n\t\t\t\t\t\tgeometry.setAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\t\tmorphInfluencesSum += value;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( morphTargets && geometry.hasAttribute( 'morphTarget' + i ) === true ) {\n\n\t\t\t\t\t\tgeometry.deleteAttribute( 'morphTarget' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( morphNormals && geometry.hasAttribute( 'morphNormal' + i ) === true ) {\n\n\t\t\t\t\t\tgeometry.deleteAttribute( 'morphNormal' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// GLSL shader uses formula baseinfluence * base + sum(target * influence)\n\t\t\t// This allows us to switch between absolute morphs and relative morphs without changing shader code\n\t\t\t// When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\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\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\tif ( object.hasEventListener( 'dispose', onInstancedMeshDispose ) === false ) {\n\n\t\t\t\tobject.addEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\t\t}\n\n\t\t\tattributes.update( object.instanceMatrix, 34962 );\n\n\t\t\tif ( object.instanceColor !== null ) {\n\n\t\t\t\tattributes.update( object.instanceColor, 34962 );\n\n\t\t\t}\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\tfunction onInstancedMeshDispose( event ) {\n\n\t\tconst instancedMesh = event.target;\n\n\t\tinstancedMesh.removeEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\tattributes.remove( instancedMesh.instanceMatrix );\n\n\t\tif ( instancedMesh.instanceColor !== null ) attributes.remove( instancedMesh.instanceColor );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\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 emptyArrayTexture = new DataArrayTexture();\nconst empty3dTexture = new Data3DTexture();\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\tconst n = nBlocks * blockSize;\n\tlet r = 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 THREE.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 integer / boolean\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\n// Single integer / boolean vector (from flat array)\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// Single unsigned integer\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// Single unsigned integer vector (from flat array)\n\nfunction setValueV2ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2uiv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3uiv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4uiv( this.addr, v );\n\n\tcopyArray( cache, v );\n\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.setTexture2D( v || emptyTexture, 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 || empty3dTexture, 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.setTextureCube( v || emptyCubeTexture, 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 || emptyArrayTexture, unit );\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\t\tcase 0x8dc6: return setValueV2ui; // _VEC2\n\t\tcase 0x8dc7: return setValueV3ui; // _VEC3\n\t\tcase 0x8dc8: return setValueV4ui; // _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 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\n// Array of scalars\n\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Array of vectors (from flat array or array of THREE.VectorN)\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 (from flat array or array of THREE.MatrixN)\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 integer / boolean\n\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\n// Array of integer / boolean vectors (from flat array)\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// Array of unsigned integer\n\nfunction setValueV1uiArray( gl, v ) {\n\n\tgl.uniform1uiv( this.addr, v );\n\n}\n\n// Array of unsigned integer vectors (from flat array)\n\nfunction setValueV2uiArray( gl, v ) {\n\n\tgl.uniform2uiv( this.addr, v );\n\n}\n\nfunction setValueV3uiArray( gl, v ) {\n\n\tgl.uniform3uiv( this.addr, v );\n\n}\n\nfunction setValueV4uiArray( gl, v ) {\n\n\tgl.uniform4uiv( this.addr, v );\n\n}\n\n\n// Array of textures (2D / 3D / Cube / 2DArray)\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.setTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT3DArray( 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.setTexture3D( v[ i ] || empty3dTexture, 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.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT2DArrayArray( 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.setTexture2DArray( v[ i ] || emptyArrayTexture, units[ i ] );\n\n\t}\n\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 0x1405: return setValueV1uiArray; // UINT\n\t\tcase 0x8dc6: return setValueV2uiArray; // _VEC2\n\t\tcase 0x8dc7: return setValueV3uiArray; // _VEC3\n\t\tcase 0x8dc8: return setValueV4uiArray; // _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 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3DArray;\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\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 setValueT2DArrayArray;\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\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+)(\\])?(\\[|\\.)?/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\tconst idIsIndex = 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\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\nlet programIdCount = 0;\n\nfunction handleSource( string, errorLine ) {\n\n\tconst lines = string.split( '\\n' );\n\tconst lines2 = [];\n\n\tconst from = Math.max( errorLine - 6, 0 );\n\tconst to = Math.min( errorLine + 6, lines.length );\n\n\tfor ( let i = from; i < to; i ++ ) {\n\n\t\tlines2.push( ( i + 1 ) + ': ' + lines[ i ] );\n\n\t}\n\n\treturn lines2.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\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 errors = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && errors === '' ) return '';\n\n\tconst errorMatches = /ERROR: 0:(\\d+)/.exec( errors );\n\tif ( errorMatches ) {\n\n\t\t// --enable-privileged-webgl-extension\n\t\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\t\tconst errorLine = parseInt( errorMatches[ 0 ] );\n\t\treturn type.toUpperCase() + '\\n\\n' + errors + '\\n\\n' + handleSource( gl.getShaderSource( shader ), errorLine );\n\n\t} else {\n\n\t\treturn errors;\n\n\t}\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.envMapCubeUVHeight || 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.transmission ) && 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\tlet locationSize = 1;\n\t\tif ( info.type === 35674 ) locationSize = 2;\n\t\tif ( info.type === 35675 ) locationSize = 3;\n\t\tif ( info.type === 35676 ) locationSize = 4;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = {\n\t\t\ttype: info.type,\n\t\t\tlocation: gl.getAttribLocation( program, name ),\n\t\t\tlocationSize: locationSize\n\t\t};\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\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;\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( /\\[\\s*i\\s*\\]/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\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\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\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 generateCubeUVSize( parameters ) {\n\n\tconst imageHeight = parameters.envMapCubeUVHeight;\n\n\tif ( imageHeight === null ) return null;\n\n\tconst maxMip = Math.log2( imageHeight ) - 2;\n\n\tconst texelHeight = 1.0 / imageHeight;\n\n\tconst texelWidth = 1.0 / ( 3 * Math.max( Math.pow( 2, maxMip ), 7 * 16 ) );\n\n\treturn { texelWidth, texelHeight, maxMip };\n\n}\n\nfunction WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {\n\n\t// TODO Send this event to Three.js DevTools\n\t// console.log( 'WebGLProgram', cacheKey );\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\tconst envMapCubeUVSize = generateCubeUVSize( parameters );\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\tlet versionString = parameters.glslVersion ? '#version ' + parameters.glslVersion + '\\n' : '';\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.instancingColor ? '#define USE_INSTANCING_COLOR' : '',\n\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\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.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\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULARINTENSITYMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULARCOLORMAP' : '',\n\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.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEENCOLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEENROUGHNESSMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\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\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\t( parameters.morphColors && parameters.isWebGL2 ) ? '#define USE_MORPHCOLORS' : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE' : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE_STRIDE ' + parameters.morphTextureStride : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_COUNT ' + parameters.morphTargetsCount : '',\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'\tattribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_INSTANCING_COLOR',\n\n\t\t\t'\tattribute vec3 instanceColor;',\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'#if defined( USE_COLOR_ALPHA )',\n\n\t\t\t'\tattribute vec4 color;',\n\n\t\t\t'#elif defined( USE_COLOR )',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )',\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\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\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_WIDTH ' + envMapCubeUVSize.texelWidth : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_HEIGHT ' + envMapCubeUVSize.texelHeight : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_MAX_MIP ' + envMapCubeUVSize.maxMip + '.0' : '',\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.clearcoat ? '#define USE_CLEARCOAT' : '',\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\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULARINTENSITYMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULARCOLORMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.alphaTest ? '#define USE_ALPHATEST' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEENCOLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEENROUGHNESSMAP' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\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'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\t\t\tparameters.opaque ? '#define OPAQUE' : '',\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\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ),\n\n\t\t\tparameters.useDepthPacking ? '#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 !== true ) {\n\n\t\t// GLSL 3.0 conversion for built-in materials and ShaderMaterial\n\n\t\tversionString = '#version 300 es\\n';\n\n\t\tprefixVertex = [\n\t\t\t'precision mediump sampler2DArray;',\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'#define varying in',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : 'layout(location = 0) out highp vec4 pc_fragColor;',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : '#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 = versionString + prefixVertex + vertexShader;\n\tconst fragmentGlsl = versionString + 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(\n\t\t\t\t'THREE.WebGLProgram: Shader Error ' + gl.getError() + ' - ' +\n\t\t\t\t'VALIDATE_STATUS ' + gl.getProgramParameter( program, 35715 ) + '\\n\\n' +\n\t\t\t\t'Program Info Log: ' + programLog + '\\n' +\n\t\t\t\tvertexErrors + '\\n' +\n\t\t\t\tfragmentErrors\n\t\t\t);\n\n\t\t} else if ( programLog !== '' ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Program Info Log:', 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\nlet _id = 0;\n\nclass WebGLShaderCache {\n\n\tconstructor() {\n\n\t\tthis.shaderCache = new Map();\n\t\tthis.materialCache = new Map();\n\n\t}\n\n\tupdate( material ) {\n\n\t\tconst vertexShader = material.vertexShader;\n\t\tconst fragmentShader = material.fragmentShader;\n\n\t\tconst vertexShaderStage = this._getShaderStage( vertexShader );\n\t\tconst fragmentShaderStage = this._getShaderStage( fragmentShader );\n\n\t\tconst materialShaders = this._getShaderCacheForMaterial( material );\n\n\t\tif ( materialShaders.has( vertexShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( vertexShaderStage );\n\t\t\tvertexShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\tif ( materialShaders.has( fragmentShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( fragmentShaderStage );\n\t\t\tfragmentShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( material ) {\n\n\t\tconst materialShaders = this.materialCache.get( material );\n\n\t\tfor ( const shaderStage of materialShaders ) {\n\n\t\t\tshaderStage.usedTimes --;\n\n\t\t\tif ( shaderStage.usedTimes === 0 ) this.shaderCache.delete( shaderStage.code );\n\n\t\t}\n\n\t\tthis.materialCache.delete( material );\n\n\t\treturn this;\n\n\t}\n\n\tgetVertexShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.vertexShader ).id;\n\n\t}\n\n\tgetFragmentShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.fragmentShader ).id;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shaderCache.clear();\n\t\tthis.materialCache.clear();\n\n\t}\n\n\t_getShaderCacheForMaterial( material ) {\n\n\t\tconst cache = this.materialCache;\n\n\t\tif ( cache.has( material ) === false ) {\n\n\t\t\tcache.set( material, new Set() );\n\n\t\t}\n\n\t\treturn cache.get( material );\n\n\t}\n\n\t_getShaderStage( code ) {\n\n\t\tconst cache = this.shaderCache;\n\n\t\tif ( cache.has( code ) === false ) {\n\n\t\t\tconst stage = new WebGLShaderStage( code );\n\t\t\tcache.set( code, stage );\n\n\t\t}\n\n\t\treturn cache.get( code );\n\n\t}\n\n}\n\nclass WebGLShaderStage {\n\n\tconstructor( code ) {\n\n\t\tthis.id = _id ++;\n\n\t\tthis.code = code;\n\t\tthis.usedTimes = 0;\n\n\t}\n\n}\n\nfunction WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping ) {\n\n\tconst _programLayers = new Layers();\n\tconst _customShaders = new WebGLShaderCache();\n\tconst programs = [];\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst vertexTextures = capabilities.vertexTextures;\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\tfunction getParameters( material, lights, shadows, scene, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst geometry = object.geometry;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\tconst envMapCubeUVHeight = ( !! envMap ) && ( envMap.mapping === CubeUVReflectionMapping ) ? envMap.image.height : null;\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\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\t//\n\n\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\tlet morphTextureStride = 0;\n\n\t\tif ( geometry.morphAttributes.position !== undefined ) morphTextureStride = 1;\n\t\tif ( geometry.morphAttributes.normal !== undefined ) morphTextureStride = 2;\n\t\tif ( geometry.morphAttributes.color !== undefined ) morphTextureStride = 3;\n\n\t\t//\n\n\t\tlet vertexShader, fragmentShader;\n\t\tlet customVertexShaderID, customFragmentShaderID;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\n\t\t\tvertexShader = shader.vertexShader;\n\t\t\tfragmentShader = shader.fragmentShader;\n\n\t\t} else {\n\n\t\t\tvertexShader = material.vertexShader;\n\t\t\tfragmentShader = material.fragmentShader;\n\n\t\t\t_customShaders.update( material );\n\n\t\t\tcustomVertexShaderID = _customShaders.getVertexShaderID( material );\n\t\t\tcustomFragmentShaderID = _customShaders.getFragmentShaderID( material );\n\n\t\t}\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst useAlphaTest = material.alphaTest > 0;\n\t\tconst useClearcoat = material.clearcoat > 0;\n\n\t\tconst parameters = {\n\n\t\t\tisWebGL2: isWebGL2,\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderName: material.type,\n\n\t\t\tvertexShader: vertexShader,\n\t\t\tfragmentShader: fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tcustomVertexShaderID: customVertexShaderID,\n\t\t\tcustomFragmentShaderID: customFragmentShaderID,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial === true,\n\t\t\tglslVersion: material.glslVersion,\n\n\t\t\tprecision: precision,\n\n\t\t\tinstancing: object.isInstancedMesh === true,\n\t\t\tinstancingColor: object.isInstancedMesh === true && object.instanceColor !== null,\n\n\t\t\tsupportsVertexTextures: vertexTextures,\n\t\t\toutputEncoding: ( currentRenderTarget === null ) ? renderer.outputEncoding : ( currentRenderTarget.isXRRenderTarget === true ? currentRenderTarget.texture.encoding : LinearEncoding ),\n\t\t\tmap: !! material.map,\n\t\t\tmatcap: !! material.matcap,\n\t\t\tenvMap: !! envMap,\n\t\t\tenvMapMode: envMap && envMap.mapping,\n\t\t\tenvMapCubeUVHeight: envMapCubeUVHeight,\n\t\t\tlightMap: !! material.lightMap,\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! 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\n\t\t\tdecodeVideoTexture: !! material.map && ( material.map.isVideoTexture === true ) && ( material.map.encoding === sRGBEncoding ),\n\n\t\t\tclearcoat: useClearcoat,\n\t\t\tclearcoatMap: useClearcoat && !! material.clearcoatMap,\n\t\t\tclearcoatRoughnessMap: useClearcoat && !! material.clearcoatRoughnessMap,\n\t\t\tclearcoatNormalMap: useClearcoat && !! material.clearcoatNormalMap,\n\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\tspecularIntensityMap: !! material.specularIntensityMap,\n\t\t\tspecularColorMap: !! material.specularColorMap,\n\n\t\t\topaque: material.transparent === false && material.blending === NormalBlending,\n\n\t\t\talphaMap: !! material.alphaMap,\n\t\t\talphaTest: useAlphaTest,\n\n\t\t\tgradientMap: !! material.gradientMap,\n\n\t\t\tsheen: material.sheen > 0,\n\t\t\tsheenColorMap: !! material.sheenColorMap,\n\t\t\tsheenRoughnessMap: !! material.sheenRoughnessMap,\n\n\t\t\ttransmission: material.transmission > 0,\n\t\t\ttransmissionMap: !! material.transmissionMap,\n\t\t\tthicknessMap: !! material.thicknessMap,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexTangents: ( !! material.normalMap && !! geometry.attributes.tangent ),\n\t\t\tvertexColors: material.vertexColors,\n\t\t\tvertexAlphas: material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4,\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 || !! material.transmissionMap || !! material.thicknessMap || !! material.specularIntensityMap || !! material.specularColorMap || !! material.sheenColorMap || !! material.sheenRoughnessMap,\n\t\t\tuvsVertexOnly: ! ( !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatNormalMap || material.transmission > 0 || !! material.transmissionMap || !! material.thicknessMap || !! material.specularIntensityMap || !! material.specularColorMap || material.sheen > 0 || !! material.sheenColorMap || !! material.sheenRoughnessMap ) && !! material.displacementMap,\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog === true,\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: object.isSkinnedMesh === true,\n\n\t\t\tmorphTargets: geometry.morphAttributes.position !== undefined,\n\t\t\tmorphNormals: geometry.morphAttributes.normal !== undefined,\n\t\t\tmorphColors: geometry.morphAttributes.color !== undefined,\n\t\t\tmorphTargetsCount: morphTargetsCount,\n\t\t\tmorphTextureStride: morphTextureStride,\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: clipping.numPlanes,\n\t\t\tnumClipIntersection: clipping.numIntersection,\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\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tuseDepthPacking: !! material.depthPacking,\n\t\t\tdepthPacking: material.depthPacking || 0,\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.has( 'EXT_frag_depth' ),\n\t\t\trendererExtensionDrawBuffers: isWebGL2 || extensions.has( 'WEBGL_draw_buffers' ),\n\t\t\trendererExtensionShaderTextureLod: isWebGL2 || extensions.has( 'EXT_shader_texture_lod' ),\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.customVertexShaderID );\n\t\t\tarray.push( parameters.customFragmentShaderID );\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 === false ) {\n\n\t\t\tgetProgramCacheKeyParameters( array, parameters );\n\t\t\tgetProgramCacheKeyBooleans( array, parameters );\n\t\t\tarray.push( renderer.outputEncoding );\n\n\t\t}\n\n\t\tarray.push( parameters.customProgramCacheKey );\n\n\t\treturn array.join();\n\n\t}\n\n\tfunction getProgramCacheKeyParameters( array, parameters ) {\n\n\t\tarray.push( parameters.precision );\n\t\tarray.push( parameters.outputEncoding );\n\t\tarray.push( parameters.envMapMode );\n\t\tarray.push( parameters.envMapCubeUVHeight );\n\t\tarray.push( parameters.combine );\n\t\tarray.push( parameters.vertexUvs );\n\t\tarray.push( parameters.fogExp2 );\n\t\tarray.push( parameters.sizeAttenuation );\n\t\tarray.push( parameters.morphTargetsCount );\n\t\tarray.push( parameters.morphAttributeCount );\n\t\tarray.push( parameters.numDirLights );\n\t\tarray.push( parameters.numPointLights );\n\t\tarray.push( parameters.numSpotLights );\n\t\tarray.push( parameters.numHemiLights );\n\t\tarray.push( parameters.numRectAreaLights );\n\t\tarray.push( parameters.numDirLightShadows );\n\t\tarray.push( parameters.numPointLightShadows );\n\t\tarray.push( parameters.numSpotLightShadows );\n\t\tarray.push( parameters.shadowMapType );\n\t\tarray.push( parameters.toneMapping );\n\t\tarray.push( parameters.numClippingPlanes );\n\t\tarray.push( parameters.numClipIntersection );\n\t\tarray.push( parameters.depthPacking );\n\n\t}\n\n\tfunction getProgramCacheKeyBooleans( array, parameters ) {\n\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.isWebGL2 )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.supportsVertexTextures )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.instancing )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.instancingColor )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.map )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.matcap )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.envMap )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.lightMap )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.aoMap )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.emissiveMap )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.bumpMap )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.normalMap )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.objectSpaceNormalMap )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.tangentSpaceNormalMap )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.clearcoat )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.clearcoatMap )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.clearcoatRoughnessMap )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.clearcoatNormalMap )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.displacementMap )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.specularMap )\n\t\t\t_programLayers.enable( 19 );\n\t\tif ( parameters.roughnessMap )\n\t\t\t_programLayers.enable( 20 );\n\t\tif ( parameters.metalnessMap )\n\t\t\t_programLayers.enable( 21 );\n\t\tif ( parameters.gradientMap )\n\t\t\t_programLayers.enable( 22 );\n\t\tif ( parameters.alphaMap )\n\t\t\t_programLayers.enable( 23 );\n\t\tif ( parameters.alphaTest )\n\t\t\t_programLayers.enable( 24 );\n\t\tif ( parameters.vertexColors )\n\t\t\t_programLayers.enable( 25 );\n\t\tif ( parameters.vertexAlphas )\n\t\t\t_programLayers.enable( 26 );\n\t\tif ( parameters.vertexUvs )\n\t\t\t_programLayers.enable( 27 );\n\t\tif ( parameters.vertexTangents )\n\t\t\t_programLayers.enable( 28 );\n\t\tif ( parameters.uvsVertexOnly )\n\t\t\t_programLayers.enable( 29 );\n\t\tif ( parameters.fog )\n\t\t\t_programLayers.enable( 30 );\n\n\t\tarray.push( _programLayers.mask );\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.useFog )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.flatShading )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.logarithmicDepthBuffer )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.skinning )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.morphTargets )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.morphNormals )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.morphColors )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.premultipliedAlpha )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.shadowMapEnabled )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.physicallyCorrectLights )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.doubleSided )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.flipSided )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.useDepthPacking )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.dithering )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.specularIntensityMap )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.specularColorMap )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.transmission )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.transmissionMap )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.thicknessMap )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.sheen )\n\t\t\t_programLayers.enable( 19 );\n\t\tif ( parameters.sheenColorMap )\n\t\t\t_programLayers.enable( 20 );\n\t\tif ( parameters.sheenRoughnessMap )\n\t\t\t_programLayers.enable( 21 );\n\t\tif ( parameters.decodeVideoTexture )\n\t\t\t_programLayers.enable( 22 );\n\t\tif ( parameters.opaque )\n\t\t\t_programLayers.enable( 23 );\n\n\t\tarray.push( _programLayers.mask );\n\n\t}\n\n\tfunction getUniforms( material ) {\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\t\tlet uniforms;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\t\t\tuniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\t} else {\n\n\t\t\tuniforms = material.uniforms;\n\n\t\t}\n\n\t\treturn uniforms;\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\tfunction releaseShaderCache( material ) {\n\n\t\t_customShaders.remove( material );\n\n\t}\n\n\tfunction dispose() {\n\n\t\t_customShaders.dispose();\n\n\t}\n\n\treturn {\n\t\tgetParameters: getParameters,\n\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\tgetUniforms: getUniforms,\n\t\tacquireProgram: acquireProgram,\n\t\treleaseProgram: releaseProgram,\n\t\treleaseShaderCache: releaseShaderCache,\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tprograms: programs,\n\t\tdispose: dispose\n\t};\n\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\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.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 transmissive = [];\n\tconst transparent = [];\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransmissive.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\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.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\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.push( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.push( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.push( renderItem );\n\n\t\t}\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\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.unshift( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.unshift( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.unshift( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\n\t\tif ( transmissive.length > 1 ) transmissive.sort( customTransparentSort || reversePainterSortStable );\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.group = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\topaque: opaque,\n\t\ttransmissive: transmissive,\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 get( scene, renderCallDepth ) {\n\n\t\tlet list;\n\n\t\tif ( lists.has( scene ) === false ) {\n\n\t\t\tlist = new WebGLRenderList();\n\t\t\tlists.set( scene, [ list ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= lists.get( scene ).length ) {\n\n\t\t\t\tlist = new WebGLRenderList();\n\t\t\t\tlists.get( scene ).push( list );\n\n\t\t\t} else {\n\n\t\t\t\tlist = lists.get( scene )[ renderCallDepth ];\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\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( extensions, capabilities ) {\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\trectAreaLTC1: null,\n\t\trectAreaLTC2: null,\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, physicallyCorrectLights ) {\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\tlights.sort( shadowCastingLightsFirst );\n\n\t\t// artist-friendly light intensity scaling factor\n\t\tconst scaleFactor = ( physicallyCorrectLights !== true ) ? Math.PI : 1;\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 * scaleFactor;\n\t\t\t\tg += color.g * intensity * scaleFactor;\n\t\t\t\tb += color.b * intensity * scaleFactor;\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 * scaleFactor );\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\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.distance = distance;\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.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\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.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\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.skyColor.copy( light.color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity * scaleFactor );\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\tif ( rectAreaLength > 0 ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\t// WebGL 2\n\n\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t} else {\n\n\t\t\t\t// WebGL 1\n\n\t\t\t\tif ( extensions.has( 'OES_texture_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t\t} else if ( extensions.has( 'OES_texture_half_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.' );\n\n\t\t\t\t}\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\tfunction setupView( lights, camera ) {\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\tconst viewMatrix = camera.matrixWorldInverse;\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\tif ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = state.directional[ directionalLength ];\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\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = state.spot[ spotLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\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\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = state.rectArea[ rectAreaLength ];\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\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = state.point[ pointLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = state.hemi[ hemiLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tsetupView: setupView,\n\t\tstate: state\n\t};\n\n}\n\nfunction WebGLRenderState( extensions, capabilities ) {\n\n\tconst lights = new WebGLLights( extensions, capabilities );\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( physicallyCorrectLights ) {\n\n\t\tlights.setup( lightsArray, physicallyCorrectLights );\n\n\t}\n\n\tfunction setupLightsView( camera ) {\n\n\t\tlights.setupView( lightsArray, 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\t\tsetupLightsView: setupLightsView,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates( extensions, capabilities ) {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction get( scene, renderCallDepth = 0 ) {\n\n\t\tlet renderState;\n\n\t\tif ( renderStates.has( scene ) === false ) {\n\n\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\trenderStates.set( scene, [ renderState ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= renderStates.get( scene ).length ) {\n\n\t\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\t\trenderStates.get( scene ).push( renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStates.get( scene )[ renderCallDepth ];\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\nclass MeshDepthMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshDepthMaterial';\n\n\t\tthis.depthPacking = BasicDepthPacking;\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.depthPacking = source.depthPacking;\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\nclass MeshDistanceMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshDistanceMaterial';\n\n\t\tthis.referencePosition = new Vector3();\n\t\tthis.nearDistance = 1;\n\t\tthis.farDistance = 1000;\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.referencePosition.copy( source.referencePosition );\n\t\tthis.nearDistance = source.nearDistance;\n\t\tthis.farDistance = source.farDistance;\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\n\nconst vertex = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\nconst fragment = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include \\nvoid main() {\\n\\tconst float samples = float( VSM_SAMPLES );\\n\\tfloat mean = 0.0;\\n\\tfloat squared_mean = 0.0;\\n\\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\\n\\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\\n\\tfor ( float i = 0.0; i < samples; i ++ ) {\\n\\t\\tfloat uvOffset = uvStart + i * uvStride;\\n\\t\\t#ifdef HORIZONTAL_PASS\\n\\t\\t\\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\\n\\t\\t\\tmean += distribution.x;\\n\\t\\t\\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n\\t\\t#else\\n\\t\\t\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\\n\\t\\t\\tmean += depth;\\n\\t\\t\\tsquared_mean += depth * depth;\\n\\t\\t#endif\\n\\t}\\n\\tmean = mean / samples;\\n\\tsquared_mean = squared_mean / samples;\\n\\tfloat std_dev = sqrt( squared_mean - mean * mean );\\n\\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nfunction WebGLShadowMap( _renderer, _objects, _capabilities ) {\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_depthMaterial = new MeshDepthMaterial( { depthPacking: RGBADepthPacking } ),\n\t\t_distanceMaterial = new MeshDistanceMaterial(),\n\n\t\t_materialCache = {},\n\n\t\t_maxTextureSize = _capabilities.maxTextureSize;\n\n\tconst shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\n\n\tconst shadowMaterialVertical = new ShaderMaterial( {\n\t\tdefines: {\n\t\t\tVSM_SAMPLES: 8\n\t\t},\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: vertex,\n\t\tfragmentShader: fragment\n\n\t} );\n\n\tconst shadowMaterialHorizontal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizontal.defines.HORIZONTAL_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 === 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\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\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\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y );\n\t\t\t\tshadow.map.texture.name = light.name + '.shadowMap';\n\n\t\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y );\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\tif ( shadowMaterialVertical.defines.VSM_SAMPLES !== shadow.blurSamples ) {\n\n\t\t\tshadowMaterialVertical.defines.VSM_SAMPLES = shadow.blurSamples;\n\t\t\tshadowMaterialHorizontal.defines.VSM_SAMPLES = shadow.blurSamples;\n\n\t\t\tshadowMaterialVertical.needsUpdate = true;\n\t\t\tshadowMaterialHorizontal.needsUpdate = true;\n\n\t\t}\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// horizontal pass\n\n\t\tshadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizontal.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, shadowMaterialHorizontal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterial( object, material, light, shadowCameraNear, shadowCameraFar, type ) {\n\n\t\tlet result = null;\n\n\t\tconst customMaterial = ( light.isPointLight === true ) ? object.customDistanceMaterial : object.customDepthMaterial;\n\n\t\tif ( customMaterial !== undefined ) {\n\n\t\t\tresult = customMaterial;\n\n\t\t} else {\n\n\t\t\tresult = ( light.isPointLight === true ) ? _distanceMaterial : _depthMaterial;\n\n\t\t}\n\n\t\tif ( ( _renderer.localClippingEnabled && material.clipShadows === true && material.clippingPlanes.length !== 0 ) ||\n\t\t\t( material.displacementMap && material.displacementScale !== 0 ) ||\n\t\t\t( material.alphaMap && material.alphaTest > 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.alphaMap = material.alphaMap;\n\t\tresult.alphaTest = material.alphaTest;\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.displacementMap = material.displacementMap;\n\t\tresult.displacementScale = material.displacementScale;\n\t\tresult.displacementBias = material.displacementBias;\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, 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, 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\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 !== stencilRef ||\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 !== stencilFail ||\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 currentBoundFramebuffers = {};\n\tlet currentDrawbuffers = new WeakMap();\n\tlet defaultDrawbuffers = [];\n\n\tlet currentProgram = null;\n\n\tlet currentBlendingEnabled = false;\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 (\\d)/.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 (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tlet currentTextureSlot = null;\n\tlet currentBoundTextures = {};\n\n\tconst scissorParam = gl.getParameter( 3088 );\n\tconst viewportParam = gl.getParameter( 2978 );\n\n\tconst currentScissor = new Vector4().fromArray( scissorParam );\n\tconst currentViewport = new Vector4().fromArray( viewportParam );\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 bindFramebuffer( target, framebuffer ) {\n\n\t\tif ( currentBoundFramebuffers[ target ] !== framebuffer ) {\n\n\t\t\tgl.bindFramebuffer( target, framebuffer );\n\n\t\t\tcurrentBoundFramebuffers[ target ] = framebuffer;\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t// 36009 is equivalent to 36160\n\n\t\t\t\tif ( target === 36009 ) {\n\n\t\t\t\t\tcurrentBoundFramebuffers[ 36160 ] = framebuffer;\n\n\t\t\t\t}\n\n\t\t\t\tif ( target === 36160 ) {\n\n\t\t\t\t\tcurrentBoundFramebuffers[ 36009 ] = framebuffer;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction drawBuffers( renderTarget, framebuffer ) {\n\n\t\tlet drawBuffers = defaultDrawbuffers;\n\n\t\tlet needsUpdate = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tdrawBuffers = currentDrawbuffers.get( framebuffer );\n\n\t\t\tif ( drawBuffers === undefined ) {\n\n\t\t\t\tdrawBuffers = [];\n\t\t\t\tcurrentDrawbuffers.set( framebuffer, drawBuffers );\n\n\t\t\t}\n\n\t\t\tif ( renderTarget.isWebGLMultipleRenderTargets ) {\n\n\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\tif ( drawBuffers.length !== textures.length || drawBuffers[ 0 ] !== 36064 ) {\n\n\t\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tdrawBuffers[ i ] = 36064 + i;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tdrawBuffers.length = textures.length;\n\n\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( drawBuffers[ 0 ] !== 36064 ) {\n\n\t\t\t\t\tdrawBuffers[ 0 ] = 36064;\n\n\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( drawBuffers[ 0 ] !== 1029 ) {\n\n\t\t\t\tdrawBuffers[ 0 ] = 1029;\n\n\t\t\t\tneedsUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tgl.drawBuffers( drawBuffers );\n\n\t\t\t} else {\n\n\t\t\t\textensions.get( 'WEBGL_draw_buffers' ).drawBuffersWEBGL( drawBuffers );\n\n\t\t\t}\n\n\t\t}\n\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 === true ) {\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 === false ) {\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, 769, 0, 1 );\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.blendFuncSeparate( 0, 769, 0, 1 );\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\tmaterial.alphaToCoverage === true\n\t\t\t? enable( 32926 )\n\t\t\t: disable( 32926 );\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 texSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage2D.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 texSubImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage3D.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 compressedTexSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexSubImage2D.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 texStorage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage2D.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 texStorage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage3D.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\t// reset state\n\n\t\tgl.disable( 3042 );\n\t\tgl.disable( 2884 );\n\t\tgl.disable( 2929 );\n\t\tgl.disable( 32823 );\n\t\tgl.disable( 3089 );\n\t\tgl.disable( 2960 );\n\t\tgl.disable( 32926 );\n\n\t\tgl.blendEquation( 32774 );\n\t\tgl.blendFunc( 1, 0 );\n\t\tgl.blendFuncSeparate( 1, 0, 1, 0 );\n\n\t\tgl.colorMask( true, true, true, true );\n\t\tgl.clearColor( 0, 0, 0, 0 );\n\n\t\tgl.depthMask( true );\n\t\tgl.depthFunc( 513 );\n\t\tgl.clearDepth( 1 );\n\n\t\tgl.stencilMask( 0xffffffff );\n\t\tgl.stencilFunc( 519, 0, 0xffffffff );\n\t\tgl.stencilOp( 7680, 7680, 7680 );\n\t\tgl.clearStencil( 0 );\n\n\t\tgl.cullFace( 1029 );\n\t\tgl.frontFace( 2305 );\n\n\t\tgl.polygonOffset( 0, 0 );\n\n\t\tgl.activeTexture( 33984 );\n\n\t\tgl.bindFramebuffer( 36160, null );\n\n\t\tif ( isWebGL2 === true ) {\n\n\t\t\tgl.bindFramebuffer( 36009, null );\n\t\t\tgl.bindFramebuffer( 36008, null );\n\n\t\t}\n\n\t\tgl.useProgram( null );\n\n\t\tgl.lineWidth( 1 );\n\n\t\tgl.scissor( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tgl.viewport( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\t// reset internals\n\n\t\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentBoundFramebuffers = {};\n\t\tcurrentDrawbuffers = new WeakMap();\n\t\tdefaultDrawbuffers = [];\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlendingEnabled = false;\n\t\tcurrentBlending = null;\n\t\tcurrentBlendEquation = null;\n\t\tcurrentBlendSrc = null;\n\t\tcurrentBlendDst = null;\n\t\tcurrentBlendEquationAlpha = null;\n\t\tcurrentBlendSrcAlpha = null;\n\t\tcurrentBlendDstAlpha = null;\n\t\tcurrentPremultipledAlpha = false;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcurrentLineWidth = null;\n\n\t\tcurrentPolygonOffsetFactor = null;\n\t\tcurrentPolygonOffsetUnits = null;\n\n\t\tcurrentScissor.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tcurrentViewport.set( 0, 0, gl.canvas.width, gl.canvas.height );\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\tbindFramebuffer: bindFramebuffer,\n\t\tdrawBuffers: drawBuffers,\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\ttexStorage2D: texStorage2D,\n\t\ttexStorage3D: texStorage3D,\n\t\ttexSubImage2D: texSubImage2D,\n\t\ttexSubImage3D: texSubImage3D,\n\t\tcompressedTexSubImage2D: compressedTexSubImage2D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\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\tconst multisampledRTTExt = extensions.has( 'WEBGL_multisampled_render_to_texture' ) ? extensions.get( 'WEBGL_multisampled_render_to_texture' ) : null;\n\tconst supportsInvalidateFramebuffer = /OculusBrowser/g.test( navigator.userAgent );\n\n\tconst _videoTextures = new WeakMap();\n\tlet _canvas;\n\n\tconst _sources = new WeakMap(); // maps WebglTexture objects to instances of Source\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// eslint-disable-next-line compat/compat\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\t// eslint-disable-next-line compat/compat\n\t\t\tnew OffscreenCanvas( width, height ) : createElementNS( '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 ? 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$1( image ) {\n\n\t\treturn isPowerOfTwo( image.width ) && 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 ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType, encoding, isVideoTexture = false ) {\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 === 33319 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 33328;\n\t\t\tif ( glType === 5131 ) internalFormat = 33327;\n\t\t\tif ( glType === 5121 ) internalFormat = 33323;\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 = ( encoding === sRGBEncoding && isVideoTexture === false ) ? 35907 : 32856;\n\t\t\tif ( glType === 32819 ) internalFormat = 32854;\n\t\t\tif ( glType === 32820 ) internalFormat = 32855;\n\n\t\t}\n\n\t\tif ( internalFormat === 33325 || internalFormat === 33326 ||\n\t\t\tinternalFormat === 33327 || internalFormat === 33328 ||\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\tfunction getMipLevels( texture, image, supportsMips ) {\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) === true || ( texture.isFramebufferTexture && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) ) {\n\n\t\t\treturn Math.log2( Math.max( image.width, image.height ) ) + 1;\n\n\t\t} else if ( texture.mipmaps !== undefined && texture.mipmaps.length > 0 ) {\n\n\t\t\t// user-defined mipmaps\n\n\t\t\treturn texture.mipmaps.length;\n\n\t\t} else if ( texture.isCompressedTexture && Array.isArray( texture.image ) ) {\n\n\t\t\treturn image.mipmaps.length;\n\n\t\t} else {\n\n\t\t\t// texture without mipmaps (only base level)\n\n\t\t\treturn 1;\n\n\t\t}\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}\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}\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// check if it's necessary to remove the WebGLTexture object\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures ) {\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\t\t\twebglTexture.usedTimes --;\n\n\t\t\t// the WebGLTexture object is not used anymore, remove it\n\n\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\tdeleteTexture( texture );\n\n\t\t\t}\n\n\t\t\t// remove the weak map entry if no WebGLTexture uses the source anymore\n\n\t\t\tif ( Object.keys( webglTextures ).length === 0 ) {\n\n\t\t\t\t_sources.delete( source );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deleteTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\t\tdelete webglTextures[ textureProperties.__cacheKey ];\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t\tinfo.memory.textures --;\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\tif ( renderTarget.isWebGLMultipleRenderTargets ) {\n\n\t\t\tfor ( let i = 0, il = texture.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachmentProperties = properties.get( texture[ i ] );\n\n\t\t\t\tif ( attachmentProperties.__webglTexture ) {\n\n\t\t\t\t\t_gl.deleteTexture( attachmentProperties.__webglTexture );\n\n\t\t\t\t\tinfo.memory.textures --;\n\n\t\t\t\t}\n\n\t\t\t\tproperties.remove( texture[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( 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\tfunction getTextureCacheKey( texture ) {\n\n\t\tconst array = [];\n\n\t\tarray.push( texture.wrapS );\n\t\tarray.push( texture.wrapT );\n\t\tarray.push( texture.magFilter );\n\t\tarray.push( texture.minFilter );\n\t\tarray.push( texture.anisotropy );\n\t\tarray.push( texture.internalFormat );\n\t\tarray.push( texture.format );\n\t\tarray.push( texture.type );\n\t\tarray.push( texture.generateMipmaps );\n\t\tarray.push( texture.premultiplyAlpha );\n\t\tarray.push( texture.flipY );\n\t\tarray.push( texture.unpackAlignment );\n\t\tarray.push( texture.encoding );\n\n\t\treturn array.join();\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.isRenderTargetTexture === false && texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tconst image = texture.image;\n\n\t\t\tif ( image === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but no image data found.' );\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\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadCubeTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, textureProperties.__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\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tif ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false ) return; // verify extension for WebGL 1 and WebGL 2\n\t\t\tif ( isWebGL2 === false && ( texture.type === HalfFloatType && extensions.has( 'OES_texture_half_float_linear' ) === false ) ) return; // verify extension for WebGL 1 only\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\tlet forceUpload = false;\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}\n\n\t\t// create Source <-> WebGLTextures mapping if necessary\n\n\t\tconst source = texture.source;\n\t\tlet webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures === undefined ) {\n\n\t\t\twebglTextures = {};\n\t\t\t_sources.set( source, webglTextures );\n\n\t\t}\n\n\t\t// check if there is already a WebGLTexture object for the given texture parameters\n\n\t\tconst textureCacheKey = getTextureCacheKey( texture );\n\n\t\tif ( textureCacheKey !== textureProperties.__cacheKey ) {\n\n\t\t\t// if not, create a new instance of WebGLTexture\n\n\t\t\tif ( webglTextures[ textureCacheKey ] === undefined ) {\n\n\t\t\t\t// create new entry\n\n\t\t\t\twebglTextures[ textureCacheKey ] = {\n\t\t\t\t\ttexture: _gl.createTexture(),\n\t\t\t\t\tusedTimes: 0\n\t\t\t\t};\n\n\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t// when a new instance of WebGLTexture was created, a texture upload is required\n\t\t\t\t// even if the image contents are identical\n\n\t\t\t\tforceUpload = true;\n\n\t\t\t}\n\n\t\t\twebglTextures[ textureCacheKey ].usedTimes ++;\n\n\t\t\t// every time the texture cache key changes, it's necessary to check if an instance of\n\t\t\t// WebGLTexture can be deleted in order to avoid a memory leak.\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\n\t\t\tif ( webglTexture !== undefined ) {\n\n\t\t\t\twebglTextures[ textureProperties.__cacheKey ].usedTimes --;\n\n\t\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\t\tdeleteTexture( texture );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// store references to cache key and WebGLTexture object\n\n\t\t\ttextureProperties.__cacheKey = textureCacheKey;\n\t\t\ttextureProperties.__webglTexture = webglTextures[ textureCacheKey ].texture;\n\n\t\t}\n\n\t\treturn forceUpload;\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tlet textureType = 3553;\n\n\t\tif ( texture.isDataArrayTexture ) textureType = 35866;\n\t\tif ( texture.isData3DTexture ) textureType = 32879;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture );\n\n\t\tif ( source.version !== source.__currentVersion || forceUpload === true ) {\n\n\t\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( 37443, 0 );\n\n\t\t\tconst needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo$1( texture.image ) === false;\n\t\t\tlet image = resizeImage( texture.image, needsPowerOfTwo, false, maxTextureSize );\n\t\t\timage = verifyColorSpace( texture, image );\n\n\t\t\tconst supportsMips = isPowerOfTwo$1( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format, texture.encoding );\n\n\t\t\tlet glType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding, texture.isVideoTexture );\n\n\t\t\tsetTextureParameters( textureType, texture, supportsMips );\n\n\t\t\tlet mipmap;\n\t\t\tconst mipmaps = texture.mipmaps;\n\n\t\t\tconst useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( textureProperties.__version === undefined ) || ( forceUpload === true );\n\t\t\tconst levels = getMipLevels( texture, image, supportsMips );\n\n\t\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t\t// populate depth texture with dummy data\n\n\t\t\t\tglInternalFormat = 6402;\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t\t} else if ( texture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t\t} else if ( texture.type === UnsignedInt248Type ) {\n\n\t\t\t\t\t\tglInternalFormat = 35056;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tglInternalFormat = 33189; // WebGL2 requires sized internalformat for glTexImage2D\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\t\tconsole.error( 'WebGLRenderer: Floating point depth texture requires WebGL2.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// validation checks for WebGL 1\n\n\t\t\t\tif ( texture.format === DepthFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\t\ttexture.type = UnsignedShortType;\n\t\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( texture.format === DepthStencilFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tglInternalFormat = 34041;\n\n\t\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t//\n\n\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texStorage2D( 3553, 1, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 3553, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 3553, i, 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\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstate.texSubImage2D( 3553, 0, 0, 0, image.width, image.height, glFormat, glType, image.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t}\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\n\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( 3553, i, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\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\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 3553, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 3553, i, 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} else if ( texture.isDataArrayTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( 35866, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.texSubImage3D( 35866, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( 35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isData3DTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( 32879, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.texSubImage3D( 32879, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( 32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isFramebufferTexture ) {\n\n\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tlet width = image.width, height = image.height;\n\n\t\t\t\t\t\tfor ( let i = 0; i < levels; i ++ ) {\n\n\t\t\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, width, height, 0, glFormat, glType, null );\n\n\t\t\t\t\t\t\twidth >>= 1;\n\t\t\t\t\t\t\theight >>= 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} else {\n\n\t\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 3553, i, 0, 0, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstate.texSubImage2D( 3553, 0, 0, 0, glFormat, glType, image );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( textureType );\n\n\t\t\t}\n\n\t\t\tsource.__currentVersion = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t}\n\n\tfunction uploadCubeTexture( textureProperties, texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\tif ( source.version !== source.__currentVersion || forceUpload === true ) {\n\n\t\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( 37443, 0 );\n\n\t\t\tconst isCompressed = ( 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\tcubeImage[ i ] = verifyColorSpace( texture, cubeImage[ i ] );\n\n\t\t\t}\n\n\t\t\tconst image = cubeImage[ 0 ],\n\t\t\t\tsupportsMips = isPowerOfTwo$1( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format, texture.encoding ),\n\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\n\t\t\tconst useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( textureProperties.__version === undefined );\n\t\t\tlet levels = getMipLevels( texture, image, supportsMips );\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\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\tstate.texStorage2D( 34067, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t}\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 ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( 34069 + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\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\t}\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\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\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\t}\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 {\n\n\t\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t// TODO: Uniformly handle mipmap definitions\n\t\t\t\t\t// Normal textures and compressed cube textures define base level + mips with their mipmap array\n\t\t\t\t\t// Uncompressed cube textures use their mipmap array only for mips (no base level)\n\n\t\t\t\t\tif ( mipmaps.length > 0 ) levels ++;\n\n\t\t\t\t\tstate.texStorage2D( 34067, levels, glInternalFormat, cubeImage[ 0 ].width, cubeImage[ 0 ].height );\n\n\t\t\t\t}\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\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, 0, 0, 0, cubeImage[ i ].width, cubeImage[ i ].height, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t} else {\n\n\t\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\t}\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\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, j + 1, 0, 0, mipmapImage.width, mipmapImage.height, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\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\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, 0, 0, 0, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t}\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\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, j + 1, 0, 0, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t\t} else {\n\n\t\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\t}\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\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 );\n\n\t\t\t}\n\n\t\t\tsource.__currentVersion = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\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, texture, attachment, textureTarget ) {\n\n\t\tconst glFormat = utils.convert( texture.format, texture.encoding );\n\t\tconst glType = utils.convert( texture.type );\n\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( ! renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\tif ( textureTarget === 32879 || textureTarget === 35866 ) {\n\n\t\t\t\tstate.texImage3D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, renderTarget.depth, 0, glFormat, glType, null );\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( 36160, attachment, textureTarget, properties.get( texture ).__webglTexture, 0, getRenderTargetSamples( renderTarget ) );\n\n\t\t} else {\n\n\t\t\t_gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( texture ).__webglTexture, 0 );\n\n\t\t}\n\n\t\tstate.bindFramebuffer( 36160, null );\n\n\t}\n\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 || useMultisampledRTT( renderTarget ) ) {\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\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t}\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\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, 35056, renderTarget.width, renderTarget.height );\n\n\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( 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\t// Use the first texture for MRT so far\n\t\t\tconst texture = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture[ 0 ] : renderTarget.texture;\n\n\t\t\tconst glFormat = utils.convert( texture.format, texture.encoding );\n\t\t\tconst glType = utils.convert( texture.type );\n\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( 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\tstate.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\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( 36160, 36096, 3553, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( 36160, 33306, 3553, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 );\n\n\t\t\t}\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\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\tif ( renderTarget.depthTexture && ! renderTargetProperties.__autoAllocateDepthBuffer ) {\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\tstate.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\tstate.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\tstate.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// rebind framebuffer with external textures\n\tfunction rebindTextures( renderTarget, colorTexture, depthTexture ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( colorTexture !== undefined ) {\n\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, renderTarget.texture, 36064, 3553 );\n\n\t\t}\n\n\t\tif ( depthTexture !== undefined ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tif ( renderTarget.isWebGLMultipleRenderTargets !== true ) {\n\n\t\t\tif ( textureProperties.__webglTexture === undefined ) {\n\n\t\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultipleRenderTargets = ( renderTarget.isWebGLMultipleRenderTargets === true );\n\t\tconst supportsMips = isPowerOfTwo$1( renderTarget ) || isWebGL2;\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 ( isMultipleRenderTargets ) {\n\n\t\t\t\tif ( capabilities.drawBuffers ) {\n\n\t\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst attachmentProperties = properties.get( textures[ i ] );\n\n\t\t\t\t\t\tif ( attachmentProperties.__webglTexture === undefined ) {\n\n\t\t\t\t\t\t\tattachmentProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t\t\t\t\tinfo.memory.textures ++;\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\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.' );\n\n\t\t\t\t}\n\n\t\t\t} else if ( ( isWebGL2 && renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer();\n\n\t\t\t\t_gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer );\n\n\t\t\t\tconst glFormat = utils.convert( texture.format, texture.encoding );\n\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t_gl.framebufferRenderbuffer( 36160, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer );\n\t\t\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( 36160, null );\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, texture, supportsMips );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, texture, 36064, 34069 + i );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 34067 );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else if ( isMultipleRenderTargets ) {\n\n\t\t\tconst textures = renderTarget.texture;\n\n\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachment = textures[ i ];\n\t\t\t\tconst attachmentProperties = properties.get( attachment );\n\n\t\t\t\tstate.bindTexture( 3553, attachmentProperties.__webglTexture );\n\t\t\t\tsetTextureParameters( 3553, attachment, supportsMips );\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, attachment, 36064 + i, 3553 );\n\n\t\t\t\tif ( textureNeedsGenerateMipmaps( attachment, supportsMips ) ) {\n\n\t\t\t\t\tgenerateMipmap( 3553 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else {\n\n\t\t\tlet glTextureType = 3553;\n\n\t\t\tif ( renderTarget.isWebGL3DRenderTarget || renderTarget.isWebGLArrayRenderTarget ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tglTextureType = renderTarget.isWebGL3DRenderTarget ? 32879 : 35866;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( glTextureType, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( glTextureType, texture, supportsMips );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, texture, 36064, glTextureType );\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( glTextureType );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\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 supportsMips = isPowerOfTwo$1( renderTarget ) || isWebGL2;\n\n\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [ renderTarget.texture ];\n\n\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\tconst texture = textures[ i ];\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? 34067 : 3553;\n\t\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\t\tgenerateMipmap( target );\n\t\t\t\tstate.unbindTexture();\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( ( isWebGL2 && renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\tconst width = renderTarget.width;\n\t\t\tconst height = renderTarget.height;\n\t\t\tlet mask = 16384;\n\t\t\tconst invalidationArray = [ 36064 ];\n\t\t\tconst depthStyle = renderTarget.stencilBuffer ? 33306 : 36096;\n\n\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\tinvalidationArray.push( depthStyle );\n\n\t\t\t}\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\tconst ignoreDepthValues = ( renderTargetProperties.__ignoreDepthValues !== undefined ) ? renderTargetProperties.__ignoreDepthValues : false;\n\n\t\t\tif ( ignoreDepthValues === false ) {\n\n\t\t\t\tif ( renderTarget.depthBuffer ) mask |= 256;\n\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= 1024;\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\tstate.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer );\n\n\t\t\tif ( ignoreDepthValues === true ) {\n\n\t\t\t\t_gl.invalidateFramebuffer( 36008, [ depthStyle ] );\n\t\t\t\t_gl.invalidateFramebuffer( 36009, [ depthStyle ] );\n\n\t\t\t}\n\n\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 );\n\n\t\t\tif ( supportsInvalidateFramebuffer ) {\n\n\t\t\t\t_gl.invalidateFramebuffer( 36008, invalidationArray );\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( 36008, null );\n\t\t\tstate.bindFramebuffer( 36009, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn Math.min( maxSamples, renderTarget.samples );\n\n\t}\n\n\tfunction useMultisampledRTT( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\treturn isWebGL2 && renderTarget.samples > 0 && extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true && renderTargetProperties.__useRenderToTexture !== false;\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\tfunction verifyColorSpace( texture, image ) {\n\n\t\tconst encoding = texture.encoding;\n\t\tconst format = texture.format;\n\t\tconst type = texture.type;\n\n\t\tif ( texture.isCompressedTexture === true || texture.isVideoTexture === true || texture.format === _SRGBAFormat ) return image;\n\n\t\tif ( encoding !== LinearEncoding ) {\n\n\t\t\t// sRGB\n\n\t\t\tif ( encoding === sRGBEncoding ) {\n\n\t\t\t\tif ( isWebGL2 === false ) {\n\n\t\t\t\t\t// in WebGL 1, try to use EXT_sRGB extension and unsized formats\n\n\t\t\t\t\tif ( extensions.has( 'EXT_sRGB' ) === true && format === RGBAFormat ) {\n\n\t\t\t\t\t\ttexture.format = _SRGBAFormat;\n\n\t\t\t\t\t\t// it's not possible to generate mips in WebGL 1 with this extension\n\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\t\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// slow fallback (CPU decode)\n\n\t\t\t\t\t\timage = ImageUtils.sRGBToLinear( image );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// in WebGL 2 uncompressed textures can only be sRGB encoded if they have the RGBA8 format\n\n\t\t\t\t\tif ( format !== RGBAFormat || type !== UnsignedByteType ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.WebGLTextures: Unsupported texture encoding:', encoding );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\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.rebindTextures = rebindTextures;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\tthis.setupDepthRenderbuffer = setupDepthRenderbuffer;\n\tthis.setupFrameBufferTexture = setupFrameBufferTexture;\n\tthis.useMultisampledRTT = useMultisampledRTT;\n\n}\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction convert( p, encoding = null ) {\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\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 === 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\tif ( p === RGBFormat ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: THREE.RGBFormat has been removed. Use THREE.RGBAFormat instead. https://github.com/mrdoob/three.js/pull/23228' );\n\t\t\treturn 6408;\n\n\t\t}\n\n\t\t// WebGL 1 sRGB fallback\n\n\t\tif ( p === _SRGBAFormat ) {\n\n\t\t\textension = extensions.get( 'EXT_sRGB' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.SRGB_ALPHA_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\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 === RGBAIntegerFormat ) return 36249;\n\n\t\t// S3TC\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\tif ( encoding === sRGBEncoding ) {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc_srgb' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// PVRTC\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || p === 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\t// ETC1\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\t// ETC2\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 ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ETC2 : extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : extension.COMPRESSED_RGBA8_ETC2_EAC;\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\t// ASTC\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\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_ASTC_4x4_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : extension.COMPRESSED_RGBA_ASTC_4x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x4_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : extension.COMPRESSED_RGBA_ASTC_5x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x5_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : extension.COMPRESSED_RGBA_ASTC_5x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x5_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : extension.COMPRESSED_RGBA_ASTC_6x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x6_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : extension.COMPRESSED_RGBA_ASTC_6x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x5_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : extension.COMPRESSED_RGBA_ASTC_8x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x6_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : extension.COMPRESSED_RGBA_ASTC_8x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x8_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : extension.COMPRESSED_RGBA_ASTC_8x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x5_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : extension.COMPRESSED_RGBA_ASTC_10x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x6_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : extension.COMPRESSED_RGBA_ASTC_10x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x8_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : extension.COMPRESSED_RGBA_ASTC_10x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x10_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : extension.COMPRESSED_RGBA_ASTC_10x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x10_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : extension.COMPRESSED_RGBA_ASTC_12x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x12_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : extension.COMPRESSED_RGBA_ASTC_12x12_KHR;\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\t// BPTC\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\tif ( p === RGBA_BPTC_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : extension.COMPRESSED_RGBA_BPTC_UNORM_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\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\t// if \"p\" can't be resolved, assume the user defines a WebGL constant as a string (fallback/workaround for packed RGB formats)\n\n\t\treturn ( gl[ p ] !== undefined ) ? gl[ p ] : null;\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\nclass ArrayCamera extends PerspectiveCamera {\n\n\tconstructor( array = [] ) {\n\n\t\tsuper();\n\n\t\tthis.cameras = array;\n\n\t}\n\n}\n\nArrayCamera.prototype.isArrayCamera = true;\n\nclass Group extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'Group';\n\n\t}\n\n}\n\nGroup.prototype.isGroup = true;\n\nconst _moveEvent = { type: 'move' };\n\nclass WebXRController {\n\n\tconstructor() {\n\n\t\tthis._targetRay = null;\n\t\tthis._grip = null;\n\t\tthis._hand = null;\n\n\t}\n\n\tgetHandSpace() {\n\n\t\tif ( this._hand === null ) {\n\n\t\t\tthis._hand = new Group();\n\t\t\tthis._hand.matrixAutoUpdate = false;\n\t\t\tthis._hand.visible = false;\n\n\t\t\tthis._hand.joints = {};\n\t\t\tthis._hand.inputState = { pinching: false };\n\n\t\t}\n\n\t\treturn this._hand;\n\n\t}\n\n\tgetTargetRaySpace() {\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\t\t\tthis._targetRay.hasLinearVelocity = false;\n\t\t\tthis._targetRay.linearVelocity = new Vector3();\n\t\t\tthis._targetRay.hasAngularVelocity = false;\n\t\t\tthis._targetRay.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t}\n\n\tgetGripSpace() {\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\t\t\tthis._grip.hasLinearVelocity = false;\n\t\t\tthis._grip.linearVelocity = new Vector3();\n\t\t\tthis._grip.hasAngularVelocity = false;\n\t\t\tthis._grip.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t}\n\n\tdispatchEvent( 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\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect( 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\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tupdate( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\t\tlet handPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\t\tconst hand = this._hand;\n\n\t\tif ( inputSource && frame.session.visibilityState !== 'visible-blurred' ) {\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\tif ( inputPose.linearVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = true;\n\t\t\t\t\t\ttargetRay.linearVelocity.copy( inputPose.linearVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( inputPose.angularVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = true;\n\t\t\t\t\t\ttargetRay.angularVelocity.copy( inputPose.angularVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dispatchEvent( _moveEvent );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hand && inputSource.hand ) {\n\n\t\t\t\thandPose = true;\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Update the joints groups with the XRJoint poses\n\t\t\t\t\tconst jointPose = frame.getJointPose( inputjoint, referenceSpace );\n\n\t\t\t\t\tif ( hand.joints[ inputjoint.jointName ] === undefined ) {\n\n\t\t\t\t\t\t// The transform of this joint will be updated with the joint pose on each frame\n\t\t\t\t\t\tconst joint = new Group();\n\t\t\t\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\t\t\t\tjoint.visible = false;\n\t\t\t\t\t\thand.joints[ inputjoint.jointName ] = joint;\n\t\t\t\t\t\t// ??\n\t\t\t\t\t\thand.add( joint );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst joint = hand.joints[ inputjoint.jointName ];\n\n\t\t\t\t\tif ( jointPose !== null ) {\n\n\t\t\t\t\t\tjoint.matrix.fromArray( jointPose.transform.matrix );\n\t\t\t\t\t\tjoint.matrix.decompose( joint.position, joint.rotation, joint.scale );\n\t\t\t\t\t\tjoint.jointRadius = jointPose.radius;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tjoint.visible = jointPose !== null;\n\n\t\t\t\t}\n\n\t\t\t\t// Custom events\n\n\t\t\t\t// Check pinchz\n\t\t\t\tconst indexTip = hand.joints[ 'index-finger-tip' ];\n\t\t\t\tconst thumbTip = hand.joints[ 'thumb-tip' ];\n\t\t\t\tconst distance = indexTip.position.distanceTo( thumbTip.position );\n\n\t\t\t\tconst distanceToPinch = 0.02;\n\t\t\t\tconst threshold = 0.005;\n\n\t\t\t\tif ( hand.inputState.pinching && distance > distanceToPinch + threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = false;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchend',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t} else if ( ! hand.inputState.pinching && distance <= distanceToPinch - threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = true;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchstart',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\n\t\t\t\t\t\tif ( gripPose.linearVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = true;\n\t\t\t\t\t\t\tgrip.linearVelocity.copy( gripPose.linearVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( gripPose.angularVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = true;\n\t\t\t\t\t\t\tgrip.angularVelocity.copy( gripPose.angularVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = false;\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\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\tif ( hand !== null ) {\n\n\t\t\thand.visible = ( handPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass DepthTexture extends Texture {\n\n\tconstructor( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\t\tformat = format !== undefined ? format : DepthFormat;\n\n\t\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t\t}\n\n\t\tif ( type === undefined && format === DepthFormat ) type = UnsignedShortType;\n\t\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.image = { width: width, height: height };\n\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\t\tthis.flipY = false;\n\t\tthis.generateMipmaps\t= false;\n\n\t}\n\n\n}\n\nDepthTexture.prototype.isDepthTexture = true;\n\nclass WebXRManager extends EventDispatcher {\n\n\tconstructor( renderer, gl ) {\n\n\t\tsuper();\n\n\t\tconst scope = this;\n\n\t\tlet session = null;\n\t\tlet framebufferScaleFactor = 1.0;\n\n\t\tlet referenceSpace = null;\n\t\tlet referenceSpaceType = 'local-floor';\n\t\tlet customReferenceSpace = null;\n\n\t\tlet pose = null;\n\t\tlet glBinding = null;\n\t\tlet glProjLayer = null;\n\t\tlet glBaseLayer = null;\n\t\tlet xrFrame = null;\n\t\tconst attributes = gl.getContextAttributes();\n\t\tlet initialRenderTarget = null;\n\t\tlet newRenderTarget = null;\n\n\t\tconst controllers = [];\n\t\tconst inputSourcesMap = new Map();\n\n\t\t//\n\n\t\tconst cameraL = new PerspectiveCamera();\n\t\tcameraL.layers.enable( 1 );\n\t\tcameraL.viewport = new Vector4();\n\n\t\tconst cameraR = new PerspectiveCamera();\n\t\tcameraR.layers.enable( 2 );\n\t\tcameraR.viewport = new Vector4();\n\n\t\tconst cameras = [ cameraL, cameraR ];\n\n\t\tconst cameraVR = new ArrayCamera();\n\t\tcameraVR.layers.enable( 1 );\n\t\tcameraVR.layers.enable( 2 );\n\n\t\tlet _currentDepthNear = null;\n\t\tlet _currentDepthFar = null;\n\n\t\t//\n\n\t\tthis.cameraAutoUpdate = true;\n\t\tthis.enabled = false;\n\n\t\tthis.isPresenting = false;\n\n\t\tthis.getController = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getTargetRaySpace();\n\n\t\t};\n\n\t\tthis.getControllerGrip = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getGripSpace();\n\n\t\t};\n\n\t\tthis.getHand = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getHandSpace();\n\n\t\t};\n\n\t\t//\n\n\t\tfunction onSessionEvent( event ) {\n\n\t\t\tconst controller = inputSourcesMap.get( event.inputSource );\n\n\t\t\tif ( controller ) {\n\n\t\t\t\tcontroller.dispatchEvent( { type: event.type, data: event.inputSource } );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onSessionEnd() {\n\n\t\t\tinputSourcesMap.forEach( function ( controller, inputSource ) {\n\n\t\t\t\tcontroller.disconnect( inputSource );\n\n\t\t\t} );\n\n\t\t\tinputSourcesMap.clear();\n\n\t\t\t_currentDepthNear = null;\n\t\t\t_currentDepthFar = null;\n\n\t\t\t// restore framebuffer/rendering state\n\n\t\t\trenderer.setRenderTarget( initialRenderTarget );\n\n\t\t\tglBaseLayer = null;\n\t\t\tglProjLayer = null;\n\t\t\tglBinding = null;\n\t\t\tsession = null;\n\t\t\tnewRenderTarget = null;\n\n\t\t\t//\n\n\t\t\tanimation.stop();\n\n\t\t\tscope.isPresenting = false;\n\n\t\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t\t}\n\n\t\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\t\tframebufferScaleFactor = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\t\treferenceSpaceType = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getReferenceSpace = function () {\n\n\t\t\treturn customReferenceSpace || referenceSpace;\n\n\t\t};\n\n\t\tthis.setReferenceSpace = function ( space ) {\n\n\t\t\tcustomReferenceSpace = space;\n\n\t\t};\n\n\t\tthis.getBaseLayer = function () {\n\n\t\t\treturn glProjLayer !== null ? glProjLayer : glBaseLayer;\n\n\t\t};\n\n\t\tthis.getBinding = function () {\n\n\t\t\treturn glBinding;\n\n\t\t};\n\n\t\tthis.getFrame = function () {\n\n\t\t\treturn xrFrame;\n\n\t\t};\n\n\t\tthis.getSession = function () {\n\n\t\t\treturn session;\n\n\t\t};\n\n\t\tthis.setSession = async function ( value ) {\n\n\t\t\tsession = value;\n\n\t\t\tif ( session !== null ) {\n\n\t\t\t\tinitialRenderTarget = renderer.getRenderTarget();\n\n\t\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\t\t\t\tsession.addEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\t\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\t\tawait gl.makeXRCompatible();\n\n\t\t\t\t}\n\n\t\t\t\tif ( ( session.renderState.layers === undefined ) || ( renderer.capabilities.isWebGL2 === false ) ) {\n\n\t\t\t\t\tconst layerInit = {\n\t\t\t\t\t\tantialias: ( session.renderState.layers === undefined ) ? attributes.antialias : true,\n\t\t\t\t\t\talpha: attributes.alpha,\n\t\t\t\t\t\tdepth: attributes.depth,\n\t\t\t\t\t\tstencil: attributes.stencil,\n\t\t\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBaseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\t\t\tsession.updateRenderState( { baseLayer: glBaseLayer } );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglBaseLayer.framebufferWidth,\n\t\t\t\t\t\tglBaseLayer.framebufferHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tencoding: renderer.outputEncoding\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tlet depthFormat = null;\n\t\t\t\t\tlet depthType = null;\n\t\t\t\t\tlet glDepthFormat = null;\n\n\t\t\t\t\tif ( attributes.depth ) {\n\n\t\t\t\t\t\tglDepthFormat = attributes.stencil ? 35056 : 33190;\n\t\t\t\t\t\tdepthFormat = attributes.stencil ? DepthStencilFormat : DepthFormat;\n\t\t\t\t\t\tdepthType = attributes.stencil ? UnsignedInt248Type : UnsignedShortType;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst projectionlayerInit = {\n\t\t\t\t\t\tcolorFormat: ( renderer.outputEncoding === sRGBEncoding ) ? 35907 : 32856,\n\t\t\t\t\t\tdepthFormat: glDepthFormat,\n\t\t\t\t\t\tscaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBinding = new XRWebGLBinding( session, gl );\n\n\t\t\t\t\tglProjLayer = glBinding.createProjectionLayer( projectionlayerInit );\n\n\t\t\t\t\tsession.updateRenderState( { layers: [ glProjLayer ] } );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglProjLayer.textureWidth,\n\t\t\t\t\t\tglProjLayer.textureHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tdepthTexture: new DepthTexture( glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, undefined, undefined, undefined, undefined, undefined, undefined, depthFormat ),\n\t\t\t\t\t\t\tstencilBuffer: attributes.stencil,\n\t\t\t\t\t\t\tencoding: renderer.outputEncoding,\n\t\t\t\t\t\t\tsamples: attributes.antialias ? 4 : 0\n\t\t\t\t\t\t} );\n\n\t\t\t\t\tconst renderTargetProperties = renderer.properties.get( newRenderTarget );\n\t\t\t\t\trenderTargetProperties.__ignoreDepthValues = glProjLayer.ignoreDepthValues;\n\n\t\t\t\t}\n\n\t\t\t\tnewRenderTarget.isXRRenderTarget = true; // TODO Remove this when possible, see #23278\n\n\t\t\t\t// Set foveation to maximum.\n\t\t\t\tthis.setFoveation( 1.0 );\n\n\t\t\t\treferenceSpace = await session.requestReferenceSpace( referenceSpaceType );\n\n\t\t\t\tanimation.setContext( session );\n\t\t\t\tanimation.start();\n\n\t\t\t\tscope.isPresenting = true;\n\n\t\t\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t\t\t}\n\n\t\t};\n\n\t\tfunction onInputSourcesChange( event ) {\n\n\t\t\tconst inputSources = session.inputSources;\n\n\t\t\t// Assign controllers to available inputSources\n\n\t\t\tfor ( let i = 0; i < inputSources.length; i ++ ) {\n\n\t\t\t\tconst index = inputSources[ i ].handedness === 'right' ? 1 : 0;\n\t\t\t\tinputSourcesMap.set( inputSources[ i ], controllers[ index ] );\n\n\t\t\t}\n\n\t\t\t// Notify disconnected\n\n\t\t\tfor ( let i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.removed[ i ];\n\t\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\t\tif ( controller ) {\n\n\t\t\t\t\tcontroller.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\t\t\t\t\tinputSourcesMap.delete( inputSource );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Notify connected\n\n\t\t\tfor ( let i = 0; i < event.added.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.added[ i ];\n\t\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\t\tif ( controller ) {\n\n\t\t\t\t\tcontroller.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst cameraLPos = new Vector3();\n\t\tconst cameraRPos = new Vector3();\n\n\t\t/**\n\t\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t\t * the cameras' projection and world matrices have already been set.\n\t\t * And that near and far planes are identical for both cameras.\n\t\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t\t */\n\t\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\t\tconst ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\t\tconst projL = cameraL.projectionMatrix.elements;\n\t\t\tconst projR = cameraR.projectionMatrix.elements;\n\n\t\t\t// VR systems will have identical far and near planes, and\n\t\t\t// most likely identical top and bottom frustum extents.\n\t\t\t// Use the left camera for these values.\n\t\t\tconst near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\t\tconst far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\t\tconst topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\t\tconst bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\t\tconst leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\t\tconst rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\t\tconst left = near * leftFov;\n\t\t\tconst right = near * rightFov;\n\n\t\t\t// Calculate the new camera's position offset from the\n\t\t\t// left camera. xOffset should be roughly half `ipd`.\n\t\t\tconst zOffset = ipd / ( - leftFov + rightFov );\n\t\t\tconst xOffset = zOffset * - leftFov;\n\n\t\t\t// TODO: Better way to apply this offset?\n\t\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.translateX( xOffset );\n\t\t\tcamera.translateZ( zOffset );\n\t\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t\t// Find the union of the frustum values of the cameras and scale\n\t\t\t// the values so that the near plane's position does not change in world space,\n\t\t\t// although must now be relative to the new union camera.\n\t\t\tconst near2 = near + zOffset;\n\t\t\tconst far2 = far + zOffset;\n\t\t\tconst left2 = left - xOffset;\n\t\t\tconst right2 = right + ( ipd - xOffset );\n\t\t\tconst top2 = topFov * far / far2 * near2;\n\t\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\n\t\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\n\t\t}\n\n\t\tfunction updateCamera( camera, parent ) {\n\n\t\t\tif ( parent === null ) {\n\n\t\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t\t}\n\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t}\n\n\t\tthis.updateCamera = function ( camera ) {\n\n\t\t\tif ( session === null ) return;\n\n\t\t\tcameraVR.near = cameraR.near = cameraL.near = camera.near;\n\t\t\tcameraVR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\t\tif ( _currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.far ) {\n\n\t\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\t\tsession.updateRenderState( {\n\t\t\t\t\tdepthNear: cameraVR.near,\n\t\t\t\t\tdepthFar: cameraVR.far\n\t\t\t\t} );\n\n\t\t\t\t_currentDepthNear = cameraVR.near;\n\t\t\t\t_currentDepthFar = cameraVR.far;\n\n\t\t\t}\n\n\t\t\tconst parent = camera.parent;\n\t\t\tconst cameras = cameraVR.cameras;\n\n\t\t\tupdateCamera( cameraVR, parent );\n\n\t\t\tfor ( let i = 0; i < cameras.length; i ++ ) {\n\n\t\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t\t}\n\n\t\t\tcameraVR.matrixWorld.decompose( cameraVR.position, cameraVR.quaternion, cameraVR.scale );\n\n\t\t\t// update user camera and its children\n\n\t\t\tcamera.position.copy( cameraVR.position );\n\t\t\tcamera.quaternion.copy( cameraVR.quaternion );\n\t\t\tcamera.scale.copy( cameraVR.scale );\n\t\t\tcamera.matrix.copy( cameraVR.matrix );\n\t\t\tcamera.matrixWorld.copy( cameraVR.matrixWorld );\n\n\t\t\tconst children = camera.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateMatrixWorld( true );\n\n\t\t\t}\n\n\t\t\t// update projection matrix for proper view frustum culling\n\n\t\t\tif ( cameras.length === 2 ) {\n\n\t\t\t\tsetProjectionFromUnion( cameraVR, cameraL, cameraR );\n\n\t\t\t} else {\n\n\t\t\t\t// assume single camera setup (AR)\n\n\t\t\t\tcameraVR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getCamera = function () {\n\n\t\t\treturn cameraVR;\n\n\t\t};\n\n\t\tthis.getFoveation = function () {\n\n\t\t\tif ( glProjLayer !== null ) {\n\n\t\t\t\treturn glProjLayer.fixedFoveation;\n\n\t\t\t}\n\n\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\treturn glBaseLayer.fixedFoveation;\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\n\t\t};\n\n\t\tthis.setFoveation = function ( foveation ) {\n\n\t\t\t// 0 = no foveation = full resolution\n\t\t\t// 1 = maximum foveation = the edges render at lower resolution\n\n\t\t\tif ( glProjLayer !== null ) {\n\n\t\t\t\tglProjLayer.fixedFoveation = foveation;\n\n\t\t\t}\n\n\t\t\tif ( glBaseLayer !== null && glBaseLayer.fixedFoveation !== undefined ) {\n\n\t\t\t\tglBaseLayer.fixedFoveation = foveation;\n\n\t\t\t}\n\n\t\t};\n\n\t\t// Animation Loop\n\n\t\tlet onAnimationFrameCallback = null;\n\n\t\tfunction onAnimationFrame( time, frame ) {\n\n\t\t\tpose = frame.getViewerPose( customReferenceSpace || referenceSpace );\n\t\t\txrFrame = frame;\n\n\t\t\tif ( pose !== null ) {\n\n\t\t\t\tconst views = pose.views;\n\n\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\trenderer.setRenderTargetFramebuffer( newRenderTarget, glBaseLayer.framebuffer );\n\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t}\n\n\t\t\t\tlet cameraVRNeedsUpdate = false;\n\n\t\t\t\t// check if it's necessary to rebuild cameraVR's camera list\n\n\t\t\t\tif ( views.length !== cameraVR.cameras.length ) {\n\n\t\t\t\t\tcameraVR.cameras.length = 0;\n\t\t\t\t\tcameraVRNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < views.length; i ++ ) {\n\n\t\t\t\t\tconst view = views[ i ];\n\n\t\t\t\t\tlet viewport = null;\n\n\t\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\t\tviewport = glBaseLayer.getViewport( view );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst glSubImage = glBinding.getViewSubImage( glProjLayer, view );\n\t\t\t\t\t\tviewport = glSubImage.viewport;\n\n\t\t\t\t\t\t// For side-by-side projection, we only produce a single texture for both eyes.\n\t\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\t\trenderer.setRenderTargetTextures(\n\t\t\t\t\t\t\t\tnewRenderTarget,\n\t\t\t\t\t\t\t\tglSubImage.colorTexture,\n\t\t\t\t\t\t\t\tglProjLayer.ignoreDepthValues ? undefined : glSubImage.depthStencilTexture );\n\n\t\t\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst camera = cameras[ i ];\n\n\t\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\tcameraVR.matrix.copy( camera.matrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( cameraVRNeedsUpdate === true ) {\n\n\t\t\t\t\t\tcameraVR.cameras.push( camera );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tconst inputSources = session.inputSources;\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst inputSource = inputSources[ i ];\n\t\t\t\tconst controller = inputSourcesMap.get( inputSource );\n\n\t\t\t\tif ( controller !== undefined ) {\n\n\t\t\t\t\tcontroller.update( inputSource, frame, customReferenceSpace || referenceSpace );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t\t\txrFrame = null;\n\n\t\t}\n\n\t\tconst animation = new WebGLAnimation();\n\n\t\tanimation.setAnimationLoop( onAnimationFrame );\n\n\t\tthis.setAnimationLoop = function ( callback ) {\n\n\t\t\tonAnimationFrameCallback = callback;\n\n\t\t};\n\n\t\tthis.dispose = function () {};\n\n\t}\n\n}\n\nfunction WebGLMaterials( renderer, 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, pixelRatio, height, transmissionRenderTarget ) {\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\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 );\n\t\t\trefreshUniformsStandard( uniforms, material );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material, transmissionRenderTarget );\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\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\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 ) {\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.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.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.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\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.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\tuniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.ior.value = material.ior;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\n\t\t\t// artist-friendly light intensity scaling factor\n\t\t\tconst scaleFactor = ( renderer.physicallyCorrectLights !== true ) ? Math.PI : 1;\n\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity * scaleFactor;\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. displacementMap map\n\t\t// 4. normal map\n\t\t// 5. bump map\n\t\t// 6. roughnessMap map\n\t\t// 7. metalnessMap map\n\t\t// 8. alphaMap map\n\t\t// 9. emissiveMap map\n\t\t// 10. clearcoat map\n\t\t// 11. clearcoat normal map\n\t\t// 12. clearcoat roughnessMap map\n\t\t// 13. specular intensity map\n\t\t// 14. specular tint map\n\t\t// 15. transmission map\n\t\t// 16. thickness 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} else if ( material.clearcoatMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatMap;\n\n\t\t} else if ( material.clearcoatNormalMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatNormalMap;\n\n\t\t} else if ( material.clearcoatRoughnessMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatRoughnessMap;\n\n\t\t} else if ( material.specularIntensityMap ) {\n\n\t\t\tuvScaleMap = material.specularIntensityMap;\n\n\t\t} else if ( material.specularColorMap ) {\n\n\t\t\tuvScaleMap = material.specularColorMap;\n\n\t\t} else if ( material.transmissionMap ) {\n\n\t\t\tuvScaleMap = material.transmissionMap;\n\n\t\t} else if ( material.thicknessMap ) {\n\n\t\t\tuvScaleMap = material.thicknessMap;\n\n\t\t} else if ( material.sheenColorMap ) {\n\n\t\t\tuvScaleMap = material.sheenColorMap;\n\n\t\t} else if ( material.sheenRoughnessMap ) {\n\n\t\t\tuvScaleMap = material.sheenRoughnessMap;\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\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\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\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\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 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}\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}\n\n\tfunction refreshUniformsStandard( uniforms, material ) {\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\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\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, transmissionRenderTarget ) {\n\n\t\tuniforms.ior.value = material.ior; // also part of uniforms common\n\n\t\tif ( material.sheen > 0 ) {\n\n\t\t\tuniforms.sheenColor.value.copy( material.sheenColor ).multiplyScalar( material.sheen );\n\n\t\t\tuniforms.sheenRoughness.value = material.sheenRoughness;\n\n\t\t\tif ( material.sheenColorMap ) {\n\n\t\t\t\tuniforms.sheenColorMap.value = material.sheenColorMap;\n\n\t\t\t}\n\n\t\t\tif ( material.sheenRoughnessMap ) {\n\n\t\t\t\tuniforms.sheenRoughnessMap.value = material.sheenRoughnessMap;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.clearcoat > 0 ) {\n\n\t\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\n\t\t\tif ( material.clearcoatMap ) {\n\n\t\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\t\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.transmission > 0 ) {\n\n\t\t\tuniforms.transmission.value = material.transmission;\n\t\t\tuniforms.transmissionSamplerMap.value = transmissionRenderTarget.texture;\n\t\t\tuniforms.transmissionSamplerSize.value.set( transmissionRenderTarget.width, transmissionRenderTarget.height );\n\n\t\t\tif ( material.transmissionMap ) {\n\n\t\t\t\tuniforms.transmissionMap.value = material.transmissionMap;\n\n\t\t\t}\n\n\t\t\tuniforms.thickness.value = material.thickness;\n\n\t\t\tif ( material.thicknessMap ) {\n\n\t\t\t\tuniforms.thicknessMap.value = material.thicknessMap;\n\n\t\t\t}\n\n\t\t\tuniforms.attenuationDistance.value = material.attenuationDistance;\n\t\t\tuniforms.attenuationColor.value.copy( material.attenuationColor );\n\n\t\t}\n\n\t\tuniforms.specularIntensity.value = material.specularIntensity;\n\t\tuniforms.specularColor.value.copy( material.specularColor );\n\n\t\tif ( material.specularIntensityMap ) {\n\n\t\t\tuniforms.specularIntensityMap.value = material.specularIntensityMap;\n\n\t\t}\n\n\t\tif ( material.specularColorMap ) {\n\n\t\t\tuniforms.specularColorMap.value = material.specularColorMap;\n\n\t\t}\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}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\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\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\nfunction createCanvasElement() {\n\n\tconst canvas = createElementNS( 'canvas' );\n\tcanvas.style.display = 'block';\n\treturn canvas;\n\n}\n\nfunction WebGLRenderer( parameters = {} ) {\n\n\tconst _canvas = parameters.canvas !== undefined ? parameters.canvas : createCanvasElement(),\n\t\t_context = parameters.context !== undefined ? parameters.context : null,\n\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 _alpha;\n\n\tif ( _context !== null ) {\n\n\t\t_alpha = _context.getContextAttributes().alpha;\n\n\t} else {\n\n\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false;\n\n\t}\n\n\tlet currentRenderList = null;\n\tlet currentRenderState = null;\n\n\t// render() can be called from within a callback triggered by another render.\n\t// We track this so that the nested render call gets its list and state isolated from the parent render call.\n\n\tconst renderListStack = [];\n\tconst renderStateStack = [];\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.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// internal properties\n\n\tconst _this = this;\n\n\tlet _isContextLost = false;\n\n\t// internal state cache\n\n\tlet _currentActiveCubeFace = 0;\n\tlet _currentActiveMipmapLevel = 0;\n\tlet _currentRenderTarget = null;\n\tlet _currentMaterialId = - 1;\n\n\tlet _currentCamera = 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\tlet _clippingEnabled = false;\n\tlet _localClippingEnabled = false;\n\n\t// transmission\n\n\tlet _transmissionRenderTarget = null;\n\n\t// camera matrices cache\n\n\tconst _projScreenMatrix = new Matrix4();\n\n\tconst _vector2 = new Vector2();\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: true,\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// OffscreenCanvas does not have setAttribute, see #22811\n\t\tif ( 'setAttribute' in _canvas ) _canvas.setAttribute( 'data-engine', `three.js r${REVISION}` );\n\n\t\t// event listeners must be registered before WebGL context is created, see #12753\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, cubemaps, cubeuvmaps, attributes, geometries, objects;\n\tlet programCache, materials, renderLists, renderStates, clipping, shadowMap;\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\textensions.init( capabilities );\n\n\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\tstate = new WebGLState( _gl, extensions, capabilities );\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\tcubemaps = new WebGLCubeMaps( _this );\n\t\tcubeuvmaps = new WebGLCubeUVMaps( _this );\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, capabilities, textures );\n\t\tclipping = new WebGLClipping( properties );\n\t\tprogramCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping );\n\t\tmaterials = new WebGLMaterials( _this, properties );\n\t\trenderLists = new WebGLRenderLists();\n\t\trenderStates = new WebGLRenderStates( extensions, capabilities );\n\t\tbackground = new WebGLBackground( _this, cubemaps, state, objects, _alpha, _premultipliedAlpha );\n\t\tshadowMap = new WebGLShadowMap( _this, objects, capabilities );\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.shadowMap = shadowMap;\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// 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\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\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\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 ( target ) {\n\n\t\treturn target.copy( 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 = true, depth = true, stencil = true ) {\n\n\t\tlet bits = 0;\n\n\t\tif ( color ) bits |= 16384;\n\t\tif ( depth ) bits |= 256;\n\t\tif ( 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\tcubemaps.dispose();\n\t\tcubeuvmaps.dispose();\n\t\tobjects.dispose();\n\t\tbindingStates.dispose();\n\t\tprogramCache.dispose();\n\n\t\txr.dispose();\n\n\t\txr.removeEventListener( 'sessionstart', onXRSessionStart );\n\t\txr.removeEventListener( 'sessionend', onXRSessionEnd );\n\n\t\tif ( _transmissionRenderTarget ) {\n\n\t\t\t_transmissionRenderTarget.dispose();\n\t\t\t_transmissionRenderTarget = null;\n\n\t\t}\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\tconst infoAutoReset = info.autoReset;\n\t\tconst shadowMapEnabled = shadowMap.enabled;\n\t\tconst shadowMapAutoUpdate = shadowMap.autoUpdate;\n\t\tconst shadowMapNeedsUpdate = shadowMap.needsUpdate;\n\t\tconst shadowMapType = shadowMap.type;\n\n\t\tinitGLContext();\n\n\t\tinfo.autoReset = infoAutoReset;\n\t\tshadowMap.enabled = shadowMapEnabled;\n\t\tshadowMap.autoUpdate = shadowMapAutoUpdate;\n\t\tshadowMap.needsUpdate = shadowMapNeedsUpdate;\n\t\tshadowMap.type = shadowMapType;\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\treleaseMaterialProgramReferences( material );\n\n\t\tproperties.remove( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReferences( material ) {\n\n\t\tconst programs = properties.get( material ).programs;\n\n\t\tif ( programs !== undefined ) {\n\n\t\t\tprograms.forEach( function ( program ) {\n\n\t\t\t\tprogramCache.releaseProgram( program );\n\n\t\t\t} );\n\n\t\t\tif ( material.isShaderMaterial ) {\n\n\t\t\t\tprogramCache.releaseShaderCache( material );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\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, geometry, 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\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( 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( 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 );\n\t\tcurrentRenderState.init();\n\n\t\trenderStateStack.push( currentRenderState );\n\n\t\tscene.traverseVisible( function ( object ) {\n\n\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\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( _this.physicallyCorrectLights );\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tconst 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\tconst material2 = material[ i ];\n\n\t\t\t\t\t\tgetProgram( material2, scene, object );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\trenderStateStack.pop();\n\t\tcurrentRenderState = null;\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time ) {\n\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tfunction onXRSessionStart() {\n\n\t\tanimation.stop();\n\n\t}\n\n\tfunction onXRSessionEnd() {\n\n\t\tanimation.start();\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tif ( typeof self !== 'undefined' ) animation.setContext( self );\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\txr.addEventListener( 'sessionstart', onXRSessionStart );\n\txr.addEventListener( 'sessionend', onXRSessionEnd );\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera ) {\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// 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\tif ( xr.cameraAutoUpdate === true ) xr.updateCamera( camera );\n\n\t\t\tcamera = xr.getCamera(); // use XR camera for rendering\n\n\t\t}\n\n\t\t//\n\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, _currentRenderTarget );\n\n\t\tcurrentRenderState = renderStates.get( scene, renderStateStack.length );\n\t\tcurrentRenderState.init();\n\n\t\trenderStateStack.push( currentRenderState );\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, renderListStack.length );\n\t\tcurrentRenderList.init();\n\n\t\trenderListStack.push( currentRenderList );\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\tif ( _clippingEnabled === true ) clipping.endShadows();\n\n\t\t//\n\n\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\t\t//\n\n\t\tbackground.render( currentRenderList, scene );\n\n\t\t// render scene\n\n\t\tcurrentRenderState.setupLights( _this.physicallyCorrectLights );\n\n\t\tif ( camera.isArrayCamera ) {\n\n\t\t\tconst cameras = camera.cameras;\n\n\t\t\tfor ( let i = 0, l = cameras.length; i < l; i ++ ) {\n\n\t\t\t\tconst camera2 = cameras[ i ];\n\n\t\t\t\trenderScene( currentRenderList, scene, camera2, camera2.viewport );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderScene( currentRenderList, scene, camera );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _currentRenderTarget !== null ) {\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\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\n\n\t\t// _gl.finish();\n\n\t\tbindingStates.resetDefaultState();\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\trenderStateStack.pop();\n\n\t\tif ( renderStateStack.length > 0 ) {\n\n\t\t\tcurrentRenderState = renderStateStack[ renderStateStack.length - 1 ];\n\n\t\t} else {\n\n\t\t\tcurrentRenderState = null;\n\n\t\t}\n\n\t\trenderListStack.pop();\n\n\t\tif ( renderListStack.length > 0 ) {\n\n\t\t\tcurrentRenderList = renderListStack[ renderListStack.length - 1 ];\n\n\t\t} else {\n\n\t\t\tcurrentRenderList = null;\n\n\t\t}\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.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 renderScene( currentRenderList, scene, camera, viewport ) {\n\n\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\tconst transmissiveObjects = currentRenderList.transmissive;\n\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\tcurrentRenderState.setupLightsView( camera );\n\n\t\tif ( transmissiveObjects.length > 0 ) renderTransmissionPass( opaqueObjects, scene, camera );\n\n\t\tif ( viewport ) state.viewport( _currentViewport.copy( viewport ) );\n\n\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\tif ( transmissiveObjects.length > 0 ) renderObjects( transmissiveObjects, scene, camera );\n\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\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}\n\n\tfunction renderTransmissionPass( opaqueObjects, scene, camera ) {\n\n\t\tconst isWebGL2 = capabilities.isWebGL2;\n\n\t\tif ( _transmissionRenderTarget === null ) {\n\n\t\t\t_transmissionRenderTarget = new WebGLRenderTarget( 1, 1, {\n\t\t\t\tgenerateMipmaps: true,\n\t\t\t\ttype: extensions.has( 'EXT_color_buffer_half_float' ) ? HalfFloatType : UnsignedByteType,\n\t\t\t\tminFilter: LinearMipmapLinearFilter,\n\t\t\t\tsamples: ( isWebGL2 && _antialias === true ) ? 4 : 0\n\t\t\t} );\n\n\t\t}\n\n\t\t_this.getDrawingBufferSize( _vector2 );\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\t_transmissionRenderTarget.setSize( _vector2.x, _vector2.y );\n\n\t\t} else {\n\n\t\t\t_transmissionRenderTarget.setSize( floorPowerOfTwo( _vector2.x ), floorPowerOfTwo( _vector2.y ) );\n\n\t\t}\n\n\t\t//\n\n\t\tconst currentRenderTarget = _this.getRenderTarget();\n\t\t_this.setRenderTarget( _transmissionRenderTarget );\n\t\t_this.clear();\n\n\t\t// Turn off the features which can affect the frag color for opaque objects pass.\n\t\t// Otherwise they are applied twice in opaque objects pass and transmission objects pass.\n\t\tconst currentToneMapping = _this.toneMapping;\n\t\t_this.toneMapping = NoToneMapping;\n\n\t\trenderObjects( opaqueObjects, scene, camera );\n\n\t\t_this.toneMapping = currentToneMapping;\n\n\t\ttextures.updateMultisampleRenderTarget( _transmissionRenderTarget );\n\t\ttextures.updateRenderTargetMipmap( _transmissionRenderTarget );\n\n\t\t_this.setRenderTarget( currentRenderTarget );\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 ( object.layers.test( camera.layers ) ) {\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\n\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\tmaterial.onBeforeRender( _this, scene, camera, geometry, object, group );\n\n\t\tif ( material.transparent === true && material.side === DoubleSide ) {\n\n\t\t\tmaterial.side = BackSide;\n\t\t\tmaterial.needsUpdate = true;\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\tmaterial.side = FrontSide;\n\t\t\tmaterial.needsUpdate = true;\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\tmaterial.side = DoubleSide;\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\n\t}\n\n\tfunction getProgram( 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, object );\n\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\tlet programs = materialProperties.programs;\n\n\t\t// always update environment and fog - changing these trigger an getProgram call, but it's possible that the program doesn't change\n\n\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tmaterialProperties.fog = scene.fog;\n\t\tmaterialProperties.envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || materialProperties.environment );\n\n\t\tif ( programs === undefined ) {\n\n\t\t\t// new material\n\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\tprograms = new Map();\n\t\t\tmaterialProperties.programs = programs;\n\n\t\t}\n\n\t\tlet program = programs.get( programCacheKey );\n\n\t\tif ( program !== undefined ) {\n\n\t\t\t// early out if program and light state is identical\n\n\t\t\tif ( materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion ) {\n\n\t\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t\treturn program;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tparameters.uniforms = programCache.getUniforms( material );\n\n\t\t\tmaterial.onBuild( object, parameters, _this );\n\n\t\t\tmaterial.onBeforeCompile( parameters, _this );\n\n\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\t\t\tprograms.set( programCacheKey, program );\n\n\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\n\t\t}\n\n\t\tconst uniforms = materialProperties.uniforms;\n\n\t\tif ( ( ! material.isShaderMaterial && ! material.isRawShaderMaterial ) || material.clipping === true ) {\n\n\t\t\tuniforms.clippingPlanes = clipping.uniform;\n\n\t\t}\n\n\t\tupdateCommonMaterialProperties( material, parameters );\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.ltc_1.value = lights.state.rectAreaLTC1;\n\t\t\tuniforms.ltc_2.value = lights.state.rectAreaLTC2;\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 = program.getUniforms();\n\t\tconst uniformsList = WebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.currentProgram = program;\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t\treturn program;\n\n\t}\n\n\tfunction updateCommonMaterialProperties( material, parameters ) {\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tmaterialProperties.outputEncoding = parameters.outputEncoding;\n\t\tmaterialProperties.instancing = parameters.instancing;\n\t\tmaterialProperties.skinning = parameters.skinning;\n\t\tmaterialProperties.morphTargets = parameters.morphTargets;\n\t\tmaterialProperties.morphNormals = parameters.morphNormals;\n\t\tmaterialProperties.morphColors = parameters.morphColors;\n\t\tmaterialProperties.morphTargetsCount = parameters.morphTargetsCount;\n\t\tmaterialProperties.numClippingPlanes = parameters.numClippingPlanes;\n\t\tmaterialProperties.numIntersection = parameters.numClipIntersection;\n\t\tmaterialProperties.vertexAlphas = parameters.vertexAlphas;\n\t\tmaterialProperties.vertexTangents = parameters.vertexTangents;\n\t\tmaterialProperties.toneMapping = parameters.toneMapping;\n\n\t}\n\n\tfunction setProgram( camera, scene, geometry, 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.isXRRenderTarget === true ? _currentRenderTarget.texture.encoding : LinearEncoding );\n\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\tconst vertexAlphas = material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;\n\t\tconst vertexTangents = !! material.normalMap && !! geometry.attributes.tangent;\n\t\tconst morphTargets = !! geometry.morphAttributes.position;\n\t\tconst morphNormals = !! geometry.morphAttributes.normal;\n\t\tconst morphColors = !! geometry.morphAttributes.color;\n\t\tconst toneMapping = material.toneMapped ? _this.toneMapping : NoToneMapping;\n\n\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\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\tclipping.setState( material, camera, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tlet needsProgramChange = false;\n\n\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\tif ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.outputEncoding !== encoding ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancing === false ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( ! object.isInstancedMesh && materialProperties.instancing === true ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( object.isSkinnedMesh && materialProperties.skinning === false ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( ! object.isSkinnedMesh && materialProperties.skinning === true ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.envMap !== envMap ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( material.fog === true && materialProperties.fog !== fog ) {\n\n\t\t\t\tneedsProgramChange = true;\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\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.vertexAlphas !== vertexAlphas ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.vertexTangents !== vertexTangents ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.morphTargets !== morphTargets ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.morphNormals !== morphNormals ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.morphColors !== morphColors ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.toneMapping !== toneMapping ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( capabilities.isWebGL2 === true && materialProperties.morphTargetsCount !== morphTargetsCount ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tneedsProgramChange = true;\n\t\t\tmaterialProperties.__version = material.version;\n\n\t\t}\n\n\t\t//\n\n\t\tlet program = materialProperties.currentProgram;\n\n\t\tif ( needsProgramChange === true ) {\n\n\t\t\tprogram = getProgram( material, scene, object );\n\n\t\t}\n\n\t\tlet refreshProgram = false;\n\t\tlet refreshMaterial = false;\n\t\tlet refreshLights = false;\n\n\t\tconst p_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\tobject.isSkinnedMesh ) {\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 and morph target uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone and morph texture must go before other textures\n\t\t// otherwise textures used for skinning and morphing can take over texture units reserved for other material textures\n\n\t\tif ( object.isSkinnedMesh ) {\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\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === null ) skeleton.computeBoneTexture();\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\tconsole.warn( 'THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tif ( morphAttributes.position !== undefined || morphAttributes.normal !== undefined || ( morphAttributes.color !== undefined && capabilities.isWebGL2 === true ) ) {\n\n\t\t\tmorphtargets.update( object, geometry, material, program );\n\n\t\t}\n\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 === true ) {\n\n\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height, _transmissionRenderTarget );\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\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.setRenderTargetTextures = function ( renderTarget, colorTexture, depthTexture ) {\n\n\t\tproperties.get( renderTarget.texture ).__webglTexture = colorTexture;\n\t\tproperties.get( renderTarget.depthTexture ).__webglTexture = depthTexture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\trenderTargetProperties.__hasExternalTextures = true;\n\n\t\tif ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\trenderTargetProperties.__autoAllocateDepthBuffer = depthTexture === undefined;\n\n\t\t\tif ( ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\t\t// The multisample_render_to_texture extension doesn't work properly if there\n\t\t\t\t// are midframe flushes and an external depth buffer. Disable use of the extension.\n\t\t\t\tif ( extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided' );\n\t\t\t\t\trenderTargetProperties.__useRenderToTexture = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.setRenderTargetFramebuffer = function ( renderTarget, defaultFramebuffer ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\trenderTargetProperties.__webglFramebuffer = defaultFramebuffer;\n\t\trenderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === undefined;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\tlet useDefaultFramebuffer = true;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\tif ( renderTargetProperties.__useDefaultFramebuffer !== undefined ) {\n\n\t\t\t\t// We need to make sure to rebind the framebuffer.\n\t\t\t\tstate.bindFramebuffer( 36160, null );\n\t\t\t\tuseDefaultFramebuffer = false;\n\n\t\t\t} else if ( renderTargetProperties.__webglFramebuffer === undefined ) {\n\n\t\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t\t} else if ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\t\t// Color and depth texture must be rebound in order for the swapchain to update.\n\t\t\t\ttextures.rebindTextures( renderTarget, properties.get( renderTarget.texture ).__webglTexture, properties.get( renderTarget.depthTexture ).__webglTexture );\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet framebuffer = null;\n\t\tlet isCube = false;\n\t\tlet isRenderTarget3D = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tconst texture = renderTarget.texture;\n\n\t\t\tif ( texture.isData3DTexture || texture.isDataArrayTexture ) {\n\n\t\t\t\tisRenderTarget3D = true;\n\n\t\t\t}\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 ];\n\t\t\t\tisCube = true;\n\n\t\t\t} else if ( ( capabilities.isWebGL2 && renderTarget.samples > 0 ) && textures.useMultisampledRTT( renderTarget ) === false ) {\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\tconst framebufferBound = state.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( framebufferBound && capabilities.drawBuffers && useDefaultFramebuffer ) {\n\n\t\t\tstate.drawBuffers( renderTarget, 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, textureProperties.__webglTexture, activeMipmapLevel );\n\n\t\t} else if ( isRenderTarget3D ) {\n\n\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\tconst layer = activeCubeFace || 0;\n\t\t\t_gl.framebufferTextureLayer( 36160, 36064, textureProperties.__webglTexture, activeMipmapLevel || 0, layer );\n\n\t\t}\n\n\t\t_currentMaterialId = - 1; // reset current material to ensure correct uniform bindings\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\tstate.bindFramebuffer( 36160, framebuffer );\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\tconst halfFloatSupportedByExt = ( textureType === HalfFloatType ) && ( extensions.has( 'EXT_color_buffer_half_float' ) || ( capabilities.isWebGL2 && extensions.has( 'EXT_color_buffer_float' ) ) );\n\n\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.has( 'OES_texture_float' ) || extensions.has( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t! halfFloatSupportedByExt ) {\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\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\t// restore framebuffer of current render target if necessary\n\n\t\t\t\tconst framebuffer = ( _currentRenderTarget !== null ) ? properties.get( _currentRenderTarget ).__webglFramebuffer : null;\n\t\t\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.copyFramebufferToTexture = function ( position, texture, level = 0 ) {\n\n\t\tif ( texture.isFramebufferTexture !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer: copyFramebufferToTexture() can only be used with FramebufferTexture.' );\n\t\t\treturn;\n\n\t\t}\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\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t_gl.copyTexSubImage2D( 3553, level, 0, 0, position.x, position.y, width, height );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, 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.copyTextureToTexture3D = function ( sourceBox, position, srcTexture, dstTexture, level = 0 ) {\n\n\t\tif ( _this.isWebGL1Renderer ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst width = sourceBox.max.x - sourceBox.min.x + 1;\n\t\tconst height = sourceBox.max.y - sourceBox.min.y + 1;\n\t\tconst depth = sourceBox.max.z - sourceBox.min.z + 1;\n\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\tconst glType = utils.convert( dstTexture.type );\n\t\tlet glTarget;\n\n\t\tif ( dstTexture.isData3DTexture ) {\n\n\t\t\ttextures.setTexture3D( dstTexture, 0 );\n\t\t\tglTarget = 32879;\n\n\t\t} else if ( dstTexture.isDataArrayTexture ) {\n\n\t\t\ttextures.setTexture2DArray( dstTexture, 0 );\n\t\t\tglTarget = 35866;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.' );\n\t\t\treturn;\n\n\t\t}\n\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\tconst unpackRowLen = _gl.getParameter( 3314 );\n\t\tconst unpackImageHeight = _gl.getParameter( 32878 );\n\t\tconst unpackSkipPixels = _gl.getParameter( 3316 );\n\t\tconst unpackSkipRows = _gl.getParameter( 3315 );\n\t\tconst unpackSkipImages = _gl.getParameter( 32877 );\n\n\t\tconst image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[ 0 ] : srcTexture.image;\n\n\t\t_gl.pixelStorei( 3314, image.width );\n\t\t_gl.pixelStorei( 32878, image.height );\n\t\t_gl.pixelStorei( 3316, sourceBox.min.x );\n\t\t_gl.pixelStorei( 3315, sourceBox.min.y );\n\t\t_gl.pixelStorei( 32877, sourceBox.min.z );\n\n\t\tif ( srcTexture.isDataTexture || srcTexture.isData3DTexture ) {\n\n\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image.data );\n\n\t\t} else {\n\n\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture.' );\n\t\t\t\t_gl.compressedTexSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, image.data );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.pixelStorei( 3314, unpackRowLen );\n\t\t_gl.pixelStorei( 32878, unpackImageHeight );\n\t\t_gl.pixelStorei( 3316, unpackSkipPixels );\n\t\t_gl.pixelStorei( 3315, unpackSkipRows );\n\t\t_gl.pixelStorei( 32877, unpackSkipImages );\n\n\t\t// Generate mipmaps only when copying level 0\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( glTarget );\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\tthis.resetState = function () {\n\n\t\t_currentActiveCubeFace = 0;\n\t\t_currentActiveMipmapLevel = 0;\n\t\t_currentRenderTarget = null;\n\n\t\tstate.reset();\n\t\tbindingStates.reset();\n\n\t};\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t}\n\n}\n\nWebGLRenderer.prototype.isWebGLRenderer = true;\n\nclass WebGL1Renderer extends WebGLRenderer {}\n\nWebGL1Renderer.prototype.isWebGL1Renderer = true;\n\nclass FogExp2 {\n\n\tconstructor( color, density = 0.00025 ) {\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\t\tthis.density = density;\n\n\t}\n\n\tclone() {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t}\n\n\ttoJSON( /* 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\nFogExp2.prototype.isFogExp2 = true;\n\nclass Fog {\n\n\tconstructor( color, near = 1, far = 1000 ) {\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t}\n\n\ttoJSON( /* 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\nFog.prototype.isFog = true;\n\nclass Scene extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'Scene';\n\n\t\tthis.background = null;\n\t\tthis.environment = null;\n\t\tthis.fog = null;\n\n\t\tthis.overrideMaterial = null;\n\n\t\tthis.autoUpdate = true; // checked by the renderer\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( 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( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\treturn data;\n\n\t}\n\n}\n\nScene.prototype.isScene = true;\n\nclass InterleavedBuffer {\n\n\tconstructor( array, stride ) {\n\n\t\tthis.array = array;\n\t\tthis.stride = stride;\n\t\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.updateRange = { offset: 0, count: - 1 };\n\n\t\tthis.version = 0;\n\n\t\tthis.uuid = generateUUID();\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( 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( 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( value, offset = 0 ) {\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tclone( 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 = 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 this.constructor( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( 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 = 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\nInterleavedBuffer.prototype.isInterleavedBuffer = true;\n\nconst _vector$6 = /*@__PURE__*/ new Vector3();\n\nclass InterleavedBufferAttribute {\n\n\tconstructor( interleavedBuffer, itemSize, offset, normalized = false ) {\n\n\t\tthis.name = '';\n\n\t\tthis.data = interleavedBuffer;\n\t\tthis.itemSize = itemSize;\n\t\tthis.offset = offset;\n\n\t\tthis.normalized = normalized === true;\n\n\t}\n\n\tget count() {\n\n\t\treturn this.data.count;\n\n\t}\n\n\tget array() {\n\n\t\treturn this.data.array;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tthis.data.needsUpdate = value;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, 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\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.applyNormalMatrix( 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\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.transformDirection( 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( 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( 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( 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( 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( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t}\n\n\tgetY( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t}\n\n\tgetZ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t}\n\n\tgetW( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t}\n\n\tsetXY( 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( 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( 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( 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( 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\nInterleavedBufferAttribute.prototype.isInterleavedBufferAttribute = true;\n\nclass SpriteMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'SpriteMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.rotation = 0;\n\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.transparent = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nSpriteMaterial.prototype.isSpriteMaterial = true;\n\nlet _geometry;\n\nconst _intersectPoint = /*@__PURE__*/ new Vector3();\nconst _worldScale = /*@__PURE__*/ new Vector3();\nconst _mvPosition = /*@__PURE__*/ new Vector3();\n\nconst _alignedPosition = /*@__PURE__*/ new Vector2();\nconst _rotatedPosition = /*@__PURE__*/ new Vector2();\nconst _viewWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _vA = /*@__PURE__*/ new Vector3();\nconst _vB = /*@__PURE__*/ new Vector3();\nconst _vC = /*@__PURE__*/ new Vector3();\n\nconst _uvA = /*@__PURE__*/ new Vector2();\nconst _uvB = /*@__PURE__*/ new Vector2();\nconst _uvC = /*@__PURE__*/ new Vector2();\n\nclass Sprite extends Object3D {\n\n\tconstructor( material ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Sprite';\n\n\t\tif ( _geometry === undefined ) {\n\n\t\t\t_geometry = new BufferGeometry();\n\n\t\t\tconst float32Array = new Float32Array( [\n\t\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t\t] );\n\n\t\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t\t}\n\n\t\tthis.geometry = _geometry;\n\t\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n\t\tthis.center = new Vector2( 0.5, 0.5 );\n\n\t}\n\n\traycast( 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.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA.set( 0, 0 );\n\t\t_uvB.set( 1, 0 );\n\t\t_uvC.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA, _vB, _vC, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA, _vC, _vB, 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, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( 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\nSprite.prototype.isSprite = true;\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\nconst _v1$2 = /*@__PURE__*/ new Vector3();\nconst _v2$1 = /*@__PURE__*/ new Vector3();\n\nclass LOD extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis._currentLevel = 0;\n\n\t\tthis.type = 'LOD';\n\n\t\tObject.defineProperties( this, {\n\t\t\tlevels: {\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: []\n\t\t\t},\n\t\t\tisLOD: {\n\t\t\t\tvalue: true,\n\t\t\t}\n\t\t} );\n\n\t\tthis.autoUpdate = true;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( 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( object, 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() {\n\n\t\treturn this._currentLevel;\n\n\t}\n\n\tgetObjectForDistance( 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( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$2 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$1.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$2.distanceTo( _v2$1 ) / 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( meta ) {\n\n\t\tconst data = super.toJSON( 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\nconst _basePosition = /*@__PURE__*/ new Vector3();\n\nconst _skinIndex = /*@__PURE__*/ new Vector4();\nconst _skinWeight = /*@__PURE__*/ new Vector4();\n\nconst _vector$5 = /*@__PURE__*/ new Vector3();\nconst _matrix = /*@__PURE__*/ new Matrix4();\n\nclass SkinnedMesh extends Mesh {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'SkinnedMesh';\n\n\t\tthis.bindMode = 'attached';\n\t\tthis.bindMatrix = new Matrix4();\n\t\tthis.bindMatrixInverse = new Matrix4();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( 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( 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.copy( bindMatrix ).invert();\n\n\t}\n\n\tpose() {\n\n\t\tthis.skeleton.pose();\n\n\t}\n\n\tnormalizeSkinWeights() {\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.fromBufferAttribute( skinWeight, 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( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.bindMode === 'attached' ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.matrixWorld ).invert();\n\n\t\t} else if ( this.bindMode === 'detached' ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.bindMatrix ).invert();\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( index, target ) {\n\n\t\tconst skeleton = this.skeleton;\n\t\tconst geometry = this.geometry;\n\n\t\t_skinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t_skinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t_basePosition.copy( target ).applyMatrix4( this.bindMatrix );\n\n\t\ttarget.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\tconst weight = _skinWeight.getComponent( i );\n\n\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\tconst boneIndex = _skinIndex.getComponent( i );\n\n\t\t\t\t_matrix.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\ttarget.addScaledVector( _vector$5.copy( _basePosition ).applyMatrix4( _matrix ), weight );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn target.applyMatrix4( this.bindMatrixInverse );\n\n\t}\n\n}\n\nSkinnedMesh.prototype.isSkinnedMesh = true;\n\nclass Bone extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'Bone';\n\n\t}\n\n}\n\nBone.prototype.isBone = true;\n\nclass DataTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, encoding ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.image = { data: data, width: width, height: height };\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nDataTexture.prototype.isDataTexture = true;\n\nconst _offsetMatrix = /*@__PURE__*/ new Matrix4();\nconst _identityMatrix = /*@__PURE__*/ new Matrix4();\n\nclass Skeleton {\n\n\tconstructor( bones = [], boneInverses = [] ) {\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.bones = bones.slice( 0 );\n\t\tthis.boneInverses = boneInverses;\n\t\tthis.boneMatrices = null;\n\n\t\tthis.boneTexture = null;\n\t\tthis.boneTextureSize = 0;\n\n\t\tthis.frame = - 1;\n\n\t\tthis.init();\n\n\t}\n\n\tinit() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tthis.boneMatrices = new Float32Array( bones.length * 16 );\n\n\t\t// calculate inverse bone matrices if necessary\n\n\t\tif ( boneInverses.length === 0 ) {\n\n\t\t\tthis.calculateInverses();\n\n\t\t} else {\n\n\t\t\t// handle special case\n\n\t\t\tif ( bones.length !== boneInverses.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.' );\n\n\t\t\t\tthis.boneInverses = [];\n\n\t\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcalculateInverses() {\n\n\t\tthis.boneInverses.length = 0;\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.copy( this.bones[ i ].matrixWorld ).invert();\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t}\n\n\tpose() {\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.copy( this.boneInverses[ i ] ).invert();\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.copy( bone.parent.matrixWorld ).invert();\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() {\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 !== null ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t}\n\n\tcomputeBoneTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this.bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = ceilPowerOfTwo( size );\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tboneMatrices.set( this.boneMatrices ); // copy current values\n\n\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\t\tboneTexture.needsUpdate = true;\n\n\t\tthis.boneMatrices = boneMatrices;\n\t\tthis.boneTexture = boneTexture;\n\t\tthis.boneTextureSize = size;\n\n\t\treturn this;\n\n\t}\n\n\tgetBoneByName( 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( ) {\n\n\t\tif ( this.boneTexture !== null ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = null;\n\n\t\t}\n\n\t}\n\n\tfromJSON( json, bones ) {\n\n\t\tthis.uuid = json.uuid;\n\n\t\tfor ( let i = 0, l = json.bones.length; i < l; i ++ ) {\n\n\t\t\tconst uuid = json.bones[ i ];\n\t\t\tlet bone = bones[ uuid ];\n\n\t\t\tif ( bone === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: No bone found with UUID:', uuid );\n\t\t\t\tbone = new Bone();\n\n\t\t\t}\n\n\t\t\tthis.bones.push( bone );\n\t\t\tthis.boneInverses.push( new Matrix4().fromArray( json.boneInverses[ i ] ) );\n\n\t\t}\n\n\t\tthis.init();\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Skeleton',\n\t\t\t\tgenerator: 'Skeleton.toJSON'\n\t\t\t},\n\t\t\tbones: [],\n\t\t\tboneInverses: []\n\t\t};\n\n\t\tdata.uuid = this.uuid;\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tfor ( let i = 0, l = bones.length; i < l; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\t\t\tdata.bones.push( bone.uuid );\n\n\t\t\tconst boneInverse = boneInverses[ i ];\n\t\t\tdata.boneInverses.push( boneInverse.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass InstancedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized, meshPerAttribute = 1 ) {\n\n\t\tif ( typeof normalized === 'number' ) {\n\n\t\t\tmeshPerAttribute = normalized;\n\n\t\t\tnormalized = false;\n\n\t\t\tconsole.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' );\n\n\t\t}\n\n\t\tsuper( array, itemSize, normalized );\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nInstancedBufferAttribute.prototype.isInstancedBufferAttribute = true;\n\nconst _instanceLocalMatrix = /*@__PURE__*/ new Matrix4();\nconst _instanceWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _mesh = /*@__PURE__*/ new Mesh();\n\nclass InstancedMesh extends Mesh {\n\n\tconstructor( geometry, material, count ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.instanceMatrix = new InstancedBufferAttribute( new Float32Array( count * 16 ), 16 );\n\t\tthis.instanceColor = null;\n\n\t\tthis.count = count;\n\n\t\tthis.frustumCulled = false;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\n\t\tif ( source.instanceColor !== null ) this.instanceColor = source.instanceColor.clone();\n\n\t\tthis.count = source.count;\n\n\t\treturn this;\n\n\t}\n\n\tgetColorAt( index, color ) {\n\n\t\tcolor.fromArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tgetMatrixAt( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\traycast( 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\tsetColorAt( index, color ) {\n\n\t\tif ( this.instanceColor === null ) {\n\n\t\t\tthis.instanceColor = new InstancedBufferAttribute( new Float32Array( this.instanceMatrix.count * 3 ), 3 );\n\n\t\t}\n\n\t\tcolor.toArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tsetMatrixAt( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nInstancedMesh.prototype.isInstancedMesh = true;\n\nclass LineBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LineBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.linewidth = 1;\n\t\tthis.linecap = 'round';\n\t\tthis.linejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.linewidth = source.linewidth;\n\t\tthis.linecap = source.linecap;\n\t\tthis.linejoin = source.linejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\n\nconst _start$1 = /*@__PURE__*/ new Vector3();\nconst _end$1 = /*@__PURE__*/ new Vector3();\nconst _inverseMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _ray$1 = /*@__PURE__*/ new Ray();\nconst _sphere$1 = /*@__PURE__*/ new Sphere();\n\nclass Line extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new LineBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Line';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( 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() {\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$1.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t\t_end$1.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ 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.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\tconsole.error( 'THREE.Line.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere );\n\t\t_sphere$1.applyMatrix4( matrixWorld );\n\t\t_sphere$1.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$1 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.copy( matrixWorld ).invert();\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.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 positionAttribute = attributes.position;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\tconst b = index.getX( i + 1 );\n\n\t\t\t\t\tvStart.fromBufferAttribute( positionAttribute, a );\n\t\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, b );\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\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\t\tvStart.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, i + 1 );\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\tconsole.error( 'THREE.Line.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\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\nLine.prototype.isLine = true;\n\nconst _start = /*@__PURE__*/ new Vector3();\nconst _end = /*@__PURE__*/ new Vector3();\n\nclass LineSegments extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'LineSegments';\n\n\t}\n\n\tcomputeLineDistances() {\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.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\t_end.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.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.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\tconsole.error( 'THREE.LineSegments.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nLineSegments.prototype.isLineSegments = true;\n\nclass LineLoop extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'LineLoop';\n\n\t}\n\n}\n\nLineLoop.prototype.isLineLoop = true;\n\nclass PointsMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PointsMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.size = 1;\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.size = source.size;\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nPointsMaterial.prototype.isPointsMaterial = true;\n\nconst _inverseMatrix = /*@__PURE__*/ new Matrix4();\nconst _ray = /*@__PURE__*/ new Ray();\nconst _sphere = /*@__PURE__*/ new Sphere();\nconst _position$2 = /*@__PURE__*/ new Vector3();\n\nclass Points extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new PointsMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Points';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( 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( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\n\t\tconst drawRange = geometry.drawRange;\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\t\t_sphere.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.copy( matrixWorld ).invert();\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\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 positionAttribute = attributes.position;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i ++ ) {\n\n\t\t\t\t\tconst a = index.getX( i );\n\n\t\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, a );\n\n\t\t\t\t\ttestPoint( _position$2, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, l = end; i < l; i ++ ) {\n\n\t\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\ttestPoint( _position$2, 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\tconsole.error( 'THREE.Points.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\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\nPoints.prototype.isPoints = true;\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray.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\nclass VideoTexture extends Texture {\n\n\tconstructor( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tconst scope = this;\n\n\t\tfunction updateVideo() {\n\n\t\t\tscope.needsUpdate = true;\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t\tif ( 'requestVideoFrameCallback' in video ) {\n\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.image ).copy( this );\n\n\t}\n\n\tupdate() {\n\n\t\tconst video = this.image;\n\t\tconst hasVideoFrameCallback = 'requestVideoFrameCallback' in video;\n\n\t\tif ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n}\n\nVideoTexture.prototype.isVideoTexture = true;\n\nclass FramebufferTexture extends Texture {\n\n\tconstructor( width, height, format ) {\n\n\t\tsuper( { width, height } );\n\n\t\tthis.format = format;\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nFramebufferTexture.prototype.isFramebufferTexture = true;\n\nclass CompressedTexture extends Texture {\n\n\tconstructor( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.image = { width: width, height: height };\n\t\tthis.mipmaps = mipmaps;\n\n\t\t// no flipping for cube textures\n\t\t// (also flipping doesn't work for compressed textures )\n\n\t\tthis.flipY = false;\n\n\t\t// can't generate mipmaps for compressed textures\n\t\t// mips must be embedded in DDS files\n\n\t\tthis.generateMipmaps = false;\n\n\t}\n\n}\n\nCompressedTexture.prototype.isCompressedTexture = true;\n\nclass CanvasTexture extends Texture {\n\n\tconstructor( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nCanvasTexture.prototype.isCanvasTexture = true;\n\n/**\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\nclass Curve {\n\n\tconstructor() {\n\n\t\tthis.type = 'Curve';\n\n\t\tthis.arcLengthDivisions = 200;\n\n\t}\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint( /* 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( 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( 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( 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() {\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( 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() {\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( u, distance ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0;\n\t\tconst 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( 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( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t}\n\n\tcomputeFrenetFrames( 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\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( 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( 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() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\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( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass EllipseCurve extends Curve {\n\n\tconstructor( aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'EllipseCurve';\n\n\t\tthis.aX = aX;\n\t\tthis.aY = aY;\n\n\t\tthis.xRadius = xRadius;\n\t\tthis.yRadius = yRadius;\n\n\t\tthis.aStartAngle = aStartAngle;\n\t\tthis.aEndAngle = aEndAngle;\n\n\t\tthis.aClockwise = aClockwise;\n\n\t\tthis.aRotation = aRotation;\n\n\t}\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst point = optionalTarget || new Vector2();\n\n\t\tconst twoPi = Math.PI * 2;\n\t\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\t\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t\t// ensures that deltaAngle is 0 .. 2 PI\n\t\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\t\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\t\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\t\tif ( samePoints ) {\n\n\t\t\t\tdeltaAngle = 0;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\t\tdeltaAngle = - twoPi;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst angle = this.aStartAngle + t * deltaAngle;\n\t\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\t\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\t\tif ( this.aRotation !== 0 ) {\n\n\t\t\tconst cos = Math.cos( this.aRotation );\n\t\t\tconst sin = Math.sin( this.aRotation );\n\n\t\t\tconst tx = x - this.aX;\n\t\t\tconst ty = y - this.aY;\n\n\t\t\t// Rotate the point about the center of the ellipse.\n\t\t\tx = tx * cos - ty * sin + this.aX;\n\t\t\ty = tx * sin + ty * cos + this.aY;\n\n\t\t}\n\n\t\treturn point.set( x, y );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.aX = source.aX;\n\t\tthis.aY = source.aY;\n\n\t\tthis.xRadius = source.xRadius;\n\t\tthis.yRadius = source.yRadius;\n\n\t\tthis.aStartAngle = source.aStartAngle;\n\t\tthis.aEndAngle = source.aEndAngle;\n\n\t\tthis.aClockwise = source.aClockwise;\n\n\t\tthis.aRotation = source.aRotation;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.aX = this.aX;\n\t\tdata.aY = this.aY;\n\n\t\tdata.xRadius = this.xRadius;\n\t\tdata.yRadius = this.yRadius;\n\n\t\tdata.aStartAngle = this.aStartAngle;\n\t\tdata.aEndAngle = this.aEndAngle;\n\n\t\tdata.aClockwise = this.aClockwise;\n\n\t\tdata.aRotation = this.aRotation;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.aX = json.aX;\n\t\tthis.aY = json.aY;\n\n\t\tthis.xRadius = json.xRadius;\n\t\tthis.yRadius = json.yRadius;\n\n\t\tthis.aStartAngle = json.aStartAngle;\n\t\tthis.aEndAngle = json.aEndAngle;\n\n\t\tthis.aClockwise = json.aClockwise;\n\n\t\tthis.aRotation = json.aRotation;\n\n\t\treturn this;\n\n\t}\n\n}\n\nEllipseCurve.prototype.isEllipseCurve = true;\n\nclass ArcCurve extends EllipseCurve {\n\n\tconstructor( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tsuper( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\tthis.type = 'ArcCurve';\n\n\t}\n\n}\n\nArcCurve.prototype.isArcCurve = true;\n\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\nclass CatmullRomCurve3 extends Curve {\n\n\tconstructor( points = [], closed = false, curveType = 'centripetal', tension = 0.5 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CatmullRomCurve3';\n\n\t\tthis.points = points;\n\t\tthis.closed = closed;\n\t\tthis.curveType = curveType;\n\t\tthis.tension = tension;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst l = points.length;\n\n\t\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\t\tlet intPoint = Math.floor( p );\n\t\tlet weight = p - intPoint;\n\n\t\tif ( this.closed ) {\n\n\t\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\t\tintPoint = l - 2;\n\t\t\tweight = 1;\n\n\t\t}\n\n\t\tlet p0, p3; // 4 points (p1 & p2 defined below)\n\n\t\tif ( this.closed || intPoint > 0 ) {\n\n\t\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate first point\n\t\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\t\tp0 = tmp;\n\n\t\t}\n\n\t\tconst p1 = points[ intPoint % l ];\n\t\tconst p2 = points[ ( intPoint + 1 ) % l ];\n\n\t\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate last point\n\t\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\t\tp3 = tmp;\n\n\t\t}\n\n\t\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t\t// init Centripetal / Chordal Catmull-Rom\n\t\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t\t// safety check for repeated points\n\t\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t\t}\n\n\t\tpoint.set(\n\t\t\tpx.calc( weight ),\n\t\t\tpy.calc( weight ),\n\t\t\tpz.calc( weight )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\tthis.closed = source.closed;\n\t\tthis.curveType = source.curveType;\n\t\tthis.tension = source.tension;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\tdata.closed = this.closed;\n\t\tdata.curveType = this.curveType;\n\t\tdata.tension = this.tension;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t\t}\n\n\t\tthis.closed = json.closed;\n\t\tthis.curveType = json.curveType;\n\t\tthis.tension = json.tension;\n\n\t\treturn this;\n\n\t}\n\n}\n\nCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\n\n/**\n * Bezier Curves formulas obtained from\n * https://en.wikipedia.org/wiki/B%C3%A9zier_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\nclass CubicBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubicBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nCubicBezierCurve.prototype.isCubicBezierCurve = true;\n\nclass CubicBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubicBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\n\nclass LineCurve extends Curve {\n\n\tconstructor( v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LineCurve';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget ) {\n\n\t\tconst tangent = optionalTarget || new Vector2();\n\n\t\ttangent.copy( this.v2 ).sub( this.v1 ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nLineCurve.prototype.isLineCurve = true;\n\nclass LineCurve3 extends Curve {\n\n\tconstructor( v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LineCurve3';\n\t\tthis.isLineCurve3 = true;\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass QuadraticBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'QuadraticBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\n\nclass QuadraticBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'QuadraticBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\n\nclass SplineCurve extends Curve {\n\n\tconstructor( points = [] ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'SplineCurve';\n\n\t\tthis.points = points;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst p = ( points.length - 1 ) * t;\n\n\t\tconst intPoint = Math.floor( p );\n\t\tconst weight = p - intPoint;\n\n\t\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\t\tconst p1 = points[ intPoint ];\n\t\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\t\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\t\tpoint.set(\n\t\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nSplineCurve.prototype.isSplineCurve = true;\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 *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nclass CurvePath extends Curve {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'CurvePath';\n\n\t\tthis.curves = [];\n\t\tthis.autoClose = false; // Automatically closes the path\n\n\t}\n\n\tadd( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t}\n\n\tclosePath() {\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( t, optionalTarget ) {\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, optionalTarget );\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( source ) {\n\n\t\tsuper.copy( 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() {\n\n\t\tconst data = super.toJSON();\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( json ) {\n\n\t\tsuper.fromJSON( 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\nclass Path extends CurvePath {\n\n\tconstructor( points ) {\n\n\t\tsuper();\n\t\tthis.type = 'Path';\n\n\t\tthis.currentPoint = new Vector2();\n\n\t\tif ( points ) {\n\n\t\t\tthis.setFromPoints( points );\n\n\t\t}\n\n\t}\n\n\tsetFromPoints( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LatheGeometry extends BufferGeometry {\n\n\tconstructor( points = [ new Vector2( 0, 0.5 ), new Vector2( 0.5, 0 ), new Vector2( 0, - 0.5 ) ], segments = 12, phiStart = 0, phiLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LatheGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpoints: points,\n\t\t\tsegments: segments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength\n\t\t};\n\n\t\tsegments = Math.floor( segments );\n\n\t\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\t\tphiLength = clamp( phiLength, 0, Math.PI * 2 );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst uvs = [];\n\t\tconst initNormals = [];\n\t\tconst normals = [];\n\n\t\t// helper variables\n\n\t\tconst inverseSegments = 1.0 / segments;\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tconst normal = new Vector3();\n\t\tconst curNormal = new Vector3();\n\t\tconst prevNormal = new Vector3();\n\t\tlet dx = 0;\n\t\tlet dy = 0;\n\n\t\t// pre-compute normals for initial \"meridian\"\n\n\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\tswitch ( j ) {\n\n\t\t\t\tcase 0:\t\t\t\t// special handling for 1st vertex on path\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tprevNormal.copy( normal );\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ( points.length - 1 ):\t// special handling for last Vertex on path\n\n\t\t\t\t\tinitNormals.push( prevNormal.x, prevNormal.y, prevNormal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\t\t\t// default handling for all vertices in between\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tcurNormal.copy( normal );\n\n\t\t\t\t\tnormal.x += prevNormal.x;\n\t\t\t\t\tnormal.y += prevNormal.y;\n\t\t\t\t\tnormal.z += prevNormal.z;\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tprevNormal.copy( curNormal );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices, uvs and normals\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\t\tconst sin = Math.sin( phi );\n\t\t\tconst cos = Math.cos( phi );\n\n\t\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\t\tvertex.y = points[ j ].y;\n\t\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = i / segments;\n\t\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// normal\n\n\t\t\t\tconst x = initNormals[ 3 * j + 0 ] * sin;\n\t\t\t\tconst y = initNormals[ 3 * j + 1 ];\n\t\t\t\tconst z = initNormals[ 3 * j + 0 ] * cos;\n\n\t\t\t\tnormals.push( x, y, z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\t\tconst base = j + i * points.length;\n\n\t\t\t\tconst a = base;\n\t\t\t\tconst b = base + points.length;\n\t\t\t\tconst c = base + points.length + 1;\n\t\t\t\tconst d = base + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( c, d, b );\n\n\t\t\t}\n\n\t\t}\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( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new LatheGeometry( data.points, data.segments, data.phiStart, data.phiLength );\n\n\t}\n\n}\n\nclass CapsuleGeometry extends LatheGeometry {\n\n\tconstructor( radius = 1, length = 1, capSegments = 4, radialSegments = 8 ) {\n\n\t\tconst path = new Path();\n\t\tpath.absarc( 0, - length / 2, radius, Math.PI * 1.5, 0 );\n\t\tpath.absarc( 0, length / 2, radius, 0, Math.PI * 0.5 );\n\n\t\tsuper( path.getPoints( capSegments ), radialSegments );\n\n\t\tthis.type = 'CapsuleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: length,\n\t\t\tcapSegments: capSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CapsuleGeometry( data.radius, data.length, data.capSegments, data.radialSegments );\n\n\t}\n\n}\n\nclass CircleGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, segments = 8, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CircleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tsegments: segments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tsegments = Math.max( 3, segments );\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\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// center point\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tnormals.push( 0, 0, 1 );\n\t\tuvs.push( 0.5, 0.5 );\n\n\t\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\t\tconst segment = thetaStart + s / segments * 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// uvs\n\n\t\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tindices.push( i, i + 1, 0 );\n\n\t\t}\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}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CircleGeometry( data.radius, data.segments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass CylinderGeometry extends BufferGeometry {\n\n\tconstructor( radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\t\tthis.type = 'CylinderGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradiusTop: radiusTop,\n\t\t\tradiusBottom: radiusBottom,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tconst scope = this;\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\theightSegments = Math.floor( heightSegments );\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 index = 0;\n\t\tconst indexArray = [];\n\t\tconst halfHeight = height / 2;\n\t\tlet groupStart = 0;\n\n\t\t// generate geometry\n\n\t\tgenerateTorso();\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t\t}\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 generateTorso() {\n\n\t\t\tconst normal = new Vector3();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\t// this will be used to calculate the normal\n\t\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\t\tconst indexRow = [];\n\n\t\t\t\tconst v = y / heightSegments;\n\n\t\t\t\t// calculate the radius of the current row\n\n\t\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t\t// vertex\n\n\t\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\t// normal\n\n\t\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\t// uv\n\n\t\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t\t}\n\n\t\t\t\t// now save vertices of the row in our index array\n\n\t\t\t\tindexArray.push( indexRow );\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\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// update group 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, 0 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t\tfunction generateCap( top ) {\n\n\t\t\t// save the index of the first center vertex\n\t\t\tconst centerIndexStart = index;\n\n\t\t\tconst uv = new Vector2();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\t\tconst sign = ( top === true ) ? 1 : - 1;\n\n\t\t\t// first we generate the center vertex data of the cap.\n\t\t\t// because the geometry needs one set of uvs per face,\n\t\t\t// we must generate a center vertex per face/segment\n\n\t\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// save the index of the last center vertex\n\t\t\tconst centerIndexEnd = index;\n\n\t\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = halfHeight * sign;\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\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tconst c = centerIndexStart + x;\n\t\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\t\tif ( top === true ) {\n\n\t\t\t\t\t// face top\n\n\t\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// face bottom\n\n\t\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t\t}\n\n\t\t\t\tgroupCount += 3;\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, top === true ? 1 : 2 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CylinderGeometry( data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ConeGeometry extends CylinderGeometry {\n\n\tconstructor( radius = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\t\tthis.type = 'ConeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new ConeGeometry( data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass PolyhedronGeometry extends BufferGeometry {\n\n\tconstructor( vertices = [], indices = [], radius = 1, detail = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PolyhedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tvertices: vertices,\n\t\t\tindices: indices,\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t\t// default buffer data\n\n\t\tconst vertexBuffer = [];\n\t\tconst uvBuffer = [];\n\n\t\t// the subdivision creates the vertex buffer data\n\n\t\tsubdivide( detail );\n\n\t\t// all vertices should lie on a conceptual sphere with a given radius\n\n\t\tapplyRadius( radius );\n\n\t\t// finally, create the uv data\n\n\t\tgenerateUVs();\n\n\t\t// build non-indexed geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\t\tif ( detail === 0 ) {\n\n\t\t\tthis.computeVertexNormals(); // flat normals\n\n\t\t} else {\n\n\t\t\tthis.normalizeNormals(); // smooth normals\n\n\t\t}\n\n\t\t// helper functions\n\n\t\tfunction subdivide( detail ) {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t// get the vertices of the face\n\n\t\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t\t// perform subdivision\n\n\t\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\t\tconst cols = detail + 1;\n\n\t\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\t\tconst v = [];\n\n\t\t\t// construct all of the vertices for this subdivision\n\n\t\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\t\tv[ i ] = [];\n\n\t\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\t\tconst rows = cols - i;\n\n\t\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// construct all of the faces\n\n\t\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ 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\tfunction applyRadius( radius ) {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t\t}\n\n\t\t\tcorrectUVs();\n\n\t\t\tcorrectSeam();\n\n\t\t}\n\n\t\tfunction correctSeam() {\n\n\t\t\t// handle case when face straddles the seam, see #3269\n\n\t\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t\t// uv data of a single face\n\n\t\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction pushVertex( vertex ) {\n\n\t\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tfunction getVertexByIndex( index, vertex ) {\n\n\t\t\tconst stride = index * 3;\n\n\t\t\tvertex.x = vertices[ stride + 0 ];\n\t\t\tvertex.y = vertices[ stride + 1 ];\n\t\t\tvertex.z = vertices[ stride + 2 ];\n\n\t\t}\n\n\t\tfunction correctUVs() {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\tconst centroid = new Vector3();\n\n\t\t\tconst uvA = new Vector2();\n\t\t\tconst uvB = new Vector2();\n\t\t\tconst uvC = new Vector2();\n\n\t\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\t\tconst azi = azimuth( centroid );\n\n\t\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t\t}\n\n\t\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\t\tfunction azimuth( vector ) {\n\n\t\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t\t}\n\n\n\t\t// Angle above the XZ plane.\n\n\t\tfunction inclination( vector ) {\n\n\t\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.details );\n\n\t}\n\n}\n\nclass DodecahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\t\tconst r = 1 / t;\n\n\t\tconst vertices = [\n\n\t\t\t// (±1, ±1, ±1)\n\t\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t\t// (0, ±1/φ, ±φ)\n\t\t\t0, - r, - t, 0, - r, t,\n\t\t\t0, r, - t, 0, r, t,\n\n\t\t\t// (±1/φ, ±φ, 0)\n\t\t\t- r, - t, 0, - r, t, 0,\n\t\t\tr, - t, 0, r, t, 0,\n\n\t\t\t// (±φ, 0, ±1/φ)\n\t\t\t- t, 0, - r, t, 0, - r,\n\t\t\t- t, 0, r, t, 0, r\n\t\t];\n\n\t\tconst indices = [\n\t\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'DodecahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new DodecahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nconst _v0 = new Vector3();\nconst _v1$1 = new Vector3();\nconst _normal = new Vector3();\nconst _triangle = new Triangle();\n\nclass EdgesGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null, thresholdAngle = 1 ) {\n\n\t\tsuper();\n\t\tthis.type = 'EdgesGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry,\n\t\t\tthresholdAngle: thresholdAngle\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\tconst precisionPoints = 4;\n\t\t\tconst precision = Math.pow( 10, precisionPoints );\n\t\t\tconst thresholdDot = Math.cos( DEG2RAD * thresholdAngle );\n\n\t\t\tconst indexAttr = geometry.getIndex();\n\t\t\tconst positionAttr = geometry.getAttribute( 'position' );\n\t\t\tconst indexCount = indexAttr ? indexAttr.count : positionAttr.count;\n\n\t\t\tconst indexArr = [ 0, 0, 0 ];\n\t\t\tconst vertKeys = [ 'a', 'b', 'c' ];\n\t\t\tconst hashes = new Array( 3 );\n\n\t\t\tconst edgeData = {};\n\t\t\tconst vertices = [];\n\t\t\tfor ( let i = 0; i < indexCount; i += 3 ) {\n\n\t\t\t\tif ( indexAttr ) {\n\n\t\t\t\t\tindexArr[ 0 ] = indexAttr.getX( i );\n\t\t\t\t\tindexArr[ 1 ] = indexAttr.getX( i + 1 );\n\t\t\t\t\tindexArr[ 2 ] = indexAttr.getX( i + 2 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindexArr[ 0 ] = i;\n\t\t\t\t\tindexArr[ 1 ] = i + 1;\n\t\t\t\t\tindexArr[ 2 ] = i + 2;\n\n\t\t\t\t}\n\n\t\t\t\tconst { a, b, c } = _triangle;\n\t\t\t\ta.fromBufferAttribute( positionAttr, indexArr[ 0 ] );\n\t\t\t\tb.fromBufferAttribute( positionAttr, indexArr[ 1 ] );\n\t\t\t\tc.fromBufferAttribute( positionAttr, indexArr[ 2 ] );\n\t\t\t\t_triangle.getNormal( _normal );\n\n\t\t\t\t// create hashes for the edge from the vertices\n\t\t\t\thashes[ 0 ] = `${ Math.round( a.x * precision ) },${ Math.round( a.y * precision ) },${ Math.round( a.z * precision ) }`;\n\t\t\t\thashes[ 1 ] = `${ Math.round( b.x * precision ) },${ Math.round( b.y * precision ) },${ Math.round( b.z * precision ) }`;\n\t\t\t\thashes[ 2 ] = `${ Math.round( c.x * precision ) },${ Math.round( c.y * precision ) },${ Math.round( c.z * precision ) }`;\n\n\t\t\t\t// skip degenerate triangles\n\t\t\t\tif ( hashes[ 0 ] === hashes[ 1 ] || hashes[ 1 ] === hashes[ 2 ] || hashes[ 2 ] === hashes[ 0 ] ) {\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\t// iterate over every edge\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// get the first and next vertex making up the edge\n\t\t\t\t\tconst jNext = ( j + 1 ) % 3;\n\t\t\t\t\tconst vecHash0 = hashes[ j ];\n\t\t\t\t\tconst vecHash1 = hashes[ jNext ];\n\t\t\t\t\tconst v0 = _triangle[ vertKeys[ j ] ];\n\t\t\t\t\tconst v1 = _triangle[ vertKeys[ jNext ] ];\n\n\t\t\t\t\tconst hash = `${ vecHash0 }_${ vecHash1 }`;\n\t\t\t\t\tconst reverseHash = `${ vecHash1 }_${ vecHash0 }`;\n\n\t\t\t\t\tif ( reverseHash in edgeData && edgeData[ reverseHash ] ) {\n\n\t\t\t\t\t\t// if we found a sibling edge add it into the vertex array if\n\t\t\t\t\t\t// it meets the angle threshold and delete the edge from the map.\n\t\t\t\t\t\tif ( _normal.dot( edgeData[ reverseHash ].normal ) <= thresholdDot ) {\n\n\t\t\t\t\t\t\tvertices.push( v0.x, v0.y, v0.z );\n\t\t\t\t\t\t\tvertices.push( v1.x, v1.y, v1.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tedgeData[ reverseHash ] = null;\n\n\t\t\t\t\t} else if ( ! ( hash in edgeData ) ) {\n\n\t\t\t\t\t\t// if we've already got an edge here then skip adding a new one\n\t\t\t\t\t\tedgeData[ hash ] = {\n\n\t\t\t\t\t\t\tindex0: indexArr[ j ],\n\t\t\t\t\t\t\tindex1: indexArr[ jNext ],\n\t\t\t\t\t\t\tnormal: _normal.clone(),\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// iterate over all remaining, unmatched edges and add them to the vertex array\n\t\t\tfor ( const key in edgeData ) {\n\n\t\t\t\tif ( edgeData[ key ] ) {\n\n\t\t\t\t\tconst { index0, index1 } = edgeData[ key ];\n\t\t\t\t\t_v0.fromBufferAttribute( positionAttr, index0 );\n\t\t\t\t\t_v1$1.fromBufferAttribute( positionAttr, index1 );\n\n\t\t\t\t\tvertices.push( _v0.x, _v0.y, _v0.z );\n\t\t\t\t\tvertices.push( _v1$1.x, _v1$1.y, _v1$1.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n}\n\nclass Shape extends Path {\n\n\tconstructor( points ) {\n\n\t\tsuper( points );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.type = 'Shape';\n\n\t\tthis.holes = [];\n\n\t}\n\n\tgetPointsHoles( 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( 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( source ) {\n\n\t\tsuper.copy( 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() {\n\n\t\tconst data = super.toJSON();\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( json ) {\n\n\t\tsuper.fromJSON( 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 * Port from https://github.com/mapbox/earcut (v2.2.2)\n */\n\nconst Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim = 2 ) {\n\n\t\tconst hasHoles = holeIndices && holeIndices.length;\n\t\tconst outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length;\n\t\tlet outerNode = linkedList( data, 0, outerLen, dim, true );\n\t\tconst triangles = [];\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\tconst 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\tconst 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\tconst 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\tconst 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\tconst 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\tconst queue = [];\n\tlet i, 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 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\tconst hx = hole.x;\n\tconst hy = hole.y;\n\tlet qx = - Infinity, m;\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\tconst 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\tconst stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y;\n\tlet tanMin = Infinity, tan;\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 ) && // doesn'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\tconst px = ( 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\tconst 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\nclass ShapeUtils {\n\n\t// calculate area of the contour polygon\n\n\tstatic area( 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\tstatic isClockWise( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t}\n\n\tstatic triangulateShape( 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 * 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\nclass ExtrudeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0.5, 0.5 ), new Vector2( - 0.5, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ExtrudeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\toptions: options\n\t\t};\n\n\t\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\t\tconst scope = this;\n\n\t\tconst verticesArray = [];\n\t\tconst uvArray = [];\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\t\t\taddShape( shape );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\t\tthis.computeVertexNormals();\n\n\t\t// functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst placeholder = [];\n\n\t\t\t// options\n\n\t\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\t\tlet depth = options.depth !== undefined ? options.depth : 1;\n\n\t\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 0.2;\n\t\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 0.1;\n\t\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\t\tconst extrudePath = options.extrudePath;\n\n\t\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t\t// deprecated options\n\n\t\t\tif ( options.amount !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' );\n\t\t\t\tdepth = options.amount;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet extrudePts, extrudeByPath = false;\n\t\t\tlet splineTube, binormal, normal, position2;\n\n\t\t\tif ( extrudePath ) {\n\n\t\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\t\textrudeByPath = true;\n\t\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t\t// SETUP TNB variables\n\n\t\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\t\tbinormal = new Vector3();\n\t\t\t\tnormal = new Vector3();\n\t\t\t\tposition2 = new Vector3();\n\n\t\t\t}\n\n\t\t\t// Safeguards if bevels are not enabled\n\n\t\t\tif ( ! bevelEnabled ) {\n\n\t\t\t\tbevelSegments = 0;\n\t\t\t\tbevelThickness = 0;\n\t\t\t\tbevelSize = 0;\n\t\t\t\tbevelOffset = 0;\n\n\t\t\t}\n\n\t\t\t// Variables initialization\n\n\t\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\t\tlet vertices = shapePoints.shape;\n\t\t\tconst holes = shapePoints.holes;\n\n\t\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\t\tif ( reverse ) {\n\n\t\t\t\tvertices = vertices.reverse();\n\n\t\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t\t/* Vertices */\n\n\t\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\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\tvertices = vertices.concat( ahole );\n\n\t\t\t}\n\n\n\t\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\t\tif ( ! vec ) console.error( 'THREE.ExtrudeGeometry: vec does not exist' );\n\n\t\t\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t\t\t}\n\n\t\t\tconst vlen = vertices.length, flen = faces.length;\n\n\n\t\t\t// Find directions for point movement\n\n\n\t\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t\t//\n\t\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t\t// check for collinear edges\n\t\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not collinear\n\n\t\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\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\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t\t// but prevent crazy spikes\n\t\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\t\tlet direction_eq = false; // assumes: opposite\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 ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\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\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = 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 ( direction_eq ) {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t\t}\n\n\n\t\t\tconst contourMovements = [];\n\n\t\t\tfor ( let i = 0, il = contour.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\t// console.log('i,j,k', i, j , k)\n\n\t\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t\t}\n\n\t\t\tconst holesMovements = [];\n\t\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\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\toneHoleMovements = [];\n\n\t\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\t\tif ( j === il ) j = 0;\n\t\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t\t}\n\n\t\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t\t}\n\n\n\t\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ 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\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t\t// Back facing vertices\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, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ 0 ] ).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\t// Add stepped vertices...\n\t\t\t// Including front facing vertices\n\n\t\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\t// Add bevel segments planes\n\n\t\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t\t} else {\n\n\t\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\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t/* Faces */\n\n\t\t\t// Top and bottom faces\n\n\t\t\tbuildLidFaces();\n\n\t\t\t// Sides faces\n\n\t\t\tbuildSideFaces();\n\n\n\t\t\t///// Internal functions\n\n\t\t\tfunction buildLidFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t\t}\n\n\t\t\t// Create faces for the z-sides of the shape\n\n\t\t\tfunction buildSideFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\t\t\t\tlet layeroffset = 0;\n\t\t\t\tsidewalls( contour, layeroffset );\n\t\t\t\tlayeroffset += contour.length;\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t\t//, true\n\t\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t\t}\n\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t\t}\n\n\t\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\t\tlet i = contour.length;\n\n\t\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\t\tconst j = i;\n\t\t\t\t\tlet k = i - 1;\n\t\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction v( x, y, z ) {\n\n\t\t\t\tplaceholder.push( x );\n\t\t\t\tplaceholder.push( y );\n\t\t\t\tplaceholder.push( z );\n\n\t\t\t}\n\n\n\t\t\tfunction f3( a, b, c ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\n\t\t\t}\n\n\t\t\tfunction f4( a, b, c, d ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( d );\n\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\t\t\t\taddVertex( d );\n\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t}\n\n\t\t\tfunction addVertex( index ) {\n\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t\t}\n\n\n\t\t\tfunction addUV( vector2 ) {\n\n\t\t\t\tuvArray.push( vector2.x );\n\t\t\t\tuvArray.push( vector2.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\t\tconst options = this.parameters.options;\n\n\t\treturn toJSON$1( shapes, options, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\tconst extrudePath = data.options.extrudePath;\n\n\t\tif ( extrudePath !== undefined ) {\n\n\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t}\n\n\t\treturn new ExtrudeGeometry( geometryShapes, data.options );\n\n\t}\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 ) < Math.abs( a_x - b_x ) ) {\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};\n\nfunction toJSON$1( shapes, options, 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\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\nclass IcosahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\t\tconst vertices = [\n\t\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t\t0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t\tt, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t\t1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t\t3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t\t4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'IcosahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new IcosahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass OctahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t\t1, 3, 4,\t1, 4, 2\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'OctahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new OctahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass RingGeometry extends BufferGeometry {\n\n\tconstructor( innerRadius = 0.5, outerRadius = 1, thetaSegments = 8, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'RingGeometry';\n\n\t\tthis.parameters = {\n\t\t\tinnerRadius: innerRadius,\n\t\t\touterRadius: outerRadius,\n\t\t\tthetaSegments: thetaSegments,\n\t\t\tphiSegments: phiSegments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthetaSegments = Math.max( 3, thetaSegments );\n\t\tphiSegments = Math.max( 1, phiSegments );\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// some helper variables\n\n\t\tlet radius = innerRadius;\n\t\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t\t// increase the radius for next row of vertices\n\n\t\t\tradius += radiusStep;\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\t\tconst a = segment;\n\t\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\t\tconst d = segment + 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}\n\n\t\t}\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}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new RingGeometry( data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ShapeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), curveSegments = 12 ) {\n\n\t\tsuper();\n\t\tthis.type = 'ShapeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\tcurveSegments: curveSegments\n\t\t};\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 groupStart = 0;\n\t\tlet groupCount = 0;\n\n\t\t// allow single and array values for \"shapes\" parameter\n\n\t\tif ( Array.isArray( shapes ) === false ) {\n\n\t\t\taddShape( shapes );\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\t\taddShape( shapes[ i ] );\n\n\t\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\t\tgroupStart += groupCount;\n\t\t\t\tgroupCount = 0;\n\n\t\t\t}\n\n\t\t}\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\n\t\t// helper functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst indexOffset = vertices.length / 3;\n\t\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\t\tlet shapeVertices = points.shape;\n\t\t\tconst shapeHoles = points.holes;\n\n\t\t\t// check direction of vertices\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t\t// join vertices of inner and outer paths to a single array\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t\t}\n\n\t\t\t// vertices, normals, uvs\n\n\t\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\t\tnormals.push( 0, 0, 1 );\n\t\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t\t}\n\n\t\t\t// incides\n\n\t\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tconst face = faces[ i ];\n\n\t\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\t\tindices.push( a, b, c );\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\n\t\treturn toJSON( shapes, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\treturn new ShapeGeometry( geometryShapes, data.curveSegments );\n\n\t}\n\n}\n\nfunction toJSON( 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\nclass SphereGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI ) {\n\n\t\tsuper();\n\t\tthis.type = 'SphereGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\twidthSegments = Math.max( 3, Math.floor( widthSegments ) );\n\t\theightSegments = Math.max( 2, Math.floor( heightSegments ) );\n\n\t\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\t\tlet index = 0;\n\t\tconst grid = [];\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\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// generate vertices, normals and uvs\n\n\t\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\t\tconst verticesRow = [];\n\n\t\t\tconst v = iy / heightSegments;\n\n\t\t\t// special case for the poles\n\n\t\t\tlet uOffset = 0;\n\n\t\t\tif ( iy == 0 && thetaStart == 0 ) {\n\n\t\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t\t} else if ( iy == heightSegments && thetaEnd == Math.PI ) {\n\n\t\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t\t}\n\n\t\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\t\tconst u = ix / widthSegments;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\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.copy( vertex ).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 + uOffset, 1 - v );\n\n\t\t\t\tverticesRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\tgrid.push( verticesRow );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\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}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new SphereGeometry( data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass TetrahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'TetrahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TetrahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass TorusGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, radialSegments = 8, tubularSegments = 6, arc = Math.PI * 2 ) {\n\n\t\tsuper();\n\t\tthis.type = 'TorusGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\tradialSegments: radialSegments,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tarc: arc\n\t\t};\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\ttubularSegments = Math.floor( tubularSegments );\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\tconst center = new Vector3();\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tconst u = i / tubularSegments * arc;\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\t\tnormal.subVectors( vertex, center ).normalize();\n\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( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\t\tconst d = ( tubularSegments + 1 ) * j + 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\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}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusGeometry( data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc );\n\n\t}\n\n}\n\nclass TorusKnotGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3 ) {\n\n\t\tsuper();\n\t\tthis.type = 'TorusKnotGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t\tp: p,\n\t\t\tq: q\n\t\t};\n\n\t\ttubularSegments = Math.floor( tubularSegments );\n\t\tradialSegments = Math.floor( radialSegments );\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\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\tconst P1 = new Vector3();\n\t\tconst P2 = new Vector3();\n\n\t\tconst B = new Vector3();\n\t\tconst T = new Vector3();\n\t\tconst N = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segment\n\n\t\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t\t// calculate orthonormal basis\n\n\t\t\tT.subVectors( P2, P1 );\n\t\t\tN.addVectors( P2, P1 );\n\t\t\tB.crossVectors( T, N );\n\t\t\tN.crossVectors( B, T );\n\n\t\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\t\tB.normalize();\n\t\t\tN.normalize();\n\n\t\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\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\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t\t// now calculate the final vertex position.\n\t\t\t\t// first we orient the extrusion with our basis vectors, then we add it to the current position on the curve\n\n\t\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\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\t\tnormal.subVectors( vertex, P1 ).normalize();\n\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( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\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\t// indices\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\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\t// this function calculates the current position on the torus curve\n\n\t\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\t\tconst cu = Math.cos( u );\n\t\t\tconst su = Math.sin( u );\n\t\t\tconst quOverP = q / p * u;\n\t\t\tconst cs = Math.cos( quOverP );\n\n\t\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusKnotGeometry( data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q );\n\n\t}\n\n}\n\nclass TubeGeometry extends BufferGeometry {\n\n\tconstructor( path = new QuadraticBezierCurve3( new Vector3( - 1, - 1, 0 ), new Vector3( - 1, 1, 0 ), new Vector3( 1, 1, 0 ) ), tubularSegments = 64, radius = 1, radialSegments = 8, closed = false ) {\n\n\t\tsuper();\n\t\tthis.type = 'TubeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpath: path,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradius: radius,\n\t\t\tradialSegments: radialSegments,\n\t\t\tclosed: closed\n\t\t};\n\n\t\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t\t// expose internals\n\n\t\tthis.tangents = frames.tangents;\n\t\tthis.normals = frames.normals;\n\t\tthis.binormals = frames.binormals;\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tlet P = new Vector3();\n\n\t\t// buffer\n\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\t\tconst indices = [];\n\n\t\t// create buffer data\n\n\t\tgenerateBufferData();\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\t// functions\n\n\t\tfunction generateBufferData() {\n\n\t\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\t\tgenerateSegment( i );\n\n\t\t\t}\n\n\t\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t\t// at the regular position on the given path\n\t\t\t//\n\t\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t\t// uvs are generated in a separate function.\n\t\t\t// this makes it easy compute correct values for closed geometries\n\n\t\t\tgenerateUVs();\n\n\t\t\t// finally create faces\n\n\t\t\tgenerateIndices();\n\n\t\t}\n\n\t\tfunction generateSegment( i ) {\n\n\t\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t\t// retrieve corresponding normal and binormal\n\n\t\t\tconst N = frames.normals[ i ];\n\t\t\tconst B = frames.binormals[ i ];\n\n\t\t\t// generate normals and vertices for the current segment\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\tconst sin = Math.sin( v );\n\t\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\t\tnormal.normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateIndices() {\n\n\t\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\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}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.path = this.parameters.path.toJSON();\n\n\t\treturn data;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\treturn new TubeGeometry(\n\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\tdata.tubularSegments,\n\t\t\tdata.radius,\n\t\t\tdata.radialSegments,\n\t\t\tdata.closed\n\t\t);\n\n\t}\n\n}\n\nclass WireframeGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null ) {\n\n\t\tsuper();\n\t\tthis.type = 'WireframeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\t// buffer\n\n\t\t\tconst vertices = [];\n\t\t\tconst edges = new Set();\n\n\t\t\t// helper variables\n\n\t\t\tconst start = new Vector3();\n\t\t\tconst end = new Vector3();\n\n\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\t// indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tconst indices = geometry.index;\n\t\t\t\tlet groups = geometry.groups;\n\n\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t\t}\n\n\t\t\t\t// create a data structure that contains all edges without duplicates\n\n\t\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\t\tconst groupStart = group.start;\n\t\t\t\t\tconst groupCount = group.count;\n\n\t\t\t\t\tfor ( let i = groupStart, l = ( groupStart + groupCount ); i < l; i += 3 ) {\n\n\t\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\tconst index1 = indices.getX( i + j );\n\t\t\t\t\t\t\tconst index2 = indices.getX( i + ( j + 1 ) % 3 );\n\n\t\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\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}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\n\t\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\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\t\tconst index1 = 3 * i + j;\n\t\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\n\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\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// build geometry\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n}\n\nfunction isUniqueEdge( start, end, edges ) {\n\n\tconst hash1 = `${start.x},${start.y},${start.z}-${end.x},${end.y},${end.z}`;\n\tconst hash2 = `${end.x},${end.y},${end.z}-${start.x},${start.y},${start.z}`; // coincident edge\n\n\tif ( edges.has( hash1 ) === true || edges.has( hash2 ) === true ) {\n\n\t\treturn false;\n\n\t} else {\n\n\t\tedges.add( hash1 );\n\t\tedges.add( hash2 );\n\t\treturn true;\n\n\t}\n\n}\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBoxGeometry: BoxGeometry,\n\tBoxBufferGeometry: BoxGeometry,\n\tCapsuleGeometry: CapsuleGeometry,\n\tCapsuleBufferGeometry: CapsuleGeometry,\n\tCircleGeometry: CircleGeometry,\n\tCircleBufferGeometry: CircleGeometry,\n\tConeGeometry: ConeGeometry,\n\tConeBufferGeometry: ConeGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tCylinderBufferGeometry: CylinderGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tDodecahedronBufferGeometry: DodecahedronGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tExtrudeBufferGeometry: ExtrudeGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tIcosahedronBufferGeometry: IcosahedronGeometry,\n\tLatheGeometry: LatheGeometry,\n\tLatheBufferGeometry: LatheGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tOctahedronBufferGeometry: OctahedronGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPlaneBufferGeometry: PlaneGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tPolyhedronBufferGeometry: PolyhedronGeometry,\n\tRingGeometry: RingGeometry,\n\tRingBufferGeometry: RingGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tShapeBufferGeometry: ShapeGeometry,\n\tSphereGeometry: SphereGeometry,\n\tSphereBufferGeometry: SphereGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTetrahedronBufferGeometry: TetrahedronGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusBufferGeometry: TorusGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTorusKnotBufferGeometry: TorusKnotGeometry,\n\tTubeGeometry: TubeGeometry,\n\tTubeBufferGeometry: TubeGeometry,\n\tWireframeGeometry: WireframeGeometry\n});\n\nclass ShadowMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ShadowMaterial';\n\n\t\tthis.color = new Color( 0x000000 );\n\t\tthis.transparent = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nShadowMaterial.prototype.isShadowMaterial = true;\n\nclass RawShaderMaterial extends ShaderMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper( parameters );\n\n\t\tthis.type = 'RawShaderMaterial';\n\n\t}\n\n}\n\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\nclass MeshStandardMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.type = 'MeshStandardMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.roughness = 1.0;\n\t\tthis.metalness = 0.0;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.roughnessMap = null;\n\n\t\tthis.metalnessMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapIntensity = 1.0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.color.copy( source.color );\n\t\tthis.roughness = source.roughness;\n\t\tthis.metalness = source.metalness;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.roughnessMap = source.roughnessMap;\n\n\t\tthis.metalnessMap = source.metalnessMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapIntensity = source.envMapIntensity;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\nclass MeshPhysicalMaterial extends MeshStandardMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.type = 'MeshPhysicalMaterial';\n\n\t\tthis.clearcoatMap = null;\n\t\tthis.clearcoatRoughness = 0.0;\n\t\tthis.clearcoatRoughnessMap = null;\n\t\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\t\tthis.clearcoatNormalMap = null;\n\n\t\tthis.ior = 1.5;\n\n\t\tObject.defineProperty( this, 'reflectivity', {\n\t\t\tget: function () {\n\n\t\t\t\treturn ( clamp( 2.5 * ( this.ior - 1 ) / ( this.ior + 1 ), 0, 1 ) );\n\n\t\t\t},\n\t\t\tset: function ( reflectivity ) {\n\n\t\t\t\tthis.ior = ( 1 + 0.4 * reflectivity ) / ( 1 - 0.4 * reflectivity );\n\n\t\t\t}\n\t\t} );\n\n\t\tthis.sheenColor = new Color( 0x000000 );\n\t\tthis.sheenColorMap = null;\n\t\tthis.sheenRoughness = 1.0;\n\t\tthis.sheenRoughnessMap = null;\n\n\t\tthis.transmissionMap = null;\n\n\t\tthis.thickness = 0;\n\t\tthis.thicknessMap = null;\n\t\tthis.attenuationDistance = 0.0;\n\t\tthis.attenuationColor = new Color( 1, 1, 1 );\n\n\t\tthis.specularIntensity = 1.0;\n\t\tthis.specularIntensityMap = null;\n\t\tthis.specularColor = new Color( 1, 1, 1 );\n\t\tthis.specularColorMap = null;\n\n\t\tthis._sheen = 0.0;\n\t\tthis._clearcoat = 0;\n\t\tthis._transmission = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tget sheen() {\n\n\t\treturn this._sheen;\n\n\t}\n\n\tset sheen( value ) {\n\n\t\tif ( this._sheen > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._sheen = value;\n\n\t}\n\n\tget clearcoat() {\n\n\t\treturn this._clearcoat;\n\n\t}\n\n\tset clearcoat( value ) {\n\n\t\tif ( this._clearcoat > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._clearcoat = value;\n\n\t}\n\n\tget transmission() {\n\n\t\treturn this._transmission;\n\n\t}\n\n\tset transmission( value ) {\n\n\t\tif ( this._transmission > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._transmission = value;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.clearcoat = source.clearcoat;\n\t\tthis.clearcoatMap = source.clearcoatMap;\n\t\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\t\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\t\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\t\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\t\tthis.ior = source.ior;\n\n\t\tthis.sheen = source.sheen;\n\t\tthis.sheenColor.copy( source.sheenColor );\n\t\tthis.sheenColorMap = source.sheenColorMap;\n\t\tthis.sheenRoughness = source.sheenRoughness;\n\t\tthis.sheenRoughnessMap = source.sheenRoughnessMap;\n\n\t\tthis.transmission = source.transmission;\n\t\tthis.transmissionMap = source.transmissionMap;\n\n\t\tthis.thickness = source.thickness;\n\t\tthis.thicknessMap = source.thicknessMap;\n\t\tthis.attenuationDistance = source.attenuationDistance;\n\t\tthis.attenuationColor.copy( source.attenuationColor );\n\n\t\tthis.specularIntensity = source.specularIntensity;\n\t\tthis.specularIntensityMap = source.specularIntensityMap;\n\t\tthis.specularColor.copy( source.specularColor );\n\t\tthis.specularColorMap = source.specularColorMap;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\nclass MeshPhongMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshPhongMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.specular = new Color( 0x111111 );\n\t\tthis.shininess = 30;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.specular.copy( source.specular );\n\t\tthis.shininess = source.shininess;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\nclass MeshToonMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.defines = { 'TOON': '' };\n\n\t\tthis.type = 'MeshToonMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\t\tthis.gradientMap = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\t\tthis.gradientMap = source.gradientMap;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshToonMaterial.prototype.isMeshToonMaterial = true;\n\nclass MeshNormalMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshNormalMaterial';\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\nclass MeshLambertMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'MeshLambertMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\nclass MeshMatcapMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.type = 'MeshMatcapMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.matcap = null;\n\n\t\tthis.map = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.matcap = source.matcap;\n\n\t\tthis.map = source.map;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nMeshMatcapMaterial.prototype.isMeshMatcapMaterial = true;\n\nclass LineDashedMaterial extends LineBasicMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LineDashedMaterial';\n\n\t\tthis.scale = 1;\n\t\tthis.dashSize = 3;\n\t\tthis.gapSize = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.scale = source.scale;\n\t\tthis.dashSize = source.dashSize;\n\t\tthis.gapSize = source.gapSize;\n\n\t\treturn this;\n\n\t}\n\n}\n\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\nconst materialLib = {\n\tShadowMaterial,\n\tSpriteMaterial,\n\tRawShaderMaterial,\n\tShaderMaterial,\n\tPointsMaterial,\n\tMeshPhysicalMaterial,\n\tMeshStandardMaterial,\n\tMeshPhongMaterial,\n\tMeshToonMaterial,\n\tMeshNormalMaterial,\n\tMeshLambertMaterial,\n\tMeshDepthMaterial,\n\tMeshDistanceMaterial,\n\tMeshBasicMaterial,\n\tMeshMatcapMaterial,\n\tLineDashedMaterial,\n\tLineBasicMaterial,\n\tMaterial\n};\n\nMaterial.fromType = function ( type ) {\n\n\treturn new materialLib[ type ]();\n\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 = 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 = 0, referenceClip = targetClip, fps = 30 ) {\n\n\t\tif ( fps <= 0 ) fps = 30;\n\n\t\tconst numTracks = referenceClip.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\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t\t} );\n\n\t\t\tif ( targetTrack === undefined ) continue;\n\n\t\t\tlet referenceOffset = 0;\n\t\t\tconst referenceValueSize = referenceTrack.getValueSize();\n\n\t\t\tif ( referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\t\treferenceOffset = referenceValueSize / 3;\n\n\t\t\t}\n\n\t\t\tlet targetOffset = 0;\n\t\t\tconst targetValueSize = targetTrack.getValueSize();\n\n\t\t\tif ( targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\t\ttargetOffset = targetValueSize / 3;\n\n\t\t\t}\n\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\tconst startIndex = referenceOffset;\n\t\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex, endIndex );\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 * referenceValueSize + referenceOffset;\n\t\t\t\tconst endIndex = startIndex + referenceValueSize - referenceOffset;\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex, endIndex );\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\tconst startIndex = referenceOffset;\n\t\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( interpolant.resultBuffer, startIndex, endIndex );\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().fromArray( referenceValue ).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 * targetValueSize + targetOffset;\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\tconst valueEnd = targetValueSize - targetOffset * 2;\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 < valueEnd; ++ 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 */\n\nclass Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tthis.parameterPositions = parameterPositions;\n\t\tthis._cachedIndex = 0;\n\n\t\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\t\tthis.sampleValues = sampleValues;\n\t\tthis.valueSize = sampleSize;\n\n\t\tthis.settings = null;\n\t\tthis.DefaultSettings_ = {};\n\n\t}\n\n\tevaluate( t ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet i1 = this._cachedIndex,\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\tgetSettings_() {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t}\n\n\tcopySampleValue_( 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_( /* 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_( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n}\n\n// ALIAS DEFINITIONS\n\nInterpolant.prototype.beforeStart_ = Interpolant.prototype.copySampleValue_;\nInterpolant.prototype.afterEnd_ = Interpolant.prototype.copySampleValue_;\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\nclass CubicInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t\tthis._weightPrev = - 0;\n\t\tthis._offsetPrev = - 0;\n\t\tthis._weightNext = - 0;\n\t\tthis._offsetNext = - 0;\n\n\t\tthis.DefaultSettings_ = {\n\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\n\t\t};\n\n\t}\n\n\tintervalChanged_( i1, t0, t1 ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet iPrev = 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_( 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\nclass LinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( 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 preceding\n * the parameter.\n */\n\nclass DiscreteInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n}\n\nclass KeyframeTrack {\n\n\tconstructor( name, times, values, interpolation ) {\n\n\t\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\t\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\t\tthis.name = name;\n\n\t\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\n\t\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\n\n\t\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n\t}\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\tstatic toJSON( 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 !== this.toJSON ) {\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\tInterpolantFactoryMethodDiscrete( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodSmooth( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tsetInterpolation( 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() {\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() {\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( 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( 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( 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() {\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() {\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 !== times[ 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() {\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\nKeyframeTrack.prototype.TimeBufferType = Float32Array;\nKeyframeTrack.prototype.ValueBufferType = Float32Array;\nKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\n\n/**\n * A Track of Boolean keyframe values.\n */\nclass BooleanKeyframeTrack extends KeyframeTrack {}\n\nBooleanKeyframeTrack.prototype.ValueTypeName = 'bool';\nBooleanKeyframeTrack.prototype.ValueBufferType = Array;\nBooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of keyframe values that represent color.\n */\nclass ColorKeyframeTrack extends KeyframeTrack {}\n\nColorKeyframeTrack.prototype.ValueTypeName = 'color';\n\n/**\n * A Track of numeric keyframe values.\n */\nclass NumberKeyframeTrack extends KeyframeTrack {}\n\nNumberKeyframeTrack.prototype.ValueTypeName = 'number';\n\n/**\n * Spherical linear unit quaternion interpolant.\n */\n\nclass QuaternionLinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( 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 * A Track of quaternion keyframe values.\n */\nclass QuaternionKeyframeTrack extends KeyframeTrack {\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n}\n\nQuaternionKeyframeTrack.prototype.ValueTypeName = 'quaternion';\n// ValueBufferType is inherited\nQuaternionKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\nQuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track that interpolates Strings\n */\nclass StringKeyframeTrack extends KeyframeTrack {}\n\nStringKeyframeTrack.prototype.ValueTypeName = 'string';\nStringKeyframeTrack.prototype.ValueBufferType = Array;\nStringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of vectored keyframe values.\n */\nclass VectorKeyframeTrack extends KeyframeTrack {}\n\nVectorKeyframeTrack.prototype.ValueTypeName = 'vector';\n\nclass AnimationClip {\n\n\tconstructor( name, duration = - 1, tracks, blendMode = NormalAnimationBlendMode ) {\n\n\t\tthis.name = name;\n\t\tthis.tracks = tracks;\n\t\tthis.duration = duration;\n\t\tthis.blendMode = blendMode;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// this means it should figure out its duration by scanning the tracks\n\t\tif ( this.duration < 0 ) {\n\n\t\t\tthis.resetDuration();\n\n\t\t}\n\n\t}\n\n\n\tstatic parse( 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\tconst clip = new this( json.name, json.duration, tracks, json.blendMode );\n\t\tclip.uuid = json.uuid;\n\n\t\treturn clip;\n\n\t}\n\n\tstatic toJSON( 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\tstatic CreateFromMorphTargetSequence( 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 this( name, - 1, tracks );\n\n\t}\n\n\tstatic findByName( 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\tstatic CreateClipsFromMorphTargetSequences( 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( this.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\tstatic parseAnimation( 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;\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 this( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n\tresetDuration() {\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() {\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() {\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() {\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() {\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 this.constructor( this.name, this.duration, tracks, this.blendMode );\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.constructor.toJSON( this );\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\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\nclass LoadingManager {\n\n\tconstructor( onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tlet isLoading = false;\n\t\tlet itemsLoaded = 0;\n\t\tlet itemsTotal = 0;\n\t\tlet urlModifier = undefined;\n\t\tconst handlers = [];\n\n\t\t// Refer to #5689 for the reason why we don't set .onStart\n\t\t// in the constructor\n\n\t\tthis.onStart = undefined;\n\t\tthis.onLoad = onLoad;\n\t\tthis.onProgress = onProgress;\n\t\tthis.onError = onError;\n\n\t\tthis.itemStart = function ( url ) {\n\n\t\t\titemsTotal ++;\n\n\t\t\tif ( isLoading === false ) {\n\n\t\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tisLoading = true;\n\n\t\t};\n\n\t\tthis.itemEnd = function ( url ) {\n\n\t\t\titemsLoaded ++;\n\n\t\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\t\tisLoading = false;\n\n\t\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\t\tscope.onLoad();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.itemError = function ( url ) {\n\n\t\t\tif ( scope.onError !== undefined ) {\n\n\t\t\t\tscope.onError( url );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.resolveURL = function ( url ) {\n\n\t\t\tif ( urlModifier ) {\n\n\t\t\t\treturn urlModifier( url );\n\n\t\t\t}\n\n\t\t\treturn url;\n\n\t\t};\n\n\t\tthis.setURLModifier = function ( transform ) {\n\n\t\t\turlModifier = transform;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.addHandler = function ( regex, loader ) {\n\n\t\t\thandlers.push( regex, loader );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.removeHandler = function ( regex ) {\n\n\t\t\tconst index = handlers.indexOf( regex );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\thandlers.splice( index, 2 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.getHandler = function ( file ) {\n\n\t\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\t\tconst regex = handlers[ i ];\n\t\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\t\treturn loader;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t};\n\n\t}\n\n}\n\nconst DefaultLoadingManager = new LoadingManager();\n\nclass Loader {\n\n\tconstructor( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t\tthis.crossOrigin = 'anonymous';\n\t\tthis.withCredentials = false;\n\t\tthis.path = '';\n\t\tthis.resourcePath = '';\n\t\tthis.requestHeader = {};\n\n\t}\n\n\tload( /* url, onLoad, onProgress, onError */ ) {}\n\n\tloadAsync( 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( /* data */ ) {}\n\n\tsetCrossOrigin( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t}\n\n\tsetWithCredentials( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t}\n\n\tsetPath( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t}\n\n\tsetResourcePath( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t}\n\n\tsetRequestHeader( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n}\n\nconst loading = {};\n\nclass FileLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( 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 cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tthis.manager.itemStart( url );\n\n\t\t\tsetTimeout( () => {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tthis.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// Initialise array for duplicate requests\n\t\tloading[ url ] = [];\n\n\t\tloading[ url ].push( {\n\t\t\tonLoad: onLoad,\n\t\t\tonProgress: onProgress,\n\t\t\tonError: onError,\n\t\t} );\n\n\t\t// create request\n\t\tconst req = new Request( url, {\n\t\t\theaders: new Headers( this.requestHeader ),\n\t\t\tcredentials: this.withCredentials ? 'include' : 'same-origin',\n\t\t\t// An abort controller could be added within a future PR\n\t\t} );\n\n\t\t// record states ( avoid data race )\n\t\tconst mimeType = this.mimeType;\n\t\tconst responseType = this.responseType;\n\n\t\t// start the fetch\n\t\tfetch( req )\n\t\t\t.then( response => {\n\n\t\t\t\tif ( response.status === 200 || response.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 ( response.status === 0 ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Workaround: Checking if response.body === undefined for Alipay browser #23548\n\n\t\t\t\t\tif ( typeof ReadableStream === 'undefined' || response.body === undefined || response.body.getReader === undefined ) {\n\n\t\t\t\t\t\treturn response;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\t\tconst reader = response.body.getReader();\n\t\t\t\t\tconst contentLength = response.headers.get( 'Content-Length' );\n\t\t\t\t\tconst total = contentLength ? parseInt( contentLength ) : 0;\n\t\t\t\t\tconst lengthComputable = total !== 0;\n\t\t\t\t\tlet loaded = 0;\n\n\t\t\t\t\t// periodically read data into the new stream tracking while download progress\n\t\t\t\t\tconst stream = new ReadableStream( {\n\t\t\t\t\t\tstart( controller ) {\n\n\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\tfunction readData() {\n\n\t\t\t\t\t\t\t\treader.read().then( ( { done, value } ) => {\n\n\t\t\t\t\t\t\t\t\tif ( done ) {\n\n\t\t\t\t\t\t\t\t\t\tcontroller.close();\n\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\tloaded += value.byteLength;\n\n\t\t\t\t\t\t\t\t\t\tconst event = new ProgressEvent( 'progress', { lengthComputable, loaded, total } );\n\t\t\t\t\t\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\t\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tcontroller.enqueue( value );\n\t\t\t\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} );\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\treturn new Response( stream );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow Error( `fetch for \"${response.url}\" responded with ${response.status}: ${response.statusText}` );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( response => {\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\n\t\t\t\t\t\treturn response.arrayBuffer();\n\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\treturn response.blob();\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\treturn response.text()\n\t\t\t\t\t\t\t.then( text => {\n\n\t\t\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\t\t\treturn parser.parseFromString( text, mimeType );\n\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\treturn response.json();\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( mimeType === undefined ) {\n\n\t\t\t\t\t\t\treturn response.text();\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// sniff encoding\n\t\t\t\t\t\t\tconst re = /charset=\"?([^;\"\\s]*)\"?/i;\n\t\t\t\t\t\t\tconst exec = re.exec( mimeType );\n\t\t\t\t\t\t\tconst label = exec && exec[ 1 ] ? exec[ 1 ].toLowerCase() : undefined;\n\t\t\t\t\t\t\tconst decoder = new TextDecoder( label );\n\t\t\t\t\t\t\treturn response.arrayBuffer().then( ab => decoder.decode( ab ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( data => {\n\n\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\tCache.add( url, data );\n\n\t\t\t\tconst callbacks = loading[ url ];\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.onLoad ) callback.onLoad( data );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.catch( err => {\n\n\t\t\t\t// Abort errors and other errors are handled the same\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tif ( callbacks === undefined ) {\n\n\t\t\t\t\t// When onLoad was called and url was deleted in `loading`\n\t\t\t\t\tthis.manager.itemError( url );\n\t\t\t\t\tthrow err;\n\n\t\t\t\t}\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( err );\n\n\t\t\t\t}\n\n\t\t\t\tthis.manager.itemError( url );\n\n\t\t\t} )\n\t\t\t.finally( () => {\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\tthis.manager.itemStart( url );\n\n\t}\n\n\tsetResponseType( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t}\n\n\tsetMimeType( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n}\n\nclass AnimationLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( 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.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\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( 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 * 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\nclass CompressedTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\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 ) texture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.image = images;\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\ttexture.image = images;\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\nclass ImageLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( 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 = createElementNS( 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\tremoveEventListeners();\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\tremoveEventListeners();\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\tfunction removeEventListeners() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.slice( 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\nclass CubeTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( 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 * 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\nclass DataTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( 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.setRequestHeader( this.requestHeader );\n\t\tloader.setPath( this.path );\n\t\tloader.setWithCredentials( scope.withCredentials );\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.encoding !== undefined ) {\n\n\t\t\t\ttexture.encoding = texData.encoding;\n\n\t\t\t}\n\n\t\t\tif ( texData.flipY !== undefined ) {\n\n\t\t\t\ttexture.flipY = texData.flipY;\n\n\t\t\t}\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\tif ( texData.generateMipmaps !== undefined ) {\n\n\t\t\t\ttexture.generateMipmaps = texData.generateMipmaps;\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\nclass TextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( 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\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\nclass Light extends Object3D {\n\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Light';\n\n\t\tthis.color = new Color( color );\n\t\tthis.intensity = intensity;\n\n\t}\n\n\tdispose() {\n\n\t\t// Empty here in base class; some subclasses override.\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( 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( meta ) {\n\n\t\tconst data = super.toJSON( 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\nLight.prototype.isLight = true;\n\nclass HemisphereLight extends Light {\n\n\tconstructor( skyColor, groundColor, intensity ) {\n\n\t\tsuper( skyColor, intensity );\n\n\t\tthis.type = 'HemisphereLight';\n\n\t\tthis.position.copy( Object3D.DefaultUp );\n\t\tthis.updateMatrix();\n\n\t\tthis.groundColor = new Color( groundColor );\n\n\t}\n\n\tcopy( 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\nHemisphereLight.prototype.isHemisphereLight = true;\n\nconst _projScreenMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld$1 = /*@__PURE__*/ new Vector3();\nconst _lookTarget$1 = /*@__PURE__*/ new Vector3();\n\nclass LightShadow {\n\n\tconstructor( camera ) {\n\n\t\tthis.camera = camera;\n\n\t\tthis.bias = 0;\n\t\tthis.normalBias = 0;\n\t\tthis.radius = 1;\n\t\tthis.blurSamples = 8;\n\n\t\tthis.mapSize = new Vector2( 512, 512 );\n\n\t\tthis.map = null;\n\t\tthis.mapPass = null;\n\t\tthis.matrix = new Matrix4();\n\n\t\tthis.autoUpdate = true;\n\t\tthis.needsUpdate = false;\n\n\t\tthis._frustum = new Frustum();\n\t\tthis._frameExtents = new Vector2( 1, 1 );\n\n\t\tthis._viewportCount = 1;\n\n\t\tthis._viewports = [\n\n\t\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t\t];\n\n\t}\n\n\tgetViewportCount() {\n\n\t\treturn this._viewportCount;\n\n\t}\n\n\tgetFrustum() {\n\n\t\treturn this._frustum;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst shadowCamera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\t_lightPositionWorld$1.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( _lightPositionWorld$1 );\n\n\t\t_lookTarget$1.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( _lookTarget$1 );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\t_projScreenMatrix$1.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix$1 );\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( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t}\n\n\tgetFrameExtents() {\n\n\t\treturn this._frameExtents;\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this.map ) {\n\n\t\t\tthis.map.dispose();\n\n\t\t}\n\n\t\tif ( this.mapPass ) {\n\n\t\t\tthis.mapPass.dispose();\n\n\t\t}\n\n\t}\n\n\tcopy( 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() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\ttoJSON() {\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\nclass SpotLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n\t\tthis.focus = 1;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = RAD2DEG * 2 * light.angle * this.focus;\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\tsuper.updateMatrices( light );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.focus = source.focus;\n\n\t\treturn this;\n\n\t}\n\n}\n\nSpotLightShadow.prototype.isSpotLightShadow = true;\n\nclass SpotLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 1 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'SpotLight';\n\n\t\tthis.position.copy( Object3D.DefaultUp );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.distance = distance;\n\t\tthis.angle = angle;\n\t\tthis.penumbra = penumbra;\n\t\tthis.decay = decay; // for physically correct lights, should be 2.\n\n\t\tthis.shadow = new SpotLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// by convention for a spotlight, luminous power (lm) = π * luminous intensity (cd)\n\t\treturn this.intensity * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / Math.PI;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( 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\nSpotLight.prototype.isSpotLight = true;\n\nconst _projScreenMatrix = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld = /*@__PURE__*/ new Vector3();\nconst _lookTarget = /*@__PURE__*/ new Vector3();\n\nclass PointLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\t\tthis._frameExtents = new Vector2( 4, 2 );\n\n\t\tthis._viewportCount = 6;\n\n\t\tthis._viewports = [\n\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t// following orientation:\n\t\t\t//\n\t\t\t// xzXZ\n\t\t\t// y Y\n\t\t\t//\n\t\t\t// X - Positive x direction\n\t\t\t// x - Negative x direction\n\t\t\t// Y - Positive y direction\n\t\t\t// y - Negative y direction\n\t\t\t// Z - Positive z direction\n\t\t\t// z - Negative z direction\n\n\t\t\t// positive X\n\t\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t\t// negative X\n\t\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t\t// positive Z\n\t\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t\t// negative Z\n\t\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t\t// positive Y\n\t\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t\t// negative Y\n\t\t\tnew Vector4( 1, 0, 1, 1 )\n\t\t];\n\n\t\tthis._cubeDirections = [\n\t\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t\t];\n\n\t\tthis._cubeUps = [\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t\t];\n\n\t}\n\n\tupdateMatrices( light, viewportIndex = 0 ) {\n\n\t\tconst camera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( far !== camera.far ) {\n\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( _lightPositionWorld );\n\n\t\t_lookTarget.copy( camera.position );\n\t\t_lookTarget.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\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t}\n\n}\n\nPointLightShadow.prototype.isPointLightShadow = true;\n\nclass PointLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, decay = 1 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'PointLight';\n\n\t\tthis.distance = distance;\n\t\tthis.decay = decay; // for physically correct lights, should be 2.\n\n\t\tthis.shadow = new PointLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// for an isotropic light source, luminous power (lm) = 4 π luminous intensity (cd)\n\t\treturn this.intensity * 4 * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( 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\nPointLight.prototype.isPointLight = true;\n\nclass DirectionalLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n\t}\n\n}\n\nDirectionalLightShadow.prototype.isDirectionalLightShadow = true;\n\nclass DirectionalLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'DirectionalLight';\n\n\t\tthis.position.copy( Object3D.DefaultUp );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.shadow = new DirectionalLightShadow();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.target = source.target.clone();\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nDirectionalLight.prototype.isDirectionalLight = true;\n\nclass AmbientLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'AmbientLight';\n\n\t}\n\n}\n\nAmbientLight.prototype.isAmbientLight = true;\n\nclass RectAreaLight extends Light {\n\n\tconstructor( color, intensity, width = 10, height = 10 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.type = 'RectAreaLight';\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in nits)\n\t\treturn this.intensity * this.width * this.height * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in nits) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( this.width * this.height * Math.PI );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( 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( meta ) {\n\n\t\tconst data = super.toJSON( 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\nRectAreaLight.prototype.isRectAreaLight = true;\n\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\nclass SphericalHarmonics3 {\n\n\tconstructor() {\n\n\t\tthis.coefficients = [];\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients.push( new Vector3() );\n\n\t\t}\n\n\t}\n\n\tset( 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() {\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( 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( 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( 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( 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( 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( 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( 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( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tfromArray( array, 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( array = [], 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\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tstatic getBasisAt( 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\nSphericalHarmonics3.prototype.isSphericalHarmonics3 = true;\n\nclass LightProbe extends Light {\n\n\tconstructor( sh = new SphericalHarmonics3(), intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tthis.sh = sh;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t}\n\n\tfromJSON( 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( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n}\n\nLightProbe.prototype.isLightProbe = true;\n\nclass MaterialLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\t\tthis.textures = {};\n\n\t}\n\n\tload( 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.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\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( 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 = Material.fromType( 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 !== 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 = json.sheen;\n\t\tif ( json.sheenColor !== undefined ) material.sheenColor = new Color().setHex( json.sheenColor );\n\t\tif ( json.sheenRoughness !== undefined ) material.sheenRoughness = json.sheenRoughness;\n\t\tif ( json.emissive !== undefined && material.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined && material.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.specularIntensity !== undefined ) material.specularIntensity = json.specularIntensity;\n\t\tif ( json.specularColor !== undefined && material.specularColor !== undefined ) material.specularColor.setHex( json.specularColor );\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.transmission !== undefined ) material.transmission = json.transmission;\n\t\tif ( json.thickness !== undefined ) material.thickness = json.thickness;\n\t\tif ( json.attenuationDistance !== undefined ) material.attenuationDistance = json.attenuationDistance;\n\t\tif ( json.attenuationColor !== undefined && material.attenuationColor !== undefined ) material.attenuationColor.setHex( json.attenuationColor );\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.shadowSide !== undefined ) material.shadowSide = json.shadowSide;\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.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.alphaToCoverage !== undefined ) material.alphaToCoverage = json.alphaToCoverage;\n\t\tif ( json.premultipliedAlpha !== undefined ) material.premultipliedAlpha = json.premultipliedAlpha;\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\t\t\t\t\t\tbreak;\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\t\tif ( json.specularIntensityMap !== undefined ) material.specularIntensityMap = getTexture( json.specularIntensityMap );\n\t\tif ( json.specularColorMap !== undefined ) material.specularColorMap = getTexture( json.specularColorMap );\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\tif ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );\n\t\tif ( json.thicknessMap !== undefined ) material.thicknessMap = getTexture( json.thicknessMap );\n\n\t\tif ( json.sheenColorMap !== undefined ) material.sheenColorMap = getTexture( json.sheenColorMap );\n\t\tif ( json.sheenRoughnessMap !== undefined ) material.sheenRoughnessMap = getTexture( json.sheenRoughnessMap );\n\n\t\treturn material;\n\n\t}\n\n\tsetTextures( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n}\n\nclass LoaderUtils {\n\n\tstatic decodeText( 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\tstatic extractUrlBase( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.slice( 0, index + 1 );\n\n\t}\n\n\tstatic resolveURL( url, path ) {\n\n\t\t// Invalid URL\n\t\tif ( typeof url !== 'string' || url === '' ) return '';\n\n\t\t// Host Relative URL\n\t\tif ( /^https?:\\/\\//i.test( path ) && /^\\//.test( url ) ) {\n\n\t\t\tpath = path.replace( /(^https?:\\/\\/[^\\/]+).*/i, '$1' );\n\n\t\t}\n\n\t\t// Absolute URL http://,https://,//\n\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) return url;\n\n\t\t// Data URI\n\t\tif ( /^data:.*,.*$/i.test( url ) ) return url;\n\n\t\t// Blob URL\n\t\tif ( /^blob:.*$/i.test( url ) ) return url;\n\n\t\t// Relative URL\n\t\treturn path + url;\n\n\t}\n\n}\n\nclass InstancedBufferGeometry extends BufferGeometry {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'InstancedBufferGeometry';\n\t\tthis.instanceCount = Infinity;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON( 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\nInstancedBufferGeometry.prototype.isInstancedBufferGeometry = true;\n\nclass BufferGeometryLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( 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.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\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( 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 = getTypedArray( 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 = getTypedArray( 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 = getTypedArray( 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\tif ( attribute.usage !== undefined ) bufferAttribute.setUsage( attribute.usage );\n\n\t\t\tif ( attribute.updateRange !== undefined ) {\n\n\t\t\t\tbufferAttribute.updateRange.offset = attribute.updateRange.offset;\n\t\t\t\tbufferAttribute.updateRange.count = attribute.updateRange.count;\n\n\t\t\t}\n\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 = getTypedArray( 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\nclass ObjectLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( 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( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\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\tasync loadAsync( url, onProgress ) {\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( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tconst text = await loader.loadAsync( url, onProgress );\n\n\t\tconst json = JSON.parse( text );\n\n\t\tconst metadata = json.metadata;\n\n\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\tthrow new Error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\n\t\t}\n\n\t\treturn await scope.parseAsync( json );\n\n\t}\n\n\tparse( json, onLoad ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( 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, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\t//\n\n\t\tif ( onLoad !== undefined ) {\n\n\t\t\tlet hasImages = false;\n\n\t\t\tfor ( const uuid in images ) {\n\n\t\t\t\tif ( images[ uuid ] instanceof HTMLImageElement ) {\n\n\t\t\t\t\thasImages = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasImages === false ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tasync parseAsync( json ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = await this.parseImagesAsync( json.images );\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, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\treturn object;\n\n\t}\n\n\tparseShapes( 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\tparseSkeletons( json, object ) {\n\n\t\tconst skeletons = {};\n\t\tconst bones = {};\n\n\t\t// generate bone lookup table\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isBone ) bones[ child.uuid ] = child;\n\n\t\t} );\n\n\t\t// create skeletons\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 skeleton = new Skeleton().fromJSON( json[ i ], bones );\n\n\t\t\t\tskeletons[ skeleton.uuid ] = skeleton;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn skeletons;\n\n\t}\n\n\tparseGeometries( json, shapes ) {\n\n\t\tconst geometries = {};\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 '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: The legacy Geometry type is no longer supported.' );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( data.type in Geometries ) {\n\n\t\t\t\t\t\t\tgeometry = Geometries[ data.type ].fromJSON( data, shapes );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( `THREE.ObjectLoader: Unsupported geometry type \"${ data.type }\"` );\n\n\t\t\t\t\t\t}\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( 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( json ) {\n\n\t\tconst animations = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\t\tanimations[ clip.uuid ] = clip;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n\tparseImages( 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\tfunction deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn loadImage( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\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\tconst imageArray = [];\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 deserializedImage = deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\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\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\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\tasync parseImagesAsync( json ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tasync function deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn await loader.loadAsync( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tloader = new ImageLoader( this.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\tconst imageArray = [];\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 deserializedImage = await deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\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\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = await deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\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( 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\tconst source = images[ data.image ];\n\t\t\t\tconst image = source.data;\n\n\t\t\t\tlet texture;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture();\n\n\t\t\t\t\tif ( image.length === 6 ) texture.needsUpdate = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( image && image.data ) {\n\n\t\t\t\t\t\ttexture = new DataTexture();\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttexture = new Texture();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( image ) texture.needsUpdate = true; // textures can have undefined image data\n\n\t\t\t\t}\n\n\t\t\t\ttexture.source = source;\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\tif ( data.userData !== undefined ) texture.userData = data.userData;\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( data, geometries, materials, textures, animations ) {\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\tfunction getTexture( uuid ) {\n\n\t\t\tif ( textures[ uuid ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined texture', uuid );\n\n\t\t\t}\n\n\t\t\treturn textures[ uuid ];\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} else {\n\n\t\t\t\t\t\tobject.background = getTexture( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.environment !== undefined ) {\n\n\t\t\t\t\tobject.environment = getTexture( data.environment );\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\tgeometry = getGeometry( data.geometry );\n\t\t\t \tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\tif ( data.bindMode !== undefined ) object.bindMode = data.bindMode;\n\t\t\t\tif ( data.bindMatrix !== undefined ) object.bindMatrix.fromArray( data.bindMatrix );\n\t\t\t\tif ( data.skeleton !== undefined ) object.skeleton = data.skeleton;\n\n\t\t\t\tbreak;\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\t\t\t\tconst instanceColor = data.instanceColor;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new InstancedBufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\t\t\t\tif ( instanceColor !== undefined ) object.instanceColor = new InstancedBufferAttribute( new Float32Array( instanceColor.array ), instanceColor.itemSize );\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 ) );\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\tcase 'Bone':\n\n\t\t\t\tobject = new Bone();\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, textures, animations ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.animations !== undefined ) {\n\n\t\t\tconst objectAnimations = data.animations;\n\n\t\t\tfor ( let i = 0; i < objectAnimations.length; i ++ ) {\n\n\t\t\t\tconst uuid = objectAnimations[ i ];\n\n\t\t\t\tobject.animations.push( animations[ uuid ] );\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\tbindSkeletons( object, skeletons ) {\n\n\t\tif ( Object.keys( skeletons ).length === 0 ) return;\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isSkinnedMesh === true && child.skeleton !== undefined ) {\n\n\t\t\t\tconst skeleton = skeletons[ child.skeleton ];\n\n\t\t\t\tif ( skeleton === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tchild.bind( skeleton, child.bindMatrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\t/* DEPRECATED */\n\n\tsetTexturePath( 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\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping\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\nclass ImageBitmapLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t\t}\n\n\t\tif ( typeof fetch === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t\t}\n\n\t\tthis.options = { premultiplyAlpha: 'none' };\n\n\t}\n\n\tsetOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t}\n\n\tload( 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\tconst fetchOptions = {};\n\t\tfetchOptions.credentials = ( this.crossOrigin === 'anonymous' ) ? 'same-origin' : 'include';\n\t\tfetchOptions.headers = this.requestHeader;\n\n\t\tfetch( url, fetchOptions ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, Object.assign( scope.options, { colorSpaceConversion: 'none' } ) );\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\nImageBitmapLoader.prototype.isImageBitmapLoader = true;\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\nclass AudioLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\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\nclass HemisphereLightProbe extends LightProbe {\n\n\tconstructor( skyColor, groundColor, intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tconst color1 = new Color().set( skyColor );\n\t\tconst color2 = new Color().set( groundColor );\n\n\t\tconst sky = new Vector3( color1.r, color1.g, color1.b );\n\t\tconst ground = new Vector3( color2.r, color2.g, color2.b );\n\n\t\t// without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );\n\t\tconst c0 = Math.sqrt( Math.PI );\n\t\tconst c1 = c0 * Math.sqrt( 0.75 );\n\n\t\tthis.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 );\n\t\tthis.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 );\n\n\t}\n\n}\n\nHemisphereLightProbe.prototype.isHemisphereLightProbe = true;\n\nclass AmbientLightProbe extends LightProbe {\n\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tconst color1 = new Color().set( color );\n\n\t\t// without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI );\n\t\tthis.sh.coefficients[ 0 ].set( color1.r, color1.g, color1.b ).multiplyScalar( 2 * Math.sqrt( Math.PI ) );\n\n\t}\n\n}\n\nAmbientLightProbe.prototype.isAmbientLightProbe = true;\n\nconst _eyeRight = /*@__PURE__*/ new Matrix4();\nconst _eyeLeft = /*@__PURE__*/ new Matrix4();\nconst _projectionMatrix = /*@__PURE__*/ new Matrix4();\n\nclass StereoCamera {\n\n\tconstructor() {\n\n\t\tthis.type = 'StereoCamera';\n\n\t\tthis.aspect = 1;\n\n\t\tthis.eyeSep = 0.064;\n\n\t\tthis.cameraL = new PerspectiveCamera();\n\t\tthis.cameraL.layers.enable( 1 );\n\t\tthis.cameraL.matrixAutoUpdate = false;\n\n\t\tthis.cameraR = new PerspectiveCamera();\n\t\tthis.cameraR.layers.enable( 2 );\n\t\tthis.cameraR.matrixAutoUpdate = false;\n\n\t\tthis._cache = {\n\t\t\tfocus: null,\n\t\t\tfov: null,\n\t\t\taspect: null,\n\t\t\tnear: null,\n\t\t\tfar: null,\n\t\t\tzoom: null,\n\t\t\teyeSep: null\n\t\t};\n\n\t}\n\n\tupdate( 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\t_projectionMatrix.copy( camera.projectionMatrix );\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( 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\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.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\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.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\nclass Clock {\n\n\tconstructor( autoStart = true ) {\n\n\t\tthis.autoStart = autoStart;\n\n\t\tthis.startTime = 0;\n\t\tthis.oldTime = 0;\n\t\tthis.elapsedTime = 0;\n\n\t\tthis.running = false;\n\n\t}\n\n\tstart() {\n\n\t\tthis.startTime = now();\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t}\n\n\tstop() {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t}\n\n\tgetElapsedTime() {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t}\n\n\tgetDelta() {\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 = 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\nfunction now() {\n\n\treturn ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n}\n\nconst _position$1 = /*@__PURE__*/ new Vector3();\nconst _quaternion$1 = /*@__PURE__*/ new Quaternion();\nconst _scale$1 = /*@__PURE__*/ new Vector3();\nconst _orientation$1 = /*@__PURE__*/ new Vector3();\n\nclass AudioListener extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'AudioListener';\n\n\t\tthis.context = AudioContext.getContext();\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( this.context.destination );\n\n\t\tthis.filter = null;\n\n\t\tthis.timeDelta = 0;\n\n\t\t// private\n\n\t\tthis._clock = new Clock();\n\n\t}\n\n\tgetInput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tremoveFilter() {\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() {\n\n\t\treturn this.filter;\n\n\t}\n\n\tsetFilter( 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() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetMasterVolume( 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( force ) {\n\n\t\tsuper.updateMatrixWorld( 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$1, _quaternion$1, _scale$1 );\n\n\t\t_orientation$1.set( 0, 0, - 1 ).applyQuaternion( _quaternion$1 );\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$1.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$1.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$1.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation$1.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$1.x, _position$1.y, _position$1.z );\n\t\t\tlistener.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass Audio extends Object3D {\n\n\tconstructor( listener ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Audio';\n\n\t\tthis.listener = listener;\n\t\tthis.context = listener.context;\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( listener.getInput() );\n\n\t\tthis.autoplay = false;\n\n\t\tthis.buffer = null;\n\t\tthis.detune = 0;\n\t\tthis.loop = false;\n\t\tthis.loopStart = 0;\n\t\tthis.loopEnd = 0;\n\t\tthis.offset = 0;\n\t\tthis.duration = undefined;\n\t\tthis.playbackRate = 1;\n\t\tthis.isPlaying = false;\n\t\tthis.hasPlaybackControl = true;\n\t\tthis.source = null;\n\t\tthis.sourceType = 'empty';\n\n\t\tthis._startedAt = 0;\n\t\tthis._progress = 0;\n\t\tthis._connected = false;\n\n\t\tthis.filters = [];\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tsetNodeSource( 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( 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( 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( 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( 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() {\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() {\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() {\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\tthis._connected = true;\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect() {\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\tthis._connected = false;\n\n\t\treturn this;\n\n\t}\n\n\tgetFilters() {\n\n\t\treturn this.filters;\n\n\t}\n\n\tsetFilters( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this._connected === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value.slice();\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value.slice();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetDetune( 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() {\n\n\t\treturn this.detune;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t}\n\n\tsetFilter( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t}\n\n\tsetPlaybackRate( 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() {\n\n\t\treturn this.playbackRate;\n\n\t}\n\n\tonEnded() {\n\n\t\tthis.isPlaying = false;\n\n\t}\n\n\tgetLoop() {\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( 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( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopEnd( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetVolume( 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\nconst _position = /*@__PURE__*/ new Vector3();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\nconst _scale = /*@__PURE__*/ new Vector3();\nconst _orientation = /*@__PURE__*/ new Vector3();\n\nclass PositionalAudio extends Audio {\n\n\tconstructor( listener ) {\n\n\t\tsuper( listener );\n\n\t\tthis.panner = this.context.createPanner();\n\t\tthis.panner.panningModel = 'HRTF';\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tdisconnect() {\n\n\t\tsuper.disconnect();\n\n\t\tthis.panner.disconnect( this.gain );\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.panner;\n\n\t}\n\n\tgetRefDistance() {\n\n\t\treturn this.panner.refDistance;\n\n\t}\n\n\tsetRefDistance( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetRolloffFactor() {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t}\n\n\tsetRolloffFactor( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetDistanceModel() {\n\n\t\treturn this.panner.distanceModel;\n\n\t}\n\n\tsetDistanceModel( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxDistance() {\n\n\t\treturn this.panner.maxDistance;\n\n\t}\n\n\tsetMaxDistance( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetDirectionalCone( 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( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion, _scale );\n\n\t\t_orientation.set( 0, 0, 1 ).applyQuaternion( _quaternion );\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.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position.x, _position.y, _position.z );\n\t\t\tpanner.setOrientation( _orientation.x, _orientation.y, _orientation.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass AudioAnalyser {\n\n\tconstructor( audio, fftSize = 2048 ) {\n\n\t\tthis.analyser = audio.context.createAnalyser();\n\t\tthis.analyser.fftSize = fftSize;\n\n\t\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\t\taudio.getOutput().connect( this.analyser );\n\n\t}\n\n\n\tgetFrequencyData() {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t}\n\n\tgetAverageFrequency() {\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\nclass PropertyMixer {\n\n\tconstructor( binding, typeName, valueSize ) {\n\n\t\tthis.binding = binding;\n\t\tthis.valueSize = valueSize;\n\n\t\tlet mixFunction,\n\t\t\tmixFunctionAdditive,\n\t\t\tsetIdentity;\n\n\t\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t\t//\n\t\t// interpolators can use .buffer as their .result\n\t\t// the data then goes to 'incoming'\n\t\t//\n\t\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t\t// the cumulative result and are compared to detect\n\t\t// changes\n\t\t//\n\t\t// 'orig' stores the original state of the property\n\t\t//\n\t\t// 'add' is used for additive cumulative results\n\t\t//\n\t\t// 'work' is optional and is only present for quaternion types. It is used\n\t\t// to store intermediate quaternion multiplication results\n\n\t\tswitch ( typeName ) {\n\n\t\t\tcase 'quaternion':\n\t\t\t\tmixFunction = this._slerp;\n\t\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\t\tthis._workIndex = 5;\n\t\t\t\tbreak;\n\n\t\t\tcase 'string':\n\t\t\tcase 'bool':\n\t\t\t\tmixFunction = this._select;\n\n\t\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t\t// additive is not relevant for non-numeric types\n\t\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tmixFunction = this._lerp;\n\t\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t\t}\n\n\t\tthis._mixBufferRegion = mixFunction;\n\t\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\t\tthis._setIdentity = setIdentity;\n\t\tthis._origIndex = 3;\n\t\tthis._addIndex = 4;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tthis.useCount = 0;\n\t\tthis.referenceCount = 0;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'accu'\n\taccumulate( 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( 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( 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() {\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() {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t}\n\n\t_setAdditiveIdentityNumeric() {\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() {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * this.valueSize + 3 ] = 1;\n\n\t}\n\n\t_setAdditiveIdentityOther() {\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( 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( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t}\n\n\t_slerpAdditive( 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( 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( 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// 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\nclass Composite {\n\n\tconstructor( targetGroup, path, optionalParsedPath ) {\n\n\t\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis._targetGroup = targetGroup;\n\t\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n\t}\n\n\tgetValue( 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( 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() {\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() {\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// Note: This class uses a State pattern on a per-method basis:\n// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n// prototype version of these methods with one that represents\n// the bound state. When the property is not found, the methods\n// become no-ops.\nclass PropertyBinding {\n\n\tconstructor( rootNode, path, parsedPath ) {\n\n\t\tthis.path = path;\n\t\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode;\n\n\t\tthis.rootNode = rootNode;\n\n\t\t// initial state of these methods that calls 'bind'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n\n\tstatic create( 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\tstatic sanitizeNodeName( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t}\n\n\tstatic parseTrackName( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( matches === null ) {\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\tstatic findNode( root, nodeName ) {\n\n\t\tif ( nodeName === undefined || 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\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable() {}\n\t_setValue_unavailable() {}\n\n\t// Getters\n\n\t_getValue_direct( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.targetObject[ this.propertyName ];\n\n\t}\n\n\t_getValue_array( buffer, offset ) {\n\n\t\tconst source = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t}\n\n\t}\n\n\t_getValue_arrayElement( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t}\n\n\t_getValue_toArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t}\n\n\t// Direct\n\n\t_setValue_direct( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// EntireArray\n\n\t_setValue_array( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t}\n\n\t_setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// ArrayElement\n\n\t_setValue_arrayElement( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// HasToFromArray\n\n\t_setValue_fromArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t}\n\n\t_setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t_getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t}\n\n\t_setValue_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() {\n\n\t\tlet targetObject = this.node;\n\t\tconst parsedPath = this.parsedPath;\n\n\t\tconst objectName = parsedPath.objectName;\n\t\tconst propertyName = parsedPath.propertyName;\n\t\tlet propertyIndex = 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() {\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\nPropertyBinding.Composite = Composite;\n\nPropertyBinding.prototype.BindingType = {\n\tDirect: 0,\n\tEntireArray: 1,\n\tArrayElement: 2,\n\tHasFromToArray: 3\n};\n\nPropertyBinding.prototype.Versioning = {\n\tNone: 0,\n\tNeedsUpdate: 1,\n\tMatrixWorldNeedsUpdate: 2\n};\n\nPropertyBinding.prototype.GetterByBindingType = [\n\n\tPropertyBinding.prototype._getValue_direct,\n\tPropertyBinding.prototype._getValue_array,\n\tPropertyBinding.prototype._getValue_arrayElement,\n\tPropertyBinding.prototype._getValue_toArray,\n\n];\n\nPropertyBinding.prototype.SetterByBindingTypeAndVersioning = [\n\n\t[\n\t\t// Direct\n\t\tPropertyBinding.prototype._setValue_direct,\n\t\tPropertyBinding.prototype._setValue_direct_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// EntireArray\n\n\t\tPropertyBinding.prototype._setValue_array,\n\t\tPropertyBinding.prototype._setValue_array_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// ArrayElement\n\t\tPropertyBinding.prototype._setValue_arrayElement,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// HasToFromArray\n\t\tPropertyBinding.prototype._setValue_fromArray,\n\t\tPropertyBinding.prototype._setValue_fromArray_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate,\n\n\t]\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\nclass AnimationObjectGroup {\n\n\tconstructor() {\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// cached objects followed by the active ones\n\t\tthis._objects = Array.prototype.slice.call( arguments );\n\n\t\tthis.nCachedObjects_ = 0; // threshold\n\t\t// note: read by PropertyBinding.Composite\n\n\t\tconst indices = {};\n\t\tthis._indicesByUUID = indices; // for bookkeeping\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t\t}\n\n\t\tthis._paths = []; // inside: string\n\t\tthis._parsedPaths = []; // inside: { we don't care, here }\n\t\tthis._bindings = []; // inside: Array< PropertyBinding >\n\t\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tobjects: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._objects.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tget bindingsPerObject() {\n\n\t\t\t\treturn scope._bindings.length;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tadd() {\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() {\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() {\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\tif ( lastIndex > 0 ) {\n\n\t\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\n\t\t\t\t\t}\n\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_( 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\tconst indicesByPath = this._bindingsIndicesByPath;\n\t\tlet index = indicesByPath[ path ];\n\t\tconst bindings = 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_( 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\nAnimationObjectGroup.prototype.isAnimationObjectGroup = true;\n\nclass AnimationAction {\n\n\tconstructor( mixer, clip, localRoot = null, blendMode = clip.blendMode ) {\n\n\t\tthis._mixer = mixer;\n\t\tthis._clip = clip;\n\t\tthis._localRoot = localRoot;\n\t\tthis.blendMode = blendMode;\n\n\t\tconst tracks = clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tinterpolants = new Array( nTracks );\n\n\t\tconst interpolantSettings = {\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\t\t};\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\t\tinterpolants[ i ] = interpolant;\n\t\t\tinterpolant.settings = interpolantSettings;\n\n\t\t}\n\n\t\tthis._interpolantSettings = interpolantSettings;\n\n\t\tthis._interpolants = interpolants; // bound by the mixer\n\n\t\t// inside: PropertyMixer (managed by the mixer)\n\t\tthis._propertyBindings = new Array( nTracks );\n\n\t\tthis._cacheIndex = null; // for the memory manager\n\t\tthis._byClipCacheIndex = null; // for the memory manager\n\n\t\tthis._timeScaleInterpolant = null;\n\t\tthis._weightInterpolant = null;\n\n\t\tthis.loop = LoopRepeat;\n\t\tthis._loopCount = - 1;\n\n\t\t// global mixer time when the action is to be started\n\t\t// it's set back to 'null' upon start of the action\n\t\tthis._startTime = null;\n\n\t\t// scaled local time of the action\n\t\t// gets clamped or wrapped to 0..clip.duration according to loop\n\t\tthis.time = 0;\n\n\t\tthis.timeScale = 1;\n\t\tthis._effectiveTimeScale = 1;\n\n\t\tthis.weight = 1;\n\t\tthis._effectiveWeight = 1;\n\n\t\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\t\tthis.paused = false; // true -> zero effective time scale\n\t\tthis.enabled = true; // false -> zero effective weight\n\n\t\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\t\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\t\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n\t}\n\n\t// State & Scheduling\n\n\tplay() {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t}\n\n\treset() {\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() {\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() {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t}\n\n\tstartAt( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoop( 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( 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() {\n\n\t\treturn this._effectiveWeight;\n\n\t}\n\n\tfadeIn( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t}\n\n\tfadeOut( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t}\n\n\tcrossFadeFrom( 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( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t}\n\n\tstopFading() {\n\n\t\tconst 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( 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() {\n\n\t\treturn this._effectiveTimeScale;\n\n\t}\n\n\tsetDuration( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\tsyncWith( 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( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t}\n\n\twarp( 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() {\n\n\t\tconst 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() {\n\n\t\treturn this._mixer;\n\n\t}\n\n\tgetClip() {\n\n\t\treturn this._clip;\n\n\t}\n\n\tgetRoot() {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t}\n\n\t// Interna\n\n\t_update( 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( 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( 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( 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( 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( 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\nclass AnimationMixer extends EventDispatcher {\n\n\tconstructor( root ) {\n\n\t\tsuper();\n\n\t\tthis._root = root;\n\t\tthis._initMemoryManager();\n\t\tthis._accuIndex = 0;\n\t\tthis.time = 0;\n\t\tthis.timeScale = 1.0;\n\n\t}\n\n\t_bindAction( 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\t++ binding.referenceCount;\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( 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( 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() {\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( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t}\n\n\t_addInactiveAction( 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( 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( 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( 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( 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( 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( 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( 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( 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() {\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( 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// 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( 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\tconst actionsForClip = this._actionsByClip[ clipUuid ];\n\t\tlet prototypeAction = 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( 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() {\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( 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( 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() {\n\n\t\treturn this._root;\n\n\t}\n\n\t// free all resources specific to a particular clip\n\tuncacheClip( 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( 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( 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\nAnimationMixer.prototype._controlInterpolantsResultBuffer = new Float32Array( 1 );\n\nclass Uniform {\n\n\tconstructor( value ) {\n\n\t\tif ( typeof value === 'string' ) {\n\n\t\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\t\tvalue = arguments[ 1 ];\n\n\t\t}\n\n\t\tthis.value = value;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n\t}\n\n}\n\nclass InstancedInterleavedBuffer extends InterleavedBuffer {\n\n\tconstructor( array, stride, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, stride );\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tconst ib = super.clone( data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tconst json = super.toJSON( data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n}\n\nInstancedInterleavedBuffer.prototype.isInstancedInterleavedBuffer = true;\n\nclass GLBufferAttribute {\n\n\tconstructor( buffer, type, itemSize, elementSize, count ) {\n\n\t\tthis.buffer = buffer;\n\t\tthis.type = type;\n\t\tthis.itemSize = itemSize;\n\t\tthis.elementSize = elementSize;\n\t\tthis.count = count;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetBuffer( buffer ) {\n\n\t\tthis.buffer = buffer;\n\n\t\treturn this;\n\n\t}\n\n\tsetType( type, elementSize ) {\n\n\t\tthis.type = type;\n\t\tthis.elementSize = elementSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetItemSize( itemSize ) {\n\n\t\tthis.itemSize = itemSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetCount( count ) {\n\n\t\tthis.count = count;\n\n\t\treturn this;\n\n\t}\n\n}\n\nGLBufferAttribute.prototype.isGLBufferAttribute = true;\n\nclass Raycaster {\n\n\tconstructor( origin, direction, near = 0, far = Infinity ) {\n\n\t\tthis.ray = new Ray( origin, direction );\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.camera = null;\n\t\tthis.layers = new Layers();\n\n\t\tthis.params = {\n\t\t\tMesh: {},\n\t\t\tLine: { threshold: 1 },\n\t\t\tLOD: {},\n\t\t\tPoints: { threshold: 1 },\n\t\t\tSprite: {}\n\t\t};\n\n\t}\n\n\tset( 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( coords, camera ) {\n\n\t\tif ( 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.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: ' + camera.type );\n\n\t\t}\n\n\t}\n\n\tintersectObject( object, recursive = true, intersects = [] ) {\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( objects, recursive = true, intersects = [] ) {\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\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\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\nclass Spherical {\n\n\tconstructor( radius = 1, phi = 0, theta = 0 ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi; // polar angle\n\t\tthis.theta = theta; // azimuthal angle\n\n\t\treturn this;\n\n\t}\n\n\tset( 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\tcopy( 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 between EPS and PI-EPS\n\tmakeSafe() {\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( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( 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( clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n */\n\nclass Cylindrical {\n\n\tconstructor( radius = 1, theta = 0, y = 0 ) {\n\n\t\tthis.radius = radius; // distance from the origin to a point in the x-z plane\n\t\tthis.theta = theta; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\t\tthis.y = y; // height above the x-z plane\n\n\t\treturn this;\n\n\t}\n\n\tset( 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\tcopy( 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( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( 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\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$4 = /*@__PURE__*/ new Vector2();\n\nclass Box2 {\n\n\tconstructor( min = new Vector2( + Infinity, + Infinity ), max = new Vector2( - Infinity, - Infinity ) ) {\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( 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( 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( center, size ) {\n\n\t\tconst halfSize = _vector$4.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() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( 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() {\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() {\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( target ) {\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( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( 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( 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( 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( 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( 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( 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\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( 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( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\tconst clampedPoint = _vector$4.copy( point ).clamp( this.min, this.max );\n\t\treturn clampedPoint.sub( point ).length();\n\n\t}\n\n\tintersect( 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( 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( 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( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nBox2.prototype.isBox2 = true;\n\nconst _startP = /*@__PURE__*/ new Vector3();\nconst _startEnd = /*@__PURE__*/ new Vector3();\n\nclass Line3 {\n\n\tconstructor( start = new Vector3(), end = new Vector3() ) {\n\n\t\tthis.start = start;\n\t\tthis.end = end;\n\n\t}\n\n\tset( 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\tcopy( 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( target ) {\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t}\n\n\tdelta( target ) {\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t}\n\n\tdistanceSq() {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t}\n\n\tdistance() {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tclosestPointToPointParameter( 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 = clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t}\n\n\tclosestPointToPoint( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tapplyMatrix4( 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( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$3 = /*@__PURE__*/ new Vector3();\n\nclass SpotLightHelper extends Object3D {\n\n\tconstructor( light, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst positions = [\n\t\t\t0, 0, 0, \t0, 0, 1,\n\t\t\t0, 0, 0, \t1, 0, 1,\n\t\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t\t0, 0, 0, \t0, 1, 1,\n\t\t\t0, 0, 0, \t0, - 1, 1\n\t\t];\n\n\t\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\t\tpositions.push(\n\t\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t\t);\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.cone = new LineSegments( geometry, material );\n\t\tthis.add( this.cone );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateMatrixWorld();\n\n\t\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\t_vector$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( _vector$3 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.cone.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.cone.material.color.copy( this.light.color );\n\n\t\t}\n\n\t}\n\n}\n\nconst _vector$2 = /*@__PURE__*/ new Vector3();\nconst _boneMatrix = /*@__PURE__*/ new Matrix4();\nconst _matrixWorldInv = /*@__PURE__*/ new Matrix4();\n\n\nclass SkeletonHelper extends LineSegments {\n\n\tconstructor( object ) {\n\n\t\tconst bones = getBoneList( object );\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst color1 = new Color( 0, 0, 1 );\n\t\tconst color2 = new Color( 0, 1, 0 );\n\n\t\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'SkeletonHelper';\n\t\tthis.isSkeletonHelper = true;\n\n\t\tthis.root = object;\n\t\tthis.bones = bones;\n\n\t\tthis.matrix = object.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst bones = this.bones;\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\t_matrixWorldInv.copy( this.root.matrixWorld ).invert();\n\n\t\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j + 1, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\tj += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object.isBone === true ) {\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\nclass PointLightHelper extends Mesh {\n\n\tconstructor( light, sphereSize, color ) {\n\n\t\tconst geometry = new SphereGeometry( sphereSize, 4, 2 );\n\t\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'PointLightHelper';\n\n\t\tthis.matrix = this.light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\n\t\t/*\n\t// TODO: delete this comment?\n\tconst distanceGeometry = new THREE.IcosahedronGeometry( 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\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\t/*\n\t\tconst d = this.light.distance;\n\n\t\tif ( d === 0.0 ) {\n\n\t\t\tthis.lightDistance.visible = false;\n\n\t\t} else {\n\n\t\t\tthis.lightDistance.visible = true;\n\t\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t\t}\n\t\t*/\n\n\t}\n\n}\n\nconst _vector$1 = /*@__PURE__*/ new Vector3();\nconst _color1 = /*@__PURE__*/ new Color();\nconst _color2 = /*@__PURE__*/ new Color();\n\nclass HemisphereLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tconst geometry = new OctahedronGeometry( size );\n\t\tgeometry.rotateY( Math.PI * 0.5 );\n\n\t\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\t\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\t\tconst colors = new Float32Array( position.count * 3 );\n\n\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\t\tthis.add( new Mesh( geometry, this.material ) );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tconst mesh = this.children[ 0 ];\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t\t_color1.copy( this.light.color );\n\t\t\t_color2.copy( this.light.groundColor );\n\n\t\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t\tcolors.needsUpdate = true;\n\n\t\t}\n\n\t\tmesh.lookAt( _vector$1.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t}\n\n}\n\nclass GridHelper extends LineSegments {\n\n\tconstructor( size = 10, divisions = 10, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst center = divisions / 2;\n\t\tconst step = size / divisions;\n\t\tconst halfSize = size / 2;\n\n\t\tconst vertices = [], colors = [];\n\n\t\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\t\tconst color = i === center ? color1 : color2;\n\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'GridHelper';\n\n\t}\n\n}\n\nclass PolarGridHelper extends LineSegments {\n\n\tconstructor( radius = 10, radials = 16, circles = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\t// create the radials\n\n\t\tfor ( let i = 0; i <= radials; i ++ ) {\n\n\t\t\tconst v = ( i / radials ) * ( Math.PI * 2 );\n\n\t\t\tconst x = Math.sin( v ) * radius;\n\t\t\tconst z = Math.cos( v ) * radius;\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tvertices.push( x, 0, z );\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tcolors.push( color.r, color.g, color.b );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t}\n\n\t\t// create the circles\n\n\t\tfor ( let i = 0; i <= circles; i ++ ) {\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tconst r = radius - ( radius / circles * i );\n\n\t\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t\t// first vertex\n\n\t\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tlet x = Math.sin( v ) * r;\n\t\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t\t// second vertex\n\n\t\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tx = Math.sin( v ) * r;\n\t\t\t\tz = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'PolarGridHelper';\n\n\t}\n\n}\n\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _v2 = /*@__PURE__*/ new Vector3();\nconst _v3 = /*@__PURE__*/ new Vector3();\n\nclass DirectionalLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tif ( size === undefined ) size = 1;\n\n\t\tlet geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t\t- size, size, 0,\n\t\t\tsize, size, 0,\n\t\t\tsize, - size, 0,\n\t\t\t- size, - size, 0,\n\t\t\t- size, size, 0\n\t\t], 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.lightPlane = new Line( geometry, material );\n\t\tthis.add( this.lightPlane );\n\n\t\tgeometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\t\tthis.targetLine = new Line( geometry, material );\n\t\tthis.add( this.targetLine );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.lightPlane.geometry.dispose();\n\t\tthis.lightPlane.material.dispose();\n\t\tthis.targetLine.geometry.dispose();\n\t\tthis.targetLine.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\t_v1.setFromMatrixPosition( this.light.matrixWorld );\n\t\t_v2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\t_v3.subVectors( _v2, _v1 );\n\n\t\tthis.lightPlane.lookAt( _v2 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.lightPlane.material.color.set( this.color );\n\t\t\tthis.targetLine.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\tthis.targetLine.lookAt( _v2 );\n\t\tthis.targetLine.scale.z = _v3.length();\n\n\t}\n\n}\n\nconst _vector = /*@__PURE__*/ new Vector3();\nconst _camera = /*@__PURE__*/ new Camera();\n\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\thttps://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html\n */\n\nclass CameraHelper extends LineSegments {\n\n\tconstructor( camera ) {\n\n\t\tconst geometry = new BufferGeometry();\n\t\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst pointMap = {};\n\n\t\t// colors\n\n\t\tconst colorFrustum = new Color( 0xffaa00 );\n\t\tconst colorCone = new Color( 0xff0000 );\n\t\tconst colorUp = new Color( 0x00aaff );\n\t\tconst colorTarget = new Color( 0xffffff );\n\t\tconst colorCross = new Color( 0x333333 );\n\n\t\t// near\n\n\t\taddLine( 'n1', 'n2', colorFrustum );\n\t\taddLine( 'n2', 'n4', colorFrustum );\n\t\taddLine( 'n4', 'n3', colorFrustum );\n\t\taddLine( 'n3', 'n1', colorFrustum );\n\n\t\t// far\n\n\t\taddLine( 'f1', 'f2', colorFrustum );\n\t\taddLine( 'f2', 'f4', colorFrustum );\n\t\taddLine( 'f4', 'f3', colorFrustum );\n\t\taddLine( 'f3', 'f1', colorFrustum );\n\n\t\t// sides\n\n\t\taddLine( 'n1', 'f1', colorFrustum );\n\t\taddLine( 'n2', 'f2', colorFrustum );\n\t\taddLine( 'n3', 'f3', colorFrustum );\n\t\taddLine( 'n4', 'f4', colorFrustum );\n\n\t\t// cone\n\n\t\taddLine( 'p', 'n1', colorCone );\n\t\taddLine( 'p', 'n2', colorCone );\n\t\taddLine( 'p', 'n3', colorCone );\n\t\taddLine( 'p', 'n4', colorCone );\n\n\t\t// up\n\n\t\taddLine( 'u1', 'u2', colorUp );\n\t\taddLine( 'u2', 'u3', colorUp );\n\t\taddLine( 'u3', 'u1', colorUp );\n\n\t\t// target\n\n\t\taddLine( 'c', 't', colorTarget );\n\t\taddLine( 'p', 'c', colorCross );\n\n\t\t// cross\n\n\t\taddLine( 'cn1', 'cn2', colorCross );\n\t\taddLine( 'cn3', 'cn4', colorCross );\n\n\t\taddLine( 'cf1', 'cf2', colorCross );\n\t\taddLine( 'cf3', 'cf4', colorCross );\n\n\t\tfunction addLine( a, b, color ) {\n\n\t\t\taddPoint( a, color );\n\t\t\taddPoint( b, color );\n\n\t\t}\n\n\t\tfunction addPoint( id, color ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\t\tpointMap[ id ] = [];\n\n\t\t\t}\n\n\t\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'CameraHelper';\n\n\t\tthis.camera = camera;\n\t\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\t\tthis.matrix = camera.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.pointMap = pointMap;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst pointMap = this.pointMap;\n\n\t\tconst w = 1, h = 1;\n\n\t\t// we need just camera projection matrix inverse\n\t\t// world matrix must be identity\n\n\t\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t\t// center / target\n\n\t\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\t\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\t\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\t\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\t\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\t\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\t\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\t\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\t\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\t\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\t\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\t\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\t\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\t\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\t\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector.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.x, _vector.y, _vector.z );\n\n\t\t}\n\n\t}\n\n}\n\nconst _box = /*@__PURE__*/ new Box3();\n\nclass BoxHelper extends LineSegments {\n\n\tconstructor( object, color = 0xffff00 ) {\n\n\t\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\t\tconst positions = new Float32Array( 8 * 3 );\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\t\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.object = object;\n\t\tthis.type = 'BoxHelper';\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate( object ) {\n\n\t\tif ( object !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t\t}\n\n\t\tif ( this.object !== undefined ) {\n\n\t\t\t_box.setFromObject( this.object );\n\n\t\t}\n\n\t\tif ( _box.isEmpty() ) return;\n\n\t\tconst min = _box.min;\n\t\tconst max = _box.max;\n\n\t\t/*\n\t\t\t5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tconst position = this.geometry.attributes.position;\n\t\tconst array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\n\t}\n\n\tsetFromObject( object ) {\n\n\t\tthis.object = object;\n\t\tthis.update();\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tLineSegments.prototype.copy.call( this, source );\n\n\t\tthis.object = source.object;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Box3Helper extends LineSegments {\n\n\tconstructor( box, color = 0xffff00 ) {\n\n\t\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\t\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\t\tconst geometry = new BufferGeometry();\n\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.box = box;\n\n\t\tthis.type = 'Box3Helper';\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst box = this.box;\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tbox.getCenter( this.position );\n\n\t\tbox.getSize( this.scale );\n\n\t\tthis.scale.multiplyScalar( 0.5 );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\nclass PlaneHelper extends Line {\n\n\tconstructor( plane, size = 1, hex = 0xffff00 ) {\n\n\t\tconst color = hex;\n\n\t\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\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\t\tgeometry.computeBoundingSphere();\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.type = 'PlaneHelper';\n\n\t\tthis.plane = plane;\n\n\t\tthis.size = size;\n\n\t\tconst positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ];\n\n\t\tconst geometry2 = new BufferGeometry();\n\t\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\t\tgeometry2.computeBoundingSphere();\n\n\t\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tlet scale = - this.plane.constant;\n\n\t\tif ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter\n\n\t\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, scale );\n\n\t\tthis.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here\n\n\t\tthis.lookAt( this.plane.normal );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\nconst _axis = /*@__PURE__*/ new Vector3();\nlet _lineGeometry, _coneGeometry;\n\nclass ArrowHelper extends Object3D {\n\n\t// dir is assumed to be normalized\n\n\tconstructor( dir = new Vector3( 0, 0, 1 ), origin = new Vector3( 0, 0, 0 ), length = 1, color = 0xffff00, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ArrowHelper';\n\n\t\tif ( _lineGeometry === undefined ) {\n\n\t\t\t_lineGeometry = new BufferGeometry();\n\t\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t\t_coneGeometry = new CylinderGeometry( 0, 0.5, 1, 5, 1 );\n\t\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t\t}\n\n\t\tthis.position.copy( origin );\n\n\t\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.line.matrixAutoUpdate = false;\n\t\tthis.add( this.line );\n\n\t\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.cone.matrixAutoUpdate = false;\n\t\tthis.add( this.cone );\n\n\t\tthis.setDirection( dir );\n\t\tthis.setLength( length, headLength, headWidth );\n\n\t}\n\n\tsetDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tconst radians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t\t}\n\n\t}\n\n\tsetLength( length, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\t\tthis.line.updateMatrix();\n\n\t\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\t\tthis.cone.position.y = length;\n\t\tthis.cone.updateMatrix();\n\n\t}\n\n\tsetColor( color ) {\n\n\t\tthis.line.material.color.set( color );\n\t\tthis.cone.material.color.set( color );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tthis.line.copy( source.line );\n\t\tthis.cone.copy( source.cone );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass AxesHelper extends LineSegments {\n\n\tconstructor( size = 1 ) {\n\n\t\tconst vertices = [\n\t\t\t0, 0, 0,\tsize, 0, 0,\n\t\t\t0, 0, 0,\t0, size, 0,\n\t\t\t0, 0, 0,\t0, 0, size\n\t\t];\n\n\t\tconst colors = [\n\t\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t\t0, 0, 1,\t0, 0.6, 1\n\t\t];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'AxesHelper';\n\n\t}\n\n\tsetColors( xAxisColor, yAxisColor, zAxisColor ) {\n\n\t\tconst color = new Color();\n\t\tconst array = this.geometry.attributes.color.array;\n\n\t\tcolor.set( xAxisColor );\n\t\tcolor.toArray( array, 0 );\n\t\tcolor.toArray( array, 3 );\n\n\t\tcolor.set( yAxisColor );\n\t\tcolor.toArray( array, 6 );\n\t\tcolor.toArray( array, 9 );\n\n\t\tcolor.set( zAxisColor );\n\t\tcolor.toArray( array, 12 );\n\t\tcolor.toArray( array, 15 );\n\n\t\tthis.geometry.attributes.color.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass ShapePath {\n\n\tconstructor() {\n\n\t\tthis.type = 'ShapePath';\n\n\t\tthis.color = new Color();\n\n\t\tthis.subPaths = [];\n\t\tthis.currentPath = null;\n\n\t}\n\n\tmoveTo( 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( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( 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( 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( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t}\n\n\ttoShapes( 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;\n\t\tconst 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\tlet toChange = 0;\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 ++;\n\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\n\t\t\tif ( toChange > 0 && ambiguous === false ) {\n\n\t\t\t\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// Fast Half Float Conversions, http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf\n\nclass DataUtils {\n\n\t// float32 to float16\n\n\tstatic toHalfFloat( val ) {\n\n\t\tif ( Math.abs( val ) > 65504 ) console.warn( 'THREE.DataUtils.toHalfFloat(): Value out of range.' );\n\n\t\tval = clamp( val, - 65504, 65504 );\n\n\t\t_floatView[ 0 ] = val;\n\t\tconst f = _uint32View[ 0 ];\n\t\tconst e = ( f >> 23 ) & 0x1ff;\n\t\treturn _baseTable[ e ] + ( ( f & 0x007fffff ) >> _shiftTable[ e ] );\n\n\t}\n\n\t// float16 to float32\n\n\tstatic fromHalfFloat( val ) {\n\n\t\tconst m = val >> 10;\n\t\t_uint32View[ 0 ] = _mantissaTable[ _offsetTable[ m ] + ( val & 0x3ff ) ] + _exponentTable[ m ];\n\t\treturn _floatView[ 0 ];\n\n\t}\n\n}\n\n// float32 to float16 helpers\n\nconst _buffer = new ArrayBuffer( 4 );\nconst _floatView = new Float32Array( _buffer );\nconst _uint32View = new Uint32Array( _buffer );\n\nconst _baseTable = new Uint32Array( 512 );\nconst _shiftTable = new Uint32Array( 512 );\n\nfor ( let i = 0; i < 256; ++ i ) {\n\n\tconst e = i - 127;\n\n\t// very small number (0, -0)\n\n\tif ( e < - 27 ) {\n\n\t\t_baseTable[ i ] = 0x0000;\n\t\t_baseTable[ i | 0x100 ] = 0x8000;\n\t\t_shiftTable[ i ] = 24;\n\t\t_shiftTable[ i | 0x100 ] = 24;\n\n\t\t// small number (denorm)\n\n\t} else if ( e < - 14 ) {\n\n\t\t_baseTable[ i ] = 0x0400 >> ( - e - 14 );\n\t\t_baseTable[ i | 0x100 ] = ( 0x0400 >> ( - e - 14 ) ) | 0x8000;\n\t\t_shiftTable[ i ] = - e - 1;\n\t\t_shiftTable[ i | 0x100 ] = - e - 1;\n\n\t\t// normal number\n\n\t} else if ( e <= 15 ) {\n\n\t\t_baseTable[ i ] = ( e + 15 ) << 10;\n\t\t_baseTable[ i | 0x100 ] = ( ( e + 15 ) << 10 ) | 0x8000;\n\t\t_shiftTable[ i ] = 13;\n\t\t_shiftTable[ i | 0x100 ] = 13;\n\n\t\t// large number (Infinity, -Infinity)\n\n\t} else if ( e < 128 ) {\n\n\t\t_baseTable[ i ] = 0x7c00;\n\t\t_baseTable[ i | 0x100 ] = 0xfc00;\n\t\t_shiftTable[ i ] = 24;\n\t\t_shiftTable[ i | 0x100 ] = 24;\n\n\t\t// stay (NaN, Infinity, -Infinity)\n\n\t} else {\n\n\t\t_baseTable[ i ] = 0x7c00;\n\t\t_baseTable[ i | 0x100 ] = 0xfc00;\n\t\t_shiftTable[ i ] = 13;\n\t\t_shiftTable[ i | 0x100 ] = 13;\n\n\t}\n\n}\n\n// float16 to float32 helpers\n\nconst _mantissaTable = new Uint32Array( 2048 );\nconst _exponentTable = new Uint32Array( 64 );\nconst _offsetTable = new Uint32Array( 64 );\n\nfor ( let i = 1; i < 1024; ++ i ) {\n\n\tlet m = i << 13; // zero pad mantissa bits\n\tlet e = 0; // zero exponent\n\n\t// normalized\n\twhile ( ( m & 0x00800000 ) === 0 ) {\n\n\t\tm <<= 1;\n\t\te -= 0x00800000; // decrement exponent\n\n\t}\n\n\tm &= ~ 0x00800000; // clear leading 1 bit\n\te += 0x38800000; // adjust bias\n\n\t_mantissaTable[ i ] = m | e;\n\n}\n\nfor ( let i = 1024; i < 2048; ++ i ) {\n\n\t_mantissaTable[ i ] = 0x38000000 + ( ( i - 1024 ) << 13 );\n\n}\n\nfor ( let i = 1; i < 31; ++ i ) {\n\n\t_exponentTable[ i ] = i << 23;\n\n}\n\n_exponentTable[ 31 ] = 0x47800000;\n_exponentTable[ 32 ] = 0x80000000;\nfor ( let i = 33; i < 63; ++ i ) {\n\n\t_exponentTable[ i ] = 0x80000000 + ( ( i - 32 ) << 23 );\n\n}\n\n_exponentTable[ 63 ] = 0xc7800000;\n\nfor ( let i = 1; i < 64; ++ i ) {\n\n\tif ( i !== 32 ) {\n\n\t\t_offsetTable[ i ] = 1024;\n\n\t}\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\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\nclass PointCloud extends Points {\n\n\tconstructor( geometry, material ) {\n\n\t\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\t\tsuper( geometry, material );\n\n\t}\n\n}\n\nclass Particle extends Sprite {\n\n\tconstructor( material ) {\n\n\t\tconsole.warn( 'THREE.Particle has been renamed to THREE.Sprite.' );\n\t\tsuper( material );\n\n\t}\n\n}\n\nclass ParticleSystem extends Points {\n\n\tconstructor( geometry, material ) {\n\n\t\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\t\tsuper( geometry, material );\n\n\t}\n\n}\n\nclass PointCloudMaterial extends PointsMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\t\tsuper( parameters );\n\n\t}\n\n}\n\nclass ParticleBasicMaterial extends PointsMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\t\tsuper( parameters );\n\n\t}\n\n}\n\nclass ParticleSystemMaterial extends PointsMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\t\tsuper( parameters );\n\n\t}\n\n}\n\nclass Vertex extends Vector3 {\n\n\tconstructor( x, y, z ) {\n\n\t\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\t\tsuper( x, y, z );\n\n\t}\n\n}\n\n//\n\nclass DynamicBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead.' );\n\t\tsuper( array, itemSize );\n\t\tthis.setUsage( DynamicDrawUsage );\n\n\t}\n\n}\n\nclass Int8Attribute extends Int8BufferAttribute {\n\n\tconstructor( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' );\n\t\tsuper( array, itemSize );\n\n\t}\n\n}\n\nclass Uint8Attribute extends Uint8BufferAttribute {\n\n\tconstructor( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' );\n\t\tsuper( array, itemSize );\n\n\t}\n\n}\n\nclass Uint8ClampedAttribute extends Uint8ClampedBufferAttribute {\n\n\tconstructor( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' );\n\t\tsuper( array, itemSize );\n\n\t}\n\n}\n\nclass Int16Attribute extends Int16BufferAttribute {\n\n\tconstructor( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' );\n\t\tsuper( array, itemSize );\n\n\t}\n\n}\n\nclass Uint16Attribute extends Uint16BufferAttribute {\n\n\tconstructor( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' );\n\t\tsuper( array, itemSize );\n\n\t}\n\n}\n\nclass Int32Attribute extends Int32BufferAttribute {\n\n\tconstructor( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' );\n\t\tsuper( array, itemSize );\n\n\t}\n\n}\n\nclass Uint32Attribute extends Uint32BufferAttribute {\n\n\tconstructor( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' );\n\t\tsuper( array, itemSize );\n\n\t}\n\n}\n\nclass Float32Attribute extends Float32BufferAttribute {\n\n\tconstructor( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' );\n\t\tsuper( array, itemSize );\n\n\t}\n\n}\n\nclass Float64Attribute extends Float64BufferAttribute {\n\n\tconstructor( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' );\n\t\tsuper( array, itemSize );\n\n\t}\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\nPath.prototype.fromPoints = function ( points ) {\n\n\tconsole.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' );\n\treturn this.setFromPoints( points );\n\n};\n\n//\n\nclass AxisHelper extends AxesHelper {\n\n\tconstructor( size ) {\n\n\t\tconsole.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' );\n\t\tsuper( size );\n\n\t}\n\n}\n\nclass BoundingBoxHelper extends BoxHelper {\n\n\tconstructor( object, color ) {\n\n\t\tconsole.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' );\n\t\tsuper( object, color );\n\n\t}\n\n}\n\nclass EdgesHelper extends LineSegments {\n\n\tconstructor( object, hex ) {\n\n\t\tconsole.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' );\n\t\tsuper( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n\t}\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\nclass WireframeHelper extends LineSegments {\n\n\tconstructor( object, hex ) {\n\n\t\tconsole.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' );\n\t\tsuper( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n\t}\n\n}\n\n//\n\nLoader.prototype.extractUrlBase = function ( url ) {\n\n\tconsole.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' );\n\treturn LoaderUtils.extractUrlBase( url );\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\nclass XHRLoader extends FileLoader {\n\n\tconstructor( manager ) {\n\n\t\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\n\t\tsuper( manager );\n\n\t}\n\n}\n\nclass BinaryTextureLoader extends DataTextureLoader {\n\n\tconstructor( manager ) {\n\n\t\tconsole.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' );\n\t\tsuper( manager );\n\n\t}\n\n}\n\n//\n\nBox2.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nBox2.prototype.empty = function () {\n\n\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\treturn this.isEmpty();\n\n};\n\nBox2.prototype.isIntersectionBox = function ( box ) {\n\n\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\treturn this.intersectsBox( box );\n\n};\n\nBox2.prototype.size = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\n\treturn this.getSize( optionalTarget );\n\n};\n\n//\n\nBox3.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nBox3.prototype.empty = function () {\n\n\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\treturn this.isEmpty();\n\n};\n\nBox3.prototype.isIntersectionBox = function ( box ) {\n\n\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\treturn this.intersectsBox( box );\n\n};\n\nBox3.prototype.isIntersectionSphere = function ( sphere ) {\n\n\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\treturn this.intersectsSphere( sphere );\n\n};\n\nBox3.prototype.size = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\n\treturn this.getSize( optionalTarget );\n\n};\n\n//\n\nEuler.prototype.toVector3 = function () {\n\n\tconsole.error( 'THREE.Euler: .toVector3() has been removed. Use Vector3.setFromEuler() instead' );\n\n};\n\n\n//\n\nSphere.prototype.empty = function () {\n\n\tconsole.warn( 'THREE.Sphere: .empty() has been renamed to .isEmpty().' );\n\treturn this.isEmpty();\n\n};\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\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\n//\n\nMatrix3.prototype.flattenToArrayOffset = function ( array, offset ) {\n\n\tconsole.warn( 'THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.' );\n\treturn this.toArray( array, offset );\n\n};\n\nMatrix3.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\treturn vector.applyMatrix3( this );\n\n};\n\nMatrix3.prototype.multiplyVector3Array = function ( /* a */ ) {\n\n\tconsole.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' );\n\n};\n\nMatrix3.prototype.applyToBufferAttribute = function ( attribute ) {\n\n\tconsole.warn( 'THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead.' );\n\treturn attribute.applyMatrix3( this );\n\n};\n\nMatrix3.prototype.applyToVector3Array = function ( /* array, offset, length */ ) {\n\n\tconsole.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' );\n\n};\n\nMatrix3.prototype.getInverse = function ( matrix ) {\n\n\tconsole.warn( 'THREE.Matrix3: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.' );\n\treturn this.copy( matrix ).invert();\n\n};\n\n//\n\nMatrix4.prototype.extractPosition = function ( m ) {\n\n\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\treturn this.copyPosition( m );\n\n};\n\nMatrix4.prototype.flattenToArrayOffset = function ( array, offset ) {\n\n\tconsole.warn( 'THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.' );\n\treturn this.toArray( array, offset );\n\n};\n\nMatrix4.prototype.getPosition = function () {\n\n\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\treturn new Vector3().setFromMatrixColumn( this, 3 );\n\n};\n\nMatrix4.prototype.setRotationFromQuaternion = function ( q ) {\n\n\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\treturn this.makeRotationFromQuaternion( q );\n\n};\n\nMatrix4.prototype.multiplyToArray = function () {\n\n\tconsole.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' );\n\n};\n\nMatrix4.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\treturn vector.applyMatrix4( this );\n\n};\n\nMatrix4.prototype.multiplyVector4 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\treturn vector.applyMatrix4( this );\n\n};\n\nMatrix4.prototype.multiplyVector3Array = function ( /* a */ ) {\n\n\tconsole.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateAxis = function ( v ) {\n\n\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\tv.transformDirection( this );\n\n};\n\nMatrix4.prototype.crossVector = function ( vector ) {\n\n\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\treturn vector.applyMatrix4( this );\n\n};\n\nMatrix4.prototype.translate = function () {\n\n\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateX = function () {\n\n\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateY = function () {\n\n\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateZ = function () {\n\n\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\n};\n\nMatrix4.prototype.rotateByAxis = function () {\n\n\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\n};\n\nMatrix4.prototype.applyToBufferAttribute = function ( attribute ) {\n\n\tconsole.warn( 'THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead.' );\n\treturn attribute.applyMatrix4( this );\n\n};\n\nMatrix4.prototype.applyToVector3Array = function ( /* array, offset, length */ ) {\n\n\tconsole.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' );\n\n};\n\nMatrix4.prototype.makeFrustum = function ( left, right, bottom, top, near, far ) {\n\n\tconsole.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' );\n\treturn this.makePerspective( left, right, top, bottom, near, far );\n\n};\n\nMatrix4.prototype.getInverse = function ( matrix ) {\n\n\tconsole.warn( 'THREE.Matrix4: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.' );\n\treturn this.copy( matrix ).invert();\n\n};\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\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\nQuaternion.prototype.inverse = function ( ) {\n\n\tconsole.warn( 'THREE.Quaternion: .inverse() has been renamed to invert().' );\n\treturn this.invert();\n\n};\n\n//\n\nRay.prototype.isIntersectionBox = function ( box ) {\n\n\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\treturn this.intersectsBox( box );\n\n};\n\nRay.prototype.isIntersectionPlane = function ( plane ) {\n\n\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\treturn this.intersectsPlane( plane );\n\n};\n\nRay.prototype.isIntersectionSphere = function ( sphere ) {\n\n\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\treturn this.intersectsSphere( sphere );\n\n};\n\n//\n\nTriangle.prototype.area = function () {\n\n\tconsole.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' );\n\treturn this.getArea();\n\n};\n\nTriangle.prototype.barycoordFromPoint = function ( point, target ) {\n\n\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\treturn this.getBarycoord( point, target );\n\n};\n\nTriangle.prototype.midpoint = function ( target ) {\n\n\tconsole.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' );\n\treturn this.getMidpoint( target );\n\n};\n\nTriangle.prototypenormal = function ( target ) {\n\n\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\treturn this.getNormal( target );\n\n};\n\nTriangle.prototype.plane = function ( target ) {\n\n\tconsole.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' );\n\treturn this.getPlane( target );\n\n};\n\nTriangle.barycoordFromPoint = function ( point, a, b, c, target ) {\n\n\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\treturn Triangle.getBarycoord( point, a, b, c, target );\n\n};\n\nTriangle.normal = function ( a, b, c, target ) {\n\n\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\treturn Triangle.getNormal( a, b, c, target );\n\n};\n\n//\n\nShape.prototype.extractAllPoints = function ( divisions ) {\n\n\tconsole.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' );\n\treturn this.extractPoints( divisions );\n\n};\n\nShape.prototype.extrude = function ( options ) {\n\n\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\n\treturn new ExtrudeGeometry( this, options );\n\n};\n\nShape.prototype.makeGeometry = function ( options ) {\n\n\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\n\treturn new ShapeGeometry( this, options );\n\n};\n\n//\n\nVector2.prototype.fromAttribute = function ( attribute, index, offset ) {\n\n\tconsole.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\treturn this.fromBufferAttribute( attribute, index, offset );\n\n};\n\nVector2.prototype.distanceToManhattan = function ( v ) {\n\n\tconsole.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\treturn this.manhattanDistanceTo( v );\n\n};\n\nVector2.prototype.lengthManhattan = function () {\n\n\tconsole.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' );\n\treturn this.manhattanLength();\n\n};\n\n//\n\nVector3.prototype.setEulerFromRotationMatrix = function () {\n\n\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\n};\n\nVector3.prototype.setEulerFromQuaternion = function () {\n\n\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\n};\n\nVector3.prototype.getPositionFromMatrix = function ( m ) {\n\n\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\treturn this.setFromMatrixPosition( m );\n\n};\n\nVector3.prototype.getScaleFromMatrix = function ( m ) {\n\n\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\treturn this.setFromMatrixScale( m );\n\n};\n\nVector3.prototype.getColumnFromMatrix = function ( index, matrix ) {\n\n\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\treturn this.setFromMatrixColumn( matrix, index );\n\n};\n\nVector3.prototype.applyProjection = function ( m ) {\n\n\tconsole.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' );\n\treturn this.applyMatrix4( m );\n\n};\n\nVector3.prototype.fromAttribute = function ( attribute, index, offset ) {\n\n\tconsole.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\treturn this.fromBufferAttribute( attribute, index, offset );\n\n};\n\nVector3.prototype.distanceToManhattan = function ( v ) {\n\n\tconsole.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\treturn this.manhattanDistanceTo( v );\n\n};\n\nVector3.prototype.lengthManhattan = function () {\n\n\tconsole.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' );\n\treturn this.manhattanLength();\n\n};\n\n//\n\nVector4.prototype.fromAttribute = function ( attribute, index, offset ) {\n\n\tconsole.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\treturn this.fromBufferAttribute( attribute, index, offset );\n\n};\n\nVector4.prototype.lengthManhattan = function () {\n\n\tconsole.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' );\n\treturn this.manhattanLength();\n\n};\n\n//\n\nObject3D.prototype.getChildByName = function ( name ) {\n\n\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\treturn this.getObjectByName( name );\n\n};\n\nObject3D.prototype.renderDepth = function () {\n\n\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\n};\n\nObject3D.prototype.translate = function ( distance, axis ) {\n\n\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\treturn this.translateOnAxis( axis, distance );\n\n};\n\nObject3D.prototype.getWorldRotation = function () {\n\n\tconsole.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' );\n\n};\n\nObject3D.prototype.applyMatrix = function ( matrix ) {\n\n\tconsole.warn( 'THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4().' );\n\treturn this.applyMatrix4( matrix );\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\nMesh.prototype.setDrawMode = function () {\n\n\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};\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\nSkinnedMesh.prototype.initBones = function () {\n\n\tconsole.error( 'THREE.SkinnedMesh: initBones() has been removed.' );\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\nBufferAttribute.prototype.setDynamic = function ( value ) {\n\n\tconsole.warn( 'THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\treturn this;\n\n};\n\nBufferAttribute.prototype.copyIndicesArray = function ( /* indices */ ) {\n\n\tconsole.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' );\n\n},\n\nBufferAttribute.prototype.setArray = function ( /* array */ ) {\n\n\tconsole.error( 'THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n};\n\n//\n\nBufferGeometry.prototype.addIndex = function ( index ) {\n\n\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\tthis.setIndex( index );\n\n};\n\nBufferGeometry.prototype.addAttribute = function ( name, attribute ) {\n\n\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute().' );\n\n\tif ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\treturn this.setAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t}\n\n\tif ( name === 'index' ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\tthis.setIndex( attribute );\n\n\t\treturn this;\n\n\t}\n\n\treturn this.setAttribute( name, attribute );\n\n};\n\nBufferGeometry.prototype.addDrawCall = function ( start, count, indexOffset ) {\n\n\tif ( indexOffset !== undefined ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\n\t}\n\n\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\tthis.addGroup( start, count );\n\n};\n\nBufferGeometry.prototype.clearDrawCalls = function () {\n\n\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\tthis.clearGroups();\n\n};\n\nBufferGeometry.prototype.computeOffsets = function () {\n\n\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\n};\n\nBufferGeometry.prototype.removeAttribute = function ( name ) {\n\n\tconsole.warn( 'THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute().' );\n\n\treturn this.deleteAttribute( name );\n\n};\n\nBufferGeometry.prototype.applyMatrix = function ( matrix ) {\n\n\tconsole.warn( 'THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4().' );\n\treturn this.applyMatrix4( matrix );\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\nInterleavedBuffer.prototype.setDynamic = function ( value ) {\n\n\tconsole.warn( 'THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead.' );\n\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\n\treturn this;\n\n};\n\nInterleavedBuffer.prototype.setArray = function ( /* array */ ) {\n\n\tconsole.error( 'THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\n\n};\n\n//\n\nExtrudeGeometry.prototype.getArrays = function () {\n\n\tconsole.error( 'THREE.ExtrudeGeometry: .getArrays() has been removed.' );\n\n};\n\nExtrudeGeometry.prototype.addShapeList = function () {\n\n\tconsole.error( 'THREE.ExtrudeGeometry: .addShapeList() has been removed.' );\n\n};\n\nExtrudeGeometry.prototype.addShape = function () {\n\n\tconsole.error( 'THREE.ExtrudeGeometry: .addShape() has been removed.' );\n\n};\n\n//\n\nScene.prototype.dispose = function () {\n\n\tconsole.error( 'THREE.Scene: .dispose() has been removed.' );\n\n};\n\n//\n\nUniform.prototype.onUpdate = function () {\n\n\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\treturn this;\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\tvertexTangents: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .vertexTangents has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .vertexTangents has been removed.' );\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\nWebGLRenderer.prototype.clearTarget = function ( renderTarget, color, depth, stencil ) {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' );\n\tthis.setRenderTarget( renderTarget );\n\tthis.clear( color, depth, stencil );\n\n};\n\nWebGLRenderer.prototype.animate = function ( callback ) {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' );\n\tthis.setAnimationLoop( callback );\n\n};\n\nWebGLRenderer.prototype.getCurrentRenderTarget = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' );\n\treturn this.getRenderTarget();\n\n};\n\nWebGLRenderer.prototype.getMaxAnisotropy = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' );\n\treturn this.capabilities.getMaxAnisotropy();\n\n};\n\nWebGLRenderer.prototype.getPrecision = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' );\n\treturn this.capabilities.precision;\n\n};\n\nWebGLRenderer.prototype.resetGLState = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' );\n\treturn this.state.reset();\n\n};\n\nWebGLRenderer.prototype.supportsFloatTextures = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\treturn this.extensions.get( 'OES_texture_float' );\n\n};\n\nWebGLRenderer.prototype.supportsHalfFloatTextures = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\treturn this.extensions.get( 'OES_texture_half_float' );\n\n};\n\nWebGLRenderer.prototype.supportsStandardDerivatives = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\treturn this.extensions.get( 'OES_standard_derivatives' );\n\n};\n\nWebGLRenderer.prototype.supportsCompressedTextureS3TC = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n};\n\nWebGLRenderer.prototype.supportsCompressedTexturePVRTC = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n};\n\nWebGLRenderer.prototype.supportsBlendMinMax = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\treturn this.extensions.get( 'EXT_blend_minmax' );\n\n};\n\nWebGLRenderer.prototype.supportsVertexTextures = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' );\n\treturn this.capabilities.vertexTextures;\n\n};\n\nWebGLRenderer.prototype.supportsInstancedArrays = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\n};\n\nWebGLRenderer.prototype.enableScissorTest = function ( boolean ) {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\tthis.setScissorTest( boolean );\n\n};\n\nWebGLRenderer.prototype.initMaterial = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.addPrePlugin = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.addPostPlugin = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.updateShadowMap = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.setFaceCulling = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.allocTextureUnit = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .allocTextureUnit() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.setTexture = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .setTexture() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.setTexture2D = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .setTexture2D() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.setTextureCube = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .setTextureCube() has been removed.' );\n\n};\n\nWebGLRenderer.prototype.getActiveMipMapLevel = function () {\n\n\tconsole.warn( 'THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().' );\n\treturn this.getActiveMipmapLevel();\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\tgammaFactor: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaFactor has been removed.' );\n\t\t\treturn 2;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaFactor has been removed.' );\n\n\t\t}\n\t}\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\nclass WebGLRenderTargetCube extends WebGLCubeRenderTarget {\n\n\tconstructor( width, height, options ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options ).' );\n\t\tsuper( width, options );\n\n\t}\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\nAudio.prototype.load = function ( file ) {\n\n\tconsole.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' );\n\tconst scope = this;\n\tconst audioLoader = new AudioLoader();\n\taudioLoader.load( file, function ( buffer ) {\n\n\t\tscope.setBuffer( buffer );\n\n\t} );\n\treturn this;\n\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\nCubeCamera.prototype.clear = function ( renderer, color, depth, stencil ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .clear() is now .renderTarget.clear().' );\n\treturn this.renderTarget.clear( renderer, color, depth, stencil );\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\n//\n\nclass ParametricGeometry extends BufferGeometry {\n\n\tconstructor() {\n\n\t\tconsole.error( 'THREE.ParametricGeometry has been moved to /examples/jsm/geometries/ParametricGeometry.js' );\n\t\tsuper();\n\n\t}\n\n}\n\nclass TextGeometry extends BufferGeometry {\n\n\tconstructor() {\n\n\t\tconsole.error( 'THREE.TextGeometry has been moved to /examples/jsm/geometries/TextGeometry.js' );\n\t\tsuper();\n\n\t}\n\n}\n\nfunction FontLoader() {\n\n\tconsole.error( 'THREE.FontLoader has been moved to /examples/jsm/loaders/FontLoader.js' );\n\n}\n\nfunction Font() {\n\n\tconsole.error( 'THREE.Font has been moved to /examples/jsm/loaders/FontLoader.js' );\n\n}\n\nfunction ImmediateRenderObject() {\n\n\tconsole.error( 'THREE.ImmediateRenderObject has been removed.' );\n\n}\n\nclass WebGLMultisampleRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width, height, options ) {\n\n\t\tconsole.error( 'THREE.WebGLMultisampleRenderTarget has been removed. Use a normal render target and set the \"samples\" property to greater 0 to enable multisampling.' );\n\t\tsuper( width, height, options );\n\t\tthis.samples = 4;\n\n\t}\n\n}\n\nclass DataTexture2DArray extends DataArrayTexture {\n\n\tconstructor( data, width, height, depth ) {\n\n\t\tconsole.warn( 'THREE.DataTexture2DArray has been renamed to DataArrayTexture.' );\n\t\tsuper( data, width, height, depth );\n\n\t}\n\n}\n\nclass DataTexture3D extends Data3DTexture {\n\n\tconstructor( data, width, height, depth ) {\n\n\t\tconsole.warn( 'THREE.DataTexture3D has been renamed to Data3DTexture.' );\n\t\tsuper( data, width, height, depth );\n\n\t}\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\n}\n\nif ( typeof window !== 'undefined' ) {\n\n\tif ( window.__THREE__ ) {\n\n\t\tconsole.warn( 'WARNING: Multiple instances of Three.js being imported.' );\n\n\t} else {\n\n\t\twindow.__THREE__ = REVISION;\n\n\t}\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, BoxGeometry as BoxBufferGeometry, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasRenderer, CanvasTexture, CapsuleGeometry as CapsuleBufferGeometry, CapsuleGeometry, CatmullRomCurve3, CineonToneMapping, CircleGeometry as CircleBufferGeometry, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, ColorManagement, CompressedTexture, CompressedTextureLoader, ConeGeometry as ConeBufferGeometry, ConeGeometry, CubeCamera, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry as CylinderBufferGeometry, CylinderGeometry, Cylindrical, Data3DTexture, DataArrayTexture, DataTexture, DataTexture2DArray, DataTexture3D, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronGeometry as DodecahedronBufferGeometry, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicBufferAttribute, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EdgesHelper, EllipseCurve, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeGeometry as ExtrudeBufferGeometry, ExtrudeGeometry, FaceColors, FileLoader, FlatShading, Float16BufferAttribute, Float32Attribute, Float32BufferAttribute, Float64Attribute, Float64BufferAttribute, FloatType, Fog, FogExp2, Font, FontLoader, FramebufferTexture, FrontSide, Frustum, GLBufferAttribute, GLSL1, GLSL3, GreaterDepth, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, HemisphereLightProbe, IcosahedronGeometry as 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, LatheGeometry as LatheBufferGeometry, LatheGeometry, Layers, LensFlare, LessDepth, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LinePieces, LineSegments, LineStrip, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearSRGBColorSpace, LinearToneMapping, Loader, LoaderUtils, LoadingManager, 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, NoColorSpace, NoColors, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry as OctahedronBufferGeometry, OctahedronGeometry, OneFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, ParametricGeometry, Particle, ParticleBasicMaterial, ParticleSystem, ParticleSystemMaterial, Path, PerspectiveCamera, Plane, PlaneGeometry as PlaneBufferGeometry, PlaneGeometry, PlaneHelper, PointCloud, PointCloudMaterial, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry as 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, RGBFormat, 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, RingGeometry as RingBufferGeometry, RingGeometry, SRGBColorSpace, Scene, SceneUtils, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry as ShapeBufferGeometry, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, SmoothShading, Source, Sphere, SphereGeometry as SphereBufferGeometry, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry as TetrahedronBufferGeometry, TetrahedronGeometry, TextGeometry, Texture, TextureLoader, TorusGeometry as TorusBufferGeometry, TorusGeometry, TorusKnotGeometry as TorusKnotBufferGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry as TubeBufferGeometry, TubeGeometry, UVMapping, Uint16Attribute, Uint16BufferAttribute, Uint32Attribute, Uint32BufferAttribute, Uint8Attribute, Uint8BufferAttribute, Uint8ClampedAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, Vertex, VertexColors, VideoTexture, WebGL1Renderer, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGLCubeRenderTarget, WebGLMultipleRenderTargets, WebGLMultisampleRenderTarget, WebGLRenderTarget, WebGLRenderTargetCube, WebGLRenderer, WebGLUtils, WireframeGeometry, WireframeHelper, WrapAroundEnding, XHRLoader, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, _SRGBAFormat, sRGBEncoding };\n","const _lut = [];\n\nfor ( let i = 0; i < 256; i ++ ) {\n\n\t_lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );\n\n}\n\nlet _seed = 1234567;\n\n\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\n\n// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\nfunction generateUUID() {\n\n\tconst d0 = Math.random() * 0xffffffff | 0;\n\tconst d1 = Math.random() * 0xffffffff | 0;\n\tconst d2 = Math.random() * 0xffffffff | 0;\n\tconst d3 = Math.random() * 0xffffffff | 0;\n\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// .toLowerCase() here flattens concatenated strings to save heap memory space.\n\treturn uuid.toLowerCase();\n\n}\n\nfunction clamp( value, min, max ) {\n\n\treturn Math.max( min, Math.min( max, value ) );\n\n}\n\n// compute euclidean modulo of m % n\n// https://en.wikipedia.org/wiki/Modulo_operation\nfunction euclideanModulo( n, m ) {\n\n\treturn ( ( n % m ) + m ) % m;\n\n}\n\n// Linear mapping from range to range \nfunction mapLinear( x, a1, a2, b1, b2 ) {\n\n\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n}\n\n// https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/\nfunction inverseLerp( x, y, value ) {\n\n\tif ( x !== y ) {\n\n\t\treturn ( value - x ) / ( y - x );\n\n\t} else {\n\n\t\treturn 0;\n\n\t}\n\n}\n\n// https://en.wikipedia.org/wiki/Linear_interpolation\nfunction lerp( x, y, t ) {\n\n\treturn ( 1 - t ) * x + t * y;\n\n}\n\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nfunction damp( x, y, lambda, dt ) {\n\n\treturn lerp( x, y, 1 - Math.exp( - lambda * dt ) );\n\n}\n\n// https://www.desmos.com/calculator/vcsjnyz7x4\nfunction pingpong( x, length = 1 ) {\n\n\treturn length - Math.abs( euclideanModulo( x, length * 2 ) - length );\n\n}\n\n// http://en.wikipedia.org/wiki/Smoothstep\nfunction smoothstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * ( 3 - 2 * x );\n\n}\n\nfunction smootherstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n}\n\n// Random integer from interval\nfunction randInt( low, high ) {\n\n\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n}\n\n// Random float from interval\nfunction randFloat( low, high ) {\n\n\treturn low + Math.random() * ( high - low );\n\n}\n\n// Random float from <-range/2, range/2> interval\nfunction randFloatSpread( range ) {\n\n\treturn range * ( 0.5 - Math.random() );\n\n}\n\n// Deterministic pseudo-random float in the interval [ 0, 1 ]\nfunction seededRandom( s ) {\n\n\tif ( s !== undefined ) _seed = s;\n\n\t// Mulberry32 generator\n\n\tlet t = _seed += 0x6D2B79F5;\n\n\tt = Math.imul( t ^ t >>> 15, t | 1 );\n\n\tt ^= t + Math.imul( t ^ t >>> 7, t | 61 );\n\n\treturn ( ( t ^ t >>> 14 ) >>> 0 ) / 4294967296;\n\n}\n\nfunction degToRad( degrees ) {\n\n\treturn degrees * DEG2RAD;\n\n}\n\nfunction radToDeg( radians ) {\n\n\treturn radians * RAD2DEG;\n\n}\n\nfunction isPowerOfTwo( value ) {\n\n\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n}\n\nfunction ceilPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction floorPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction setQuaternionFromProperEuler( q, a, b, c, order ) {\n\n\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t// rotations are applied to the axes in the order specified by 'order'\n\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t// angles are in radians\n\n\tconst cos = Math.cos;\n\tconst sin = Math.sin;\n\n\tconst c2 = cos( b / 2 );\n\tconst s2 = sin( b / 2 );\n\n\tconst c13 = cos( ( a + c ) / 2 );\n\tconst s13 = sin( ( a + c ) / 2 );\n\n\tconst c1_3 = cos( ( a - c ) / 2 );\n\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\tconst c3_1 = cos( ( c - a ) / 2 );\n\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\tswitch ( order ) {\n\n\t\tcase 'XYX':\n\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YZY':\n\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZXZ':\n\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'XZX':\n\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YXY':\n\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZYZ':\n\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t}\n\n}\n\nfunction denormalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn value / 65535.0;\n\n\t\tcase Uint8Array:\n\n\t\t\treturn value / 255.0;\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.max( value / 32767.0, - 1.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.max( value / 127.0, - 1.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nfunction normalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn Math.round( value * 65535.0 );\n\n\t\tcase Uint8Array:\n\n\t\t\treturn Math.round( value * 255.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.round( value * 32767.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.round( value * 127.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\n\n\nexport {\n\tDEG2RAD,\n\tRAD2DEG,\n\tgenerateUUID,\n\tclamp,\n\teuclideanModulo,\n\tmapLinear,\n\tinverseLerp,\n\tlerp,\n\tdamp,\n\tpingpong,\n\tsmoothstep,\n\tsmootherstep,\n\trandInt,\n\trandFloat,\n\trandFloatSpread,\n\tseededRandom,\n\tdegToRad,\n\tradToDeg,\n\tisPowerOfTwo,\n\tceilPowerOfTwo,\n\tfloorPowerOfTwo,\n\tsetQuaternionFromProperEuler,\n\tnormalize,\n\tdenormalize,\n};\n","import * as MathUtils from './MathUtils.js';\n\nclass Quaternion {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t}\n\n\tstatic slerp( qa, qb, qm, t ) {\n\n\t\tconsole.warn( 'THREE.Quaternion: Static .slerp() has been deprecated. Use qm.slerpQuaternions( qa, qb, t ) instead.' );\n\t\treturn qm.slerpQuaternions( qa, qb, t );\n\n\t}\n\n\tstatic slerpFlat( 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 ( t === 0 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x0;\n\t\t\tdst[ dstOffset + 1 ] = y0;\n\t\t\tdst[ dstOffset + 2 ] = z0;\n\t\t\tdst[ dstOffset + 3 ] = w0;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( t === 1 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x1;\n\t\t\tdst[ dstOffset + 1 ] = y1;\n\t\t\tdst[ dstOffset + 2 ] = z1;\n\t\t\tdst[ dstOffset + 3 ] = w1;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t;\n\t\t\tconst cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\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\tstatic multiplyQuaternionsFlat( 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\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget w() {\n\n\t\treturn this._w;\n\n\t}\n\n\tset w( value ) {\n\n\t\tthis._w = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( 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() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t}\n\n\tcopy( 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( 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( 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( 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( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < Number.EPSILON ) {\n\n\t\t\t// vFrom and vTo point in opposite directions\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( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( MathUtils.clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t}\n\n\trotateTowards( 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\tidentity() {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t}\n\n\tinvert() {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t}\n\n\tconjugate() {\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( 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() {\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() {\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() {\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( 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( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t}\n\n\tmultiplyQuaternions( 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( 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\tslerpQuaternions( qa, qb, t ) {\n\n\t\treturn this.copy( qa ).slerp( qb, t );\n\n\t}\n\n\trandom() {\n\n\t\t// Derived from http://planning.cs.uiuc.edu/node198.html\n\t\t// Note, this source uses w, x, y, z ordering,\n\t\t// so we swap the order below.\n\n\t\tconst u1 = Math.random();\n\t\tconst sqrt1u1 = Math.sqrt( 1 - u1 );\n\t\tconst sqrtu1 = Math.sqrt( u1 );\n\n\t\tconst u2 = 2 * Math.PI * Math.random();\n\n\t\tconst u3 = 2 * Math.PI * Math.random();\n\n\t\treturn this.set(\n\t\t\tsqrt1u1 * Math.cos( u2 ),\n\t\t\tsqrtu1 * Math.sin( u3 ),\n\t\t\tsqrtu1 * Math.cos( u3 ),\n\t\t\tsqrt1u1 * Math.sin( u2 ),\n\t\t);\n\n\t}\n\n\tequals( 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( array, 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( array = [], 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( 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( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._w;\n\n\t}\n\n}\n\nQuaternion.prototype.isQuaternion = true;\n\nexport { Quaternion };\n","import * as MathUtils from './MathUtils.js';\nimport { Quaternion } from './Quaternion.js';\n\nclass Vector3 {\n\n\tconstructor( x = 0, y = 0, z = 0 ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t}\n\n\tset( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\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( 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( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( 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( 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() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t}\n\n\tcopy( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion.setFromAxisAngle( axis, angle ) );\n\n\t}\n\n\tapplyMatrix3( 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( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t}\n\n\tapplyMatrix4( 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( 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( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t}\n\n\tunproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t}\n\n\ttransformDirection( 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( 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( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tmin( 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( 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( 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( 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( 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() {\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() {\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() {\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() {\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() {\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( 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() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( 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( 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( 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( 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( 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( planeNormal ) {\n\n\t\t_vector.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector );\n\n\t}\n\n\treflect( 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( 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( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( 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( 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( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t}\n\n\tsetFromSphericalCoords( 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( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t}\n\n\tsetFromCylindricalCoords( 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( 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( 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( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t}\n\n\tsetFromMatrix3Column( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t}\n\n\tsetFromEuler( e ) {\n\n\t\tthis.x = e._x;\n\t\tthis.y = e._y;\n\t\tthis.z = e._z;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t}\n\n\tfromArray( array, 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( array = [], 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( 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() {\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\trandomDirection() {\n\n\t\t// Derived from https://mathworld.wolfram.com/SpherePointPicking.html\n\n\t\tconst u = ( Math.random() - 0.5 ) * 2;\n\t\tconst t = Math.random() * Math.PI * 2;\n\t\tconst f = Math.sqrt( 1 - u ** 2 );\n\n\t\tthis.x = f * Math.cos( t );\n\t\tthis.y = f * Math.sin( t );\n\t\tthis.z = u;\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\n\t}\n\n}\n\nVector3.prototype.isVector3 = true;\n\nconst _vector = /*@__PURE__*/ new Vector3();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\n\nexport { Vector3 };\n","import { Vector3 } from './Vector3.js';\n\nclass Matrix4 {\n\n\tconstructor() {\n\n\t\tthis.elements = [\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\tif ( arguments.length > 0 ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t\t}\n\n\t}\n\n\tset( 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() {\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() {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t}\n\n\tcopy( 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( 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\tsetFromMatrix3( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ], 0,\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ], 0,\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ], 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( 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( 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( 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( 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( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t}\n\n\tlookAt( 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( 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( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( 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( 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() {\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() {\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( 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\tinvert() {\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\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ], n41 = te[ 3 ],\n\t\t\tn12 = te[ 4 ], n22 = te[ 5 ], n32 = te[ 6 ], n42 = te[ 7 ],\n\t\t\tn13 = te[ 8 ], n23 = te[ 9 ], n33 = te[ 10 ], n43 = te[ 11 ],\n\t\t\tn14 = te[ 12 ], n24 = te[ 13 ], n34 = te[ 14 ], n44 = te[ 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( 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() {\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( 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( 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( 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( 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( 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\treturn this;\n\n\t}\n\n\tmakeScale( 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( xy, xz, yx, yz, zx, zy ) {\n\n\t\tthis.set(\n\n\t\t\t1, yx, zx, 0,\n\t\t\txy, 1, zy, 0,\n\t\t\txz, yz, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcompose( 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( 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\tconst sy = _v1.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tconst 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( 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( 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( 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( array, 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( array = [], 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\nMatrix4.prototype.isMatrix4 = true;\n\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _m1 = /*@__PURE__*/ new Matrix4();\nconst _zero = /*@__PURE__*/ new Vector3( 0, 0, 0 );\nconst _one = /*@__PURE__*/ new Vector3( 1, 1, 1 );\nconst _x = /*@__PURE__*/ new Vector3();\nconst _y = /*@__PURE__*/ new Vector3();\nconst _z = /*@__PURE__*/ new Vector3();\n\nexport { Matrix4 };\n","/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nclass EventDispatcher {\n\n\taddEventListener( 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( 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( 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( 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\tevent.target = null;\n\n\t\t}\n\n\t}\n\n}\n\n\nexport { EventDispatcher };\n","import { Quaternion } from './Quaternion.js';\nimport { Matrix4 } from './Matrix4.js';\nimport { clamp } from './MathUtils.js';\n\nconst _matrix = /*@__PURE__*/ new Matrix4();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\n\nclass Euler {\n\n\tconstructor( x = 0, y = 0, z = 0, order = Euler.DefaultOrder ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget order() {\n\n\t\treturn this._order;\n\n\t}\n\n\tset order( value ) {\n\n\t\tthis._order = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, order = this._order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t}\n\n\tcopy( 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( m, order = this._order, update = true ) {\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\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 === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromQuaternion( 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( v, order = this._order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order );\n\n\t}\n\n\treorder( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion, newOrder );\n\n\t}\n\n\tequals( 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( 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( array = [], 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\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._order;\n\n\t}\n\n}\n\nEuler.prototype.isEuler = true;\n\nEuler.DefaultOrder = 'XYZ';\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nexport { Euler };\n","class Layers {\n\n\tconstructor() {\n\n\t\tthis.mask = 1 | 0;\n\n\t}\n\n\tset( channel ) {\n\n\t\tthis.mask = ( 1 << channel | 0 ) >>> 0;\n\n\t}\n\n\tenable( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t}\n\n\tenableAll() {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t}\n\n\ttoggle( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t}\n\n\tdisable( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t}\n\n\tdisableAll() {\n\n\t\tthis.mask = 0;\n\n\t}\n\n\ttest( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n\tisEnabled( channel ) {\n\n\t\treturn ( this.mask & ( 1 << channel | 0 ) ) !== 0;\n\n\t}\n\n}\n\n\nexport { Layers };\n","class Matrix3 {\n\n\tconstructor() {\n\n\t\tthis.elements = [\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\tif ( arguments.length > 0 ) {\n\n\t\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t\t}\n\n\t}\n\n\tset( 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() {\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\tcopy( 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( 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( 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( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( 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( 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() {\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\tinvert() {\n\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ],\n\t\t\tn12 = te[ 3 ], n22 = te[ 4 ], n32 = te[ 5 ],\n\t\t\tn13 = te[ 6 ], n23 = te[ 7 ], n33 = te[ 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() {\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( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).invert().transpose();\n\n\t}\n\n\ttransposeIntoArray( 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( 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\treturn this;\n\n\t}\n\n\tscale( 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( 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( 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( 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( array, 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( array = [], 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\tclone() {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t}\n\n}\n\nMatrix3.prototype.isMatrix3 = true;\n\nexport { Matrix3 };\n","import { Quaternion } from '../math/Quaternion.js';\nimport { Vector3 } from '../math/Vector3.js';\nimport { Matrix4 } from '../math/Matrix4.js';\nimport { EventDispatcher } from './EventDispatcher.js';\nimport { Euler } from '../math/Euler.js';\nimport { Layers } from './Layers.js';\nimport { Matrix3 } from '../math/Matrix3.js';\nimport * as MathUtils from '../math/MathUtils.js';\n\nlet _object3DId = 0;\n\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _q1 = /*@__PURE__*/ new Quaternion();\nconst _m1 = /*@__PURE__*/ new Matrix4();\nconst _target = /*@__PURE__*/ new Vector3();\n\nconst _position = /*@__PURE__*/ new Vector3();\nconst _scale = /*@__PURE__*/ new Vector3();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\n\nconst _xAxis = /*@__PURE__*/ new Vector3( 1, 0, 0 );\nconst _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nconst _zAxis = /*@__PURE__*/ new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\nclass Object3D extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\t\tthis.uuid = MathUtils.generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Object3D';\n\n\t\tthis.parent = null;\n\t\tthis.children = [];\n\n\t\tthis.up = Object3D.DefaultUp.clone();\n\n\t\tconst position = new Vector3();\n\t\tconst rotation = new Euler();\n\t\tconst quaternion = new Quaternion();\n\t\tconst scale = new Vector3( 1, 1, 1 );\n\n\t\tfunction onRotationChange() {\n\n\t\t\tquaternion.setFromEuler( rotation, false );\n\n\t\t}\n\n\t\tfunction onQuaternionChange() {\n\n\t\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t\t}\n\n\t\trotation._onChange( onRotationChange );\n\t\tquaternion._onChange( onQuaternionChange );\n\n\t\tObject.defineProperties( this, {\n\t\t\tposition: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: position\n\t\t\t},\n\t\t\trotation: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: rotation\n\t\t\t},\n\t\t\tquaternion: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: quaternion\n\t\t\t},\n\t\t\tscale: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: scale\n\t\t\t},\n\t\t\tmodelViewMatrix: {\n\t\t\t\tvalue: new Matrix4()\n\t\t\t},\n\t\t\tnormalMatrix: {\n\t\t\t\tvalue: new Matrix3()\n\t\t\t}\n\t\t} );\n\n\t\tthis.matrix = new Matrix4();\n\t\tthis.matrixWorld = new Matrix4();\n\n\t\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\tthis.layers = new Layers();\n\t\tthis.visible = true;\n\n\t\tthis.castShadow = false;\n\t\tthis.receiveShadow = false;\n\n\t\tthis.frustumCulled = true;\n\t\tthis.renderOrder = 0;\n\n\t\tthis.animations = [];\n\n\t\tthis.userData = {};\n\n\t}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tonAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tapplyMatrix4( 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( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t}\n\n\tsetRotationFromAxisAngle( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t}\n\n\tsetRotationFromEuler( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t}\n\n\tsetRotationFromMatrix( 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( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t}\n\n\trotateOnAxis( 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( 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( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t}\n\n\trotateY( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t}\n\n\ttranslateOnAxis( 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.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslateX( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t}\n\n\ttranslateY( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t}\n\n\ttranslateZ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t}\n\n\tlocalToWorld( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t}\n\n\tworldToLocal( vector ) {\n\n\t\treturn vector.applyMatrix4( _m1.copy( this.matrixWorld ).invert() );\n\n\t}\n\n\tlookAt( 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.lookAt( _position, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1.lookAt( _target, _position, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1 );\n\t\t\tthis.quaternion.premultiply( _q1.invert() );\n\n\t\t}\n\n\t}\n\n\tadd( 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( 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\tremoveFromParent() {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tparent.remove( this );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclear() {\n\n\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\tconst object = this.children[ i ];\n\n\t\t\tobject.parent = null;\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\tthis.children.length = 0;\n\n\t\treturn this;\n\n\n\t}\n\n\tattach( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\t// Note: This method does not support scene graphs having non-uniformly-scaled nodes(s)\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1.copy( this.matrixWorld ).invert();\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1 );\n\n\t\tthis.add( object );\n\n\t\tobject.updateWorldMatrix( false, true );\n\n\t\treturn this;\n\n\t}\n\n\tgetObjectById( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t}\n\n\tgetObjectByName( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t}\n\n\tgetObjectByProperty( 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( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t}\n\n\tgetWorldQuaternion( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position, target, _scale );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldScale( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion, target );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\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( /* raycaster, intersects */ ) {}\n\n\ttraverse( 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( 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( 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() {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\tupdateMatrixWorld( 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( 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( 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\tskeletons: {},\n\t\t\t\tanimations: {},\n\t\t\t\tnodes: {}\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\t\t\tif ( this.instanceColor !== null ) object.instanceColor = this.instanceColor.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.isScene ) {\n\n\t\t\tif ( this.background ) {\n\n\t\t\t\tif ( this.background.isColor ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON();\n\n\t\t\t\t} else if ( this.background.isTexture ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON( meta ).uuid;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.environment && this.environment.isTexture ) {\n\n\t\t\t\tobject.environment = this.environment.toJSON( meta ).uuid;\n\n\t\t\t}\n\n\t\t} else if ( 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.isSkinnedMesh ) {\n\n\t\t\tobject.bindMode = this.bindMode;\n\t\t\tobject.bindMatrix = this.bindMatrix.toArray();\n\n\t\t\tif ( this.skeleton !== undefined ) {\n\n\t\t\t\tserialize( meta.skeletons, this.skeleton );\n\n\t\t\t\tobject.skeleton = this.skeleton.uuid;\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\t//\n\n\t\tif ( this.animations.length > 0 ) {\n\n\t\t\tobject.animations = [];\n\n\t\t\tfor ( let i = 0; i < this.animations.length; i ++ ) {\n\n\t\t\t\tconst animation = this.animations[ i ];\n\n\t\t\t\tobject.animations.push( serialize( meta.animations, animation ) );\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\t\t\tconst skeletons = extractFromCache( meta.skeletons );\n\t\t\tconst animations = extractFromCache( meta.animations );\n\t\t\tconst nodes = extractFromCache( meta.nodes );\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\t\t\tif ( skeletons.length > 0 ) output.skeletons = skeletons;\n\t\t\tif ( animations.length > 0 ) output.animations = animations;\n\t\t\tif ( nodes.length > 0 ) output.nodes = nodes;\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( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t}\n\n\tcopy( source, 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.rotation.order = source.rotation.order;\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\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nObject3D.prototype.isObject3D = true;\n\nexport { Object3D };\n","import { Matrix4 } from '../math/Matrix4.js';\nimport { Object3D } from '../core/Object3D.js';\n\nclass Camera extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'Camera';\n\n\t\tthis.matrixWorldInverse = new Matrix4();\n\n\t\tthis.projectionMatrix = new Matrix4();\n\t\tthis.projectionMatrixInverse = new Matrix4();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( 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( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\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( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tsuper.updateWorldMatrix( updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nCamera.prototype.isCamera = true;\n\nexport { Camera };\n","import { Camera } from './Camera.js';\n\nclass OrthographicCamera extends Camera {\n\n\tconstructor( left = - 1, right = 1, top = 1, bottom = - 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'OrthographicCamera';\n\n\t\tthis.zoom = 1;\n\t\tthis.view = null;\n\n\t\tthis.left = left;\n\t\tthis.right = right;\n\t\tthis.top = top;\n\t\tthis.bottom = bottom;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( 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( 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() {\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() {\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.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( 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\nOrthographicCamera.prototype.isOrthographicCamera = true;\n\nexport { OrthographicCamera };\n","import TemplateContents from './TemplateContents';\n\nimport * as THREE from 'three';\nimport { OrthographicCamera } from 'three/src/cameras/OrthographicCamera';\n\nexport default class extends TemplateContents{\n constructor(param){\n super(param);\n }\n\n init() {\n super.init();\n\n this.initShader();\n this.initWebGL();\n this.initMesh();\n this.resizeHandler();\n\n // this.pack.common.addScrollTarget(this);\n // this.pack.common.addEnterframeTarget(this);\n }\n\n reset(){\n super.reset();\n\n this.setVars();\n // this.pack.common.addScrollTarget(this);\n // this.pack.common.addEnterframeTarget(this);\n }\n\n destruct(){\n super.destruct();\n\n // this.pack.common.removeScrollTarget(this);\n // this.pack.common.removeEnterframeTarget(this);\n }\n\n setVars(){\n super.setVars();\n this.scales = [];\n this.baseScale = 0;\n }\n\n setDom(){\n super.setDom();\n this.loading = document.querySelector('#loading');\n this.canvas = document.createElement(\"canvas\");\n this.loadingCavasContainer = document.querySelector('#loading .canvasContainer');\n this.loadingCavasContainer.appendChild(this.canvas);\n this.loadingText = document.querySelector('#loading .text');\n this.loadingImg = document.querySelector('#loading img');\n }\n\n initEvents(){\n super.initEvents();\n }\n\n initShader() {\n this.vertexShaderSrc = `\n attribute float scale;\n uniform float size;\n \n void main() {\n vec4 mvPosition = modelViewMatrix * vec4(position, 1.0); \n gl_PointSize = size * scale;\n gl_Position = projectionMatrix * mvPosition;\n }\n `;\n\n this.fragmentShaderSrc = `\n uniform sampler2D tex;\n \n void main() {\n if(texture2D(tex, gl_PointCoord).a < .75) gl_FragColor = vec4(1., 1., 1., 0.); //alphaTest\n else gl_FragColor = vec4(1., 1., 1., 1.) * texture2D(tex, gl_PointCoord);\n }\n `;\n }\n\n initWebGL() {\n this.renderer = new THREE.WebGLRenderer({\n canvas: this.canvas,\n alpha : false,\n antialias : false\n });\n // this.renderer.setPixelRatio(window.devicePixelRatio);\n this.renderer.setPixelRatio(1);\n this.renderer.setSize(this.sw, this.sh);\n this.renderer.autoClear = false;\n\n\n this.scene = new THREE.Scene();\n // this.scene.background = new THREE.Color( 0xE8FAFE );\n\n\n //Camera\n this.camera = new OrthographicCamera(-this.swh, this.swh, this.shh, -this.shh, 0.1, 10000);\n this.camera.position.set(0, 0, 10);\n\n }\n\n initMesh(){\n /*\n // for debug\n let geometry = new THREE.PlaneGeometry( 200, 200, 4 );\n var material = new THREE.MeshBasicMaterial( {color: 0xff0000, opacity:1, side: THREE.DoubleSide} );\n this.plane = new THREE.Mesh( geometry, material );\n this.scene.add( this.plane );\n */\n\n const texture = new THREE.TextureLoader().load( '/assets/img/common/kadomaru64.png' );\n\n this.setVariable();\n this.resizeMesh();\n this.setCntsForScale();\n\n this.material = new THREE.ShaderMaterial({\n uniforms:{\n size: {\n type: 'f',\n value: this.size\n },\n tex: {\n type: 't',\n value: texture\n }\n },\n vertexShader: this.vertexShaderSrc,\n fragmentShader: this.fragmentShaderSrc,\n transparent: true,\n });\n\n // 形状データを作成\n this.geometry = new THREE.BufferGeometry();\n this.geometry.setAttribute('position', new THREE.Float32BufferAttribute(this.vertices, 3));\n\n // 物体を作成\n const mesh = new THREE.Points(this.geometry, this.material);\n this.scene.add(mesh);\n }\n\n start(){\n\n }\n\n completeLoading(scope, callback, callback2){\n TweenMax.to(this, 2, {baseScale: 2.2, ease:Linear.easeOut, onComplete:()=>{\n this.hideLoading();\n callback.apply(scope);\n }});\n\n TweenMax.delayedCall(4.0, ()=>{\n callback2.apply(scope);\n });\n }\n\n hideLoading(){\n this.isCompleteLoading = true;\n\n //サイズの不揃い\n for( let i = 0, len = this.scales.length; i < len; i++ ){\n this.scales[i] = 2.2 * (1 + Math.floor(Math.random() * 5));\n }\n this.loading.classList.add(\"hide\");\n }\n\n scrollHandler(){\n\n }\n\n render(){\n this.renderer.render(this.scene, this.camera);\n }\n\n enterframe(){\n\n }\n\n enterframeThinOut(){\n if(this.isCompleteLoading){\n for( let i = 0; i < this.scales.length; i++ ){\n let scale = this.scales[i];\n scale += (0 - scale) / 10;\n this.scales[i] = scale;\n }\n }else{\n for( let i = 0; i < this.cntsForScale.length; i++ ){\n this.cntsForScale[i] += 11;\n let rad = this.pack.d2r(this.cntsForScale[i]);\n let sin = this.baseScale + (Math.sin(rad) + 1) * .5;\n this.scales[i] = sin;\n }\n }\n\n this.geometry.setAttribute('scale', new THREE.Float32BufferAttribute(this.scales, 1));\n // this.material.uniforms.time.value += 3;\n this.render();\n }\n\n resizeMesh(){\n this.vertices = []; //// 頂点情報を格納する配列\n let baseRatio = this.baseW / this.baseH;\n let stageRatio = this.sw / this.sh;\n let scale;\n if(stageRatio >= baseRatio) scale = this.sw / this.baseW;\n else scale = this.sh / this.baseH;\n\n this.size = this.baseSize * scale;\n this.gridSize = this.baseGridSize * scale;\n this.gridSizeH = this.gridSize / 2;\n\n let adjustX = (this.lenX / 2) * this.gridSize;\n let adjustY = (this.lenY / 2) * this.gridSize;\n for( let i = 0; i < this.lenX; i++ ){\n for( let j = 0; j < this.lenY; j++ ){\n const x = this.gridSize * i + this.gridSizeH - adjustX;\n const y = this.gridSize * j + this.gridSizeH - adjustY;\n const z = 0;\n this.vertices.push(x, y, z);\n }\n }\n }\n\n setVariable(){\n if(this.sw >= this.pack.BP){\n this.baseSize = 30;\n this.baseGridSize = 40;\n this.baseW = 1440;\n this.baseH = 789;\n this.lenX = 36;\n this.lenY = 20;\n }else{\n this.baseSize = 15;\n this.baseGridSize = 21;\n this.baseW = 375;\n this.baseH = 627;\n this.lenX = 18;\n this.lenY = 30;\n }\n }\n\n setCntsForScale(){\n this.cntsForScale = [];\n for( let i = 0; i < this.lenX; i++ ){\n for( let j = 0; j < this.lenY; j++ ){\n this.cntsForScale.push(-i * 10 - j * 10);\n }\n }\n }\n\n executeResize() {\n super.executeResize();\n\n this.canvas.width = this.sw;\n this.canvas.height = this.sh;\n\n if(!this.camera) return;\n this.camera.left = -this.swh;\n this.camera.right = this.swh;\n this.camera.top = this.shh;\n this.camera.bottom = -this.shh;\n\n this.camera.aspect = this.sw / this.sh;\n this.camera.updateProjectionMatrix();\n this.renderer.setSize(this.sw, this.sh);\n\n this.loading.style.height = this.sh + 'px';\n this.loadingImg.style.top = this.shh + \"px\";\n\n this.setVariable();\n this.resizeMesh();\n this.setCntsForScale();\n this.material.uniforms.size.value = this.size;\n this.geometry.setAttribute('position', new THREE.Float32BufferAttribute(this.vertices, 3));\n }\n}\n","import TemplateContents from './TemplateContents';\nimport LoadingView from './LoadingView';\n\nexport default class extends TemplateContents{\n constructor(param){\n super(param);\n }\n\n init() {\n super.init();\n this.pack.view = new LoadingView(this.pack);\n\n // this.pack.common.addScrollTarget(this);\n // this.pack.common.addEnterframeTarget(this);\n }\n\n reset(){\n super.reset();\n\n this.setVars();\n // this.pack.common.addScrollTarget(this);\n // this.pack.common.addEnterframeTarget(this);\n }\n\n destruct(){\n super.destruct();\n\n // this.pack.common.removeScrollTarget(this);\n // this.pack.common.removeEnterframeTarget(this);\n }\n\n setVars(){\n super.setVars();\n\n this.loaded = false;\n this.per = 0;\n this.PI = Math.PI;\n this.defStrokeDashoffsetPC = 242 * this.PI;\n this.defStrokeDashoffsetSP = 160 * this.PI;\n }\n\n setDom(){\n super.setDom();\n\n this.loading = document.querySelector('#loading');\n }\n\n initEvents(){\n super.initEvents();\n }\n\n start(){\n this.loading.classList.add(\"show\");\n }\n\n completeLoading(){\n this.pack.view.completeLoading(this, this.callback, this.callback2);\n }\n\n callback(){\n this.dispatchEvent(\"readyComplete\");\n }\n\n callback2(){\n this.loading.remove();\n this.dispatchEvent(\"complete\");\n }\n\n scrollHandler(){\n\n }\n\n\n enterframe(){\n\n }\n\n enterframeThinOut(){\n this.pack.view.enterframeThinOut();\n if(this.loaded) return;\n this.per += 3;\n if(this.per >= 100) this.per = 100;\n\n\n if(this.per >= 100 && this.pack.common.loadedContentful && this.pack.hero.loaded){\n this.loaded = true;\n this.completeLoading();\n }\n }\n\n executeResize() {\n super.executeResize();\n }\n}","import TemplateContents from './TemplateContents';\n\nimport * as THREE from 'three';\nimport { OrthographicCamera } from 'three/src/cameras/OrthographicCamera';\n\nexport default class extends TemplateContents{\n constructor(param){\n super(param);\n }\n\n init() {\n super.init();\n\n this.initShader();\n this.initWebGL();\n this.initMesh();\n this.resizeHandler();\n\n // this.pack.common.addScrollTarget(this);\n // this.pack.common.addEnterframeTarget(this);\n }\n\n reset(){\n super.reset();\n\n this.setVars();\n // this.pack.common.addScrollTarget(this);\n // this.pack.common.addEnterframeTarget(this);\n }\n\n destruct(){\n super.destruct();\n\n // this.pack.common.removeScrollTarget(this);\n // this.pack.common.removeEnterframeTarget(this);\n }\n\n setVars(){\n super.setVars();\n this.isAdded = false;\n this.isHover = false;\n this.groupLen = 5;\n this.itemLenForOneGroup = 10;\n this.itemLenForOneGroupH = this.itemLenForOneGroup * .5;\n\n this.positionList;\n this.scale;\n this.oneGroupSize;\n this.adjustX, this.adjustY;\n this.moveAreaY;\n this.moveSpeed = .9;\n }\n\n setDom(){\n super.setDom();\n\n this.canvas = document.createElement(\"canvas\");\n }\n\n initEvents(){\n super.initEvents();\n this.bindMouseOverHandler = this.mouseOverHandler.bind(this);\n this.bindMouseOutHandler = this.mouseOutHandler.bind(this);\n }\n\n mouseOverHandler(event){\n this.isHover = true;\n }\n\n mouseOutHandler(event){\n this.isHover = false;\n }\n\n getDom(){\n this.container = document.querySelector('.next .canvasContainer');\n this.to_contact = document.querySelector('.next .to_contact');\n }\n\n initShader() {\n this.vertexShaderSrc = `\n attribute float scale;\n uniform float size;\n \n void main() {\n vec4 mvPosition = modelViewMatrix * vec4(position, 1.0); \n gl_PointSize = size * scale;\n gl_Position = projectionMatrix * mvPosition;\n }\n `;\n\n this.fragmentShaderSrc = `\n uniform sampler2D tex;\n \n void main() {\n if(texture2D(tex, gl_PointCoord).a < .5) gl_FragColor = vec4(1., 1., 1., 0.); //alphaTest\n else gl_FragColor = vec4(1., 1., 1., .3) * texture2D(tex, gl_PointCoord);\n }\n `;\n }\n\n initWebGL() {\n this.renderer = new THREE.WebGLRenderer({\n canvas: this.canvas,\n alpha : false,\n antialias : false\n });\n // this.renderer.setPixelRatio(window.devicePixelRatio);\n this.renderer.setPixelRatio(1);\n this.renderer.setSize(this.sw, this.sh);\n this.renderer.autoClear = false;\n\n this.scene = new THREE.Scene();\n // this.scene.background = new THREE.Color( 0xE8FAFE );\n\n //Camera\n this.camera = new OrthographicCamera(-this.swh, this.swh, this.shh, -this.shh, 0.1, 10000);\n this.camera.position.set(0, 0, 10);\n }\n\n initMesh(){\n /*\n // for debug\n let geometry = new THREE.PlaneGeometry( 200, 200, 4 );\n var material = new THREE.MeshBasicMaterial( {color: 0xff0000, opacity:1, side: THREE.DoubleSide} );\n this.plane = new THREE.Mesh( geometry, material );\n this.scene.add( this.plane );\n */\n\n const texture = new THREE.TextureLoader().load( '/assets/img/common/kadomaru_next128.png' );\n\n this.setVariable();\n this.resizeMesh();\n\n this.material = new THREE.ShaderMaterial({\n uniforms:{\n size: {\n type: 'f',\n value: this.size\n },\n tex: {\n type: 't',\n value: texture\n }\n },\n vertexShader: this.vertexShaderSrc,\n fragmentShader: this.fragmentShaderSrc,\n transparent: true,\n });\n\n // 形状データを作成\n this.geometry = new THREE.BufferGeometry();\n this.geometry.setAttribute('position', new THREE.Float32BufferAttribute(this.vertices, 3));\n\n // 物体を作成\n const mesh = new THREE.Points(this.geometry, this.material);\n this.scene.add(mesh);\n }\n\n add(){\n this.getDom();\n this.container.appendChild(this.canvas);\n this.isAdded = true;\n\n if(!this.pack.hasTouch){\n this.to_contact.addEventListener(\"mouseover\", this.bindMouseOverHandler);\n this.to_contact.addEventListener(\"mouseout\", this.bindMouseOutHandler);\n }\n }\n\n remove(){\n this.canvas.remove();\n this.isAdded = false;\n\n if(!this.pack.hasTouch){\n this.to_contact.removeEventListener(\"mouseover\", this.bindMouseOverHandler);\n this.to_contact.removeEventListener(\"mouseout\", this.bindMouseOutHandler);\n }\n }\n\n start(){\n\n }\n\n render(){\n this.renderer.render(this.scene, this.camera);\n }\n\n scrollHandler(){\n\n }\n\n\n enterframe(){\n\n }\n\n enterframeThinOut(){\n this.vertices = [];\n this.scales = [];\n\n if(this.isHover){\n for( let h = 0; h < this.groupLen; h++ ){\n let scale;\n\n if(h === 2) scale = 1;\n else scale = 0;\n\n for( let i = 0; i < this.itemLenForOneGroup; i++ ){\n let p = this.positionHoverList[i];\n const x = p.x + this.adjustHoverX;\n const y = p.y;\n const z = 0;\n if(h === 2 && i > 8) scale = 0;\n\n let easeP = this.easeVertices[h][i];\n if(scale === 1){\n let ease = p.ease;\n easeP.x += (x - easeP.x) * ease;\n easeP.y += (y - easeP.y) * ease;\n }\n\n let easeS = this.easeScales[h][i];\n easeS.scale += (scale - easeS.scale) * .3;\n\n this.vertices.push(easeP.x, easeP.y, z);\n this.scales.push(easeS.scale);\n }\n }\n }else{\n for( let h = 0; h < this.groupLen; h++ ){\n for( let i = 0; i < this.itemLenForOneGroup; i++ ){\n let p = this.positionList[i];\n if(i < this.itemLenForOneGroupH) p.deg += this.moveSpeed;\n else p.deg -= this.moveSpeed;\n\n const x = p.x + this.oneGroupSize * h - this.adjustX;\n const y = Math.sin(this.pack.d2r(p.deg)) * this.moveAreaY + this.adjustY;\n const z = 0;\n const scale = p.scale;\n\n let easeP = this.easeVertices[h][i];\n easeP.x += (x - easeP.x) * .3;\n easeP.y += (y - easeP.y) * .3;\n\n\n let easeS = this.easeScales[h][i];\n easeS.scale += (scale - easeS.scale) * .3;\n\n this.vertices.push(easeP.x, easeP.y, z);\n this.scales.push(easeS.scale);\n }\n }\n }\n\n this.geometry.setAttribute('position', new THREE.Float32BufferAttribute(this.vertices, 3));\n this.geometry.setAttribute('scale', new THREE.Float32BufferAttribute(this.scales, 1));\n\n if(this.isAdded) this.render();\n }\n\n resizeMesh(){\n this.vertices = []; //// 頂点情報を格納する配列\n this.scales = [];\n this.easeVertices = [];\n this.easeScales = [];\n\n this.scale = this.sw / this.baseW;\n this.size = this.baseSize * this.scale;\n this.oneGroupSize = (this.size * 5);\n this.adjustX = (this.size * 5) * 2;\n this.adjustY = this.baseY * this.scale;\n this.adjustHoverX = this.baseHoverX * this.scale;\n let singleDeg = 360 / this.itemLenForOneGroup;\n this.moveAreaY = this.size * 2.5;\n\n this.positionList = [\n {x: -this.size * 2, y: this.size, deg: 0, scale:1},\n {x: -this.size * 1, y: this.size * 2, deg: singleDeg * 1, scale:1},\n {x: 0, y: this.size * 3, deg: singleDeg * 2, scale:1},\n {x: this.size * 1, y: this.size * 2, deg: singleDeg * 3, scale:1},\n {x: this.size * 2, y: this.size * 1, deg: singleDeg * 4, scale:1},\n {x: this.size * 2, y: 0, deg: -singleDeg * 4, scale:1},\n {x: this.size * 1, y: -this.size * 1, deg: -singleDeg * 3, scale:1},\n {x: 0, y: -this.size * 2, deg: -singleDeg * 2, scale:1},\n {x: -this.size * 1, y: -this.size * 1, deg: -singleDeg * 1, scale:1},\n {x: -this.size * 2, y: 0, deg: 0, scale:1},\n ];\n\n this.positionHoverList = [\n {x: -this.size * 3, y: 0, ease:.25},\n {x: -this.size * 2, y: 0, ease:.5},\n {x: -this.size * 1, y: 0, ease:.35},\n {x: 0, y: this.size * 2, ease:.25},\n {x: 0, y: 0, ease:.8},\n {x: 0, y: -this.size * 2, ease:.45},\n {x: this.size * 1, y: this.size * 1, ease:.5},\n {x: this.size * 1, y: -this.size * 1, ease:.35},\n {x: this.size * 2, y: 0, ease:.45},\n {x: 0, y: 0, ease:.2},\n ];\n\n for( let h = 0; h < this.groupLen; h++ ){\n this.easeVertices[h] = [];\n this.easeScales[h] = [];\n for( let i = 0; i < this.itemLenForOneGroup; i++ ){\n let p = this.positionList[i];\n const x = p.x + this.oneGroupSize * h - this.adjustX;\n const y = this.adjustY;\n const z = 0;\n const scale = p.scale;\n this.easeVertices[h][i] = {x:x,y:y,z:z};\n this.easeScales[h][i] = {scale:p.scale};\n this.vertices.push(x, y, z);\n this.scales.push(scale);\n }\n }\n }\n\n setVariable(){\n if(this.sw >= this.pack.BP){\n this.baseSize = 80;\n this.baseW = 1440;\n this.baseH = 789;\n this.baseY = 6;\n this.baseHoverX = 40;\n }else{\n this.baseSize = 40;\n this.baseW = 375;\n this.baseH = 627;\n this.baseY = -2;\n this.baseHoverX = 20;\n }\n }\n\n\n executeResize() {\n super.executeResize();\n\n if(!this.canvas) return;\n\n if(this.sw < this.pack.BP) {\n this.sh = this.sh * .604;\n this.shh = this.sh * .5;\n }\n\n this.canvas.width = this.sw;\n this.canvas.height = this.sh;\n if(!this.camera) return;\n this.camera.left = -this.swh;\n this.camera.right = this.swh;\n this.camera.top = this.shh;\n this.camera.bottom = -this.shh;\n\n this.camera.aspect = this.sw / this.sh;\n this.camera.updateProjectionMatrix();\n this.renderer.setSize(this.sw, this.sh);\n\n this.setVariable();\n this.resizeMesh();\n\n this.material.uniforms.size.value = this.size;\n this.geometry.setAttribute('position', new THREE.Float32BufferAttribute(this.vertices, 3));\n }\n}","import TemplateContents from './TemplateContents';\n\nimport * as THREE from 'three';\nimport { OrthographicCamera } from 'three/src/cameras/OrthographicCamera';\n\nexport default class extends TemplateContents{\n constructor(param){\n super(param);\n }\n\n init() {\n this.sw, this.sh;\n this.enterframeID;\n\n this.setVars();\n this.setDom();\n this.bindResizeHandler = this.resizeHandler.bind(this);\n this.hasTouch = (\"ontouchstart\" in window);\n // this.resizeEvent = this.hasTouch ? 'orientationchange' : 'resize';\n this.resizeEvent = 'resize';\n\n this.initEvents();\n this.initShader();\n this.initWebGL();\n this.initMesh();\n this.resizeHandler();\n\n // this.pack.common.addScrollTarget(this);\n // this.pack.common.addEnterframeTarget(this);\n }\n\n reset(){\n super.reset();\n\n this.setVars();\n // this.pack.common.addScrollTarget(this);\n // this.pack.common.addEnterframeTarget(this);\n }\n\n destruct(){\n super.destruct();\n\n // this.pack.common.removeScrollTarget(this);\n // this.pack.common.removeEnterframeTarget(this);\n }\n\n setVars(){\n super.setVars();\n this.enabled = false;\n this.scales = [];\n this.baseScale = 0;\n\n this.isTransitIn = false;\n this.isTransitOut = false;\n }\n\n setDom(){\n super.setDom();\n this.canvasContainer = document.querySelector('#transition');\n this.canvas = document.querySelector('#transition canvas');\n }\n\n initEvents(){\n super.initEvents();\n }\n\n initShader() {\n this.vertexShaderSrc = `\n attribute float scale;\n uniform float size;\n \n void main() {\n vec4 mvPosition = modelViewMatrix * vec4(position, 1.0); \n gl_PointSize = size * scale;\n gl_Position = projectionMatrix * mvPosition;\n }\n `;\n\n this.fragmentShaderSrc = `\n uniform sampler2D tex;\n \n void main() {\n if(texture2D(tex, gl_PointCoord).a < .75) gl_FragColor = vec4(1., 1., 1., 0.); //alphaTest\n else gl_FragColor = vec4(1., 1., 1., 1.) * texture2D(tex, gl_PointCoord);\n }\n `;\n }\n\n initWebGL() {\n this.renderer = new THREE.WebGLRenderer({\n canvas: this.canvas,\n alpha : false,\n antialias : false\n });\n // this.renderer.setPixelRatio(window.devicePixelRatio);\n this.renderer.setPixelRatio(1);\n this.renderer.setSize(this.sw, this.sh);\n this.renderer.autoClear = false;\n\n\n this.scene = new THREE.Scene();\n // this.scene.background = new THREE.Color( 0xE8FAFE );\n\n\n //Camera\n this.camera = new OrthographicCamera(-this.swh, this.swh, this.shh, -this.shh, 0.1, 10000);\n this.camera.position.set(0, 0, 10);\n }\n\n initMesh(){\n const texture = new THREE.TextureLoader().load( '/assets/img/common/kadomaru64.png' );\n\n this.setVariable();\n this.resizeMesh();\n this.setCntsForScale();\n\n this.material = new THREE.ShaderMaterial({\n uniforms:{\n size: {\n type: 'f',\n value: this.size\n },\n tex: {\n type: 't',\n value: texture\n }\n },\n vertexShader: this.vertexShaderSrc,\n fragmentShader: this.fragmentShaderSrc,\n transparent: true,\n });\n\n // 形状データを作成\n this.geometry = new THREE.BufferGeometry();\n this.geometry.setAttribute('position', new THREE.Float32BufferAttribute(this.vertices, 3));\n\n // 物体を作成\n const mesh = new THREE.Points(this.geometry, this.material);\n this.scene.add(mesh);\n }\n\n transitIn(callback, scope){\n this.isTransitIn = true;\n this.setCntsForScale();\n this.update();\n this.enabled = true;\n this.canvasContainer.classList.add(\"show\");\n\n TweenMax.delayedCall(.1, ()=>{\n this.canvasContainer.classList.add(\"bigger\");\n });\n\n TweenMax.delayedCall(1.4, ()=>{\n this.isTransitIn = false;\n if(scope) callback.call(scope);\n else callback();\n });\n }\n\n transitOut(){\n this.isTransitOut = true;\n this.canvasContainer.classList.remove(\"bigger\");\n this.setCntsForScale(45);\n this.update();\n \n TweenMax.delayedCall(1.4, ()=>{\n this.isTransitOut = false;\n this.enabled = false;\n this.canvasContainer.classList.remove(\"show\");\n });\n }\n\n update(){\n\n let addCnt = 25;\n let magnitude = 2.9;\n\n if(this.isTransitIn){\n for( let i = 0; i < this.cntsForScale.length; i++ ){\n this.cntsForScale[i] += addCnt;\n if(this.cntsForScale[i] > 45) this.cntsForScale[i] = 45;\n\n let cnt = this.cntsForScale[i];\n if(cnt < 0) cnt = 0;\n\n let rad = this.pack.d2r(cnt);\n let sin = this.baseScale + Math.sin(rad) * magnitude;\n\n this.scales[i] = sin;\n }\n }else if(this.isTransitOut){\n for( let i = 0; i < this.cntsForScale.length; i++ ){\n this.cntsForScale[i] += addCnt;\n\n let cnt = this.cntsForScale[i];\n if(cnt < 45) cnt = 45;\n if(cnt > 360) cnt = 360;\n\n let rad = this.pack.d2r(cnt);\n let sin = this.baseScale + Math.sin(rad) * magnitude;\n if(sin < 0) sin = 0;\n\n this.scales[i] = sin;\n }\n }\n\n this.geometry.setAttribute('scale', new THREE.Float32BufferAttribute(this.scales, 1));\n\n this.render();\n }\n\n render(){\n this.renderer.render(this.scene, this.camera);\n }\n\n start(){\n\n }\n\n scrollHandler(){\n\n }\n\n\n enterframe(){\n\n }\n\n enterframeThinOut(){\n if(this.enabled) this.update();\n }\n\n resizeMesh(){\n this.vertices = []; //// 頂点情報を格納する配列\n let baseRatio = this.baseW / this.baseH;\n let stageRatio = this.sw / this.sh;\n let scale;\n if(stageRatio >= baseRatio) scale = this.sw / this.baseW;\n else scale = this.sh / this.baseH;\n\n this.size = this.baseSize * scale;\n this.gridSize = this.baseGridSize * scale;\n this.gridSizeH = this.gridSize / 2;\n\n let adjustX = (this.lenX / 2) * this.gridSize;\n let adjustY = (this.lenY / 2) * this.gridSize;\n for( let i = 0; i < this.lenX; i++ ){\n for( let j = 0; j < this.lenY; j++ ){\n const x = this.gridSize * i + this.gridSizeH - adjustX;\n const y = this.gridSize * j + this.gridSizeH - adjustY;\n const z = 0;\n this.vertices.push(x, y, z);\n }\n }\n }\n\n setVariable(){\n if(this.sw >= this.pack.BP){\n this.baseSize = 30;\n this.baseGridSize = 40;\n this.baseW = 1440;\n this.baseH = 789;\n this.lenX = 36;\n this.lenY = 20;\n }else{\n this.baseSize = 15;\n this.baseGridSize = 21;\n this.baseW = 375;\n this.baseH = 627;\n this.lenX = 18;\n this.lenY = 30;\n }\n }\n\n setCntsForScale(addNum){\n addNum = addNum || 0;\n\n this.cntsForScale = [];\n for( let i = 0; i < this.lenX; i++ ){\n for( let j = 0; j < this.lenY; j++ ){\n this.cntsForScale.push(-i * 10 - j * 10 + addNum);\n }\n }\n }\n\n executeResize() {\n super.executeResize();\n\n this.canvas.width = this.sw;\n this.canvas.height = this.sh;\n\n if(!this.camera) return;\n this.camera.left = -this.swh;\n this.camera.right = this.swh;\n this.camera.top = this.shh;\n this.camera.bottom = -this.shh;\n\n this.camera.aspect = this.sw / this.sh;\n this.camera.updateProjectionMatrix();\n this.renderer.setSize(this.sw, this.sh);\n\n this.setVariable();\n this.resizeMesh();\n this.setCntsForScale();\n this.material.uniforms.size.value = this.size;\n this.geometry.setAttribute('position', new THREE.Float32BufferAttribute(this.vertices, 3));\n }\n}\n","import TemplateContents from './TemplateContents';\n\nexport default class extends TemplateContents {\n constructor(param) {\n super(param);\n }\n\n init() {\n super.init();\n }\n\n reset() {\n super.reset();\n this.setVars();\n }\n\n destruct() {\n super.destruct();\n }\n\n setVars() {\n super.setVars();\n }\n\n setDom() {\n super.setDom();\n this.h1 = document.querySelector('main.cookie_policy h1');\n }\n\n initEvents() {\n super.initEvents();\n }\n\n setEvents() {}\n\n start() {\n this.setValues();\n TweenMax.delayedCall(0.9, () => {\n this.h1.classList.add('show');\n });\n }\n\n setValues() {\n this.setEvents();\n }\n\n scrollHandler() {}\n\n enterframe() {}\n\n enterframeThinOut() {}\n\n executeResize() {\n super.executeResize();\n }\n}\n","import {\n\tAnimationClip,\n\tBone,\n\tBox3,\n\tBufferAttribute,\n\tBufferGeometry,\n\tClampToEdgeWrapping,\n\tColor,\n\tDirectionalLight,\n\tDoubleSide,\n\tFileLoader,\n\tFrontSide,\n\tGroup,\n\tImageBitmapLoader,\n\tInterleavedBuffer,\n\tInterleavedBufferAttribute,\n\tInterpolant,\n\tInterpolateDiscrete,\n\tInterpolateLinear,\n\tLine,\n\tLineBasicMaterial,\n\tLineLoop,\n\tLineSegments,\n\tLinearFilter,\n\tLinearMipmapLinearFilter,\n\tLinearMipmapNearestFilter,\n\tLoader,\n\tLoaderUtils,\n\tMaterial,\n\tMathUtils,\n\tMatrix4,\n\tMesh,\n\tMeshBasicMaterial,\n\tMeshPhysicalMaterial,\n\tMeshStandardMaterial,\n\tMirroredRepeatWrapping,\n\tNearestFilter,\n\tNearestMipmapLinearFilter,\n\tNearestMipmapNearestFilter,\n\tNumberKeyframeTrack,\n\tObject3D,\n\tOrthographicCamera,\n\tPerspectiveCamera,\n\tPointLight,\n\tPoints,\n\tPointsMaterial,\n\tPropertyBinding,\n\tQuaternion,\n\tQuaternionKeyframeTrack,\n\tRepeatWrapping,\n\tSkeleton,\n\tSkinnedMesh,\n\tSphere,\n\tSpotLight,\n\tTangentSpaceNormalMap,\n\tTexture,\n\tTextureLoader,\n\tTriangleFanDrawMode,\n\tTriangleStripDrawMode,\n\tVector2,\n\tVector3,\n\tVectorKeyframeTrack,\n\tsRGBEncoding\n} from 'three';\n\nclass GLTFLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tthis.dracoLoader = null;\n\t\tthis.ktx2Loader = null;\n\t\tthis.meshoptDecoder = null;\n\n\t\tthis.pluginCallbacks = [];\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsClearcoatExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFTextureBasisUExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFTextureWebPExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsSheenExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsTransmissionExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsVolumeExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsIorExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsEmissiveStrengthExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsSpecularExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFLightsExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMeshoptCompression( parser );\n\n\t\t} );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tlet resourcePath;\n\n\t\tif ( this.resourcePath !== '' ) {\n\n\t\t\tresourcePath = this.resourcePath;\n\n\t\t} else if ( this.path !== '' ) {\n\n\t\t\tresourcePath = this.path;\n\n\t\t} else {\n\n\t\t\tresourcePath = LoaderUtils.extractUrlBase( url );\n\n\t\t}\n\n\t\t// Tells the LoadingManager to track an extra item, which resolves after\n\t\t// the model is fully loaded. This means the count of items loaded will\n\t\t// be incorrect, but ensures manager.onLoad() does not fire early.\n\t\tthis.manager.itemStart( url );\n\n\t\tconst _onError = function ( e ) {\n\n\t\t\tif ( onError ) {\n\n\t\t\t\tonError( e );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( e );\n\n\t\t\t}\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t};\n\n\t\tconst loader = new FileLoader( this.manager );\n\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tloader.load( url, function ( data ) {\n\n\t\t\ttry {\n\n\t\t\t\tscope.parse( data, resourcePath, function ( gltf ) {\n\n\t\t\t\t\tonLoad( gltf );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, _onError );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\t_onError( e );\n\n\t\t\t}\n\n\t\t}, onProgress, _onError );\n\n\t}\n\n\tsetDRACOLoader( dracoLoader ) {\n\n\t\tthis.dracoLoader = dracoLoader;\n\t\treturn this;\n\n\t}\n\n\tsetDDSLoader() {\n\n\t\tthrow new Error(\n\n\t\t\t'THREE.GLTFLoader: \"MSFT_texture_dds\" no longer supported. Please update to \"KHR_texture_basisu\".'\n\n\t\t);\n\n\t}\n\n\tsetKTX2Loader( ktx2Loader ) {\n\n\t\tthis.ktx2Loader = ktx2Loader;\n\t\treturn this;\n\n\t}\n\n\tsetMeshoptDecoder( meshoptDecoder ) {\n\n\t\tthis.meshoptDecoder = meshoptDecoder;\n\t\treturn this;\n\n\t}\n\n\tregister( callback ) {\n\n\t\tif ( this.pluginCallbacks.indexOf( callback ) === - 1 ) {\n\n\t\t\tthis.pluginCallbacks.push( callback );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tunregister( callback ) {\n\n\t\tif ( this.pluginCallbacks.indexOf( callback ) !== - 1 ) {\n\n\t\t\tthis.pluginCallbacks.splice( this.pluginCallbacks.indexOf( callback ), 1 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tparse( data, path, onLoad, onError ) {\n\n\t\tlet content;\n\t\tconst extensions = {};\n\t\tconst plugins = {};\n\n\t\tif ( typeof data === 'string' ) {\n\n\t\t\tcontent = data;\n\n\t\t} else {\n\n\t\t\tconst magic = LoaderUtils.decodeText( new Uint8Array( data, 0, 4 ) );\n\n\t\t\tif ( magic === BINARY_EXTENSION_HEADER_MAGIC ) {\n\n\t\t\t\ttry {\n\n\t\t\t\t\textensions[ EXTENSIONS.KHR_BINARY_GLTF ] = new GLTFBinaryExtension( data );\n\n\t\t\t\t} catch ( error ) {\n\n\t\t\t\t\tif ( onError ) onError( error );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tcontent = extensions[ EXTENSIONS.KHR_BINARY_GLTF ].content;\n\n\t\t\t} else {\n\n\t\t\t\tcontent = LoaderUtils.decodeText( new Uint8Array( data ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst json = JSON.parse( content );\n\n\t\tif ( json.asset === undefined || json.asset.version[ 0 ] < 2 ) {\n\n\t\t\tif ( onError ) onError( new Error( 'THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.' ) );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst parser = new GLTFParser( json, {\n\n\t\t\tpath: path || this.resourcePath || '',\n\t\t\tcrossOrigin: this.crossOrigin,\n\t\t\trequestHeader: this.requestHeader,\n\t\t\tmanager: this.manager,\n\t\t\tktx2Loader: this.ktx2Loader,\n\t\t\tmeshoptDecoder: this.meshoptDecoder\n\n\t\t} );\n\n\t\tparser.fileLoader.setRequestHeader( this.requestHeader );\n\n\t\tfor ( let i = 0; i < this.pluginCallbacks.length; i ++ ) {\n\n\t\t\tconst plugin = this.pluginCallbacks[ i ]( parser );\n\t\t\tplugins[ plugin.name ] = plugin;\n\n\t\t\t// Workaround to avoid determining as unknown extension\n\t\t\t// in addUnknownExtensionsToUserData().\n\t\t\t// Remove this workaround if we move all the existing\n\t\t\t// extension handlers to plugin system\n\t\t\textensions[ plugin.name ] = true;\n\n\t\t}\n\n\t\tif ( json.extensionsUsed ) {\n\n\t\t\tfor ( let i = 0; i < json.extensionsUsed.length; ++ i ) {\n\n\t\t\t\tconst extensionName = json.extensionsUsed[ i ];\n\t\t\t\tconst extensionsRequired = json.extensionsRequired || [];\n\n\t\t\t\tswitch ( extensionName ) {\n\n\t\t\t\t\tcase EXTENSIONS.KHR_MATERIALS_UNLIT:\n\t\t\t\t\t\textensions[ extensionName ] = new GLTFMaterialsUnlitExtension();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:\n\t\t\t\t\t\textensions[ extensionName ] = new GLTFMaterialsPbrSpecularGlossinessExtension();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase EXTENSIONS.KHR_DRACO_MESH_COMPRESSION:\n\t\t\t\t\t\textensions[ extensionName ] = new GLTFDracoMeshCompressionExtension( json, this.dracoLoader );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase EXTENSIONS.KHR_TEXTURE_TRANSFORM:\n\t\t\t\t\t\textensions[ extensionName ] = new GLTFTextureTransformExtension();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase EXTENSIONS.KHR_MESH_QUANTIZATION:\n\t\t\t\t\t\textensions[ extensionName ] = new GLTFMeshQuantizationExtension();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( extensionsRequired.indexOf( extensionName ) >= 0 && plugins[ extensionName ] === undefined ) {\n\n\t\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Unknown extension \"' + extensionName + '\".' );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tparser.setExtensions( extensions );\n\t\tparser.setPlugins( plugins );\n\t\tparser.parse( onLoad, onError );\n\n\t}\n\n\tparseAsync( data, path ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.parse( data, path, resolve, reject );\n\n\t\t} );\n\n\t}\n\n}\n\n/* GLTFREGISTRY */\n\nfunction GLTFRegistry() {\n\n\tlet objects = {};\n\n\treturn\t{\n\n\t\tget: function ( key ) {\n\n\t\t\treturn objects[ key ];\n\n\t\t},\n\n\t\tadd: function ( key, object ) {\n\n\t\t\tobjects[ key ] = object;\n\n\t\t},\n\n\t\tremove: function ( key ) {\n\n\t\t\tdelete objects[ key ];\n\n\t\t},\n\n\t\tremoveAll: function () {\n\n\t\t\tobjects = {};\n\n\t\t}\n\n\t};\n\n}\n\n/*********************************/\n/********** EXTENSIONS ***********/\n/*********************************/\n\nconst EXTENSIONS = {\n\tKHR_BINARY_GLTF: 'KHR_binary_glTF',\n\tKHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression',\n\tKHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual',\n\tKHR_MATERIALS_CLEARCOAT: 'KHR_materials_clearcoat',\n\tKHR_MATERIALS_IOR: 'KHR_materials_ior',\n\tKHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: 'KHR_materials_pbrSpecularGlossiness',\n\tKHR_MATERIALS_SHEEN: 'KHR_materials_sheen',\n\tKHR_MATERIALS_SPECULAR: 'KHR_materials_specular',\n\tKHR_MATERIALS_TRANSMISSION: 'KHR_materials_transmission',\n\tKHR_MATERIALS_UNLIT: 'KHR_materials_unlit',\n\tKHR_MATERIALS_VOLUME: 'KHR_materials_volume',\n\tKHR_TEXTURE_BASISU: 'KHR_texture_basisu',\n\tKHR_TEXTURE_TRANSFORM: 'KHR_texture_transform',\n\tKHR_MESH_QUANTIZATION: 'KHR_mesh_quantization',\n\tKHR_MATERIALS_EMISSIVE_STRENGTH: 'KHR_materials_emissive_strength',\n\tEXT_TEXTURE_WEBP: 'EXT_texture_webp',\n\tEXT_MESHOPT_COMPRESSION: 'EXT_meshopt_compression'\n};\n\n/**\n * Punctual Lights Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual\n */\nclass GLTFLightsExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL;\n\n\t\t// Object3D instance caches\n\t\tthis.cache = { refs: {}, uses: {} };\n\n\t}\n\n\t_markDefs() {\n\n\t\tconst parser = this.parser;\n\t\tconst nodeDefs = this.parser.json.nodes || [];\n\n\t\tfor ( let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) {\n\n\t\t\tconst nodeDef = nodeDefs[ nodeIndex ];\n\n\t\t\tif ( nodeDef.extensions\n\t\t\t\t\t&& nodeDef.extensions[ this.name ]\n\t\t\t\t\t&& nodeDef.extensions[ this.name ].light !== undefined ) {\n\n\t\t\t\tparser._addNodeRef( this.cache, nodeDef.extensions[ this.name ].light );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_loadLight( lightIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst cacheKey = 'light:' + lightIndex;\n\t\tlet dependency = parser.cache.get( cacheKey );\n\n\t\tif ( dependency ) return dependency;\n\n\t\tconst json = parser.json;\n\t\tconst extensions = ( json.extensions && json.extensions[ this.name ] ) || {};\n\t\tconst lightDefs = extensions.lights || [];\n\t\tconst lightDef = lightDefs[ lightIndex ];\n\t\tlet lightNode;\n\n\t\tconst color = new Color( 0xffffff );\n\n\t\tif ( lightDef.color !== undefined ) color.fromArray( lightDef.color );\n\n\t\tconst range = lightDef.range !== undefined ? lightDef.range : 0;\n\n\t\tswitch ( lightDef.type ) {\n\n\t\t\tcase 'directional':\n\t\t\t\tlightNode = new DirectionalLight( color );\n\t\t\t\tlightNode.target.position.set( 0, 0, - 1 );\n\t\t\t\tlightNode.add( lightNode.target );\n\t\t\t\tbreak;\n\n\t\t\tcase 'point':\n\t\t\t\tlightNode = new PointLight( color );\n\t\t\t\tlightNode.distance = range;\n\t\t\t\tbreak;\n\n\t\t\tcase 'spot':\n\t\t\t\tlightNode = new SpotLight( color );\n\t\t\t\tlightNode.distance = range;\n\t\t\t\t// Handle spotlight properties.\n\t\t\t\tlightDef.spot = lightDef.spot || {};\n\t\t\t\tlightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== undefined ? lightDef.spot.innerConeAngle : 0;\n\t\t\t\tlightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== undefined ? lightDef.spot.outerConeAngle : Math.PI / 4.0;\n\t\t\t\tlightNode.angle = lightDef.spot.outerConeAngle;\n\t\t\t\tlightNode.penumbra = 1.0 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle;\n\t\t\t\tlightNode.target.position.set( 0, 0, - 1 );\n\t\t\t\tlightNode.add( lightNode.target );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Unexpected light type: ' + lightDef.type );\n\n\t\t}\n\n\t\t// Some lights (e.g. spot) default to a position other than the origin. Reset the position\n\t\t// here, because node-level parsing will only override position if explicitly specified.\n\t\tlightNode.position.set( 0, 0, 0 );\n\n\t\tlightNode.decay = 2;\n\n\t\tif ( lightDef.intensity !== undefined ) lightNode.intensity = lightDef.intensity;\n\n\t\tlightNode.name = parser.createUniqueName( lightDef.name || ( 'light_' + lightIndex ) );\n\n\t\tdependency = Promise.resolve( lightNode );\n\n\t\tparser.cache.add( cacheKey, dependency );\n\n\t\treturn dependency;\n\n\t}\n\n\tcreateNodeAttachment( nodeIndex ) {\n\n\t\tconst self = this;\n\t\tconst parser = this.parser;\n\t\tconst json = parser.json;\n\t\tconst nodeDef = json.nodes[ nodeIndex ];\n\t\tconst lightDef = ( nodeDef.extensions && nodeDef.extensions[ this.name ] ) || {};\n\t\tconst lightIndex = lightDef.light;\n\n\t\tif ( lightIndex === undefined ) return null;\n\n\t\treturn this._loadLight( lightIndex ).then( function ( light ) {\n\n\t\t\treturn parser._getNodeRef( self.cache, lightIndex, light );\n\n\t\t} );\n\n\t}\n\n}\n\n/**\n * Unlit Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit\n */\nclass GLTFMaterialsUnlitExtension {\n\n\tconstructor() {\n\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_UNLIT;\n\n\t}\n\n\tgetMaterialType() {\n\n\t\treturn MeshBasicMaterial;\n\n\t}\n\n\textendParams( materialParams, materialDef, parser ) {\n\n\t\tconst pending = [];\n\n\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\tmaterialParams.opacity = 1.0;\n\n\t\tconst metallicRoughness = materialDef.pbrMetallicRoughness;\n\n\t\tif ( metallicRoughness ) {\n\n\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\n\n\t\t\t\tconst array = metallicRoughness.baseColorFactor;\n\n\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t}\n\n\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture, sRGBEncoding ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Materials Emissive Strength Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/blob/5768b3ce0ef32bc39cdf1bef10b948586635ead3/extensions/2.0/Khronos/KHR_materials_emissive_strength/README.md\n */\nclass GLTFMaterialsEmissiveStrengthExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_EMISSIVE_STRENGTH;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst emissiveStrength = materialDef.extensions[ this.name ].emissiveStrength;\n\n\t\tif ( emissiveStrength !== undefined ) {\n\n\t\t\tmaterialParams.emissiveIntensity = emissiveStrength;\n\n\t\t}\n\n\t\treturn Promise.resolve();\n\n\t}\n\n}\n\n/**\n * Clearcoat Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat\n */\nclass GLTFMaterialsClearcoatExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_CLEARCOAT;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.clearcoatFactor !== undefined ) {\n\n\t\t\tmaterialParams.clearcoat = extension.clearcoatFactor;\n\n\t\t}\n\n\t\tif ( extension.clearcoatTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatMap', extension.clearcoatTexture ) );\n\n\t\t}\n\n\t\tif ( extension.clearcoatRoughnessFactor !== undefined ) {\n\n\t\t\tmaterialParams.clearcoatRoughness = extension.clearcoatRoughnessFactor;\n\n\t\t}\n\n\t\tif ( extension.clearcoatRoughnessTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatRoughnessMap', extension.clearcoatRoughnessTexture ) );\n\n\t\t}\n\n\t\tif ( extension.clearcoatNormalTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatNormalMap', extension.clearcoatNormalTexture ) );\n\n\t\t\tif ( extension.clearcoatNormalTexture.scale !== undefined ) {\n\n\t\t\t\tconst scale = extension.clearcoatNormalTexture.scale;\n\n\t\t\t\tmaterialParams.clearcoatNormalScale = new Vector2( scale, scale );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Sheen Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_sheen\n */\nclass GLTFMaterialsSheenExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_SHEEN;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tmaterialParams.sheenColor = new Color( 0, 0, 0 );\n\t\tmaterialParams.sheenRoughness = 0;\n\t\tmaterialParams.sheen = 1;\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.sheenColorFactor !== undefined ) {\n\n\t\t\tmaterialParams.sheenColor.fromArray( extension.sheenColorFactor );\n\n\t\t}\n\n\t\tif ( extension.sheenRoughnessFactor !== undefined ) {\n\n\t\t\tmaterialParams.sheenRoughness = extension.sheenRoughnessFactor;\n\n\t\t}\n\n\t\tif ( extension.sheenColorTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'sheenColorMap', extension.sheenColorTexture, sRGBEncoding ) );\n\n\t\t}\n\n\t\tif ( extension.sheenRoughnessTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'sheenRoughnessMap', extension.sheenRoughnessTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Transmission Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_transmission\n * Draft: https://github.com/KhronosGroup/glTF/pull/1698\n */\nclass GLTFMaterialsTransmissionExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_TRANSMISSION;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.transmissionFactor !== undefined ) {\n\n\t\t\tmaterialParams.transmission = extension.transmissionFactor;\n\n\t\t}\n\n\t\tif ( extension.transmissionTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'transmissionMap', extension.transmissionTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Materials Volume Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_volume\n */\nclass GLTFMaterialsVolumeExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_VOLUME;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tmaterialParams.thickness = extension.thicknessFactor !== undefined ? extension.thicknessFactor : 0;\n\n\t\tif ( extension.thicknessTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'thicknessMap', extension.thicknessTexture ) );\n\n\t\t}\n\n\t\tmaterialParams.attenuationDistance = extension.attenuationDistance || 0;\n\n\t\tconst colorArray = extension.attenuationColor || [ 1, 1, 1 ];\n\t\tmaterialParams.attenuationColor = new Color( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ] );\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Materials ior Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_ior\n */\nclass GLTFMaterialsIorExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_IOR;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tmaterialParams.ior = extension.ior !== undefined ? extension.ior : 1.5;\n\n\t\treturn Promise.resolve();\n\n\t}\n\n}\n\n/**\n * Materials specular Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_specular\n */\nclass GLTFMaterialsSpecularExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_SPECULAR;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tmaterialParams.specularIntensity = extension.specularFactor !== undefined ? extension.specularFactor : 1.0;\n\n\t\tif ( extension.specularTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'specularIntensityMap', extension.specularTexture ) );\n\n\t\t}\n\n\t\tconst colorArray = extension.specularColorFactor || [ 1, 1, 1 ];\n\t\tmaterialParams.specularColor = new Color( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ] );\n\n\t\tif ( extension.specularColorTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'specularColorMap', extension.specularColorTexture, sRGBEncoding ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * BasisU Texture Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_basisu\n */\nclass GLTFTextureBasisUExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_TEXTURE_BASISU;\n\n\t}\n\n\tloadTexture( textureIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst json = parser.json;\n\n\t\tconst textureDef = json.textures[ textureIndex ];\n\n\t\tif ( ! textureDef.extensions || ! textureDef.extensions[ this.name ] ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst extension = textureDef.extensions[ this.name ];\n\t\tconst loader = parser.options.ktx2Loader;\n\n\t\tif ( ! loader ) {\n\n\t\t\tif ( json.extensionsRequired && json.extensionsRequired.indexOf( this.name ) >= 0 ) {\n\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures' );\n\n\t\t\t} else {\n\n\t\t\t\t// Assumes that the extension is optional and that a fallback texture is present\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn parser.loadTextureImage( textureIndex, extension.source, loader );\n\n\t}\n\n}\n\n/**\n * WebP Texture Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_webp\n */\nclass GLTFTextureWebPExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.EXT_TEXTURE_WEBP;\n\t\tthis.isSupported = null;\n\n\t}\n\n\tloadTexture( textureIndex ) {\n\n\t\tconst name = this.name;\n\t\tconst parser = this.parser;\n\t\tconst json = parser.json;\n\n\t\tconst textureDef = json.textures[ textureIndex ];\n\n\t\tif ( ! textureDef.extensions || ! textureDef.extensions[ name ] ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst extension = textureDef.extensions[ name ];\n\t\tconst source = json.images[ extension.source ];\n\n\t\tlet loader = parser.textureLoader;\n\t\tif ( source.uri ) {\n\n\t\t\tconst handler = parser.options.manager.getHandler( source.uri );\n\t\t\tif ( handler !== null ) loader = handler;\n\n\t\t}\n\n\t\treturn this.detectSupport().then( function ( isSupported ) {\n\n\t\t\tif ( isSupported ) return parser.loadTextureImage( textureIndex, extension.source, loader );\n\n\t\t\tif ( json.extensionsRequired && json.extensionsRequired.indexOf( name ) >= 0 ) {\n\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: WebP required by asset but unsupported.' );\n\n\t\t\t}\n\n\t\t\t// Fall back to PNG or JPEG.\n\t\t\treturn parser.loadTexture( textureIndex );\n\n\t\t} );\n\n\t}\n\n\tdetectSupport() {\n\n\t\tif ( ! this.isSupported ) {\n\n\t\t\tthis.isSupported = new Promise( function ( resolve ) {\n\n\t\t\t\tconst image = new Image();\n\n\t\t\t\t// Lossy test image. Support for lossy images doesn't guarantee support for all\n\t\t\t\t// WebP images, unfortunately.\n\t\t\t\timage.src = 'data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA';\n\n\t\t\t\timage.onload = image.onerror = function () {\n\n\t\t\t\t\tresolve( image.height === 1 );\n\n\t\t\t\t};\n\n\t\t\t} );\n\n\t\t}\n\n\t\treturn this.isSupported;\n\n\t}\n\n}\n\n/**\n * meshopt BufferView Compression Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_meshopt_compression\n */\nclass GLTFMeshoptCompression {\n\n\tconstructor( parser ) {\n\n\t\tthis.name = EXTENSIONS.EXT_MESHOPT_COMPRESSION;\n\t\tthis.parser = parser;\n\n\t}\n\n\tloadBufferView( index ) {\n\n\t\tconst json = this.parser.json;\n\t\tconst bufferView = json.bufferViews[ index ];\n\n\t\tif ( bufferView.extensions && bufferView.extensions[ this.name ] ) {\n\n\t\t\tconst extensionDef = bufferView.extensions[ this.name ];\n\n\t\t\tconst buffer = this.parser.getDependency( 'buffer', extensionDef.buffer );\n\t\t\tconst decoder = this.parser.options.meshoptDecoder;\n\n\t\t\tif ( ! decoder || ! decoder.supported ) {\n\n\t\t\t\tif ( json.extensionsRequired && json.extensionsRequired.indexOf( this.name ) >= 0 ) {\n\n\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Assumes that the extension is optional and that fallback buffer data is present\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn Promise.all( [ buffer, decoder.ready ] ).then( function ( res ) {\n\n\t\t\t\tconst byteOffset = extensionDef.byteOffset || 0;\n\t\t\t\tconst byteLength = extensionDef.byteLength || 0;\n\n\t\t\t\tconst count = extensionDef.count;\n\t\t\t\tconst stride = extensionDef.byteStride;\n\n\t\t\t\tconst result = new ArrayBuffer( count * stride );\n\t\t\t\tconst source = new Uint8Array( res[ 0 ], byteOffset, byteLength );\n\n\t\t\t\tdecoder.decodeGltfBuffer( new Uint8Array( result ), count, stride, source, extensionDef.mode, extensionDef.filter );\n\t\t\t\treturn result;\n\n\t\t\t} );\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t}\n\n}\n\n/* BINARY EXTENSION */\nconst BINARY_EXTENSION_HEADER_MAGIC = 'glTF';\nconst BINARY_EXTENSION_HEADER_LENGTH = 12;\nconst BINARY_EXTENSION_CHUNK_TYPES = { JSON: 0x4E4F534A, BIN: 0x004E4942 };\n\nclass GLTFBinaryExtension {\n\n\tconstructor( data ) {\n\n\t\tthis.name = EXTENSIONS.KHR_BINARY_GLTF;\n\t\tthis.content = null;\n\t\tthis.body = null;\n\n\t\tconst headerView = new DataView( data, 0, BINARY_EXTENSION_HEADER_LENGTH );\n\n\t\tthis.header = {\n\t\t\tmagic: LoaderUtils.decodeText( new Uint8Array( data.slice( 0, 4 ) ) ),\n\t\t\tversion: headerView.getUint32( 4, true ),\n\t\t\tlength: headerView.getUint32( 8, true )\n\t\t};\n\n\t\tif ( this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Unsupported glTF-Binary header.' );\n\n\t\t} else if ( this.header.version < 2.0 ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Legacy binary file detected.' );\n\n\t\t}\n\n\t\tconst chunkContentsLength = this.header.length - BINARY_EXTENSION_HEADER_LENGTH;\n\t\tconst chunkView = new DataView( data, BINARY_EXTENSION_HEADER_LENGTH );\n\t\tlet chunkIndex = 0;\n\n\t\twhile ( chunkIndex < chunkContentsLength ) {\n\n\t\t\tconst chunkLength = chunkView.getUint32( chunkIndex, true );\n\t\t\tchunkIndex += 4;\n\n\t\t\tconst chunkType = chunkView.getUint32( chunkIndex, true );\n\t\t\tchunkIndex += 4;\n\n\t\t\tif ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON ) {\n\n\t\t\t\tconst contentArray = new Uint8Array( data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength );\n\t\t\t\tthis.content = LoaderUtils.decodeText( contentArray );\n\n\t\t\t} else if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN ) {\n\n\t\t\t\tconst byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex;\n\t\t\t\tthis.body = data.slice( byteOffset, byteOffset + chunkLength );\n\n\t\t\t}\n\n\t\t\t// Clients must ignore chunks with unknown types.\n\n\t\t\tchunkIndex += chunkLength;\n\n\t\t}\n\n\t\tif ( this.content === null ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: JSON content not found.' );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * DRACO Mesh Compression Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression\n */\nclass GLTFDracoMeshCompressionExtension {\n\n\tconstructor( json, dracoLoader ) {\n\n\t\tif ( ! dracoLoader ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: No DRACOLoader instance provided.' );\n\n\t\t}\n\n\t\tthis.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION;\n\t\tthis.json = json;\n\t\tthis.dracoLoader = dracoLoader;\n\t\tthis.dracoLoader.preload();\n\n\t}\n\n\tdecodePrimitive( primitive, parser ) {\n\n\t\tconst json = this.json;\n\t\tconst dracoLoader = this.dracoLoader;\n\t\tconst bufferViewIndex = primitive.extensions[ this.name ].bufferView;\n\t\tconst gltfAttributeMap = primitive.extensions[ this.name ].attributes;\n\t\tconst threeAttributeMap = {};\n\t\tconst attributeNormalizedMap = {};\n\t\tconst attributeTypeMap = {};\n\n\t\tfor ( const attributeName in gltfAttributeMap ) {\n\n\t\t\tconst threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase();\n\n\t\t\tthreeAttributeMap[ threeAttributeName ] = gltfAttributeMap[ attributeName ];\n\n\t\t}\n\n\t\tfor ( const attributeName in primitive.attributes ) {\n\n\t\t\tconst threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase();\n\n\t\t\tif ( gltfAttributeMap[ attributeName ] !== undefined ) {\n\n\t\t\t\tconst accessorDef = json.accessors[ primitive.attributes[ attributeName ] ];\n\t\t\t\tconst componentType = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\n\t\t\t\tattributeTypeMap[ threeAttributeName ] = componentType;\n\t\t\t\tattributeNormalizedMap[ threeAttributeName ] = accessorDef.normalized === true;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn parser.getDependency( 'bufferView', bufferViewIndex ).then( function ( bufferView ) {\n\n\t\t\treturn new Promise( function ( resolve ) {\n\n\t\t\t\tdracoLoader.decodeDracoFile( bufferView, function ( geometry ) {\n\n\t\t\t\t\tfor ( const attributeName in geometry.attributes ) {\n\n\t\t\t\t\t\tconst attribute = geometry.attributes[ attributeName ];\n\t\t\t\t\t\tconst normalized = attributeNormalizedMap[ attributeName ];\n\n\t\t\t\t\t\tif ( normalized !== undefined ) attribute.normalized = normalized;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve( geometry );\n\n\t\t\t\t}, threeAttributeMap, attributeTypeMap );\n\n\t\t\t} );\n\n\t\t} );\n\n\t}\n\n}\n\n/**\n * Texture Transform Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_transform\n */\nclass GLTFTextureTransformExtension {\n\n\tconstructor() {\n\n\t\tthis.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM;\n\n\t}\n\n\textendTexture( texture, transform ) {\n\n\t\tif ( transform.texCoord !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Custom UV sets in \"' + this.name + '\" extension not yet supported.' );\n\n\t\t}\n\n\t\tif ( transform.offset === undefined && transform.rotation === undefined && transform.scale === undefined ) {\n\n\t\t\t// See https://github.com/mrdoob/three.js/issues/21819.\n\t\t\treturn texture;\n\n\t\t}\n\n\t\ttexture = texture.clone();\n\n\t\tif ( transform.offset !== undefined ) {\n\n\t\t\ttexture.offset.fromArray( transform.offset );\n\n\t\t}\n\n\t\tif ( transform.rotation !== undefined ) {\n\n\t\t\ttexture.rotation = transform.rotation;\n\n\t\t}\n\n\t\tif ( transform.scale !== undefined ) {\n\n\t\t\ttexture.repeat.fromArray( transform.scale );\n\n\t\t}\n\n\t\ttexture.needsUpdate = true;\n\n\t\treturn texture;\n\n\t}\n\n}\n\n/**\n * Specular-Glossiness Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Archived/KHR_materials_pbrSpecularGlossiness\n */\n\n/**\n * A sub class of StandardMaterial with some of the functionality\n * changed via the `onBeforeCompile` callback\n * @pailhead\n */\nclass GLTFMeshStandardSGMaterial extends MeshStandardMaterial {\n\n\tconstructor( params ) {\n\n\t\tsuper();\n\n\t\tthis.isGLTFSpecularGlossinessMaterial = true;\n\n\t\t//various chunks that need replacing\n\t\tconst specularMapParsFragmentChunk = [\n\t\t\t'#ifdef USE_SPECULARMAP',\n\t\t\t'\tuniform sampler2D specularMap;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tconst glossinessMapParsFragmentChunk = [\n\t\t\t'#ifdef USE_GLOSSINESSMAP',\n\t\t\t'\tuniform sampler2D glossinessMap;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tconst specularMapFragmentChunk = [\n\t\t\t'vec3 specularFactor = specular;',\n\t\t\t'#ifdef USE_SPECULARMAP',\n\t\t\t'\tvec4 texelSpecular = texture2D( specularMap, vUv );',\n\t\t\t'\t// reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture',\n\t\t\t'\tspecularFactor *= texelSpecular.rgb;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tconst glossinessMapFragmentChunk = [\n\t\t\t'float glossinessFactor = glossiness;',\n\t\t\t'#ifdef USE_GLOSSINESSMAP',\n\t\t\t'\tvec4 texelGlossiness = texture2D( glossinessMap, vUv );',\n\t\t\t'\t// reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture',\n\t\t\t'\tglossinessFactor *= texelGlossiness.a;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tconst lightPhysicalFragmentChunk = [\n\t\t\t'PhysicalMaterial material;',\n\t\t\t'material.diffuseColor = diffuseColor.rgb * ( 1. - max( specularFactor.r, max( specularFactor.g, specularFactor.b ) ) );',\n\t\t\t'vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );',\n\t\t\t'float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );',\n\t\t\t'material.roughness = max( 1.0 - glossinessFactor, 0.0525 ); // 0.0525 corresponds to the base mip of a 256 cubemap.',\n\t\t\t'material.roughness += geometryRoughness;',\n\t\t\t'material.roughness = min( material.roughness, 1.0 );',\n\t\t\t'material.specularColor = specularFactor;',\n\t\t].join( '\\n' );\n\n\t\tconst uniforms = {\n\t\t\tspecular: { value: new Color().setHex( 0xffffff ) },\n\t\t\tglossiness: { value: 1 },\n\t\t\tspecularMap: { value: null },\n\t\t\tglossinessMap: { value: null }\n\t\t};\n\n\t\tthis._extraUniforms = uniforms;\n\n\t\tthis.onBeforeCompile = function ( shader ) {\n\n\t\t\tfor ( const uniformName in uniforms ) {\n\n\t\t\t\tshader.uniforms[ uniformName ] = uniforms[ uniformName ];\n\n\t\t\t}\n\n\t\t\tshader.fragmentShader = shader.fragmentShader\n\t\t\t\t.replace( 'uniform float roughness;', 'uniform vec3 specular;' )\n\t\t\t\t.replace( 'uniform float metalness;', 'uniform float glossiness;' )\n\t\t\t\t.replace( '#include ', specularMapParsFragmentChunk )\n\t\t\t\t.replace( '#include ', glossinessMapParsFragmentChunk )\n\t\t\t\t.replace( '#include ', specularMapFragmentChunk )\n\t\t\t\t.replace( '#include ', glossinessMapFragmentChunk )\n\t\t\t\t.replace( '#include ', lightPhysicalFragmentChunk );\n\n\t\t};\n\n\t\tObject.defineProperties( this, {\n\n\t\t\tspecular: {\n\t\t\t\tget: function () {\n\n\t\t\t\t\treturn uniforms.specular.value;\n\n\t\t\t\t},\n\t\t\t\tset: function ( v ) {\n\n\t\t\t\t\tuniforms.specular.value = v;\n\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tspecularMap: {\n\t\t\t\tget: function () {\n\n\t\t\t\t\treturn uniforms.specularMap.value;\n\n\t\t\t\t},\n\t\t\t\tset: function ( v ) {\n\n\t\t\t\t\tuniforms.specularMap.value = v;\n\n\t\t\t\t\tif ( v ) {\n\n\t\t\t\t\t\tthis.defines.USE_SPECULARMAP = ''; // USE_UV is set by the renderer for specular maps\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdelete this.defines.USE_SPECULARMAP;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tglossiness: {\n\t\t\t\tget: function () {\n\n\t\t\t\t\treturn uniforms.glossiness.value;\n\n\t\t\t\t},\n\t\t\t\tset: function ( v ) {\n\n\t\t\t\t\tuniforms.glossiness.value = v;\n\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tglossinessMap: {\n\t\t\t\tget: function () {\n\n\t\t\t\t\treturn uniforms.glossinessMap.value;\n\n\t\t\t\t},\n\t\t\t\tset: function ( v ) {\n\n\t\t\t\t\tuniforms.glossinessMap.value = v;\n\n\t\t\t\t\tif ( v ) {\n\n\t\t\t\t\t\tthis.defines.USE_GLOSSINESSMAP = '';\n\t\t\t\t\t\tthis.defines.USE_UV = '';\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdelete this.defines.USE_GLOSSINESSMAP;\n\t\t\t\t\t\tdelete this.defines.USE_UV;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t} );\n\n\t\tdelete this.metalness;\n\t\tdelete this.roughness;\n\t\tdelete this.metalnessMap;\n\t\tdelete this.roughnessMap;\n\n\t\tthis.setValues( params );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.specularMap = source.specularMap;\n\t\tthis.specular.copy( source.specular );\n\t\tthis.glossinessMap = source.glossinessMap;\n\t\tthis.glossiness = source.glossiness;\n\t\tdelete this.metalness;\n\t\tdelete this.roughness;\n\t\tdelete this.metalnessMap;\n\t\tdelete this.roughnessMap;\n\t\treturn this;\n\n\t}\n\n}\n\n\nclass GLTFMaterialsPbrSpecularGlossinessExtension {\n\n\tconstructor() {\n\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS;\n\n\t\tthis.specularGlossinessParams = [\n\t\t\t'color',\n\t\t\t'map',\n\t\t\t'lightMap',\n\t\t\t'lightMapIntensity',\n\t\t\t'aoMap',\n\t\t\t'aoMapIntensity',\n\t\t\t'emissive',\n\t\t\t'emissiveIntensity',\n\t\t\t'emissiveMap',\n\t\t\t'bumpMap',\n\t\t\t'bumpScale',\n\t\t\t'normalMap',\n\t\t\t'normalMapType',\n\t\t\t'displacementMap',\n\t\t\t'displacementScale',\n\t\t\t'displacementBias',\n\t\t\t'specularMap',\n\t\t\t'specular',\n\t\t\t'glossinessMap',\n\t\t\t'glossiness',\n\t\t\t'alphaMap',\n\t\t\t'envMap',\n\t\t\t'envMapIntensity'\n\t\t];\n\n\t}\n\n\tgetMaterialType() {\n\n\t\treturn GLTFMeshStandardSGMaterial;\n\n\t}\n\n\textendParams( materialParams, materialDef, parser ) {\n\n\t\tconst pbrSpecularGlossiness = materialDef.extensions[ this.name ];\n\n\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\tmaterialParams.opacity = 1.0;\n\n\t\tconst pending = [];\n\n\t\tif ( Array.isArray( pbrSpecularGlossiness.diffuseFactor ) ) {\n\n\t\t\tconst array = pbrSpecularGlossiness.diffuseFactor;\n\n\t\t\tmaterialParams.color.fromArray( array );\n\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t}\n\n\t\tif ( pbrSpecularGlossiness.diffuseTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'map', pbrSpecularGlossiness.diffuseTexture, sRGBEncoding ) );\n\n\t\t}\n\n\t\tmaterialParams.emissive = new Color( 0.0, 0.0, 0.0 );\n\t\tmaterialParams.glossiness = pbrSpecularGlossiness.glossinessFactor !== undefined ? pbrSpecularGlossiness.glossinessFactor : 1.0;\n\t\tmaterialParams.specular = new Color( 1.0, 1.0, 1.0 );\n\n\t\tif ( Array.isArray( pbrSpecularGlossiness.specularFactor ) ) {\n\n\t\t\tmaterialParams.specular.fromArray( pbrSpecularGlossiness.specularFactor );\n\n\t\t}\n\n\t\tif ( pbrSpecularGlossiness.specularGlossinessTexture !== undefined ) {\n\n\t\t\tconst specGlossMapDef = pbrSpecularGlossiness.specularGlossinessTexture;\n\t\t\tpending.push( parser.assignTexture( materialParams, 'glossinessMap', specGlossMapDef ) );\n\t\t\tpending.push( parser.assignTexture( materialParams, 'specularMap', specGlossMapDef, sRGBEncoding ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n\tcreateMaterial( materialParams ) {\n\n\t\tconst material = new GLTFMeshStandardSGMaterial( materialParams );\n\t\tmaterial.fog = true;\n\n\t\tmaterial.color = materialParams.color;\n\n\t\tmaterial.map = materialParams.map === undefined ? null : materialParams.map;\n\n\t\tmaterial.lightMap = null;\n\t\tmaterial.lightMapIntensity = 1.0;\n\n\t\tmaterial.aoMap = materialParams.aoMap === undefined ? null : materialParams.aoMap;\n\t\tmaterial.aoMapIntensity = 1.0;\n\n\t\tmaterial.emissive = materialParams.emissive;\n\t\tmaterial.emissiveIntensity = materialParams.emissiveIntensity === undefined ? 1.0 : materialParams.emissiveIntensity;\n\t\tmaterial.emissiveMap = materialParams.emissiveMap === undefined ? null : materialParams.emissiveMap;\n\n\t\tmaterial.bumpMap = materialParams.bumpMap === undefined ? null : materialParams.bumpMap;\n\t\tmaterial.bumpScale = 1;\n\n\t\tmaterial.normalMap = materialParams.normalMap === undefined ? null : materialParams.normalMap;\n\t\tmaterial.normalMapType = TangentSpaceNormalMap;\n\n\t\tif ( materialParams.normalScale ) material.normalScale = materialParams.normalScale;\n\n\t\tmaterial.displacementMap = null;\n\t\tmaterial.displacementScale = 1;\n\t\tmaterial.displacementBias = 0;\n\n\t\tmaterial.specularMap = materialParams.specularMap === undefined ? null : materialParams.specularMap;\n\t\tmaterial.specular = materialParams.specular;\n\n\t\tmaterial.glossinessMap = materialParams.glossinessMap === undefined ? null : materialParams.glossinessMap;\n\t\tmaterial.glossiness = materialParams.glossiness;\n\n\t\tmaterial.alphaMap = null;\n\n\t\tmaterial.envMap = materialParams.envMap === undefined ? null : materialParams.envMap;\n\t\tmaterial.envMapIntensity = 1.0;\n\n\t\treturn material;\n\n\t}\n\n}\n\n/**\n * Mesh Quantization Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization\n */\nclass GLTFMeshQuantizationExtension {\n\n\tconstructor() {\n\n\t\tthis.name = EXTENSIONS.KHR_MESH_QUANTIZATION;\n\n\t}\n\n}\n\n/*********************************/\n/********** INTERPOLATION ********/\n/*********************************/\n\n// Spline Interpolation\n// Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation\nclass GLTFCubicSplineInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tcopySampleValue_( index ) {\n\n\t\t// Copies a sample value to the result buffer. See description of glTF\n\t\t// CUBICSPLINE values layout in interpolate_() function below.\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tvalueSize = this.valueSize,\n\t\t\toffset = index * valueSize * 3 + valueSize;\n\n\t\tfor ( let i = 0; i !== valueSize; i ++ ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\nGLTFCubicSplineInterpolant.prototype.beforeStart_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;\n\nGLTFCubicSplineInterpolant.prototype.afterEnd_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;\n\nGLTFCubicSplineInterpolant.prototype.interpolate_ = function ( i1, t0, t, t1 ) {\n\n\tconst result = this.resultBuffer;\n\tconst values = this.sampleValues;\n\tconst stride = this.valueSize;\n\n\tconst stride2 = stride * 2;\n\tconst stride3 = stride * 3;\n\n\tconst td = t1 - t0;\n\n\tconst p = ( t - t0 ) / td;\n\tconst pp = p * p;\n\tconst ppp = pp * p;\n\n\tconst offset1 = i1 * stride3;\n\tconst offset0 = offset1 - stride3;\n\n\tconst s2 = - 2 * ppp + 3 * pp;\n\tconst s3 = ppp - pp;\n\tconst s0 = 1 - s2;\n\tconst s1 = s3 - pp + p;\n\n\t// Layout of keyframe output values for CUBICSPLINE animations:\n\t// [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ]\n\tfor ( let i = 0; i !== stride; i ++ ) {\n\n\t\tconst p0 = values[ offset0 + i + stride ]; // splineVertex_k\n\t\tconst m0 = values[ offset0 + i + stride2 ] * td; // outTangent_k * (t_k+1 - t_k)\n\t\tconst p1 = values[ offset1 + i + stride ]; // splineVertex_k+1\n\t\tconst m1 = values[ offset1 + i ] * td; // inTangent_k+1 * (t_k+1 - t_k)\n\n\t\tresult[ i ] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1;\n\n\t}\n\n\treturn result;\n\n};\n\nconst _q = new Quaternion();\n\nclass GLTFCubicSplineQuaternionInterpolant extends GLTFCubicSplineInterpolant {\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = super.interpolate_( i1, t0, t, t1 );\n\n\t\t_q.fromArray( result ).normalize().toArray( result );\n\n\t\treturn result;\n\n\t}\n\n}\n\n\n/*********************************/\n/********** INTERNALS ************/\n/*********************************/\n\n/* CONSTANTS */\n\nconst WEBGL_CONSTANTS = {\n\tFLOAT: 5126,\n\t//FLOAT_MAT2: 35674,\n\tFLOAT_MAT3: 35675,\n\tFLOAT_MAT4: 35676,\n\tFLOAT_VEC2: 35664,\n\tFLOAT_VEC3: 35665,\n\tFLOAT_VEC4: 35666,\n\tLINEAR: 9729,\n\tREPEAT: 10497,\n\tSAMPLER_2D: 35678,\n\tPOINTS: 0,\n\tLINES: 1,\n\tLINE_LOOP: 2,\n\tLINE_STRIP: 3,\n\tTRIANGLES: 4,\n\tTRIANGLE_STRIP: 5,\n\tTRIANGLE_FAN: 6,\n\tUNSIGNED_BYTE: 5121,\n\tUNSIGNED_SHORT: 5123\n};\n\nconst WEBGL_COMPONENT_TYPES = {\n\t5120: Int8Array,\n\t5121: Uint8Array,\n\t5122: Int16Array,\n\t5123: Uint16Array,\n\t5125: Uint32Array,\n\t5126: Float32Array\n};\n\nconst WEBGL_FILTERS = {\n\t9728: NearestFilter,\n\t9729: LinearFilter,\n\t9984: NearestMipmapNearestFilter,\n\t9985: LinearMipmapNearestFilter,\n\t9986: NearestMipmapLinearFilter,\n\t9987: LinearMipmapLinearFilter\n};\n\nconst WEBGL_WRAPPINGS = {\n\t33071: ClampToEdgeWrapping,\n\t33648: MirroredRepeatWrapping,\n\t10497: RepeatWrapping\n};\n\nconst WEBGL_TYPE_SIZES = {\n\t'SCALAR': 1,\n\t'VEC2': 2,\n\t'VEC3': 3,\n\t'VEC4': 4,\n\t'MAT2': 4,\n\t'MAT3': 9,\n\t'MAT4': 16\n};\n\nconst ATTRIBUTES = {\n\tPOSITION: 'position',\n\tNORMAL: 'normal',\n\tTANGENT: 'tangent',\n\tTEXCOORD_0: 'uv',\n\tTEXCOORD_1: 'uv2',\n\tCOLOR_0: 'color',\n\tWEIGHTS_0: 'skinWeight',\n\tJOINTS_0: 'skinIndex',\n};\n\nconst PATH_PROPERTIES = {\n\tscale: 'scale',\n\ttranslation: 'position',\n\trotation: 'quaternion',\n\tweights: 'morphTargetInfluences'\n};\n\nconst INTERPOLATION = {\n\tCUBICSPLINE: undefined, // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each\n\t\t // keyframe track will be initialized with a default interpolation type, then modified.\n\tLINEAR: InterpolateLinear,\n\tSTEP: InterpolateDiscrete\n};\n\nconst ALPHA_MODES = {\n\tOPAQUE: 'OPAQUE',\n\tMASK: 'MASK',\n\tBLEND: 'BLEND'\n};\n\n/**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material\n */\nfunction createDefaultMaterial( cache ) {\n\n\tif ( cache[ 'DefaultMaterial' ] === undefined ) {\n\n\t\tcache[ 'DefaultMaterial' ] = new MeshStandardMaterial( {\n\t\t\tcolor: 0xFFFFFF,\n\t\t\temissive: 0x000000,\n\t\t\tmetalness: 1,\n\t\t\troughness: 1,\n\t\t\ttransparent: false,\n\t\t\tdepthTest: true,\n\t\t\tside: FrontSide\n\t\t} );\n\n\t}\n\n\treturn cache[ 'DefaultMaterial' ];\n\n}\n\nfunction addUnknownExtensionsToUserData( knownExtensions, object, objectDef ) {\n\n\t// Add unknown glTF extensions to an object's userData.\n\n\tfor ( const name in objectDef.extensions ) {\n\n\t\tif ( knownExtensions[ name ] === undefined ) {\n\n\t\t\tobject.userData.gltfExtensions = object.userData.gltfExtensions || {};\n\t\t\tobject.userData.gltfExtensions[ name ] = objectDef.extensions[ name ];\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @param {Object3D|Material|BufferGeometry} object\n * @param {GLTF.definition} gltfDef\n */\nfunction assignExtrasToUserData( object, gltfDef ) {\n\n\tif ( gltfDef.extras !== undefined ) {\n\n\t\tif ( typeof gltfDef.extras === 'object' ) {\n\n\t\t\tObject.assign( object.userData, gltfDef.extras );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Ignoring primitive type .extras, ' + gltfDef.extras );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets\n *\n * @param {BufferGeometry} geometry\n * @param {Array} targets\n * @param {GLTFParser} parser\n * @return {Promise}\n */\nfunction addMorphTargets( geometry, targets, parser ) {\n\n\tlet hasMorphPosition = false;\n\tlet hasMorphNormal = false;\n\tlet hasMorphColor = false;\n\n\tfor ( let i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\tconst target = targets[ i ];\n\n\t\tif ( target.POSITION !== undefined ) hasMorphPosition = true;\n\t\tif ( target.NORMAL !== undefined ) hasMorphNormal = true;\n\t\tif ( target.COLOR_0 !== undefined ) hasMorphColor = true;\n\n\t\tif ( hasMorphPosition && hasMorphNormal && hasMorphColor ) break;\n\n\t}\n\n\tif ( ! hasMorphPosition && ! hasMorphNormal && ! hasMorphColor ) return Promise.resolve( geometry );\n\n\tconst pendingPositionAccessors = [];\n\tconst pendingNormalAccessors = [];\n\tconst pendingColorAccessors = [];\n\n\tfor ( let i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\tconst target = targets[ i ];\n\n\t\tif ( hasMorphPosition ) {\n\n\t\t\tconst pendingAccessor = target.POSITION !== undefined\n\t\t\t\t? parser.getDependency( 'accessor', target.POSITION )\n\t\t\t\t: geometry.attributes.position;\n\n\t\t\tpendingPositionAccessors.push( pendingAccessor );\n\n\t\t}\n\n\t\tif ( hasMorphNormal ) {\n\n\t\t\tconst pendingAccessor = target.NORMAL !== undefined\n\t\t\t\t? parser.getDependency( 'accessor', target.NORMAL )\n\t\t\t\t: geometry.attributes.normal;\n\n\t\t\tpendingNormalAccessors.push( pendingAccessor );\n\n\t\t}\n\n\t\tif ( hasMorphColor ) {\n\n\t\t\tconst pendingAccessor = target.COLOR_0 !== undefined\n\t\t\t\t? parser.getDependency( 'accessor', target.COLOR_0 )\n\t\t\t\t: geometry.attributes.color;\n\n\t\t\tpendingColorAccessors.push( pendingAccessor );\n\n\t\t}\n\n\t}\n\n\treturn Promise.all( [\n\t\tPromise.all( pendingPositionAccessors ),\n\t\tPromise.all( pendingNormalAccessors ),\n\t\tPromise.all( pendingColorAccessors )\n\t] ).then( function ( accessors ) {\n\n\t\tconst morphPositions = accessors[ 0 ];\n\t\tconst morphNormals = accessors[ 1 ];\n\t\tconst morphColors = accessors[ 2 ];\n\n\t\tif ( hasMorphPosition ) geometry.morphAttributes.position = morphPositions;\n\t\tif ( hasMorphNormal ) geometry.morphAttributes.normal = morphNormals;\n\t\tif ( hasMorphColor ) geometry.morphAttributes.color = morphColors;\n\t\tgeometry.morphTargetsRelative = true;\n\n\t\treturn geometry;\n\n\t} );\n\n}\n\n/**\n * @param {Mesh} mesh\n * @param {GLTF.Mesh} meshDef\n */\nfunction updateMorphTargets( mesh, meshDef ) {\n\n\tmesh.updateMorphTargets();\n\n\tif ( meshDef.weights !== undefined ) {\n\n\t\tfor ( let i = 0, il = meshDef.weights.length; i < il; i ++ ) {\n\n\t\t\tmesh.morphTargetInfluences[ i ] = meshDef.weights[ i ];\n\n\t\t}\n\n\t}\n\n\t// .extras has user-defined data, so check that .extras.targetNames is an array.\n\tif ( meshDef.extras && Array.isArray( meshDef.extras.targetNames ) ) {\n\n\t\tconst targetNames = meshDef.extras.targetNames;\n\n\t\tif ( mesh.morphTargetInfluences.length === targetNames.length ) {\n\n\t\t\tmesh.morphTargetDictionary = {};\n\n\t\t\tfor ( let i = 0, il = targetNames.length; i < il; i ++ ) {\n\n\t\t\t\tmesh.morphTargetDictionary[ targetNames[ i ] ] = i;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.' );\n\n\t\t}\n\n\t}\n\n}\n\nfunction createPrimitiveKey( primitiveDef ) {\n\n\tconst dracoExtension = primitiveDef.extensions && primitiveDef.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ];\n\tlet geometryKey;\n\n\tif ( dracoExtension ) {\n\n\t\tgeometryKey = 'draco:' + dracoExtension.bufferView\n\t\t\t\t+ ':' + dracoExtension.indices\n\t\t\t\t+ ':' + createAttributesKey( dracoExtension.attributes );\n\n\t} else {\n\n\t\tgeometryKey = primitiveDef.indices + ':' + createAttributesKey( primitiveDef.attributes ) + ':' + primitiveDef.mode;\n\n\t}\n\n\treturn geometryKey;\n\n}\n\nfunction createAttributesKey( attributes ) {\n\n\tlet attributesKey = '';\n\n\tconst keys = Object.keys( attributes ).sort();\n\n\tfor ( let i = 0, il = keys.length; i < il; i ++ ) {\n\n\t\tattributesKey += keys[ i ] + ':' + attributes[ keys[ i ] ] + ';';\n\n\t}\n\n\treturn attributesKey;\n\n}\n\nfunction getNormalizedComponentScale( constructor ) {\n\n\t// Reference:\n\t// https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization#encoding-quantized-data\n\n\tswitch ( constructor ) {\n\n\t\tcase Int8Array:\n\t\t\treturn 1 / 127;\n\n\t\tcase Uint8Array:\n\t\t\treturn 1 / 255;\n\n\t\tcase Int16Array:\n\t\t\treturn 1 / 32767;\n\n\t\tcase Uint16Array:\n\t\t\treturn 1 / 65535;\n\n\t\tdefault:\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Unsupported normalized accessor component type.' );\n\n\t}\n\n}\n\nfunction getImageURIMimeType( uri ) {\n\n\tif ( uri.search( /\\.jpe?g($|\\?)/i ) > 0 || uri.search( /^data\\:image\\/jpeg/ ) === 0 ) return 'image/jpeg';\n\tif ( uri.search( /\\.webp($|\\?)/i ) > 0 || uri.search( /^data\\:image\\/webp/ ) === 0 ) return 'image/webp';\n\n\treturn 'image/png';\n\n}\n\n/* GLTF PARSER */\n\nclass GLTFParser {\n\n\tconstructor( json = {}, options = {} ) {\n\n\t\tthis.json = json;\n\t\tthis.extensions = {};\n\t\tthis.plugins = {};\n\t\tthis.options = options;\n\n\t\t// loader object cache\n\t\tthis.cache = new GLTFRegistry();\n\n\t\t// associations between Three.js objects and glTF elements\n\t\tthis.associations = new Map();\n\n\t\t// BufferGeometry caching\n\t\tthis.primitiveCache = {};\n\n\t\t// Object3D instance caches\n\t\tthis.meshCache = { refs: {}, uses: {} };\n\t\tthis.cameraCache = { refs: {}, uses: {} };\n\t\tthis.lightCache = { refs: {}, uses: {} };\n\n\t\tthis.sourceCache = {};\n\t\tthis.textureCache = {};\n\n\t\t// Track node names, to ensure no duplicates\n\t\tthis.nodeNamesUsed = {};\n\n\t\t// Use an ImageBitmapLoader if imageBitmaps are supported. Moves much of the\n\t\t// expensive work of uploading a texture to the GPU off the main thread.\n\n\t\tconst isSafari = /^((?!chrome|android).)*safari/i.test( navigator.userAgent ) === true;\n\t\tconst isFirefox = navigator.userAgent.indexOf( 'Firefox' ) > - 1;\n\t\tconst firefoxVersion = isFirefox ? navigator.userAgent.match( /Firefox\\/([0-9]+)\\./ )[ 1 ] : - 1;\n\n\t\tif ( typeof createImageBitmap === 'undefined' || isSafari || ( isFirefox && firefoxVersion < 98 ) ) {\n\n\t\t\tthis.textureLoader = new TextureLoader( this.options.manager );\n\n\t\t} else {\n\n\t\t\tthis.textureLoader = new ImageBitmapLoader( this.options.manager );\n\n\t\t}\n\n\t\tthis.textureLoader.setCrossOrigin( this.options.crossOrigin );\n\t\tthis.textureLoader.setRequestHeader( this.options.requestHeader );\n\n\t\tthis.fileLoader = new FileLoader( this.options.manager );\n\t\tthis.fileLoader.setResponseType( 'arraybuffer' );\n\n\t\tif ( this.options.crossOrigin === 'use-credentials' ) {\n\n\t\t\tthis.fileLoader.setWithCredentials( true );\n\n\t\t}\n\n\t}\n\n\tsetExtensions( extensions ) {\n\n\t\tthis.extensions = extensions;\n\n\t}\n\n\tsetPlugins( plugins ) {\n\n\t\tthis.plugins = plugins;\n\n\t}\n\n\tparse( onLoad, onError ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\t\tconst extensions = this.extensions;\n\n\t\t// Clear the loader cache\n\t\tthis.cache.removeAll();\n\n\t\t// Mark the special nodes/meshes in json for efficient parse\n\t\tthis._invokeAll( function ( ext ) {\n\n\t\t\treturn ext._markDefs && ext._markDefs();\n\n\t\t} );\n\n\t\tPromise.all( this._invokeAll( function ( ext ) {\n\n\t\t\treturn ext.beforeRoot && ext.beforeRoot();\n\n\t\t} ) ).then( function () {\n\n\t\t\treturn Promise.all( [\n\n\t\t\t\tparser.getDependencies( 'scene' ),\n\t\t\t\tparser.getDependencies( 'animation' ),\n\t\t\t\tparser.getDependencies( 'camera' ),\n\n\t\t\t] );\n\n\t\t} ).then( function ( dependencies ) {\n\n\t\t\tconst result = {\n\t\t\t\tscene: dependencies[ 0 ][ json.scene || 0 ],\n\t\t\t\tscenes: dependencies[ 0 ],\n\t\t\t\tanimations: dependencies[ 1 ],\n\t\t\t\tcameras: dependencies[ 2 ],\n\t\t\t\tasset: json.asset,\n\t\t\t\tparser: parser,\n\t\t\t\tuserData: {}\n\t\t\t};\n\n\t\t\taddUnknownExtensionsToUserData( extensions, result, json );\n\n\t\t\tassignExtrasToUserData( result, json );\n\n\t\t\tPromise.all( parser._invokeAll( function ( ext ) {\n\n\t\t\t\treturn ext.afterRoot && ext.afterRoot( result );\n\n\t\t\t} ) ).then( function () {\n\n\t\t\t\tonLoad( result );\n\n\t\t\t} );\n\n\t\t} ).catch( onError );\n\n\t}\n\n\t/**\n\t * Marks the special nodes/meshes in json for efficient parse.\n\t */\n\t_markDefs() {\n\n\t\tconst nodeDefs = this.json.nodes || [];\n\t\tconst skinDefs = this.json.skins || [];\n\t\tconst meshDefs = this.json.meshes || [];\n\n\t\t// Nothing in the node definition indicates whether it is a Bone or an\n\t\t// Object3D. Use the skins' joint references to mark bones.\n\t\tfor ( let skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex ++ ) {\n\n\t\t\tconst joints = skinDefs[ skinIndex ].joints;\n\n\t\t\tfor ( let i = 0, il = joints.length; i < il; i ++ ) {\n\n\t\t\t\tnodeDefs[ joints[ i ] ].isBone = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Iterate over all nodes, marking references to shared resources,\n\t\t// as well as skeleton joints.\n\t\tfor ( let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) {\n\n\t\t\tconst nodeDef = nodeDefs[ nodeIndex ];\n\n\t\t\tif ( nodeDef.mesh !== undefined ) {\n\n\t\t\t\tthis._addNodeRef( this.meshCache, nodeDef.mesh );\n\n\t\t\t\t// Nothing in the mesh definition indicates whether it is\n\t\t\t\t// a SkinnedMesh or Mesh. Use the node's mesh reference\n\t\t\t\t// to mark SkinnedMesh if node has skin.\n\t\t\t\tif ( nodeDef.skin !== undefined ) {\n\n\t\t\t\t\tmeshDefs[ nodeDef.mesh ].isSkinnedMesh = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.camera !== undefined ) {\n\n\t\t\t\tthis._addNodeRef( this.cameraCache, nodeDef.camera );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Counts references to shared node / Object3D resources. These resources\n\t * can be reused, or \"instantiated\", at multiple nodes in the scene\n\t * hierarchy. Mesh, Camera, and Light instances are instantiated and must\n\t * be marked. Non-scenegraph resources (like Materials, Geometries, and\n\t * Textures) can be reused directly and are not marked here.\n\t *\n\t * Example: CesiumMilkTruck sample model reuses \"Wheel\" meshes.\n\t */\n\t_addNodeRef( cache, index ) {\n\n\t\tif ( index === undefined ) return;\n\n\t\tif ( cache.refs[ index ] === undefined ) {\n\n\t\t\tcache.refs[ index ] = cache.uses[ index ] = 0;\n\n\t\t}\n\n\t\tcache.refs[ index ] ++;\n\n\t}\n\n\t/** Returns a reference to a shared resource, cloning it if necessary. */\n\t_getNodeRef( cache, index, object ) {\n\n\t\tif ( cache.refs[ index ] <= 1 ) return object;\n\n\t\tconst ref = object.clone();\n\n\t\t// Propagates mappings to the cloned object, prevents mappings on the\n\t\t// original object from being lost.\n\t\tconst updateMappings = ( original, clone ) => {\n\n\t\t\tconst mappings = this.associations.get( original );\n\t\t\tif ( mappings != null ) {\n\n\t\t\t\tthis.associations.set( clone, mappings );\n\n\t\t\t}\n\n\t\t\tfor ( const [ i, child ] of original.children.entries() ) {\n\n\t\t\t\tupdateMappings( child, clone.children[ i ] );\n\n\t\t\t}\n\n\t\t};\n\n\t\tupdateMappings( object, ref );\n\n\t\tref.name += '_instance_' + ( cache.uses[ index ] ++ );\n\n\t\treturn ref;\n\n\t}\n\n\t_invokeOne( func ) {\n\n\t\tconst extensions = Object.values( this.plugins );\n\t\textensions.push( this );\n\n\t\tfor ( let i = 0; i < extensions.length; i ++ ) {\n\n\t\t\tconst result = func( extensions[ i ] );\n\n\t\t\tif ( result ) return result;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t_invokeAll( func ) {\n\n\t\tconst extensions = Object.values( this.plugins );\n\t\textensions.unshift( this );\n\n\t\tconst pending = [];\n\n\t\tfor ( let i = 0; i < extensions.length; i ++ ) {\n\n\t\t\tconst result = func( extensions[ i ] );\n\n\t\t\tif ( result ) pending.push( result );\n\n\t\t}\n\n\t\treturn pending;\n\n\t}\n\n\t/**\n\t * Requests the specified dependency asynchronously, with caching.\n\t * @param {string} type\n\t * @param {number} index\n\t * @return {Promise}\n\t */\n\tgetDependency( type, index ) {\n\n\t\tconst cacheKey = type + ':' + index;\n\t\tlet dependency = this.cache.get( cacheKey );\n\n\t\tif ( ! dependency ) {\n\n\t\t\tswitch ( type ) {\n\n\t\t\t\tcase 'scene':\n\t\t\t\t\tdependency = this.loadScene( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'node':\n\t\t\t\t\tdependency = this.loadNode( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'mesh':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadMesh && ext.loadMesh( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'accessor':\n\t\t\t\t\tdependency = this.loadAccessor( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bufferView':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadBufferView && ext.loadBufferView( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'buffer':\n\t\t\t\t\tdependency = this.loadBuffer( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'material':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadMaterial && ext.loadMaterial( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'texture':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadTexture && ext.loadTexture( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'skin':\n\t\t\t\t\tdependency = this.loadSkin( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'animation':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadAnimation && ext.loadAnimation( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'camera':\n\t\t\t\t\tdependency = this.loadCamera( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error( 'Unknown type: ' + type );\n\n\t\t\t}\n\n\t\t\tthis.cache.add( cacheKey, dependency );\n\n\t\t}\n\n\t\treturn dependency;\n\n\t}\n\n\t/**\n\t * Requests all dependencies of the specified type asynchronously, with caching.\n\t * @param {string} type\n\t * @return {Promise>}\n\t */\n\tgetDependencies( type ) {\n\n\t\tlet dependencies = this.cache.get( type );\n\n\t\tif ( ! dependencies ) {\n\n\t\t\tconst parser = this;\n\t\t\tconst defs = this.json[ type + ( type === 'mesh' ? 'es' : 's' ) ] || [];\n\n\t\t\tdependencies = Promise.all( defs.map( function ( def, index ) {\n\n\t\t\t\treturn parser.getDependency( type, index );\n\n\t\t\t} ) );\n\n\t\t\tthis.cache.add( type, dependencies );\n\n\t\t}\n\n\t\treturn dependencies;\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n\t * @param {number} bufferIndex\n\t * @return {Promise}\n\t */\n\tloadBuffer( bufferIndex ) {\n\n\t\tconst bufferDef = this.json.buffers[ bufferIndex ];\n\t\tconst loader = this.fileLoader;\n\n\t\tif ( bufferDef.type && bufferDef.type !== 'arraybuffer' ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: ' + bufferDef.type + ' buffer type is not supported.' );\n\n\t\t}\n\n\t\t// If present, GLB container is required to be the first buffer.\n\t\tif ( bufferDef.uri === undefined && bufferIndex === 0 ) {\n\n\t\t\treturn Promise.resolve( this.extensions[ EXTENSIONS.KHR_BINARY_GLTF ].body );\n\n\t\t}\n\n\t\tconst options = this.options;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tloader.load( LoaderUtils.resolveURL( bufferDef.uri, options.path ), resolve, undefined, function () {\n\n\t\t\t\treject( new Error( 'THREE.GLTFLoader: Failed to load buffer \"' + bufferDef.uri + '\".' ) );\n\n\t\t\t} );\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n\t * @param {number} bufferViewIndex\n\t * @return {Promise}\n\t */\n\tloadBufferView( bufferViewIndex ) {\n\n\t\tconst bufferViewDef = this.json.bufferViews[ bufferViewIndex ];\n\n\t\treturn this.getDependency( 'buffer', bufferViewDef.buffer ).then( function ( buffer ) {\n\n\t\t\tconst byteLength = bufferViewDef.byteLength || 0;\n\t\t\tconst byteOffset = bufferViewDef.byteOffset || 0;\n\t\t\treturn buffer.slice( byteOffset, byteOffset + byteLength );\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors\n\t * @param {number} accessorIndex\n\t * @return {Promise}\n\t */\n\tloadAccessor( accessorIndex ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\n\t\tconst accessorDef = this.json.accessors[ accessorIndex ];\n\n\t\tif ( accessorDef.bufferView === undefined && accessorDef.sparse === undefined ) {\n\n\t\t\t// Ignore empty accessors, which may be used to declare runtime\n\t\t\t// information about attributes coming from another source (e.g. Draco\n\t\t\t// compression extension).\n\t\t\treturn Promise.resolve( null );\n\n\t\t}\n\n\t\tconst pendingBufferViews = [];\n\n\t\tif ( accessorDef.bufferView !== undefined ) {\n\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.bufferView ) );\n\n\t\t} else {\n\n\t\t\tpendingBufferViews.push( null );\n\n\t\t}\n\n\t\tif ( accessorDef.sparse !== undefined ) {\n\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.indices.bufferView ) );\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.values.bufferView ) );\n\n\t\t}\n\n\t\treturn Promise.all( pendingBufferViews ).then( function ( bufferViews ) {\n\n\t\t\tconst bufferView = bufferViews[ 0 ];\n\n\t\t\tconst itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ];\n\t\t\tconst TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\n\t\t\t// For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n\t\t\tconst elementBytes = TypedArray.BYTES_PER_ELEMENT;\n\t\t\tconst itemBytes = elementBytes * itemSize;\n\t\t\tconst byteOffset = accessorDef.byteOffset || 0;\n\t\t\tconst byteStride = accessorDef.bufferView !== undefined ? json.bufferViews[ accessorDef.bufferView ].byteStride : undefined;\n\t\t\tconst normalized = accessorDef.normalized === true;\n\t\t\tlet array, bufferAttribute;\n\n\t\t\t// The buffer is not interleaved if the stride is the item size in bytes.\n\t\t\tif ( byteStride && byteStride !== itemBytes ) {\n\n\t\t\t\t// Each \"slice\" of the buffer, as defined by 'count' elements of 'byteStride' bytes, gets its own InterleavedBuffer\n\t\t\t\t// This makes sure that IBA.count reflects accessor.count properly\n\t\t\t\tconst ibSlice = Math.floor( byteOffset / byteStride );\n\t\t\t\tconst ibCacheKey = 'InterleavedBuffer:' + accessorDef.bufferView + ':' + accessorDef.componentType + ':' + ibSlice + ':' + accessorDef.count;\n\t\t\t\tlet ib = parser.cache.get( ibCacheKey );\n\n\t\t\t\tif ( ! ib ) {\n\n\t\t\t\t\tarray = new TypedArray( bufferView, ibSlice * byteStride, accessorDef.count * byteStride / elementBytes );\n\n\t\t\t\t\t// Integer parameters to IB/IBA are in array elements, not bytes.\n\t\t\t\t\tib = new InterleavedBuffer( array, byteStride / elementBytes );\n\n\t\t\t\t\tparser.cache.add( ibCacheKey, ib );\n\n\t\t\t\t}\n\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( ib, itemSize, ( byteOffset % byteStride ) / elementBytes, normalized );\n\n\t\t\t} else {\n\n\t\t\t\tif ( bufferView === null ) {\n\n\t\t\t\t\tarray = new TypedArray( accessorDef.count * itemSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tarray = new TypedArray( bufferView, byteOffset, accessorDef.count * itemSize );\n\n\t\t\t\t}\n\n\t\t\t\tbufferAttribute = new BufferAttribute( array, itemSize, normalized );\n\n\t\t\t}\n\n\t\t\t// https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors\n\t\t\tif ( accessorDef.sparse !== undefined ) {\n\n\t\t\t\tconst itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR;\n\t\t\t\tconst TypedArrayIndices = WEBGL_COMPONENT_TYPES[ accessorDef.sparse.indices.componentType ];\n\n\t\t\t\tconst byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0;\n\t\t\t\tconst byteOffsetValues = accessorDef.sparse.values.byteOffset || 0;\n\n\t\t\t\tconst sparseIndices = new TypedArrayIndices( bufferViews[ 1 ], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices );\n\t\t\t\tconst sparseValues = new TypedArray( bufferViews[ 2 ], byteOffsetValues, accessorDef.sparse.count * itemSize );\n\n\t\t\t\tif ( bufferView !== null ) {\n\n\t\t\t\t\t// Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes.\n\t\t\t\t\tbufferAttribute = new BufferAttribute( bufferAttribute.array.slice(), bufferAttribute.itemSize, bufferAttribute.normalized );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, il = sparseIndices.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst index = sparseIndices[ i ];\n\n\t\t\t\t\tbufferAttribute.setX( index, sparseValues[ i * itemSize ] );\n\t\t\t\t\tif ( itemSize >= 2 ) bufferAttribute.setY( index, sparseValues[ i * itemSize + 1 ] );\n\t\t\t\t\tif ( itemSize >= 3 ) bufferAttribute.setZ( index, sparseValues[ i * itemSize + 2 ] );\n\t\t\t\t\tif ( itemSize >= 4 ) bufferAttribute.setW( index, sparseValues[ i * itemSize + 3 ] );\n\t\t\t\t\tif ( itemSize >= 5 ) throw new Error( 'THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn bufferAttribute;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures\n\t * @param {number} textureIndex\n\t * @return {Promise}\n\t */\n\tloadTexture( textureIndex ) {\n\n\t\tconst json = this.json;\n\t\tconst options = this.options;\n\t\tconst textureDef = json.textures[ textureIndex ];\n\t\tconst sourceIndex = textureDef.source;\n\t\tconst sourceDef = json.images[ sourceIndex ];\n\n\t\tlet loader = this.textureLoader;\n\n\t\tif ( sourceDef.uri ) {\n\n\t\t\tconst handler = options.manager.getHandler( sourceDef.uri );\n\t\t\tif ( handler !== null ) loader = handler;\n\n\t\t}\n\n\t\treturn this.loadTextureImage( textureIndex, sourceIndex, loader );\n\n\t}\n\n\tloadTextureImage( textureIndex, sourceIndex, loader ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\n\t\tconst textureDef = json.textures[ textureIndex ];\n\t\tconst sourceDef = json.images[ sourceIndex ];\n\n\t\tconst cacheKey = ( sourceDef.uri || sourceDef.bufferView ) + ':' + textureDef.sampler;\n\n\t\tif ( this.textureCache[ cacheKey ] ) {\n\n\t\t\t// See https://github.com/mrdoob/three.js/issues/21559.\n\t\t\treturn this.textureCache[ cacheKey ];\n\n\t\t}\n\n\t\tconst promise = this.loadImageSource( sourceIndex, loader ).then( function ( texture ) {\n\n\t\t\ttexture.flipY = false;\n\n\t\t\tif ( textureDef.name ) texture.name = textureDef.name;\n\n\t\t\tconst samplers = json.samplers || {};\n\t\t\tconst sampler = samplers[ textureDef.sampler ] || {};\n\n\t\t\ttexture.magFilter = WEBGL_FILTERS[ sampler.magFilter ] || LinearFilter;\n\t\t\ttexture.minFilter = WEBGL_FILTERS[ sampler.minFilter ] || LinearMipmapLinearFilter;\n\t\t\ttexture.wrapS = WEBGL_WRAPPINGS[ sampler.wrapS ] || RepeatWrapping;\n\t\t\ttexture.wrapT = WEBGL_WRAPPINGS[ sampler.wrapT ] || RepeatWrapping;\n\n\t\t\tparser.associations.set( texture, { textures: textureIndex } );\n\n\t\t\treturn texture;\n\n\t\t} ).catch( function () {\n\n\t\t\treturn null;\n\n\t\t} );\n\n\t\tthis.textureCache[ cacheKey ] = promise;\n\n\t\treturn promise;\n\n\t}\n\n\tloadImageSource( sourceIndex, loader ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\t\tconst options = this.options;\n\n\t\tif ( this.sourceCache[ sourceIndex ] !== undefined ) {\n\n\t\t\treturn this.sourceCache[ sourceIndex ].then( ( texture ) => texture.clone() );\n\n\t\t}\n\n\t\tconst sourceDef = json.images[ sourceIndex ];\n\n\t\tconst URL = self.URL || self.webkitURL;\n\n\t\tlet sourceURI = sourceDef.uri || '';\n\t\tlet isObjectURL = false;\n\n\t\tif ( sourceDef.bufferView !== undefined ) {\n\n\t\t\t// Load binary image data from bufferView, if provided.\n\n\t\t\tsourceURI = parser.getDependency( 'bufferView', sourceDef.bufferView ).then( function ( bufferView ) {\n\n\t\t\t\tisObjectURL = true;\n\t\t\t\tconst blob = new Blob( [ bufferView ], { type: sourceDef.mimeType } );\n\t\t\t\tsourceURI = URL.createObjectURL( blob );\n\t\t\t\treturn sourceURI;\n\n\t\t\t} );\n\n\t\t} else if ( sourceDef.uri === undefined ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Image ' + sourceIndex + ' is missing URI and bufferView' );\n\n\t\t}\n\n\t\tconst promise = Promise.resolve( sourceURI ).then( function ( sourceURI ) {\n\n\t\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\t\tlet onLoad = resolve;\n\n\t\t\t\tif ( loader.isImageBitmapLoader === true ) {\n\n\t\t\t\t\tonLoad = function ( imageBitmap ) {\n\n\t\t\t\t\t\tconst texture = new Texture( imageBitmap );\n\t\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\t\tresolve( texture );\n\n\t\t\t\t\t};\n\n\t\t\t\t}\n\n\t\t\t\tloader.load( LoaderUtils.resolveURL( sourceURI, options.path ), onLoad, undefined, reject );\n\n\t\t\t} );\n\n\t\t} ).then( function ( texture ) {\n\n\t\t\t// Clean up resources and configure Texture.\n\n\t\t\tif ( isObjectURL === true ) {\n\n\t\t\t\tURL.revokeObjectURL( sourceURI );\n\n\t\t\t}\n\n\t\t\ttexture.userData.mimeType = sourceDef.mimeType || getImageURIMimeType( sourceDef.uri );\n\n\t\t\treturn texture;\n\n\t\t} ).catch( function ( error ) {\n\n\t\t\tconsole.error( 'THREE.GLTFLoader: Couldn\\'t load texture', sourceURI );\n\t\t\tthrow error;\n\n\t\t} );\n\n\t\tthis.sourceCache[ sourceIndex ] = promise;\n\t\treturn promise;\n\n\t}\n\n\t/**\n\t * Asynchronously assigns a texture to the given material parameters.\n\t * @param {Object} materialParams\n\t * @param {string} mapName\n\t * @param {Object} mapDef\n\t * @return {Promise}\n\t */\n\tassignTexture( materialParams, mapName, mapDef, encoding ) {\n\n\t\tconst parser = this;\n\n\t\treturn this.getDependency( 'texture', mapDef.index ).then( function ( texture ) {\n\n\t\t\t// Materials sample aoMap from UV set 1 and other maps from UV set 0 - this can't be configured\n\t\t\t// However, we will copy UV set 0 to UV set 1 on demand for aoMap\n\t\t\tif ( mapDef.texCoord !== undefined && mapDef.texCoord != 0 && ! ( mapName === 'aoMap' && mapDef.texCoord == 1 ) ) {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Custom UV set ' + mapDef.texCoord + ' for texture ' + mapName + ' not yet supported.' );\n\n\t\t\t}\n\n\t\t\tif ( parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] ) {\n\n\t\t\t\tconst transform = mapDef.extensions !== undefined ? mapDef.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] : undefined;\n\n\t\t\t\tif ( transform ) {\n\n\t\t\t\t\tconst gltfReference = parser.associations.get( texture );\n\t\t\t\t\ttexture = parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ].extendTexture( texture, transform );\n\t\t\t\t\tparser.associations.set( texture, gltfReference );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( encoding !== undefined ) {\n\n\t\t\t\ttexture.encoding = encoding;\n\n\t\t\t}\n\n\t\t\tmaterialParams[ mapName ] = texture;\n\n\t\t\treturn texture;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Assigns final material to a Mesh, Line, or Points instance. The instance\n\t * already has a material (generated from the glTF material options alone)\n\t * but reuse of the same glTF material may require multiple threejs materials\n\t * to accommodate different primitive types, defines, etc. New materials will\n\t * be created if necessary, and reused from a cache.\n\t * @param {Object3D} mesh Mesh, Line, or Points instance.\n\t */\n\tassignFinalMaterial( mesh ) {\n\n\t\tconst geometry = mesh.geometry;\n\t\tlet material = mesh.material;\n\n\t\tconst useDerivativeTangents = geometry.attributes.tangent === undefined;\n\t\tconst useVertexColors = geometry.attributes.color !== undefined;\n\t\tconst useFlatShading = geometry.attributes.normal === undefined;\n\n\t\tif ( mesh.isPoints ) {\n\n\t\t\tconst cacheKey = 'PointsMaterial:' + material.uuid;\n\n\t\t\tlet pointsMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! pointsMaterial ) {\n\n\t\t\t\tpointsMaterial = new PointsMaterial();\n\t\t\t\tMaterial.prototype.copy.call( pointsMaterial, material );\n\t\t\t\tpointsMaterial.color.copy( material.color );\n\t\t\t\tpointsMaterial.map = material.map;\n\t\t\t\tpointsMaterial.sizeAttenuation = false; // glTF spec says points should be 1px\n\n\t\t\t\tthis.cache.add( cacheKey, pointsMaterial );\n\n\t\t\t}\n\n\t\t\tmaterial = pointsMaterial;\n\n\t\t} else if ( mesh.isLine ) {\n\n\t\t\tconst cacheKey = 'LineBasicMaterial:' + material.uuid;\n\n\t\t\tlet lineMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! lineMaterial ) {\n\n\t\t\t\tlineMaterial = new LineBasicMaterial();\n\t\t\t\tMaterial.prototype.copy.call( lineMaterial, material );\n\t\t\t\tlineMaterial.color.copy( material.color );\n\n\t\t\t\tthis.cache.add( cacheKey, lineMaterial );\n\n\t\t\t}\n\n\t\t\tmaterial = lineMaterial;\n\n\t\t}\n\n\t\t// Clone the material if it will be modified\n\t\tif ( useDerivativeTangents || useVertexColors || useFlatShading ) {\n\n\t\t\tlet cacheKey = 'ClonedMaterial:' + material.uuid + ':';\n\n\t\t\tif ( material.isGLTFSpecularGlossinessMaterial ) cacheKey += 'specular-glossiness:';\n\t\t\tif ( useDerivativeTangents ) cacheKey += 'derivative-tangents:';\n\t\t\tif ( useVertexColors ) cacheKey += 'vertex-colors:';\n\t\t\tif ( useFlatShading ) cacheKey += 'flat-shading:';\n\n\t\t\tlet cachedMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! cachedMaterial ) {\n\n\t\t\t\tcachedMaterial = material.clone();\n\n\t\t\t\tif ( useVertexColors ) cachedMaterial.vertexColors = true;\n\t\t\t\tif ( useFlatShading ) cachedMaterial.flatShading = true;\n\n\t\t\t\tif ( useDerivativeTangents ) {\n\n\t\t\t\t\t// https://github.com/mrdoob/three.js/issues/11438#issuecomment-507003995\n\t\t\t\t\tif ( cachedMaterial.normalScale ) cachedMaterial.normalScale.y *= - 1;\n\t\t\t\t\tif ( cachedMaterial.clearcoatNormalScale ) cachedMaterial.clearcoatNormalScale.y *= - 1;\n\n\t\t\t\t}\n\n\t\t\t\tthis.cache.add( cacheKey, cachedMaterial );\n\n\t\t\t\tthis.associations.set( cachedMaterial, this.associations.get( material ) );\n\n\t\t\t}\n\n\t\t\tmaterial = cachedMaterial;\n\n\t\t}\n\n\t\t// workarounds for mesh and geometry\n\n\t\tif ( material.aoMap && geometry.attributes.uv2 === undefined && geometry.attributes.uv !== undefined ) {\n\n\t\t\tgeometry.setAttribute( 'uv2', geometry.attributes.uv );\n\n\t\t}\n\n\t\tmesh.material = material;\n\n\t}\n\n\tgetMaterialType( /* materialIndex */ ) {\n\n\t\treturn MeshStandardMaterial;\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials\n\t * @param {number} materialIndex\n\t * @return {Promise}\n\t */\n\tloadMaterial( materialIndex ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\t\tconst extensions = this.extensions;\n\t\tconst materialDef = json.materials[ materialIndex ];\n\n\t\tlet materialType;\n\t\tconst materialParams = {};\n\t\tconst materialExtensions = materialDef.extensions || {};\n\n\t\tconst pending = [];\n\n\t\tif ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ] ) {\n\n\t\t\tconst sgExtension = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ];\n\t\t\tmaterialType = sgExtension.getMaterialType();\n\t\t\tpending.push( sgExtension.extendParams( materialParams, materialDef, parser ) );\n\n\t\t} else if ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ] ) {\n\n\t\t\tconst kmuExtension = extensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ];\n\t\t\tmaterialType = kmuExtension.getMaterialType();\n\t\t\tpending.push( kmuExtension.extendParams( materialParams, materialDef, parser ) );\n\n\t\t} else {\n\n\t\t\t// Specification:\n\t\t\t// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material\n\n\t\t\tconst metallicRoughness = materialDef.pbrMetallicRoughness || {};\n\n\t\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\t\tmaterialParams.opacity = 1.0;\n\n\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\n\n\t\t\t\tconst array = metallicRoughness.baseColorFactor;\n\n\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t}\n\n\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture, sRGBEncoding ) );\n\n\t\t\t}\n\n\t\t\tmaterialParams.metalness = metallicRoughness.metallicFactor !== undefined ? metallicRoughness.metallicFactor : 1.0;\n\t\t\tmaterialParams.roughness = metallicRoughness.roughnessFactor !== undefined ? metallicRoughness.roughnessFactor : 1.0;\n\n\t\t\tif ( metallicRoughness.metallicRoughnessTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'metalnessMap', metallicRoughness.metallicRoughnessTexture ) );\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'roughnessMap', metallicRoughness.metallicRoughnessTexture ) );\n\n\t\t\t}\n\n\t\t\tmaterialType = this._invokeOne( function ( ext ) {\n\n\t\t\t\treturn ext.getMaterialType && ext.getMaterialType( materialIndex );\n\n\t\t\t} );\n\n\t\t\tpending.push( Promise.all( this._invokeAll( function ( ext ) {\n\n\t\t\t\treturn ext.extendMaterialParams && ext.extendMaterialParams( materialIndex, materialParams );\n\n\t\t\t} ) ) );\n\n\t\t}\n\n\t\tif ( materialDef.doubleSided === true ) {\n\n\t\t\tmaterialParams.side = DoubleSide;\n\n\t\t}\n\n\t\tconst alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE;\n\n\t\tif ( alphaMode === ALPHA_MODES.BLEND ) {\n\n\t\t\tmaterialParams.transparent = true;\n\n\t\t\t// See: https://github.com/mrdoob/three.js/issues/17706\n\t\t\tmaterialParams.depthWrite = false;\n\n\t\t} else {\n\n\t\t\tmaterialParams.transparent = false;\n\n\t\t\tif ( alphaMode === ALPHA_MODES.MASK ) {\n\n\t\t\t\tmaterialParams.alphaTest = materialDef.alphaCutoff !== undefined ? materialDef.alphaCutoff : 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.normalTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'normalMap', materialDef.normalTexture ) );\n\n\t\t\tmaterialParams.normalScale = new Vector2( 1, 1 );\n\n\t\t\tif ( materialDef.normalTexture.scale !== undefined ) {\n\n\t\t\t\tconst scale = materialDef.normalTexture.scale;\n\n\t\t\t\tmaterialParams.normalScale.set( scale, scale );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.occlusionTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'aoMap', materialDef.occlusionTexture ) );\n\n\t\t\tif ( materialDef.occlusionTexture.strength !== undefined ) {\n\n\t\t\t\tmaterialParams.aoMapIntensity = materialDef.occlusionTexture.strength;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.emissiveFactor !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tmaterialParams.emissive = new Color().fromArray( materialDef.emissiveFactor );\n\n\t\t}\n\n\t\tif ( materialDef.emissiveTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'emissiveMap', materialDef.emissiveTexture, sRGBEncoding ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\tlet material;\n\n\t\t\tif ( materialType === GLTFMeshStandardSGMaterial ) {\n\n\t\t\t\tmaterial = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].createMaterial( materialParams );\n\n\t\t\t} else {\n\n\t\t\t\tmaterial = new materialType( materialParams );\n\n\t\t\t}\n\n\t\t\tif ( materialDef.name ) material.name = materialDef.name;\n\n\t\t\tassignExtrasToUserData( material, materialDef );\n\n\t\t\tparser.associations.set( material, { materials: materialIndex } );\n\n\t\t\tif ( materialDef.extensions ) addUnknownExtensionsToUserData( extensions, material, materialDef );\n\n\t\t\treturn material;\n\n\t\t} );\n\n\t}\n\n\t/** When Object3D instances are targeted by animation, they need unique names. */\n\tcreateUniqueName( originalName ) {\n\n\t\tconst sanitizedName = PropertyBinding.sanitizeNodeName( originalName || '' );\n\n\t\tlet name = sanitizedName;\n\n\t\tfor ( let i = 1; this.nodeNamesUsed[ name ]; ++ i ) {\n\n\t\t\tname = sanitizedName + '_' + i;\n\n\t\t}\n\n\t\tthis.nodeNamesUsed[ name ] = true;\n\n\t\treturn name;\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry\n\t *\n\t * Creates BufferGeometries from primitives.\n\t *\n\t * @param {Array} primitives\n\t * @return {Promise>}\n\t */\n\tloadGeometries( primitives ) {\n\n\t\tconst parser = this;\n\t\tconst extensions = this.extensions;\n\t\tconst cache = this.primitiveCache;\n\n\t\tfunction createDracoPrimitive( primitive ) {\n\n\t\t\treturn extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ]\n\t\t\t\t.decodePrimitive( primitive, parser )\n\t\t\t\t.then( function ( geometry ) {\n\n\t\t\t\t\treturn addPrimitiveAttributes( geometry, primitive, parser );\n\n\t\t\t\t} );\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tfor ( let i = 0, il = primitives.length; i < il; i ++ ) {\n\n\t\t\tconst primitive = primitives[ i ];\n\t\t\tconst cacheKey = createPrimitiveKey( primitive );\n\n\t\t\t// See if we've already created this geometry\n\t\t\tconst cached = cache[ cacheKey ];\n\n\t\t\tif ( cached ) {\n\n\t\t\t\t// Use the cached geometry if it exists\n\t\t\t\tpending.push( cached.promise );\n\n\t\t\t} else {\n\n\t\t\t\tlet geometryPromise;\n\n\t\t\t\tif ( primitive.extensions && primitive.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] ) {\n\n\t\t\t\t\t// Use DRACO geometry if available\n\t\t\t\t\tgeometryPromise = createDracoPrimitive( primitive );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Otherwise create a new geometry\n\t\t\t\t\tgeometryPromise = addPrimitiveAttributes( new BufferGeometry(), primitive, parser );\n\n\t\t\t\t}\n\n\t\t\t\t// Cache this geometry\n\t\t\t\tcache[ cacheKey ] = { primitive: primitive, promise: geometryPromise };\n\n\t\t\t\tpending.push( geometryPromise );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes\n\t * @param {number} meshIndex\n\t * @return {Promise}\n\t */\n\tloadMesh( meshIndex ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\t\tconst extensions = this.extensions;\n\n\t\tconst meshDef = json.meshes[ meshIndex ];\n\t\tconst primitives = meshDef.primitives;\n\n\t\tconst pending = [];\n\n\t\tfor ( let i = 0, il = primitives.length; i < il; i ++ ) {\n\n\t\t\tconst material = primitives[ i ].material === undefined\n\t\t\t\t? createDefaultMaterial( this.cache )\n\t\t\t\t: this.getDependency( 'material', primitives[ i ].material );\n\n\t\t\tpending.push( material );\n\n\t\t}\n\n\t\tpending.push( parser.loadGeometries( primitives ) );\n\n\t\treturn Promise.all( pending ).then( function ( results ) {\n\n\t\t\tconst materials = results.slice( 0, results.length - 1 );\n\t\t\tconst geometries = results[ results.length - 1 ];\n\n\t\t\tconst meshes = [];\n\n\t\t\tfor ( let i = 0, il = geometries.length; i < il; i ++ ) {\n\n\t\t\t\tconst geometry = geometries[ i ];\n\t\t\t\tconst primitive = primitives[ i ];\n\n\t\t\t\t// 1. create Mesh\n\n\t\t\t\tlet mesh;\n\n\t\t\t\tconst material = materials[ i ];\n\n\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLES ||\n\t\t\t\t\t\tprimitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ||\n\t\t\t\t\t\tprimitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ||\n\t\t\t\t\t\tprimitive.mode === undefined ) {\n\n\t\t\t\t\t// .isSkinnedMesh isn't in glTF spec. See ._markDefs()\n\t\t\t\t\tmesh = meshDef.isSkinnedMesh === true\n\t\t\t\t\t\t? new SkinnedMesh( geometry, material )\n\t\t\t\t\t\t: new Mesh( geometry, material );\n\n\t\t\t\t\tif ( mesh.isSkinnedMesh === true && ! mesh.geometry.attributes.skinWeight.normalized ) {\n\n\t\t\t\t\t\t// we normalize floating point skin weight array to fix malformed assets (see #15319)\n\t\t\t\t\t\t// it's important to skip this for non-float32 data since normalizeSkinWeights assumes non-normalized inputs\n\t\t\t\t\t\tmesh.normalizeSkinWeights();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ) {\n\n\t\t\t\t\t\tmesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleStripDrawMode );\n\n\t\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ) {\n\n\t\t\t\t\t\tmesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleFanDrawMode );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINES ) {\n\n\t\t\t\t\tmesh = new LineSegments( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_STRIP ) {\n\n\t\t\t\t\tmesh = new Line( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_LOOP ) {\n\n\t\t\t\t\tmesh = new LineLoop( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.POINTS ) {\n\n\t\t\t\t\tmesh = new Points( geometry, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Primitive mode unsupported: ' + primitive.mode );\n\n\t\t\t\t}\n\n\t\t\t\tif ( Object.keys( mesh.geometry.morphAttributes ).length > 0 ) {\n\n\t\t\t\t\tupdateMorphTargets( mesh, meshDef );\n\n\t\t\t\t}\n\n\t\t\t\tmesh.name = parser.createUniqueName( meshDef.name || ( 'mesh_' + meshIndex ) );\n\n\t\t\t\tassignExtrasToUserData( mesh, meshDef );\n\n\t\t\t\tif ( primitive.extensions ) addUnknownExtensionsToUserData( extensions, mesh, primitive );\n\n\t\t\t\tparser.assignFinalMaterial( mesh );\n\n\t\t\t\tmeshes.push( mesh );\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, il = meshes.length; i < il; i ++ ) {\n\n\t\t\t\tparser.associations.set( meshes[ i ], {\n\t\t\t\t\tmeshes: meshIndex,\n\t\t\t\t\tprimitives: i\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tif ( meshes.length === 1 ) {\n\n\t\t\t\treturn meshes[ 0 ];\n\n\t\t\t}\n\n\t\t\tconst group = new Group();\n\n\t\t\tparser.associations.set( group, { meshes: meshIndex } );\n\n\t\t\tfor ( let i = 0, il = meshes.length; i < il; i ++ ) {\n\n\t\t\t\tgroup.add( meshes[ i ] );\n\n\t\t\t}\n\n\t\t\treturn group;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras\n\t * @param {number} cameraIndex\n\t * @return {Promise}\n\t */\n\tloadCamera( cameraIndex ) {\n\n\t\tlet camera;\n\t\tconst cameraDef = this.json.cameras[ cameraIndex ];\n\t\tconst params = cameraDef[ cameraDef.type ];\n\n\t\tif ( ! params ) {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing camera parameters.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( cameraDef.type === 'perspective' ) {\n\n\t\t\tcamera = new PerspectiveCamera( MathUtils.radToDeg( params.yfov ), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6 );\n\n\t\t} else if ( cameraDef.type === 'orthographic' ) {\n\n\t\t\tcamera = new OrthographicCamera( - params.xmag, params.xmag, params.ymag, - params.ymag, params.znear, params.zfar );\n\n\t\t}\n\n\t\tif ( cameraDef.name ) camera.name = this.createUniqueName( cameraDef.name );\n\n\t\tassignExtrasToUserData( camera, cameraDef );\n\n\t\treturn Promise.resolve( camera );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins\n\t * @param {number} skinIndex\n\t * @return {Promise}\n\t */\n\tloadSkin( skinIndex ) {\n\n\t\tconst skinDef = this.json.skins[ skinIndex ];\n\n\t\tconst skinEntry = { joints: skinDef.joints };\n\n\t\tif ( skinDef.inverseBindMatrices === undefined ) {\n\n\t\t\treturn Promise.resolve( skinEntry );\n\n\t\t}\n\n\t\treturn this.getDependency( 'accessor', skinDef.inverseBindMatrices ).then( function ( accessor ) {\n\n\t\t\tskinEntry.inverseBindMatrices = accessor;\n\n\t\t\treturn skinEntry;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations\n\t * @param {number} animationIndex\n\t * @return {Promise}\n\t */\n\tloadAnimation( animationIndex ) {\n\n\t\tconst json = this.json;\n\n\t\tconst animationDef = json.animations[ animationIndex ];\n\n\t\tconst pendingNodes = [];\n\t\tconst pendingInputAccessors = [];\n\t\tconst pendingOutputAccessors = [];\n\t\tconst pendingSamplers = [];\n\t\tconst pendingTargets = [];\n\n\t\tfor ( let i = 0, il = animationDef.channels.length; i < il; i ++ ) {\n\n\t\t\tconst channel = animationDef.channels[ i ];\n\t\t\tconst sampler = animationDef.samplers[ channel.sampler ];\n\t\t\tconst target = channel.target;\n\t\t\tconst name = target.node !== undefined ? target.node : target.id; // NOTE: target.id is deprecated.\n\t\t\tconst input = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.input ] : sampler.input;\n\t\t\tconst output = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.output ] : sampler.output;\n\n\t\t\tpendingNodes.push( this.getDependency( 'node', name ) );\n\t\t\tpendingInputAccessors.push( this.getDependency( 'accessor', input ) );\n\t\t\tpendingOutputAccessors.push( this.getDependency( 'accessor', output ) );\n\t\t\tpendingSamplers.push( sampler );\n\t\t\tpendingTargets.push( target );\n\n\t\t}\n\n\t\treturn Promise.all( [\n\n\t\t\tPromise.all( pendingNodes ),\n\t\t\tPromise.all( pendingInputAccessors ),\n\t\t\tPromise.all( pendingOutputAccessors ),\n\t\t\tPromise.all( pendingSamplers ),\n\t\t\tPromise.all( pendingTargets )\n\n\t\t] ).then( function ( dependencies ) {\n\n\t\t\tconst nodes = dependencies[ 0 ];\n\t\t\tconst inputAccessors = dependencies[ 1 ];\n\t\t\tconst outputAccessors = dependencies[ 2 ];\n\t\t\tconst samplers = dependencies[ 3 ];\n\t\t\tconst targets = dependencies[ 4 ];\n\n\t\t\tconst tracks = [];\n\n\t\t\tfor ( let i = 0, il = nodes.length; i < il; i ++ ) {\n\n\t\t\t\tconst node = nodes[ i ];\n\t\t\t\tconst inputAccessor = inputAccessors[ i ];\n\t\t\t\tconst outputAccessor = outputAccessors[ i ];\n\t\t\t\tconst sampler = samplers[ i ];\n\t\t\t\tconst target = targets[ i ];\n\n\t\t\t\tif ( node === undefined ) continue;\n\n\t\t\t\tnode.updateMatrix();\n\t\t\t\tnode.matrixAutoUpdate = true;\n\n\t\t\t\tlet TypedKeyframeTrack;\n\n\t\t\t\tswitch ( PATH_PROPERTIES[ target.path ] ) {\n\n\t\t\t\t\tcase PATH_PROPERTIES.weights:\n\n\t\t\t\t\t\tTypedKeyframeTrack = NumberKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase PATH_PROPERTIES.rotation:\n\n\t\t\t\t\t\tTypedKeyframeTrack = QuaternionKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase PATH_PROPERTIES.position:\n\t\t\t\t\tcase PATH_PROPERTIES.scale:\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tTypedKeyframeTrack = VectorKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tconst targetName = node.name ? node.name : node.uuid;\n\n\t\t\t\tconst interpolation = sampler.interpolation !== undefined ? INTERPOLATION[ sampler.interpolation ] : InterpolateLinear;\n\n\t\t\t\tconst targetNames = [];\n\n\t\t\t\tif ( PATH_PROPERTIES[ target.path ] === PATH_PROPERTIES.weights ) {\n\n\t\t\t\t\tnode.traverse( function ( object ) {\n\n\t\t\t\t\t\tif ( object.morphTargetInfluences ) {\n\n\t\t\t\t\t\t\ttargetNames.push( object.name ? object.name : object.uuid );\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\ttargetNames.push( targetName );\n\n\t\t\t\t}\n\n\t\t\t\tlet outputArray = outputAccessor.array;\n\n\t\t\t\tif ( outputAccessor.normalized ) {\n\n\t\t\t\t\tconst scale = getNormalizedComponentScale( outputArray.constructor );\n\t\t\t\t\tconst scaled = new Float32Array( outputArray.length );\n\n\t\t\t\t\tfor ( let j = 0, jl = outputArray.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tscaled[ j ] = outputArray[ j ] * scale;\n\n\t\t\t\t\t}\n\n\t\t\t\t\toutputArray = scaled;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let j = 0, jl = targetNames.length; j < jl; j ++ ) {\n\n\t\t\t\t\tconst track = new TypedKeyframeTrack(\n\t\t\t\t\t\ttargetNames[ j ] + '.' + PATH_PROPERTIES[ target.path ],\n\t\t\t\t\t\tinputAccessor.array,\n\t\t\t\t\t\toutputArray,\n\t\t\t\t\t\tinterpolation\n\t\t\t\t\t);\n\n\t\t\t\t\t// Override interpolation with custom factory method.\n\t\t\t\t\tif ( sampler.interpolation === 'CUBICSPLINE' ) {\n\n\t\t\t\t\t\ttrack.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline( result ) {\n\n\t\t\t\t\t\t\t// A CUBICSPLINE keyframe in glTF has three output values for each input value,\n\t\t\t\t\t\t\t// representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize()\n\t\t\t\t\t\t\t// must be divided by three to get the interpolant's sampleSize argument.\n\n\t\t\t\t\t\t\tconst interpolantType = ( this instanceof QuaternionKeyframeTrack ) ? GLTFCubicSplineQuaternionInterpolant : GLTFCubicSplineInterpolant;\n\n\t\t\t\t\t\t\treturn new interpolantType( this.times, this.values, this.getValueSize() / 3, result );\n\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// Mark as CUBICSPLINE. `track.getInterpolation()` doesn't support custom interpolants.\n\t\t\t\t\t\ttrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( track );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst name = animationDef.name ? animationDef.name : 'animation_' + animationIndex;\n\n\t\t\treturn new AnimationClip( name, undefined, tracks );\n\n\t\t} );\n\n\t}\n\n\tcreateNodeMesh( nodeIndex ) {\n\n\t\tconst json = this.json;\n\t\tconst parser = this;\n\t\tconst nodeDef = json.nodes[ nodeIndex ];\n\n\t\tif ( nodeDef.mesh === undefined ) return null;\n\n\t\treturn parser.getDependency( 'mesh', nodeDef.mesh ).then( function ( mesh ) {\n\n\t\t\tconst node = parser._getNodeRef( parser.meshCache, nodeDef.mesh, mesh );\n\n\t\t\t// if weights are provided on the node, override weights on the mesh.\n\t\t\tif ( nodeDef.weights !== undefined ) {\n\n\t\t\t\tnode.traverse( function ( o ) {\n\n\t\t\t\t\tif ( ! o.isMesh ) return;\n\n\t\t\t\t\tfor ( let i = 0, il = nodeDef.weights.length; i < il; i ++ ) {\n\n\t\t\t\t\t\to.morphTargetInfluences[ i ] = nodeDef.weights[ i ];\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn node;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy\n\t * @param {number} nodeIndex\n\t * @return {Promise}\n\t */\n\tloadNode( nodeIndex ) {\n\n\t\tconst json = this.json;\n\t\tconst extensions = this.extensions;\n\t\tconst parser = this;\n\n\t\tconst nodeDef = json.nodes[ nodeIndex ];\n\n\t\t// reserve node's name before its dependencies, so the root has the intended name.\n\t\tconst nodeName = nodeDef.name ? parser.createUniqueName( nodeDef.name ) : '';\n\n\t\treturn ( function () {\n\n\t\t\tconst pending = [];\n\n\t\t\tconst meshPromise = parser._invokeOne( function ( ext ) {\n\n\t\t\t\treturn ext.createNodeMesh && ext.createNodeMesh( nodeIndex );\n\n\t\t\t} );\n\n\t\t\tif ( meshPromise ) {\n\n\t\t\t\tpending.push( meshPromise );\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.camera !== undefined ) {\n\n\t\t\t\tpending.push( parser.getDependency( 'camera', nodeDef.camera ).then( function ( camera ) {\n\n\t\t\t\t\treturn parser._getNodeRef( parser.cameraCache, nodeDef.camera, camera );\n\n\t\t\t\t} ) );\n\n\t\t\t}\n\n\t\t\tparser._invokeAll( function ( ext ) {\n\n\t\t\t\treturn ext.createNodeAttachment && ext.createNodeAttachment( nodeIndex );\n\n\t\t\t} ).forEach( function ( promise ) {\n\n\t\t\t\tpending.push( promise );\n\n\t\t\t} );\n\n\t\t\treturn Promise.all( pending );\n\n\t\t}() ).then( function ( objects ) {\n\n\t\t\tlet node;\n\n\t\t\t// .isBone isn't in glTF spec. See ._markDefs\n\t\t\tif ( nodeDef.isBone === true ) {\n\n\t\t\t\tnode = new Bone();\n\n\t\t\t} else if ( objects.length > 1 ) {\n\n\t\t\t\tnode = new Group();\n\n\t\t\t} else if ( objects.length === 1 ) {\n\n\t\t\t\tnode = objects[ 0 ];\n\n\t\t\t} else {\n\n\t\t\t\tnode = new Object3D();\n\n\t\t\t}\n\n\t\t\tif ( node !== objects[ 0 ] ) {\n\n\t\t\t\tfor ( let i = 0, il = objects.length; i < il; i ++ ) {\n\n\t\t\t\t\tnode.add( objects[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.name ) {\n\n\t\t\t\tnode.userData.name = nodeDef.name;\n\t\t\t\tnode.name = nodeName;\n\n\t\t\t}\n\n\t\t\tassignExtrasToUserData( node, nodeDef );\n\n\t\t\tif ( nodeDef.extensions ) addUnknownExtensionsToUserData( extensions, node, nodeDef );\n\n\t\t\tif ( nodeDef.matrix !== undefined ) {\n\n\t\t\t\tconst matrix = new Matrix4();\n\t\t\t\tmatrix.fromArray( nodeDef.matrix );\n\t\t\t\tnode.applyMatrix4( matrix );\n\n\t\t\t} else {\n\n\t\t\t\tif ( nodeDef.translation !== undefined ) {\n\n\t\t\t\t\tnode.position.fromArray( nodeDef.translation );\n\n\t\t\t\t}\n\n\t\t\t\tif ( nodeDef.rotation !== undefined ) {\n\n\t\t\t\t\tnode.quaternion.fromArray( nodeDef.rotation );\n\n\t\t\t\t}\n\n\t\t\t\tif ( nodeDef.scale !== undefined ) {\n\n\t\t\t\t\tnode.scale.fromArray( nodeDef.scale );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( ! parser.associations.has( node ) ) {\n\n\t\t\t\tparser.associations.set( node, {} );\n\n\t\t\t}\n\n\t\t\tparser.associations.get( node ).nodes = nodeIndex;\n\n\t\t\treturn node;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes\n\t * @param {number} sceneIndex\n\t * @return {Promise}\n\t */\n\tloadScene( sceneIndex ) {\n\n\t\tconst json = this.json;\n\t\tconst extensions = this.extensions;\n\t\tconst sceneDef = this.json.scenes[ sceneIndex ];\n\t\tconst parser = this;\n\n\t\t// Loader returns Group, not Scene.\n\t\t// See: https://github.com/mrdoob/three.js/issues/18342#issuecomment-578981172\n\t\tconst scene = new Group();\n\t\tif ( sceneDef.name ) scene.name = parser.createUniqueName( sceneDef.name );\n\n\t\tassignExtrasToUserData( scene, sceneDef );\n\n\t\tif ( sceneDef.extensions ) addUnknownExtensionsToUserData( extensions, scene, sceneDef );\n\n\t\tconst nodeIds = sceneDef.nodes || [];\n\n\t\tconst pending = [];\n\n\t\tfor ( let i = 0, il = nodeIds.length; i < il; i ++ ) {\n\n\t\t\tpending.push( buildNodeHierarchy( nodeIds[ i ], scene, json, parser ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\t// Removes dangling associations, associations that reference a node that\n\t\t\t// didn't make it into the scene.\n\t\t\tconst reduceAssociations = ( node ) => {\n\n\t\t\t\tconst reducedAssociations = new Map();\n\n\t\t\t\tfor ( const [ key, value ] of parser.associations ) {\n\n\t\t\t\t\tif ( key instanceof Material || key instanceof Texture ) {\n\n\t\t\t\t\t\treducedAssociations.set( key, value );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tnode.traverse( ( node ) => {\n\n\t\t\t\t\tconst mappings = parser.associations.get( node );\n\n\t\t\t\t\tif ( mappings != null ) {\n\n\t\t\t\t\t\treducedAssociations.set( node, mappings );\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\treturn reducedAssociations;\n\n\t\t\t};\n\n\t\t\tparser.associations = reduceAssociations( scene );\n\n\t\t\treturn scene;\n\n\t\t} );\n\n\t}\n\n}\n\nfunction buildNodeHierarchy( nodeId, parentObject, json, parser ) {\n\n\tconst nodeDef = json.nodes[ nodeId ];\n\n\treturn parser.getDependency( 'node', nodeId ).then( function ( node ) {\n\n\t\tif ( nodeDef.skin === undefined ) return node;\n\n\t\t// build skeleton here as well\n\n\t\tlet skinEntry;\n\n\t\treturn parser.getDependency( 'skin', nodeDef.skin ).then( function ( skin ) {\n\n\t\t\tskinEntry = skin;\n\n\t\t\tconst pendingJoints = [];\n\n\t\t\tfor ( let i = 0, il = skinEntry.joints.length; i < il; i ++ ) {\n\n\t\t\t\tpendingJoints.push( parser.getDependency( 'node', skinEntry.joints[ i ] ) );\n\n\t\t\t}\n\n\t\t\treturn Promise.all( pendingJoints );\n\n\t\t} ).then( function ( jointNodes ) {\n\n\t\t\tnode.traverse( function ( mesh ) {\n\n\t\t\t\tif ( ! mesh.isMesh ) return;\n\n\t\t\t\tconst bones = [];\n\t\t\t\tconst boneInverses = [];\n\n\t\t\t\tfor ( let j = 0, jl = jointNodes.length; j < jl; j ++ ) {\n\n\t\t\t\t\tconst jointNode = jointNodes[ j ];\n\n\t\t\t\t\tif ( jointNode ) {\n\n\t\t\t\t\t\tbones.push( jointNode );\n\n\t\t\t\t\t\tconst mat = new Matrix4();\n\n\t\t\t\t\t\tif ( skinEntry.inverseBindMatrices !== undefined ) {\n\n\t\t\t\t\t\t\tmat.fromArray( skinEntry.inverseBindMatrices.array, j * 16 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tboneInverses.push( mat );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Joint \"%s\" could not be found.', skinEntry.joints[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tmesh.bind( new Skeleton( bones, boneInverses ), mesh.matrixWorld );\n\n\t\t\t} );\n\n\t\t\treturn node;\n\n\t\t} );\n\n\t} ).then( function ( node ) {\n\n\t\t// build node hierachy\n\n\t\tparentObject.add( node );\n\n\t\tconst pending = [];\n\n\t\tif ( nodeDef.children ) {\n\n\t\t\tconst children = nodeDef.children;\n\n\t\t\tfor ( let i = 0, il = children.length; i < il; i ++ ) {\n\n\t\t\t\tconst child = children[ i ];\n\t\t\t\tpending.push( buildNodeHierarchy( child, node, json, parser ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t} );\n\n}\n\n/**\n * @param {BufferGeometry} geometry\n * @param {GLTF.Primitive} primitiveDef\n * @param {GLTFParser} parser\n */\nfunction computeBounds( geometry, primitiveDef, parser ) {\n\n\tconst attributes = primitiveDef.attributes;\n\n\tconst box = new Box3();\n\n\tif ( attributes.POSITION !== undefined ) {\n\n\t\tconst accessor = parser.json.accessors[ attributes.POSITION ];\n\n\t\tconst min = accessor.min;\n\t\tconst max = accessor.max;\n\n\t\t// glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n\t\tif ( min !== undefined && max !== undefined ) {\n\n\t\t\tbox.set(\n\t\t\t\tnew Vector3( min[ 0 ], min[ 1 ], min[ 2 ] ),\n\t\t\t\tnew Vector3( max[ 0 ], max[ 1 ], max[ 2 ] )\n\t\t\t);\n\n\t\t\tif ( accessor.normalized ) {\n\n\t\t\t\tconst boxScale = getNormalizedComponentScale( WEBGL_COMPONENT_TYPES[ accessor.componentType ] );\n\t\t\t\tbox.min.multiplyScalar( boxScale );\n\t\t\t\tbox.max.multiplyScalar( boxScale );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' );\n\n\t\t\treturn;\n\n\t\t}\n\n\t} else {\n\n\t\treturn;\n\n\t}\n\n\tconst targets = primitiveDef.targets;\n\n\tif ( targets !== undefined ) {\n\n\t\tconst maxDisplacement = new Vector3();\n\t\tconst vector = new Vector3();\n\n\t\tfor ( let i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\tconst target = targets[ i ];\n\n\t\t\tif ( target.POSITION !== undefined ) {\n\n\t\t\t\tconst accessor = parser.json.accessors[ target.POSITION ];\n\t\t\t\tconst min = accessor.min;\n\t\t\t\tconst max = accessor.max;\n\n\t\t\t\t// glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n\t\t\t\tif ( min !== undefined && max !== undefined ) {\n\n\t\t\t\t\t// we need to get max of absolute components because target weight is [-1,1]\n\t\t\t\t\tvector.setX( Math.max( Math.abs( min[ 0 ] ), Math.abs( max[ 0 ] ) ) );\n\t\t\t\t\tvector.setY( Math.max( Math.abs( min[ 1 ] ), Math.abs( max[ 1 ] ) ) );\n\t\t\t\t\tvector.setZ( Math.max( Math.abs( min[ 2 ] ), Math.abs( max[ 2 ] ) ) );\n\n\n\t\t\t\t\tif ( accessor.normalized ) {\n\n\t\t\t\t\t\tconst boxScale = getNormalizedComponentScale( WEBGL_COMPONENT_TYPES[ accessor.componentType ] );\n\t\t\t\t\t\tvector.multiplyScalar( boxScale );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Note: this assumes that the sum of all weights is at most 1. This isn't quite correct - it's more conservative\n\t\t\t\t\t// to assume that each target can have a max weight of 1. However, for some use cases - notably, when morph targets\n\t\t\t\t\t// are used to implement key-frame animations and as such only two are active at a time - this results in very large\n\t\t\t\t\t// boxes. So for now we make a box that's sometimes a touch too small but is hopefully mostly of reasonable size.\n\t\t\t\t\tmaxDisplacement.max( vector );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// As per comment above this box isn't conservative, but has a reasonable size for a very large number of morph targets.\n\t\tbox.expandByVector( maxDisplacement );\n\n\t}\n\n\tgeometry.boundingBox = box;\n\n\tconst sphere = new Sphere();\n\n\tbox.getCenter( sphere.center );\n\tsphere.radius = box.min.distanceTo( box.max ) / 2;\n\n\tgeometry.boundingSphere = sphere;\n\n}\n\n/**\n * @param {BufferGeometry} geometry\n * @param {GLTF.Primitive} primitiveDef\n * @param {GLTFParser} parser\n * @return {Promise}\n */\nfunction addPrimitiveAttributes( geometry, primitiveDef, parser ) {\n\n\tconst attributes = primitiveDef.attributes;\n\n\tconst pending = [];\n\n\tfunction assignAttributeAccessor( accessorIndex, attributeName ) {\n\n\t\treturn parser.getDependency( 'accessor', accessorIndex )\n\t\t\t.then( function ( accessor ) {\n\n\t\t\t\tgeometry.setAttribute( attributeName, accessor );\n\n\t\t\t} );\n\n\t}\n\n\tfor ( const gltfAttributeName in attributes ) {\n\n\t\tconst threeAttributeName = ATTRIBUTES[ gltfAttributeName ] || gltfAttributeName.toLowerCase();\n\n\t\t// Skip attributes already provided by e.g. Draco extension.\n\t\tif ( threeAttributeName in geometry.attributes ) continue;\n\n\t\tpending.push( assignAttributeAccessor( attributes[ gltfAttributeName ], threeAttributeName ) );\n\n\t}\n\n\tif ( primitiveDef.indices !== undefined && ! geometry.index ) {\n\n\t\tconst accessor = parser.getDependency( 'accessor', primitiveDef.indices ).then( function ( accessor ) {\n\n\t\t\tgeometry.setIndex( accessor );\n\n\t\t} );\n\n\t\tpending.push( accessor );\n\n\t}\n\n\tassignExtrasToUserData( geometry, primitiveDef );\n\n\tcomputeBounds( geometry, primitiveDef, parser );\n\n\treturn Promise.all( pending ).then( function () {\n\n\t\treturn primitiveDef.targets !== undefined\n\t\t\t? addMorphTargets( geometry, primitiveDef.targets, parser )\n\t\t\t: geometry;\n\n\t} );\n\n}\n\n/**\n * @param {BufferGeometry} geometry\n * @param {Number} drawMode\n * @return {BufferGeometry}\n */\nfunction toTrianglesDrawMode( geometry, drawMode ) {\n\n\tlet index = geometry.getIndex();\n\n\t// generate index if not present\n\n\tif ( index === null ) {\n\n\t\tconst indices = [];\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tfor ( let i = 0; i < position.count; i ++ ) {\n\n\t\t\t\tindices.push( i );\n\n\t\t\t}\n\n\t\t\tgeometry.setIndex( indices );\n\t\t\tindex = geometry.getIndex();\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.' );\n\t\t\treturn geometry;\n\n\t\t}\n\n\t}\n\n\t//\n\n\tconst numberOfTriangles = index.count - 2;\n\tconst newIndices = [];\n\n\tif ( drawMode === TriangleFanDrawMode ) {\n\n\t\t// gl.TRIANGLE_FAN\n\n\t\tfor ( let i = 1; i <= numberOfTriangles; i ++ ) {\n\n\t\t\tnewIndices.push( index.getX( 0 ) );\n\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\n\t\t}\n\n\t} else {\n\n\t\t// gl.TRIANGLE_STRIP\n\n\t\tfor ( let i = 0; i < numberOfTriangles; i ++ ) {\n\n\t\t\tif ( i % 2 === 0 ) {\n\n\t\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\n\n\t\t\t} else {\n\n\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\tnewIndices.push( index.getX( i ) );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tif ( ( newIndices.length / 3 ) !== numberOfTriangles ) {\n\n\t\tconsole.error( 'THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.' );\n\n\t}\n\n\t// build final geometry\n\n\tconst newGeometry = geometry.clone();\n\tnewGeometry.setIndex( newIndices );\n\n\treturn newGeometry;\n\n}\n\nexport { GLTFLoader };\n","// This file is part of meshoptimizer library and is distributed under the terms of MIT License.\n// Copyright (C) 2016-2020, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)\nvar MeshoptDecoder = (function() {\n\t\"use strict\";\n\n\t// Built with clang version 11.0.0 (https://github.com/llvm/llvm-project.git 0160ad802e899c2922bc9b29564080c22eb0908c)\n\t// Built from meshoptimizer 0.14\n\tvar wasm_base = \"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\";\n\tvar wasm_simd = \"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\";\n\n\t// Uses bulk-memory and simd extensions\n\tvar detector = new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]);\n\n\t// Used to unpack wasm\n\tvar wasmpack = new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]);\n\n\tif (typeof WebAssembly !== 'object') {\n\t\t// This module requires WebAssembly to function\n\t\treturn {\n\t\t\tsupported: false,\n\t\t};\n\t}\n\n\tvar wasm = wasm_base;\n\n\tif (WebAssembly.validate(detector)) {\n\t\twasm = wasm_simd;\n\t\tconsole.log(\"Warning: meshopt_decoder is using experimental SIMD support\");\n\t}\n\n\tvar instance;\n\n\tvar promise =\n\t\tWebAssembly.instantiate(unpack(wasm), {})\n\t\t.then(function(result) {\n\t\t\tinstance = result.instance;\n\t\t\tinstance.exports.__wasm_call_ctors();\n\t\t});\n\n\tfunction unpack(data) {\n\t\tvar result = new Uint8Array(data.length);\n\t\tfor (var i = 0; i < data.length; ++i) {\n\t\t\tvar ch = data.charCodeAt(i);\n\t\t\tresult[i] = ch > 96 ? ch - 71 : ch > 64 ? ch - 65 : ch > 47 ? ch + 4 : ch > 46 ? 63 : 62;\n\t\t}\n\t\tvar write = 0;\n\t\tfor (var i = 0; i < data.length; ++i) {\n\t\t\tresult[write++] = (result[i] < 60) ? wasmpack[result[i]] : (result[i] - 60) * 64 + result[++i];\n\t\t}\n\t\treturn result.buffer.slice(0, write);\n\t}\n\n\tfunction decode(fun, target, count, size, source, filter) {\n\t\tvar sbrk = instance.exports.sbrk;\n\t\tvar count4 = (count + 3) & ~3; // pad for SIMD filter\n\t\tvar tp = sbrk(count4 * size);\n\t\tvar sp = sbrk(source.length);\n\t\tvar heap = new Uint8Array(instance.exports.memory.buffer);\n\t\theap.set(source, sp);\n\t\tvar res = fun(tp, count, size, sp, source.length);\n\t\tif (res == 0 && filter) {\n\t\t\tfilter(tp, count4, size);\n\t\t}\n\t\ttarget.set(heap.subarray(tp, tp + count * size));\n\t\tsbrk(tp - sbrk(0));\n\t\tif (res != 0) {\n\t\t\tthrow new Error(\"Malformed buffer data: \" + res);\n\t\t}\n\t};\n\n\tvar filters = {\n\t\t// legacy index-based enums for glTF\n\t\t0: \"\",\n\t\t1: \"meshopt_decodeFilterOct\",\n\t\t2: \"meshopt_decodeFilterQuat\",\n\t\t3: \"meshopt_decodeFilterExp\",\n\t\t// string-based enums for glTF\n\t\tNONE: \"\",\n\t\tOCTAHEDRAL: \"meshopt_decodeFilterOct\",\n\t\tQUATERNION: \"meshopt_decodeFilterQuat\",\n\t\tEXPONENTIAL: \"meshopt_decodeFilterExp\",\n\t};\n\n\tvar decoders = {\n\t\t// legacy index-based enums for glTF\n\t\t0: \"meshopt_decodeVertexBuffer\",\n\t\t1: \"meshopt_decodeIndexBuffer\",\n\t\t2: \"meshopt_decodeIndexSequence\",\n\t\t// string-based enums for glTF\n\t\tATTRIBUTES: \"meshopt_decodeVertexBuffer\",\n\t\tTRIANGLES: \"meshopt_decodeIndexBuffer\",\n\t\tINDICES: \"meshopt_decodeIndexSequence\",\n\t};\n\n\treturn {\n\t\tready: promise,\n\t\tsupported: true,\n\t\tdecodeVertexBuffer: function(target, count, size, source, filter) {\n\t\t\tdecode(instance.exports.meshopt_decodeVertexBuffer, target, count, size, source, instance.exports[filters[filter]]);\n\t\t},\n\t\tdecodeIndexBuffer: function(target, count, size, source) {\n\t\t\tdecode(instance.exports.meshopt_decodeIndexBuffer, target, count, size, source);\n\t\t},\n\t\tdecodeIndexSequence: function(target, count, size, source) {\n\t\t\tdecode(instance.exports.meshopt_decodeIndexSequence, target, count, size, source);\n\t\t},\n\t\tdecodeGltfBuffer: function(target, count, size, source, mode, filter) {\n\t\t\tdecode(instance.exports[decoders[mode]], target, count, size, source, instance.exports[filters[filter]]);\n\t\t}\n\t};\n})();\n\nexport { MeshoptDecoder };\n","import TemplateContents from './TemplateContents';\n\nimport * as THREE from 'three';\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';\nimport { MeshoptDecoder } from 'three/examples/jsm/libs/meshopt_decoder.module.js';\nimport { LinearFilter } from 'three/src/constants';\n\n// import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls';\n// import Stats from 'three/examples/jsm/libs/stats.module';\n// import GUI from 'lil-gui';\n\n//Lights\nconst cameraTargetX = 4.6,\n cameraTargetY = 2.7,\n cameraTargetZ = -9,\n cameraLookAtTargetX = -2.4,\n cameraLookAtTargetY = -0.6,\n cameraLookAtTargetZ = 4.5,\n ambientIntensity = 0.7,\n ambientColor = 0xebf0f5,\n directionalIntensity = 0.2,\n directionalColor = 0xd1dee0,\n directionalLightX = 0.5,\n directionalLightY = 0,\n directionalLightZ = -0.3,\n roadColor = 0xc7c7c7,\n roadEmissive = 0x505258,\n groundColor = 0xaaaaaa,\n defR = 0.4,\n defG = 0.791,\n defB = 1,\n accentR = 0.9607843137254902,\n accentG = 0.6196078431372549,\n accentB = 0.1803921568627451;\n\nexport default class extends TemplateContents {\n constructor(param) {\n super(param);\n }\n\n init() {\n super.init(true);\n this.resizeEvent = 'resize';\n\n this.initEvents();\n\n // this.devicePixelRatio = window.devicePixelRatio || 1;\n // this.devicePixelRatio = Math.min(2, this.devicePixelRatio);\n\n this.initShader();\n this.initWebGL();\n this.load();\n\n if (this.enabledStats) this.setStats();\n if (this.enabledGUI) this.setGUI();\n }\n\n reset() {\n // super.reset();\n // this.setVars();\n this.initEvents();\n }\n\n destruct() {\n super.destruct();\n\n this.enabledUpdate = true;\n\n this.canvas.removeEventListener(\n this.pack.hasTouch ? 'touchmove' : 'mousemove',\n this.bindPointermoveHandler\n );\n\n this.camera.position.x = this.defCameraPosition.x;\n this.camera.position.y = this.defCameraPosition.y;\n this.camera.position.z = this.defCameraPosition.z;\n\n this.currentTargetPosition = new THREE.Vector3(0, 0, 0);\n this.currentLookatTargetPosition = new THREE.Vector3(0, 0, 0);\n\n this.currentScene = 1;\n\n this.currentWheelSpeed = this.wheelSpeed;\n\n TweenMax.to(this.canvas, 1, { opacity: 1, ease: Quad.easeOut });\n\n this.container.remove(this.sensor);\n this.hideGeom(this.carWire);\n for (let i = 0, len = this.CAR_WIRE_CLONE_LEN; i < len; i++) {\n let item = this.carWireClones[i];\n this.hideGeom(item);\n }\n\n this.hideGeom(this.trafficLight);\n for (let i = 0, len = this.TRAFFIC_LIGHT_CLONE_LEN; i < len; i++) {\n let item = this.trafficLightClones[i];\n this.hideGeom(item);\n }\n\n this.hideGeom(this.trafficSign);\n\n this.hideGeom(this.trafficCorn);\n for (let i = 0, len = this.CORN_CLONE_LEN; i < len; i++) {\n let item = this.cornClones[i];\n this.hideGeom(item);\n }\n\n this.hideGeom(this.human);\n for (let i = 0, len = this.HUMAN_CLONE_LEN; i < len; i++) {\n let item = this.humanClones[i];\n this.hideGeom(item);\n }\n\n this.mainRout.position.y = this.mainRoutDefY;\n\n this.container.remove(this.defineUseCase);\n this.container.remove(this.defineUseCaseAdd);\n\n this.resetSubScene6();\n this.resetSubScene7();\n }\n\n setVars() {\n super.setVars();\n\n this.enabledUpdate = true;\n this.enabledOrbitControls = false;\n this.enabledStats = false;\n this.enabledGUI = false;\n\n this.ORANGE_COLOR = { r: accentR, g: accentG, b: accentB }; //#F59E2E\n this.DEF_COLOR = { r: defR, g: defG, b: defB };\n\n this.GLB_ASSET_PATH = '/assets/glb/';\n this.GLB_MESHOPT_ASSET_PATH = this.GLB_ASSET_PATH + 'meshopt/';\n this.IMG_ASSET_PATH = '/assets/img/top/3d/';\n\n this.ENV_IMG_PATH = this.IMG_ASSET_PATH + 'env/env_white.jpg';\n\n let extension =\n this.pack.ua.isSafari && !this.pack.ua.isSmartPhone\n ? 'png'\n : 'webp';\n\n this.BAK_BUILDING_IMG_PATH =\n this.IMG_ASSET_PATH + 'bake/tex_building_col.' + extension;\n this.BAK_GROUND_IMG_PATH =\n this.IMG_ASSET_PATH + 'bake/tex_ground_col.' + extension;\n this.BAK_ROAD_IMG_PATH =\n this.IMG_ASSET_PATH + 'bake/tex_road_col.' + extension;\n this.BAK_SHADOW_IMG_PATH =\n this.IMG_ASSET_PATH + 'bake/bake_shadow_alpha_cc.' + extension;\n\n this.currentTargetPosition = new THREE.Vector3(0, 0, 0);\n this.currentLookatTargetPosition = new THREE.Vector3(0, 0, 0);\n\n this.currentCarPosVector;\n this.currentScene = 1;\n\n this.defRoadColor;\n this.defGroundColor;\n\n this.content;\n this.animeList = [];\n this.clock = new THREE.Clock();\n\n this.wheelSpeed = 15;\n this.currentWheelSpeed = this.wheelSpeed;\n this.wheelsDeg = 0;\n\n this.CAR_WIRE_CLONE_LEN = 10;\n this.HUMAN_CLONE_LEN = 6;\n this.CORN_CLONE_LEN = 8;\n this.TRAFFIC_LIGHT_CLONE_LEN = 3;\n this.carWireClones = [];\n this.humanClones = [];\n this.cornClones = [];\n this.trafficLightClones = [];\n\n this.OBJECT_OPACITY1 = 0.8;\n this.mainRoutDefY = 0;\n\n this.mouseStage = new THREE.Vector2();\n }\n\n setDom() {\n super.setDom();\n\n this.canvas = document.createElement('canvas');\n this.width = window.innerWidth;\n this.height = window.innerHeight;\n this.canvas.width = this.width;\n this.canvas.height = this.height;\n }\n\n addHero(container) {\n container.appendChild(this.canvas);\n }\n\n removeHero(container) {\n this.canvas.remove();\n }\n\n initEvents() {\n super.initEvents();\n\n this.bindPointermoveHandler = this.pointerMoveHandler.bind(this);\n //マウスオーバーとドラッグ処理\n this.canvas.addEventListener(\n this.pack.hasTouch ? 'touchmove' : 'mousemove',\n this.bindPointermoveHandler,\n { passive: false }\n );\n }\n\n //for debug\n setGUI() {\n let sc = this;\n const gui = new GUI();\n const PROPS = {\n cameraTargetX: cameraTargetX,\n cameraTargetY: cameraTargetY,\n cameraTargetZ: cameraTargetZ,\n cameraLookAtTargetX: cameraLookAtTargetX,\n cameraLookAtTargetY: cameraLookAtTargetY,\n cameraLookAtTargetZ: cameraLookAtTargetZ,\n ambientLight: ambientColor,\n ambientIntensity: ambientIntensity,\n directionalLight: directionalColor,\n directionalIntensity: directionalIntensity,\n directionalX: directionalLightX,\n directionalY: directionalLightY,\n directionalZ: directionalLightZ,\n roadColor: roadColor,\n roadEmissive: roadEmissive,\n groundColor: groundColor,\n defR: defR,\n defG: defG,\n defB: defB,\n accentR: accentR,\n accentG: accentG,\n accentB: accentB,\n };\n\n gui.width = 350;\n gui.left = 0;\n gui.domElement.style.zIndex = 2000;\n gui.close();\n\n window.gv = () => {\n let tx = this.carCameraTarget.position.x;\n let ty = this.carCameraTarget.position.y;\n let tz = this.carCameraTarget.position.z;\n let ltx = this.cameraLookAtTarget.position.x;\n let lty = this.cameraLookAtTarget.position.y;\n let ltz = this.cameraLookAtTarget.position.z;\n let message = `cameraTargetX = ${tx}, cameraTargetY = ${ty}, cameraTargetZ = ${tz}, cameraLookAtTargetX = ${ltx}, cameraLookAtTargetY = ${lty}, cameraLookAtTargetZ = ${ltz}, \n this.carCameraTarget.position.x = ${tx}, this.carCameraTarget.position.y = ${ty}, this.carCameraTarget.position.z = ${tz}, this.cameraLookAtTarget.position.x = ${ltx}, this.cameraLookAtTarget.position.y = ${lty}, this.cameraLookAtTarget.position.z = ${ltz};`;\n return message;\n };\n\n let maxCameraValue = 150;\n gui.add(\n PROPS,\n 'cameraTargetX',\n -maxCameraValue,\n maxCameraValue\n ).onChange(() => {\n this.carCameraTarget.position.x = PROPS.cameraTargetX;\n });\n\n gui.add(\n PROPS,\n 'cameraTargetY',\n -maxCameraValue,\n maxCameraValue\n ).onChange(() => {\n this.carCameraTarget.position.y = PROPS.cameraTargetY;\n });\n\n gui.add(\n PROPS,\n 'cameraTargetZ',\n -maxCameraValue,\n maxCameraValue\n ).onChange(() => {\n this.carCameraTarget.position.z = PROPS.cameraTargetZ;\n });\n\n gui.add(\n PROPS,\n 'cameraLookAtTargetX',\n -maxCameraValue,\n maxCameraValue\n ).onChange(() => {\n this.cameraLookAtTarget.position.x = PROPS.cameraLookAtTargetX;\n });\n\n gui.add(\n PROPS,\n 'cameraLookAtTargetY',\n -maxCameraValue,\n maxCameraValue\n ).onChange(() => {\n this.cameraLookAtTarget.position.y = PROPS.cameraLookAtTargetY;\n });\n\n gui.add(\n PROPS,\n 'cameraLookAtTargetZ',\n -maxCameraValue,\n maxCameraValue\n ).onChange(() => {\n this.cameraLookAtTarget.position.z = PROPS.cameraLookAtTargetZ;\n });\n\n gui.addColor(PROPS, 'ambientLight').onChange(function () {\n sc.ambientLight.color.set(PROPS.ambientLight);\n });\n\n gui.add(PROPS, 'ambientIntensity', 0, 1).onChange(function () {\n sc.ambientLight.intensity = PROPS.ambientIntensity;\n });\n\n gui.addColor(PROPS, 'directionalLight').onChange(function () {\n sc.directionalLight.color.set(PROPS.directionalLight);\n });\n\n gui.add(PROPS, 'directionalIntensity', 0, 1).onChange(function () {\n sc.directionalLight.intensity = PROPS.directionalIntensity;\n });\n\n gui.add(PROPS, 'directionalX', -Math.PI, Math.PI).onChange(() => {\n this.directionalLight.position.x = PROPS.directionalX;\n });\n\n gui.add(PROPS, 'directionalY', -Math.PI, Math.PI).onChange(() => {\n this.directionalLight.position.y = PROPS.directionalY;\n });\n\n gui.add(PROPS, 'directionalZ', -Math.PI, Math.PI).onChange(() => {\n this.directionalLight.position.z = PROPS.directionalZ;\n });\n\n gui.addColor(PROPS, 'roadColor').onChange(() => {\n this.road.material.color.set(PROPS.roadColor);\n });\n\n gui.addColor(PROPS, 'roadEmissive').onChange(() => {\n this.road.material.emissive.set(PROPS.roadEmissive);\n });\n\n gui.addColor(PROPS, 'groundColor').onChange(() => {\n this.ground.material.color.set(PROPS.groundColor);\n });\n\n gui.add(PROPS, 'defR', 0, 1).onChange(() => {\n this.DEF_COLOR.r = PROPS.defR;\n });\n\n gui.add(PROPS, 'defG', 0, 1).onChange(() => {\n this.DEF_COLOR.g = PROPS.defG;\n });\n\n gui.add(PROPS, 'defB', 0, 1).onChange(() => {\n this.DEF_COLOR.b = PROPS.defB;\n });\n\n gui.add(PROPS, 'accentR', 0, 1).onChange(() => {\n this.ORANGE_COLOR.r = PROPS.accentR;\n });\n\n gui.add(PROPS, 'accentG', 0, 1).onChange(() => {\n this.ORANGE_COLOR.g = PROPS.accentG;\n });\n\n gui.add(PROPS, 'accentB', 0, 1).onChange(() => {\n this.ORANGE_COLOR.b = PROPS.accentB;\n });\n }\n\n setStats() {\n this.stats = Stats();\n document.body.appendChild(this.stats.dom);\n }\n\n pointerMoveHandler(event) {\n let x, y;\n let w = this.sw;\n let h = this.sh;\n\n if (event.type.indexOf('touch') == 0) {\n let touches = event.changedTouches[0];\n x = touches.clientX;\n y = touches.clientY;\n } else {\n x = event.clientX;\n y = event.clientY;\n }\n\n this.mouseStage.x = x - w / 2;\n this.mouseStage.y = -y + h / 2;\n }\n\n initShader() {\n this.vertexShaderSrc = `\n \n `;\n\n this.fragmentShaderSrc = `\n \n `;\n }\n\n initWebGL() {\n this.renderer = new THREE.WebGLRenderer({\n canvas: this.canvas,\n alpha: true,\n antialias: true,\n });\n // this.renderer.setPixelRatio(window.devicePixelRatio);\n this.renderer.setPixelRatio(1);\n this.renderer.setSize(this.width, this.height);\n this.renderer.autoClear = false;\n\n this.scene = new THREE.Scene();\n this.scene.background = new THREE.Color(0xe8fafe);\n\n //Camera\n this.fieldOfView = 45;\n this.defCameraPosition = {};\n this.defCameraPosition.x = 192.3904571533203;\n this.defCameraPosition.y = 300;\n this.defCameraPosition.z = -135.74269104003906;\n this.camera = new THREE.PerspectiveCamera(\n this.fieldOfView,\n this.width / this.height,\n 0.01,\n 1000\n );\n this.camera.position.x = this.defCameraPosition.x;\n this.camera.position.y = this.defCameraPosition.y;\n this.camera.position.z = this.defCameraPosition.z;\n\n this.ambientLight = new THREE.AmbientLight(\n ambientColor,\n ambientIntensity\n );\n this.scene.add(this.ambientLight);\n\n this.directionalLight = new THREE.DirectionalLight(\n directionalColor,\n directionalIntensity\n );\n this.directionalLight.position\n .set(directionalLightX, directionalLightY, directionalLightZ)\n .normalize();\n this.scene.add(this.directionalLight);\n\n //Controls\n if (this.enabledOrbitControls) {\n this.controls = new OrbitControls(\n this.camera,\n this.renderer.domElement\n );\n // this.controls.enableDamping = true\n }\n }\n\n load() {\n this.container = new THREE.Object3D();\n this.scene.add(this.container);\n\n this.loadTexture(this.ENV_IMG_PATH, 'texture_env')\n .then(\n this.loadTexture.bind(\n this,\n this.BAK_BUILDING_IMG_PATH,\n 'texture_bake_building'\n )\n )\n .then(\n this.loadTexture.bind(\n this,\n this.BAK_GROUND_IMG_PATH,\n 'texture_bake_ground'\n )\n )\n .then(\n this.loadTexture.bind(\n this,\n this.BAK_ROAD_IMG_PATH,\n 'texture_bake_road'\n )\n )\n .then(\n this.loadTexture.bind(\n this,\n this.BAK_SHADOW_IMG_PATH,\n 'texture_bake_shadow'\n )\n )\n .then(this.loadGeom.bind(this))\n .then(this.loadCar.bind(this))\n .then(this.loadCarWire.bind(this))\n .then(this.loadSensor.bind(this))\n .then(this.load6Layers04.bind(this))\n .then(this.load6Layers06.bind(this))\n .then(this.loadDefineUseCase.bind(this))\n .then(this.loadDefineUseCaseAdd.bind(this))\n .then(this.loadReferenceDesignInterior.bind(this))\n .then(this.loadReferenceDesignRoof.bind(this))\n .then(this.loadReferenceDesignSensor.bind(this))\n .then(() => {\n this.initMesh();\n let roadColor = this.road.material.color;\n let groundColor = this.ground.material.color;\n this.defRoadColor = {\n r: roadColor.r,\n g: roadColor.g,\n b: roadColor.b,\n };\n this.defGroundColor = {\n r: groundColor.r,\n g: groundColor.g,\n b: groundColor.b,\n };\n\n TweenMax.delayedCall(0.5, () => {\n this.loaded = true;\n // trace(\"HERO 3D loaded\");\n });\n });\n }\n\n loadTexture(path, name) {\n let textureLoader = new THREE.TextureLoader();\n return new Promise((resolve) => {\n textureLoader.load(path, (texture) => {\n texture.mapping = THREE.UVMapping;\n texture.flipY = false;\n texture.minFilter = LinearFilter;\n texture.magFilter = LinearFilter;\n this[name] = texture;\n\n return resolve();\n });\n });\n }\n\n loadGeom() {\n const loader = new GLTFLoader();\n loader.setMeshoptDecoder(MeshoptDecoder);\n return new Promise((resolve) => {\n loader.load(\n this.GLB_MESHOPT_ASSET_PATH + 'geom_meshopt.glb',\n (gltf) => {\n const scene = gltf.scene || gltf.scenes[0];\n const clips = gltf.animations || [];\n\n // trace(\"geom.glb\", gltf);\n this.setGeom(scene, clips);\n\n return resolve();\n },\n (xhr) => {\n // console.log((xhr.loaded / xhr.total) * 100 + '% loaded')\n },\n (error) => {\n console.log(error);\n }\n );\n });\n }\n\n showGeom(geom, opacity) {\n const material = geom.material;\n // material.opacity = opacity || 1;\n material.needsUpdate = true;\n\n let o = opacity || 1;\n\n TweenMax.killTweensOf(material);\n TweenMax.to(material, 1, { opacity: o, ease: Quart.easeOut });\n }\n\n hideGeom(geom) {\n const material = geom.material;\n material.transparent = true;\n material.alphaToCoverage = true;\n // material.opacity = 0;\n material.needsUpdate = true;\n TweenMax.killTweensOf(material);\n TweenMax.to(material, 1, { opacity: 0, ease: Quart.easeOut });\n }\n\n setGeom(object, clips) {\n this.container.add(object);\n this.content = object;\n let node;\n\n //car body\n this.car = this.content.getObjectByName('GRP_car');\n this.carTyres = [];\n this.car.traverse((child) => {\n if (child.isMesh) {\n child.material.transparent = true;\n child.material.alphaToCoverage = true;\n child.material.needsUpdate = true;\n }\n if (child.name.indexOf('GEOM_Tyre') > -1) this.carTyres.push(child);\n });\n\n this.carCameraTarget = new THREE.Object3D();\n this.car.add(this.carCameraTarget);\n\n this.cameraLookAtTarget = new THREE.Object3D();\n this.car.add(this.cameraLookAtTarget);\n\n //building\n this.building = this.content.getObjectByName('GEOM_Building');\n this.building.material.lightMap = this.texture_bake_building;\n this.building.material.needsUpdate = true;\n this.building.position.y -= 1;\n\n //ground\n this.ground = this.content.getObjectByName('GEOM_Ground');\n this.ground.material.color = new THREE.Color(groundColor);\n this.ground.material.lightMap = this.texture_bake_ground;\n this.ground.material.needsUpdate = true;\n this.ground.position.y -= 1;\n\n //road\n node = this.content.getObjectByName('GEOM_Road');\n this.road = node;\n node.material.color = new THREE.Color(roadColor);\n node.material.emissive = new THREE.Color(roadEmissive);\n node.material.lightMap = this.texture_bake_road;\n node.material.needsUpdate = true;\n\n //boxCar\n node = this.content.getObjectByName('GEOM_BoxCar');\n this.carWire = node;\n this.hideGeom(node);\n for (let i = 0, len = this.CAR_WIRE_CLONE_LEN; i < len; i++) {\n let clone = this.carWire.clone();\n this.container.add(clone);\n this.hideGeom(clone);\n this.carWireClones.push(clone);\n }\n\n //carRoof\n node = this.content.getObjectByName('GEOM_CarRoof');\n this.carRoof = node;\n this.carRoofDefY = node.position.y;\n\n //carInterior\n node = this.content.getObjectByName('GEOM_CarInterior');\n this.carInterior = node;\n this.carInteriorDefY = node.position.y;\n\n //carSensor\n node = this.content.getObjectByName('GEOM_CarSensor');\n this.carSensor = node;\n this.carSensorDefY = node.position.y;\n\n //boxHuman\n node = this.content.getObjectByName('GEOM_BoxHuman');\n this.human = node;\n this.hideGeom(node);\n this.human.position.x = -164.7;\n this.human.position.z = -3;\n\n let rotationYList = [\n this.pack.d2r(160),\n this.pack.d2r(-210),\n this.pack.d2r(-190),\n this.pack.d2r(-130),\n this.pack.d2r(-140),\n this.pack.d2r(70),\n ];\n\n let positionList = [\n { x: -170, z: 6.5 },\n { x: -165.5, z: 7.0 },\n { x: -166.5, z: 6.5 },\n { x: -163.0, z: -5 },\n { x: -164.5, z: -4.5 },\n { x: -165.5, z: -4 },\n ];\n\n for (let i = 0, len = this.HUMAN_CLONE_LEN; i < len; i++) {\n let clone = this.human.clone();\n let newMaterial = this.human.material.clone();\n this.container.add(clone);\n this.humanClones.push(clone);\n\n clone.position.x = positionList[i].x;\n clone.position.z = positionList[i].z;\n clone.rotation.y = rotationYList[i];\n\n newMaterial.color.r = 0;\n newMaterial.color.g = 0;\n newMaterial.color.b = 0;\n newMaterial.emissive.r = this.DEF_COLOR.r;\n newMaterial.emissive.g = this.DEF_COLOR.g;\n newMaterial.emissive.b = this.DEF_COLOR.b;\n newMaterial.transparent = true;\n newMaterial.alphaToCoverage = true;\n newMaterial.needsUpdate = true;\n clone.material = newMaterial;\n this.hideGeom(clone);\n }\n\n let newMaterial = this.human.material.clone();\n newMaterial.color.r = 0;\n newMaterial.color.g = 0;\n newMaterial.color.b = 0;\n newMaterial.emissive.r = this.DEF_COLOR.r;\n newMaterial.emissive.g = this.DEF_COLOR.g;\n newMaterial.emissive.b = this.DEF_COLOR.b;\n newMaterial.transparent = true;\n newMaterial.alphaToCoverage = true;\n newMaterial.needsUpdate = true;\n this.human.material = newMaterial;\n\n //trafficLight\n node = this.content.getObjectByName('GEOM_TrafficLight');\n this.trafficLight = node;\n this.trafficLight.position.x = -175;\n this.trafficLight.position.z = -9;\n this.trafficLight.rotation.y = this.pack.d2r(-20);\n this.hideGeom(node);\n\n rotationYList = [\n this.pack.d2r(160),\n this.pack.d2r(-110),\n this.pack.d2r(70),\n ];\n\n positionList = [\n { x: -170, z: 6.5 },\n { x: -165.5, z: -3 },\n { x: -181.5, z: 1 },\n ];\n\n for (let i = 0, len = this.TRAFFIC_LIGHT_CLONE_LEN; i < len; i++) {\n let clone = this.trafficLight.clone();\n this.container.add(clone);\n this.hideGeom(clone);\n this.trafficLightClones.push(clone);\n clone.position.x = positionList[i].x;\n clone.position.z = positionList[i].z;\n clone.rotation.y = rotationYList[i];\n }\n\n //trafficSign\n node = this.content.getObjectByName('GEOM_TrafficSign');\n this.trafficSign = node;\n this.trafficSign.position.x = -165;\n this.trafficSign.position.z = -8;\n this.trafficSign.rotation.y = this.pack.d2r(-20);\n this.hideGeom(node);\n\n //corn\n node = this.content.getObjectByName('GEOM_Corn');\n this.trafficCorn = node;\n this.trafficCorn.position.x = -166;\n this.trafficCorn.position.z = -20;\n this.hideGeom(node);\n\n for (let i = 0, len = this.CORN_CLONE_LEN; i < len; i++) {\n let clone = this.trafficCorn.clone();\n this.hideGeom(clone);\n this.container.add(clone);\n this.cornClones.push(clone);\n clone.position.x = -166 - (i + 1) * 0.8;\n clone.position.z = -20 + (i + 1) * 2;\n }\n\n //mainRoute\n node = this.content.getObjectByName('GEOM_Mainroute');\n this.mainRout = node;\n this.mainRoutDefY = node.position.y;\n\n //shadow\n node = this.content.getObjectByName('GEOM_Shadow');\n this.carShadow = node;\n node.material.transparent = true;\n node.material.alphaToCoverage = true;\n node.material.map = this.texture_bake_shadow;\n node.material.needsUpdate = true;\n node.material.opacity = 1;\n node.position.y = 0.01;\n }\n\n loadCar() {\n const loader = new GLTFLoader();\n loader.setMeshoptDecoder(MeshoptDecoder);\n return new Promise((resolve) => {\n loader.load(\n this.GLB_MESHOPT_ASSET_PATH +\n 's07_car_anim_0615_meshopt_mid.glb',\n (gltf) => {\n this.setAnimationClip(gltf.scene, gltf.animations, 'car');\n this.cameraTarget =\n gltf.scene.getObjectByName('SOCKET_CarAnim07');\n // this.container.add(gltf.scene);\n return resolve();\n },\n (xhr) => {\n // console.log((xhr.loaded / xhr.total) * 100 + '% loaded')\n },\n (error) => {\n console.log(error);\n }\n );\n });\n }\n\n loadCarWire() {\n const loader = new GLTFLoader();\n loader.setMeshoptDecoder(MeshoptDecoder);\n return new Promise((resolve) => {\n loader.load(\n this.GLB_MESHOPT_ASSET_PATH + 'anim_otherloop_meshopt.glb',\n (gltf) => {\n this.setAnimationClip(\n gltf.scene,\n gltf.animations,\n 'carWire'\n );\n this.carWireTarget = gltf.scene.getObjectByName(\n 'followpath_filtered_otherroute'\n );\n\n for (\n let i = 0, len = this.CAR_WIRE_CLONE_LEN;\n i < len;\n i++\n ) {\n let sceneClone = gltf.scene.clone();\n let id = i + 1;\n this.setAnimationClip(\n sceneClone,\n gltf.animations,\n 'carWireClone' + id,\n false,\n (12 + Math.random() * 0.5) * id\n );\n this['carWireTarget' + id] = sceneClone.getObjectByName(\n 'followpath_filtered_otherroute'\n );\n }\n\n // this.container.add(gltf.scene);\n return resolve();\n },\n (xhr) => {\n // console.log((xhr.loaded / xhr.total) * 100 + '% loaded')\n },\n (error) => {\n console.log(error);\n }\n );\n });\n }\n\n loadSensor() {\n const loader = new GLTFLoader();\n loader.setMeshoptDecoder(MeshoptDecoder);\n return new Promise((resolve) => {\n loader.load(\n this.GLB_MESHOPT_ASSET_PATH + 'anim_sensorflat_meshopt.glb',\n (gltf) => {\n this.setAnimationClip(\n gltf.scene,\n gltf.animations,\n 'sensor'\n );\n this.sensorMeshMaterials = [];\n\n let child = gltf.scene.getObjectByName('ANIM_SensorFlat');\n const material = child.material;\n material.transparent = true;\n material.alphaToCoverage = true;\n // material.opacity = 0.7;\n material.needsUpdate = true;\n this.sensorMeshMaterials.push(material);\n\n this.sensor = gltf.scene;\n return resolve();\n },\n (xhr) => {\n // console.log((xhr.loaded / xhr.total) * 100 + '% loaded')\n },\n (error) => {\n console.log(error);\n }\n );\n });\n }\n\n load6Layers04() {\n const loader = new GLTFLoader();\n loader.setMeshoptDecoder(MeshoptDecoder);\n return new Promise((resolve) => {\n loader.load(\n this.GLB_MESHOPT_ASSET_PATH + 'anim_sixlayer04_meshopt.glb',\n (gltf) => {\n this.setAnimationClip(\n gltf.scene,\n gltf.animations,\n 'sixLayers04'\n );\n // this.container.add(gltf.scene);\n this.sixLayers04 = gltf.scene;\n let mesh = gltf.scene.getObjectByName('ANIM_6layer04');\n const material = mesh.material;\n material.transparent = true;\n material.alphaToCoverage = true;\n material.opacity = 0.6;\n material.needsUpdate = true;\n\n return resolve();\n },\n (xhr) => {\n // console.log((xhr.loaded / xhr.total) * 100 + '% loaded')\n },\n (error) => {\n console.log(error);\n }\n );\n });\n }\n\n load6Layers06() {\n const loader = new GLTFLoader();\n loader.setMeshoptDecoder(MeshoptDecoder);\n return new Promise((resolve) => {\n loader.load(\n this.GLB_MESHOPT_ASSET_PATH + 'anim_sixlayer06_meshopt.glb',\n (gltf) => {\n this.setAnimationClip(\n gltf.scene,\n gltf.animations,\n 'sixLayers06'\n );\n // this.container.add(gltf.scene);\n this.sixLayers06 = gltf.scene;\n this.sixLayers06.position.x = -0.8; //位置微調整\n\n for (let i = 0, len = 4; i < len; i++) {\n let mesh = gltf.scene.getObjectByName('mesh_' + i);\n const material = mesh.material;\n material.transparent = true;\n material.alphaToCoverage = true;\n material.opacity = 0.6;\n material.needsUpdate = true;\n }\n\n return resolve();\n },\n (xhr) => {\n // console.log((xhr.loaded / xhr.total) * 100 + '% loaded')\n },\n (error) => {\n console.log(error);\n }\n );\n });\n }\n\n loadDefineUseCase() {\n const loader = new GLTFLoader();\n loader.setMeshoptDecoder(MeshoptDecoder);\n return new Promise((resolve) => {\n loader.load(\n this.GLB_MESHOPT_ASSET_PATH + 'anim_defineusecase_meshopt.glb',\n (gltf) => {\n this.setAnimationClip(\n gltf.scene,\n gltf.animations,\n 'defineUseCase',\n true\n );\n this.defineUseCase = gltf.scene;\n let mesh = gltf.scene.getObjectByName(\n 'ANIM_line_defineusecase'\n );\n const material = mesh.material;\n material.transparent = true;\n material.alphaToCoverage = true;\n material.opacity = 0.6;\n material.needsUpdate = true;\n\n return resolve();\n },\n (xhr) => {\n // console.log((xhr.loaded / xhr.total) * 100 + '% loaded')\n },\n (error) => {\n console.log(error);\n }\n );\n });\n }\n\n loadDefineUseCaseAdd() {\n const loader = new GLTFLoader();\n loader.setMeshoptDecoder(MeshoptDecoder);\n return new Promise((resolve) => {\n loader.load(\n this.GLB_MESHOPT_ASSET_PATH +\n 'anim_defineusecase_add_meshopt.glb',\n (gltf) => {\n this.setAnimationClip(\n gltf.scene,\n gltf.animations,\n 'defineUseCaseAdd',\n true\n );\n this.defineUseCaseAdd = gltf.scene;\n this.defineUseCaseAdd.position.y = 0.02;\n\n let mesh = gltf.scene.getObjectByName(\n 'ANIM_line_defineusecase_additional'\n );\n const material = mesh.material;\n material.transparent = true;\n material.alphaToCoverage = true;\n material.opacity = 0.6;\n material.needsUpdate = true;\n return resolve();\n },\n (xhr) => {\n // console.log((xhr.loaded / xhr.total) * 100 + '% loaded')\n },\n (error) => {\n console.log(error);\n }\n );\n });\n }\n\n loadReferenceDesignInterior() {\n const loader = new GLTFLoader();\n loader.setMeshoptDecoder(MeshoptDecoder);\n return new Promise((resolve) => {\n loader.load(\n this.GLB_MESHOPT_ASSET_PATH +\n 'anim_referencedesign_interior_meshopt.glb',\n (gltf) => {\n this.setAnimationClip(\n gltf.scene,\n gltf.animations,\n 'referenceDesignInterior',\n true\n );\n // this.container.add(gltf.scene);\n this.referenceDesignInterior = gltf.scene;\n this.referenceDesignInteriorTarget =\n gltf.scene.getObjectByName('__offset03');\n return resolve();\n },\n (xhr) => {\n // console.log((xhr.loaded / xhr.total) * 100 + '% loaded')\n },\n (error) => {\n console.log(error);\n }\n );\n });\n }\n\n loadReferenceDesignRoof() {\n const loader = new GLTFLoader();\n loader.setMeshoptDecoder(MeshoptDecoder);\n return new Promise((resolve) => {\n loader.load(\n this.GLB_MESHOPT_ASSET_PATH +\n 'anim_referencedesign_roof_meshopt.glb',\n (gltf) => {\n this.setAnimationClip(\n gltf.scene,\n gltf.animations,\n 'referenceDesignRoof',\n true\n );\n // this.container.add(gltf.scene);\n this.referenceDesignRoof = gltf.scene;\n this.referenceDesignRoofTarget =\n gltf.scene.getObjectByName('__offset02');\n\n return resolve();\n },\n (xhr) => {\n // console.log((xhr.loaded / xhr.total) * 100 + '% loaded')\n },\n (error) => {\n console.log(error);\n }\n );\n });\n }\n\n loadReferenceDesignSensor() {\n const loader = new GLTFLoader();\n loader.setMeshoptDecoder(MeshoptDecoder);\n return new Promise((resolve) => {\n loader.load(\n this.GLB_MESHOPT_ASSET_PATH +\n 'anim_referencedesign_sensor_meshopt.glb',\n (gltf) => {\n this.setAnimationClip(\n gltf.scene,\n gltf.animations,\n 'referenceDesignSensor',\n true\n );\n // this.container.add(gltf.scene);\n this.referenceDesignSensor = gltf.scene;\n this.referenceDesignSensorTarget =\n gltf.scene.getObjectByName('__offset01');\n return resolve();\n },\n (xhr) => {\n // console.log((xhr.loaded / xhr.total) * 100 + '% loaded')\n },\n (error) => {\n console.log(error);\n }\n );\n });\n }\n\n setAnimationClip(scene, animations, name, isOnce, offsetTime) {\n let mixer = new THREE.AnimationMixer(scene);\n let anime = {};\n anime.mixer = mixer;\n anime.name = name;\n\n animations.forEach((clip, clipIndex) => {\n let action = mixer.clipAction(clip);\n if (isOnce) {\n //1回のみ再生\n action.setLoop(THREE.LoopOnce);\n action.clampWhenFinished = true;\n }\n\n anime.duration = clip.duration;\n anime.action = action;\n });\n\n if (!offsetTime) offsetTime = 0;\n anime.offsetTime = offsetTime; //開始点指定\n this.animeList.push(anime);\n }\n\n initMesh() {\n // for debug\n // let geometry = new THREE.PlaneGeometry( 3, 3, 4 );\n // var material = new THREE.MeshBasicMaterial( {color: 0xff0000, opacity:.5, side: THREE.DoubleSide} );\n // this.plane = new THREE.Mesh( geometry, material );\n // this.scene.add( this.plane );\n\n let options = {\n generateMipmaps: true,\n minFilter: THREE.LinearMipmapLinearFilter,\n magFilter: THREE.LinearFilter,\n };\n\n //for Environment\n const renderTargetCube = new THREE.WebGLCubeRenderTarget(\n 1024,\n options\n ).fromEquirectangularTexture(this.renderer, this.texture_env);\n\n //add EnvironmentMap\n this.updateEnvironment(renderTargetCube.texture);\n }\n\n start() {\n window.scrollTo(0, 0);\n this.startScene1();\n\n let delay = 2.5;\n TweenMax.delayedCall(delay, () => {\n this.dispatchEvent('openingEnded');\n });\n }\n\n jumpCar(action, mixer) {\n action.paused = false;\n action.reset().play();\n mixer.setTime(47.2);\n action.paused = true;\n }\n\n jumpCarWires(action, mixer, cloneCnt) {\n action.paused = false;\n action.reset().play();\n let time = 78.25 + cloneCnt * 2.25;\n mixer.setTime(time);\n action.paused = true;\n }\n\n startDefineUseCase(action, mixer) {\n this.container.add(this.defineUseCase);\n action.paused = false;\n action.reset().play();\n mixer.setTime(0);\n }\n\n startDefineUseCaseAdd(action, mixer) {\n this.container.add(this.defineUseCaseAdd);\n action.paused = false;\n action.reset().play();\n mixer.setTime(0);\n }\n\n setScene(id, isPrev) {\n let delay;\n this.currentScene = id;\n\n if (this.currentScene === 1) {\n this.startScene1(isPrev);\n delay = 1.0;\n } else if (this.currentScene === 2) {\n this.startScene2(isPrev);\n delay = 1.0;\n } else if (this.currentScene === 3) {\n this.startScene3(isPrev);\n delay = 1.8;\n } else if (this.currentScene === 4) {\n this.startScene4(isPrev);\n delay = 2.0;\n } else if (this.currentScene === 5) {\n this.startScene5(isPrev);\n delay = 2.0;\n } else if (this.currentScene === 6) {\n this.startScene6(isPrev);\n delay = 1.5;\n } else if (this.currentScene === 7) {\n this.startScene7(isPrev);\n delay = 1.5;\n } else if (this.currentScene === 8) {\n this.startScene8(isPrev);\n delay = 2.0;\n } else if (this.currentScene === 9) {\n this.startScene9(isPrev);\n delay = 2.0;\n }\n\n TweenMax.delayedCall(delay, () => {\n this.dispatchEvent('changedScene');\n });\n }\n\n skipScene() {\n TweenMax.delayedCall(0.5, () => {\n this.container.remove(this.sensor);\n this.hideGeom(this.carWire);\n for (let i = 0, len = this.CAR_WIRE_CLONE_LEN; i < len; i++) {\n let item = this.carWireClones[i];\n this.hideGeom(item);\n }\n\n this.hideGeom(this.trafficLight);\n for (let i = 0, len = this.TRAFFIC_LIGHT_CLONE_LEN; i < len; i++) {\n let item = this.trafficLightClones[i];\n this.hideGeom(item);\n }\n\n this.hideGeom(this.trafficSign);\n\n this.hideGeom(this.trafficCorn);\n for (let i = 0, len = this.CORN_CLONE_LEN; i < len; i++) {\n let item = this.cornClones[i];\n this.hideGeom(item);\n }\n\n this.hideGeom(this.human);\n for (let i = 0, len = this.HUMAN_CLONE_LEN; i < len; i++) {\n let item = this.humanClones[i];\n this.hideGeom(item);\n }\n\n this.mainRout.position.y = this.mainRoutDefY;\n\n this.container.remove(this.defineUseCase);\n this.container.remove(this.defineUseCaseAdd);\n\n let cloneCnt = 0;\n for (let i = 0, len = this.animeList.length; i < len; i++) {\n let anime = this.animeList[i];\n let action = anime.action;\n let mixer = anime.mixer;\n\n if (anime.name === 'car') {\n this.jumpCar(action, mixer);\n } else if (\n anime.name === 'carWire' ||\n anime.name.indexOf('carWireClone') === 0\n ) {\n if (cloneCnt < 3) {\n this.jumpCarWires(action, mixer, cloneCnt);\n }\n cloneCnt++;\n }\n }\n\n this.resetSubScene6();\n this.resetSubScene7();\n this.startScene9();\n });\n }\n\n startScene1(isPrev) {\n if (this.sw >= this.pack.BP) {\n //Scene1\n /*\n cameraTargetX = 7.5, cameraTargetY = 2.7, cameraTargetZ = -18.6, cameraLookAtTargetX = -8.7, cameraLookAtTargetY = 1, cameraLookAtTargetZ = 4.8,\n this.carCameraTarget.position.x = 7.5, this.carCameraTarget.position.y = 2.7, this.carCameraTarget.position.z = -18.6, this.cameraLookAtTarget.position.x = -8.7, this.cameraLookAtTarget.position.y = 1, this.cameraLookAtTarget.position.z = 4.8;\n */\n\n (this.carCameraTarget.position.x = 7.5),\n (this.carCameraTarget.position.y = 2.7),\n (this.carCameraTarget.position.z = -18.6),\n (this.cameraLookAtTarget.position.x = -8.7),\n (this.cameraLookAtTarget.position.y = 1),\n (this.cameraLookAtTarget.position.z = 4.8);\n } else {\n //Scene1\n /*\n cameraTargetX = 5.7, cameraTargetY = 2.7, cameraTargetZ = -15.3, cameraLookAtTargetX = -7.5, cameraLookAtTargetY = 3, cameraLookAtTargetZ = 4.8,\n this.carCameraTarget.position.x = 5.7, this.carCameraTarget.position.y = 2.7, this.carCameraTarget.position.z = -15.3, this.cameraLookAtTarget.position.x = -7.5, this.cameraLookAtTarget.position.y = 3, this.cameraLookAtTarget.position.z = 4.8;\n */\n (this.carCameraTarget.position.x = 5.7),\n (this.carCameraTarget.position.y = 2.7),\n (this.carCameraTarget.position.z = -15.3),\n (this.cameraLookAtTarget.position.x = -7.5),\n (this.cameraLookAtTarget.position.y = 3),\n (this.cameraLookAtTarget.position.z = 4.8);\n }\n\n for (let i = 0, len = this.animeList.length; i < len; i++) {\n let anime = this.animeList[i];\n let action = anime.action;\n\n if (anime.name === 'car') {\n action.paused = false;\n action.play();\n }\n }\n }\n\n startScene2(isPrev) {\n if (this.sw >= this.pack.BP) {\n //Scene2\n /*\n cameraTargetX = 11.4, cameraTargetY = 1.2, cameraTargetZ = 7.2, cameraLookAtTargetX = 3.3, cameraLookAtTargetY = 6, cameraLookAtTargetZ = -14.4,\n this.carCameraTarget.position.x = 11.4, this.carCameraTarget.position.y = 1.2, this.carCameraTarget.position.z = 7.2, this.cameraLookAtTarget.position.x = 3.3, this.cameraLookAtTarget.position.y = 6, this.cameraLookAtTarget.position.z = -14.4;\n */\n (this.carCameraTarget.position.x = 11.4),\n (this.carCameraTarget.position.y = 1.2),\n (this.carCameraTarget.position.z = 7.2),\n (this.cameraLookAtTarget.position.x = 3.3),\n (this.cameraLookAtTarget.position.y = 6),\n (this.cameraLookAtTarget.position.z = -14.4);\n } else {\n /*\n cameraTargetX = 11.4, cameraTargetY = 1.2, cameraTargetZ = 13.2, cameraLookAtTargetX = -8.7, cameraLookAtTargetY = 15, cameraLookAtTargetZ = -29.4,\n this.carCameraTarget.position.x = 11.4, this.carCameraTarget.position.y = 1.2, this.carCameraTarget.position.z = 13.2, this.cameraLookAtTarget.position.x = -8.7, this.cameraLookAtTarget.position.y = 15, this.cameraLookAtTarget.position.z = -29.4;\n */\n (this.carCameraTarget.position.x = 11.4),\n (this.carCameraTarget.position.y = 1.2),\n (this.carCameraTarget.position.z = 13.2),\n (this.cameraLookAtTarget.position.x = -8.7),\n (this.cameraLookAtTarget.position.y = 15),\n (this.cameraLookAtTarget.position.z = -29.4);\n }\n\n this.container.remove(this.sensor);\n this.hideGeom(this.carWire);\n for (let i = 0, len = this.CAR_WIRE_CLONE_LEN; i < len; i++) {\n let item = this.carWireClones[i];\n this.hideGeom(item);\n }\n\n this.mainRout.position.y = this.mainRoutDefY;\n\n TweenMax.killTweensOf(this);\n this.currentWheelSpeed = this.wheelSpeed;\n }\n\n startScene3(isPrev) {\n if (this.sw >= this.pack.BP) {\n //Scene3\n (this.carCameraTarget.position.x = -30.6),\n (this.carCameraTarget.position.y = 150),\n (this.carCameraTarget.position.z = 91.2),\n (this.cameraLookAtTarget.position.x = -36),\n (this.cameraLookAtTarget.position.y = -96),\n (this.cameraLookAtTarget.position.z = -55.8);\n } else {\n //Scene3\n /**/\n (this.carCameraTarget.position.x = -14.6),\n (this.carCameraTarget.position.y = 100),\n (this.carCameraTarget.position.z = 72),\n (this.cameraLookAtTarget.position.x = -17.1),\n (this.cameraLookAtTarget.position.y = -96),\n (this.cameraLookAtTarget.position.z = -70.8);\n }\n\n for (let i = 0, len = this.animeList.length; i < len; i++) {\n let anime = this.animeList[i];\n let action = anime.action;\n let mixer = anime.mixer;\n\n if (anime.name === 'car') {\n action.paused = false;\n action.play();\n } else if (anime.name === 'sensor') {\n action.paused = false;\n action.reset().play();\n mixer.setTime(0);\n }\n }\n\n this.mainRout.position.y = 0.3;\n\n this.container.add(this.sensor);\n\n this.showGeom(this.carWire, this.OBJECT_OPACITY1);\n for (let i = 0, len = this.CAR_WIRE_CLONE_LEN; i < len; i++) {\n let item = this.carWireClones[i];\n this.showGeom(item, this.OBJECT_OPACITY1);\n }\n\n TweenMax.killDelayedCallsTo(this.startDefineUseCase);\n TweenMax.killDelayedCallsTo(this.startDefineUseCaseAdd);\n this.container.remove(this.defineUseCase);\n this.container.remove(this.defineUseCaseAdd);\n\n this.hideGeom(this.trafficLight);\n for (let i = 0, len = this.TRAFFIC_LIGHT_CLONE_LEN; i < len; i++) {\n let item = this.trafficLightClones[i];\n this.hideGeom(item);\n }\n\n this.hideGeom(this.trafficSign);\n\n this.hideGeom(this.trafficCorn);\n for (let i = 0, len = this.CORN_CLONE_LEN; i < len; i++) {\n let item = this.cornClones[i];\n this.hideGeom(item);\n }\n\n this.hideGeom(this.human);\n for (let i = 0, len = this.HUMAN_CLONE_LEN; i < len; i++) {\n let item = this.humanClones[i];\n this.hideGeom(item);\n }\n\n let color = this.DEF_COLOR;\n let mesh = this.carWire;\n let emissive = mesh.material.emissive;\n this.tweenMaterialEmissive(emissive, color);\n\n mesh = this.human;\n emissive = mesh.material.emissive;\n this.tweenMaterialEmissive(emissive, color);\n\n mesh = this.trafficSign;\n emissive = mesh.material.emissive;\n this.changeMaterialEmissive(emissive, color);\n\n mesh = this.trafficLight;\n emissive = mesh.material.emissive;\n this.changeMaterialEmissive(emissive, color);\n for (let i = 0, len = this.TRAFFIC_LIGHT_CLONE_LEN; i < len; i++) {\n let mesh = this.trafficLightClones[i];\n emissive = mesh.material.emissive;\n this.changeMaterialEmissive(emissive, color);\n }\n\n mesh = this.trafficCorn;\n emissive = mesh.material.emissive;\n this.changeMaterialEmissive(emissive, color);\n for (let i = 0, len = this.CORN_CLONE_LEN; i < len; i++) {\n let mesh = this.cornClones[i];\n emissive = mesh.material.emissive;\n this.changeMaterialEmissive(emissive, color);\n }\n\n for (let i = 0, len = this.animeList.length; i < len; i++) {\n let anime = this.animeList[i];\n let action = anime.action;\n let mixer = anime.mixer;\n\n if (\n anime.name === 'carWire' ||\n anime.name.indexOf('carWireClone') === 0\n ) {\n action.paused = false;\n action.reset().play();\n mixer.setTime(anime.offsetTime);\n }\n }\n\n TweenMax.delayedCall(2.0, () => {\n //sensor\n for (let i = 0, len = this.animeList.length; i < len; i++) {\n let anime = this.animeList[i];\n let action = anime.action;\n let mixer = anime.mixer;\n\n if (anime.name === 'sensor') {\n mixer.time = 0;\n action.paused = false;\n action.reset().play();\n }\n }\n });\n }\n\n startScene4(isPrev) {\n if (this.sw >= this.pack.BP) {\n //Scene4\n (this.carCameraTarget.position.x = -11.1),\n (this.carCameraTarget.position.y = 7.5),\n (this.carCameraTarget.position.z = -25.8),\n (this.cameraLookAtTarget.position.x = 8.7),\n (this.cameraLookAtTarget.position.y = -6.9),\n (this.cameraLookAtTarget.position.z = 0.3);\n } else {\n //Scene4\n /*\n cameraTargetX = -11.1, cameraTargetY = 7.5, cameraTargetZ = -25.8, cameraLookAtTargetX = 2.1, cameraLookAtTargetY = -6.9, cameraLookAtTargetZ = 0.3,\n this.carCameraTarget.position.x = -11.1, this.carCameraTarget.position.y = 7.5, this.carCameraTarget.position.z = -25.8, this.cameraLookAtTarget.position.x = 2.1, this.cameraLookAtTarget.position.y = -6.9, this.cameraLookAtTarget.position.z = 0.3;\n */\n (this.carCameraTarget.position.x = -11.1),\n (this.carCameraTarget.position.y = 7.5),\n (this.carCameraTarget.position.z = -25.8),\n (this.cameraLookAtTarget.position.x = 2.1),\n (this.cameraLookAtTarget.position.y = -6.9),\n (this.cameraLookAtTarget.position.z = 0.3);\n }\n\n this.mainRout.position.y = this.mainRoutDefY;\n\n this.showGeom(this.human, this.OBJECT_OPACITY1);\n for (let i = 0, len = this.HUMAN_CLONE_LEN; i < len; i++) {\n let item = this.humanClones[i];\n this.showGeom(item, this.OBJECT_OPACITY1);\n }\n\n this.showGeom(this.trafficLight, this.OBJECT_OPACITY1);\n for (let i = 0, len = this.TRAFFIC_LIGHT_CLONE_LEN; i < len; i++) {\n let item = this.trafficLightClones[i];\n this.showGeom(item, this.OBJECT_OPACITY1);\n }\n\n this.container.remove(this.sensor);\n this.showGeom(this.trafficSign, this.OBJECT_OPACITY1);\n this.showGeom(this.trafficCorn, this.OBJECT_OPACITY1);\n for (let i = 0, len = this.CORN_CLONE_LEN; i < len; i++) {\n let item = this.cornClones[i];\n this.showGeom(item, this.OBJECT_OPACITY1);\n }\n\n let color = this.DEF_COLOR;\n let mesh = this.carWire;\n let emissive = mesh.material.emissive;\n this.tweenMaterialEmissive(emissive, color);\n\n mesh = this.humanClones[0];\n emissive = mesh.material.emissive;\n this.tweenMaterialEmissive(emissive, color);\n\n mesh = this.humanClones[3];\n emissive = mesh.material.emissive;\n this.tweenMaterialEmissive(emissive, color);\n\n mesh = this.humanClones[4];\n emissive = mesh.material.emissive;\n this.tweenMaterialEmissive(emissive, color);\n mesh = this.humanClones[5];\n emissive = mesh.material.emissive;\n this.tweenMaterialEmissive(emissive, color);\n\n color = this.ORANGE_COLOR;\n mesh = this.human;\n emissive = mesh.material.emissive;\n this.tweenMaterialEmissive(emissive, color, 2.7);\n\n let cloneCnt = 0;\n for (let i = 0, len = this.animeList.length; i < len; i++) {\n let anime = this.animeList[i];\n let action = anime.action;\n let mixer = anime.mixer;\n\n if (anime.name === 'car') {\n this.jumpCar(action, mixer);\n } else if (\n anime.name === 'carWire' ||\n anime.name.indexOf('carWireClone') === 0\n ) {\n if (cloneCnt < 3) {\n this.jumpCarWires(action, mixer, cloneCnt);\n } else {\n action.paused = false;\n action.reset().play();\n mixer.setTime(0);\n action.paused = true;\n }\n cloneCnt++;\n } else if (anime.name === 'defineUseCase') {\n TweenMax.killDelayedCallsTo(this.startDefineUseCase);\n action.paused = true;\n mixer.setTime(0);\n TweenMax.delayedCall(\n 3.0,\n this.startDefineUseCase.bind(this, action, mixer)\n );\n } else if (anime.name === 'defineUseCaseAdd') {\n TweenMax.killDelayedCallsTo(this.startDefineUseCaseAdd);\n action.paused = true;\n mixer.setTime(0);\n TweenMax.delayedCall(\n 3.2,\n this.startDefineUseCaseAdd.bind(this, action, mixer)\n );\n }\n }\n }\n\n startScene5(isPrev) {\n //Scene5\n (this.carCameraTarget.position.x = 5.4),\n (this.carCameraTarget.position.y = 3.3),\n (this.carCameraTarget.position.z = 2.1),\n (this.cameraLookAtTarget.position.x = -6.9),\n (this.cameraLookAtTarget.position.y = 2.7),\n (this.cameraLookAtTarget.position.z = -13.5);\n\n this.hideGeom(this.trafficLight);\n for (let i = 0, len = this.TRAFFIC_LIGHT_CLONE_LEN; i < len; i++) {\n let item = this.trafficLightClones[i];\n this.hideGeom(item);\n }\n\n this.hideGeom(this.trafficSign);\n\n this.hideGeom(this.trafficCorn);\n for (let i = 0, len = this.CORN_CLONE_LEN; i < len; i++) {\n let item = this.cornClones[i];\n this.hideGeom(item);\n }\n\n TweenMax.killDelayedCallsTo(this.startDefineUseCase);\n TweenMax.killDelayedCallsTo(this.startDefineUseCaseAdd);\n this.container.remove(this.defineUseCase);\n this.container.remove(this.defineUseCaseAdd);\n\n TweenMax.killTweensOf(this);\n this.currentWheelSpeed = this.wheelSpeed;\n\n let colorDelay = 2;\n let color = this.ORANGE_COLOR;\n let mesh = this.carWire;\n let emissive = mesh.material.emissive;\n this.tweenMaterialEmissive(emissive, color, colorDelay);\n\n color = this.DEF_COLOR;\n mesh = this.human;\n emissive = mesh.material.emissive;\n this.tweenMaterialEmissive(emissive, color);\n TweenMax.delayedCall(colorDelay, () => {\n let color = this.ORANGE_COLOR;\n\n mesh = this.humanClones[0];\n emissive = mesh.material.emissive;\n this.tweenMaterialEmissive(emissive, color);\n\n mesh = this.humanClones[3];\n emissive = mesh.material.emissive;\n this.tweenMaterialEmissive(emissive, color);\n\n mesh = this.humanClones[4];\n emissive = mesh.material.emissive;\n this.tweenMaterialEmissive(emissive, color);\n mesh = this.humanClones[5];\n emissive = mesh.material.emissive;\n this.tweenMaterialEmissive(emissive, color);\n });\n\n this.resetSubScene6();\n this.pack.top.resetHeroContents(6);\n }\n\n startScene6(isPrev) {\n if (this.sw >= this.pack.BP) {\n //Scene6\n (this.carCameraTarget.position.x = -2.7),\n (this.carCameraTarget.position.y = 4.2),\n (this.carCameraTarget.position.z = 33.9),\n (this.cameraLookAtTarget.position.x = -8.4),\n (this.cameraLookAtTarget.position.y = 10.5),\n (this.cameraLookAtTarget.position.z = -27.6);\n } else {\n //Scene6\n /*\n */\n //Scene5\n (this.carCameraTarget.position.x = -2.7),\n (this.carCameraTarget.position.y = 2.1),\n (this.carCameraTarget.position.z = 26),\n (this.cameraLookAtTarget.position.x = 1.8),\n (this.cameraLookAtTarget.position.y = -3.9),\n (this.cameraLookAtTarget.position.z = -27.6);\n }\n\n let objectOpacity = this.OBJECT_OPACITY1;\n this.showGeom(this.trafficLight, objectOpacity);\n for (let i = 0, len = this.TRAFFIC_LIGHT_CLONE_LEN; i < len; i++) {\n let item = this.trafficLightClones[i];\n this.showGeom(item, objectOpacity);\n }\n\n this.showGeom(this.trafficSign, objectOpacity);\n\n this.showGeom(this.trafficCorn, objectOpacity);\n for (let i = 0, len = this.CORN_CLONE_LEN; i < len; i++) {\n let item = this.cornClones[i];\n this.showGeom(item, objectOpacity);\n }\n\n this.showGeom(this.human, this.OBJECT_OPACITY1);\n for (let i = 0, len = this.HUMAN_CLONE_LEN; i < len; i++) {\n let item = this.humanClones[i];\n this.showGeom(item, this.OBJECT_OPACITY1);\n }\n\n this.showGeom(this.carWire, this.OBJECT_OPACITY1);\n for (let i = 0, len = this.CAR_WIRE_CLONE_LEN; i < len; i++) {\n let item = this.carWireClones[i];\n this.showGeom(item, this.OBJECT_OPACITY1);\n }\n\n let color = this.DEF_COLOR;\n let mesh = this.human;\n let emissive = mesh.material.emissive;\n this.tweenMaterialEmissive(emissive, color);\n\n mesh = this.carWire;\n emissive = mesh.material.emissive;\n this.tweenMaterialEmissive(emissive, color);\n\n mesh = this.humanClones[0];\n emissive = mesh.material.emissive;\n this.tweenMaterialEmissive(emissive, color);\n\n mesh = this.humanClones[3];\n emissive = mesh.material.emissive;\n this.tweenMaterialEmissive(emissive, color);\n\n mesh = this.humanClones[4];\n emissive = mesh.material.emissive;\n this.tweenMaterialEmissive(emissive, color);\n mesh = this.humanClones[5];\n emissive = mesh.material.emissive;\n this.tweenMaterialEmissive(emissive, color);\n\n let cloneCnt = 0;\n for (let i = 0, len = this.animeList.length; i < len; i++) {\n let anime = this.animeList[i];\n let action = anime.action;\n let mixer = anime.mixer;\n\n if (\n anime.name === 'carWire' ||\n anime.name.indexOf('carWireClone') === 0\n ) {\n if (cloneCnt < 3) {\n action.paused = false;\n action.reset().play();\n let time = 77.5 + cloneCnt * 2.25;\n mixer.setTime(time);\n action.paused = true;\n } else {\n action.paused = false;\n action.reset().play();\n mixer.setTime(0);\n action.paused = true;\n }\n cloneCnt++;\n }\n }\n\n this.resetSubScene7();\n this.pack.top.resetHeroContents(7);\n }\n\n startSubScene6(subScene) {\n if (subScene === 1) {\n let color = this.DEF_COLOR;\n this.tweenMaterialEmissive(\n this.trafficSign.material.emissive,\n color\n );\n this.tweenMaterialEmissive(\n this.trafficLight.material.emissive,\n color\n );\n for (let i = 0, len = this.TRAFFIC_LIGHT_CLONE_LEN; i < len; i++) {\n let item = this.trafficLightClones[i];\n let emissive = item.material.emissive;\n this.tweenMaterialEmissive(emissive, color);\n }\n } else if (subScene === 2) {\n let color = this.DEF_COLOR;\n this.tweenMaterialEmissive(\n this.trafficCorn.material.emissive,\n color\n );\n\n for (let i = 0, len = this.CORN_CLONE_LEN; i < len; i++) {\n let item = this.cornClones[i];\n let emissive = item.material.emissive;\n this.tweenMaterialEmissive(emissive, color);\n }\n\n color = this.ORANGE_COLOR;\n this.tweenMaterialEmissive(\n this.trafficSign.material.emissive,\n color\n );\n this.tweenMaterialEmissive(\n this.trafficLight.material.emissive,\n color\n );\n for (let i = 0, len = this.TRAFFIC_LIGHT_CLONE_LEN; i < len; i++) {\n let item = this.trafficLightClones[i];\n let emissive = item.material.emissive;\n this.tweenMaterialEmissive(emissive, color);\n }\n } else if (subScene === 3) {\n let color = this.DEF_COLOR;\n this.tweenMaterialEmissive(\n this.trafficSign.material.emissive,\n color\n );\n this.tweenMaterialEmissive(\n this.trafficLight.material.emissive,\n color\n );\n for (let i = 0, len = this.TRAFFIC_LIGHT_CLONE_LEN; i < len; i++) {\n let item = this.trafficLightClones[i];\n let emissive = item.material.emissive;\n this.tweenMaterialEmissive(emissive, color);\n }\n\n color = this.ORANGE_COLOR;\n this.tweenMaterialEmissive(\n this.trafficCorn.material.emissive,\n color\n );\n\n for (let i = 0, len = this.CORN_CLONE_LEN; i < len; i++) {\n let item = this.cornClones[i];\n let emissive = item.material.emissive;\n this.tweenMaterialEmissive(emissive, color);\n }\n this.container.remove(this.sixLayers04);\n for (let i = 0, len = this.animeList.length; i < len; i++) {\n let anime = this.animeList[i];\n let action = anime.action;\n let mixer = anime.mixer;\n\n if (anime.name === 'sixLayers04') {\n action.paused = false;\n action.reset().play();\n mixer.setTime(0);\n action.paused = true;\n }\n }\n } else if (subScene === 4) {\n TweenMax.to(this.ambientLight, 1, {\n intensity: ambientIntensity,\n ease: Quart.easeOut,\n });\n\n let color = this.DEF_COLOR;\n this.tweenMaterialEmissive(\n this.trafficCorn.material.emissive,\n color\n );\n\n for (let i = 0, len = this.CORN_CLONE_LEN; i < len; i++) {\n let item = this.cornClones[i];\n let emissive = item.material.emissive;\n this.tweenMaterialEmissive(emissive, color);\n }\n\n this.container.add(this.sixLayers04);\n for (let i = 0, len = this.animeList.length; i < len; i++) {\n let anime = this.animeList[i];\n let action = anime.action;\n let mixer = anime.mixer;\n if (anime.name === 'sixLayers04') {\n action.paused = false;\n action.reset().play();\n mixer.setTime(0);\n }\n }\n } else if (subScene === 5) {\n this.container.remove(this.sixLayers04);\n this.container.remove(this.sixLayers06);\n TweenMax.to(this.ambientLight, 1, {\n intensity: 1,\n ease: Quad.easeOut,\n });\n for (let i = 0, len = this.animeList.length; i < len; i++) {\n let anime = this.animeList[i];\n let action = anime.action;\n let mixer = anime.mixer;\n if (anime.name === 'sixLayers04') {\n action.paused = false;\n action.reset().play();\n mixer.setTime(0);\n action.paused = true;\n } else if (anime.name === 'sixLayers06') {\n action.paused = false;\n action.reset().play();\n mixer.setTime(0);\n action.paused = true;\n }\n }\n } else if (subScene === 6) {\n this.container.add(this.sixLayers06);\n TweenMax.to(this.ambientLight, 1, {\n intensity: ambientIntensity,\n ease: Quart.easeOut,\n });\n for (let i = 0, len = this.animeList.length; i < len; i++) {\n let anime = this.animeList[i];\n let action = anime.action;\n let mixer = anime.mixer;\n if (anime.name === 'sixLayers06') {\n action.paused = false;\n action.reset().play();\n mixer.setTime(0);\n }\n }\n }\n }\n\n resetSubScene6() {\n let color = this.DEF_COLOR;\n this.tweenMaterialEmissive(this.trafficSign.material.emissive, color);\n this.tweenMaterialEmissive(this.trafficLight.material.emissive, color);\n\n for (let i = 0, len = this.TRAFFIC_LIGHT_CLONE_LEN; i < len; i++) {\n let item = this.trafficLightClones[i];\n let emissive = item.material.emissive;\n this.tweenMaterialEmissive(emissive, color);\n }\n\n this.tweenMaterialEmissive(this.trafficCorn.material.emissive, color);\n for (let i = 0, len = this.CORN_CLONE_LEN; i < len; i++) {\n let item = this.cornClones[i];\n let emissive = item.material.emissive;\n this.tweenMaterialEmissive(emissive, color);\n }\n\n this.container.remove(this.sixLayers04);\n this.container.remove(this.sixLayers06);\n\n TweenMax.to(this.ambientLight, 1, {\n intensity: ambientIntensity,\n ease: Quart.easeOut,\n });\n\n for (let i = 0, len = this.animeList.length; i < len; i++) {\n let anime = this.animeList[i];\n let action = anime.action;\n let mixer = anime.mixer;\n\n if (anime.name === 'sixLayers04') {\n action.paused = false;\n action.reset().play();\n mixer.setTime(0);\n action.paused = true;\n } else if (anime.name === 'sixLayers06') {\n action.paused = false;\n action.reset().play();\n mixer.setTime(0);\n action.paused = true;\n }\n }\n }\n\n startScene7(isPrev) {\n // this.enabledUpdate = true;\n TweenMax.to(this.canvas, 1, { opacity: 1, ease: Quad.easeOut });\n\n this.resetSubScene6();\n this.pack.top.resetHeroContents(6);\n\n if (this.sw >= this.pack.BP) {\n //Scene7\n (this.carCameraTarget.position.x = 3.3),\n (this.carCameraTarget.position.y = 2.7),\n (this.carCameraTarget.position.z = -5.4),\n (this.cameraLookAtTarget.position.x = -3),\n (this.cameraLookAtTarget.position.y = -0.6),\n (this.cameraLookAtTarget.position.z = 2.7);\n } else {\n //Scene7\n /*\n cameraTargetX = 4.6, cameraTargetY = 2.7, cameraTargetZ = -9, cameraLookAtTargetX = -2.4, cameraLookAtTargetY = -0.6, cameraLookAtTargetZ = 4.5,\n this.carCameraTarget.position.x = 4.6, this.carCameraTarget.position.y = 2.7, this.carCameraTarget.position.z = -9, this.cameraLookAtTarget.position.x = -2.4, this.cameraLookAtTarget.position.y = -0.6, this.cameraLookAtTarget.position.z = 4.5;\n */\n (this.carCameraTarget.position.x = 4.6),\n (this.carCameraTarget.position.y = 2.7),\n (this.carCameraTarget.position.z = -9),\n (this.cameraLookAtTarget.position.x = -2.4),\n (this.cameraLookAtTarget.position.y = -0.6),\n (this.cameraLookAtTarget.position.z = 4.5);\n }\n\n this.hideGeom(this.carWire);\n for (let i = 0, len = this.CAR_WIRE_CLONE_LEN; i < len; i++) {\n let item = this.carWireClones[i];\n this.hideGeom(item);\n }\n\n this.hideGeom(this.trafficLight);\n for (let i = 0, len = this.TRAFFIC_LIGHT_CLONE_LEN; i < len; i++) {\n let item = this.trafficLightClones[i];\n this.hideGeom(item);\n }\n\n this.hideGeom(this.trafficSign);\n\n this.hideGeom(this.trafficCorn);\n for (let i = 0, len = this.CORN_CLONE_LEN; i < len; i++) {\n let item = this.cornClones[i];\n this.hideGeom(item);\n }\n\n this.hideGeom(this.human);\n for (let i = 0, len = this.HUMAN_CLONE_LEN; i < len; i++) {\n let item = this.humanClones[i];\n this.hideGeom(item);\n }\n }\n\n startSubScene7(subScene) {\n if (subScene === 1) {\n } else if (subScene === 2) {\n for (let i = 0, len = this.animeList.length; i < len; i++) {\n let anime = this.animeList[i];\n let action = anime.action;\n let mixer = anime.mixer;\n\n if (anime.name === 'referenceDesignSensor') {\n action.paused = false;\n action.reset().play();\n mixer.setTime(0);\n } else if (\n anime.name === 'referenceDesignRoof' ||\n anime.name === 'referenceDesignInterior'\n ) {\n action.paused = true;\n mixer.setTime(0);\n }\n }\n } else if (subScene === 3) {\n for (let i = 0, len = this.animeList.length; i < len; i++) {\n let anime = this.animeList[i];\n let action = anime.action;\n let mixer = anime.mixer;\n\n if (\n anime.name === 'referenceDesignRoof' ||\n anime.name === 'referenceDesignInterior'\n ) {\n action.paused = false;\n action.reset().play();\n mixer.setTime(0);\n }\n }\n }\n }\n\n resetSubScene7() {\n for (let i = 0, len = this.animeList.length; i < len; i++) {\n let anime = this.animeList[i];\n let action = anime.action;\n let mixer = anime.mixer;\n\n if (\n anime.name === 'referenceDesignSensor' ||\n anime.name === 'referenceDesignRoof' ||\n anime.name === 'referenceDesignInterior'\n ) {\n action.paused = false;\n action.reset().play();\n mixer.setTime(0);\n action.paused = true;\n }\n }\n }\n\n startScene8(isPrev) {\n // this.enabledUpdate = false;\n this.enabledUpdate = true;\n TweenMax.to(this.canvas, 0.5, { opacity: 0, ease: Quad.easeOut });\n this.resetSubScene7();\n this.pack.top.resetHeroContents(7);\n\n this.carCameraTarget.position.x = -6;\n this.carCameraTarget.position.z = -20;\n\n if (this.sw >= this.pack.BP) {\n this.carCameraTarget.position.y = 4.5;\n this.cameraLookAtTarget.position.x = -5.0;\n this.cameraLookAtTarget.position.y = -0.2;\n this.cameraLookAtTarget.position.z = -7.0;\n } else {\n this.carCameraTarget.position.y = 1.5;\n this.cameraLookAtTarget.position.x = 0;\n this.cameraLookAtTarget.position.y = -0.7;\n this.cameraLookAtTarget.position.z = -9.0;\n }\n }\n\n startScene9(isPrev) {\n this.enabledUpdate = false;\n TweenMax.to(this.canvas, 0.5, { opacity: 0, ease: Quad.easeOut });\n // this.resetSubScene7();\n // this.pack.top.resetHeroContents(7);\n\n // this.carCameraTarget.position.x = -6;\n // this.carCameraTarget.position.z = -20;\n\n // if(this.sw >= this.pack.BP){\n // this.carCameraTarget.position.y = 4.5;\n // this.cameraLookAtTarget.position.x = -5.0;\n // this.cameraLookAtTarget.position.y = -0.2;\n // this.cameraLookAtTarget.position.z = -7.0;\n\n // }else{\n // this.carCameraTarget.position.y = 1.5;\n // this.cameraLookAtTarget.position.x = 0;\n // this.cameraLookAtTarget.position.y = -0.7;\n // this.cameraLookAtTarget.position.z = -9.0;\n // }\n }\n\n changeSubScene(scene, subScene) {\n if (scene === 6) this.startSubScene6(subScene);\n else if (scene === 7) this.startSubScene7(subScene);\n\n TweenMax.delayedCall(0.75, () => {\n this.dispatchEvent('changedScene');\n });\n }\n\n scrollHandler() {}\n\n render() {\n this.renderer.render(this.scene, this.camera);\n }\n\n enterframe() {}\n\n updateEnvironment(envMap) {\n // this.traverseMaterials(this.container, (material) => {\n this.traverseMaterials(this.car, (material) => {\n // trace(material);\n if (\n material.isMeshStandardMaterial ||\n material.isGLTFSpecularGlossinessMaterial\n ) {\n material.envMap = envMap;\n material.needsUpdate = true;\n }\n });\n }\n\n traverseMaterials(object, callback) {\n object.traverse((node) => {\n if (!node.isMesh) return;\n const materials = Array.isArray(node.material)\n ? node.material\n : [node.material];\n materials.forEach(callback);\n });\n }\n\n updateObject(node, position, target) {\n node.position.x = position.x;\n node.position.y = position.y;\n node.position.z = position.z;\n node.rotation.x = target.rotation.x;\n node.rotation.y = target.rotation.y;\n node.rotation.z = target.rotation.z;\n }\n\n tweenMaterialEmissive(emissive, color, delay, dr, ease) {\n delay = delay | 0;\n dr = dr | 1;\n ease = ease | Quart.easeOut;\n TweenMax.to(emissive, dr, {\n delay: delay,\n r: color.r,\n g: color.g,\n b: color.b,\n ease: ease,\n });\n }\n\n changeMaterialEmissive(emissive, color) {\n emissive.r = color.r;\n emissive.g = color.g;\n emissive.b = color.b;\n }\n\n enterframeThinOut() {\n if (this.pack.header.isMenuOpen) return;\n if (!this.enabledUpdate) return;\n if (this.enabledOrbitControls) this.controls.update();\n if (!this.loaded) return;\n\n let delta = this.clock.getDelta();\n\n for (let i = 0, len = this.animeList.length; i < len; i++) {\n let anime = this.animeList[i];\n let mixer = this.animeList[i].mixer;\n let name = this.animeList[i].name;\n\n if (this.currentScene === 3) {\n if (name === 'sensor') {\n mixer.update(delta);\n let opacity =\n (1 - (mixer.time % anime.duration) / anime.duration) *\n 0.7; //opacity70%\n\n for (\n let i = 0, len = this.sensorMeshMaterials.length;\n i < len;\n i++\n ) {\n let m = this.sensorMeshMaterials[i];\n m.opacity = opacity;\n }\n } else if (name.indexOf('carWire') > -1) {\n mixer.update(delta);\n }\n }\n\n if (this.currentScene === 4) {\n if (name === 'defineUseCase') {\n mixer.update(delta);\n } else if (name === 'defineUseCaseAdd') {\n mixer.update(delta);\n }\n }\n\n if (this.currentScene === 6) {\n if (name.indexOf('sixLayers') > -1) {\n mixer.update(delta);\n }\n }\n\n if (this.currentScene === 7) {\n if (name.indexOf('referenceDesign') > -1) {\n mixer.update(delta);\n }\n }\n\n if (\n this.currentScene === 1 ||\n this.currentScene === 2 ||\n this.currentScene === 3\n ) {\n if (name === 'car') {\n mixer.update(delta);\n }\n }\n }\n\n //carアニメーション位置情報\n let carPosVector = new THREE.Vector3();\n carPosVector = this.currentCarPosVector =\n this.cameraTarget.getWorldPosition(carPosVector);\n\n //carWire位置アニメーション\n let carWireAdjustY = 0.8;\n let carWireVector = new THREE.Vector3();\n carWireVector = this.carWireTarget.getWorldPosition(carWireVector);\n carWireVector.y += carWireAdjustY;\n\n this.updateObject(this.carWire, carWireVector, this.carWireTarget);\n for (let i = 0, len = this.CAR_WIRE_CLONE_LEN; i < len; i++) {\n let id = i + 1;\n let target = this['carWireTarget' + id];\n let mesh = this.carWireClones[i];\n let carWireVector = new THREE.Vector3();\n\n carWireVector = target.getWorldPosition(carWireVector);\n carWireVector.y += carWireAdjustY;\n\n this.updateObject(mesh, carWireVector, target);\n }\n\n //carアニメーション\n this.updateObject(this.car, carPosVector, this.cameraTarget.parent);\n\n //carアニメーションに同期させる\n this.updateObject(\n this.referenceDesignInterior,\n carPosVector,\n this.cameraTarget.parent\n );\n this.updateObject(\n this.referenceDesignRoof,\n carPosVector,\n this.cameraTarget.parent\n );\n this.updateObject(\n this.referenceDesignSensor,\n carPosVector,\n this.cameraTarget.parent\n );\n this.updateObject(this.sensor, carPosVector, this.cameraTarget.parent);\n\n this.carInterior.position.y =\n this.carInteriorDefY +\n this.referenceDesignInteriorTarget.position.y;\n this.carRoof.position.y =\n this.carRoofDefY + this.referenceDesignRoofTarget.position.y;\n this.carSensor.position.y =\n this.carSensorDefY + this.referenceDesignSensorTarget.position.y;\n\n let cameraTargetPosVector = new THREE.Vector3();\n cameraTargetPosVector = this.carCameraTarget.getWorldPosition(\n cameraTargetPosVector\n );\n\n let targetPositionRightNow = new THREE.Vector3();\n let targetLookAt;\n\n //カメラのcarの追従\n if (!this.enabledOrbitControls) {\n let cameraLookAtTargetPosVector = new THREE.Vector3();\n cameraLookAtTargetPosVector =\n this.cameraLookAtTarget.getWorldPosition(\n cameraLookAtTargetPosVector\n );\n\n targetPositionRightNow.x = cameraTargetPosVector.x;\n targetPositionRightNow.y = cameraTargetPosVector.y;\n targetPositionRightNow.z = cameraTargetPosVector.z;\n targetLookAt = cameraLookAtTargetPosVector;\n }\n\n let ease;\n let mouseX;\n let mouseY;\n\n if (this.currentScene === 1) {\n mouseX = this.mouseStage.x / 150;\n mouseY = this.mouseStage.y / 180;\n ease = 10;\n } else if (this.currentScene === 2) {\n mouseX = this.mouseStage.x / 150;\n mouseY = this.mouseStage.y / 450;\n ease = 10;\n } else if (this.currentScene === 3) {\n mouseX = this.mouseStage.x / 50;\n mouseY = this.mouseStage.y / 50;\n ease = 30;\n } else if (this.currentScene === 4) {\n mouseX = this.mouseStage.x / 870;\n mouseY = this.mouseStage.y / 870;\n ease = 15;\n } else if (this.currentScene === 5 || this.currentScene === 7) {\n mouseX = this.mouseStage.x / 670;\n mouseY = this.mouseStage.y / 670;\n ease = 12;\n } else if (this.currentScene === 6) {\n mouseX = this.mouseStage.x / 150;\n mouseY = this.mouseStage.y / 150;\n ease = 20;\n } else {\n mouseX = 0;\n mouseY = 0;\n ease = 20;\n }\n\n //for layout\n // mouseX = 0;\n // mouseY = 0;\n\n this.currentTargetPosition.x +=\n (targetPositionRightNow.x - this.currentTargetPosition.x) / 3;\n this.currentTargetPosition.y +=\n (targetPositionRightNow.y - this.currentTargetPosition.y) / 3;\n this.currentTargetPosition.z +=\n (targetPositionRightNow.z - this.currentTargetPosition.z) / 3;\n\n this.camera.position.x +=\n (this.currentTargetPosition.x - this.camera.position.x + mouseX) /\n ease;\n this.camera.position.y +=\n (this.currentTargetPosition.y - this.camera.position.y + mouseY) /\n ease;\n this.camera.position.z +=\n (this.currentTargetPosition.z - this.camera.position.z) / ease;\n\n this.currentLookatTargetPosition.x +=\n (targetLookAt.x - this.currentLookatTargetPosition.x) / ease;\n this.currentLookatTargetPosition.y +=\n (targetLookAt.y - this.currentLookatTargetPosition.y) / ease;\n this.currentLookatTargetPosition.z +=\n (targetLookAt.z - this.currentLookatTargetPosition.z) / ease;\n\n this.camera.lookAt(this.currentLookatTargetPosition);\n\n //car wheels\n if (this.currentScene < 4) {\n this.wheelsDeg += this.currentWheelSpeed;\n let wheelsRad = this.pack.d2r(this.wheelsDeg);\n for (let i = 0, len = this.carTyres.length; i < len; i++) {\n let mesh = this.carTyres[i];\n if (i === 0 || i === 2) mesh.rotation.x = wheelsRad;\n else mesh.rotation.x = -wheelsRad;\n }\n }\n\n this.render();\n if (this.enabledStats) this.stats.update();\n }\n\n executeResize() {\n super.executeResize();\n\n if (!this.canvas) return;\n this.width = window.innerWidth;\n this.height = window.innerHeight;\n this.canvas.width = this.width;\n this.canvas.height = this.height;\n\n if (!this.camera) return;\n this.camera.aspect = this.width / this.height;\n this.camera.updateProjectionMatrix();\n this.renderer.setSize(this.width, this.height);\n }\n}\n","export const REVISION = '140';\nexport const MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nexport const TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nexport const CullFaceNone = 0;\nexport const CullFaceBack = 1;\nexport const CullFaceFront = 2;\nexport const CullFaceFrontBack = 3;\nexport const BasicShadowMap = 0;\nexport const PCFShadowMap = 1;\nexport const PCFSoftShadowMap = 2;\nexport const VSMShadowMap = 3;\nexport const FrontSide = 0;\nexport const BackSide = 1;\nexport const DoubleSide = 2;\nexport const FlatShading = 1;\nexport const SmoothShading = 2;\nexport const NoBlending = 0;\nexport const NormalBlending = 1;\nexport const AdditiveBlending = 2;\nexport const SubtractiveBlending = 3;\nexport const MultiplyBlending = 4;\nexport const CustomBlending = 5;\nexport const AddEquation = 100;\nexport const SubtractEquation = 101;\nexport const ReverseSubtractEquation = 102;\nexport const MinEquation = 103;\nexport const MaxEquation = 104;\nexport const ZeroFactor = 200;\nexport const OneFactor = 201;\nexport const SrcColorFactor = 202;\nexport const OneMinusSrcColorFactor = 203;\nexport const SrcAlphaFactor = 204;\nexport const OneMinusSrcAlphaFactor = 205;\nexport const DstAlphaFactor = 206;\nexport const OneMinusDstAlphaFactor = 207;\nexport const DstColorFactor = 208;\nexport const OneMinusDstColorFactor = 209;\nexport const SrcAlphaSaturateFactor = 210;\nexport const NeverDepth = 0;\nexport const AlwaysDepth = 1;\nexport const LessDepth = 2;\nexport const LessEqualDepth = 3;\nexport const EqualDepth = 4;\nexport const GreaterEqualDepth = 5;\nexport const GreaterDepth = 6;\nexport const NotEqualDepth = 7;\nexport const MultiplyOperation = 0;\nexport const MixOperation = 1;\nexport const AddOperation = 2;\nexport const NoToneMapping = 0;\nexport const LinearToneMapping = 1;\nexport const ReinhardToneMapping = 2;\nexport const CineonToneMapping = 3;\nexport const ACESFilmicToneMapping = 4;\nexport const CustomToneMapping = 5;\n\nexport const UVMapping = 300;\nexport const CubeReflectionMapping = 301;\nexport const CubeRefractionMapping = 302;\nexport const EquirectangularReflectionMapping = 303;\nexport const EquirectangularRefractionMapping = 304;\nexport const CubeUVReflectionMapping = 306;\nexport const RepeatWrapping = 1000;\nexport const ClampToEdgeWrapping = 1001;\nexport const MirroredRepeatWrapping = 1002;\nexport const NearestFilter = 1003;\nexport const NearestMipmapNearestFilter = 1004;\nexport const NearestMipMapNearestFilter = 1004;\nexport const NearestMipmapLinearFilter = 1005;\nexport const NearestMipMapLinearFilter = 1005;\nexport const LinearFilter = 1006;\nexport const LinearMipmapNearestFilter = 1007;\nexport const LinearMipMapNearestFilter = 1007;\nexport const LinearMipmapLinearFilter = 1008;\nexport const LinearMipMapLinearFilter = 1008;\nexport const UnsignedByteType = 1009;\nexport const ByteType = 1010;\nexport const ShortType = 1011;\nexport const UnsignedShortType = 1012;\nexport const IntType = 1013;\nexport const UnsignedIntType = 1014;\nexport const FloatType = 1015;\nexport const HalfFloatType = 1016;\nexport const UnsignedShort4444Type = 1017;\nexport const UnsignedShort5551Type = 1018;\nexport const UnsignedInt248Type = 1020;\nexport const AlphaFormat = 1021;\nexport const RGBFormat = 1022;\nexport const RGBAFormat = 1023;\nexport const LuminanceFormat = 1024;\nexport const LuminanceAlphaFormat = 1025;\nexport const DepthFormat = 1026;\nexport const DepthStencilFormat = 1027;\nexport const RedFormat = 1028;\nexport const RedIntegerFormat = 1029;\nexport const RGFormat = 1030;\nexport const RGIntegerFormat = 1031;\nexport const RGBAIntegerFormat = 1033;\n\nexport const RGB_S3TC_DXT1_Format = 33776;\nexport const RGBA_S3TC_DXT1_Format = 33777;\nexport const RGBA_S3TC_DXT3_Format = 33778;\nexport const RGBA_S3TC_DXT5_Format = 33779;\nexport const RGB_PVRTC_4BPPV1_Format = 35840;\nexport const RGB_PVRTC_2BPPV1_Format = 35841;\nexport const RGBA_PVRTC_4BPPV1_Format = 35842;\nexport const RGBA_PVRTC_2BPPV1_Format = 35843;\nexport const RGB_ETC1_Format = 36196;\nexport const RGB_ETC2_Format = 37492;\nexport const RGBA_ETC2_EAC_Format = 37496;\nexport const RGBA_ASTC_4x4_Format = 37808;\nexport const RGBA_ASTC_5x4_Format = 37809;\nexport const RGBA_ASTC_5x5_Format = 37810;\nexport const RGBA_ASTC_6x5_Format = 37811;\nexport const RGBA_ASTC_6x6_Format = 37812;\nexport const RGBA_ASTC_8x5_Format = 37813;\nexport const RGBA_ASTC_8x6_Format = 37814;\nexport const RGBA_ASTC_8x8_Format = 37815;\nexport const RGBA_ASTC_10x5_Format = 37816;\nexport const RGBA_ASTC_10x6_Format = 37817;\nexport const RGBA_ASTC_10x8_Format = 37818;\nexport const RGBA_ASTC_10x10_Format = 37819;\nexport const RGBA_ASTC_12x10_Format = 37820;\nexport const RGBA_ASTC_12x12_Format = 37821;\nexport const RGBA_BPTC_Format = 36492;\nexport const LoopOnce = 2200;\nexport const LoopRepeat = 2201;\nexport const LoopPingPong = 2202;\nexport const InterpolateDiscrete = 2300;\nexport const InterpolateLinear = 2301;\nexport const InterpolateSmooth = 2302;\nexport const ZeroCurvatureEnding = 2400;\nexport const ZeroSlopeEnding = 2401;\nexport const WrapAroundEnding = 2402;\nexport const NormalAnimationBlendMode = 2500;\nexport const AdditiveAnimationBlendMode = 2501;\nexport const TrianglesDrawMode = 0;\nexport const TriangleStripDrawMode = 1;\nexport const TriangleFanDrawMode = 2;\nexport const LinearEncoding = 3000;\nexport const sRGBEncoding = 3001;\nexport const BasicDepthPacking = 3200;\nexport const RGBADepthPacking = 3201;\nexport const TangentSpaceNormalMap = 0;\nexport const ObjectSpaceNormalMap = 1;\n\n// Color space string identifiers, matching CSS Color Module Level 4 and WebGPU names where available.\nexport const NoColorSpace = '';\nexport const SRGBColorSpace = 'srgb';\nexport const LinearSRGBColorSpace = 'srgb-linear';\n\nexport const ZeroStencilOp = 0;\nexport const KeepStencilOp = 7680;\nexport const ReplaceStencilOp = 7681;\nexport const IncrementStencilOp = 7682;\nexport const DecrementStencilOp = 7683;\nexport const IncrementWrapStencilOp = 34055;\nexport const DecrementWrapStencilOp = 34056;\nexport const InvertStencilOp = 5386;\n\nexport const NeverStencilFunc = 512;\nexport const LessStencilFunc = 513;\nexport const EqualStencilFunc = 514;\nexport const LessEqualStencilFunc = 515;\nexport const GreaterStencilFunc = 516;\nexport const NotEqualStencilFunc = 517;\nexport const GreaterEqualStencilFunc = 518;\nexport const AlwaysStencilFunc = 519;\n\nexport const StaticDrawUsage = 35044;\nexport const DynamicDrawUsage = 35048;\nexport const StreamDrawUsage = 35040;\nexport const StaticReadUsage = 35045;\nexport const DynamicReadUsage = 35049;\nexport const StreamReadUsage = 35041;\nexport const StaticCopyUsage = 35046;\nexport const DynamicCopyUsage = 35050;\nexport const StreamCopyUsage = 35042;\n\nexport const GLSL1 = '100';\nexport const GLSL3 = '300 es';\n\nexport const _SRGBAFormat = 1035; // fallback for WebGL 1\n","import TemplateContents from './TemplateContents';\n\nimport Header from './Header';\nimport Footer from './Footer';\nimport Loading from './Loading';\nimport NextView from './NextView';\nimport Transition from './Transition';\nimport Top from './Top';\nimport Services from './Services';\nimport ReferenceDesign from './ReferenceDesign';\nimport Contact from './Contact';\nimport ProductBrochure from './ProductBrochure';\nimport CookiePolicy from './CookiePolicy';\n\nimport TopHero from './TopHero';\n\nexport default class extends TemplateContents {\n constructor(param) {\n super(param);\n\n this.pack.common = this;\n }\n\n init() {\n super.init();\n\n // this.checkLang();\n\n this.header = this.pack.header = new Header(this.pack);\n this.footer = this.pack.footer = new Footer(this.pack);\n\n this.hero = this.pack.hero = new TopHero(this.pack);\n this.nextView = this.pack.nextView = new NextView(this.pack);\n\n this.loadContentful();\n // this.checkCookie();\n }\n\n checkLang() {\n //bot判別 botだったら以降の処理はスキップ\n let userAgent = window.navigator.userAgent.toLowerCase();\n if (userAgent.indexOf('bot') > -1) return;\n\n let pathname = location.pathname;\n let lang;\n lang = localStorage.getItem('lang');\n\n let href;\n if (this.pack.LANG === 'en') href = location.pathname;\n else href = (location.origin + location.pathname).split('/ja')[1];\n if (href === '') href = '/';\n\n if (lang === null) {\n //初訪問ユーザーの場合、ブラウザの言語判別をして飛ばす\n let language =\n (window.navigator.languages && window.navigator.languages[0]) ||\n window.navigator.language ||\n window.navigator.userLanguage ||\n window.navigator.browserLanguage;\n\n if (\n language === 'ja' ||\n language === 'ja-JP' ||\n language === 'ja-jp'\n ) {\n this.pack.setLocalStorage('jp');\n if (pathname !== '/ja' + href) location.href = '/ja' + href;\n } else {\n this.pack.setLocalStorage('en');\n if (pathname !== href) location.href = href;\n }\n } else {\n //LocalStorageに設定されている言語に飛ばす\n if (lang === 'jp') {\n if (pathname !== '/ja' + href) location.href = '/ja' + href;\n } else {\n if (pathname !== href) location.href = href;\n }\n }\n }\n\n addScrollTarget(target) {\n this.scrollTarget = target;\n }\n\n removeScrollTarget() {\n this.scrollTarget = undefined;\n }\n\n addEnterframeTarget(target) {\n this.enterframeTarget = target;\n }\n\n removeEnterframeTarget() {\n this.enterframeTarget = undefined;\n }\n\n addEvery90framesTarget(target) {\n this.every90framesTarget = target;\n }\n\n removeEvery90framesTarget() {\n this.every90framesTarget = undefined;\n }\n\n setVars() {\n super.setVars();\n this.enterframeID;\n this.enterframeIgnoreCnt = 0;\n\n this.pageYOffset = 0;\n this.pastPageYOffset = 0;\n this.scrollYOffset = 0;\n this.pastScrollYOffset = 0;\n\n //FPSを調整する変数 ここから\n //UPDATE_LOAD_COEFFはCP 負荷が爆発しないようにするための定数で、1フレームの間に使用可能な時間のうち、状態更新に割り当てられる時間の割合の最大値。この時間を超えて処理が行われると、フレームスキップが無効になって処理落ちが発生する。\n this.UPDATE_LOAD_COEFF = 0.5;\n this.FPS = 30;\n this.targetInterval = 1000 / this.FPS;\n this.prevTime = Date.now() - this.targetInterval;\n //FPSを調整する変数 ここまで\n }\n\n setDom() {\n super.setDom();\n this.scrollWrapper = document.querySelector('.scroll-wrapper');\n this.barbaContainer = document.querySelector('.barba-container');\n // this.cookieAlert = document.querySelector('#cookie');\n }\n\n initEvents() {\n super.initEvents();\n\n this.resizeEvent = navigator.userAgent.match(/(iPhone|iPod|iPad)/)\n ? 'orientationchange'\n : 'resize';\n\n //\n // this.DOMContentloadedHandler.bind(this)();\n\n this._reload = false;\n this._consentReadyCount = 0;\n if (document.querySelector('#CybotCookiebotDialog')) {\n // console.log('fix CookiebotOnDialogDisplay');\n document.body.style.opacity = 1;\n this._reload = true;\n }\n window.addEventListener('CookiebotOnDialogDisplay', () => {\n // console.log('CookiebotOnDialogDisplay');\n document.body.style.opacity = 1;\n this._reload = true;\n });\n // window.addEventListener('CookiebotOnConsentReady', () => {\n // console.log('CookiebotOnConsentReady');\n // });\n window.addEventListener(\n 'CookiebotOnLoad',\n () => {\n // console.log('CookiebotOnLoad');\n this.DOMContentloadedHandler.bind(this)();\n this.loadedHandler.bind(this)();\n },\n { once: true }\n );\n window.addEventListener('CookiebotOnAccept', () => {\n console.log('CookiebotOnAccept');\n if (this._reload || this._consentReadyCount)\n window.location.reload();\n this._consentReadyCount++;\n if (Cookiebot.consent.preferences) this.checkLang();\n });\n window.addEventListener('CookiebotOnDecline', () => {\n // console.log('CookiebotOnDecline');\n if (this._reload || this._consentReadyCount)\n window.location.reload();\n this._consentReadyCount++;\n });\n // window.addEventListener('CookiebotOnDialogInit', () => {\n // console.log('CookiebotOnDialogInit');\n // });\n // window.addEventListener('CookiebotOnTagsExecuted', () => {\n // console.log('CookiebotOnTagsExecuted');\n // });\n\n // window.addEventListener(\n // 'DOMContentLoaded',\n // this.DOMContentloadedHandler.bind(this)\n // );\n // window.addEventListener('load', this.loadedHandler.bind(this));\n\n window.addEventListener(\n this.resizeEvent,\n this.resizeHandler.bind(this),\n false\n );\n window.addEventListener('scroll', this.scrollHandler.bind(this), {\n passive: false,\n });\n\n this.resizeHandler();\n this.enterframe();\n }\n\n // checkCookie() {\n // let cookies = document.cookie; //全てのcookie取り出し\n // let cookiesArray = cookies.split(';'); // ;で分割し配列に\n // let isAgree;\n // for (let c of cookiesArray) {\n // let cArray = c.split('='); //=で分割して配列に\n // if (cArray[0].indexOf('isCookieAgree') >= 0) {\n // isAgree = true;\n // }\n // }\n\n // if (isAgree) {\n // // this.cookieAlert.classList.add(\"hide\");\n // this.cookieAlert.remove();\n // } else {\n // this.cookieAlert\n // .querySelector('.btn')\n // .addEventListener('click', (event) => {\n // document.cookie =\n // 'isCookieAgree=true;path=/;expires=31 Dec 2037 00:00:00 GMT';\n // // this.cookieAlert.classList.add(\"hide\");\n // this.cookieAlert.remove();\n // });\n // }\n // }\n\n loadContentful() {\n let urlList = this.pack.CONTENTFUL_API_PATH_LIST;\n //Docsも一緒に読み込む\n if (this.pack.LANG === 'en') urlList.push(this.pack.DOCS_EN_API_PATH);\n else urlList.push(this.pack.DOCS_JA_API_PATH);\n\n let promiseList = [];\n this.jsonBaseList = this.pack.apiJSONList = [];\n\n urlList.forEach((url, i) => {\n promiseList.push(\n fetch(url)\n .then((res) => {\n return res.json();\n })\n .then((res) => {\n this.jsonBaseList[i] = res;\n })\n );\n });\n\n Promise.all(promiseList).then(() => {\n // trace(\"Contentful API loaded\", this.jsonBaseList);\n this.loadedContentful = true;\n });\n }\n\n DOMContentloadedHandler(event) {\n this.bindLoadingReadyCompleteHandler =\n this.loadingReadyCompleteHandler.bind(this);\n this.bindLoadingCompleteHandler =\n this.loadingCompleteHandler.bind(this);\n this.loading = this.pack.loading = new Loading(this.pack);\n this.loading.addEventListener(\n 'readyComplete',\n this.bindLoadingReadyCompleteHandler\n );\n this.loading.addEventListener(\n 'complete',\n this.bindLoadingCompleteHandler\n );\n this.loading.start();\n this.transition = this.pack.transition = new Transition(this.pack);\n document.body.style.opacity = 1;\n }\n\n loadedHandler(event) {\n window.scrollTo(0, 0);\n }\n\n loadingReadyCompleteHandler(event) {\n this.loading.removeEventListener(\n 'readyComplete',\n this.bindLoadingReadyCompleteHandler\n );\n this.initContents();\n TweenMax.delayedCall(1.5, () => {\n this.header.showHeaderNav();\n });\n }\n\n loadingCompleteHandler(event) {\n this.loading.removeEventListener(\n 'complete',\n this.bindLoadingCompleteHandler\n );\n this.loading = null;\n }\n\n initContents() {\n window.scrollTo(0, 0);\n\n let namespace = this.barbaContainer.dataset.namespace;\n this.pack.current = namespace;\n\n if (namespace === 'top') {\n this.pack.top = new Top(this.pack);\n this.pack.top.start();\n } else if (namespace === 'services') {\n this.pack.services = new Services(this.pack);\n this.pack.services.start();\n } else if (namespace === 'reference_design') {\n this.pack.reference_design = new ReferenceDesign(this.pack);\n this.pack.reference_design.start();\n } else if (namespace === 'contact') {\n this.pack.contact = new Contact(this.pack);\n this.pack.contact.start();\n } else if (namespace === 'product_brochure') {\n this.pack.product_brochure = new ProductBrochure(this.pack);\n this.pack.product_brochure.start();\n } else if (namespace === 'cookie_policy') {\n this.pack.cookie_policy = new CookiePolicy(this.pack);\n this.pack.cookie_policy.start();\n }\n\n if (\n namespace === 'top' ||\n namespace === 'services' ||\n namespace === 'reference_design'\n ) {\n this.pack.nextView.add();\n }\n\n this.pack.header.setAnchors();\n this.setCurrent();\n }\n\n setCurrent() {\n this.pack.header.setCurrent();\n }\n\n start() {}\n\n startTransitionIn(callback) {\n this.transition.transitIn(callback);\n }\n\n startTransitionOut() {\n this.transition.transitOut();\n }\n\n resetPageYOffset() {\n this.pageYOffset = 0;\n this.scrollYOffset = 0;\n }\n\n scrollHandler() {\n this.pack.pageYOffset = window.pageYOffset;\n if (this.scrollTarget) this.scrollTarget.scrollHandler();\n }\n\n enterframe() {\n this.enterframeID = window.requestAnimationFrame(\n this.enterframe.bind(this)\n );\n\n if (this.enterframeTarget && this.enterframeTarget.enterframe)\n this.enterframeTarget.enterframe();\n\n let currentTime = Date.now();\n let updated = false;\n while (currentTime - this.prevTime > this.targetInterval) {\n updated = true;\n this.prevTime += this.targetInterval;\n const now = Date.now();\n const updateTime = now - currentTime;\n if (updateTime > this.targetInterval * this.UPDATE_LOAD_COEFF) {\n // overloaded\n if (this.prevTime < now - this.targetInterval) {\n // do not accumulate too much\n this.prevTime = now - this.targetInterval;\n }\n break;\n }\n }\n\n if (updated) {\n //30fpsで処理\n this.enterframeThinOut();\n if (this.enterframeTarget)\n this.enterframeTarget.enterframeThinOut();\n if (this.loading) this.loading.enterframeThinOut();\n if (this.transition) this.transition.enterframeThinOut();\n if (this.nextView && this.nextView.isAdded)\n this.nextView.enterframeThinOut();\n }\n\n if (this.enterframeIgnoreCnt % 90 === 0) {\n //間引き処理(1 execution per 90 frames)\n this.resizeHandler();\n if (this.every90framesTarget)\n this.every90framesTarget.enterEvery90Frames();\n }\n\n //前回のスクロール位置(全ての処理が終わってから代入)\n this.pastPageYOffset = this.pack.pastPageYOffset =\n this.pack.pageYOffset;\n\n this.enterframeIgnoreCnt++;\n }\n\n enterframeThinOut() {}\n\n executeResize() {\n super.executeResize();\n }\n}\n","import '@babel/polyfill';\n\nimport '../scss/common.scss';\nimport '../scss/top.scss';\nimport '../scss/subpage.scss';\nimport '../scss/services.scss';\nimport '../scss/reference_design.scss';\nimport '../scss/contact.scss';\nimport '../scss/product_brochure.scss';\nimport '../scss/cookie_policy.scss';\n\nimport Config from './Config';\nimport Common from './Common';\n\nrequire('./libs/TweenMax.min.js');\nrequire('./libs/daijima/trace.js');\nrequire('./libs/daijima/requestanimationframe.js');\n\nlet packName = 'TIER4';\nlet pack = new Config(window, packName);\n\n//CSS Modulesとして使用する場合の例\n// import * as styles from \"../scss/common.scss\";\n\nnew Common(pack);\n\nrequire('./barba-custom.js');\n"],"names":["require","obj","_global","__esModule","_babelPolyfill","console","warn","module","exports","it","TypeError","isObject","core","version","__e","aFunction","fn","that","length","undefined","a","call","b","c","apply","arguments","Object","defineProperty","get","document","is","createElement","global","ctx","hide","has","$export","type","name","source","key","own","out","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","P","IS_BIND","B","IS_WRAP","W","expProto","target","C","this","Function","virtual","R","U","exec","e","window","Math","self","__g","hasOwnProperty","dP","createDesc","object","value","f","anObject","IE8_DOM_DEFINE","toPrimitive","O","Attributes","bitmap","enumerable","configurable","writable","val","toString","valueOf","cof","msg","UNSCOPABLES","ArrayProto","Array","prototype","at","index","unicode","Constructor","forbiddenField","toObject","toAbsoluteIndex","toLength","copyWithin","start","len","to","from","end","count","min","inc","aLen","endPos","toIObject","IS_INCLUDES","$this","el","fromIndex","IObject","asc","TYPE","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","create","callbackfn","res","result","push","memo","isRight","i","isArray","SPECIES","original","constructor","speciesConstructor","invoke","arraySlice","slice","factories","construct","args","n","join","bind","partArgs","bound","concat","TAG","ARG","T","tryGet","callee","redefineAll","anInstance","forOf","$iterDefine","step","setSpecies","DESCRIPTORS","fastKey","validate","SIZE","getEntry","entry","_i","_f","k","getConstructor","wrapper","NAME","ADDER","iterable","_t","_l","clear","data","r","p","next","prev","forEach","v","def","setStrong","iterated","kind","_k","getWeak","createArrayMethod","$has","arrayFind","arrayFindIndex","id","uncaughtFrozenStore","UncaughtFrozenStore","findUncaughtFrozen","store","set","splice","ufstore","redefine","meta","fails","$iterDetect","setToStringTag","inheritIfRequired","methods","common","IS_WEAK","Base","proto","fixMethod","KEY","entries","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","iter","BUGGY_ZERO","$instance","NEED","$defineProperty","getTime","Date","$toISOString","toISOString","lz","num","NaN","isFinite","RangeError","d","y","getUTCFullYear","m","getUTCMilliseconds","s","abs","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","NUMBER","hint","split","getKeys","gOPS","pIE","getSymbols","symbols","isEnum","exp","MATCH","re","defined","wks","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","groups","replace","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","fns","nativeMethod","regexp","str","arg2","forceStringMethod","done","strfn","rxfn","String","RegExp","string","arg","ignoreCase","multiline","sticky","IS_CONCAT_SPREADABLE","flattenIntoArray","sourceLen","depth","mapper","thisArg","element","spreadable","targetIndex","sourceIndex","mapFn","isArrayIter","getIterFn","BREAK","RETURN","ITERATOR","iterator","iterFn","documentElement","setPrototypeOf","un","propertyIsEnumerable","Iterators","floor","isRegExp","ret","descriptor","IteratorPrototype","LIBRARY","$iterCreate","getPrototypeOf","BUGGY","keys","KEYS","VALUES","returnThis","DEFAULT","IS_SET","FORCED","getMethod","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","values","SAFE_CLOSING","riter","skipClosing","safe","arr","$expm1","expm1","x","sign","pow","EPSILON","EPSILON32","MAX32","MIN32","fround","$abs","$sign","Infinity","log1p","log","META","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","w","onFreeze","macrotask","Observer","MutationObserver","WebKitMutationObserver","process","Promise","isNode","head","last","notify","flush","parent","domain","exit","enter","nextTick","navigator","standalone","resolve","promise","then","toggle","node","createTextNode","observe","characterData","task","PromiseCapability","reject","$$resolve","$$reject","$assign","assign","A","Symbol","K","j","dPs","enumBugKeys","IE_PROTO","Empty","createDict","iframeDocument","iframe","style","display","src","contentWindow","open","write","lt","close","Properties","defineProperties","gOPD","getOwnPropertyDescriptor","gOPN","windowNames","getOwnPropertyNames","getWindowNames","$keys","hiddenKeys","getOwnPropertySymbols","ObjectProto","arrayIndexOf","names","isEntries","Reflect","ownKeys","$parseFloat","$trim","charAt","$parseInt","ws","hex","radix","test","newPromiseCapability","promiseCapability","SRC","$toString","TO_STRING","TPL","isFunction","classof","builtinExec","re1","re2","regexpFlags","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","NPCG_INCLUDED","lastIndex","reCopy","match","check","buggy","__proto__","tag","stat","shared","uid","SHARED","mode","copyright","D","method","toInteger","pos","l","charCodeAt","searchString","quot","createHTML","attribute","p1","toLowerCase","repeat","maxLength","fillString","left","stringLength","fillStr","intMaxLength","fillLen","stringFiller","ceil","spaces","space","ltrim","rtrim","exporter","ALIAS","FORCE","trim","defer","channel","port","html","cel","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","Dispatch","counter","queue","run","listener","event","now","port2","port1","onmessage","postMessage","addEventListener","importScripts","appendChild","removeChild","setTimeout","max","number","isNaN","$typed","$buffer","propertyDesc","toIndex","createArrayIncludes","ArrayIterators","arrayFill","arrayCopyWithin","$DP","$GOPD","Uint8Array","ARRAY_BUFFER","SHARED_BUFFER","BYTES_PER_ELEMENT","$ArrayBuffer","ArrayBuffer","$DataView","DataView","arrayForEach","arrayFilter","arraySome","arrayEvery","arrayIncludes","arrayValues","arrayKeys","arrayEntries","arrayLastIndexOf","lastIndexOf","arrayReduce","reduce","arrayReduceRight","reduceRight","arrayJoin","arraySort","sort","arrayToString","arrayToLocaleString","toLocaleString","TYPED_CONSTRUCTOR","DEF_CONSTRUCTOR","ALL_CONSTRUCTORS","CONSTR","TYPED_ARRAY","TYPED","VIEW","WRONG_LENGTH","$map","allocate","LITTLE_ENDIAN","Uint16Array","buffer","FORCED_SET","toOffset","BYTES","offset","speciesFromList","list","fromList","addGetter","internal","_d","$from","mapfn","mapping","$of","TO_LOCALE_BUG","$toLocaleString","every","fill","filter","find","predicate","findIndex","indexOf","searchElement","includes","separator","map","reverse","middle","some","comparefn","subarray","begin","$begin","byteOffset","$slice","$set","arrayLike","$iterators","isTAIndex","$getDesc","$setDesc","desc","$TypedArrayPrototype$","CLAMPED","GETTER","SETTER","TypedArray","TAC","ABV","TypedArrayPrototype","addElement","o","getter","round","setter","$offset","$length","byteLength","klass","$len","$nativeIterator","CORRECT_ITER_NAME","$iterator","of","DATA_VIEW","WRONG_INDEX","BaseBuffer","LN2","BUFFER","BYTE_LENGTH","BYTE_OFFSET","$BUFFER","$LENGTH","$OFFSET","packIEEE754","mLen","nBytes","eLen","eMax","eBias","rt","unpackIEEE754","nBits","unpackI32","bytes","packI8","packI16","packI32","packF64","packF32","view","isLittleEndian","intIndex","_b","pack","conversion","ArrayBufferProto","$setInt8","setInt8","getInt8","setUint8","bufferLength","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","Typed","TypedArrayConstructors","px","random","userAgent","wksExt","$Symbol","USE_SYMBOL","$every","$filter","$find","forced","$forEach","STRICT","createProperty","$indexOf","NEGATIVE_ZERO","addToUnscopables","Arguments","$reduce","upTo","size","cloned","$some","$sort","toJSON","pv","TO_PRIMITIVE","DateProto","INVALID_DATE","HAS_INSTANCE","FunctionProto","FProto","nameRE","strong","MAP","sqrt","$acosh","acosh","Number","MAX_VALUE","$asinh","asinh","$atanh","atanh","cbrt","clz32","LOG2E","cosh","hypot","value1","value2","div","sum","larg","$imul","imul","UINT16","xn","yn","xl","yl","log10","LOG10E","log2","sinh","E","tanh","trunc","$Number","BROKEN_COF","TRIM","toNumber","argument","third","maxCode","first","code","digits","parseInt","_isFinite","isInteger","isSafeInteger","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","parseFloat","aNumberValue","$toFixed","toFixed","ERROR","ZERO","multiply","c2","divide","numToString","t","acc","fractionDigits","z","x2","$fails","$toPrecision","toPrecision","precision","$freeze","$getOwnPropertyDescriptor","$getPrototypeOf","$isExtensible","$isFrozen","$isSealed","$preventExtensions","$seal","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","microtask","newPromiseCapabilityModule","perform","promiseResolve","PROMISE","versions","v8","$Promise","empty","USE_NATIVE","FakePromise","PromiseRejectionEvent","isThenable","isReject","_n","chain","_c","_v","ok","_s","reaction","exited","handler","fail","_h","onHandleUnhandled","onUnhandled","unhandled","isUnhandled","emit","onunhandledrejection","reason","error","_a","onrejectionhandled","$reject","_w","$resolve","executor","err","onFulfilled","onRejected","capability","all","remaining","$index","alreadyCalled","race","rApply","fApply","thisArgument","argumentsList","L","rConstruct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","propertyKey","attributes","deleteProperty","Enumerate","enumerate","getProto","receiver","setProto","V","existingDescriptor","ownDesc","$flags","$RegExp","CORRECT_NEW","tiRE","piRE","fiU","proxy","flags","advanceStringIndex","regExpExec","$match","maybeCallNative","rx","fullUnicode","matchStr","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","REPLACE","$replace","searchValue","replaceValue","functionalReplace","results","accumulatedResult","nextSourcePosition","matched","position","captures","namedCaptures","replacerArgs","replacement","getSubstitution","tailPos","ch","capture","sameValue","SEARCH","$search","previousLastIndex","callRegExpExec","$min","$push","MAX_UINT32","SUPPORTS_Y","SPLIT","$split","internalSplit","limit","lastLength","output","lastLastIndex","splitLimit","separatorCopy","splitter","unicodeMatching","lim","q","define","add","$at","codePointAt","context","ENDS_WITH","$endsWith","endsWith","endPosition","search","color","fromCharCode","$fromCodePoint","fromCodePoint","INCLUDES","point","url","raw","callSite","tpl","STARTS_WITH","$startsWith","startsWith","wksDefine","enumKeys","_create","gOPNExt","$GOPS","$JSON","JSON","_stringify","stringify","HIDDEN","SymbolRegistry","AllSymbols","OPSymbols","QObject","findChild","setSymbolDesc","protoDesc","wrap","sym","isSymbol","$defineProperties","$propertyIsEnumerable","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","es6Symbols","wellKnownSymbols","keyFor","useSetter","useSimple","FAILS_ON_PRIMITIVES","replacer","$replacer","$isView","isView","fin","viewS","viewT","init","InternalMap","each","weak","NATIVE_WEAK_MAP","IS_IE11","ActiveXObject","WEAK_MAP","$WeakMap","WEAK_SET","arraySpeciesCreate","flatMap","$includes","getOwnPropertyDescriptors","getDesc","$values","onFinally","$pad","WEBKIT_BUG","padEnd","padStart","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","Collection","$task","MSIE","time","boundArgs","setInterval","cssWithMappingToString","item","content","needLayer","modules","media","dedupe","supports","layer","alreadyImportedModules","cssMapping","btoa","base64","unescape","encodeURIComponent","sourceMapping","sourceURLs","sources","sourceRoot","factory","__webpack_require__","DownloadException","_inherits","message","request","_classCallCheck","_this","Error","downloadException","_regeneratorRuntime","NativeIteratorPrototype","state","tryLoc","record","__await","reset","stop","dispatchException","abrupt","finallyEntry","complete","finish","catch","resetTryEntry","delegateYield","resultName","nextLoc","asyncGeneratorStep","_next","DEFAULT_PARAMS","timeout","headers","forceDesktopMode","autoStart","withCredentials","nameCallback","contentType","body","nativeFallbackOnError","contentTypeDetermination","JsFileDownloader","customParams","params","link","createLink","downloadedFile","abortController","downloadFile","_createClass","abort","initDownload","abortListener","signal","removeEventListener","fallback","_this2","href","clickLink","isMobile","createRequest","AbortController","_ref","unsetAbortListner","setAbortListner","onload","status","_context","startDownload","_callee","ontimeout","onerror","send","XMLHttpRequest","setRequestHeader","header","responseType","onloadstart","includeCredentials","filename","getResponseHeader","contentParts","extractedName","pop","file","signatures","fileSignatures","customFileSignatures","reader","FileReader","first4BytesOfFile","onloadend","evt","readyState","DONE","uint","byte","toUpperCase","readAsArrayBuffer","response","_this3","defaultContentType","headerContentType","getContentTypeFromResponseHeader","_context2","getContentTypeFromFileSignature","Blob","signatureContentType","_headerContentType","_signatureContentType","_signatureContentType2","_ref4","_callee2","MouseEvent","createEvent","initMouseEvent","dispatchEvent","fileName","_context3","getContentType","options","File","lastModifiedDate","_callee3","getFileName","_context4","getFile","msSaveOrOpenBlob","objectUrl","URL","createObjectURL","download","webkitURL","revokeObjectURL","_callee4","runtime","Op","hasOwn","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","unwrapped","previousPromise","callInvokeWithMethodAndArg","info","pushTryEntry","locs","catchLoc","finallyLoc","afterLoc","tryEntries","completion","iteratorMethod","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","async","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","thrown","regeneratorRuntime","accidentalStrictMode","globalThis","param","sw","sh","bindResizeHandler","resizeHandler","hasTouch","resizeEvent","setVars","setDom","initEvents","onlyPC","onlySP","isVW","hasMarginVWRightPC","marginVWRightPC","marginRightPC","hasMarginVWRightSP","marginVWRightSP","marginRightSP","hasMinXAdjustVWPC","minXAdjustVWPC","minXAdjustPC","hasMinXAdjustVWSP","minXAdjustVWSP","minXAdjustSP","carousel","bindMouseOverHandler","bindMouseOutHandler","carouselWrap","bindMouseMoveHandler","swipeStartEvent","bindStartSwipeHandler","swipeStopEvent","bindStopSwipeHandler","anchors","bindClickAnchorHandler","bindClickNextHandler","bindClickPrevHandler","fader","bindStartSwipeFaderHandler","bindStopSwipeFaderHandler","bindMouseOverFaderHandler","bindMouseOutFaderHandler","swipeIntervalCnt","swiped","swipeInterval","swipeStartAbsoluteX","swipeStartPoint","pastSwipeX","swipeX","targetSwipeX","pastTargetSwipeX","isSwipingFader","swipeStartAbsoluteFaderX","swipeStartFaderPoint","pastSwipeFaderX","targetSwipeFaderX","enabled","faderAdjustWPC","faderAdjustWSP","querySelector","carouselChilds","querySelectorAll","carouselChildsImgs","barBase","bar","current","swipingEvent","mouseOverHandler","mouseOutHandler","mouseMoveHandler","startSwipeHandler","bindSwipingHandler","swipingHandler","stopSwipeHandler","clickAnchorHandler","clickNextHandler","clickPrevHandler","startSwipeFaderHandler","bindSwipingFaderHandler","swipingFaderHandler","stopSwipeFaderHandler","mouseOverFaderHandler","mouseOutFaderHandler","classList","remove","touches","changedTouches","clientX","preventDefault","faderAdjustW","BP","barBaseWidth","clientWidth","transform","updateContents","ratio","uiMoveW","getCarouselWidth","TweenMax","killTweensOf","onUpdate","ease","Quart","easeOut","updateImages","updateCurrent","scale","single","innerText","addZero","minX","singleW","stopPropagation","updateUI","clearInterval","difPast","bezier","TemplateContents","confirmBtn","bindClickConfirmHandler","submitBtn","bindClickSubmitHandler","backBtn","bindClickBackHandler","inputRowfields","bindFocusHandler","bindBlurHandler","copyToClipboards","bincClickCopyToClipboardHandlerList","contactsContainer","h1","section1","section2","inputList","inputRowTits","confirmList","confirmListUserData","clickConfirmHandler","clickSubmitHandler","clickBackHandler","focusHandler","blurHandler","handleEvent","sc","clickCopyToClipboardHandlerList","clipboard","writeText","addresses","fname","lname","company","role","email","requirements","privacy","checked","fnameResult","checkName","lnameResult","emailResult","checkEmail","messageResult","checkMessage","privacyResult","liName1","liName2","liEmail","liMessage","liPrivacy","liFName","LANG","liLName","anchorScroll","formData","FormData","fromEntries","privacy_policy","fetch","CONTACT_API_PATH","json","setValues","delayedCall","items","apiJSONList","fields","displayOrder","getHTML","innerHTML","setEvents","mailAddress","title","getTitle","companyResult","parentElement","liCompany","addEnterframeTarget","removeEnterframeTarget","protocol","location","section1MediaAPIPathList","section2MediaAPIPathList","section3MediaAPIPathList","hero","heroScroll","section1SubTit","section1Tit","section1TitJa","section1ChunkContainer","section1Chunks","section1Imgs","section2SubTit","section2Tit","section2TitJa","section2Txt","section2Txts","section2Cont","section2Chunks","section2StickyPcImgContainer","section3","section3SubTit","section3Tit","section3TitJa","section3ChunkContainer","section3Txt","section3Cont","section3Chunks","section3StickyPcImgContainer","setSpansDelay","Carousel","carousel2","sectionH3List","setOnlySP","setTarget","setMarginRightSP","getSPVW","setAdjustMinXSP","setSection1Head","loadSection1Data","setSection2Head","setSection2","setSection3Head","loadSection3Data","subTitArray","getData","subTitSrc","getSubTitSrc","titEn","titJa","titArray","titSrc","getTitSrc","articles","compositionOfReferenceDesignArtilecs","urlList","promiseList","details","sysId","sys","path","getContentfulAPIPathWithSysID","setSection1","getSection1Chunk","loadSection1MediaPathes","middleHeadline","description","getContentfulAPIImgAccessPath","image","mediaPathList","setSection1Medias","pathID","loadSection2MediaPathes","setCarousel","setSection2Medias","stickyPCSrc","img","section2StickyPcImages","eachReferenceDesignArticles","setSection3","getSection3Chunk","loadSection3MediaPathes","setCarousel2","linkLabel","btn","linkLabelSrc","substr","setSection3Medias","section3StickyPcImages","h","subTit","tit","getBoundingClientRect","top","chunk","checkSection1","updateSection","cont","imgs","contY","contPer","checkPointY","clientHeight","per","height","section2StickyPcImgContainerY","shh","section3StickyPcImgContainerY","Platform","addScrollTarget","removeScrollTarget","sections","localNav","movie","movieChild","setLocalNav","setSections","setMedias","sectionChildLen","mediaAPIPathList","focusImage","contentsData","getLocalNav","localMenuList","clickLocalMenuHandler","getSection","sectionList","sectionH2List","section1ClassName","patern","middleHeadlineSrc","japaneseTit","addTxtClass","loadMediaPathes","setSectionMedias","section","img1","img2","checkMovie","borderRadius","width","pageYOffset","invRatio","addEvery90framesTarget","uiList","ui","btns","clickBtnHandler","mouseOverBtnHandler","mouseOutBtnHandler","removeEvery90framesTarget","currentSection","contentsList","currentList","addedSectionChildCnt","sectionsForLocalNav","childSections","btnParents","numerator","contents","text","id2","firstMedia","firstText","slide","setCurrent","targetMedia","targetText","marginLeft","easeInOut","changeCurrentSection","contains","mediaList","dom","getChildSection","domList","container","getMedias","childSection","setAttribute","mediaIDList","detailLen","detailLenString","detailList","relatedID","mediaSysID","className","barSrc","contentsSrc","detail","id1","mediaContainer","setContentsAndEvents","checkCurrentSection","checkH2Position","checkH3Position","executeResize","_events","eventName","callback","hasEventListener","events","opt_this","opt_arg","copyEvents","_copyArray","array","newArray","skipInitEvents","enterframeID","cnt","cancelAnimationFrame","innerWidth","innerHeight","swh","EventDispatcher","section5","setMarginRightPC","setAdjustMinXPC","getPCVW","lockScroll","enabledScroll","mousewheelEvent","bindWheelHandler","bindTouchStartHandler","bindTouchMoveHandler","bindTouchEndHandler","bindOpeningEndedHeroHandler","bindChangedHeroHandler","heroSkip","bindClickHeroSkipHandler","localNavLeftBt","bindClickLocalNavLeftBtHandler","localNavRightBt","bindClickLocalNavRightBtHandler","showHeader","removeHero","heroCanvasContainer","destruct","loadedContentful","currentHero","pastHero","HERO_SCENE_LEN","touchStartPoint","ourTeamList","ourTeamImgAccessAPIPathList","ourPartnerList","ourPartnerImgAccessAPIPathList","isWaitingBackHeroScene8","mouseX","mouseY","onHeroContents6UL","onHeroContents7UL","heroContents6Current","heroContents7Current","prevWheelTime","prevWheelDelta","heroContents","heroCreateAccount","heroCont3H3","heroCont4H3","heroCont5H3","heroCont6H3","heroCont7H3","heroCont8H3","heroCont3Txt","heroCont4Txt","heroCont5Txt","heroCont6Txt","heroCont6UL","heroCont7UL","heroCont8Txt","heroCont8Chunk","heroCont3Btn","heroCont4Btn","heroCont5Btn","heroCont6Btn","heroCont7Btn","heroCont8Btn","heroContents6UL","heroContents7UL","localNavLabels","localNavNumerator","releaseNotesContainer","ourTeamContainer","ourPartnerContainer","wheelHandler","touchEndHandler","touchMoveHandler","touchStartHandler","openingEndedHeroHandler","changedHeroHandler","clickHeroSkipHandler","clickLocalNavLeftBtHandler","clickLocalNavRightBtHandler","passive","changeScene","goBackToHero","clientY","skipScene","isMenuOpen","delta","deltaY","wheelDelta","currentTime","currentDelta","isCancel","checkSceneChange","scrollTo","isPrev","changeSubScene","scrollY","setScene","changeLocalNavi","changeNumerator","contents_num","ul","addHero","setOurPartner","loadOurPartnerImages","setDocuments","getDescription","imgAccessAPIPath","companyName","logoImage","getOurTeamHTML","getOurPartnerHTML","ourTeamImgPathList","setOurTeamImgs","ourPartnerImgPathList","setOurPartnerImgs","imgURL","hideHeader","checkSections","enterframeThinOut","BarbaCustom","initTransition","Barba","Pjax","getTransition","transition","Prefetch","cancelSameLinks","TIER4","barba","before","barbaContainer","scrollWrapper","Dispatcher","on","newPageReadyHandler","linkClickedHandler","initStateChangeHandler","transitionCompletedHandler","currentStatus","oldStatus","newPageRawHTML","namespace","HistoryManager","history","gtag","GA_MEASUREMENT_ID","page_path","pathname","urrentStatus","services","reference_design","contact","product_brochure","nextView","hash","anchor","rect","scrollTop","destructAfterContentsOut","BaseTransition","extend","newContainerLoaded","fadeOutCompleted","isTransition","pastNameSpace","startTransitionIn","closeMenuExternal","checkReady","endContentsOutHandler","contentsOut","newContainerLoading","initContainer","startSerial","newContainer","contentsIn","visibility","Top","Services","ReferenceDesign","Contact","ProductBrochure","resetScroll","addInlineJs","startTransitionOut","resetPageYOffset","js","addJs","links","cbk","currentTarget","_gsScope","_gsQueue","g","_gsDefine","cycle","_cycle","_yoyo","vars","yoyo","yoyoEase","_repeat","_repeatDelay","repeatDelay","_uncache","render","_internals","isSelector","kill","_gc","killDelayedCallsTo","getTweensOf","lagSmoothing","ticker","invalidate","_yoyoEase","updateTo","immediateRender","_startTime","_timeline","_time","_enabled","insert","_delay","_initted","_notifyPluginsOfEnabled","_firstPT","_onPluginEvent","_duration","_totalTime","_init","_dirty","totalDuration","_totalDuration","u","_rawPrevTime","_ease","_calcEnd","getRatio","_reversed","autoRemoveChildren","lazy","_active","Ease","easeParams","defaultEase","_easeType","_easePower","lazyTweens","_lazy","_paused","_startAt","onStart","_callback","_onUpdate","onRepeat","runBackwards","fromTo","startAt","staggerTo","allTo","onComplete","onCompleteScope","callbackScope","selector","duration","delay","staggerFrom","allFrom","staggerFromTo","allFromTo","onCompleteParams","onReverseComplete","onReverseCompleteParams","useFrames","overwrite","isTweening","_first","getAllTweens","_rootTimeline","_rootFramesTimeline","killAll","totalTime","killChildTweensOf","tweenLookup","parentNode","tweens","paused","pauseAll","resumeAll","globalTimeScale","_timeScale","frame","progress","totalProgress","_labels","smoothChildTiming","_sortChildren","_swapSelfInParams","align","stagger","lazyRender","globals","pauseCallback","_forcingPlayhead","_hasPause","_parseTimeOrLabel","exportRoot","_remove","addLabel","rawTime","_pauseTime","removeLabel","_last","append","insertMultiple","appendMultiple","addPause","getLabelTime","timeline","recent","endTime","seek","gotoAndPlay","play","gotoAndStop","pause","_hasPausedChild","_prev","getChildren","_contains","_recent","shiftChildren","_kill","timeScale","_calculatingDuration","usesFrames","addCallback","removeCallback","removePause","tweenTo","isFromTo","onStartScope","onStartParams","tweenFromTo","_locked","getActive","isActive","getLabelAfter","getLabelsArray","getLabelBefore","currentLabel","PI","da","ca","ba","unshift","lengths","segments","plugin","propName","priority","API","_target","_func","_mod","_props","_timeRes","timeResolution","autoRotate","orientToBezier","_autoRotate","_overwriteProps","_beziers","curviness","correlate","_segCount","_length","_lengths","_segments","_l1","_li","_s1","_si","_l2","_curSeg","_s2","_prec","_initialRotations","_startRatio","atan2","bezierThrough","cubicToQuadratic","_autoCSS","quadraticToCubic","_cssRegister","CSSPlugin","_parseToProxy","_setPluginRatio","CSSPropTween","_registerComplexSpecialProp","parser","pt","setRatio","_transform","_enableTransforms","_gsTransform","rotation","_onInitTween","_tween","_super","defaultTransformPerspective","defaultSkewType","defaultSmoothOrigin","suffixMap","right","bottom","fontSize","padding","margin","perspective","lineHeight","H","I","J","M","N","createElementNS","Q","_specialProps","$1","cssText","opacity","currentStyle","X","Y","Z","$","defaultView","getComputedStyle","_","getStyle","getPropertyValue","aa","convertToPixels","_gsCache","cacheWidths","calculateOffset","Da","Ca","Ra","skewX","scaleX","scaleY","Fa","rotationX","rotationY","scaleZ","filters","sa","difs","firstMPT","ea","fa","ga","nodeName","getCTM","Oa","getBBox","offsetWidth","offsetHeight","ha","oxp","oyp","oxr","oyr","ox","oy","ia","ja","ka","la","aqua","lime","silver","black","maroon","teal","blue","navy","white","fuchsia","olive","yellow","orange","gray","purple","green","red","pink","cyan","transparent","ma","na","parseColor","oa","pa","colorStringFilter","defaultStringFilter","qa","ra","parse","mod","xs0","xs1","ta","rxp","pr","ua","va","parseComplex","appendXtra","xfirst","wa","xa","prefix","format","formatter","defaultValue","collapsible","multi","clrs","keyword","dflt","ya","za","_registerPluginProp","com","greensock","plugins","registerSpecialProp","useSVGTransformAttr","Aa","Ba","Ea","Ga","Transform","force3D","defaultForce3D","Ha","SVGElement","Ia","setAttributeNS","Ja","Ka","chrome","La","Qa","xOrigin","yOrigin","hasAttribute","getAttribute","Pa","xOffset","yOffset","Ma","ownerSVGElement","nextSibling","_originalGetBBox","insertBefore","Na","Va","svg","baseVal","consolidate","matrix","getTransform","zOrigin","cos","sin","skewType","removeAttribute","Sa","xPercent","yPercent","ieOffsetX","ieOffsetY","Ta","set3DTransformRatio","setTransformRatio","skewY","tween","tan","_lastParsedTransform","parseTransform","rotationZ","transformOrigin","svgOrigin","smoothOrigin","transformPerspective","directionalRotation","shortRotation","shortRotationX","shortRotationY","_transformType","backgroundPositionX","backgroundPositionY","clipTop","clipRight","clipBottom","clipLeft","Ua","xn1","zoom","removeProperty","Wa","_gsClassPT","_classNamePT","Xa","nodeType","_vars","autoRound","zIndex","_addLazySet","WebkitBackfaceVisibility","_linkCSSP","_propLookup","_addTween","strictUnits","xs2","xn2","xs3","xn3","xs4","xn4","xs5","Ya","autoAlpha","alpha","Za","childNodes","cascadeTo","reservedProps","_targets","activate","blob","_onInitAllProps","roundProps","pg","_add","finals","useRadians","GreenSockGlobals","_class","register","easeIn","gap","_p1","_p2","config","_p","_p3","taper","points","randomize","clamp","template","strength","asin","SlowMo","gsClass","func","_type","_power","_params","easing","linear","Linear","swing","Quad","_listeners","_eventTarget","wake","up","requestAnimationFrame","tick","sleep","clearTimeout","fps","useRAF","visibilityState","Ticker","reversed","unref","resume","restart","eventCallback","startTime","jquery","_overwrite","defaultOverwrite","_siblings","_overwrittenProps","autoSleep","jQuery","getElementById","fp","_applyPT","blobDif","_plugins","onUpdateParams","onUpdateScope","onReverseCompleteScope","onRepeatParams","onRepeatScope","autoCSS","onOverwrite","stringFilter","none","auto","concurrent","allOnStart","preexisting","_updateRoot","_gsTweenID","_initProps","css","_priority","_onDisable","_onEnable","_tempKill","_propName","_roundProps","overwriteProps","initAll","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","mozCancelAnimationFrame","trace","___CSS_LOADER_EXPORT___","stylesInDOM","getIndexByIdentifier","identifier","modulesToDom","idCountMap","identifiers","base","indexByIdentifier","sourceMap","references","updater","addElementStyle","byIndex","api","domAPI","update","newObj","lastIdentifiers","newList","newLastIdentifiers","_index","styleTarget","HTMLIFrameElement","contentDocument","getTarget","setAttributes","styleElement","nonce","insertStyleElement","styleTagTransform","removeStyleElement","styleSheet","firstChild","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","definition","prop","nmd","paths","children","nc","pattern","pattern2","appVersion","isTablet","isSmartPhone","isAndroid","isiPad","isiPhone","isiOS","isWin","platform","isIE","isIE11","isEdge","isSafari","isiOSChrome","isChrome","isFirefox","isOpera","isIEVersion","targetPackageName","pastPageYOffset","CONTENTFUL_API_SPACES","CONTENTFUL_API_ACCESS_TOKEN","CONTENTFUL_API_BRANCH","CONTENTFUL_API_PATH_LIST","DOCS_JA_API_PATH","DOCS_EN_API_PATH","getContentfulAPICareerPath","lang","setLocalStorage","localStorage","setItem","getName","nameEn","nameJa","nameCn","getLocation","locationEn","locationJa","locationCn","getPosition","postionEn","postionJa","postionCn","titleEn","titleJa","titleCn","getBody","bodyEn","bodyJa","bodyCn","descriptionEn","descriptionJa","changeLang","getFormatDate","date","dateArray","release_notes","getDocumentsHTML","slug","published_at","product_name","spans","transitionDelay","addComma","hex2RGB","hex2NormalRGB","d2r","r2d","checkBottom","lockHTML","unlockHTML","targetY","dr","cb","commonParallax","defY","addCode","moveY","difY","dataset","speed","baseGrillRight","baseHeaderNavRight","baseHeaderLangNavRight","grill","menu","menuBG","h2","headerNav","headerNavList","menuMainNav","menuMainNavTxt","menuMainNavSubContainer","menuMainNavSubTxt","menuLangNav","menuLangNavs","menuNewsletter","menuSubNavSocials","menuSubNavOthers","menuCopyright","host","closeMenu","clickGrillHandler","spanSrc","anchorName","setServicesAnchors","getAnchorSrc","openMenu","setProperty","scrollWidth","grillRight","headerNavRight","headerLangNavRight","currentID","currentID2","REVISION","AddEquation","CubeReflectionMapping","CubeRefractionMapping","CubeUVReflectionMapping","RepeatWrapping","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestFilter","NearestMipmapNearestFilter","NearestMipmapLinearFilter","LinearFilter","LinearMipmapLinearFilter","UnsignedByteType","UnsignedShortType","UnsignedIntType","FloatType","HalfFloatType","UnsignedInt248Type","RGBAFormat","DepthFormat","DepthStencilFormat","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_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","InterpolateDiscrete","InterpolateLinear","InterpolateSmooth","ZeroCurvatureEnding","ZeroSlopeEnding","WrapAroundEnding","NormalAnimationBlendMode","AdditiveAnimationBlendMode","LinearEncoding","sRGBEncoding","SRGBColorSpace","LinearSRGBColorSpace","KeepStencilOp","StaticDrawUsage","DynamicDrawUsage","GLSL3","_SRGBAFormat","listeners","listenerArray","_lut","_seed","DEG2RAD","RAD2DEG","generateUUID","d0","d1","d2","d3","euclideanModulo","lerp","isPowerOfTwo","ceilPowerOfTwo","floorPowerOfTwo","MathUtils","freeze","mapLinear","a1","a2","b1","b2","inverseLerp","damp","lambda","dt","pingpong","smoothstep","smootherstep","randInt","low","high","randFloat","randFloatSpread","range","seededRandom","degToRad","degrees","radToDeg","radians","setQuaternionFromProperEuler","order","s2","c13","s13","c1_3","s1_3","c3_1","s3_1","normalize","Float32Array","Int16Array","Int8Array","denormalize","Vector2","scalar","addVectors","subVectors","multiplyScalar","elements","minVal","maxVal","divideScalar","distanceToSquared","dx","dy","v1","v2","getX","getY","center","angle","isVector2","Matrix3","n11","n12","n13","n21","n22","n23","n31","n32","n33","te","me","xAxis","yAxis","zAxis","setFromMatrix3Column","multiplyMatrices","ae","be","a11","a12","a13","a21","a22","a23","a31","a32","a33","b11","b12","b13","b21","b22","b23","b31","b32","b33","t11","t12","t13","det","detInv","tmp","matrix4","setFromMatrix4","invert","transpose","tx","ty","sx","sy","cx","cy","theta","fromArray","arrayNeedsUint32","SRGBToLinear","LinearToSRGB","isMatrix3","Uint8ClampedArray","Int32Array","Uint32Array","Float64Array","FN","ColorManagement","legacyMode","workingColorSpace","colorSpace","convert","sourceColorSpace","targetColorSpace","fromWorkingColorSpace","toWorkingColorSpace","_colorKeywords","_rgb","_hslA","_hslB","hue2rgb","toComponents","_canvas","Color","setRGB","isColor","copy","setHex","setStyle","handleAlpha","components","setHSL","setColorName","copySRGBToLinear","copyLinearToSRGB","getHex","hue","saturation","lightness","getHSL","color1","color2","getZ","normalized","NAMES","ImageUtils","HTMLCanvasElement","canvas","getContext","ImageData","putImageData","drawImage","toDataURL","HTMLImageElement","ImageBitmap","imageData","getImageData","Source","uuid","isRootObject","images","isDataTexture","serializeImage","getDataURL","isSource","textureId","Texture","DEFAULT_IMAGE","DEFAULT_MAPPING","wrapS","wrapT","magFilter","minFilter","anisotropy","encoding","mipmaps","internalFormat","matrixAutoUpdate","generateMipmaps","premultiplyAlpha","flipY","unpackAlignment","userData","isRenderTargetTexture","needsPMREMUpdate","setUvTransform","needsUpdate","textures","metadata","uv","applyMatrix3","isTexture","Vector4","acos","epsilon","epsilon2","m11","m12","m13","m21","m22","m23","m31","m32","m33","xx","yy","zz","xy","xz","yz","getW","isVector4","WebGLRenderTarget","scissor","scissorTest","viewport","texture","depthBuffer","stencilBuffer","depthTexture","samples","dispose","clone","isWebGLRenderTarget","DataArrayTexture","wrapR","isDataArrayTexture","WebGLArrayRenderTarget","isWebGLArrayRenderTarget","Data3DTexture","isData3DTexture","WebGL3DRenderTarget","isWebGL3DRenderTarget","WebGLMultipleRenderTargets","il","isWebGLMultipleRenderTargets","Quaternion","_x","_y","_z","_onChangeCallback","quaternion","euler","isEuler","_order","c1","c3","s1","s3","axis","halfAngle","vFrom","vTo","dot","angleTo","slerp","conjugate","multiplyQuaternions","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","qb","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","u1","sqrt1u1","sqrtu1","u2","u3","qm","slerpQuaternions","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","x0","y0","z0","w0","x1","y1","z1","w1","dir","sqrSin","tDir","isQuaternion","Vector3","multiplyVectors","applyQuaternion","_quaternion$4","setFromEuler","setFromAxisAngle","qx","qy","qz","qw","ix","iy","iz","iw","camera","applyMatrix4","matrixWorldInverse","projectionMatrix","projectionMatrixInverse","matrixWorld","crossVectors","ax","ay","az","bx","by","bz","denominator","lengthSq","planeNormal","_vector$c","projectOnVector","sub","normal","dz","setFromSphericalCoords","radius","phi","sinPhiRadius","setFromCylindricalCoords","setFromMatrixColumn","sz","isVector3","Box3","minY","minZ","maxX","maxY","maxZ","makeEmpty","expandByPoint","halfSize","_vector$b","precise","expandByObject","box","isEmpty","vector","addScalar","updateWorldMatrix","geometry","fromBufferAttribute","boundingBox","computeBoundingBox","_box$3","union","sphere","clampPoint","plane","constant","triangle","getCenter","_center","_extents","_v0$2","_v1$7","_v2$3","_f0","_f1","_f2","axes","satForAxes","_triangleNormal","getSize","_points","setFromPoints","equals","isBox3","_testAxis","v0","extents","p0","p2","_box$2","_v1$6","_toFarthestPoint","_toPoint","Sphere","optionalCenter","maxRadiusSq","distanceTo","radiusSum","intersectsSphere","distanceToPoint","deltaLengthSq","expandByScalar","getMaxScaleOnAxis","missingRadiusHalf","_vector$a","_segCenter","_segDir","_diff","_edge1","_edge2","_normal$1","Ray","origin","direction","ray","directionDistance","distanceSqToPoint","optionalPointOnRay","optionalPointOnSegment","s0","sqrDist","extDet","segExtent","a01","b0","invDet","tca","radius2","thc","t0","t1","distanceToPlane","distToPoint","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","intersectBox","backfaceCulling","DdN","DdQxE2","DdE1xQ","cross","QdN","transformDirection","Matrix4","n14","n24","n34","n41","n42","n43","n44","_v1$5","af","bf","ce","cf","de","df","ac","ad","bc","bd","compose","_zero","_one","eye","a14","a24","a34","a41","a42","a43","a44","b14","b24","b34","b41","b42","b43","b44","t14","scaleXSq","scaleYSq","scaleZSq","yx","zx","zy","y2","z2","wx","wy","wz","determinant","_m1$2","invSX","invSY","invSZ","setFromRotationMatrix","near","far","isMatrix4","_matrix$1","_quaternion$3","Euler","DefaultOrder","makeRotationFromQuaternion","newOrder","setFromQuaternion","RotationOrders","Layers","mask","layers","_object3DId","_v1$4","_q1","_m1$1","_position$3","_scale$2","_quaternion$2","_xAxis","_yAxis","_zAxis","_addedEvent","_removedEvent","Object3D","DefaultUp","_onChange","modelViewMatrix","normalMatrix","DefaultMatrixAutoUpdate","matrixWorldNeedsUpdate","visible","castShadow","receiveShadow","frustumCulled","renderOrder","animations","updateMatrix","premultiply","decompose","rotateOnAxis","distance","translateOnAxis","setFromMatrixPosition","isCamera","isLight","lookAt","extractRotation","isObject3D","getObjectByProperty","traverse","traverseVisible","traverseAncestors","force","updateMatrixWorld","updateParents","updateChildren","geometries","materials","shapes","skeletons","nodes","serialize","library","toArray","isInstancedMesh","instanceMatrix","instanceColor","isScene","background","environment","isMesh","isLine","isPoints","parameters","shape","isSkinnedMesh","bindMode","bindMatrix","skeleton","material","uuids","animation","extractFromCache","cache","recursive","child","_v0$1","_v1$3","_v2$2","_v3$1","_vab","_vac","_vbc","_vap","_vbp","_vcp","Triangle","i0","i1","i2","getNormal","setFromCoplanarPoints","getBarycoord","uv1","uv2","uv3","getUV","containsPoint","isFrontFacing","intersectsTriangle","d4","vc","addScaledVector","d5","d6","vb","denom","targetLengthSq","dot00","dot01","dot02","dot11","dot12","invDenom","p3","materialId","Material","blending","side","vertexColors","blendSrc","blendDst","blendEquation","blendSrcAlpha","blendDstAlpha","blendEquationAlpha","depthFunc","depthTest","depthWrite","stencilWriteMask","stencilFunc","stencilRef","stencilFuncMask","stencilFail","stencilZFail","stencilZPass","stencilWrite","clippingPlanes","clipIntersection","clipShadows","shadowSide","colorWrite","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","dithering","alphaToCoverage","premultipliedAlpha","toneMapped","_alphaTest","onBeforeCompile","newValue","currentValue","flatShading","roughness","metalness","sheen","sheenColor","sheenRoughness","emissive","emissiveIntensity","specular","specularIntensity","specularColor","shininess","clearcoat","clearcoatRoughness","clearcoatMap","clearcoatRoughnessMap","clearcoatNormalMap","clearcoatNormalScale","matcap","alphaMap","lightMap","lightMapIntensity","aoMap","aoMapIntensity","bumpMap","bumpScale","normalMap","normalMapType","normalScale","displacementMap","displacementScale","displacementBias","roughnessMap","metalnessMap","emissiveMap","specularMap","specularIntensityMap","specularColorMap","envMap","combine","envMapIntensity","reflectivity","refractionRatio","gradientMap","transmission","transmissionMap","thickness","thicknessMap","attenuationDistance","attenuationColor","sizeAttenuation","linewidth","dashSize","gapSize","alphaTest","wireframe","wireframeLinewidth","wireframeLinecap","wireframeLinejoin","fog","srcPlanes","dstPlanes","isMaterial","fromType","MeshBasicMaterial","isMeshBasicMaterial","_vector$9","_vector2$1","BufferAttribute","itemSize","usage","updateRange","index1","index2","colors","vectors","setXY","setXYZ","applyNormalMatrix","onUploadCallback","isBufferAttribute","Uint16BufferAttribute","Uint32BufferAttribute","Float16BufferAttribute","isFloat16BufferAttribute","Float32BufferAttribute","_id$1","_m1","_obj","_offset","_box$1","_boxMorphTargets","_vector$8","BufferGeometry","morphAttributes","morphTargetsRelative","boundingSphere","drawRange","materialIndex","getNormalMatrix","tangent","computeBoundingSphere","makeRotationX","makeRotationY","makeRotationZ","makeTranslation","makeScale","negate","translate","morphAttributesPosition","isGLBufferAttribute","setFromBufferAttribute","morphAttribute","jl","indices","positions","normals","uvs","nVertices","tangents","tan1","tan2","vA","vB","vC","uvA","uvB","uvC","sdir","tdir","group","handleTriangle","tmp2","n2","handleVertex","positionAttribute","normalAttribute","pA","pB","pC","nA","nB","nC","ab","normalizeNormals","isBufferGeometry","attributeArray1","attribute2","attributeArray2","attributeOffset","convertBufferAttribute","array2","isInterleavedBufferAttribute","stride","geometry2","newAttribute","morphArray","addGroup","hasMorphAttributes","attributeArray","setIndex","_inverseMatrix$2","_ray$2","_sphere$3","_vA$1","_vB$1","_vC$1","_tempA","_tempB","_tempC","_morphA","_morphB","_morphC","_uvA$1","_uvB$1","_uvC$1","_intersectionPoint","_intersectionPointWorld","Mesh","updateMorphTargets","morphTargetInfluences","morphTargetDictionary","ml","morphTargets","raycaster","intersects","intersection","intersectsBox","morphPosition","groupMaterial","checkBufferGeometryIntersection","faceIndex","face","isGeometry","morphInfluences","influence","boneTransform","intersectTriangle","checkIntersection","BoxGeometry","widthSegments","heightSegments","depthSegments","scope","vertices","numberOfVertices","groupStart","buildPlane","udir","vdir","gridX","gridY","segmentWidth","segmentHeight","widthHalf","heightHalf","depthHalf","gridX1","gridY1","vertexCounter","groupCount","cloneUniforms","property","mergeUniforms","uniforms","merged","UniformsUtils","merge","ShaderMaterial","defines","vertexShader","fragmentShader","lights","clipping","extensions","derivatives","fragDepth","drawBuffers","shaderTextureLOD","defaultAttributeValues","index0AttributeName","uniformsNeedUpdate","glslVersion","isShaderMaterial","Camera","PerspectiveCamera","fov","aspect","focus","filmGauge","filmOffset","updateProjectionMatrix","focalLength","vExtentSlope","getFilmHeight","atan","fullWidth","fullHeight","offsetX","offsetY","skew","getFilmWidth","makePerspective","isPerspectiveCamera","CubeCamera","renderTarget","isWebGLCubeRenderTarget","cameraPX","cameraNX","cameraPY","cameraNY","cameraPZ","cameraNZ","renderer","scene","currentRenderTarget","getRenderTarget","currentToneMapping","toneMapping","currentXrEnabled","xr","setRenderTarget","CubeTexture","isCubeTexture","WebGLCubeRenderTarget","tEquirect","mesh","currentMinFilter","stencil","_vector1","_vector2","_normalMatrix","Plane","setFromNormalAndCoplanarPoint","inverseNormalLength","line","startSign","endSign","intersectsPlane","optionalNormalMatrix","referencePoint","coplanarPoint","isPlane","_sphere$2","_vector$7","Frustum","p4","p5","planes","frustum","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","setComponents","sprite","negRadius","WebGLAnimation","isAnimating","animationLoop","requestId","onAnimationFrame","setAnimationLoop","setContext","WebGLAttributes","gl","capabilities","isWebGL2","buffers","WeakMap","deleteBuffer","bufferType","cached","bytesPerElement","elementSize","createBuffer","bindBuffer","bufferData","bufferSubData","updateBuffer","PlaneGeometry","width_half","height_half","segment_width","segment_height","ShaderChunk","alphamap_fragment","alphamap_pars_fragment","alphatest_fragment","alphatest_pars_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","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_physical_pars_fragment","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","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","morphcolor_vertex","morphnormal_vertex","morphtarget_pars_vertex","morphtarget_vertex","normal_fragment_begin","normal_fragment_maps","normal_pars_fragment","normal_pars_vertex","normal_vertex","normalmap_pars_fragment","clearcoat_normal_fragment_begin","clearcoat_normal_fragment_maps","clearcoat_pars_fragment","output_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","transmission_fragment","transmission_pars_fragment","uv_pars_fragment","uv_pars_vertex","uv_vertex","uv2_pars_fragment","uv2_pars_vertex","uv2_vertex","worldpos_vertex","background_vert","background_frag","cube_vert","cube_frag","depth_vert","depth_frag","distanceRGBA_vert","distanceRGBA_frag","equirect_vert","equirect_frag","linedashed_vert","linedashed_frag","meshbasic_vert","meshbasic_frag","meshlambert_vert","meshlambert_frag","meshmatcap_vert","meshmatcap_frag","meshnormal_vert","meshnormal_frag","meshphong_vert","meshphong_frag","meshphysical_vert","meshphysical_frag","meshtoon_vert","meshtoon_frag","points_vert","points_frag","shadow_vert","shadow_frag","sprite_vert","sprite_frag","UniformsLib","diffuse","uvTransform","uv2Transform","specularmap","envmap","flipEnvMap","ior","aomap","lightmap","emissivemap","bumpmap","normalmap","displacementmap","roughnessmap","metalnessmap","gradientmap","fogDensity","fogNear","fogFar","fogColor","ambientLightColor","lightProbe","directionalLights","properties","directionalLightShadows","shadowBias","shadowNormalBias","shadowRadius","shadowMapSize","directionalShadowMap","directionalShadowMatrix","spotLights","coneCos","penumbraCos","decay","spotLightShadows","spotShadowMap","spotShadowMatrix","pointLights","pointLightShadows","shadowCameraNear","shadowCameraFar","pointShadowMap","pointShadowMatrix","hemisphereLights","skyColor","groundColor","rectAreaLights","ltc_1","ltc_2","ShaderLib","basic","lambert","phong","standard","toon","dashed","totalSize","t2D","cube","equirect","distanceRGBA","referencePosition","nearDistance","farDistance","shadow","WebGLBackground","cubemaps","objects","planeMesh","boxMesh","clearColor","clearAlpha","currentBackground","currentBackgroundVersion","currentTonemapping","setClear","getClearColor","setClearColor","getClearAlpha","setClearAlpha","renderList","forceClear","session","getSession","environmentBlendMode","autoClear","autoClearColor","autoClearDepth","autoClearStencil","deleteAttribute","onBeforeRender","copyPosition","enableAll","WebGLBindingStates","maxVertexAttributes","getParameter","extension","vaoAvailable","bindingStates","defaultState","createBindingState","currentState","forceUpdate","bindVertexArrayObject","vao","bindVertexArray","bindVertexArrayOES","deleteVertexArrayObject","deleteVertexArray","deleteVertexArrayOES","newAttributes","enabledAttributes","attributeDivisors","program","initAttributes","enableAttribute","enableAttributeAndDivisor","meshPerAttribute","enableVertexAttribArray","disableUnusedAttributes","disableVertexAttribArray","vertexAttribPointer","vertexAttribIPointer","resetDefaultState","setup","updateBuffers","programMap","stateMap","createVertexArray","createVertexArrayOES","getBindingState","cachedAttributes","geometryAttributes","attributesNum","programAttributes","getAttributes","cachedAttribute","geometryAttribute","saveCache","isInstancedBufferGeometry","materialDefaultAttributeValues","programAttribute","isInstancedInterleavedBuffer","locationSize","_maxInstanceCount","isInstancedBufferAttribute","vertexAttrib2fv","vertexAttrib3fv","vertexAttrib4fv","vertexAttrib1fv","setupVertexAttributes","geometryId","programId","releaseStatesOfGeometry","releaseStatesOfProgram","WebGLBufferRenderer","setMode","drawArrays","renderInstances","primcount","methodName","WebGLCapabilities","maxAnisotropy","getMaxPrecision","getShaderPrecisionFormat","WebGL2RenderingContext","WebGL2ComputeRenderingContext","maxPrecision","logarithmicDepthBuffer","maxTextures","maxVertexTextures","maxTextureSize","maxCubemapSize","maxAttributes","maxVertexUniforms","maxVaryings","maxFragmentUniforms","vertexTextures","floatFragmentTextures","getMaxAnisotropy","MAX_TEXTURE_MAX_ANISOTROPY_EXT","floatVertexTextures","maxSamples","WebGLClipping","globalState","numGlobalPlanes","localClippingEnabled","renderingShadows","viewNormalMatrix","uniform","resetGlobalState","numPlanes","numIntersection","projectPlanes","skipTransform","nPlanes","dstArray","flatSize","viewMatrix","i4","enableLocalClipping","beginShadows","endShadows","setState","useCache","materialProperties","nGlobal","lGlobal","clippingState","WebGLCubeMaps","mapTextureMapping","onTextureDispose","cubemap","fromEquirectangularTexture","physical","sheenColorMap","sheenRoughnessMap","transmissionSamplerSize","transmissionSamplerMap","OrthographicCamera","scaleW","scaleH","makeOrthographic","isOrthographicCamera","EXTRA_LOD_SIGMA","MAX_SAMPLES","_flatCamera","_clearColor","_oldTarget","PHI","INV_PHI","_axisDirections","PMREMGenerator","_renderer","_pingPongRenderTarget","_lodMax","_cubeSize","_lodPlanes","_sizeLods","_sigmas","_blurMaterial","_cubemapMaterial","_equirectMaterial","_compileMaterial","sigma","_setSize","cubeUVRenderTarget","_allocateTargets","_sceneToCubeUV","_blur","_applyPMREM","_cleanup","equirectangular","_fromTexture","_getCubemapMaterial","_getEquirectMaterial","_dispose","cubeSize","outputTarget","_setViewport","_textureToCubeUV","_createRenderTarget","lodMax","lodPlanes","sizeLods","sigmas","lod","totalLods","sizeLod","texelSize","positionSize","uvSize","faceIndexSize","coordinates","_createPlanes","weights","poleAxis","_getBlurShader","tmpMesh","compile","cubeCamera","upSign","forwardSign","originalAutoClear","backgroundMaterial","backgroundBox","useSolidColor","col","lodIn","lodOut","pingPongRenderTarget","_halfBlur","targetIn","targetOut","sigmaRadians","blurMaterial","blurMesh","blurUniforms","pixels","radiansPerPixel","sigmaPixels","weight","outputSize","WebGLCubeUVMaps","cubeUVmaps","pmremGenerator","cubemapUV","isEquirectMap","isCubeMap","fromEquirectangular","fromCubemap","isCubeTextureComplete","WebGLExtensions","getExtension","WebGLGeometries","wireframeAttributes","onGeometryDispose","memory","updateWireframeAttribute","geometryIndex","geometryPosition","previousAttribute","getWireframeAttribute","currentAttribute","WebGLIndexedBufferRenderer","drawElements","WebGLInfo","calls","triangles","lines","programs","autoReset","instanceCount","numericalSort","absNumericalSort","morph","WebGLMorphtargets","influencesList","morphTextures","workInfluences","objectInfluences","morphTargetsCount","hasMorphPosition","hasMorphNormals","hasMorphColors","morphNormals","morphColors","vertexDataCount","vertexDataStride","morphTarget","morphNormal","morphColor","disposeTexture","morphInfluencesSum","morphBaseInfluence","getUniforms","setValue","influences","WebGLObjects","updateMap","onInstancedMeshDispose","instancedMesh","buffergeometry","emptyTexture","emptyArrayTexture","empty3dTexture","emptyCubeTexture","arrayCacheF32","arrayCacheI32","mat4array","mat3array","mat2array","flatten","nBlocks","blockSize","firstElem","arraysEqual","copyArray","allocTexUnits","allocateTextureUnit","setValueV1f","uniform1f","addr","setValueV2f","uniform2f","uniform2fv","setValueV3f","uniform3f","uniform3fv","setValueV4f","uniform4f","uniform4fv","setValueM2","uniformMatrix2fv","setValueM3","uniformMatrix3fv","setValueM4","uniformMatrix4fv","setValueV1i","uniform1i","setValueV2i","uniform2iv","setValueV3i","uniform3iv","setValueV4i","uniform4iv","setValueV1ui","uniform1ui","setValueV2ui","uniform2uiv","setValueV3ui","uniform3uiv","setValueV4ui","uniform4uiv","setValueT1","unit","setTexture2D","setValueT3D1","setTexture3D","setValueT6","setTextureCube","setValueT2DArray1","setTexture2DArray","setValueV1fArray","uniform1fv","setValueV2fArray","setValueV3fArray","setValueV4fArray","setValueM2Array","setValueM3Array","setValueM4Array","setValueV1iArray","uniform1iv","setValueV2iArray","setValueV3iArray","setValueV4iArray","setValueV1uiArray","uniform1uiv","setValueV2uiArray","setValueV3uiArray","setValueV4uiArray","setValueT1Array","units","setValueT3DArray","setValueT6Array","setValueT2DArrayArray","SingleUniform","activeInfo","getSingularSetter","PureArrayUniform","getPureArraySetter","StructuredUniform","seq","RePathPart","addUniform","uniformObject","parseUniform","pathLength","matchEnd","idIsIndex","subscript","WebGLUniforms","getProgramParameter","getActiveUniform","getUniformLocation","WebGLShader","shader","createShader","shaderSource","compileShader","setOptional","upload","seqWithValue","programIdCount","getShaderErrors","getShaderParameter","errors","getShaderInfoLog","errorMatches","errorLine","lines2","handleSource","getShaderSource","getToneMappingFunction","functionName","toneMappingName","filterEmptyLine","replaceLightNums","numDirLights","numSpotLights","numRectAreaLights","numPointLights","numHemiLights","numDirLightShadows","numSpotLightShadows","numPointLightShadows","replaceClippingPlaneNums","numClippingPlanes","numClipIntersection","includePattern","resolveIncludes","includeReplacer","include","deprecatedUnrollLoopPattern","unrollLoopPattern","unrollLoops","loopReplacer","deprecatedLoopReplacer","snippet","generatePrecision","precisionstring","WebGLProgram","cacheKey","prefixVertex","prefixFragment","shadowMapTypeDefine","shadowMapType","generateShadowMapTypeDefine","envMapTypeDefine","envMapMode","generateEnvMapTypeDefine","envMapModeDefine","generateEnvMapModeDefine","envMapBlendingDefine","generateEnvMapBlendingDefine","envMapCubeUVSize","imageHeight","envMapCubeUVHeight","maxMip","texelHeight","texelWidth","generateCubeUVSize","customExtensions","extensionDerivatives","tangentSpaceNormalMap","shaderID","extensionFragDepth","rendererExtensionFragDepth","extensionDrawBuffers","rendererExtensionDrawBuffers","extensionShaderTextureLOD","rendererExtensionShaderTextureLod","generateExtensions","customDefines","chunks","generateDefines","createProgram","versionString","isRawShaderMaterial","shaderName","instancing","instancingColor","supportsVertexTextures","useFog","fogExp2","objectSpaceNormalMap","vertexTangents","vertexAlphas","vertexUvs","uvsVertexOnly","skinning","morphTextureStride","doubleSided","flipSided","shadowMapEnabled","decodeVideoTexture","physicallyCorrectLights","opaque","outputEncoding","getEncodingComponents","useDepthPacking","depthPacking","cachedUniforms","fragmentGlsl","glVertexShader","glFragmentShader","attachShader","bindAttribLocation","linkProgram","debug","checkShaderErrors","programLog","getProgramInfoLog","vertexLog","fragmentLog","runnable","haveDiagnostics","vertexErrors","fragmentErrors","getError","diagnostics","deleteShader","getActiveAttrib","getAttribLocation","fetchAttributeLocations","destroy","deleteProgram","usedTimes","_id","WebGLShaderCache","shaderCache","Map","materialCache","vertexShaderStage","_getShaderStage","fragmentShaderStage","materialShaders","_getShaderCacheForMaterial","shaderStage","Set","stage","WebGLShaderStage","WebGLPrograms","cubeuvmaps","_programLayers","_customShaders","shaderIDs","MeshDepthMaterial","MeshDistanceMaterial","MeshNormalMaterial","MeshLambertMaterial","MeshPhongMaterial","MeshToonMaterial","MeshStandardMaterial","MeshPhysicalMaterial","MeshMatcapMaterial","LineBasicMaterial","LineDashedMaterial","PointsMaterial","ShadowMaterial","SpriteMaterial","getParameters","shadows","isMeshStandardMaterial","customVertexShaderID","customFragmentShaderID","getVertexShaderID","getFragmentShaderID","useAlphaTest","useClearcoat","isXRRenderTarget","isVideoTexture","isFogExp2","directional","spot","rectArea","hemi","shadowMap","customProgramCacheKey","getProgramCacheKey","morphAttributeCount","getProgramCacheKeyParameters","disableAll","enable","getProgramCacheKeyBooleans","acquireProgram","pl","preexistingProgram","releaseProgram","releaseShaderCache","WebGLProperties","painterSortStable","groupOrder","reversePainterSortStable","WebGLRenderList","renderItems","renderItemsIndex","transmissive","getNextRenderItem","renderItem","customOpaqueSort","customTransparentSort","WebGLRenderLists","lists","renderCallDepth","UniformsCache","light","halfWidth","halfHeight","nextVersion","shadowCastingLightsFirst","lightA","lightB","WebGLLights","shadowCache","directionalLength","pointLength","spotLength","rectAreaLength","hemiLength","numDirectionalShadows","numPointShadows","numSpotShadows","ambient","probe","directionalShadow","spotShadow","rectAreaLTC1","rectAreaLTC2","pointShadow","vector3","matrix42","scaleFactor","intensity","isAmbientLight","isLightProbe","coefficients","isDirectionalLight","shadowUniforms","bias","normalBias","mapSize","isSpotLight","penumbra","isRectAreaLight","isPointLight","isHemisphereLight","LTC_FLOAT_1","LTC_FLOAT_2","LTC_HALF_1","LTC_HALF_2","setupView","identity","WebGLRenderState","lightsArray","shadowsArray","setupLights","setupLightsView","pushLight","pushShadow","shadowLight","WebGLRenderStates","renderStates","renderState","isMeshDepthMaterial","WebGLShadowMap","_objects","_capabilities","_frustum","_shadowMapSize","_viewportSize","_viewport","_depthMaterial","_distanceMaterial","_materialCache","_maxTextureSize","shadowMaterialVertical","VSM_SAMPLES","shadow_pass","resolution","shadowMaterialHorizontal","HORIZONTAL_PASS","fullScreenTri","fullScreenMesh","VSMPass","blurSamples","mapPass","renderBufferDirect","getDepthMaterial","customMaterial","customDistanceMaterial","customDepthMaterial","keyA","keyB","materialsForVariant","cachedMaterial","isMeshDistanceMaterial","renderObject","shadowCamera","intersectsObject","kl","depthMaterial","autoUpdate","activeCubeFace","getActiveCubeFace","activeMipmapLevel","getActiveMipmapLevel","_state","setBlending","setTest","setScissorTest","shadowFrameExtents","getFrameExtents","isPointLightShadow","pars","viewportCount","getViewportCount","vp","getViewport","updateMatrices","getFrustum","WebGLState","colorBuffer","locked","currentColorMask","currentColorClear","setMask","colorMask","setLocked","lock","currentDepthMask","currentDepthFunc","currentDepthClear","disable","depthMask","setFunc","clearDepth","currentStencilMask","currentStencilFunc","currentStencilRef","currentStencilFuncMask","currentStencilFail","currentStencilZFail","currentStencilZPass","currentStencilClear","stencilTest","stencilMask","setOp","stencilOp","clearStencil","enabledCapabilities","currentBoundFramebuffers","currentDrawbuffers","defaultDrawbuffers","currentProgram","currentBlendingEnabled","currentBlending","currentBlendEquation","currentBlendSrc","currentBlendDst","currentBlendEquationAlpha","currentBlendSrcAlpha","currentBlendDstAlpha","currentPremultipledAlpha","currentFlipSided","currentCullFace","currentLineWidth","currentPolygonOffsetFactor","currentPolygonOffsetUnits","lineWidthAvailable","glVersion","currentTextureSlot","currentBoundTextures","scissorParam","viewportParam","currentScissor","currentViewport","createTexture","bindTexture","texParameteri","texImage2D","emptyTextures","setFlipSided","setCullFace","equationToGL","MIN_EXT","MAX_EXT","factorToGL","blendEquationSeparate","blendFuncSeparate","blendFunc","frontFace","cullFace","setPolygonOffset","factor","activeTexture","webglSlot","bindFramebuffer","framebuffer","drawBuffersWEBGL","useProgram","setMaterial","frontFaceCW","setLineWidth","lineWidth","webglType","webglTexture","boundTexture","unbindTexture","compressedTexImage2D","texImage3D","texStorage2D","texStorage3D","texSubImage2D","texSubImage3D","compressedTexSubImage2D","WebGLTextures","_gl","utils","multisampledRTTExt","supportsInvalidateFramebuffer","_videoTextures","_sources","useOffscreenCanvas","OffscreenCanvas","createCanvas","resizeImage","needsPowerOfTwo","needsNewCanvas","maxSize","isPowerOfTwo$1","textureNeedsGenerateMipmaps","supportsMips","generateMipmap","getInternalFormat","internalFormatName","glFormat","glType","getMipLevels","isFramebufferTexture","isCompressedTexture","filterFallback","textureProperties","__webglInit","webglTextures","__cacheKey","deleteTexture","deallocateTexture","onRenderTargetDispose","renderTargetProperties","__webglTexture","deleteFramebuffer","__webglFramebuffer","__webglDepthbuffer","deleteRenderbuffer","__webglMultisampledFramebuffer","__webglColorRenderbuffer","__webglDepthRenderbuffer","attachmentProperties","deallocateRenderTarget","textureUnits","slot","updateVideoTexture","__version","uploadTexture","wrappingToGL","filterToGL","setTextureParameters","textureType","__currentAnisotropy","texParameterf","TEXTURE_MAX_ANISOTROPY_EXT","initTexture","forceUpload","textureCacheKey","getTextureCacheKey","__currentVersion","pixelStorei","mipmap","textureNeedsPowerOfTwo","verifyColorSpace","glInternalFormat","useTexStorage","allocateMemory","levels","isDepthTexture","setupFrameBufferTexture","attachment","textureTarget","__hasExternalTextures","useMultisampledRTT","framebufferTexture2DMultisampleEXT","getRenderTargetSamples","framebufferTexture2D","setupRenderBufferStorage","renderbuffer","isMultisample","bindRenderbuffer","renderbufferStorageMultisampleEXT","renderbufferStorageMultisample","renderbufferStorage","framebufferRenderbuffer","setupDepthRenderbuffer","isCube","__autoAllocateDepthBuffer","webglDepthTexture","setupDepthTexture","createRenderbuffer","__useRenderToTexture","sRGBToLinear","textureUnit","resetTextureUnits","isCompressed","cubeImage","mipmapImage","uploadCubeTexture","rebindTextures","colorTexture","setupRenderTarget","isMultipleRenderTargets","createFramebuffer","glTextureType","updateRenderTargetMipmap","updateMultisampleRenderTarget","invalidationArray","depthStyle","ignoreDepthValues","__ignoreDepthValues","invalidateFramebuffer","blitFramebuffer","WebGLUtils","HALF_FLOAT_OES","SRGB_ALPHA_EXT","COMPRESSED_SRGB_S3TC_DXT1_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","COMPRESSED_SRGB8_ETC2","COMPRESSED_RGB8_ETC2","COMPRESSED_SRGB8_ALPHA8_ETC2_EAC","COMPRESSED_RGBA8_ETC2_EAC","COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR","COMPRESSED_RGBA_ASTC_4x4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR","COMPRESSED_RGBA_ASTC_5x4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR","COMPRESSED_RGBA_ASTC_5x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR","COMPRESSED_RGBA_ASTC_6x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR","COMPRESSED_RGBA_ASTC_6x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR","COMPRESSED_RGBA_ASTC_8x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR","COMPRESSED_RGBA_ASTC_8x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR","COMPRESSED_RGBA_ASTC_8x8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR","COMPRESSED_RGBA_ASTC_10x5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR","COMPRESSED_RGBA_ASTC_10x6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR","COMPRESSED_RGBA_ASTC_10x8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR","COMPRESSED_RGBA_ASTC_10x10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR","COMPRESSED_RGBA_ASTC_12x10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR","COMPRESSED_RGBA_ASTC_12x12_KHR","COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT","COMPRESSED_RGBA_BPTC_UNORM_EXT","UNSIGNED_INT_24_8_WEBGL","ArrayCamera","cameras","isArrayCamera","Group","isGroup","_moveEvent","WebXRController","_targetRay","_grip","_hand","joints","inputState","pinching","hasLinearVelocity","linearVelocity","hasAngularVelocity","angularVelocity","inputSource","referenceSpace","inputPose","gripPose","handPose","targetRay","grip","hand","getPose","targetRaySpace","inputjoint","jointPose","getJointPose","jointName","joint","jointRadius","indexTip","thumbTip","distanceToPinch","handedness","gripSpace","DepthTexture","WebXRManager","framebufferScaleFactor","referenceSpaceType","customReferenceSpace","pose","glBinding","glProjLayer","glBaseLayer","xrFrame","getContextAttributes","initialRenderTarget","newRenderTarget","controllers","inputSourcesMap","cameraL","cameraR","cameraVR","_currentDepthNear","_currentDepthFar","onSessionEvent","controller","onSessionEnd","disconnect","isPresenting","onInputSourcesChange","inputSources","removed","added","cameraAutoUpdate","getController","getTargetRaySpace","getControllerGrip","getGripSpace","getHand","getHandSpace","setFramebufferScaleFactor","setReferenceSpaceType","getReferenceSpace","setReferenceSpace","getBaseLayer","getBinding","getFrame","setSession","xrCompatible","makeXRCompatible","layerInit","antialias","XRWebGLLayer","updateRenderState","baseLayer","framebufferWidth","framebufferHeight","depthFormat","depthType","glDepthFormat","projectionlayerInit","colorFormat","XRWebGLBinding","createProjectionLayer","textureWidth","textureHeight","setFoveation","requestReferenceSpace","cameraLPos","cameraRPos","updateCamera","depthNear","depthFar","ipd","projL","projR","topFov","bottomFov","leftFov","rightFov","zOffset","translateX","translateZ","near2","far2","left2","right2","top2","bottom2","setProjectionFromUnion","getCamera","getFoveation","fixedFoveation","foveation","onAnimationFrameCallback","getViewerPose","views","setRenderTargetFramebuffer","cameraVRNeedsUpdate","glSubImage","getViewSubImage","setRenderTargetTextures","depthStencilTexture","WebGLMaterials","refreshUniformsCommon","uvScaleMap","uv2ScaleMap","refreshFogUniforms","isFog","density","refreshMaterialUniforms","pixelRatio","transmissionRenderTarget","isMeshLambertMaterial","isMeshToonMaterial","refreshUniformsToon","isMeshPhongMaterial","refreshUniformsPhong","refreshUniformsStandard","isMeshPhysicalMaterial","refreshUniformsPhysical","isMeshMatcapMaterial","refreshUniformsMatcap","refreshUniformsDistance","isMeshNormalMaterial","isLineBasicMaterial","refreshUniformsLine","isLineDashedMaterial","refreshUniformsDash","isPointsMaterial","refreshUniformsPoints","isSpriteMaterial","refreshUniformsSprites","isShadowMaterial","createCanvasElement","WebGLRenderer","_alpha","_depth","_stencil","_antialias","_premultipliedAlpha","_preserveDrawingBuffer","preserveDrawingBuffer","_powerPreference","powerPreference","_failIfMajorPerformanceCaveat","failIfMajorPerformanceCaveat","currentRenderList","currentRenderState","renderListStack","renderStateStack","domElement","sortObjects","toneMappingExposure","_isContextLost","_currentActiveCubeFace","_currentActiveMipmapLevel","_currentRenderTarget","_currentMaterialId","_currentCamera","_currentViewport","_currentScissor","_currentScissorTest","_width","_height","_pixelRatio","_opaqueSort","_transparentSort","_scissor","_scissorTest","_clippingEnabled","_localClippingEnabled","_transmissionRenderTarget","_projScreenMatrix","_vector3","_emptyScene","overrideMaterial","getTargetPixelRatio","programCache","renderLists","morphtargets","bufferRenderer","indexedBufferRenderer","contextNames","contextAttributes","contextName","onContextLost","onContextRestore","isWebGL1Renderer","shift","initGLContext","infoAutoReset","shadowMapAutoUpdate","shadowMapNeedsUpdate","onMaterialDispose","deallocateMaterial","releaseMaterialProgramReferences","forceContextLoss","loseContext","forceContextRestore","restoreContext","getPixelRatio","setPixelRatio","setSize","updateStyle","setViewport","getDrawingBufferSize","setDrawingBufferSize","getCurrentViewport","getScissor","setScissor","getScissorTest","boolean","setOpaqueSort","setTransparentSort","bits","onXRSessionStart","onXRSessionEnd","setProgram","rangeFactor","dataCount","rangeStart","rangeCount","drawStart","drawEnd","drawCount","isLineSegments","isLineLoop","isSprite","getProgram","projectObject","isLOD","intersectsSprite","renderScene","opaqueObjects","transmissiveObjects","transparentObjects","renderTransmissionPass","renderObjects","onAfterRender","lightsStateVersion","programCacheKey","updateCommonMaterialProperties","onBuild","needsLights","materialNeedsLights","progUniforms","uniformsList","needsProgramChange","refreshProgram","refreshMaterial","refreshLights","p_uniforms","m_uniforms","uCamPos","cameraPosition","boneTexture","computeBoneTexture","boneTextureSize","markUniformsLightsNeedsUpdate","setFromProjectionMatrix","camera2","defaultFramebuffer","__useDefaultFramebuffer","useDefaultFramebuffer","isRenderTarget3D","framebufferBound","framebufferTextureLayer","readRenderTargetPixels","activeCubeFaceIndex","textureFormat","halfFloatSupportedByExt","readPixels","copyFramebufferToTexture","level","levelScale","copyTexSubImage2D","copyTextureToTexture","srcTexture","dstTexture","copyTextureToTexture3D","sourceBox","glTarget","unpackRowLen","unpackImageHeight","unpackSkipPixels","unpackSkipRows","unpackSkipImages","compressedTexSubImage3D","resetState","__THREE_DEVTOOLS__","CustomEvent","isWebGLRenderer","WebGL1Renderer","FogExp2","Fog","Scene","InterleavedBuffer","arrayBuffers","_uuid","ib","setUsage","isInterleavedBuffer","_vector$6","InterleavedBufferAttribute","interleavedBuffer","interleavedBuffers","_geometry","_intersectPoint","_worldScale","_mvPosition","_alignedPosition","_rotatedPosition","_viewWorldMatrix","_vA","_vB","_vC","_uvA","_uvB","_uvC","Sprite","float32Array","setFromMatrixScale","transformVertex","intersect","vertexPosition","mvPosition","_basePosition","_skinIndex","_skinWeight","_vector$5","_matrix","SkinnedMesh","bindMatrixInverse","calculateInverses","skinWeight","manhattanLength","setXYZW","skinIndex","getComponent","boneIndex","bones","boneInverses","Bone","isBone","DataTexture","_offsetMatrix","_identityMatrix","Skeleton","boneMatrices","inverse","bone","boneInverse","InstancedBufferAttribute","_instanceLocalMatrix","_instanceWorldMatrix","_instanceIntersects","_mesh","InstancedMesh","raycastTimes","instanceId","getMatrixAt","raycast","linecap","linejoin","_start$1","_end$1","_inverseMatrix$1","_ray$1","_sphere$1","Line","lineDistances","threshold","localThreshold","localThresholdSq","vStart","vEnd","interSegment","interRay","distanceSqToSegment","_start","_end","LineSegments","LineLoop","_inverseMatrix","_ray","_sphere","_position$2","Points","testPoint","rayPointDistanceSq","intersectPoint","closestPointToPoint","distanceToRay","VideoTexture","video","requestVideoFrameCallback","updateVideo","HAVE_CURRENT_DATA","FramebufferTexture","CompressedTexture","CanvasTexture","isCanvasTexture","Curve","arcLengthDivisions","optionalTarget","getUtoTmapping","getPoint","divisions","getPointAt","getLengths","cacheArcLengths","targetArcLength","arcLengths","comparison","lengthBefore","t2","pt1","pt2","getTangent","closed","binormals","vec","mat","getTangentAt","tz","makeRotationAxis","EllipseCurve","aX","aY","xRadius","yRadius","aStartAngle","aEndAngle","aClockwise","aRotation","twoPi","deltaAngle","samePoints","isEllipseCurve","ArcCurve","aRadius","CubicPoly","c0","initCatmullRom","x3","tension","initNonuniformCatmullRom","dt0","dt1","dt2","calc","isArcCurve","py","pz","CatmullRomCurve3","curveType","intPoint","CatmullRom","QuadraticBezier","QuadraticBezierP0","QuadraticBezierP1","QuadraticBezierP2","CubicBezier","CubicBezierP0","CubicBezierP1","CubicBezierP2","CubicBezierP3","isCatmullRomCurve3","CubicBezierCurve","v3","isCubicBezierCurve","CubicBezierCurve3","isCubicBezierCurve3","LineCurve","isLineCurve","LineCurve3","isLineCurve3","QuadraticBezierCurve","isQuadraticBezierCurve","QuadraticBezierCurve3","isQuadraticBezierCurve3","SplineCurve","isSplineCurve","Curves","CurvePath","curves","autoClose","curve","startPoint","endPoint","getLength","curveLengths","getCurveLengths","diff","segmentLength","lens","cacheLengths","sums","pts","getPoints","fromJSON","Path","currentPoint","moveTo","lineTo","aCPx","aCPy","aCP1x","aCP1y","aCP2x","aCP2y","npts","absarc","absellipse","firstPoint","lastPoint","Shape","holes","holesPts","getPointsHoles","hole","linkedList","dim","clockwise","signedArea","insertNode","removeNode","filterPoints","again","steiner","area","earcutLinked","ear","invSize","pass","zOrder","prevZ","nextZ","tail","numMerges","pSize","qSize","inSize","sortLinked","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","locallyInside","isValidDiagonal","splitPolygon","eliminateHoles","holeIndices","outerNode","getLeftmost","compareX","eliminateHole","hx","hy","mx","my","tanMin","sectorContainsSector","findHoleBridge","leftmost","intersectsPolygon","inside","middleInside","q1","q2","o1","o2","o3","o4","onSegment","Node","an","bp","ShapeUtils","contour","faces","removeDupEndPts","addContour","holeIndex","hasHoles","outerLen","Earcut","ExtrudeGeometry","verticesArray","uvArray","addShape","placeholder","curveSegments","steps","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","extrudePath","uvgen","UVGenerator","WorldUVGenerator","amount","extrudePts","splineTube","binormal","position2","extrudeByPath","getSpacedPoints","computeFrenetFrames","shapePoints","extractPoints","isClockWise","hl","ahole","triangulateShape","scalePt2","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","sf","v_trans_lensq","direction_eq","contourMovements","oneHoleMovements","holesMovements","verticesMovements","bs","vert","sidewalls","layeroffset","sl","slen1","slen2","f4","f3","addVertex","nextIndex","generateTopUV","addUV","generateSideWallUV","vector2","buildLidFaces","buildSideFaces","computeVertexNormals","toJSON$1","geometryShapes","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","ShapeGeometry","indexOffset","shapeVertices","shapeHoles","shapeHole","vertex","RawShaderMaterial","_sheen","_clearcoat","_transmission","materialLib","AnimationUtils","isTypedArray","convertArray","forceClone","getKeyframeOrder","times","sortedArray","nValues","srcOffset","flattenJSON","jsonKeys","valuePropertyName","subclip","sourceClip","startFrame","endFrame","clip","tracks","track","valueSize","getValueSize","minStartTime","resetDuration","makeClipAdditive","targetClip","referenceFrame","referenceClip","numTracks","referenceTime","referenceTrack","referenceTrackType","ValueTypeName","targetTrack","referenceOffset","referenceValueSize","createInterpolant","isInterpolantFactoryMethodGLTFCubicSpline","targetOffset","targetValueSize","referenceValue","startIndex","endIndex","interpolant","evaluate","resultBuffer","numTimes","valueStart","multiplyQuaternionsFlat","valueEnd","blendMode","Interpolant","parameterPositions","sampleValues","sampleSize","_cachedIndex","settings","DefaultSettings_","pp","validate_interval","linear_scan","forward_scan","giveUpAt","afterEnd_","t1global","beforeStart_","mid","intervalChanged_","interpolate_","copySampleValue_","CubicInterpolant","_weightPrev","_offsetPrev","_weightNext","_offsetNext","endingStart","endingEnd","iPrev","iNext","tPrev","tNext","getSettings_","halfDt","o0","oP","oN","wP","wN","ppp","sP","sN","LinearInterpolant","offset1","offset0","weight1","weight0","DiscreteInterpolant","KeyframeTrack","interpolation","TimeBufferType","ValueBufferType","setInterpolation","DefaultInterpolation","factoryMethod","InterpolantFactoryMethodDiscrete","InterpolantFactoryMethodLinear","InterpolantFactoryMethodSmooth","timeOffset","nKeys","valid","prevTime","currTime","smoothInterpolation","getInterpolation","writeIndex","keep","offsetP","offsetN","readOffset","writeOffset","TypedKeyframeTrack","trackType","BooleanKeyframeTrack","ColorKeyframeTrack","NumberKeyframeTrack","QuaternionLinearInterpolant","slerpFlat","QuaternionKeyframeTrack","StringKeyframeTrack","VectorKeyframeTrack","AnimationClip","optimize","jsonTracks","frameTime","parseKeyframeTrack","clipTracks","morphTargetSequence","noLoop","numMorphTargets","objectOrClipArray","clipArray","animationToMorphTargets","parts","animationMorphTargets","clips","CreateFromMorphTargetSequence","addNonemptyTrack","trackName","animationKeys","propertyName","destTracks","clipName","hierarchyTracks","hierarchy","morphTargetNames","morphTargetName","animationKey","boneName","typeName","getTrackTypeForValueTypeName","Cache","files","DefaultLoadingManager","LoadingManager","onLoad","onProgress","onError","isLoading","itemsLoaded","itemsTotal","urlModifier","handlers","itemStart","itemEnd","itemError","resolveURL","setURLModifier","addHandler","regex","loader","removeHandler","getHandler","Loader","manager","crossOrigin","resourcePath","requestHeader","load","loading","FileLoader","req","Request","Headers","credentials","mimeType","ReadableStream","getReader","callbacks","contentLength","total","lengthComputable","stream","readData","read","ProgressEvent","enqueue","Response","statusText","arrayBuffer","DOMParser","parseFromString","label","decoder","TextDecoder","decode","ImageLoader","onImageLoad","removeEventListeners","onImageError","CubeTextureLoader","urls","setCrossOrigin","setPath","loadTexture","TextureLoader","Light","HemisphereLight","_projScreenMatrix$1","_lightPositionWorld$1","_lookTarget$1","LightShadow","_frameExtents","_viewportCount","_viewports","shadowMatrix","viewportIndex","SpotLightShadow","isSpotLightShadow","SpotLight","power","_lightPositionWorld","_lookTarget","PointLightShadow","_cubeDirections","_cubeUps","PointLight","DirectionalLightShadow","isDirectionalLightShadow","DirectionalLight","AmbientLight","RectAreaLight","SphericalHarmonics3","coeff","shBasis","isSphericalHarmonics3","LightProbe","LoaderUtils","decodeURIComponent","escape","InstancedBufferGeometry","ImageBitmapLoader","createImageBitmap","fetchOptions","colorSpaceConversion","imageBitmap","isImageBitmapLoader","AudioLoader","setResponseType","setWithCredentials","bufferCopy","AudioContext","webkitAudioContext","decodeAudioData","audioBuffer","HemisphereLightProbe","sky","ground","isHemisphereLightProbe","AmbientLightProbe","isAmbientLightProbe","Clock","oldTime","elapsedTime","running","getElapsedTime","getDelta","newTime","performance","Audio","gain","createGain","connect","getInput","autoplay","detune","loop","loopStart","loopEnd","playbackRate","isPlaying","hasPlaybackControl","sourceType","_startedAt","_progress","_connected","audioNode","mediaElement","createMediaElementSource","mediaStream","createMediaStreamSource","createBufferSource","onended","onEnded","setDetune","setPlaybackRate","getOutput","setTargetAtTime","getFilters","setFilters","AudioAnalyser","audio","fftSize","analyser","createAnalyser","frequencyBinCount","getByteFrequencyData","getFrequencyData","PropertyMixer","binding","mixFunction","mixFunctionAdditive","setIdentity","_slerp","_slerpAdditive","_setAdditiveIdentityQuaternion","_workIndex","_select","_setAdditiveIdentityOther","_lerp","_lerpAdditive","_setAdditiveIdentityNumeric","_mixBufferRegion","_mixBufferRegionAdditive","_setIdentity","_origIndex","_addIndex","cumulativeWeight","cumulativeWeightAdditive","useCount","referenceCount","accuIndex","currentWeight","mix","weightAdditive","originalValueOffset","getValue","workOffset","_reservedRe","_wordChar","_wordCharOrDot","_directoryRe","_nodeRe","_objectRe","_propertyRe","_trackRe","_supportedObjectNames","Composite","targetGroup","optionalParsedPath","parsedPath","PropertyBinding","parseTrackName","_targetGroup","_bindings","subscribe_","firstValidIndex","nCachedObjects_","bindings","unbind","rootNode","findNode","_getValue_unbound","_setValue_unbound","targetObject","resolvedProperty","propertyIndex","dest","targetArray","sourceArray","objectName","_getValue_unavailable","_setValue_unavailable","objectIndex","nodeProperty","versioning","Versioning","None","NeedsUpdate","MatrixWorldNeedsUpdate","bindingType","BindingType","Direct","ArrayElement","HasFromToArray","EntireArray","GetterByBindingType","SetterByBindingTypeAndVersioning","root","isAnimationObjectGroup","matches","lastDot","substring","getBoneByName","subTreeNode","searchNodeSubtree","childNode","_getValue_direct","_getValue_array","_getValue_arrayElement","_getValue_toArray","_setValue_direct","_setValue_direct_setNeedsUpdate","_setValue_direct_setMatrixWorldNeedsUpdate","_setValue_array","_setValue_array_setNeedsUpdate","_setValue_array_setMatrixWorldNeedsUpdate","_setValue_arrayElement","_setValue_arrayElement_setNeedsUpdate","_setValue_arrayElement_setMatrixWorldNeedsUpdate","_setValue_fromArray","_setValue_fromArray_setNeedsUpdate","_setValue_fromArray_setMatrixWorldNeedsUpdate","AnimationObjectGroup","_indicesByUUID","_paths","_parsedPaths","_bindingsIndicesByPath","stats","inUse","bindingsPerObject","indicesByUUID","parsedPaths","nBindings","knownObject","nObjects","nCachedObjects","firstActiveIndex","lastCachedObject","bindingsForPath","lastCached","lastCachedIndex","firstActiveObject","firstActive","lastObject","indicesByPath","lastBindingsIndex","lastBindings","AnimationAction","mixer","localRoot","_mixer","_clip","_localRoot","nTracks","interpolants","interpolantSettings","_interpolantSettings","_interpolants","_propertyBindings","_cacheIndex","_byClipCacheIndex","_timeScaleInterpolant","_weightInterpolant","_loopCount","_effectiveTimeScale","_effectiveWeight","repetitions","clampWhenFinished","zeroSlopeAtStart","zeroSlopeAtEnd","_activateAction","_deactivateAction","stopFading","stopWarping","_isActiveAction","_scheduleFading","fadeOutAction","warp","fadeOut","fadeIn","fadeInDuration","fadeOutDuration","startEndRatio","endStartRatio","fadeInAction","crossFadeFrom","weightInterpolant","_takeBackControlInterpolant","action","startTimeScale","endTimeScale","_lendControlInterpolant","timeScaleInterpolant","_root","deltaTime","timeDirection","timeRunning","_updateTimeScale","clipTime","_updateTime","_updateWeight","propertyMixers","accumulateAdditive","accumulate","interpolantValue","loopCount","pingPong","_setEndings","handle_stop","loopDelta","pending","atStart","atEnd","weightNow","weightThen","AnimationMixer","_initMemoryManager","_accuIndex","prototypeAction","rootUuid","bindingsByRoot","_bindingsByRootAndName","bindingsByName","_addInactiveBinding","clipUuid","actionsForClip","_actionsByClip","_bindAction","knownActions","_addInactiveAction","_lendBinding","saveOriginalState","_lendAction","restoreOriginalState","_takeBackBinding","_takeBackAction","_actions","_nActiveActions","_nActiveBindings","_controlInterpolants","_nActiveControlInterpolants","actions","controlInterpolants","actionsByClip","actionByRoot","lastInactiveAction","cacheIndex","knownActionsForClip","lastKnownAction","byClipCacheIndex","_removeInactiveBindingsForAction","_removeInactiveBinding","prevIndex","lastActiveIndex","firstInactiveAction","firstInactiveIndex","lastActiveAction","bindingByName","propBinding","lastInactiveBinding","firstInactiveBinding","lastActiveBinding","_controlInterpolantsResultBuffer","__cacheIndex","lastActiveInterpolant","optionalRoot","clipObject","findByName","existingAction","newAction","nActions","_update","timeInSeconds","actionsToRemove","_removeInactiveAction","Uniform","InstancedInterleavedBuffer","GLBufferAttribute","_vector$4","Box2","isBox2","_startP","_startEnd","Line3","clampToLine","startEnd2","closestPointToPointParameter","_vector$2","_boneMatrix","_matrixWorldInv","SkeletonHelper","getBoneList","isSkeletonHelper","boneList","GridHelper","_buffer","_baseTable","_shiftTable","_mantissaTable","_exponentTable","_offsetTable","fromPoints","setColors","extractUrlBase","Handlers","isIntersectionBox","isIntersectionSphere","toVector3","setFromMatrix","flattenToArrayOffset","multiplyVector3","multiplyVector3Array","applyToBufferAttribute","applyToVector3Array","getInverse","extractPosition","setRotationFromQuaternion","multiplyToArray","multiplyVector4","rotateAxis","crossVector","rotateX","rotateY","rotateZ","rotateByAxis","makeFrustum","isIntersectionLine","intersectsLine","isIntersectionPlane","getArea","barycoordFromPoint","midpoint","getMidpoint","prototypenormal","getPlane","extractAllPoints","extrude","makeGeometry","fromAttribute","distanceToManhattan","manhattanDistanceTo","lengthManhattan","setEulerFromRotationMatrix","setEulerFromQuaternion","getPositionFromMatrix","getScaleFromMatrix","getColumnFromMatrix","applyProjection","getChildByName","getObjectByName","renderDepth","getWorldRotation","applyMatrix","eulerOrder","useQuaternion","setDrawMode","drawMode","initBones","setLens","setFocalLength","onlyShadow","shadowCameraFov","shadowCameraLeft","shadowCameraRight","shadowCameraTop","shadowCameraBottom","shadowCameraVisible","shadowDarkness","shadowMapWidth","shadowMapHeight","dynamic","setDynamic","copyIndicesArray","setArray","addIndex","addAttribute","addDrawCall","clearDrawCalls","clearGroups","computeOffsets","drawcalls","offsets","getArrays","addShapeList","wrapAround","overdraw","wrapRGB","shading","clearTarget","animate","getCurrentRenderTarget","getPrecision","resetGLState","supportsFloatTextures","supportsHalfFloatTextures","supportsStandardDerivatives","supportsCompressedTextureS3TC","supportsCompressedTexturePVRTC","supportsBlendMinMax","supportsInstancedArrays","enableScissorTest","initMaterial","addPrePlugin","addPostPlugin","updateShadowMap","setFaceCulling","allocTextureUnit","setTexture","getActiveMipMapLevel","shadowMapCullFace","vr","gammaInput","gammaOutput","toneMappingWhitePoint","gammaFactor","renderReverseSided","renderSingleSided","setBuffer","updateCubeMap","loadTextureCube","loadCompressedTexture","loadCompressedTextureCube","revision","__THREE__","_quaternion","_vector","_v1","_position","_scale","initShader","initWebGL","initMesh","scales","baseScale","loadingCavasContainer","loadingText","loadingImg","vertexShaderSrc","fragmentShaderSrc","THREE","setVariable","resizeMesh","setCntsForScale","tex","callback2","hideLoading","isCompleteLoading","cntsForScale","rad","baseRatio","baseW","baseH","baseSize","gridSize","baseGridSize","gridSizeH","adjustX","lenX","adjustY","lenY","LoadingView","defStrokeDashoffsetPC","defStrokeDashoffsetSP","completeLoading","isAdded","isHover","groupLen","itemLenForOneGroup","itemLenForOneGroupH","positionList","oneGroupSize","moveAreaY","moveSpeed","to_contact","getDom","positionHoverList","adjustHoverX","easeP","easeVertices","easeS","easeScales","deg","baseY","baseHoverX","singleDeg","isTransitIn","isTransitOut","canvasContainer","addNum","GLTFLoader","dracoLoader","ktx2Loader","meshoptDecoder","pluginCallbacks","GLTFMaterialsClearcoatExtension","GLTFTextureBasisUExtension","GLTFTextureWebPExtension","GLTFMaterialsSheenExtension","GLTFMaterialsTransmissionExtension","GLTFMaterialsVolumeExtension","GLTFMaterialsIorExtension","GLTFMaterialsEmissiveStrengthExtension","GLTFMaterialsSpecularExtension","GLTFLightsExtension","GLTFMeshoptCompression","_onError","gltf","decodeText","BINARY_EXTENSION_HEADER_MAGIC","EXTENSIONS","KHR_BINARY_GLTF","GLTFBinaryExtension","asset","GLTFParser","fileLoader","extensionsUsed","extensionName","extensionsRequired","KHR_MATERIALS_UNLIT","GLTFMaterialsUnlitExtension","KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS","GLTFMaterialsPbrSpecularGlossinessExtension","KHR_DRACO_MESH_COMPRESSION","GLTFDracoMeshCompressionExtension","KHR_TEXTURE_TRANSFORM","GLTFTextureTransformExtension","KHR_MESH_QUANTIZATION","GLTFMeshQuantizationExtension","setExtensions","setPlugins","GLTFRegistry","removeAll","KHR_LIGHTS_PUNCTUAL","KHR_MATERIALS_CLEARCOAT","KHR_MATERIALS_IOR","KHR_MATERIALS_SHEEN","KHR_MATERIALS_SPECULAR","KHR_MATERIALS_TRANSMISSION","KHR_MATERIALS_VOLUME","KHR_TEXTURE_BASISU","KHR_MATERIALS_EMISSIVE_STRENGTH","EXT_TEXTURE_WEBP","EXT_MESHOPT_COMPRESSION","refs","uses","nodeDefs","nodeIndex","nodeLength","nodeDef","_addNodeRef","lightIndex","dependency","lightNode","lightDef","innerConeAngle","outerConeAngle","createUniqueName","_loadLight","_getNodeRef","materialParams","materialDef","metallicRoughness","pbrMetallicRoughness","baseColorFactor","baseColorTexture","assignTexture","emissiveStrength","clearcoatFactor","clearcoatTexture","clearcoatRoughnessFactor","clearcoatRoughnessTexture","clearcoatNormalTexture","sheenColorFactor","sheenRoughnessFactor","sheenColorTexture","sheenRoughnessTexture","transmissionFactor","transmissionTexture","thicknessFactor","thicknessTexture","colorArray","specularFactor","specularTexture","specularColorFactor","specularColorTexture","textureIndex","textureDef","loadTextureImage","isSupported","textureLoader","uri","detectSupport","Image","bufferView","bufferViews","extensionDef","getDependency","supported","ready","byteStride","decodeGltfBuffer","headerView","magic","chunkContentsLength","chunkView","chunkIndex","chunkLength","chunkType","contentArray","preload","primitive","bufferViewIndex","gltfAttributeMap","threeAttributeMap","attributeNormalizedMap","attributeTypeMap","attributeName","threeAttributeName","ATTRIBUTES","accessorDef","accessors","componentType","WEBGL_COMPONENT_TYPES","decodeDracoFile","texCoord","GLTFMeshStandardSGMaterial","isGLTFSpecularGlossinessMaterial","specularMapParsFragmentChunk","glossinessMapParsFragmentChunk","specularMapFragmentChunk","glossinessMapFragmentChunk","lightPhysicalFragmentChunk","glossiness","glossinessMap","_extraUniforms","uniformName","USE_SPECULARMAP","USE_GLOSSINESSMAP","USE_UV","specularGlossinessParams","pbrSpecularGlossiness","diffuseFactor","diffuseTexture","glossinessFactor","specularGlossinessTexture","specGlossMapDef","GLTFCubicSplineInterpolant","stride2","stride3","td","m0","m1","_q","GLTFCubicSplineQuaternionInterpolant","WEBGL_FILTERS","WEBGL_WRAPPINGS","WEBGL_TYPE_SIZES","POSITION","NORMAL","TANGENT","TEXCOORD_0","TEXCOORD_1","COLOR_0","WEIGHTS_0","JOINTS_0","PATH_PROPERTIES","translation","INTERPOLATION","CUBICSPLINE","LINEAR","STEP","addUnknownExtensionsToUserData","knownExtensions","objectDef","gltfExtensions","assignExtrasToUserData","gltfDef","extras","meshDef","targetNames","createAttributesKey","attributesKey","getNormalizedComponentScale","associations","primitiveCache","meshCache","cameraCache","lightCache","sourceCache","textureCache","nodeNamesUsed","firefoxVersion","_invokeAll","ext","_markDefs","beforeRoot","getDependencies","dependencies","scenes","afterRoot","skinDefs","skins","meshDefs","meshes","skinLength","skin","ref","updateMappings","mappings","loadScene","loadNode","_invokeOne","loadMesh","loadAccessor","loadBufferView","loadBuffer","loadMaterial","loadSkin","loadAnimation","loadCamera","defs","bufferIndex","bufferDef","bufferViewDef","accessorIndex","sparse","pendingBufferViews","bufferAttribute","elementBytes","itemBytes","ibSlice","ibCacheKey","itemSizeIndices","SCALAR","TypedArrayIndices","byteOffsetIndices","byteOffsetValues","sparseIndices","sparseValues","setX","setY","setZ","setW","sourceDef","sampler","loadImageSource","samplers","sourceURI","isObjectURL","mapName","mapDef","gltfReference","extendTexture","useDerivativeTangents","useVertexColors","useFlatShading","pointsMaterial","lineMaterial","materialType","materialExtensions","sgExtension","getMaterialType","extendParams","kmuExtension","metallicFactor","roughnessFactor","metallicRoughnessTexture","extendMaterialParams","alphaMode","alphaCutoff","normalTexture","occlusionTexture","emissiveFactor","emissiveTexture","createMaterial","originalName","sanitizedName","sanitizeNodeName","primitives","createDracoPrimitive","decodePrimitive","addPrimitiveAttributes","primitiveDef","dracoExtension","geometryPromise","meshIndex","loadGeometries","normalizeSkinWeights","toTrianglesDrawMode","assignFinalMaterial","cameraIndex","cameraDef","yfov","aspectRatio","znear","zfar","xmag","ymag","skinDef","skinEntry","inverseBindMatrices","accessor","animationIndex","animationDef","pendingNodes","pendingInputAccessors","pendingOutputAccessors","pendingSamplers","pendingTargets","channels","input","inputAccessors","outputAccessors","targets","inputAccessor","outputAccessor","targetName","outputArray","scaled","meshPromise","createNodeMesh","createNodeAttachment","sceneIndex","sceneDef","nodeIds","buildNodeHierarchy","reducedAssociations","reduceAssociations","nodeId","parentObject","pendingJoints","jointNodes","jointNode","assignAttributeAccessor","gltfAttributeName","boxScale","maxDisplacement","expandByVector","computeBounds","hasMorphNormal","hasMorphColor","pendingPositionAccessors","pendingNormalAccessors","pendingColorAccessors","pendingAccessor","morphPositions","addMorphTargets","getIndex","numberOfTriangles","newIndices","newGeometry","MeshoptDecoder","detector","wasmpack","WebAssembly","wasm","instantiate","unpack","__wasm_call_ctors","fun","sbrk","count4","tp","sp","heap","NONE","OCTAHEDRAL","QUATERNION","EXPONENTIAL","decoders","TRIANGLES","INDICES","decodeVertexBuffer","meshopt_decodeVertexBuffer","decodeIndexBuffer","meshopt_decodeIndexBuffer","decodeIndexSequence","meshopt_decodeIndexSequence","ambientIntensity","ambientColor","directionalColor","roadColor","roadEmissive","accentR","accentG","accentB","enabledStats","setStats","enabledGUI","setGUI","enabledUpdate","bindPointermoveHandler","defCameraPosition","currentTargetPosition","currentLookatTargetPosition","currentScene","currentWheelSpeed","wheelSpeed","sensor","hideGeom","carWire","CAR_WIRE_CLONE_LEN","carWireClones","trafficLight","TRAFFIC_LIGHT_CLONE_LEN","trafficLightClones","trafficSign","trafficCorn","CORN_CLONE_LEN","cornClones","human","HUMAN_CLONE_LEN","humanClones","mainRout","mainRoutDefY","defineUseCase","defineUseCaseAdd","resetSubScene6","resetSubScene7","enabledOrbitControls","ORANGE_COLOR","DEF_COLOR","GLB_ASSET_PATH","GLB_MESHOPT_ASSET_PATH","IMG_ASSET_PATH","ENV_IMG_PATH","BAK_BUILDING_IMG_PATH","BAK_GROUND_IMG_PATH","BAK_ROAD_IMG_PATH","BAK_SHADOW_IMG_PATH","currentCarPosVector","defRoadColor","defGroundColor","animeList","clock","wheelsDeg","OBJECT_OPACITY1","mouseStage","pointerMoveHandler","gui","GUI","PROPS","cameraTargetX","cameraTargetY","cameraTargetZ","cameraLookAtTargetX","cameraLookAtTargetY","cameraLookAtTargetZ","ambientLight","directionalLight","directionalIntensity","directionalX","directionalY","directionalZ","defR","defG","defB","gv","carCameraTarget","ltx","cameraLookAtTarget","lty","ltz","maxCameraValue","onChange","addColor","road","Stats","fieldOfView","controls","OrbitControls","loadGeom","loadCar","loadCarWire","loadSensor","load6Layers04","load6Layers06","loadDefineUseCase","loadDefineUseCaseAdd","loadReferenceDesignInterior","loadReferenceDesignRoof","loadReferenceDesignSensor","setMeshoptDecoder","setGeom","xhr","geom","car","carTyres","building","texture_bake_building","texture_bake_ground","texture_bake_road","carRoof","carRoofDefY","carInterior","carInteriorDefY","carSensor","carSensorDefY","rotationYList","newMaterial","carShadow","texture_bake_shadow","setAnimationClip","cameraTarget","carWireTarget","sceneClone","sensorMeshMaterials","sixLayers04","sixLayers06","referenceDesignInterior","referenceDesignInteriorTarget","referenceDesignRoof","referenceDesignRoofTarget","referenceDesignSensor","referenceDesignSensorTarget","isOnce","offsetTime","anime","clipIndex","clipAction","setLoop","renderTargetCube","texture_env","updateEnvironment","startScene1","setTime","cloneCnt","startScene2","startScene3","startScene4","startScene5","startScene6","startScene7","startScene8","startScene9","jumpCar","jumpCarWires","showGeom","startDefineUseCase","startDefineUseCaseAdd","tweenMaterialEmissive","changeMaterialEmissive","resetHeroContents","objectOpacity","subScene","startSubScene6","startSubScene7","traverseMaterials","carPosVector","getWorldPosition","carWireVector","updateObject","cameraTargetPosVector","targetLookAt","targetPositionRightNow","cameraLookAtTargetPosVector","wheelsRad","Header","footer","Footer","TopHero","NextView","loadContentful","getItem","language","languages","userLanguage","browserLanguage","scrollTarget","enterframeTarget","every90framesTarget","enterframeIgnoreCnt","scrollYOffset","pastScrollYOffset","UPDATE_LOAD_COEFF","FPS","targetInterval","_reload","_consentReadyCount","DOMContentloadedHandler","loadedHandler","once","reload","Cookiebot","consent","preferences","checkLang","scrollHandler","enterframe","jsonBaseList","bindLoadingReadyCompleteHandler","loadingReadyCompleteHandler","bindLoadingCompleteHandler","loadingCompleteHandler","Loading","Transition","initContents","showHeaderNav","cookie_policy","CookiePolicy","setAnchors","transitIn","transitOut","updated","enterEvery90Frames","Common","Config"],"sourceRoot":""}